PageSourceSearch

https://yoron.lovable.app/assets/le._kantoorSlug.familiehypotheek-BRMjkKne.js

js yoron.lovable.app collected 2026-10-03 03:50:17 UTC 24,161 bytes, 5 lines download raw bytes

1import{ds as V,j as n,C as v,g as j,B as x,w as F,z as W,cN as _,Q as H,cO as U,cP as G,W as K,o as L,a3 as Z,cQ as J,$ as M,aV as A,dt as Q,N as X,s as Y,P as q,L as ee,b as ne}from"./index-tp3ZBVoO.js";import{b}from"./recharts-D0niEN4L.js";import{g as te}from"./kantoor-data-CnuNrH8Z.js";import{P as ae}from"./progress-CnbOAX2o.js";import{S as ie}from"./ScanHeader-C3S0AW-H.js";import{S as O,D as se}from"./ScanDisclaimer-BAmGalge.js";import{S as re,a as oe}from"./ScanToelichting-D6BIym3o.js";import{F as C}from"./file-text-Dpvw2thg.js";import{R as le}from"./rotate-ccw-DStGrL0z.js";import{C as de}from"./chevron-left-BnpAtFle.js";import{S as ce}from"./ScanShellBar-D6w6k1fY.js";import"./info-NHuVvVc9.js";import"./scans-data-ClZe68Y4.js";import"./rubrieken-B46Q-G-x.js";const P=[{id:"rol",sectie:"Rolverdeling",title:"Wie leent aan wie?",intro:"De relatie tussen lener en uitlener bepaalt welke regels gelden.",waarom:"Tussen familieleden gelden niet automatisch dezelfde regels als bij een bank. De rolverdeling bepaalt of de lening als eigenwoningschuld kwalificeert, hoe de rente wordt beoordeeld en of er schenkbelasting speelt.",options:[{value:"ouder-kind",label:"Ouder leent aan kind"},{value:"kind-ouder",label:"Kind leent aan ouder"},{value:"familielid",label:"Broer, zus of ander familielid"},{value:"anders-weet-niet",label:"Anders / weet ik niet"}]},{id:"rente",sectie:"Rente",title:"Welke rente is afgesproken?",intro:"De rente moet marktconform zijn om problemen met de Belastingdienst te voorkomen.",waarom:"Als de rente (bijna) nul is of lager dan marktconform, kan de fiscus het verschil zien als een schenking. Een te hoge rente kan juist een onredelijk hoge last opleggen. Marktconform betekent: vergelijkbaar met hypothecaire leningen bij financiele instellingen.",options:[{value:"marktconform",label:"Marktconforme rente afgesproken"},{value:"lager",label:"Lager dan marktconform / 0%"},{value:"hoger",label:"Hoger dan marktconform"},{value:"geen",label:"Nog geen rente afgesproken"}]},{id:"vastlegging",sectie:"Vastlegging",title:"Hoe is de lening vastgelegd?",intro:"Een schriftelijke afspraak is nodig voor de eigenwoningschuld-voorwaarden.",waarom:"Voor hypotheekrenteaftrek moet de schuld voldoen aan de voorwaarden voor eigenwoningschuld: schriftelijk, rente en aflossing afgesproken, en binnen 30 jaar annuitair of lineair aflossen. Een onderhandse afspraak kan voldoen, maar een notariële akte geeft meer zekerheid.",options:[{value:"notarieel",label:"Notariële akte / geldig contract"},{value:"onderhands",label:"Onderhands op papier"},{value:"mondeling",label:"Alleen mondeling"},{value:"geen",label:"Geen afspraak / weet ik niet"}]},{id:"schenking",sectie:"Schenking",title:"Is er sprake van een (gedeeltelijke) schenking?",intro:"Een kwijtschelding of rente-korting kan de fiscus zien als schenking.",waarom:"Als een deel van de lening wordt kwijtgescholden, de rente onder marktconform ligt of de lening nooit wordt teruggevraagd, kan de fiscus dit als schenking beschouwen. Dan gelden de jaarlijkse schenkvrijstellingen en eventueel een eenmalige verhoogde vrijstelling.",options:[{value:"jaarlijks",label:"Ja, jaarlijks vrijgesteld bedrag"},{value:"eenmalig",label:"Ja, eenmalig verhoogd bedrag (jubelton)"},{value:"nee",label:"Nee, geen schenking"},{value:"anders",label:"Weet ik niet / andere afspraak"}]},{id:"overlijden",sectie:"Overlijden",title:"Wat gebeurt er als de uitlener overlijdt?",intro:"De vordering kan dan in de nalatenschap vallen.",waarom:"Als de uitlener overlijdt, wordt de uitstaande lening onderdeel van de erfenis. De erfgenamen kunnen de lening opeisen. Zonder afspraken kan de lener plotseling moeten aflossen of maandlasten betalen aan meerdere erfgenamen.",options:[{value:"geregeld",label:"Geregeld via testament / verzekering / aflossing"},{value:"niet",label:"Niet specifiek geregeld"},{value:"weet-niet",label:"Weet ik niet"}]},{id:"advies",sectie:"Advies",title:"Is er onafhankelijk advies ingewonnen?",intro:"Een familiehypotheek raakt fiscale, juridische en hypothecair recht.",waarom:"Familiehypotheken kruisen fiscale, notariële en hypotheekregels. Zeker bij grotere bedragen, schenkingen of meerdere partijen is het verstandig om advies van een onafhankelijke Wft-adviseur en notaris te vragen. Deze scan geeft informatie, geen advies.",options:[{value:"onafhankelijk",label:"Ja, onafhankelijk adviseur"},{value:"bank",label:"Ja, alleen de bank"},{value:"nee",label:"Nee, nog niet"}
1,{value:"niet-nodig",label:"Ik zie geen noodzaak"}]}];function E(){return P}function ge(t){return new Intl.NumberFormat("nl-NL",{style:"currency",currency:"EUR",maximumFractionDigits:0}).format(t)}function me(){const t=V.schenking?.jaarlijksVrijgesteldKind;return t!=null?ge(t):"de jaarlijkse schenkvrijstelling"}function he(t){switch(t.rol){case"ouder-kind":return"U leent als ouder geld aan uw kind. Dat kan fiscaal voordelig zijn, maar alleen als de afspraken scherp op papier staan.";case"kind-ouder":return"U leent als kind geld aan een ouder. De fiscus kijkt hier extra kritisch naar: de rente moet marktconform zijn en de afspraken moeten schriftelijk vastliggen.";case"familielid":return"Een lening tussen familieleden is flexibel, maar de regels voor eigenwoningschuld en schenkbelasting gelden net zo goed.";default:return"Een familiehypotheek is geen gewone lening. De relatie tussen lener en uitlener, de rente en de vastlegging bepalen of de fiscale voordelen gelden."}}function ke(t){const i=[];return t.rol==="anders-weet-niet"&&i.push({id:"rol",titel:"Rolverdeling eerst helder maken",tekst:"De precieze relatie tussen lener en uitlener bepaalt welke regels gelden. Pas daarna kunt u beoordelen of de lening als eigenwoningschuld kwalificeert, hoe de rente wordt getoetst en of er schenkbelasting speelt."}),t.rente==="lager"&&i.push({id:"rente-lager",titel:"Rente onder marktconform kan als schenking gelden",tekst:"Als de rente lager is dan marktconform (vergelijkbaar met hypothecaire leningen bij financiele instellingen), kan het verschil door de fiscus worden aangemerkt als schenking. Leg de reden schriftelijk vast, bijvoorbeeld een gunstige familiekorting, en check of de jaarlijkse vrijstelling volstaat."}),t.rente==="hoger"&&i.push({id:"rente-hoger",titel:"Rente hoger dan marktconform",tekst:"Een bovenmarktconforme rente kan een onredelijk hoge last opleggen voor de lener. Bespreek of de rente aansluit bij de markt en of de afspraak houdbaar is op de langere termijn."}),t.rente==="geen"&&i.push({id:"rente-geen",titel:"Rente eerst vastleggen",tekst:"Zonder afgesproken rente is er geen sprake van een lening in fiscale zin. De fiscus kan het bedrag dan als schenking zien. Leg een marktconforme rente schriftelijk vast."}),t.vastlegging==="onderhands"&&i.push({id:"vastlegging-onderhands",titel:"Onderhandse afspraak: check eigenwoningschuld-voorwaarden",tekst:"Een onderhandse lening kan voldoen aan de voorwaarden voor eigenwoningschuld, mits schriftelijk, rente en aflossing zijn afgesproken, en binnen 30 jaar annuitair of lineair wordt afgelost. De rente moet echt worden betaald."}),t.vastlegging==="mondeling"&&i.push({id:"vastlegging-mondeling",titel:"Mondelinge afspraak telt niet als bewijs",tekst:"Voor hypotheekrenteaftrek en andere fiscale voordelen is een schriftelijke leningsovereenkomst nodig. Zet de afspraken op papier of laat een notariële akte opmaken."}),t.vastlegging==="geen"&&i.push({id:"vastlegging-geen",titel:"Geen bewijs van afspraken",tekst:"Zonder schriftelijke vastlegging kan de fiscus de lening als schenking beschouwen. Dat heeft gevolgen voor schenkbelasting, renteaftrek en de terugbetalingsverplichting. Maak een bewuste keuze en leg deze vast."}),t.schenking==="jaarlijks"&&i.push({id:"schenking-jaarlijks",titel:"Jaarlijkse schenking vastleggen",tekst:`Als een deel van de lening of rente-korting als schenking wordt gezien, gebruik dan de jaarlijkse schenkvrijstelling (${me()} voor ouder-kind). Schenkingen moeten wel worden vastgelegd en indien vereist aangifte gedaan worden.`}),t.schenking==="eenmalig"&&i.push({id:"schenking-eenmalig",titel:"Eenmalige verhoogde vrijstelling (jubelton) per 2024 afgeschaft",tekst:"De extra verhoogde vrijstelling voor schenkingen aan kinderen voor de eigen woning, ook wel jubelton genoemd, is per 2024 afgeschaft. Tot en met 2023 gold deze nog. Controleer of de schenking in het juiste jaar is gedaan en valt onder de regels die toen golden."}),t.schenking==="anders"&&i.push({id:"schenking-anders",titel:"Volgorde en koppeling met eigenwoningschuld",tekst:"Bij onduidelijke of gemengde afspraken (lening + schenking) is de volgorde belangrijk. Een schenking voor de eigen woning kan gevolgen hebben voor de eigenwoningschuld en de renteaftrek. Laat dit toetsen."}),t.overlijden==="niet"&&i.push({id:"overlijden-niet",titel:"Overlijden uitlener: vordering valt in nalatenschap",tekst:"Als de uitlener overlijdt, wordt de uitstaande lening onderdeel van de erfenis. De erfgenamen kunnen de lening opeisen, en de lener kan te maken krijgen met maandlasten aan meerdere partijen. Regel dit via testament, verzekering of aflossingsregeling."}),t.overlijden==="weet-niet"&&i.push({id:"overlijden-weet-niet",titel:"Onzekerheid bij overlijden",tekst:"Zonder duidelijke afspraken ontstaat er snel onenighei
1d in de familie. Leg vast wat er gebeurt als de uitlener overlijdt: aflossen, overname door erfgenamen, of verzekerd uitkeren."}),(t.advies==="nee"||t.advies==="niet-nodig")&&i.push({id:"advies",titel:"Onafhankelijk advies aan te raden",tekst:"Deze scan geeft informatie, geen fiscaal of juridisch advies. Bij een familiehypotheek is het verstandig om een onafhankelijke Wft-adviseur en notaris te raadplegen, zeker bij grotere bedragen of meerdere betrokkenen."}),i}function B(t){const i=ke(t),o=i.length===0||i.length===1&&i[0].id==="advies"&&t.advies==="onafhankelijk",l=t.schenking==="jaarlijks"||t.schenking==="eenmalig"||t.schenking==="anders"||t.overlijden==="niet"||t.overlijden==="weet-niet";return{intro:he(t),blokken:i,allesOpOrde:o,toonErfrechtCrossSell:l}}function $(t,i){if(i==null)return"-";if(Array.isArray(i))return i.length===0?"-":i.join(", ");const o=P.find(l=>l.id===t);return o?o.options.find(l=>l.value===i)?.label??i:i}function ue({question:t,answers:i,onSelect:o,onNext:l,canGoNext:e,kantoorNaam:r,stap:c,totaal:s,navigatie:a}){const d=i[t.id];return b.useEffect(()=>{const g=m=>{const h=m.target;if(h&&["INPUT","TEXTAREA","SELECT"].includes(h.tagName))return;if(m.key==="Enter"&&e&&l){m.preventDefault(),l();return}const f=Number(m.key);if(!Number.isInteger(f)||f<1)return;const p=t.options[f-1];p&&(m.preventDefault(),o(p.value))};return window.addEventListener("keydown",g),()=>window.removeEventListener("keydown",g)},[t,o,l,e]),n.jsx(re,{navigatie:a,toelichting:n.jsx(oe,{waarom:t.waarom}),aiHulp:n.jsx(W,{resetKey:t.id,onderwerp:`Familiehypotheek Scan - ${t.sectie}: ${t.title}`,kantoorNaam:r??"uw adviseur",systeemExtra:`Je bent een uitleg-assistent bij de Familiehypotheek Scan. Geef UITSLUITEND uitleg en achtergrond bij de huidige vraag en algemene financiële begrippen (eigenwoningschuld, marktconforme rente, schenkvrijstelling, jubelton, notariële akte, testament). Geef NOOIT advies of de schijn van advies (geen aanbevelingen wat te kiezen). Verwijs voor persoonlijk advies altijd door naar een menselijke Wft-adviseur van ${r??"het kantoor"}. Houd antwoorden kort (max ~120 woorden) en in helder Nederlands. Gebruik nooit lange streepjes; gebruik in plaats daarvan '-' of een nieuwe zin.
2
3Huidige vraag: "${t.title}"${t.intro?`
4Intro: ${t.intro}`:""}${t.waarom?`
5Toelichting: ${t.waarom}`:""}`,context:{sectie:t.sectie,vraag:t.title},suggesties:["Waarom is dit belangrijk?","Wat houdt deze vraag precies in?","Welke begrippen moet ik kennen?"],intro:"Vragen over deze vraag? Ik geef u graag uitleg. Voor persoonlijk advies verwijs ik u door naar uw adviseur."}),children:n.jsx(v,{className:"border-border/70 shadow-sm",children:n.jsxs(j,{className:"p-6 sm:p-8",children:[n.jsxs("div",{className:"text-[11px] uppercase tracking-wider text-muted-foreground font-medium",children:[t.sectie," · vraag ",c," van ",s]}),n.jsx("h2",{className:"mt-1 text-xl sm:text-2xl font-semibold text-foreground tracking-tight",children:t.title}),t.intro&&n.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:t.intro}),n.jsx("div",{className:"mt-6 grid gap-2 sm:grid-cols-2",children:t.options.map((g,m)=>{const h=d===g.value;return n.jsxs(x,{type:"button",variant:h?"default":"outline",size:"lg",onClick:()=>o(g.value),className:F("justify-start h-auto py-3 px-4 text-left whitespace-normal gap-3 transition-all hover:shadow-md active:scale-[0.98]",h&&"ring-2 ring-primary/40 shadow-md"),children:[n.jsx("span",{className:F("hidden lg:inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-[11px] font-semibold",h?"bg-primary-foreground/20 text-primary-foreground":"bg-muted text-muted-foreground"),"aria-hidden":!0,children:m+1}),n.jsx("span",{className:"flex-1",children:g.label})]},g.value)})}),n.jsx(O,{className:"mt-8 pt-4 border-t border-border/60"})]})})})}const R="Familiehypotheek - overzicht",I="familiehypotheek";async function fe(t,i,o){const l=await _(i?.logo_url),e=new H({unit:"pt",format:"a4"}),r=e.internal.pageSize.getWidth(),c=e.internal.pageSize.getHeight(),s=48;let a=s;const{intro:d,blokken:g,allesOpOrde:m}=B(t);e.setFillColor(76,145,255),e.rect(0,0,r,8,"F");const h=U(e,l);h&&(a=Math.max(a,36+h+24)),e.setFont("helvetica","bold"),e.setFontSize(20),e.setTextColor(20,30,50),a+=16,e.text(R,s,a),e.setFont("helvetica","normal"),e.setFontSize(10),e.setTextColor(120,130,145),a+=18,e.text(`Gegenereerd op ${new Date().toLocaleDateString("nl-NL",{day:"numeric",month:"long",year:"numeric"})}`,s,a),i?.naam&&(a+=14,e.setFont("helvetica","bold"),e.setFontSize(11),e.setTextColor(40,50,65),e.text(`Aangeboden door ${i.naam}`,s,a)),o?.naam&&(a+=14,e.setFont("helvetica","normal"),e.setFontSize(10),e.setTextColor(80,90,105),e.text(`Voor: ${o.naam}`,s,a)),a+=28,e.setDrawColor(232,236,241),e.setFillColor(250,251,252);const f=e.splitTextToSize(d,r-s*2-24),p=22+f.length*10+10;if(e.roundedRect(s,a,r-s*2,p,8,8,"FD"),e.setFont("helvetica","bold"),e.setFontSize(9),e.setTextColor(80,90,105),e.text("Samenvatting",s+12,a+16),e.setFont("helvetica","normal"),e.setFontSize(9),e.setTextColor(60,70,85),e.text(f,s+12,a+30),a+=p+16,g.length>0){a>
5c-120&&(e.addPage(),a=s),e.setFont("helvetica","bold"),e.setFontSize(13),e.setTextColor(20,30,50),e.text("Aandachtspunten",s,a),a+=6,e.setFont("helvetica","normal"),e.setFontSize(10),e.setTextColor(50,60,75);for(const k of g){a>c-80&&(e.addPage(),a=s),e.setFont("helvetica","bold");const N=e.splitTextToSize(k.titel,r-s*2);e.text(N,s,a+12),a+=12*N.length,e.setFont("helvetica","normal");const S=e.splitTextToSize(k.tekst,r-s*2);e.text(S,s,a+12),a+=12*S.length+8}}if(m){a>c-80&&(e.addPage(),a=s),e.setFont("helvetica","normal"),e.setFontSize(10),e.setTextColor(50,60,75);const k=e.splitTextToSize("Op basis van uw antwoorden lijken de belangrijkste punten in kaart te zijn gebracht. Bewaar de afspraken schriftelijk en laat ze periodiek checken.",r-s*2);e.text(k,s,a+12),a+=12*k.length+8}a>c-80&&(e.addPage(),a=s),a+=16,e.setFont("helvetica","bold"),e.setFontSize(13),e.setTextColor(20,30,50),e.text("Uw antwoorden",s,a),a+=6;for(const k of E()){a>c-80&&(e.addPage(),a=s),a+=14,e.setFont("helvetica","bold"),e.setFontSize(10),e.setTextColor(40,50,65);const N=e.splitTextToSize(k.title,r-s*2);e.text(N,s,a),a+=12*N.length,e.setFont("helvetica","normal"),e.setTextColor(90,100,115
5);const S=$(k.id,t[k.id]),D=e.splitTextToSize(`Antwoord: ${S}`,r-s*2);e.text(D,s,a+2),a+=10*D.length}a+=24,a>c-90&&(e.addPage(),a=s),e.setDrawColor(232,236,241),e.setFillColor(248,249,251);const z=e.splitTextToSize(se,r-s*2-24),u=22+z.length*10+10;e.roundedRect(s,a,r-s*2,u,6,6,"FD"),e.setFont("helvetica","bold"),e.setFontSize(9),e.setTextColor(80,90,105),e.text("Disclaimer",s+12,a+16),e.setFont("helvetica","normal"),e.setFontSize(8),e.setTextColor(110,120,135),e.text(z,s+12,a+30),a+=u+16,a>c-60&&(e.addPage(),a=s),e.setFont("helvetica","bold"),e.setFontSize(9),e.setTextColor(80,90,105),e.text("Audit",s,a),a+=12,e.setFont("helvetica","normal"),e.setFontSize(8),e.setTextColor(110,120,135);const w=new Date().toLocaleString("nl-NL",{timeZone:"Europe/Amsterdam"});e.text(`Tijdstip: ${w}`,s,a),a+=10,e.text("IP-adres: client-side gegenereerd",s,a),G(e,i),await K(e,i,R,`${I}.pdf`,{klantNaam:o?.naam,klantEmail:o?.email,klantTelefoon:o?.telefoon,actie:o?.actie,voorkeurDag:o?.voorkeurDag,voorkeurTijdvak:o?.voorkeurTijdvak,opmerking:o?.opmerking}),e.save(`${I}.pdf`)}function pe({answers:t,onRestart:i,kantoor:o}){const{intro:l,blokken:e,allesOpOrde:r,toonErfrechtCrossSell:c}=B(t),s=E(),a=async d=>{await fe(t,o??void 0,d)};return n.jsxs("div",{className:"space-y-6",children:[n.jsx(v,{className:"border-border/70 shadow-sm overflow-hidden",children:n.jsx(j,{className:"p-6 sm:p-8",children:n.jsxs("div",{className:"flex items-start gap-4",children:[n.jsx("div",{className:F("h-12 w-12 rounded-xl flex items-center justify-center shrink-0",r?"bg-emerald-100 text-emerald-600":"bg-primary/10 text-primary"),children:n.jsx(C,{className:"h-6 w-6"})}),n.jsxs("div",{children:[n.jsx("h2",{className:"text-2xl font-semibold tracking-tight",children:"Uw familiehypotheek op een rij"}),n.jsx("p",{className:"mt-2 text-sm text-muted-foreground leading-relaxed",children:l})]})]})})}),r?n.jsx(v,{className:"border-border/70 shadow-sm",children:n.jsx(j,{className:"p-6 sm:p-8",children:n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx(L,{className:"h-5 w-5 shrink-0 mt-0.5 text-emerald-600"}),n.jsx("p",{className:"text-sm text-foreground/90 leading-relaxed",children:"Op basis van uw antwoorden lijken de belangrijkste punten in kaart te zijn gebracht. Bewaar de afspraken schriftelijk en laat ze periodiek checken, bijvoorbeeld bij een wijziging in gezinssamenstelling of wetgeving."})]})})}):n.jsx(v,{className:"border-border/70 shadow-sm",children:n.jsxs(j,{className:"p-6 sm:p-8",children:[n.jsxs("div",{className:"flex items-start gap-3 mb-4",children:[n.jsx("div",{className:"h-10 w-10 rounded-md bg-primary/10 text-primary flex items-center justify-center shrink-0",children:n.jsx(C,{className:"h-5 w-5"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-lg font-semibold tracking-tight",children:"Aandachtspunten"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"De belangrijkste punten op basis van uw antwoorden."})]})]}),n.jsx("ul",{className:"space-y-4",children:e.map(d=>n.jsxs("li",{className:"flex gap-3 text-sm",children:[n.jsx(L,{className:"h-5 w-5 shrink-0 mt-0.5 text-primary"}),n.jsxs("div",{children:[n.jsx("p",{className:"font-semibold text-foreground",children:d.titel}),n.jsx("p",{className:"mt-0.5 text-foreground/85 leading-relaxed",children:d.tekst})]})]},d.id))}),o&&n.jsxs("div",{className:"mt-6 rounded-md border border-primary/20 bg-primary/5 p-4 text-sm text-foreground/90 leading-relaxed",children:["Wilt u dit samen doorlopen?",n.jsx("br",{className:"hidden sm:block"}),n.jsxs("span",{className:"text-muted-foreground",children:[o.naam," helpt u graag om de familiehypotheek op papier en fiscaal juist neer te zetten."]})]})]})}),c&&n.jsx(v,{className:"border-border/70 shadow-sm",children:n.jsx(j,{className:"p-6 sm:p-8",children:n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx("div",{className:"h-10 w-10 rounded-md bg-primary/10 text-primary flex items-center justify-center shrink-0",children:n.jsx(C,{className:"h-5 w-5"})}),n.jsxs("div",{children:[n.jsx("h3",{className:"text-lg font-semibold tracking-tight",children:"Ook interessant: erfrecht & vermogen"}),n.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:"Omdat uw antwoorden schenkingen of overlijden raken, is het verstandig om ook de aandachtspunten voor erfrecht en vermogen door te lopen. Zo weet u zeker dat de familieafspraken op de lange termijn houdbaar zijn."})]})]})})}),n.jsx(v,{className:"border-border/70 shadow-sm",children:n.jsxs(j,{className:"p-6 sm:p-8",children:[n.jsx("h3",{className:"text-lg font-semibold tracking-tight",children:"Uw antwoorden"}),n.jsx("dl",{className:"mt-4 divide-y divide-border",children:s.map(d=>n.jsxs("div",{className:"py-3 grid grid-cols-1 sm:grid-cols-2 gap-1",children:[n.jsx("dt",{className:"text-sm text-muted-foreground",children:d.title}),n.jsx("dd",{className:"text-sm font-medium text-foreground",children:$(d.id,t[d.id])})]},d.id))})]})}),n.jsx(v,{className:"border-border/70 shadow-sm",children:n.jsxs(j,{className:"p-6 sm:p-8 space-y-5",children:[n.jsx(Z,{kantoor:o,onVerstuur:a,documentWoord:"rapport"}),n.jsx("div",{children:n.jsxs(x,{variant:"ghost",size:"sm",onClick:i,children:[n.jsx(le,{className:"h-3.5 w-3.5"}),"Scan opnieuw doen"]})})]})}),n.jsx(O,{variant:"boxed"})]})}const y=1,T=2;function ve({kantoor:t}){const[i,o]=b.useState(y),[l,e]=b.useState({}),[r,c]=b.useState(0),s=E(),a=s.length,d=s[r];J(i===y?r:i);const g=(u,w)=>{e(k=>({...k,[u]:w}))},m=u=>{d&&(g(d.id,u),r<a-1?c(w=>w+1):o(T))},h=()=>{r>0&&c(u=>u-1)},f=()=>{r<a-1?c(u=>u+1):o(T)},p=()=>{e({}),c(0),o(y)},z=t?.naam??"ons kantoor";return n.jsxs("div",{className:"min-h-screen bg-gradient-to-b from-background to-secondary/40",children:[n.jsx(ie,{kantoor:t,titel:"Familiehypotheek-scan",icoon:n.jsx(M,{className:"h-5 w-5"})}),n.jsx("main",{className:"py-6 px-4 sm:px-6",children:n.jsxs("div",{className:F("mx-auto",i===y?"max-w-6xl":"max-w-3xl"),children:[i===y&&d&&n.jsxs("div",{children:[n.jsxs("div",{className:"mb-4 max-w-3xl",children:[n.jsxs("div",{className:"flex items-center justify-between text-sm text-muted-foreground mb-1",children:[n.jsxs("span",{children:["Vraag ",r+1," van ",a]}),n.jsxs("span",{children:[Math.round((r+1)/a*100),"%"]})]}),n.jsx(ae,{value:(r+1)/a*100,className:"h-2"})]}),n.jsx(ue,{question:d,answers:l,onSelect:m,onNext:f,canGoNext:l[d.id]!=null,kantoorNaam:z,stap:r+1,totaal:a,navigatie:n.jsxs("div",{className:"mt-6 flex items-center justify-between",children:[r>0?n.jsxs(x,{variant:"ghost",size:"sm",onClick:h,children:[n.jsx(de,{className:"h-4 w-4 mr-1"})," Vorige"]}):n.jsx("span",{}),l[d.id]!=null&&r<a-1&&n.jsxs(x,{size:"sm",onClick:f,children:["Volgende ",n.jsx(A,{className:"h-4 w-4 ml-1"})]}),l[d.id]!=null&&r===a-1&&n.jsxs(x,{size:"sm",onClick:()=>o(T),children:["Uitslag ",n.jsx(A,{className:"h-4 w-4 ml-1"})]})]})})]}),i===T&&n.jsx("div",{className:"max-w-3xl mx-auto",children:n.jsx(pe,{answers:l,onRestart:p,kantoor:t})})]})})]})}function Ae(){const{kantoorSlug:t}=Q.useParams(),[i,o]=b.useState({status:"loading"});if(b.useEffect(()=>{let e=!1;return(async()=>{o({status:"loading"});const r=await te(t);if(e)return;if(!r){X(),o({status:"niet-gevonden"});return}const{data:c}=await Y.from("kantoren_publiek").select("email, telefoon, contactpersoon").eq("id",r.id).maybeSingle();e||(q(r),o({status:"ok",kantoor:{id:r.id,naam:r.naam,logo_url:r.logo_url,primaire_kleur:r.primaire_kleur,website:r.website,email:c?.email??null,telefoon:c?.telefoon??null,contactpersoon:c?.contactpersoon??null}}))})(),()=>{e=!0}},[t]),i.status==="loading")return n.jsx("div",{className:"min-h-screen flex items-center justify-center",children:n.jsx(ee,{className:"h-6 w-6 animate-spin text-muted-foreground"})});if(i.status==="niet-gevonden")return n.jsx("div",{className:"min-h-screen bg-gradient-to-b from-background to-muted/40",children:n.jsxs("section",{className:"mx-auto max-w-2xl px-6 py-24",children:[n.jsx("h1",{className:"text-3xl font-bold tracking-tight mb-4",children:"Kantoor niet gevonden"}),n.jsxs("p",{className:"text-muted-foreground",children:["Het adres"," ",n.jsxs("code",{className:"bg-muted px-1.5 py-0.5 rounded",children:["/le/",t,"/familiehypotheek"]})," ","hoort niet bij een bekend kantoor."]}),n.jsx("div",{className:"mt-6",children:n.jsx(ne,{to:"/",children:n.jsx(x,{variant:"outline",children:"Terug naar home"})})})]})});const l=i.kantoor.primaire_kleur||void 0;return n.jsxs("div",{style:l?{"--primary":l}:void 0,children:[n.jsx(ce,{kantoorSlug:t,scanSlug:"scan-hyp-familiehypotheek"}
5),n.jsx(ve,{kantoor:i.kantoor})]})}export{Ae as component};

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.