Files
nashel-frontend/.next/static/chunks/app/dashboard/profile/page-8a6ff117491fd02a.js
T

1 line
50 KiB
JavaScript

(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[399,896],{7145:(e,s,t)=>{Promise.resolve().then(t.bind(t,7366))},7366:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>ej});var a=t(5155),n=t(2115),r=t(2928),l=t(3312),i=t(9749),c=t(7549);let o=n.forwardRef((e,s)=>{let{className:t,variant:n="default",...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,c.cn)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}[n],t),...r})});o.displayName="Badge";var d=t(4505),m=t(1466),x=t(3831),u=t(7508),h=t(7223),p=t(6889),f=t(3817),j=t(9351),g=t(6764),b=t(6744),v=t(5686),N=t(6046),y=t(9606),w=t(2679),k=t(534),C=t(814),A=t(3900),P=t(2896),R=t(4870),S=t(8867),L=t(767),$=t(3580),B=t(9581),E=t(3705),z=t(5900);let I=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,a.jsxs)(z.bL,{ref:s,className:(0,c.cn)("relative flex w-full touch-none select-none items-center",t),...n,children:[(0,a.jsx)(z.CC,{className:"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary",children:(0,a.jsx)(z.Q6,{className:"absolute h-full bg-primary"})}),(0,a.jsx)(z.zi,{className:"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"})]})});I.displayName=z.bL.displayName;let F="http://127.0.0.1:5000/api".replace("/api","");function T(e){let{currentAvatarUrl:s,onUploadSuccess:t}=e,[r,i]=n.useState(s),[c,o]=n.useState(!1),[d,x]=n.useState(null),[u,h]=n.useState({x:0,y:0}),[p,f]=n.useState(1),[j,g]=n.useState(null),b=n.useRef(null),v=function(e){if(e)return e.startsWith("http://")||e.startsWith("https://")?e:e.startsWith("/")?"".concat(F).concat(e):"".concat(F,"/").concat(e)}(r);n.useEffect(()=>{i(s)},[s]);let N=n.useCallback((e,s)=>{g(s)},[]),y=async(e,s)=>{let t=await w(e),a=document.createElement("canvas"),n=a.getContext("2d");if(!n)throw Error("Failed to get canvas context");return a.width=s.width,a.height=s.height,n.drawImage(t,s.x,s.y,s.width,s.height,0,0,s.width,s.height),new Promise(e=>{a.toBlob(s=>{s&&e(s)},"image/jpeg",.95)})},w=e=>new Promise((s,t)=>{let a=new Image;a.addEventListener("load",()=>s(a)),a.addEventListener("error",e=>t(e)),a.src=e}),k=async()=>{if(d&&j){o(!0);try{let e=await y(d,j),s=new File([e],"avatar.jpg",{type:"image/jpeg"}),a=new FormData;a.append("file",s);let n=(await E.F.post("/profile/avatar",a,{headers:{"Content-Type":"multipart/form-data"}})).data.avatarUrl;i(n),x(null),null==t||t(n),C.oR.success("Аватар успешно загружен")}catch(e){console.error("Error uploading avatar:",e),C.oR.error("Ошибка при загрузке аватара")}finally{o(!1)}}};return d?(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)("div",{className:"relative w-full h-64 bg-muted rounded-lg overflow-hidden",children:(0,a.jsx)(B.Ay,{image:d,crop:u,zoom:p,aspect:1,cropShape:"round",showGrid:!1,onCropChange:h,onZoomChange:f,onCropComplete:N})}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Масштаб"}),(0,a.jsx)(I,{value:[p],min:1,max:3,step:.1,onValueChange:e=>f(e[0])})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(l.$,{onClick:k,disabled:c,className:"flex-1 bg-blue-600 hover:bg-blue-700",children:c?(0,a.jsx)("div",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(S.A,{className:"w-4 h-4 mr-2"}),"Сохранить"]})}),(0,a.jsxs)(l.$,{onClick:()=>{x(null),h({x:0,y:0}),f(1)},variant:"outline",disabled:c,children:[(0,a.jsx)(L.A,{className:"w-4 h-4 mr-2"}),"Отмена"]})]})]}):(0,a.jsx)("div",{className:"flex flex-col items-center",children:(0,a.jsxs)("div",{className:"relative w-40 h-40 rounded-full overflow-hidden bg-muted cursor-pointer group",onClick:()=>{var e;return null===(e=b.current)||void 0===e?void 0:e.click()},children:[v?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("img",{src:v,alt:"Avatar",className:"w-full h-full object-cover"}),(0,a.jsx)("div",{className:"absolute inset-0 bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 text-white",children:[(0,a.jsx)($.A,{className:"w-6 h-6"}),(0,a.jsx)("span",{className:"text-sm font-medium",children:"Изменить"})]})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"w-full h-full flex items-center justify-center",children:(0,a.jsx)(m.A,{className:"w-20 h-20 text-muted-foreground"})}),(0,a.jsx)("div",{className:"absolute inset-0 bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity p-4 text-center",children:(0,a.jsxs)("div",{className:"text-white text-xs space-y-1",children:[(0,a.jsx)("p",{children:"Нажмите, чтобы загрузить"}),(0,a.jsx)("p",{children:"JPG или PNG, до 5 МБ"})]})})]}),(0,a.jsx)("input",{ref:b,type:"file",accept:"image/jpeg,image/jpg,image/png",onChange:e=>{var s;let t=null===(s=e.target.files)||void 0===s?void 0:s[0];if(!t)return;if(t.size>5242880){C.oR.error("Размер файла не должен превышать 5 МБ");return}if(!["image/jpeg","image/jpg","image/png"].includes(t.type)){C.oR.error("Допустимые форматы: JPG, PNG");return}let a=new FileReader;a.onloadend=()=>{x(a.result)},a.readAsDataURL(t)},className:"hidden"})]})})}function Z(e){let{value:s=[],onChange:t,placeholder:r="Добавить компетенцию...",maxTags:l=50}=e,[i,c]=n.useState(""),[d,m]=n.useState(null);n.useEffect(()=>{let e=setTimeout(async()=>{if(i.length<2){m(null);return}try{let e=(await E.F.get("/competencies/search?q=".concat(encodeURIComponent(i)))).data.filter(e=>!s.includes(e));m(e.length>0?e[0]:null)}catch(e){console.error("Error fetching suggestions:",e),m(null)}},300);return()=>clearTimeout(e)},[i,s]);let x=e=>{let a=e?e.trim().toLowerCase():e;a&&!s.includes(a)&&s.length<l&&(t([...s,a]),c(""),m(null))},u=e=>{t(s.filter(s=>s!==e))},h=d&&d.toLowerCase().startsWith(i.toLowerCase());return(0,a.jsxs)("div",{className:"w-full",children:[(0,a.jsx)("div",{className:"flex flex-wrap gap-2 mb-3",children:s.map(e=>(0,a.jsxs)(o,{variant:"secondary",className:"gap-1.5 px-3 py-1.5 text-sm bg-blue-50 hover:bg-blue-100 text-blue-900 border-blue-200 dark:bg-blue-950 dark:text-blue-100 dark:border-blue-800 transition-colors",children:[e,(0,a.jsx)("button",{type:"button",onClick:()=>u(e),className:"ml-1 hover:bg-blue-200 dark:hover:bg-blue-800 rounded-full p-0.5 transition-colors","aria-label":"Удалить ".concat(e),children:(0,a.jsx)(L.A,{className:"h-3.5 w-3.5"})})]},e))}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(A.p,{value:i,onChange:e=>{c(e.target.value)},onKeyDown:e=>{"Enter"===e.key&&i?(e.preventDefault(),x(i)):"Tab"===e.key&&d?(e.preventDefault(),x(d)):"Escape"===e.key?m(null):"Backspace"===e.key&&!i&&s.length>0&&u(s[s.length-1])},onBlur:()=>m(null),placeholder:s.length>=l?"Максимум ".concat(l," компетенций"):r,disabled:s.length>=l,className:"text-base pr-0"}),h&&(0,a.jsx)("div",{className:"absolute inset-y-0 left-0 pointer-events-none flex items-center px-3",children:(0,a.jsxs)("span",{className:"text-base",children:[i,(0,a.jsx)("span",{className:"text-muted-foreground",children:d.slice(i.length)})]})})]}),s.length>0&&(0,a.jsxs)("p",{className:"text-sm text-muted-foreground mt-2",children:[s.length," / ",l," компетенций"]})]})}var D=t(865);function M(e){let{value:s,showValue:t=!0,size:n="md"}=e,r=()=>s>=4?"text-green-600 dark:text-green-500":s>=3?"text-blue-600 dark:text-blue-500":"text-red-600 dark:text-red-500",l={sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},i=Array.from({length:5},(e,t)=>{let a=Math.max(0,Math.min(100,(s-t)*100));return{index:t,fillPercentage:a}});return(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"flex items-center gap-1",children:i.map(e=>{let{index:s,fillPercentage:t}=e;return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(D.A,{className:"".concat(l[n]," text-muted-foreground/30")}),(0,a.jsx)("div",{className:"absolute inset-0 overflow-hidden",style:{width:"".concat(t,"%")},children:(0,a.jsx)(D.A,{className:"".concat(l[n]," ").concat(r()," fill-current")})})]},s)})}),t&&(0,a.jsx)("span",{className:"font-semibold ".concat(r()),children:s.toFixed(2)})]})}var W=t(1902),O=t(1719);function J(e){let{description:s,maxLines:t=10}=e,[r,i]=(0,n.useState)(!1),[c,o]=(0,n.useState)(!1),d=(0,n.useRef)(null);if((0,n.useEffect)(()=>{if(d.current){let e=20*t;o(d.current.scrollHeight>e)}},[s,t]),(0,n.useEffect)(()=>{let e=e=>{let s=e.target.closest("a");if(s){e.preventDefault();let t=s.getAttribute("href");if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))try{let e=new URL(t).hostname;confirm("Вы переходите на внешний ресурс: ".concat(e,"\n\n")+"Ссылка: ".concat(t,"\n\n")+"Вы уверены, что хотите перейти?")&&window.open(t,"_blank","noopener,noreferrer")}catch(e){window.open(t,"_blank","noopener,noreferrer")}else window.open(t,"_blank")}},s=d.current;if(s)return s.addEventListener("click",e),()=>s.removeEventListener("click",e)},[]),!s)return null;if(s.includes("<")){let e=20*t;return(0,a.jsxs)("div",{className:"flex py-3 justify-start items-start",children:[(0,a.jsx)("span",{className:"text-muted-foreground mr-4 whitespace-nowrap",children:"Описание"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{ref:d,className:"text-left text-sm leading-relaxed prose prose-sm max-w-none dark:prose-invert overflow-hidden transition-all duration-200 ".concat(r?"max-h-none":""),style:{maxHeight:r?"none":"".concat(e,"px")},dangerouslySetInnerHTML:{__html:s}}),c&&(0,a.jsx)(l.$,{variant:"link",size:"sm",onClick:()=>i(!r),className:"mt-2 h-auto p-0 text-blue-600 hover:text-blue-700",children:r?(0,a.jsxs)(a.Fragment,{children:["Свернуть",(0,a.jsx)(W.A,{className:"ml-1 h-4 w-4"})]}):(0,a.jsxs)(a.Fragment,{children:["Показать полностью",(0,a.jsx)(O.A,{className:"ml-1 h-4 w-4"})]})})]})]})}let m=s.split("\n"),x=m.length>t,u=r?m:m.slice(0,t);return(0,a.jsxs)("div",{className:"flex py-3 justify-start items-start",children:[(0,a.jsx)("span",{className:"text-muted-foreground mr-4 whitespace-nowrap",children:"Описание"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"text-left text-sm leading-relaxed whitespace-pre-wrap break-words",children:u.join("\n")}),x&&(0,a.jsx)(l.$,{variant:"link",size:"sm",onClick:()=>i(!r),className:"mt-2 h-auto p-0 text-blue-600 hover:text-blue-700",children:r?(0,a.jsxs)(a.Fragment,{children:["Свернуть",(0,a.jsx)(W.A,{className:"ml-1 h-4 w-4"})]}):(0,a.jsxs)(a.Fragment,{children:["Показать полностью",(0,a.jsx)(O.A,{className:"ml-1 h-4 w-4"})]})})]})]})}let U=[{key:"1",ruKey:"Понедельник",label:"Пн"},{key:"2",ruKey:"Вторник",label:"Вт"},{key:"3",ruKey:"Среда",label:"Ср"},{key:"4",ruKey:"Четверг",label:"Чт"},{key:"5",ruKey:"Пятница",label:"Пт"},{key:"6",ruKey:"Суббота",label:"Сб"},{key:"7",ruKey:"Воскресенье",label:"Вс"}],Y={Понедельник:"1",Вторник:"2",Среда:"3",Четверг:"4",Пятница:"5",Суббота:"6",Воскресенье:"7"};function _(e){if(!e)return"--:--";let s=e.split(":");if(2!==s.length)return e;let[t,a]=s,n=parseInt(t,10).toString();return"00"===a&&"0"===n?"0:00":"00"===a?n:"".concat(n,":").concat(a)}function K(e){let{workSchedule:s}=e,t=function(e){if(!e)return{};let s={};if(e.schedulePerDay)s=e.schedulePerDay;else if(e.workingDays)try{s=JSON.parse(e.workingDays)}catch(e){return{}}let t={};for(let[e,a]of Object.entries(s)){if(!Array.isArray(a))continue;let s=e;Y[e]&&(s=Y[e]),t[s]=a.map(e=>({start:e.start||e.Start||e.startTime||e.StartTime,end:e.end||e.End||e.endTime||e.EndTime})).sort((e,s)=>(e.start||"").localeCompare(s.start||""))}return t}(s);if(!s)return(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)(i.aR,{children:(0,a.jsx)(i.ZB,{className:"text-lg",children:"Расписание работы"})}),(0,a.jsx)(i.Wu,{children:(0,a.jsx)("p",{className:"text-muted-foreground",children:"Расписание не указано"})})]});if(s.isAlwaysReady)return(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)(i.aR,{children:(0,a.jsx)(i.ZB,{className:"text-lg",children:"Расписание работы"})}),(0,a.jsx)(i.Wu,{children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)(o,{variant:"default",className:"bg-green-600 hover:bg-green-700",children:[(0,a.jsx)(p.A,{className:"w-4 h-4 mr-1"}),"Всегда на связи"]}),(0,a.jsx)("span",{className:"text-muted-foreground text-sm",children:"Готов к работе 24/7"})]})})]});if(!Object.values(t).some(e=>e&&e.length>0))return(0,a.jsxs)(i.Zp,{children:[(0,a.jsx)(i.aR,{children:(0,a.jsx)(i.ZB,{className:"text-lg",children:"Расписание работы"})}),(0,a.jsx)(i.Wu,{children:(0,a.jsx)("p",{className:"text-muted-foreground",children:"Расписание не указано"})})]});let n=[],r=null,l=e=>e&&0!==e.length?e.map(e=>"".concat(e.start,"-").concat(e.end)).join(","):"off";for(let e=0;e<U.length;e++){let s=U[e],a=t[s.key]||t[s.ruKey]||[],i=0===a.length;r&&l(r.times)===l(a)?r.endDayIdx=e:(r={startDayIdx:e,endDayIdx:e,times:a,isOff:i},n.push(r))}return(0,a.jsx)(i.Zp,{className:"border-0 shadow-none p-0",children:(0,a.jsx)(i.Wu,{className:"px-0 pb-0",children:(0,a.jsx)("div",{className:"grid",children:n.map((e,s)=>{let t="";return t=e.startDayIdx===e.endDayIdx?U[e.startDayIdx].ruKey:"".concat(U[e.startDayIdx].label," — ").concat(U[e.endDayIdx].label),(0,a.jsxs)("div",{className:"flex items-baseline justify-between py-3 border-b border-border/50 last:border-0",children:[(0,a.jsx)("span",{className:"font-medium text-sm",children:t}),(0,a.jsx)("div",{className:"flex flex-col gap-1 text-right",children:e.isOff?(0,a.jsx)("span",{className:"text-muted-foreground font-medium text-[15px]",children:"Выходной"}):e.times.map((e,s)=>(0,a.jsxs)("span",{className:"text-[15px] font-medium",children:[_(e.start)," — ",_(e.end)]},s))})]},s)})})})})}var G=t(8986);function H(e){let{open:s,onOpenChange:t,children:n}=e;return s?(0,a.jsx)(a.Fragment,{children:n}):null}function V(e){let{children:s,className:t,onClose:n,...r}=e;return(0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:n}),(0,a.jsxs)("div",{className:(0,c.cn)("relative z-50 w-full max-w-lg mx-4 bg-white dark:bg-zinc-900 rounded-lg shadow-lg",t),...r,children:[n&&(0,a.jsxs)("button",{className:"absolute right-4 top-4 rounded-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",onClick:n,children:[(0,a.jsx)(L.A,{className:"h-4 w-4"}),(0,a.jsx)("span",{className:"sr-only",children:"Закрыть"})]}),s]})]})}function Q(e){let{className:s,...t}=e;return(0,a.jsx)("div",{className:(0,c.cn)("flex flex-col space-y-1.5 text-center sm:text-left",s),...t})}function q(e){let{className:s,...t}=e;return(0,a.jsx)("div",{className:(0,c.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",s),...t})}function X(e){let{className:s,...t}=e;return(0,a.jsx)("h2",{className:(0,c.cn)("text-lg font-semibold leading-none tracking-tight",s),...t})}function ee(e){let{className:s,...t}=e;return(0,a.jsx)("p",{className:(0,c.cn)("text-sm text-muted-foreground",s),...t})}function es(e){let{className:s,asChild:n,...r}=e;if(n){let{Slot:e}=t(5942);return(0,a.jsx)(e,{className:(0,c.cn)("absolute right-4 top-4 rounded-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",s),...r})}return(0,a.jsxs)("button",{className:(0,c.cn)("absolute right-4 top-4 rounded-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",s),...r,children:[(0,a.jsx)(L.A,{className:"h-4 w-4"}),(0,a.jsx)("span",{className:"sr-only",children:"Закрыть"})]})}var et=t(8686),ea=t(738),en=t(2598);let er=k.Ikc({oldPassword:k.YjP().min(1,"Введите текущий пароль"),newPassword:k.YjP().min(6,"Новый пароль должен содержать минимум 6 символов"),confirmPassword:k.YjP().min(1,"Подтвердите пароль")}).refine(e=>e.newPassword===e.confirmPassword,{message:"Пароли не совпадают",path:["confirmPassword"]});function el(e){let{open:s,onOpenChange:t}=e,[i,c]=(0,n.useState)(!1),[o,d]=(0,n.useState)(!1),[m,x]=(0,n.useState)(!1),{changePassword:u,isLoading:h}=(0,r.B)(),{register:p,handleSubmit:f,reset:j,formState:{errors:g}}=(0,y.mN)({resolver:(0,w.u)(er)}),b=async e=>{try{await u(e.oldPassword,e.newPassword),C.oR.success("Пароль успешно изменён"),j(),t(!1)}catch(e){var s,a;C.oR.error((null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(s=a.data)||void 0===s?void 0:s.message)||"Ошибка при смене пароля")}};return(0,a.jsx)(H,{open:s,onOpenChange:()=>{j(),t(!1)},children:(0,a.jsxs)(V,{className:"sm:max-w-[425px]",children:[(0,a.jsxs)(Q,{children:[(0,a.jsxs)(X,{className:"flex items-center gap-2",children:[(0,a.jsx)(et.A,{className:"w-5 h-5"}),"Смена пароля"]}),(0,a.jsx)(ee,{children:"Введите текущий пароль и придумайте новый"})]}),(0,a.jsxs)("form",{onSubmit:f(b),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(G.J,{htmlFor:"oldPassword",children:"Текущий пароль"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(A.p,{id:"oldPassword",type:i?"text":"password",placeholder:"Введите текущий пароль",...p("oldPassword")}),(0,a.jsx)("button",{type:"button",onClick:()=>c(!i),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:i?(0,a.jsx)(ea.A,{className:"w-4 h-4"}):(0,a.jsx)(en.A,{className:"w-4 h-4"})})]}),g.oldPassword&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:g.oldPassword.message})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(G.J,{htmlFor:"newPassword",children:"Новый пароль"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(A.p,{id:"newPassword",type:o?"text":"password",placeholder:"Введите новый пароль",...p("newPassword")}),(0,a.jsx)("button",{type:"button",onClick:()=>d(!o),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:o?(0,a.jsx)(ea.A,{className:"w-4 h-4"}):(0,a.jsx)(en.A,{className:"w-4 h-4"})})]}),g.newPassword&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:g.newPassword.message})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(G.J,{htmlFor:"confirmPassword",children:"Подтвердите пароль"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(A.p,{id:"confirmPassword",type:m?"text":"password",placeholder:"Повторите новый пароль",...p("confirmPassword")}),(0,a.jsx)("button",{type:"button",onClick:()=>x(!m),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:m?(0,a.jsx)(ea.A,{className:"w-4 h-4"}):(0,a.jsx)(en.A,{className:"w-4 h-4"})})]}),g.confirmPassword&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:g.confirmPassword.message})]}),(0,a.jsxs)(q,{className:"gap-2 sm:gap-0",children:[(0,a.jsx)(es,{asChild:!0,children:(0,a.jsx)(l.$,{type:"button",variant:"outline",children:"Отмена"})}),(0,a.jsx)(l.$,{type:"submit",disabled:h,children:h?"Сохранение...":"Сохранить"})]})]})]})})}let ei=k.Ikc({location:k.YjP().optional(),currentLocation:k.YjP().optional()});function ec(e){let{open:s,onOpenChange:t,initialLocation:n="",initialCurrentLocation:i=""}=e,{updateLocation:c,isLoading:o}=(0,r.B)(),{register:d,handleSubmit:m,reset:x,formState:{errors:u}}=(0,y.mN)({resolver:(0,w.u)(ei),defaultValues:{location:n,currentLocation:i}}),p=async e=>{try{await c(e.location||"",e.currentLocation||""),C.oR.success("Локация успешно обновлена"),t(!1)}catch(e){var s,a;C.oR.error((null==e?void 0:null===(a=e.response)||void 0===a?void 0:null===(s=a.data)||void 0===s?void 0:s.message)||"Ошибка при обновлении локации")}};return(0,a.jsx)(H,{open:s,onOpenChange:()=>{x(),t(!1)},children:(0,a.jsxs)(V,{className:"sm:max-w-[425px]",children:[(0,a.jsxs)(Q,{children:[(0,a.jsxs)(X,{className:"flex items-center gap-2",children:[(0,a.jsx)(h.A,{className:"w-5 h-5"}),"Изменить локацию"]}),(0,a.jsx)(ee,{children:"Укажите вашу локацию для поиска заказов"})]}),(0,a.jsxs)("form",{onSubmit:m(p),className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(G.J,{htmlFor:"location",children:"Город / Район"}),(0,a.jsx)(A.p,{id:"location",placeholder:"Например: Москва, ЮАО",...d("location")}),u.location&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:u.location.message})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(G.J,{htmlFor:"currentLocation",children:"Текущее местоположение"}),(0,a.jsx)(A.p,{id:"currentLocation",placeholder:"Координаты или адрес",...d("currentLocation")}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Можно оставить пустым, если не хотите показывать точное местоположение"}),u.currentLocation&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:u.currentLocation.message})]}),(0,a.jsxs)(q,{className:"gap-2 sm:gap-0",children:[(0,a.jsx)(es,{asChild:!0,children:(0,a.jsx)(l.$,{type:"button",variant:"outline",children:"Отмена"})}),(0,a.jsx)(l.$,{type:"submit",disabled:o,children:o?"Сохранение...":"Сохранить"})]})]})]})})}var eo=t(2291);let ed=["Понедельник","Вторник","Среда","Четверг","Пятница","Суббота","Воскресенье"],em=(()=>{let e=[];for(let s=0;s<24;s++)for(let t=0;t<60;t+=30){let a=s.toString().padStart(2,"0"),n=t.toString().padStart(2,"0");e.push("".concat(a,":").concat(n))}return e})(),ex={Понедельник:"1",Вторник:"2",Среда:"3",Четверг:"4",Пятница:"5",Суббота:"6",Воскресенье:"7"};function eu(e){let{open:s,onOpenChange:t,initialIsAlwaysReady:i=!1,initialSchedulePerDay:c=null}=e,{updateSchedule:o,isLoading:d}=(0,r.B)(),[m,x]=(0,n.useState)(i),[u,h]=(0,n.useState)(!i),[f,j]=(0,n.useState)(()=>{let e={};return ed.forEach(s=>{e[s]=[]}),c&&Object.entries(c).forEach(s=>{let[t,a]=s;if(Array.isArray(a)&&a.length>0){let s=ed[parseInt(t)-1];s&&(e[s]=a.map(e=>({start:e.start||"09:00",end:e.end||"18:00"})).sort((e,s)=>e.start.localeCompare(s.start)))}}),e});(0,n.useEffect)(()=>{if(s){x(i),h(!i);let e={};ed.forEach(s=>e[s]=[]),c&&Object.entries(c).forEach(s=>{let[t,a]=s;if(Array.isArray(a)&&a.length>0){let s=ed[parseInt(t)-1];s&&(e[s]=a.map(e=>({start:e.start||"09:00",end:e.end||"18:00"})).sort((e,s)=>e.start.localeCompare(s.start)))}}),j(e)}},[s,i,c]);let g=e=>{m&&x(!1);let s={...f};s[e].length>0?s[e]=[]:s[e]=[{start:"09:00",end:"18:00"}],j(s)},b=e=>{m&&x(!1);let s={...f};s[e]=[...s[e]||[],{start:"00:00",end:"00:00"}],j(s)},v=(e,s)=>{let t={...f},a=t[e].filter((e,t)=>t!==s);t[e]=a,j(t)},N=(e,s,t,a)=>{m&&x(!1);let n={...f};n[e][s][t]=a,j(n)},y=async()=>{try{let e={};Object.entries(f).forEach(s=>{let[t,a]=s;if(a.length>0){let s=ex[t];s&&(e[s]=[...a].sort((e,s)=>e.start.localeCompare(s.start)))}}),await o(m,Object.keys(e).length>0?e:void 0),C.oR.success("Расписание успешно обновлено"),t(!1)}catch(t){var e,s;C.oR.error((null==t?void 0:null===(s=t.response)||void 0===s?void 0:null===(e=s.data)||void 0===e?void 0:e.message)||"Ошибка при обновлении расписания")}},w=()=>{t(!1)};return(0,a.jsx)(H,{open:s,onOpenChange:w,children:(0,a.jsxs)(V,{className:"sm:max-w-[600px] max-h-[90vh] overflow-y-auto",children:[(0,a.jsxs)(Q,{children:[(0,a.jsxs)(X,{className:"flex items-center gap-2",children:[(0,a.jsx)(p.A,{className:"w-5 h-5"}),"Изменить расписание"]}),(0,a.jsx)(ee,{children:"Настройте дни и часы работы"})]}),(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex items-start space-x-3",children:[(0,a.jsx)(eo.S,{id:"always-ready-edit",checked:m,onCheckedChange:e=>{if(x(e),e){let e={};ed.forEach(s=>e[s]=[]),j(e)}}}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(G.J,{htmlFor:"always-ready-edit",className:"cursor-pointer",children:"Всегда готов к заказам"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Если включено, клиенты будут видеть вас доступным в любое время"})]})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)(l.$,{type:"button",variant:"outline",className:"w-full justify-between",onClick:()=>h(!u),children:[(0,a.jsxs)("span",{className:"flex items-center gap-2",children:[(0,a.jsx)(p.A,{className:"w-4 h-4"}),"Настроить расписание"]}),u?(0,a.jsx)(W.A,{className:"w-4 h-4"}):(0,a.jsx)(O.A,{className:"w-4 h-4"})]}),u&&(0,a.jsxs)("div",{className:"space-y-2 mt-4",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground pb-2",children:"Отметьте рабочие дни и укажите часы приема."}),ed.map(e=>{var s,t;return(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-start gap-2 border-b last:border-0 pb-3 last:pb-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 w-40 pt-2",children:[(0,a.jsx)(eo.S,{id:"edit-".concat(e),checked:(null===(s=f[e])||void 0===s?void 0:s.length)>0,onCheckedChange:()=>g(e)}),(0,a.jsx)("label",{htmlFor:"edit-".concat(e),className:"font-medium cursor-pointer text-sm",children:e})]}),(0,a.jsx)("div",{className:"flex-1 space-y-2",children:(null===(t=f[e])||void 0===t?void 0:t.length)>0?(0,a.jsxs)(a.Fragment,{children:[f[e].map((s,t)=>{let n=f[e].filter((e,s)=>s!==t),r=em.filter(e=>!n.some(s=>e>=s.start&&e<s.end)),i="24:00";n.forEach(e=>{e.start>s.start&&e.start<i&&(i=e.start)});let c=[...em,"24:00"].filter(e=>e>s.start&&e<=i);return(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("select",{className:"flex h-8 w-24 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",value:s.start,onChange:s=>N(e,t,"start",s.target.value),children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Начало"}),r.map(e=>(0,a.jsx)("option",{value:e,children:e},"start-".concat(e)))]}),(0,a.jsx)("span",{className:"text-muted-foreground",children:"—"}),(0,a.jsxs)("select",{className:"flex h-8 w-24 rounded-md border border-input bg-background px-2 py-1 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",value:s.end,onChange:s=>N(e,t,"end",s.target.value),children:[(0,a.jsx)("option",{value:"",disabled:!0,children:"Конец"}),c.map(e=>(0,a.jsx)("option",{value:e,children:e},"end-".concat(e)))]}),(0,a.jsx)(l.$,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-red-500 hover:text-red-700",onClick:()=>v(e,t),children:"✕"})]},t)}),(0,a.jsx)(l.$,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-blue-600 hover:text-blue-700",onClick:()=>b(e),children:"+ Интервал"})]}):(0,a.jsx)("div",{className:"h-8 flex items-center text-sm text-muted-foreground pt-1",children:"Выходной"})})]},e)})]})]})]}),(0,a.jsxs)(q,{className:"gap-2 sm:gap-0",children:[(0,a.jsx)(l.$,{type:"button",variant:"outline",onClick:w,children:"Отмена"}),(0,a.jsx)(l.$,{onClick:y,disabled:d,children:d?"Сохранение...":"Сохранить"})]})]})})}var eh=t(1567);let ep=k.Ikc({firstName:k.YjP().min(2,"Имя должно содержать минимум 2 символа").regex(/^[^0-9]*$/,"Имя не должно содержать цифры"),lastName:k.YjP().min(2,"Фамилия должна содержать минимум 2 символа").regex(/^[^0-9]*$/,"Фамилия не должна содержать цифры"),patronymic:k.YjP().optional().refine(e=>!e||/^[^0-9]*$/.test(e),{message:"Отчество не должно содержать цифры"}),companyName:k.YjP().optional(),inn:k.YjP().optional(),description:k.YjP().max(2048,"Описание не может превышать 2048 символов").optional()}),ef=k.Ikc({newPhone:k.YjP().min(10,"Номер телефона должен содержать минимум 10 цифр")});function ej(){var e,s,t;let{user:k,isAuth:S,isLoading:L,isInitialized:$,getProfile:B,updateProfile:E,changePhone:z,logout:I,updateCompetencies:F}=(0,r.B)(),D=(0,N.useRouter)(),[W,O]=n.useState("personal"),[U,Y]=n.useState(!1),[_,G]=n.useState(!1),[H,V]=n.useState(!1),[Q,q]=n.useState(!1),[X,ee]=n.useState(!1),es=function(){let[e,s]=n.useState(0);return n.useEffect(()=>{s(5*Math.random());let e=setInterval(()=>{s(5*Math.random())},1e3);return()=>clearInterval(e)},[]),e}();n.useEffect(()=>{$&&(L||S?S&&!k&&B():D.push("/auth/login"))},[S,L,k,D,$]);let et=(0,y.mN)({resolver:(0,w.u)(ep),values:{firstName:(null==k?void 0:k.firstName)||"",lastName:(null==k?void 0:k.lastName)||"",patronymic:(null==k?void 0:k.patronymic)||"",companyName:(null==k?void 0:k.companyName)||"",inn:(null==k?void 0:k.inn)||"",description:(null==k?void 0:k.description)||""}}),ea=(0,y.mN)({resolver:(0,w.u)(ef),defaultValues:{newPhone:(null==k?void 0:k.phone)||""}});async function en(e){try{await E(e),Y(!1),C.oR.success("Профиль успешно обновлен")}catch(e){C.oR.error("Ошибка при обновлении профиля")}}async function er(e){try{await z(e.newPhone),G(!1),C.oR.success("Номер телефона успешно изменен")}catch(e){C.oR.error("Ошибка при смене номера телефона")}}if(n.useEffect(()=>{(null==k?void 0:k.phone)&&ea.reset({newPhone:k.phone})},[null==k?void 0:k.phone,ea]),L&&!k)return(0,a.jsx)("div",{className:"flex h-[50vh] items-center justify-center",children:(0,a.jsx)(d.A,{className:"h-8 w-8 animate-spin text-blue-600"})});if(!k)return(0,a.jsxs)("div",{className:"container py-10 text-center",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold mb-4",children:"Пожалуйста, войдите в систему"}),(0,a.jsx)(l.$,{asChild:!0,children:(0,a.jsx)("a",{href:"/auth/login",children:"Войти"})})]});let ei=k.roles.includes("Master")||k.roles.includes("Candidate"),eo=k.roles.includes("Company"),ed=k.roles.includes("Candidate"),em=!ei&&!ed&&!eo,ex=[{id:"personal",label:eo?"Данные компании":"Личные данные",icon:m.A},{id:"communication",label:"Связь",icon:x.A},(ei||eo)&&{id:"competencies",label:"Компетенции",icon:u.A},(ei||eo)&&k.location&&{id:"location",label:"Локация",icon:h.A},(ei||eo)&&{id:"schedule",label:"График работы",icon:p.A},{id:"account",label:"Управление аккаунтом",icon:f.A}].filter(Boolean);return(0,a.jsxs)("div",{className:"container max-w-5xl py-10",children:[(0,a.jsx)("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-4 mb-8 bg-card p-6 rounded-2xl shadow-sm border",children:(0,a.jsxs)("div",{className:"flex items-center gap-6",children:[(0,a.jsx)("div",{className:"flex-shrink-0",children:(0,a.jsx)(T,{currentAvatarUrl:k.avatarUrl,onUploadSuccess:()=>B()})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-3xl font-bold mb-1",children:eo?k.companyName:k.fullName}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mt-2",children:[(0,a.jsx)(o,{variant:"secondary",className:"text-sm font-medium px-3 py-0.5 whitespace-nowrap bg-muted hover:bg-muted text-muted-foreground border-transparent",children:{Client:"Клиент",Master:"Мастер",Candidate:"Кандидат в мастера",Company:"Компания",Admin:"Администратор",User:"Пользователь"}[t=(e=>{if(!e||0===e.length)return"User";for(let s of["Admin","Company","Master","Candidate","Client","User"])if(e.includes(s))return s;return e[0]})(k.roles)]||t}),(0,a.jsx)(M,{value:es,size:"sm"})]})]})]})}),(0,a.jsxs)("div",{className:"flex flex-col md:flex-row gap-8",children:[(0,a.jsxs)("div",{className:"w-full md:w-64 flex flex-col gap-2 flex-shrink-0",children:[em&&(0,a.jsx)("div",{className:"mb-4",children:(0,a.jsxs)(i.Zp,{className:"border-blue-200 bg-blue-50/30 dark:bg-blue-900/10 dark:border-blue-800/50 shadow-sm overflow-hidden relative",children:[(0,a.jsx)(i.aR,{className:"pb-2",children:(0,a.jsxs)(i.ZB,{className:"text-base text-blue-700 dark:text-blue-400 flex items-center gap-2",children:[(0,a.jsx)(j.A,{className:"h-4 w-4"}),"Стать исполнителем"]})}),(0,a.jsxs)(i.Wu,{className:"pb-4",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"Начните получать заказы и зарабатывать прямо сейчас."}),(0,a.jsx)(l.$,{className:"w-full bg-blue-600 hover:bg-blue-700 text-white shadow-md shadow-blue-500/20",onClick:()=>D.push("/dashboard/become-performer"),disabled:L,size:"sm",children:L?(0,a.jsx)(d.A,{className:"mr-2 h-4 w-4 animate-spin"}):"Перейти"})]})]})}),ex.map(e=>(0,a.jsxs)("button",{className:(0,eh.cn)("flex items-center gap-3 px-4 py-3 rounded-xl transition-all text-sm font-medium",W===e.id?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-muted hover:text-foreground"),onClick:()=>O(e.id),children:[(0,a.jsx)(e.icon,{className:(0,eh.cn)("w-5 h-5",W===e.id?"text-primary":"text-muted-foreground")}),e.label]},e.id))]}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:["personal"===W&&(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{className:"flex flex-row items-center justify-between space-y-0",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(i.ZB,{className:"text-xl",children:eo?"Данные компании":"Личные данные"}),(0,a.jsx)(i.BT,{children:"Основная информация вашего профиля"})]}),(0,a.jsx)(l.$,{variant:"ghost",size:"sm",onClick:()=>{!U&&k&&et.reset({firstName:k.firstName,lastName:k.lastName,patronymic:k.patronymic||"",companyName:k.companyName||"",inn:k.inn||"",description:k.description||""}),Y(!U)},children:U?"Отмена":"Редактировать"})]}),(0,a.jsx)(i.Wu,{children:U?(0,a.jsx)(R.lV,{...et,children:(0,a.jsxs)("form",{onSubmit:et.handleSubmit(en),className:"space-y-4",children:[eo?(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,a.jsx)(R.zB,{control:et.control,name:"companyName",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{children:[(0,a.jsx)(R.lR,{children:"Название компании"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(A.p,{value:s.value||"",onChange:s.onChange})}),(0,a.jsx)(R.C5,{})]})}}),(0,a.jsx)(R.zB,{control:et.control,name:"inn",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{children:[(0,a.jsx)(R.lR,{children:"ИНН"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(A.p,{placeholder:"1234567890",maxLength:10,value:s.value||"",onChange:s.onChange})}),(0,a.jsx)(R.C5,{})]})}})]}):(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,a.jsx)(R.zB,{control:et.control,name:"firstName",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{children:[(0,a.jsx)(R.lR,{children:"Имя"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(A.p,{value:s.value||"",onChange:s.onChange})}),(0,a.jsx)(R.C5,{})]})}}),(0,a.jsx)(R.zB,{control:et.control,name:"lastName",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{children:[(0,a.jsx)(R.lR,{children:"Фамилия"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(A.p,{value:s.value||"",onChange:s.onChange})}),(0,a.jsx)(R.C5,{})]})}}),(0,a.jsx)(R.zB,{control:et.control,name:"patronymic",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{className:"md:col-span-2",children:[(0,a.jsx)(R.lR,{children:"Отчество"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(A.p,{placeholder:"При наличии",value:s.value||"",onChange:s.onChange})}),(0,a.jsx)(R.C5,{})]})}})]}),(ei||eo)&&(0,a.jsx)(R.zB,{control:et.control,name:"description",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{children:[(0,a.jsx)(R.lR,{children:"Описание"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(P.RichTextEditor,{content:s.value||"",onChange:s.onChange,placeholder:eo?"Расскажите о вашей компании...":"Расскажите о себе и вашем опыте...",maxLength:2048})}),(0,a.jsx)(R.C5,{})]})}}),(0,a.jsx)("div",{className:"pt-2",children:(0,a.jsxs)(l.$,{type:"submit",disabled:L,children:[L&&(0,a.jsx)(d.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Сохранить изменения"]})})]})}):(0,a.jsx)("div",{className:"divide-y divide-border text-sm",children:eo?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex py-3 justify-between items-center",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"Название компании"}),(0,a.jsx)("span",{className:"font-medium",children:k.companyName})]}),(0,a.jsxs)("div",{className:"flex py-3 justify-between items-center",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"ИНН"}),(0,a.jsx)("span",{className:"font-medium",children:k.inn||"—"})]}),(ei||eo)&&k.description&&(0,a.jsxs)("div",{className:"py-4",children:[(0,a.jsx)("span",{className:"text-muted-foreground block mb-2",children:"Описание"}),(0,a.jsx)(J,{description:k.description,maxLines:10})]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex py-3 justify-between items-center",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"Имя"}),(0,a.jsx)("span",{className:"font-medium",children:k.firstName})]}),(0,a.jsxs)("div",{className:"flex py-3 justify-between items-center",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"Фамилия"}),(0,a.jsx)("span",{className:"font-medium",children:k.lastName})]}),(0,a.jsxs)("div",{className:"flex py-3 justify-between items-center",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"Отчество"}),(0,a.jsx)("span",{className:"font-medium",children:k.patronymic||"—"})]}),(ei||eo)&&k.description&&(0,a.jsxs)("div",{className:"py-4",children:[(0,a.jsx)("span",{className:"text-muted-foreground block mb-2",children:"Описание"}),(0,a.jsx)(J,{description:k.description,maxLines:10})]})]})})})]}),"communication"===W&&(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{className:"flex flex-row items-center justify-between space-y-0",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(i.ZB,{className:"text-xl",children:"Связь"}),(0,a.jsx)(i.BT,{children:"Контактные данные"})]}),(0,a.jsx)(l.$,{variant:"ghost",size:"sm",onClick:()=>G(!_),children:_?"Отмена":"Изменить"})]}),(0,a.jsx)(i.Wu,{children:_?(0,a.jsx)(R.lV,{...ea,children:(0,a.jsxs)("form",{onSubmit:ea.handleSubmit(er),className:"space-y-4",children:[(0,a.jsx)(R.zB,{control:ea.control,name:"newPhone",render:e=>{let{field:s}=e;return(0,a.jsxs)(R.eI,{children:[(0,a.jsx)(R.lR,{children:"Новый номер телефона"}),(0,a.jsx)(R.MJ,{children:(0,a.jsx)(A.p,{placeholder:"+7",value:s.value||"",onChange:s.onChange})}),(0,a.jsx)(R.C5,{})]})}}),(0,a.jsxs)(l.$,{type:"submit",disabled:L,children:[L&&(0,a.jsx)(d.A,{className:"mr-2 h-4 w-4 animate-spin"}),"Подтвердить"]})]})}):(0,a.jsxs)("div",{className:"flex py-2 justify-between items-center text-sm",children:[(0,a.jsx)("span",{className:"text-muted-foreground",children:"Телефон"}),(0,a.jsx)("span",{className:"font-medium",children:(0,c.n)(k.phone)})]})})]}),"competencies"===W&&(ei||eo)&&(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{children:[(0,a.jsx)(i.ZB,{className:"text-xl",children:"Компетенции"}),(0,a.jsx)(i.BT,{children:"Укажите навыки и специализации для быстрого поиска вас клиентами."})]}),(0,a.jsx)(i.Wu,{children:(0,a.jsx)(Z,{value:k.competencies||[],onChange:F,placeholder:"Например: Сантехник, Электрик...",maxTags:50})})]}),"location"===W&&(ei||eo)&&k.location&&(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{className:"flex flex-row items-center justify-between space-y-0",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(i.ZB,{className:"text-xl",children:"Локация"}),(0,a.jsx)(i.BT,{children:"Где вы сейчас находитесь и работаете"})]}),(0,a.jsxs)(l.$,{variant:"ghost",size:"sm",onClick:()=>q(!0),children:[(0,a.jsx)(g.A,{className:"h-4 w-4 mr-1"}),"Изменить"]})]}),(0,a.jsx)(i.Wu,{children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"p-4 bg-muted/30 rounded-lg border",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-1",children:"Базовая локация (домашний регион):"}),(0,a.jsxs)("p",{className:"text-base font-medium flex items-center gap-2",children:[(0,a.jsx)(h.A,{className:"h-4 w-4 text-primary"}),k.location]})]}),k.currentLocation&&k.currentLocation!==k.location&&(0,a.jsxs)("div",{className:"p-4 bg-blue-50/50 dark:bg-blue-900/10 rounded-lg border border-blue-100 dark:border-blue-900",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-1",children:"Фактическое местоположение сейчас:"}),(0,a.jsxs)("p",{className:"text-base font-medium text-blue-700 dark:text-blue-400 flex items-center gap-2",children:[(0,a.jsx)(h.A,{className:"h-4 w-4"}),k.currentLocation]})]})]})})]}),"schedule"===W&&(ei||eo)&&(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{className:"flex flex-row items-center justify-between space-y-0",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(i.ZB,{className:"text-xl",children:"График работы"}),(0,a.jsx)(i.BT,{children:"Укажите, в какие дни и часы вы доступны для заказов"})]}),(0,a.jsxs)(l.$,{variant:"ghost",size:"sm",onClick:()=>ee(!0),children:[(0,a.jsx)(g.A,{className:"h-4 w-4 mr-1"}),"Изменить"]})]}),(0,a.jsx)(i.Wu,{children:(0,a.jsx)(K,{workSchedule:k.workSchedule})})]}),"account"===W&&(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{children:[(0,a.jsx)(i.ZB,{className:"text-xl",children:"Управление аккаунтом"}),(0,a.jsx)(i.BT,{children:"Настройки безопасности и удаление данных профиля."})]}),(0,a.jsxs)(i.Wu,{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"p-4 bg-muted/30 rounded-lg border border-border",children:[(0,a.jsxs)("h3",{className:"font-medium mb-2 flex items-center gap-2",children:[(0,a.jsx)(b.A,{className:"h-4 w-4 text-muted-foreground"}),"Сменить пароль"]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"Регулярная смена пароля помогает защитить ваш аккаунт от несанкционированного доступа."}),(0,a.jsx)(l.$,{variant:"outline",onClick:()=>V(!0),children:"Изменить пароль"})]}),(0,a.jsxs)("div",{className:"p-4 rounded-lg border border-destructive/30 bg-destructive/10",children:[(0,a.jsxs)("h3",{className:"font-medium text-destructive mb-2 flex items-center gap-2",children:[(0,a.jsx)(v.A,{className:"h-4 w-4"}),"Удаление профиля"]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"Удаление аккаунта необратимо. При удалении будут стерты все ваши данные, услуги и история работ."}),(0,a.jsx)(l.$,{variant:"destructive",onClick:()=>{confirm("Вы полностью уверены, что хотите удалить аккаунт? Это действие необратимо и приведет к потере всех данных.")&&(I(),D.push("/"))},children:"Безвозвратно удалить аккаунт"})]})]})]})]})]}),(0,a.jsx)(el,{open:H,onOpenChange:V}),(0,a.jsx)(ec,{open:Q,onOpenChange:q,initialLocation:k.location,initialCurrentLocation:k.currentLocation}),(0,a.jsx)(eu,{open:X,onOpenChange:ee,initialIsAlwaysReady:null===(e=k.workSchedule)||void 0===e?void 0:e.isAlwaysReady,initialSchedulePerDay:null===(s=k.workSchedule)||void 0===s?void 0:s.schedulePerDay})]})}},2291:(e,s,t)=>{"use strict";t.d(s,{S:()=>c});var a=t(5155),n=t(2115),r=t(6352),l=t(8867),i=t(7549);let c=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,a.jsx)(r.bL,{ref:s,className:(0,i.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...n,children:(0,a.jsx)(r.C1,{className:(0,i.cn)("flex items-center justify-center text-current"),children:(0,a.jsx)(l.A,{className:"h-4 w-4"})})})});c.displayName=r.bL.displayName},2896:(e,s,t)=>{"use strict";t.r(s),t.d(s,{RichTextEditor:()=>j});var a=t(5155),n=t(9372),r=t(9448),l=t(53),i=t(2115),c=t(878),o=t(9201),d=t(8701),m=t(9021),x=t(5814),u=t(4113),h=t(3243),p=t(2921),f=t(3312);function j(e){let{content:s,onChange:t,placeholder:j,maxLength:g}=e,b=(0,n.hG)({immediatelyRender:!1,extensions:[r.A.configure({link:!1}),l.Ay.configure({openOnClick:!1,HTMLAttributes:{class:"text-blue-600 hover:underline cursor-pointer"}})],content:s,onUpdate:e=>{let{editor:s}=e,a=s.getHTML(),n=s.getText();g&&n.length>g||t(a)},editorProps:{attributes:{class:"prose prose-sm max-w-none focus:outline-none min-h-[200px] px-3 py-2"}}});(0,i.useCallback)(e=>{e.preventDefault();let s=e.currentTarget.getAttribute("href");if(s){if(s.startsWith("http://")||s.startsWith("https://")){let e=new URL(s).hostname;confirm("Вы переходите на внешний ресурс: ".concat(e,"\n\n")+"Ссылка: ".concat(s,"\n\n")+"Вы уверены, что хотите перейти?")&&window.open(s,"_blank","noopener,noreferrer")}else window.open(s,"_blank")}},[]);let v=(0,i.useCallback)(()=>{if(!b)return;let e=b.getAttributes("link").href,s=window.prompt("Введите URL ссылки:",e||"");if(null!==s){if(""===s){b.chain().focus().extendMarkRange("link").unsetLink().run();return}b.chain().focus().extendMarkRange("link").setLink({href:s}).run()}},[b]),N=(0,i.useCallback)(()=>{b&&b.chain().focus().extendMarkRange("link").unsetLink().run()},[b]);if((0,i.useEffect)(()=>{b&&s!==b.getHTML()&&b.commands.setContent(s)},[s,b]),!b)return null;let y=b.getText().length,w=g&&y>g;return(0,a.jsxs)("div",{className:"border rounded-md overflow-hidden",children:[(0,a.jsxs)("div",{className:"border-b bg-muted/50 p-2 flex flex-wrap gap-1",children:[(0,a.jsx)(f.$,{type:"button",variant:b.isActive("bold")?"default":"ghost",size:"sm",onClick:()=>b.chain().focus().toggleBold().run(),title:"Жирный (Ctrl+B)",children:(0,a.jsx)(c.A,{className:"h-4 w-4"})}),(0,a.jsx)(f.$,{type:"button",variant:b.isActive("italic")?"default":"ghost",size:"sm",onClick:()=>b.chain().focus().toggleItalic().run(),title:"Курсив (Ctrl+I)",children:(0,a.jsx)(o.A,{className:"h-4 w-4"})}),(0,a.jsx)("div",{className:"w-px h-6 bg-border mx-1"}),(0,a.jsx)(f.$,{type:"button",variant:b.isActive("bulletList")?"default":"ghost",size:"sm",onClick:()=>b.chain().focus().toggleBulletList().run(),title:"Маркированный список",children:(0,a.jsx)(d.A,{className:"h-4 w-4"})}),(0,a.jsx)(f.$,{type:"button",variant:b.isActive("orderedList")?"default":"ghost",size:"sm",onClick:()=>b.chain().focus().toggleOrderedList().run(),title:"Нумерованный список",children:(0,a.jsx)(m.A,{className:"h-4 w-4"})}),(0,a.jsx)("div",{className:"w-px h-6 bg-border mx-1"}),b.isActive("link")?(0,a.jsx)(f.$,{type:"button",variant:"default",size:"sm",onClick:N,title:"Убрать ссылку",children:(0,a.jsx)(x.A,{className:"h-4 w-4"})}):(0,a.jsx)(f.$,{type:"button",variant:"ghost",size:"sm",onClick:v,title:"Добавить ссылку",children:(0,a.jsx)(u.A,{className:"h-4 w-4"})}),(0,a.jsx)("div",{className:"w-px h-6 bg-border mx-1"}),(0,a.jsx)(f.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>b.chain().focus().undo().run(),disabled:!b.can().undo(),title:"Отменить (Ctrl+Z)",children:(0,a.jsx)(h.A,{className:"h-4 w-4"})}),(0,a.jsx)(f.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>b.chain().focus().redo().run(),disabled:!b.can().redo(),title:"Повторить (Ctrl+Y)",children:(0,a.jsx)(p.A,{className:"h-4 w-4"})})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(n.$Z,{editor:b}),b.isEmpty&&j&&(0,a.jsx)("div",{className:"absolute top-2 left-3 text-muted-foreground pointer-events-none",children:j})]}),g&&(0,a.jsxs)("div",{className:"border-t px-3 py-2 text-xs flex justify-between",children:[(0,a.jsxs)("span",{className:"text-muted-foreground",children:["Поддерживаются: ",(0,a.jsx)("strong",{children:"жирный"}),", ",(0,a.jsx)("em",{children:"курсив"}),", списки, ссылки"]}),(0,a.jsxs)("span",{className:w?"text-destructive font-medium":"text-muted-foreground",children:[y," / ",g," символов"]})]})]})}},1567:(e,s,t)=>{"use strict";t.d(s,{cn:()=>r});var a=t(3463),n=t(9795);function r(){for(var e=arguments.length,s=Array(e),t=0;t<e;t++)s[t]=arguments[t];return(0,n.QP)((0,a.$)(s))}}},e=>{var s=s=>e(e.s=s);e.O(0,[4,277,92,273,814,465,445,246,70,441,517,358],()=>s(7145)),_N_E=e.O()}]);