PageSourceSearch

https://novail.ai/_nuxt/CCrgDGV_.js

js novail.ai collected 2026-10-05 15:18:36 UTC 13,597 bytes, 1 lines download raw bytes

1import{_ as L}from"./BWAerINC.js";import{d as y,j as C,g as m,k as z,h as T,L as S,c as b,o as v,b as t,m as s,K as O,x as E,s as f,f as h,e as M,i as $,C as R,w as J,l as G,G as A}from"./CuIFqrYc.js";import{_ as I}from"./DU6byYqY.js";import{u as H}from"./DK29rZX7.js";import{_ as W}from"./Clxy6XWe.js";import{_ as K}from"./K7qnTi6f.js";import{_ as Q}from"./KH8S6gTx.js";import{_ as X}from"./BxrPXry9.js";import{_ as N}from"./D8fnDZZD.js";import"./CO-KzRlT.js";import"./BUWm8fth.js";import"./D4u9-Iz5.js";import"./CkLr7dzs.js";import"./R26VeGc9.js";const Y={class:"space-y-8"},Z={class:"flex items-start gap-6 flex-wrap pt-8"},ee={class:"flex flex-col gap-2"},te={class:"flex gap-3 flex-wrap"},oe={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},se={class:"flex items-end flex-wrap gap-4 md:col-span-2 pt-4"},ae={class:"flex flex-col flex-grow"},le={class:"flex flex-col"},ne={class:"flex items-end flex-wrap gap-4 md:col-span-2 pt-4"},re={class:"flex flex-col flex-grow"},ie={class:"md:col-span-2"},de={key:0,class:"text-red-600 text-sm mt-1"},ue={key:0,class:"md:col-span-2"},ce=y({__name:"Account",setup(w){const{user:c,fetchUser:d}=H(),e=C(),i=m(""),l=m(null),o=m(!1),a=m(!0),n=m(!1),r=z({name:"",lastname:"",email:""}),p=m(!1);T(async()=>{try{await P()}catch{e.add({title:"Erreur",description:"Impossible de charger le profil",color:"error"})}finally{o.value=!0,F()}});function F(){S(()=>r.name,()=>p.value=!0),S(()=>r.lastname,()=>p.value=!0),S(()=>r.email,()=>p.value=!0)}const j=()=>{var g;return(g=l.value)==null?void 0:g.click()},P=async()=>{await d(),i.value=c.value.avatar_url||"",r.name=c.value.name||"",r.lastname=c.value.lastname||"",r.email=c.value.email||"",a.value=c.value.verified},U=async g=>{var V;const u=g.target;if(!((V=u.files)!=null&&V[0]))return;const k=u.files[0];if(!["image/png","image/jpeg"].includes(k.type)){e.add({title:"Format non supporté",color:"error",description:".png et .jpeg autorisé seulement"});return}if(k.size>5*1024*1024){e.add({title:"Fichier trop lourd",color:"error",description:"Maximum 5Mo"});return}const x=new FormData;x.append("file",k);try{const _=await $fetch("/api/user/settings/avatar",{method:"PUT",body:x});i.value=_.url,e.add({title:"Image de profil mise à jour",color:"success"})}catch(_){console.error(_),e.add({title:"Erreur lors du téléchargement",color:"error",description:"Echec du téléchargement"})}},q=async()=>{try{await $fetch("/api/user/settings/avatar",{method:"DELETE",body:{...r}}),e.add({title:"Image de profile supprimée",color:"success"}),i.value=""}catch(g){console.error(g),e.add({title:"Erreur lors de la suppression de l'image de profile",description:"Échec de supression",color:"error"})}},B=()=>{e.add({title:"Fonction à venir",color:"info"})},D=async()=>{try{await $fetch("/api/user/settings/profile",{method:"PUT",body:{...r}}),await P(),p.value=!1,e.add({title:"Modifications enregistrées",color:"success"})}catch(g){console.error(g),e.add({title:"Erreur lors de l'enregistrement des informations du profile",description:"Échec de la modification de la photo",color:"error"})}};return(g,u)=>{const k=O,x=E,V=I;return v(),b("section",Y,[t("div",Z,[s(k,{src:i.value||"https://upload.wikimedia.org/wikipedia/commons/8/89/Portrait_Placeholder.png",size:"3xl"},null,8,["src"]),t("div",ee,[t("div",te,[s(x,{class:"bg-[#20A46E] font-bold rounded-lg py-2",size:"xs",onClick:j},{default:f(()=>u[3]||(u[3]=[h(" Changer l'image ")])),_:1}),s(x,{variant:"outline",color:"info",size:"xs",onClick:q},{default:f(()=>u[4]||(u[4]=[h(" Supprimer ")])),_:1})]),u[5]||(u[5]=t("p",{class:"text-xs text-neutral-500"}," Supporte les PNG, JPEG de 5 Mo maximum ",-1)),t("input",{ref_key:"fileInput",ref:l,type:"file",accept:"image/png,image/jpeg",class:"hidden",onChange:U},null,544)])]),t("div",oe,[t("div",se,[t("div",ae,[u[6]||(u[6]=t("label",{class:"text-sm font-medium text-gray-700 mb-1"},"Prénom",-1)),s(V,{modelValue:r.name,"onUpdate:modelValue":u[0]||(u[0]=_=>r.name=_),class:"w-80",size:"xl",color:"info",disabled:!o.value},null,8,["modelValue","disabled"])]),t("div",le,[u[7]||(u[7]=t("label",{class:"text-sm font-medium text-gray-700 mb-1"},"Nom de famille",-1)),s(V,{modelValue:r.lastname,"onUpdate:modelValue":u[1]||(u[1]=_=>r.lastname=_),class:"w-80",size:"xl",color:"info",disabled:!o.value},null,8,["modelValue","disabled"])])]),t("div",ne,[t("div",re,[u[8]||(u[8]=t("label",{class:"text-sm font-medium text-gray-700 mb-1"},"Email",-1)),s(V,{modelValue:r.email,"onUpdate:modelValue":u[2]||(u[2]=_=>r.email=_),type:"email",size:"xl",class:"w-80",color:"info",disabled:!o.value},null,8,["modelValue","disabled"])]),t("div",null,[s(x,{variant:"outline",color:"info",size:"lg",onClick:B},{default:f(()=>u[9]||(u[9]=[h(" + Ajouter un autre email ")])),_:1})])]),t("div",ie,[!a.value||n.value?(v(),b("p",de," Vous devez revérifier le code que l'on vous a envoyé par mail. ")):M("",!0)]),p.value?(v(),b("div",ue,[s(x,{label:"Enregistrer",variant:"outline",color:"info",size:"lg",class:"mt-4 w-32 mx-auto block",onClick:D})])):M("",!0)])])}}}),pe={class:"space-y-6"},me={class:"space-y-4"},fe={class:"flex items-center justify-between border rounded-lg px-6 py-4"},ve={class:"flex items-center justify-between border rounded-lg px-6 py-4"},ge={class:"flex items-center justify-between border rounded-lg px-6 py-4"},_e={class:"flex items-center justify-between border rounded-lg px-6 py-4"},be=y({__name:"Notification",setup(w){const c=C(),d=async o=>{try{await $fetch("/api/user/settings/notifications",{method:"PUT",body:o}),c.add({title:"Préférence mise à jour",color:"success"})}catch(a){c.add({title:"Erreur lors de l'enregistrement des notifications",color:"error",description:a.message})}},e=z({email:!1,marketing:!1,transactional:!1,push:!1}),i=m(!1);T(async()=>{try{const o=await $fetch("/api/user/settings/notifications");Object.assign(e,o)}catch{c.add({title:"Erreur lors de la récupération des préférences des notifications",description:"Impossible de charger les notifications",color:"error"})}finally{i.value=!0,l()}});function l(){Object.keys(e).forEach(o=>{S(()=>e[o],a=>{d({[o]:a})})})}return(o,a)=>{const n=W;return v(),b("section",pe,[a[8]||(a[8]=t("h2",{class:"text-xl font-semibold"},"Notifications",-1)),t("div",me,[t("div",fe,[a[4]||(a[4]=t("span",null,"Je veux être prévenu par mail quand ma novail est terminée",-1)),s(n,{color:"info",modelValue:e.email,"onUpdate:modelValue":a[0]||(a[0]=r=>e.email=r),disabled:!i.value},null,8,["modelValue","disabled"])]),t("div",ve,[a[5]||(a[5]=t("span",null,"Je veux recevoir les offres de promotion et de parrainage",-1)),s(n,{color:"info",modelValue:e.marketing,"onUpdate:modelValue":a[1]||(a[1]=r=>e.marketing=r),disabled:!i.value},null,8,["modelValue","disabled"])]),t("div",ge,[a[6]||(a[6]=t("span",null,"Je veux recevoir ma confirmation d'achat",-1)),s(n,{color:"info",modelValue:e.transactional,"onUpdate:modelValue":a[2]||(a[2]=r=>e.transactional=r),disabled:!i.value},null,8,["modelValue","disabled"])]),t("div",_e,[a[7]||(a[7]=t("span",null,"Je souhaite lire gratuitement les novails qui correspondent à mes goûts",-1)),s(n,{color:"info",modelValue:e.push,"onUpdate:modelValue":a[3]||(a[3]=r=>e.push=r),disabled:!i.value},null,8,["modelValue","disabled"])])])])}}}),xe={class:"border rounded-lg p-6 space-y-4 bg-[#F8F1E566]"},ye={class:"flex justify-center"},we={class:"flex mt-2 justify-end"},Ve=y({__name:"SupportHelp",setup(w){const c=C(),d=m(!1),e=z({message:""}),i=m(""),l=m(!1);async function o(){l.value=!0,i.value="";try{if(!e.message){i.value="Le champs message ne peut pas être vide";return}await $fetch("/api/contact",{method:"POST",body:e}),c.add({title:"Message envoyé",description:"Nous reviendrons vers vous très vite ✉️"}),d.value=!1,e.name="",e.email="",e.message=""}catch{c.add({title:"Erreur",description:"Une erreur est survenue",color:"red"})}finally{l.value=!1}}return(a,n)=>{const r=E,p=K,F=Q,j=X,P=N;
1return v(),b("section",xe,[n[4]||(n[4]=t("h3",{class:"font-medium text-sm"},"Rencontrez-vous des problèmes ?",-1)),n[5]||(n[5]=t("p",{class:"text-sm text-neutral-600"}," Notre équipe de support est disponible pour vous aider. Dites-nous ce qui vous trouble et nous vous guiderons. ",-1)),t("div",ye,[s(P,{ref:"modal",modelValue:$(d),"onUpdate:modelValue":n[1]||(n[1]=U=>R(d)?d.value=U:null),title:"Notre équipe est là pour vous aider",description:"Dites-nous ce qui vous trouble et nous vous guiderons pas à pas."},{body:f(()=>[t("form",{onSubmit:J(o,["prevent"])},[s(F,{label:"Message",name:"message",required:""},{default:f(()=>[s(p,{modelValue:$(e).message,"onUpdate:modelValue":n[0]||(n[0]=U=>$(e).message=U),class:"w-full",placeholder:"Comment pouvons-nous vous aider ?"},null,8,["modelValue"])]),_:1}),!$(e).message&&$(i)?(v(),G(j,{key:0,class:"mt-2",color:"error",icon:"i-lucide-x",title:"Le champs message ne peut pas être vide",description:""})):M("",!0),t("div",we,[s(r,{type:"submit",loading:$(l)},{default:f(()=>n[3]||(n[3]=[h("Envoyer")])),_:1},8,["loading"])])],32)]),default:f(()=>[s(r,{icon:"ph:chat-circle",class:"rounded-xl hover:bg-transparent",color:"info",variant:"outline"},{default:f(()=>n[2]||(n[2]=[h(" Écrivez-nous ")])),_:1})]),_:1},8,["modelValue"])])])}}}),$e={class:"border rounded-lg p-6 space-y-4 bg-[#F8F1E566]"},he=y({__name:"PasswordCard",setup(w){const c=C(),d=m(!1),e=z({old:"",new:"",repeat:""});async function i(){var l;if(!e.old||!e.new||!e.repeat){c.add({title:"Tous les champs sont requis.",color:"warning"});return}try{await $fetch("/api/user/settings/password",{method:"PUT",body:{oldPassword:e.old,newPassword:e.new,repeatPassword:e.repeat}}),c.add({title:"Mot de passe modifié avec succès.",color:"success"}),Object.assign(e,{old:"",new:"",repeat:""}),d.value=!1}catch(o){c.add({title:"Erreur lors du changement de mot de passe",description:((l=o==null?void 0:o.data)==null?void 0:l.statusMessage)||"Une erreur est survenue.",color:"error"})}}return(l,o)=>{const a=E,n=I,r=N;return v(),b("div",$e,[o[5]||(o[5]=t("h3",{class:"font-semibold text-base"},"Changer le mot de passe",-1)),o[6]||(o[6]=t("p",{class:"text-sm text-neutral-600"}," Vous avez oublié votre mot de passe ou souhaitez simplement sécuriser votre compte ? Changez-le ici à tout moment. ",-1)),s(a,{block:"",variant:"outline",color:"info",label:"Changer le mot de passe",onClick:o[0]||(o[0]=p=>d.value=!0)}),s(r,{open:d.value,"onUpdate:open":o[4]||(o[4]=p=>d.value=p),title:"Changer votre mot de passe",description:"Entrez votre ancien mot de passe et définissez-en un nouveau."},{body:f(()=>[s(n,{class:"block mb-4",type:"password",modelValue:e.old,"onUpdate:modelValue":o[1]||(o[1]=p=>e.old=p),color:"info",placeholder:"Ancien mot de passe"},null,8,["modelValue"]),s(n,{class:"block mb-4",type:"password",modelValue:e.new,"onUpdate:modelValue":o[2]||(o[2]=p=>e.new=p),color:"info",placeholder:"Nouveau mot de passe"},null,8,["modelValue"]),s(n,{class:"block mb-8",type:"password",modelValue:e.repeat,"onUpdate:modelValue":o[3]||(o[3]=p=>e.repeat=p),color:"info",placeholder:"Répéter le nouveau mot de passe"},null,8,["modelValue"]),s(a,{block:"",label:"Changer de mot de passe",onClick:i})]),_:1},8,["open"])])}}}),Ue={class:"border rounded-lg p-6 space-y-4 bg-[#F8F1E566]"},ke=y({__name:"LogoutCard",setup(w){async function c(){await $fetch("/api/auth/logout",{method:"POST"}),await A("/auth/login",{replace:!0})}return(d,e)=>{const i=E;return v(),b("div",Ue,[e[1]||(e[1]=t("h3",{class:"font-semibold text-base"},"Se déconnecter",-1)),e[2]||(e[2]=t("p",{class:"text-sm text-neutral-600"}," Vous êtes sur le point de vous déconnecter. Vos données seront sauvegardées pour votre retour. ",-1)),s(i,{block:"",variant:"outline",color:"info",onClick:c},{default:f(()=>e[0]||(e[0]=[h(" Se déconnecter ")])),_:1})])}}}),Ce={class:"border rounded-lg p-6 space-y-4 bg-[#F8F1E566]"},Ee={class:"flex gap-4 mt-6"},Pe=y({__name:"DeleteAccountCard",setup(w){const c=C(),d=m(!1);async function e(){var i;try{await $fetch("/api/user/settings/account",{method:"DELETE"}),c.add({title:"Compte supprimé",color:"success"}),d.value=!1,setTimeout(()=>A("/auth/register",{replace:!0}),1500)}catch(l){c.add({title:"Erreur lors de la suppression du compte",description:((i=l
1==null?void 0:l.data)==null?void 0:i.statusMessage)||"Impossible de supprimer le compte.",color:"error"})}}return(i,l)=>{const o=E,a=N;return v(),b("div",Ce,[l[3]||(l[3]=t("h3",{class:"font-semibold text-base"},"Supprimer le compte",-1)),l[4]||(l[4]=t("p",{class:"text-sm text-neutral-600"}," La suppression de votre compte entraînera la suppression permanente de toutes vos données de notre plateforme. ",-1)),s(o,{block:"",label:"Supprimer mon compte",color:"info",variant:"outline",onClick:l[0]||(l[0]=n=>d.value=!0)}),s(a,{open:d.value,"onUpdate:open":l[2]||(l[2]=n=>d.value=n),title:"Supprimer le compte",description:"Cette action est irréversible"},{body:f(()=>[t("div",Ee,[s(o,{label:"Oui, supprimer le compte",color:"error",variant:"outline",onClick:e}),s(o,{label:"Annuler",color:"info",variant:"outline",onClick:l[1]||(l[1]=n=>d.value=!1)})])]),_:1},8,["open"])])}}}),Se={class:"flex flex-col pb-16"},ze={class:"grid grid-cols-1 xl:grid-cols-3 gap-10"},Fe={class:"xl:col-span-2 space-y-10"},je={class:"space-y-6"},We=y({__name:"settings",setup(w){return(c,d)=>{const e=L,i=ce,l=be,o=Ve,a=he,n=ke,r=Pe;return v(),b("div",Se,[s(e,{title:"Paramètres",description:"Gérez votre compte et vos préférences."}),t("div",ze,[t("div",Fe,[s(i),d[0]||(d[0]=t("hr",{class:"h-px my-8 bg-gray-200 border-0 dark:bg-gray-700"},null,-1)),s(l),s(o)]),t("aside",je,[s(a),s(n),s(r)])])])}}});export{We 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.