Files
kaiser-natron/dist/assets/RegisterPage-6Nzs_rX8.js
Dorian 7cad9d27c8 explicit smooth-scroll handlers on Navbar links
Vue Router's scrollBehavior doesn't fire when RouterLink resolves to
the current URL (logo while on /, /#bundles while already at #bundles),
so the smooth scroll never happened. Added onNavClick + onLogoClick
handlers that intercept the click when the destination is the same
route and call scrollIntoView / window.scrollTo with behavior:'smooth'
directly. Cross-route nav still goes through Vue Router's scrollBehavior
unchanged (savedPosition restore + same-route smooth + cross-route
instant).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:17:47 +01:00

1 line
4.2 KiB
JavaScript

import{B as e,C as t,G as n,M as r,S as i,ft as a,j as o,l as s,m as c,o as l,p as u,r as ee,s as d,u as f,x as p}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{r as m,s as h}from"./runtime-dom.esm-bundler-BrsyFPJA.js";import{a as g,o as _,t as v}from"./vue-router-Cyqru1db.js";import{t as y}from"./i18n-DhVF3Pwg.js";import{r as te}from"./products-BqW5PUnm.js";import{n as ne,p as b}from"./api-DlB23x7f.js";import{t as x}from"./Navbar-BZK-fooS.js";import{t as S}from"./Button-D1Rp2Xe1.js";import{t as C}from"./Footer-DX-ml2dd.js";import{t as w}from"./Input-os2-AnNh.js";var T={class:`bg-cream text-ink min-h-svh`},E={class:`mx-auto w-full max-w-md px-6 py-14 sm:px-8 sm:py-20 md:py-24`},D={class:`flex flex-col gap-3 mb-8 text-center`},O={class:`eyebrow`},k={class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},A={class:`text-[14px] text-muted`},j={class:`grid gap-5 md:grid-cols-2`},M={class:`inline-flex items-center gap-3 cursor-pointer select-none`},N={class:`text-sm text-ink`},P={key:0,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},F={class:`mt-8 text-center text-[14px] text-muted`},I={__name:`RegisterPage`,setup(I){let{t:L}=y(),R=b(),re=g(),z=_(),B=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`}],V=e(``),H=e(``),U=e(``),W=e(``),G=e(``),K=e(!1),q=e(!1),J=e(``),Y=l(()=>W.value===G.value),X=l(()=>!U.value||W.value.length<8||!Y.value);async function ie(){J.value=``,q.value=!0;try{await ne({email:U.value,password:W.value,firstName:V.value,lastName:H.value,acceptsMarketing:K.value});let e=String(re.query.next||`/`);z.push(e)}catch(e){J.value=e?.message||L(`checkout.error.generic`)}finally{q.value=!1}}let Z=e(null),Q=null;function $(){let e=Z.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return i(()=>{if($(),typeof ResizeObserver<`u`&&Z.value){let e=Z.value.$el||Z.value;Q=new ResizeObserver($),Q.observe(e)}window.addEventListener(`resize`,$)}),p(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,i)=>(t(),f(ee,null,[c(x,{ref_key:`navRef`,ref:Z,variant:`cream`,layout:`standard`,items:B,"cart-count":n(R).count,products:n(te)},null,8,[`cart-count`,`products`]),d(`main`,T,[d(`div`,E,[d(`header`,D,[d(`p`,O,a(n(L)(`auth.register.eyebrow`)),1),d(`h1`,k,a(n(L)(`auth.register.title`)),1),d(`p`,A,a(n(L)(`auth.register.sub`)),1)]),d(`form`,{class:`flex flex-col gap-5 rounded-md border border-line bg-paper p-6 md:p-8`,novalidate:``,onSubmit:h(ie,[`prevent`])},[d(`div`,j,[c(w,{modelValue:V.value,"onUpdate:modelValue":i[0]||=e=>V.value=e,label:n(L)(`checkout.field.firstName`)},null,8,[`modelValue`,`label`]),c(w,{modelValue:H.value,"onUpdate:modelValue":i[1]||=e=>H.value=e,label:n(L)(`checkout.field.lastName`)},null,8,[`modelValue`,`label`])]),c(w,{modelValue:U.value,"onUpdate:modelValue":i[2]||=e=>U.value=e,label:n(L)(`checkout.field.email`),type:`email`,required:``,placeholder:n(L)(`checkout.placeholder.email`)},null,8,[`modelValue`,`label`,`placeholder`]),c(w,{modelValue:W.value,"onUpdate:modelValue":i[3]||=e=>W.value=e,label:n(L)(`checkout.field.password`),type:`password`,required:``,hint:n(L)(`checkout.hint.password`)},null,8,[`modelValue`,`label`,`hint`]),c(w,{modelValue:G.value,"onUpdate:modelValue":i[4]||=e=>G.value=e,label:n(L)(`checkout.field.passwordConfirm`),type:`password`,required:``,error:G.value&&!Y.value?n(L)(`checkout.error.passwordMismatch`):``},null,8,[`modelValue`,`label`,`error`]),d(`label`,M,[r(d(`input`,{"onUpdate:modelValue":i[5]||=e=>K.value=e,type:`checkbox`,class:`w-5 h-5 rounded-xs border border-line accent-brand`},null,512),[[m,K.value]]),d(`span`,N,a(n(L)(`checkout.field.marketing`)),1)]),J.value?(t(),f(`p`,P,a(J.value),1)):s(``,!0),c(S,{type:`submit`,variant:`primary`,size:`lg`,block:``,loading:q.value,disabled:X.value},{default:o(()=>[u(a(n(L)(`auth.register.cta`)),1)]),_:1},8,[`loading`,`disabled`])],32),d(`p`,F,[u(a(n(L)(`auth.register.haveAccount`))+` `,1),c(n(v),{to:`/login`,class:`text-brand hover:underline`},{default:o(()=>[u(a(n(L)(`auth.register.cta.signIn`)),1)]),_:1})])])]),c(C)],64))}};export{I as default};