PageSourceSearch

https://v3-advisory.com/assets/Portfolio-DK1LH3yw.js

js v3-advisory.com collected 2026-10-09 01:48:49 UTC 80,798 bytes, 47 lines download raw bytes

1import{r as c,d as At,e as Be,j as i,P as se,f as mr,h as Ee,i as dt,k as pr,D as gr,l as hr,m as vr,n as wr,c as Q,X as br,R as p,u as qt,o as yr,S as xr}from"./app-DKMIwIdA.js";import{N as Sr,F as Er}from"./Footer-PUEBJxNF.js";import{P as Nr}from"./PageHero-C32qVab3.js";import{S as Ge}from"./Section-DlI9671r.js";import{u as Xe}from"./index-BGn-TGSL.js";import{b as ne,a as Kt,c as Cr,A as Rr}from"./tslib.es6-Brwf6-k4.js";import{B as ke}from"./button-DKNfbIOE.js";import{F as Ot}from"./FadeIn-B-mp1lB6.js";import{S as Tr}from"./StaggerItem-z_HI4DwD.js";import{B as ot}from"./badge-Dplj_Nt7.js";import{A as st}from"./award-DTxhW28c.js";import{C as It}from"./circle-check-big-D70pQban.js";import{E as Dr,M as Qt}from"./message-circle-CQjLb99E.js";import{m as Zt}from"./proxy-B3Z7-eNI.js";import{L as jr}from"./lightbulb-Ds_3qKU9.js";import{C as Ar}from"./calendar-CdLNYu1r.js";import"./plate-teal-oZ0vsDKd.js";const Ye=768;function Or(){const[e,t]=c.useState(void 0);return c.useEffect(()=>{const n=window.matchMedia(`(max-width: ${Ye-1}px)`),r=()=>{t(window.innerWidth<Ye)};return n.addEventListener("change",r),t(window.innerWidth<Ye),()=>n.removeEventListener("change",r)},[]),!!e}const Ir=[{id:"validatr",clientName:"VALIDATR",clientLogoSrc:"/logos/validatr.png",industry:"SaaS / Startup Tooling",tags:["Incubation","Fundraising"],headline:"Dal concept al primo funding",summary:"Supporto end-to-e
1nd nel percorso di incubazione, dalla validazione dell'idea fino al primo round di finanziamento.",cover:{background:"linear-gradient(135deg, #1e1b4b 0%, #3730a3 55%, #7c3aed 100%)",pattern:"grid",foreground:"#ffffff",accent:"#c4b5fd",glyph:"V"},results:[{title:"Primo round di finanziamento — 35.000 €",description:"Supporto al conseguimento del primo round di finanziamento di 35.000 € presso un venture capital italiano.",highlight:!0},{title:"Startup Builder 18",description:"Nominata tra le 'Migliori Startup' dello Startup Builder 18 di Startup Geeks.",highlight:!0},{title:"081 Call for Ideas",description:"Premio alla '081 Call for Ideas' durante la finale all'Università degli Studi di Napoli Federico II.",highlight:!0},{title:"7 Idee per Cambiare l'Italia",description:"Selezionata per l'edizione inaugurale di '7 idee per cambiare l'Italia' de L'Espresso.",highlight:!0}],activities:["Validazione dell'idea e analisi del mercato","Definizione del business model e strategia go-to-market","Sviluppo del pitch deck per investitori","Supporto nella partecipazione a competition e acceleratori","Preparazione e conseguimento del primo round di funding"],isFeatured:!0,published:!0},{id:"value",clientName:"VALUE",clientLogoSrc:"/logos/value.svg",clientWebsiteUrl:"https://valuetech.ai/",industry:"IoT / Smart Home / Safety Tech",tags:["Incubation"],headline:"Incubazione in corso: dalla validazione al pitch",summary:"Supporto end-to-e
1nd nel percorso di incubazione, dalla validazione del cliente e del problema fino alla costruzione del pitch finale per investitori.",cover:{background:"linear-gradient(140deg, #022c22 0%, #065f46 45%, #10b981 100%)",pattern:"dots",foreground:"#ecfdf5",accent:"#6ee7b7",glyph:"V"},results:[{title:"In corso",description:"Percorso di incubazione attualmente in fase attiva."}],activities:["Validazione cliente e problema: interviste di validazione, analisi del problema, definizione delle buyer personas e utilizzo della Javelin Board","Mercato e business model: analisi competitiva, analisi approfondita di mercato e costruzione del Lean Canvas completo","Landing page e UVP: definizione del messaggio strategico, Unique Value Proposition e validazione dei contenuti della landing page","Business & Financial Plan: costruzione e validazione del piano economico-finanziario con proiezioni dettagliate","Pitch finale: costruzione del deck conclusivo, revisione narrativa e presentazione finale"],isFeatured:!0,published:!0},{id:"careerboost",clientName:"CAREERBOOST",clientLogoSrc:"/logos/careerboost.png",clientWebsiteUrl:"https://careerboost.it/",industry:"EdTech / Career Coaching in Finance",tags:["Brand & Web","Scale"],headline:"Brand refresh e nuovo sito vetrina",summary:"Rilancio dell'identità digitale di CareerBoost: refresh del brand, redesign del sito vetrina in Framer e integrazione dei pagamenti Stripe con standard UX/UI mobile-first, in linea con l'estetica dark-mono del brand.",cover:{background:"linear-gradient(135deg, #000000 0%, #0a0a0a 60%, #111111 100%)",pattern:"lines",foreground:"#ffffff",accent:"#ffffff",glyph:"CB"},results:[{title:"Sito vetrina rilanciato",description:"Nuovo sito CareerBoost online con identità rinnovata, esperienza mobile-first e conversion flow ottimizzato."},{title:"Pagamenti Stripe integrati",description:"Checkout Stripe live, con gestione ordini e piani coaching acquistabili direttamente da web."}],activities:["Brand refresh: rivisitazione dell'identità visiva e allineamento del tone of voice","Redesign del sito vetrina in Framer con architettura contenuti ottimizzata per conversione","Integrazione pagamenti Stripe end-to-end con gestione piani e ordini","Standard UX/UI mobile-first, performance e accessibilità","Governance tecnica e coordinamento del rilascio in produzione"],isFeatured:!0,published:!0},{id:"languageboost",logoIsWordmark:!0,clientName:"LANGUAGEBOOST",clientLogoSrc:"/logos/languageboost.png",clientWebsiteUrl:"https://languageboost.it/",industry:"EdTech / Scuola di lingue online",tags:["Fractional CTO","MVP","Brand & Web"],headline:"Spin-off imprenditoriale, sito vetrina e MVP in sviluppo",summary:"Supporto end-to-e
1nd nella creazione di LanguageBoost come nuova realtà imprenditoriale — dallo spin-off al fianco dei Founder, al rilascio del sito vetrina languageboost.it con SEO e GEO nativi, fino allo sviluppo in corso della piattaforma proprietaria come Fractional CTO.",cover:{background:"linear-gradient(135deg, #f5d0e8 0%, #f8c8b8 45%, #e9d5ff 100%)",pattern:"glyphs",foreground:"#1a1a1a",accent:"#7c3aed",glyph:"LB"},results:[{title:"Nuova realtà imprenditoriale",description:"Supporto alla creazione di LanguageBoost come spin-off, al fianco dei Founder: dalla definizione del posizionamento al lancio della nuova attività."},{title:"Sito languageboost.it online",description:"Sito vetrina realizzato ex-novo con identità di brand dedicata, standard UX/UI mobile-first, ottimizzazione SEO (Search Engine Optimization) e GEO (Generative Engine Optimization)."},{title:"MVP piattaforma in sviluppo",description:"Sviluppo in corso della piattaforma proprietaria (flussi Studente/Insegnante/Admin) su stack Spring Boot, Azure SQL, Azure Blob e Stripe, con V3 come Fractional CTO esterno."}],activities:["Strategia tecnologica e architettura applicativa: Spring Boot, Azure SQL, Azure Blob, Stripe","Design UX/UI della piattaforma: flussi Studente, Insegnante e Admin (wireframe, UI Kit, handoff tecnico)","Sviluppo MVP: backend modulare, sistema crediti, pianificazione lezioni 1:N e gestione materiali su cloud","Autenticazione federata Google/Microsoft e integrazione pagamenti live","Governance tecnica: perimetro MVP, criteri di collaudo, ambienti staging/produzione, gestione bug critici"],isFeatured:!0,published:!0},{id:"mywanderlust",clientName:"MYWANDERLUST.AI",clientWebsiteUrl:"https://mywanderlust.ai/",industry:"Travel Tech / AI — progetto interno V3",tags:["MVP","Brand & Web"],headline:"Travel planner con AI, sviluppato internamente",summary:"Progetto interno di V3: prodotto, identità, sito e motore di itinerari generativi costruiti end-to-end come banco di prova delle nostre pratiche di delivery.",cover:{background:"linear-gradient(135deg, #1f2937 0%, #4b5563 55%, #d6c3ab 100%)",pattern:"lines",foreground:"#ffffff",accent:"#e7d3b8",glyph:"MW"},results:[{title:"Prodotto online",description:"mywanderlust.ai è pubblico: generazione di itinerari giorno per giorno a partire da date, budget e ritmo di viaggio."},{title:"Delivery interamente in casa",description:"Design, sviluppo, contenuti e infrastruttura gestiti dal team V3, senza fornitori esterni."}],activities:["Definizione del prodotto e delle funzionalità core dell'itinerario","Identità visiva e sito con UX/UI mobile-first","Motore di generazione itinerari basato su AI e prompt strutturati","Autenticazione utenti, piani e flussi di conversione","SEO e GEO nativi, monitoraggio delle performance"],isFeatured:!0,published:!0}],Pr=[{id:"validatr",clientName:"VALIDATR",clientLogoSrc:"/logos/validatr.png",industry:"SaaS / Startup Tooling",tags:["Incubation","Fundraising"],headline:"From concept to first funding",summary:"End-to-end incubation support, from idea validation through to securing initial investment.",cover:{background:"linear-gradient(135deg, #1e1b4b 0%, #3730a3 55%, #7c3aed 100%)",pattern:"grid",foreground:"#ffffff",accent:"#c4b5fd",glyph:"V"},results:[{title:"First funding round — €35,000",description:"Support in securing the first funding round of €35,000 from an Italian venture capital fund.",highlight:!0},{title:"Startup Builder 18",description:"Recognised among the 'Top Startups' at Startup Geeks' Startup Builder 18 programme.",highlight:!0},{title:"081 Call for Ideas",description:"Winner at the '081 Call for Ideas' final held at the University of Naples Federico II.",highlight:!0},{title:"7 Ideas to Change Italy",description:"Selected for the inaugural edition of L'Espresso's '7 Ideas to Change Italy'.",highlight:!0}],activities:["Idea validation and market analysis","Business model definition and go-to-market strategy","Investor pitch deck development","Support in competitions and accelerator applications","First funding round preparation and successful close"],isFeatured:!0,published:!0},{id:"value",clientName:"VALUE",clientLogoSrc:"/logos/value.svg",clientWebsiteUrl:"https://valuetech.ai/",industry:"IoT / Smart Home / Safety Tech",tags:["Incubation"],headline:"Ongoing incubation: from validation to pitch",summary:"End-to-end incubation support, from customer and problem validation through to building the final investor pitch.",cover:{background:"linear-gradient(140deg, #022c22 
10%, #065f46 45%, #10b981 100%)",pattern:"dots",foreground:"#ecfdf5",accent:"#6ee7b7",glyph:"V"},results:[{title:"Ongoing",description:"Incubation programme currently in active phase."}],activities:["Customer & problem validation: validation interviews, problem analysis, buyer persona definition and Javelin Board methodology","Market & business model: competitive analysis, in-depth market analysis and full Lean Canvas construction","Landing page & UVP: strategic messaging definition, Unique Value Proposition and landing page content validation","Business & Financial Plan: construction and validation of a detailed financial plan with projections","Final pitch: conclusive pitch deck construction, narrative review and final presentation"],isFeatured:!0,published:!0},{id:"careerboost",clientName:"CAREERBOOST",clientLogoSrc:"/logos/careerboost.png",clientWebsiteUrl:"https://careerboost.it/",industry:"EdTech / Career Coaching in Finance",tags:["Brand & Web","Scale"],headline:"Brand refresh and new showcase website",summary:"Digital relaunch for CareerBoost: brand refresh, showcase website redesign in Framer and Stripe payments integration with mobile-first UX/UI, aligned with the brand's dark-mono aesthetic.",cover:{background:"linear-gradient(135deg, #000000 0%, #0a0a0a 60%, #111111 100%)",pattern:"lines",foreground:"#ffffff",accent:"#ffffff",glyph:"CB"},results:[{title:"Showcase website relaunched",description:"New CareerBoost website live with refreshed identity, mobile-first experience and optimised conversion flow."},{title:"Stripe payments integrated",description:"Live Stripe checkout with order management and coaching plans directly purchasable from web."}],activities:["Brand refresh: visual identity revamp and tone of voice alignment","Showcase website redesign in Framer with conversion-optimised content architecture","End-to-end Stripe payments integration with plans and order management","Mobile-first UX/UI, performance and accessibility standards","Technical governance and production release coordination"],isFeatured:!0,published:!0},{id:"languageboost",logoIsWordmark:!0,clientName:"LANGUAGEBOOST",clientLogoSrc:"/logos/languageboost.png",clientWebsiteUrl:"https://languageboost.it/",industry:"EdTech / Online Language School",tags:["Fractional CTO","MVP","Brand & Web"],headline:"Business spin-off, showcase site and MVP in development",summary:"End-to-end support in creating LanguageBoost as a new business — from spin-off alongside the Founders, to the release of the languageboost.it showcase site with native SEO and GEO, up to ongoing development of the proprietary platform as Fractional CTO.",cover:{background:"linear-gradient(135deg, #f5d0e8 0%, #f8c8b8 45%, #e9d5ff 100%)",pattern:"glyphs",foreground:"#1a1a1a",accent:"#7c3aed",glyph:"LB"},results:[{title:"New business venture",description:"Support in creating LanguageBoost as a spin-off, alongside the Founders: from positioning to the launch of the new business."},{title:"languageboost.it site live",description:"Showcase website built from scratch with dedicated brand identity, mobile-first UX/UI standards, SEO (Search Engine Optimization) and GEO (Generative Engine Optimization)."},{title:"Platform MVP in development",description:"Ongoing development of the proprietary platform (Student/Teacher/Admin flows) on Spring Boot, Azure SQL, Azure Blob and Stripe, with V3 acting as external Fractional CTO."}],activities:["Technology strategy and application architecture: Spring Boot, Azure SQL, Azure Blob, Stripe","Platform UX/UI design: Student, Teacher and Admin flows (wireframes, UI Kit, technical handoff)","MVP development: modular backend, credit system, 1:N lesson scheduling and cloud-based material management","Federated Google/Microsoft authentication and live payment integration","Technical governance: MVP scope, acceptance criteria, staging/production environments, critical bug management"],isFeatured:!0,published:!0},{id:"mywanderlust",clientName:"MYWANDERLUST.AI",clientWebsiteUrl:"https://mywanderlust.ai/",industry:"Travel Tech / AI — V3 in-house project",tags:["MVP","Brand & Web"],headline:"AI travel planner, built in-house",summary:"A V3 in-house project: product, identity, website and generative itinerary engine built end to end as a testbed for our delivery practices.",cover:{background:"linear-gradient(135deg, #1f2937 0%, #4b5
1563 55%, #d6c3ab 100%)",pattern:"lines",foreground:"#ffffff",accent:"#e7d3b8",glyph:"MW"},results:[{title:"Product live",description:"mywanderlust.ai is public: day-by-day itinerary generation from dates, budget and travel pace."},{title:"Fully in-house delivery",description:"Design, development, content and infrastructure handled by the V3 team, with no external vendors."}],activities:["Product definition and core itinerary features","Visual identity and website with mobile-first UX/UI","AI-based itinerary generation engine with structured prompting","User authentication, plans and conversion flows","Native SEO and GEO, performance monitoring"],isFeatured:!0,published:!0}];var qe="focusScope.autoFocusOnMount",Ke="focusScope.autoFocusOnUnmount",Pt={bubbles:!1,cancelable:!0},kr="FocusScope",Jt=c.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:a,onUnmountAutoFocus:o,...l}=e,[s,w]=c.useState(null),v=At(a),g=At(o),f=c.useRef(null),d=Be(t,u=>w(u)),E=c.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;c.useEffect(()=>{if(r){let u=function(C){if(E.paused||!s)return;const h=C.target;s.contains(h)?f.current=h:te(f.current,{select:!0})},y=function(C){if(E.paused||!s)return;const h=C.relatedTarget;h!==null&&(s.contains(h)||te(f.current,{select:!0}))},m=function(C){if(document.activeElement===document.body)for(const R of C)R.removedNodes.length>0&&te(s)};document.addEventListener("focusin",u),document.addEventListener("focusout",y);const T=new MutationObserver(m);return s&&T.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",u),document.removeEventListener("focusout",y),T.disconnect()}}},[r,s,E.paused]),c.useEffect(()=>{if(s){Mt.add(E);const u=document.activeElement;if(!s.contains(u)){const m=new CustomEvent(qe,Pt);s.addEventListener(qe,v),s.dispatchEvent(m),m.defaultPrevented||(Mr($r(en(s)),{select:!0}),document.activeElement===u&&te(s))}return()=>{s.removeEventListener(qe,v),setTimeout(()=>{const m=new CustomEvent(Ke,Pt);s.addEventListener(Ke,g),s.dispatchEvent(m),m.defaultPrevented||te(u??document.body,{select:!0}),s.removeEventListener(Ke,g),Mt.remove(E)},0)}}},[s,v,g,E]);const I=c.useCallback(u=>{if(!n&&!r||E.paused)return;const y=u.key==="Tab"&&!u.altKey&&!u.ctrlKey&&!u.metaKey,m=document.activeElement;if(y&&m){const T=u.currentTarget,[C,h]=Lr(T);C&&h?!u.shiftKey&&m===h?(u.preventDefault(),n&&te(C,{select:!0})):u.shiftKey&&m===C&&(u.preventDefault(),n&&te(h,{select:!0})):m===T&&u.preventDefault()}},[n,r,E.paused]);return i.jsx(se.div,{tabIndex:-1,...l,ref:d,onKeyDown:I})});Jt.displayName=kr;function Mr(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(te(r,{select:t}),document.activeElement!==n)return}function Lr(e){const t=en(e),n=kt(t,e),r=kt(t.reverse(),e);return[n,r]}function en(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const a=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||a?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function kt(e,t){for(const n of e)if(!Fr(n,{upTo:t}))return n}function Fr(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Br(e){return e instanceof HTMLInputElement&&"select"in e}function te(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Br(e)&&t&&e.select()}}var Mt=zr();function zr(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=Lt(e,t),e.unshift(t)},remove(t){var n;e=Lt(e,t),(n=e[0])==null||n.resume()}}}function Lt(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function $r(e){return e.filter(t=>t.tagName!=="A")}var Qe=0;function _r(){c.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Ft()),document.body.insertAdjacentElement("beforeend",e[1]??Ft()),Qe++,()=>{Qe===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Qe--}},[])}function Ft(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.
vendor: 4,863 bytes, lines 1-16
1style.position="fixed",e.style.pointerEvents="none",e}var Me="right-scroll-bar-position",Le="width-before-scroll-bar",Ur="with-scroll-bars-hidden",Wr="--removed-body-scroll-bar-size";function Ze(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function Vr(e,t){var n=c.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var a=n.value;a!==r&&(n.value=r,n.callback(r,a))}}}})[0];return n.callback=t,n.facade}var Hr=typeof window<"u"?c.useLayoutEffect:c.useEffect,Bt=new WeakMap;function Gr(e,t){var n=Vr(null,function(r){return e.forEach(function(a){return Ze(a,r)})});return Hr(function(){var r=Bt.get(n);if(r){var a=new Set(r),o=new Set(e),l=n.current;a.forEach(function(s){o.has(s)||Ze(s,null)}),o.forEach(function(s){a.has(s)||Ze(s,l)})}Bt.set(n,e)},[e]),n}function Xr(e){return e}function Yr(e,t){t===void 0&&(t=Xr);var n=[],r=!1,a={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(o){var l=t(o,r);return n.push(l),function(){n=n.filter(function(s){return s!==l})}},assignSyncMedium:function(o){for(r=!0;n.length;){var l=n;n=[],l.forEach(o)}n={push:function(s){return o(s)},filter:function(){return n}}},assignMedium:function(o){r=!0;var l=[];if(n.length){var s=n;n=[],s.forEach(o),l=n}var w=function(){var g=l;l=[],g.forEach(o)},v=function(){return Promise.resolve().then(w)};v(),n={push:function(g){l.push(g),v()},filter:function(g){return l=l.filter(g),n}}}};return a}function qr(e){e===void 0&&(e={});var t=Yr(null);return t.options=ne({async:!0,ssr:!1},e),t}var tn=function(e){var t=e.sideCar,n=Kt(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return c.createElement(r,ne({},n))};tn.isSideCarExport=!0;function Kr(e,t){return e.useMedium(t),tn}var nn=qr(),Je=function(){},ze=c.forwardRef(function(e,t){var n=c.useRef(null),r=c.useState({onScrollCapture:Je,onWheelCapture:Je,onTouchMoveCapture:Je}),a=r[0],o=r[1],l=e.forwardProps,s=e.children,w=e.className,v=e.removeScrollBar,g=e.enabled,f=e.shards,d=e.sideCar,E=e.noIsolation,I=e.inert,u=e.allowPinchZoom,y=e.as,m=y===void 0?"div":y,T=e.gapMode,C=Kt(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),h=d,R=Gr([n,t]),z=ne(ne({},C),a);return c.createElement(c.Fragment,null,g&&c.createElement(h,{sideCar:nn,removeScrollBar:v,shards:f,noIsolation:E,inert:I,setCallbacks:o,allowPinchZoom:!!u,lockRef:n,gapMode:T}),l?c.cloneElement(c.Children.only(s),ne(ne({},z),{ref:R})):c.createElement(m,ne({},z,{className:w,ref:R}),s))});ze.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};ze.classNames={fullWidth:Le,zeroRight:Me};var Qr=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Zr(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Qr();return t&&e.setAttribute("nonce",t),e}function Jr(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function ea(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var ta=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Zr())&&(Jr(t,n),ea(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},na=function(){var e=ta();return function(t,n){c.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},rn=function(){var e=na(),t=function(n){var r=n.styles,a=n.dynamic;return e(r,a),null};return t},ra={left:0,top:0,right:0,gap:0},et=function(e){return parseInt(e||"",10)||0},aa=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],a=t[e==="padding"?"paddingRight":"marginRight"];return[et(n),et(r),et(a)]},ia=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return ra;var t=aa(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},oa=rn(),me="data-scroll-locked",sa=function(e,t,n,r){var a=e.left,o=e.top,l=e.right,s=e.gap;return n===void 0&&(n="margin"),`
2  .`.concat(Ur,` {
3   overflow: hidden `).concat(r,`;
4   padding-right: `).concat(s,"px ").concat(r,`;
5  }
6  body[`).concat(me,`] {
7    overflow: hidden `).concat(r,`;
8    overscroll-behavior: contain;
9    `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&`
10    padding-left: `.concat(a,`px;
11    padding-top: `).concat(o,`px;
12    padding-right: `).concat(l,`px;
13    margin-left:0;
14    margin-top:0;
15    margin-right: `).concat(s,"px ").concat(r,`;
16    `),n==="padding"&&"padding-right: ".concat(s,"px ").concat(r,";
16")].filter(Boolean).join(""),`
17  }
18  
19  .`).concat(Me,` {
20    right: `).concat(s,"px ").concat(r,`;
21  }
22  
23  .`).concat(Le,` {
24    margin-right: `).concat(s,"px ").concat(r,`;
25  }
26  
27  .`).concat(Me," .").concat(Me,` {
28    right: 0 `).concat(r,`;
29  }
30  
31  .`).concat(Le," .").concat(Le,` {
32    margin-right: 0 `).concat(r,`;
33  }
34  
35  body[`).concat(me,`] {
36    `).concat(Wr,": ").concat(s,`px;
37  }
38`)},zt=function(){var e=parseInt(document.body.getAttribute(me)||"0",10);return isFinite(e)?e:0},la=function(){c.useEffect(function(){return document.body.setAttribute(me,(zt()+1).toString()),function(){var e=zt()-1;e<=0?document.body.removeAttribute(me):document.body.setAttribute(me,e.toString())}},[])},ca=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,a=r===void 0?"margin":r;la();var o=c.useMemo(function(){return ia(a)},[a]);return c.createElement(oa,{styles:sa(o,!t,a,n?"":"!important")})},lt=!1;if(typeof window<"u")try{var De=Object.defineProperty({},"passive",{get:function(){return lt=!0,!0}});window.addEventListener("test",De,De),window.removeEventListener("test",De,De)}catch{lt=!1}var ue=lt?{passive:!1}:!1,ua=function(e){return e.tagName==="TEXTAREA"},an=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!ua(e)&&n[t]==="visible")},da=function(e){return an(e,"overflowY")},fa=function(e){return an(e,"overflowX")},$t=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var a=on(e,r);if(a){var o=sn(e,r),l=o[1],s=o[2];if(l>s)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},ma=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},pa=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},on=function(e,t){return e==="v"?da(t):fa(t)},sn=function(e,t){return e==="v"?ma(t):pa(t)},ga=function(e,t){return e==="h"&&t==="rtl"?-1:1},ha=function(e,t,n,r,a){var o=ga(e,window.getComputedStyle(t).direction),l=o*r,s=n.target,w=t.contains(s),v=!1,g=l>0,f=0,d=0;do{var E=sn(e,s),I=E[0],u=E[1],y=E[2],m=u-y-o*I;(I||m)&&on(e,s)&&(f+=m,d+=I),s instanceof ShadowRoot?s=s.host:s=s.parentNode}while(!w&&s!==document.body||w&&(t.contains(s)||t===s));return(g&&(Math.abs(f)<1||!a)||!g&&(Math.abs(d)<1||!a))&&(v=!0),v},je=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},_t=function(e){return[e.deltaX,e.deltaY]},Ut=function(e){return e&&"current"in e?e.current:e},va=function(e,t){return e[0]===t[0]&&e[1]===t[1]},wa=function(e){return`
39  .block-interactivity-`.concat(e,` {pointer-events: none;}
40  .allow-interactivity-`).concat(e,` {pointer-events: all;}
41`)},ba=0,de=[];function ya(e){var t=c.useRef([]),n=c.useRef([0,0]),r=c.useRef(),a=c.useState(ba++)[0],o=c.useState(rn)[0],l=c.useRef(e);c.useEffect(function(){l.current=e},[e]),c.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(a));var u=Cr([e.lockRef.current],(e.shards||[]).map(Ut),!0).filter(Boolean);return u.forEach(function(y){return y.classList.add("allow-interactivity-".concat(a))}),function(){document.body.classList.remove("block-interactivity-".concat(a)),u.forEach(function(y){return y.classList.remove("allow-interactivity-".concat(a))})}}},[e.inert,e.lockRef.current,e.shards]);var s=c.useCallback(function(u,y){if("touches"in u&&u.touches.length===2||u.type==="wheel"&&u.ctrlKey)return!l.current.allowPinchZoom;var m=je(u),T=n.current,C="deltaX"in u?u.deltaX:T[0]-m[0],h="deltaY"in u?u.deltaY:T[1]-m[1],R,z=u.target,S=Math.abs(C)>Math.abs(h)?"h":"v";if("touches"in u&&S==="h"&&z.type==="range")return!1;var j=$t(S,z);if(!j)return!0;if(j?R=S:(R=S==="v"?"h":"v",j=$t(S,z)),!j)return!1;if(!r.current&&"changedTouches"in u&&(C||h)&&(r.current=R),!R)return!0;var D=r.current||R;return ha(D,y,u,D==="h"?C:h,!0)},[]),w=c.useCallback(function(u){var y=u;if(!(!de.length||de[de.length-1]!==o)){var m="deltaY"in y?_t(y):je(y),T=t.current.filter(function(R){return R.name===y.type&&(R.target===y.target||y.target===R.shadowParent)&&va(R.delta,m)})[0];if(T&&T.should){y.cancelable&&y.preventDefault();return}
vendor: 8,971 bytes, lines 41-45
41if(!T){var C=(l.current.shards||[]).map(Ut).filter(Boolean).filter(function(R){return R.contains(y.target)}),h=C.length>0?s(y,C[0]):!l.current.noIsolation;h&&y.cancelable&&y.preventDefault()}}},[]),v=c.useCallback(function(u,y,m,T){var C={name:u,delta:y,target:m,should:T,shadowParent:xa(m)};t.current.push(C),setTimeout(function(){t.current=t.current.filter(function(h){return h!==C})},1)},[]),g=c.useCallback(function(u){n.current=je(u),r.current=void 0},[]),f=c.useCallback(function(u){v(u.type,_t(u),u.target,s(u,e.lockRef.current))},[]),d=c.useCallback(function(u){v(u.type,je(u),u.target,s(u,e.lockRef.current))},[]);c.useEffect(function(){return de.push(o),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:d}),document.addEventListener("wheel",w,ue),document.addEventListener("touchmove",w,ue),document.addEventListener("touchstart",g,ue),function(){de=de.filter(function(u){return u!==o}),document.removeEventListener("wheel",w,ue),document.removeEventListener("touchmove",w,ue),document.removeEventListener("touchstart",g,ue)}},[]);var E=e.removeScrollBar,I=e.inert;return c.createElement(c.Fragment,null,I?c.createElement(o,{styles:wa(a)}):null,E?c.createElement(ca,{gapMode:e.gapMode}):null)}function xa(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Sa=Kr(nn,ya);var ln=c.forwardRef(function(e,t){return c.createElement(ze,ne({},e,{ref:t,sideCar:Sa}))});ln.classNames=ze.classNames;var Ea=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},fe=new WeakMap,Ae=new WeakMap,Oe={},tt=0,cn=function(e){return e&&(e.host||cn(e.parentNode))},Na=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=cn(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},Ca=function(e,t,n,r){var a=Na(t,Array.isArray(e)?e:[e]);Oe[n]||(Oe[n]=new WeakMap);var o=Oe[n],l=[],s=new Set,w=new Set(a),v=function(f){!f||s.has(f)||(s.add(f),v(f.parentNode))};a.forEach(v);var g=function(f){!f||w.has(f)||Array.prototype.forEach.call(f.children,function(d){if(s.has(d))g(d);else try{var E=d.getAttribute(r),I=E!==null&&E!=="false",u=(fe.get(d)||0)+1,y=(o.get(d)||0)+1;fe.set(d,u),o.set(d,y),l.push(d),u===1&&I&&Ae.set(d,!0),y===1&&d.setAttribute(n,"true"),I||d.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",d,m)}})};return g(t),s.clear(),tt++,function(){l.forEach(function(f){var d=fe.get(f)-1,E=o.get(f)-1;fe.set(f,d),o.set(f,E),d||(Ae.has(f)||f.removeAttribute(r),Ae.delete(f)),E||f.removeAttribute(n)}),tt--,tt||(fe=new WeakMap,fe=new WeakMap,Ae=new WeakMap,Oe={})}},Ra=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),a=Ea(e);return a?(r.push.apply(r,Array.from(a.querySelectorAll("[aria-live]"))),Ca(r,a,n,"aria-hidden")):function(){return null}},ft="Dialog",[un,Mi]=mr(ft),[Ta,q]=un(ft),dn=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:l=!0}=e,s=c.useRef(null),w=c.useRef(null),[v=!1,g]=vr({prop:r,defaultProp:a,onChange:o});return i.jsx(Ta,{scope:t,triggerRef:s,contentRef:w,contentId:Xe(),titleId:Xe(),descriptionId:Xe(),open:v,onOpenChange:g,onOpenToggle:c.useCallback(()=>g(f=>!f),[g]),modal:l,children:n})};dn.displayName=ft;var fn="DialogTrigger",mn=c.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=q(fn,n),o=Be(t,a.triggerRef);return i.jsx(se.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":gt(a.open),...r,ref:o,onClick:Ee(e.onClick,a.onOpenToggle)})});mn.displayName=fn;var mt="DialogPortal",[Da,pn]=un(mt,{forceMount:void 0}),gn=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:a}=e,o=q(mt,t);return i.jsx(Da,{scope:t,forceMount:n,children:c.Children.map(r,l=>i.jsx(dt,{present:n||o.open,children:i.jsx(wr,{asChild:!0,container:a,children:l})}))})};gn.displayName=mt;var Fe="DialogOverlay",hn=c.forwardRef((e,t)=>{const n=pn(Fe,e.__scopeDialog),{forceMount:r=n.forceMount,...a}=e,o=q(Fe,e.__scopeDialog);return o.modal?i.jsx(dt,{present:r||o.open,children:i.jsx(ja,{...a,ref:t})}):null});hn.displayName=Fe;var ja=c.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=q(Fe,n);return i.jsx(ln,{as:pr,allowPinchZoom:!0,shards:[a.contentRef],children:i.jsx(se.div,{"data-state":gt(a.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),oe="DialogContent",vn=c.forwardRef((e,t)=>{const n=pn(oe,e.__scopeDialog),{forceMount:r=n.forceMount,...a}=e,o=q(oe,e.__scopeDialog);return i.jsx(dt,{present:r||o.open,children:o.modal?i.jsx(Aa,{...a,ref:t}):i.jsx(Oa,{...a,ref:t})})});vn.displayName=oe;var Aa=c.forwardRef((e,t)=>{const n=q(oe,e.__scopeDialog),r=c.useRef(null),a=Be(t,n.contentRef,r);return c.useEffect(()=>{const o=r.current;if(o)return Ra(o)},[]),i.jsx(wn,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ee(e.onCloseAutoFocus,o=>{var l;o.preventDefault(),(l=n.triggerRef.current)==null||l.focus()}),onPointerDownOutside:Ee(e.onPointerDownOutside,o=>{const l=o.detail.originalEvent,s=l.button===0&&l.ctrlKey===!0;(l.button===2||s)&&o.preventDefault()}),onFocusOutside:Ee(e.onFocusOutside,o=>o.preventDefault())})}),Oa=c.forwardRef((e,t)=>{const n=q(oe,e.__scopeDialog),r=c.useRef(!1),a=c.useRef(!1);return i.jsx(wn,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var l,s;(l=e.onCloseAutoFocus)==null||l.call(e,o),o.defaultPrevented||(r.current||(s=n.triggerRef.current)==null||s.focus(),o.preventDefault()),r.current=!1,a.current=!1},onInteractOutside:o=>{var w,v;(w=e.onInteractOutside)==null||w.call(e,o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(a.current=!0));const l=o.target;((v=n.triggerRef.current)==null?void 0:v.contains(l))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&a.current&&o.preventDefault()}})}),wn=c.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:o,...l}=e,s=q(oe,n),w=c.useRef(null),v=Be(t,w);return _r(),i.jsxs(i.Fragment,{children:[i.jsx(Jt,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:o,children:i.jsx(gr,{role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":gt(s.open),...l,ref:v,onDismiss:()=>s.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(Ia,{titleId:s.titleId}),i.jsx(ka,{contentRef:w,descriptionId:s.descriptionId})]})]})}),pt="DialogTitle",bn=c.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=q(pt,n);return i.jsx(se.h2,{id:a.titleId,...r,ref:t})});bn.displayName=pt;var yn="DialogDescription",xn=c.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=q(yn,n);return i.jsx(se.p,{id:a.descriptionId,...r,ref:t})});xn.displayName=yn;var Sn="DialogClose",En=c.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,a=q(Sn,n);return i.jsx(se.button,{type:"button",...r,ref:t,onClick:Ee(e.onClick,()=>a.onOpenChange(!1))})});En.displayName=Sn;function gt(e){return e?"open":"closed"}var Nn="DialogTitleWarning",[Li,Cn]=hr(Nn,{contentName:oe,titleName:pt,docsSlug:"dialog"}),Ia=({titleId:e})=>{const t=Cn(Nn),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
42
43If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
44
45For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return c.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Pa="DialogDescriptionWarning",ka=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Cn(Pa).contentName}}.`;return c.useEffect(()=>{var o;const a=(o=e.current)==null?void 0:o.getAttribute("aria-describedby");t&&a&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},Rn=dn,Ma=mn,Tn=gn,ht=hn,vt=vn,wt=bn,bt=xn,Dn=En;const La=Rn,Fa=Tn,jn=c.forwardRef(({className:e,...t},n)=>i.jsx(ht,{ref:n,className:Q("fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));jn.displayName=ht.displayName;const An=c.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Fa,{children:[i.jsx(jn,{}),i.jsxs(vt,{ref:r,className:Q("fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-lg",e),...n,children:[t,i.jsxs(Dn,{className:"absolute right-4 top-4 roun
45ded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[i.jsx(br,{className:"h-4 w-4"}),i.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));An.displayName=vt.displayName;const On=c.forwardRef(({className:e,...t},n)=>i.jsx(wt,{ref:n,className:Q("text-lg font-semibold leading-none tracking-tight",e),...t}));On.displayName=wt.displayName;const In=c.forwardRef(({className:e,...t},n)=>i.jsx(bt,{ref:n,className:Q("text-sm text-muted-foreground",e),...t}));In.displayName=bt.displayName;function Ba(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const Pn=p.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),pe=()=>{const e=p.useContext(Pn);if(!e)throw new Error("useDrawerContext must be used within a Drawer.Root");return e};Ba(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,100%,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,-100%,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(-100%,0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(100%,0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(
46[data-state=closed]
47){opacity:0}
47[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,100%,0)}}@keyframes slideFromTop{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,-100%,0)}}@keyframes slideFromLeft{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(-100%,0,0)}}@keyframes slideFromRight{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(100%,0,0)}}`);const za=24,$a=typeof window<"u"?c.useLayoutEffect:c.useEffect;function Wt(...e){return(...t)=>{for(let n of e)typeof n=="function"&&n(...t)}}function _a(){return yt(/^Mac/)}function Ua(){return yt(/^iPhone/)}function Vt(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function Wa(){return yt(/^iPad/)||_a()&&navigator.maxTouchPoints>1}function kn(){return Ua()||Wa()}function yt(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const nt=typeof document<"u"&&window.visualViewport;function Ht(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function Mn(e){for(Ht(e)&&(e=e.parentElement);e&&!Ht(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}const Va=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let Ie=0,rt;function Ha(e={}){let{isDisabled:t}=e;$a(()=>{if(!t)return Ie++,Ie===1&&kn()&&(rt=Ga()),()=>{Ie--,Ie===0&&(rt==null||rt())}},[t])}function Ga(){let e,t=0,n=f=>{e=Mn(f.target),!(e===document.documentElement&&e===document.body)&&(t=f.changedTouches[0].pageY)},r=f=>{if(!e||e===document.documentElement||e===document.body){f.preventDefault();return}let d=f.changedTouches[0].pageY,E=e.scrollTop,I=e.scrollHeight-e.clientHeight;I!==0&&((E<=0&&d>t||E>=I&&d<t)&&f.preventDefault(),t=d)},a=f=>{let d=f.target;ct(d)&&d!==document.activeElement&&(f.preventDefault(),d.style.transform="translateY(-2000px)",d.focus(),requestAnimationFrame(()=>{d.style.transform=""}))},o=f=>{let d=f.target;ct(d)&&(d.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{d.style.transform="",nt&&(nt.height<window.innerHeight?requestAnimationFrame(()=>{Gt(d)}):nt.addEventListener("resize",()=>Gt(d),{once:!0}))}))},l=()=>{window.scrollTo(0,0)},s=window.pageXOffset,w=window.pageYOffset,v=Wt(Xa(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`));window.scrollTo(0,0);let g=Wt(ye(document,"touchstart",n,{passive:!1,capture:!0}),ye(document,"touchmove",r,{passive:!1,capture:!0}),ye(document,"touchend",a,{passive:!1,capture:!0}),ye(document,"focus",o,!0),ye(window,"scroll",l));return()=>{v(),g(),window.scrollTo(s,w)}}function Xa(e,t,n){let r=e.style[t];return e.style[t]=n,()=>{e.style[t]=r}}function ye(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function Gt(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let n=Mn(e);if(n!==document.documentElement&&n!==document.body&&n!==e){let r=n.getBoundingClientRect().top,a=e.getBoundingClientRect().top,o=e.getBoundingClientRect().bottom;const l=n.getBoundingClientRect().bottom+za;o>l&&(n.scrollTop+=a-r)}e=n.parentElement}}function ct(e){return e instanceof HTMLInputElement&&!Va.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function Ya(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function qa(...e){return t=>e.forEach(n=>Ya(n,t))}function Ln(...e){return c.useCallback(qa(...e),e)}const Fn=new WeakMap;function L(e,t,n=!1){if(!e||!(e instanceof HTMLElement))return;let r={};Object.entries(t).forEach(([a,o])=>{if(a.startsWith("--")){e.style.setProperty(a,o);return}r[a]=e.style[a],e.style[a]=o}),!n&&Fn.set(e,r)}function Ka(e,t){if(!e||!(e instanceof HTMLElement))return;let n=Fn.get(e);n&&(e.style[t]=n[t])}const F=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function Pe(e,t){if(!e)return null;const n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform;let a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[F(t)?13:12]):(a=r.match(/^matrix\((.+)\)$/),a?parseFloat(a[1].split(", ")[F(t)?5:4]):null)}function Qa(e){return 8*(Math.log(e+1)-2)}function at(e,t){if(!e)return()=>{};const n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}function Za(...e){return(...t)=>{for(const n of e)typeof n=="function"&&n(...t)}}const M={DURATION:.5,EASE:[.32,.72,0,1]},Bn=.4,Ja=.25,ei=100,zn=8,ie=16,ut=26,it="vaul-dragging";function $n(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>t.current==null?void 0:t.current.call(t,...n),[])}function ti({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,a=p.useRef(r),o=$n(t);return p.useEffect(()=>{a.current!==r&&(o(r),a.current=r)},[r,a,o]),n}function _n({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,a]=ti({defaultProp:t,onChange:n}),o=e!==void 0,l=o?e:r,s=$n(n),w=p.useCallback(v=>{if(o){const f=typeof v=="function"?v(e):v;f!==e&&s(f)}else a(v)},[o,e,a,s]);return[l,w]}function ni({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:n,drawerRef:r,overlayRef:a,fadeFromIndex:o,onSnapPointChange:l,direction:s="bottom",container:w,snapToSequentialPoint:v}){const[g,f]=_n({prop:e,defaultProp:n==null?void 0:n[0],onChange:t}),[d,E]=p.useState(typeof window<"u"?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);p.useEffect(()=>{function S(){E({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",S),()=>window.removeEventListener("resize",S)},[]);const I=p.useMemo(()=>g===(n==null?void 0:n[n.length-1])||null,[n,g]),u=p.useMemo(()=>n==null?void 0:n.findIndex(S=>S===g),[n,g]),y=n&&n.length>0&&(o||o===0)&&!Number.isNaN(o)&&n[o]===g||!n,m=p.useMemo(()=>{const S=w?{width:w.getBoundingClientRect().width,height:w.getBoundingClientRect().height}:typeof window<"u"?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var j;return(j=n==null?void 0:n.map(D=>
47{const _=typeof D=="string";let b=0;if(_&&(b=parseInt(D,10)),F(s)){const B=_?b:d?D*S.height:0;return d?s==="bottom"?S.height-B:-S.height+B:B}const $=_?b:d?D*S.width:0;return d?s==="right"?S.width-$:-S.width+$:$}))!=null?j:[]},[n,d,w]),T=p.useMemo(()=>u!==null?m==null?void 0:m[u]:null,[m,u]),C=p.useCallback(S=>{var j;const D=(j=m==null?void 0:m.findIndex(_=>_===S))!=null?j:null;l(D),L(r.current,{transition:`transform ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`,transform:F(s)?`translate3d(0, ${S}px, 0)`:`translate3d(${S}px, 0, 0)`}),m&&D!==m.length-1&&D!==o&&D<o?L(a.current,{transition:`opacity ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`,opacity:"0"}):L(a.current,{transition:`opacity ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`,opacity:"1"}),f(n==null?void 0:n[Math.max(D,0)])},[r.current,n,m,o,a,f]);p.useEffect(()=>{if(g||e){var S;const j=(S=n==null?void 0:n.findIndex(D=>D===e||D===g))!=null?S:-1;m&&j!==-1&&typeof m[j]=="number"&&C(m[j])}},[g,e,n,m,C]);function h({draggedDistance:S,closeDrawer:j,velocity:D,dismissible:_}){if(o===void 0)return;const b=s==="bottom"||s==="right"?(T??0)-S:(T??0)+S,$=u===o-1,B=u===0,W=S>0;if($&&L(a.current,{transition:`opacity ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`}),!v&&D>2&&!W){_?j():C(m[0]);return}if(!v&&D>2&&W&&m&&n){C(m[n.length-1]);return}const V=m==null?void 0:m.reduce((H,re)=>typeof H!="number"||typeof re!="number"?H:Math.abs(re-b)<Math.abs(H-b)?re:H),J=F(s)?window.innerHeight:window.innerWidth;if(D>Bn&&Math.abs(S)<J*.4){const H=W?1:-1;if(H>0&&I){C(m[n.length-1]);return}if(B&&H<0&&_&&j(),u===null)return;C(m[u+H]);return}C(V)}function R({draggedDistance:S}){if(T===null)return;const j=s==="bottom"||s==="right"?T-S:T+S;(s==="bottom"||s==="right")&&j<m[m.length-1]||(s==="top"||s==="left")&&j>m[m.length-1]||L(r.current,{transform:F(s)?`translate3d(0, ${j}px, 0)`:`translate3d(${j}px, 0, 0)`})}function z(S,j){if(!n||typeof u!="number"||!m||o===void 0)return null;const D=u===o-1;if(u>=o&&j)return 0;if(D&&!j)return 1;if(!y&&!D)return null;const b=D?u+1:u-1,$=D?m[b]-m[b-1]:m[b+1]-m[b],B=S/Math.abs($);return D?1-B:B}return{isLastSnapPoint:I,activeSnapPoint:g,shouldFade:y,getPercentageDragged:z,setActiveSnapPoint:f,activeSnapPointIndex:u,onRelease:h,onDrag:R,snapPointsOffset:m}}const ri=()=>()=>{};function ai(){const{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:a}=pe(),o=p.useRef(null),l=c.useMemo(()=>document.body.style.backgroundColor,[]);function s(){return(window.innerWidth-ut)/window.innerWidth}p.useEffect(()=>{if(t&&n){o.current&&clearTimeout(o.current);const w=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!w)return;Za(r&&!a?at(document.body,{background:"black"}):ri,at(w,{transformOrigin:F(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${M.DURATION}s`,transitionTimingFunction:`cubic-bezier(${M.EASE.join(",")})`}));const v=at(w,{borderRadius:`${zn}px`,overflow:"hidden",...F(e)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{v(),o.current=window.setTimeout(()=>{l?document.body.style.background=l:document.body.style.removeProperty("background")},M.DURATION*1e3)}}},[t,n,l])}let xe=null;function ii({isOpen:e,modal:t,nested:n,hasBeenOpened:r,preventScrollRestoration:a,noBodyStyles:o}){const[l,s]=p.useState(()=>typeof window<"u"?window.location.href:""),w=p.useRef(0),v=p.useCallback(()=>{if(Vt()&&xe===null&&e&&!o){xe={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:f,innerHeight:d}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-w.current}px`,left:`${-f}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const E=d-window.innerHeight;E&&w.current>=d&&(document.body.style.top=`${-(w.current+E)}px`)}),300)}},[e]),g=p.useCallback(()=>
47{if(Vt()&&xe!==null&&!o){const f=-parseInt(document.body.style.top,10),d=-parseInt(document.body.style.left,10);Object.assign(document.body.style,xe),window.requestAnimationFrame(()=>{if(a&&l!==window.location.href){s(window.location.href);return}window.scrollTo(d,f)}),xe=null}},[l]);return p.useEffect(()=>{function f(){w.current=window.scrollY}return f(),window.addEventListener("scroll",f),()=>{window.removeEventListener("scroll",f)}},[]),p.useEffect(()=>{n||!r||(e?(!window.matchMedia("(display-mode: standalone)").matches&&v(),t||window.setTimeout(()=>{g()},500)):g())},[e,r,l,t,n,v,g]),{restorePositionSetting:g}}function Un({open:e,onOpenChange:t,children:n,onDrag:r,onRelease:a,snapPoints:o,shouldScaleBackground:l=!1,setBackgroundColorOnScale:s=!0,closeThreshold:w=Ja,scrollLockTimeout:v=ei,dismissible:g=!0,handleOnly:f=!1,fadeFromIndex:d=o&&o.length-1,activeSnapPoint:E,setActiveSnapPoint:I,fixed:u,modal:y=!0,onClose:m,nested:T,noBodyStyles:C,direction:h="bottom",defaultOpen:R=!1,disablePreventScroll:z=!0,snapToSequentialPoint:S=!1,preventScrollRestoration:j=!1,repositionInputs:D=!0,onAnimationEnd:_,container:b,autoFocus:$=!1}){var B,W;const[V=!1,J]=_n({defaultProp:R,prop:e,onChange:x=>{t==null||t(x),!x&&!T&&ir(),setTimeout(()=>{_==null||_(x)},M.DURATION*1e3),x&&!y&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),x||(document.body.style.pointerEvents="auto")}}),[H,re]=p.useState(!1),[ge,$e]=p.useState(!1),[Jn,xt]=p.useState(!1),le=p.useRef(null),Ne=p.useRef(null),_e=p.useRef(null),Ue=p.useRef(null),Ce=p.useRef(null),he=p.useRef(!1),We=p.useRef(null),Ve=p.useRef(0),ce=p.useRef(!1),St=p.useRef(0),N=p.useRef(null),Et=p.useRef(((B=N.current)==null?void 0:B.getBoundingClientRect().height)||0),Nt=p.useRef(((W=N.current)==null?void 0:W.getBoundingClientRect().width)||0),He=p.useRef(0),er=p.useCallback(x=>{o&&x===we.length-1&&(Ne.current=new Date)},[]),{activeSnapPoint:tr,activeSnapPointIndex:ve,setActiveSnapPoint:Ct,onRelease:nr,snapPointsOffset:we,onDrag:rr,shouldFade:Rt,getPercentageDragged:ar}=ni({snapPoints:o,activeSnapPointProp:E,setActiveSnapPointProp:I,drawerRef:N,fadeFromIndex:d,overlayRef:le,onSnapPointChange:er,direction:h,container:b,snapToSequentialPoint:S});Ha({isDisabled:!V||ge||!y||Jn||!H||!D||!z});const{restorePositionSetting:ir}=ii({isOpen:V,modal:y,nested:T,hasBeenOpened:H,preventScrollRestoration:j,noBodyStyles:C});function Re(){return(window.innerWidth-ut)/window.innerWidth}function or(x){var A,P;!g&&!o||N.current&&!N.current.contains(x.target)||(Et.current=((A=N.current)==null?void 0:A.getBoundingClientRect().height)||0,Nt.current=((P=N.current)==null?void 0:P.getBoundingClientRect().width)||0,$e(!0),_e.current=new Date,kn()&&window.addEventListener("touchend",()=>he.current=!1,{once:!0}),x.target.setPointerCapture(x.pointerId),Ve.current=F(h)?x.pageY:x.pageX)}function Tt(x,A){var P,k;let O=x;const X=(P=window.getSelection())==null?void 0:P.toString(),U=N.current?Pe(N.current,h):null,G=new Date;if(O.hasAttribute("data-vaul-no-drag")||O.closest("[data-vaul-no-drag]"))return!1;if(h==="right"||h==="left")return!0;if(Ne.current&&G.getTime()-Ne.current.getTime()<500)return!1;if(U!==null&&(h==="bottom"?U>0:U<0))return!0;if(X&&X.length>0)return!1;if(G.getTime()-((k=Ce.current)==null?void 0:k.getTime())<v&&U===0||A)return Ce.current=G,!1;for(;O;){if(O.scrollHeight>O.clientHeight){if(O.scrollTop!==0)return Ce.current=new Date,!1;if(O.getAttribute("role")==="dialog")return!0}O=O.parentNode}return!0}function sr(x){if(N.current&&ge){const A=h==="bottom"||h==="right"?1:-1,P=(Ve.current-(F(h)?x.pageY:x.pageX))*A,k=P>0,O=o&&!g&&!k;if(O&&ve===0)return;const X=Math.abs(P),U=document.querySelector("[data-vaul-drawer-wrapper]"),G=h==="bottom"||h==="top"?Et.current:Nt.current;let Y=X/G;const ae=ar(X,k);if(ae!==null&&(Y=ae),O&&Y>=1||!he.current&&!Tt(x.target,k))return;if(N.current.classList.add(it),he.current=!0,L(N.current,{transition:"none"}),L(le.current,{transition:"none"}),o&&rr({draggedDistance:P}),k&&!o){const K=Qa(P),Te=Math.min(K*-1,0)*A;L(N.current,{transform:F(h)?`translate3d(0, ${Te}px, 0)`:`translate3d(${Te}px, 0, 0)`});return}const ee=1-Y;if((Rt||d&&ve===d-1)&&(r==null||r(x,Y),L(le.current,{opacity:`${ee}`,transition:"none"},!0)),U&&le.current&&l){const K=Math.min(Re()+Y*(1-Re()),1),Te=8-Y*8,jt=Math.max(0,14-Y*14);L(U,{borderRadius:`${Te}px`,transform:F(h)?`scale(${K}) translate3d(0, ${jt}px, 0)`:`scale(${K}) translate3d(${jt}px, 0, 0)`,transition:"none"},!0)}if(!o){const K=X*A;L(N.current,{transform:F(h)?`translate3d(0, ${K}px, 0)`:`translate3d(${K}px, 0, 0)`})}}}p.useEffect(()=>{var x;function A(){if(!N.current||!D)return;const P=document.activeElement;if(ct(P)||ce.current){var k;
47const O=((k=window.visualViewport)==null?void 0:k.height)||0,X=window.innerHeight;let U=X-O;const G=N.current.getBoundingClientRect().height||0,Y=G>X*.8;He.current||(He.current=G);const ae=N.current.getBoundingClientRect().top;if(Math.abs(St.current-U)>60&&(ce.current=!ce.current),o&&o.length>0&&we&&ve){const ee=we[ve]||0;U+=ee}if(St.current=U,G>O||ce.current){const ee=N.current.getBoundingClientRect().height;let K=ee;ee>O&&(K=O-(Y?ae:ut)),u?N.current.style.height=`${ee-Math.max(U,0)}px`:N.current.style.height=`${Math.max(K,O-ae)}px`}else N.current.style.height=`${He.current}px`;o&&o.length>0&&!ce.current?N.current.style.bottom="0px":N.current.style.bottom=`${Math.max(U,0)}px`}}return(x=window.visualViewport)==null||x.addEventListener("resize",A),()=>{var P;return(P=window.visualViewport)==null?void 0:P.removeEventListener("resize",A)}},[ve,o,we]);function be(x){lr(),m==null||m(),x||J(!1),setTimeout(()=>{o&&Ct(o[0])},M.DURATION*1e3)}function Dt(){if(!N.current)return;const x=document.querySelector("[data-vaul-drawer-wrapper]"),A=Pe(N.current,h);L(N.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`}),L(le.current,{transition:`opacity ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`,opacity:"1"}),l&&A&&A>0&&V&&L(x,{borderRadius:`${zn}px`,overflow:"hidden",...F(h)?{transform:`scale(${Re()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${Re()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${M.DURATION}s`,transitionTimingFunction:`cubic-bezier(${M.EASE.join(",")})`},!0)}function lr(){!ge||!N.current||(N.current.classList.remove(it),he.current=!1,$e(!1),Ue.current=new Date)}function cr(x){if(!ge||!N.current)return;N.current.classList.remove(it),he.current=!1,$e(!1),Ue.current=new Date;const A=Pe(N.current,h);
47if(!Tt(x.target,!1)||!A||Number.isNaN(A)||_e.current===null)return;const P=Ue.current.getTime()-_e.current.getTime(),k=Ve.current-(F(h)?x.pageY:x.pageX),O=Math.abs(k)/P;if(O>.05&&(xt(!0),setTimeout(()=>{xt(!1)},200)),o){nr({draggedDistance:k*(h==="bottom"||h==="right"?1:-1),closeDrawer:be,velocity:O,dismissible:g}),a==null||a(x,!0);return}if(h==="bottom"||h==="right"?k>0:k<0){Dt(),a==null||a(x,!0);return}if(O>Bn){be(),a==null||a(x,!1);return}var X;const U=Math.min((X=N.current.getBoundingClientRect().height)!=null?X:0,window.innerHeight);var G;const Y=Math.min((G=N.current.getBoundingClientRect().width)!=null?G:0,window.innerWidth),ae=h==="left"||h==="right";if(Math.abs(A)>=(ae?Y:U)*w){be(),a==null||a(x,!1);return}a==null||a(x,!0),Dt()}p.useEffect(()=>(V&&(L(document.documentElement,{scrollBehavior:"auto"}),Ne.current=new Date),()=>{Ka(document.documentElement,"scrollBehavior")}),[V]);function ur(x){const A=x?(window.innerWidth-ie)/window.innerWidth:1,P=x?-ie:0;We.current&&window.clearTimeout(We.current),L(N.current,{transition:`transform ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`,transform:`scale(${A}) translate3d(0, ${P}px, 0)`}),!x&&N.current&&(We.current=setTimeout(()=>{const k=Pe(N.current,h);L(N.current,{transition:"none",transform:F(h)?`translate3d(0, ${k}px, 0)`:`translate3d(${k}px, 0, 0)`})},500))}function dr(x,A){if(A<0)return;const P=(window.innerWidth-ie)/window.innerWidth,k=P+A*(1-P),O=-ie+A*ie;L(N.current,{transform:F(h)?`scale(${k}) translate3d(0, ${O}px, 0)`:`scale(${k}) translate3d(${O}px, 0, 0)`,transition:"none"})}function fr(x,A){const P=F(h)?window.innerHeight:window.innerWidth,k=A?(P-ie)/P:1,O=A?-ie:0;A&&L(N.current,{transition:`transform ${M.DURATION}s cubic-bezier(${M.EASE.join(",")})`,transform:F(h)?`scale(${k}) translate3d(0, ${O}px, 0)`:`scale(${k}) translate3d(${O}px, 0, 0)`})}return p.createElement(Rn,{defaultOpen:R,onOpenChange:x=>{!g&&!x||(x?re(!0):be(!0),J(x))},open:V},p.createElement(Pn.Provider,{value:{activeSnapPoint:tr,snapPoints:o,setActiveSnapPoint:Ct,drawerRef:N,overlayRef:le,onOpenChange:t,onPress:or,onRelease:cr,onDrag:sr,dismissible:g,handleOnly:f,isOpen:V,isDragging:ge,shouldFade:Rt,closeDrawer:be,onNestedDrag:dr,onNestedOpenChange:ur,onNestedRelease:fr,keyboardIsOpen:ce,modal:y,snapPointsOffset:we,direction:h,shouldScaleBackground:l,setBackgroundColorOnScale:s,noBodyStyles:C,container:b,autoFocus:$}},n))}const Wn=p.forwardRef(function({...e},t){const{overlayRef:n,snapPoints:r,onRelease:a,shouldFade:o,isOpen:l,modal:s}=pe(),w=Ln(t,n),v=r&&r.length>0;return s?p.createElement(ht,{onMouseUp:a,ref:w,"data-vaul-overlay":"","data-vaul-snap-points":l&&v?"true":"false","data-vaul-snap-points-overlay":l&&o?"true":"false",...e}):(typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),null)});Wn.displayName="Drawer.Overlay";const Vn=p.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:n,...r},a){const{drawerRef:o,onPress:l,onRelease:s,onDrag:w,keyboardIsOpen:v,snapPointsOffset:g,modal:f,isOpen:d,direction:E,snapPoints:I,container:u,handleOnly:y,autoFocus:m}=pe(),[T,C]=p.useState(!1),h=Ln(a,o),R=p.useRef(null),z=p.useRef(null),S=p.useRef(!1),j=I&&I.length>0;ai();const D=(b,$,B=0)=>{if(S.current)return!0;const W=Math.abs(b.y),V=Math.abs(b.x),J=V>W,H=["bottom","right"].includes($)?1:-1;if($==="left"||$==="right"){if(!(b.x*H<0)&&V>=0&&V<=B)return J}else if(!(b.y*H<0)&&W>=0&&W<=B)return!J;return S.current=!0,!0};p.useEffect(()=>{j&&window.requestAnimationFrame(()=>{C(!0)})},[]);function _(b){R.current=null,S.current=!1,s(b)}return p.createElement(vt,{"data-vaul-drawer-direction":E,"data-vaul-drawer":"","data-vaul-delayed-snap-points":T?"true":"false","data-vaul-snap-points":d&&j?"true":"false","data-vaul-custom-container":u?"true":"false",...r,ref:h,style:g&&g.length>0?{"--snap-point-height":`${g[0]}px`,...t}:t,onPointerDown:b=>{y||(r.onPointerDown==null||r.onPointerDown.call(r,b),R.current={x:b.pageX,y:b.pageY},l(b))},onOpenAutoFocus:b=>{n==null||n(b),m||b.preventDefault()},onPointerDownOutside:b=>{if(e==null||e(b),!f||b.defaultPrevented){b.preventDefault();return}v.current&&(v.current=!1)},onFocusOutside:b=>{if(!f){b.preventDefault();return}},onPointerMove:b=>
47{if(z.current=b,y||(r.onPointerMove==null||r.onPointerMove.call(r,b),!R.current))return;const $=b.pageY-R.current.y,B=b.pageX-R.current.x,W=b.pointerType==="touch"?10:2;D({x:B,y:$},E,W)?w(b):(Math.abs(B)>W||Math.abs($)>W)&&(R.current=null)},onPointerUp:b=>{r.onPointerUp==null||r.onPointerUp.call(r,b),R.current=null,S.current=!1,s(b)},onPointerOut:b=>{r.onPointerOut==null||r.onPointerOut.call(r,b),_(z.current)},onContextMenu:b=>{r.onContextMenu==null||r.onContextMenu.call(r,b),_(z.current)}})});Vn.displayName="Drawer.Content";const oi=250,si=120,Hn=p.forwardRef(function({preventCycle:e=!1,children:t,...n},r){const{closeDrawer:a,isDragging:o,snapPoints:l,activeSnapPoint:s,setActiveSnapPoint:w,dismissible:v,handleOnly:g,isOpen:f,onPress:d,onDrag:E}=pe(),I=p.useRef(null),u=p.useRef(!1);function y(){if(u.current){C();return}window.setTimeout(()=>{m()},si)}function m(){if(o||e||u.current){C();return}if(C(),(!l||l.length===0)&&v){a();return}if(s===l[l.length-1]&&v){a();return}const R=l.findIndex(S=>S===s);if(R===-1)return;const z=l[R+1];w(z)}function T(){I.current=window.setTimeout(()=>{u.current=!0},oi)}function C(){window.clearTimeout(I.current),u.current=!1}return p.createElement("div",{onClick:y,onPointerCancel:C,onPointerDown:h=>{g&&d(h),T()},onPointerMove:h=>{g&&E(h)},ref:r,"data-vaul-drawer-visible":f?"true":"false","data-vaul-handle":"","aria-hidden":"true",...n},p.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});Hn.displayName="Drawer.Handle";function li({onDrag:e,onOpenChange:t,...n}){const{onNestedDrag:r,onNestedOpenChange:a,onNestedRelease:o}=pe();if(!r)throw new Error("Drawer.NestedRoot must be placed in another drawer");return p.createElement(Un,{nested:!0,onClose:()=>{a(!1)},onDrag:(l,s)=>{r(l,s),e==null||e(l,s)},onOpenChange:l=>{l&&a(l)},onRelease:o,...n})}function ci(e){const t=pe(),{container:n=t.container,...r}=e;return p.createElement(Tn,{container:n,...r})}const Z={Root:Un,NestedRoot:li,Content:Vn,Overlay:Wn,Trigger:Ma,Portal:ci,Handle:Hn,Close:Dn,Title:wt,Description:bt},Gn=({shouldScaleBackground:e=!0,...t})=>i.jsx(Z.Root,{shouldScaleBackground:e,...t});Gn.displayName="Drawer";const ui=Z.Portal,Xn=c.forwardRef(({className:e,...t},n)=>i.jsx(Z.Overlay,{ref:n,className:Q("fixed inset-0 z-50 bg-black/80",e),...t}));Xn.displayName=Z.Overlay.displayName;const Yn=c.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(ui,{children:[i.jsx(Xn,{}),i.jsxs(Z.Content,{ref:r,className:Q("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",e),...n,children:[i.jsx("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),t]})]}));Yn.displayName="DrawerContent";const qn=c.forwardRef(({className:e,...t},n)=>i.jsx(Z.Title,{ref:n,className:Q("text-lg font-semibold leading-none tracking-tight",e),...t}));qn.displayName=Z.Title.displayName;const Kn=c.forwardRef(({className:e,...t},n)=>i.jsx(Z.Description,{ref:n,className:Q("text-sm text-muted-foreground",e),...t}));Kn.displayName=Z.Description.displayName;var di="Separator",Xt="horizontal",fi=["horizontal","vertical"],Qn=c.forwardRef((e,t)=>{const{decorative:n,orientation:r=Xt,...a}=e,o=mi(r)?r:Xt,s=n?{role:"none"}:{"aria-orientation":o==="vertical"?o:void 0,role:"separator"};return i.jsx(se.div,{"data-orientation":o,...s,...a,ref:t})});Qn.displayName=di;function mi(e){return fi.includes(e)}var Zn=Qn;const Se=c.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},a)=>i.jsx(Zn,{ref:a,decorative:n,orientation:t,className:Q("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));Se.displayName=Zn.displayName;const Yt=({caseStudy:e,onContact:t})=>{const{t:n}=qt();return i.jsxs("div",{className:"space-y-5",children:[i.jsxs("div",{className:"flex items-center gap-3 sm:gap-4 min-w-0",children:[e.clientLogoSrc&&i.jsx("img",{src:e.clientLogoSrc,alt:e.clientName,className:e.logoIsWordmark?"h-8 sm:h-10 w-auto max-w-[60%] object-contain shrink":"h-10 w-auto object-contain flex-shrink-0"}),!e.logoIsWordmark&&i.jsxs("div",{className:"min-w-0",children:[i.jsx("h3",{className:"text-lg font-semibold leading-none tracking-tight truncate",children:e.clientName}),e.industry&&i.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:e.industry})]}),e.logoIsWordmark&&e.industry&&i.jsx("p",{className:"text-sm text-muted-foreground min-w-0 truncate",children:e.industry})]}),i.jsx("div",{className:"flex flex-wrap gap-2",children:e.tags.map(r=>i.jsx(ot,{variant:"secondary",className:"text-xs",children:r},r))}),i.jsxs("div",{children:[i.jsx("h4",{className:"font-semibold text-foreground mb-2",children:e.headline}),i.jsx("p",{className:"text-muted-foreground text-sm",children:e.summary})]}),i.jsx(Se,{}),i.jsxs("div",{children:[i.jsxs("h4",{className:"font-semibold text-foreground mb-3 flex items-center gap-2",children:[i.jsx(st,{className:"w-4 h-4 text-signal"}),n("portfolio.results")]}),i.jsx("ul",{className:"space-y-3",children:e.results.map((r,a)=>i.jsxs("li",{className:"flex items-start gap-3",children:[i.jsx("div",{className:"mt-0.5 flex-shrink-0",children:r.highlight?i.jsxs(ot,{className:"bg-surface text-signal hover:bg-surface",children:[i.jsx(st,{className:"w-3 h-3 mr-1"}),n("portfolio.highlight")]}):i.jsx(It,{className:"w-4 h-4 text-success"})}),i.jsxs("div",{className:"min-w-0",children:[i.jsx("p",{className:"font-medium text-foreground text-sm",children:r.title}),r.description&&i.jsx("p",{className:"text-muted-foreground text-sm",children:r.description})]})]},a))})]}),i.jsx(Se,{}),i.jsxs("div",{children:[i.jsx("h4",{className:"font-semibold text-foreground mb-3",children:n("portfolio.activities")}),i.jsx("ul",{className:"space-y-2",children:e.activities.map((r,a)=>i.jsxs("li",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[i.jsx(It,{className:"w-4 h-4 text-muted-foreground mt-0.5 flex-shrink-0"}),i.jsx("span",{children:r})]},a))})]}),e.clientWebsiteUrl&&i.jsxs(i.Fragment,{children:[i.jsx(Se,{}),i.jsx("div",{children:i.jsxs("a",{href:e.clientWebsiteUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-sm text-signal hover:text-signal transition-colors",children:[i.jsx(Dr,{className:"w-4 h-4"}),n("portfolio.visit.website")]})})]}),i.jsx(Se,{}),i.jsx("div",{className:"flex justify-center pb-2",children:i.jsxs(ke,{onClick:t,className:"gap-2",children:[i.jsx(Qt,{className:"w-4 h-4"}),n("portfolio.cta")]})})]})},pi=({pattern:e,accent:t,uid:n})=>e==="grid"?i.jsxs("svg",{"aria-hidden":"true",className:"absolute inset-0 h-full w-full opacity-[0.18] mix-blend-screen",xmlns:"http://www.w3.org/2000/svg",children:[i.jsx("defs",{children:i.jsx("pattern",{id:`pf-grid-${n}`,width:"34",height:"34",patternUnits:"userSpaceOnUse",children:i.jsx("path",{d:"M 34 0 L 0 0 0 34",fill:"none",stroke:t,strokeWidth:"1"})})}),i.jsx("rect",{width:"100%",height:"100%",fill:`url(#pf-grid-${n})`})]}):e==="dots"?i.jsxs("svg",{"aria-hidden":"true",className:"absolute inset-0 h-full w-full opacity-[0.28] mix-blend-screen",xmlns:"http://www.w3.org/2000/svg",children:[i.jsx("defs",{children:i.jsx("pattern",{id:`pf-dots-${n}`,width:"22",height:"22",patternUnits:"userSpaceOnUse",children:i.jsx("circle",{cx:"2",cy:"2",r:"1.4",fill:t})})}),i.jsx("rect",{width:"100%",height:"100%",fill:`url(#pf-dots-${n})`})]}):e==="lines"?i.jsx("svg",{"aria-hidden":"true",className:"absolute inset-0 h-full w-full opacity-[0.35] mix-blend-screen",preserveAspectRatio:"none",viewBox:"0 0 400 220",xmlns:"http://www.w3.org/2000/svg",children:[...Array(9)].map((r,a)=>i.jsx("path",{d:`M -20 ${230-a*18} Q 140 ${170-a*22} 420 ${60-a*20}`,fill:"none",stroke:t,strokeWidth:"1.2",strokeLinecap:"round",opacity:.35+a*.06},a))}):i.jsx("svg",{"aria-hidden":"true",className:"absolute inset-0 h-full w-full opacity-[0.14] mix-blend-screen",preserveAspectRatio:"xMidYMid slice",viewBox:"0 0 400 220",xmlns:"http://www.w3.org/2000/svg",children:i.jsx("g",{fill:t,fontFamily:"Satoshi, Inter, sans-serif",fontWeight:700,children:["Ciao","Hello","Hola","你好","こんにちは","Bonjour","Hallo","Olá"].map((r,a)=>i.jsx("text",{x:a*137%420-20,y:30+a*47%210,fontSize:18+a%3*6,opacity:.6+a%4*.1,children:r},a))})}),gi=e=>{const t=e.replace("#","");if(t.length!==3&&t.length!==6)return!1;const n=t.length===3?t.split("").map(l=>l+l).join(""):t,r=parseInt(n.slice(0,2),16),a=parseInt(n.slice(2,4),16),o=parseInt(n.slice(4,6),16);return(.299*r+.587*a+.114*o)/255>.6},hi=({caseStudy:e,onOpen:t,readLabel:n})=>{const{cover:r,clientName:a,clientLogoSrc:o,industry:l,headline:s,summary:w,tags:v}=e,g=gi(r.foreground),f=g?"brightness-0 invert opacity-90":"opacity-95",d=g?"bg-white/10 ring-white/20":"bg-black/5 ring-black/10";return i.jsxs(Zt.button,{onClick:t,whileHover:{y:-4},transition:{type:"spring",stiffness:260,damping:22},className:"group relative flex w-full flex-col overflow-hidden rounded-2xl border border-border/60 bg-card text-left transition-shadow duration-300 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",type:"button","aria-label":`${n}: ${a} — ${s}`,children:[i.jsxs("div",{className:"relative aspect-[16/10] w-full overflow-hidden",style:{background:r.background},children:[i.jsx(pi,{pattern:r.pattern,accent:r.accent,uid:e.id}),i.jsx("div",{"aria-hidden":"true",className:"absolute inset-0",style:{background:`radial-gradient(circle at 80% 20%, ${r.accent}33 0%, transparent 55%)`}}),r.glyph&&i.jsx("div",{"aria-hidden":"true",className:"absolute -left-2 -bottom-8 select-none font-semibold leading-none tracking-tighter transition-transform duration-500 group-hover:-translate-y-2",style:{color:r.foreground,opacity:.14,fontSize:"clamp(140px, 22vw, 240px)"},children:r.glyph}),i.jsxs("div",{className:"absolute top-5 left-5 right-5 flex items-start justify-between gap-3",children:[i.jsxs("div",{className:`inline-flex items-center gap-2 rounded-full ${d} backdrop-blur-md px-3 py-1.5 ring-1`,children:[o&&i.jsx("img",{src:o,alt:"","aria-hidden":"true",className:`h-4 w-auto object-contain ${f}`,loading:"lazy"}),i.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.14em]",style:{color:r.foreground},children:a})]}),i.jsx("span",{className:`inline-flex h-8 w-8 items-center justify-center rounded-full ${d} ring-1 backdrop-blur-md transition-transform duration-300 group-hover:rotate-45`,style:{color:r.foreground},children:i.jsx(Rr,{className:"h-4 w-4"})})]}),i.jsxs("div",{className:"absolute bottom-5 left-5 right-5",children:[i.jsx("p",{className:"text-xs font-medium uppercase tracking-[0.18em] opacity-80",style:{color:r.accent},children:l}),i.jsx("h3",{className:"mt-1.5 text-xl md:type-headline leading-tight",style:{color:r.foreground},children:s})]})]}),i.jsxs("div",{className:"flex flex-1 flex-col gap-4 p-6",children:[i.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed line-clamp-3",children:w}),i.jsxs("div",{className:"mt-auto flex items-center justify-between gap-3 pt-2",children:[i.jsx("div",{className:"flex flex-wrap gap-1.5",children:v.map(E=>
47i.jsx(ot,{variant:"secondary",className:"text-[10px] font-medium",children:E},E))}),i.jsxs("span",{className:"whitespace-nowrap text-xs font-semibold text-primary opacity-0 transition-opacity duration-300 group-hover:opacity-100",children:[n," →"]})]})]})]})},vi=[{name:"VALIDATR",src:"/logos/validatr.png",className:"h-16 md:h-20"},{name:"VALUE",src:"/logos/value.svg",className:"h-16 md:h-20"},{name:"CareerBoost",src:"/logos/careerboost.png",className:"h-16 md:h-20"},{name:"LanguageBoost",src:"/logos/languageboost.png",className:"h-6 md:h-7"}],Fi=()=>{const{t:e,language:t}=qt(),n=yr(),r=Or(),[a,o]=c.useState(null),[l,s]=c.useState(!1),v=(t==="en"?Pr:Ir).filter(d=>d.published);c.useEffect(()=>{const d=setTimeout(()=>s(!0),100);return()=>clearTimeout(d)},[]);const g={"data-cal-link":"v3-advisory/30min","data-cal-namespace":"30min","data-cal-config":'{"layout":"month_view","useSlotsViewOnSmallScreen":"true","theme":"light"}'},f=()=>{n("/"),setTimeout(()=>{const d=document.querySelector("#contact");d&&d.scrollIntoView({behavior:"smooth"})},100)};return i.jsxs(i.Fragment,{children:[i.jsx(xr,{title:t==="en"?"Portfolio — Websites, MVPs and Startup Programmes | V3 Advisory":"Portfolio — Siti, MVP e percorsi startup | V3 Advisory",description:t==="en"?"V3 Advisory case studies: CareerBoost, LanguageBoost, mywanderlust.ai, VALIDATR and VALUE. Websites, platform MVPs and Startup Studio programmes with real outcomes.":"Case study di V3 Advisory: CareerBoost, LanguageBoost, mywanderlust.ai, VALIDATR e VALUE. Siti, MVP di piattaforma e percorsi Startup Studio con risultati reali.",canonicalUrl:"https://v3-advisory.com/portfolio",keywords:t==="en"?"V3 Advisory portfolio, business website case study, platform MVP development, startup studio Italy, digital projects for SMEs":"portfolio V3 Advisory, case study sito web aziendale, sviluppo MVP piattaforma, startup studio Italia, progetti digitali PMI",language:t}),i.jsx(Sr,{}),i.jsxs("main",{id:"main-content",className:"min-h-screen bg-background",children:[i.jsx(Nr,{tint:"cedar",title:e("portfolio.title"),subtitle:e("portfolio.subtitle"),variant:"light"}),i.jsx(Ge,{tone:"default",spacing:"dense","aria-labelledby":"clients-heading",children:i.jsx(Ot,{children:i.jsxs("div",{className:"text-center",children:[i.jsx("h2",{id:"clients-heading",className:"type-jumbo text-foreground mb-3",children:t==="en"?"Brands that trusted us":"I Nostri Clienti"}),i.jsx("p",{className:"type-body text-muted-foreground mb-10 mx-auto max-w-2xl text-center text-balance",children:t==="en"?"Some of the brands that trusted us":"Alcuni dei brand che ci hanno dato fiducia."}),i.jsx("ul",{className:"flex flex-wrap items-center justify-center gap-x-14 gap-y-10 md:gap-x-20 list-none p-0 m-0",children:vi.map(d=>i.jsx("li",{className:"flex items-center",children:i.jsx("img",{src:d.src,alt:d.name,loading:"lazy",decoding:"async",className:`${d.className} w-auto object-contain grayscale opacity-60 hover:grayscale-0 hover:opacity-100 transition-all duration-300`})},d.name))})]})})}),i.jsx(Ge,{tone:"default","aria-label":t==="en"?"Case studies":"Case study",children:v.length===0?i.jsxs("div",{className:"text-center py-16",children:[i.jsx("div",{className:"w-16 h-16 bg-muted rounded-full flex items-center justify-center mx-auto mb-4",children:i.jsx(st,{className:"w-8 h-8 text-muted-foreground"})}),i.jsx("h3",{className:"text-xl font-medium text-foreground mb-2",children:e("portfolio.empty.title")}),i.jsx("p",{className:"text-muted-foreground mb-6 max-w-md mx-auto",children:e("portfolio.empty.description")}),i.jsx(ke,{onClick:f,children:e("portfolio.empty.cta")})]}):i.jsx(Zt.div,{className:"grid grid-cols-1 md:grid-cols-2 gap-6 md:gap-8",initial:"hidden",animate:l?"visible":"hidden",variants:{hidden:{},visible:{transition:{staggerChildren:.1}}},children:v.map(d=>i.jsx(Tr,{children:i.jsx(hi,{caseStudy:d,onOpen:()=>o(d),readLabel:e("portfolio.read.case")})},d.id))})}),i.jsx(Ge,{tone:"dark",spacing:"loose",children:i.jsx(Ot,{direction:"up",children:i.jsxs("div",{className:"text-center max-w-4xl mx-auto",children:[i.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 bg-signal-soft/10 rounded-full mb-6",children:i.jsx(jr,{className:"w-8 h-8 text-signal-soft"})}),i.jsx("h2",{className:"type-jumbo mb-4",children:e("portfolio.cta.title")}
47),i.jsx("p",{className:"text-lg text-primary-foreground/80 mb-8 max-w-2xl mx-auto",children:e("portfolio.cta.subtitle")}),i.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[i.jsxs(ke,{size:"lg",variant:"onDark",onClick:f,className:"gap-2",children:[i.jsx(Qt,{className:"w-5 h-5"}),e("portfolio.cta.evaluate")]}),i.jsxs(ke,{size:"lg",variant:"outlineOnDark",className:"gap-2",...g,children:[i.jsx(Ar,{className:"w-5 h-5"}),e("portfolio.cta.call")]})]})]})})})]}),i.jsx(Er,{}),r?i.jsx(Gn,{open:!!a,onOpenChange:()=>o(null),children:i.jsxs(Yn,{className:"max-h-[75vh] px-4 pb-8",children:[i.jsx(qn,{className:"sr-only",children:a?`${a.clientName} — ${a.headline}`:"Case study"}),i.jsx(Kn,{className:"sr-only",children:(a==null?void 0:a.summary)??""}),i.jsx("div",{className:"flex justify-end pt-2 pb-1",children:i.jsxs("button",{onClick:()=>o(null),className:"text-xs text-muted-foreground underline underline-offset-2 p-2","aria-label":t==="en"?"Close":"Chiudi",children:[t==="en"?"Close":"Chiudi"," ✕"]})}),i.jsx("div",{className:"overflow-y-auto flex-1 -mx-4 px-4 pb-4",children:a&&i.jsx(Yt,{caseStudy:a,onContact:()=>{o(null),f()}})})]})}):i.jsx(La,{open:!!a,onOpenChange:()=>o(null),children:i.jsxs(An,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[i.jsx(On,{className:"sr-only",children:a?`${a.clientName} — ${a.headline}`:"Case study"}),i.jsx(In,{className:"sr-only",children:(a==null?void 0:a.summary)??""}),a&&i.jsx(Yt,{caseStudy:a,onContact:()=>{o(null),f()}})]})})]})};export{Fi as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.