1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[82751],{82751:function(e,t,r){r.r(t),r.d(t,{default:function(){return T}});var a=r(57437),n=r(2265),s=r(88654),o=r(33101),i=r(90658),l=r(38543),d=r(50793),c=r(27554),u=r(52505),h=r(90752),m=r(21127),x=r(52205),f=r(8319),p=r(61888),v=r(89402),y=r(75263),j=r(23229),g=r(36261),Z=r(49715),b=r(73985),C=r(66825),w=r(31835),S=r(95386),D=r(94551),_=r(13327),V=r(11617),k=r(86873),E=r(64262),z=r(75018);function T(e){var t,r,T,P,H;let{userId:I,currentProfile:L,onLoadVersion:M,onSaveVersion:N}=e,[B,R]=(0,n.useState)([]),[W,F]=(0,n.useState)(!1),[A,O]=(0,n.useState)(!1),[U,q]=(0,n.useState)(!1),[G,J]=(0,n.useState)(""),[Q,K]=(0,n.useState)(""),[X,Y]=(0,n.useState)(!1),[$,ee]=(0,n.useState)(null);(0,n.useEffect)(()=>{et()},[I]);let et=async()=>{try{F(!0),ee(null);let e=await fetch("/api/admin/profile-versions/".concat(I));if(!e.ok){if(500===e.status){console.warn("Profile versions table not found - this is expected for new installations"),R([]);return}throw Error("Failed to fetch versions")}let{versions:t}=await e.json();R(t||[])}catch(e){console.error("Error loading versions:",e),ee(null),R([])}finally{F(!1)}},er=async()=>{if(!G.trim()){ee("Version name is required");return}try{if(Y(!0),ee(null),N)await N(G,Q);else if(!(await fetch("/api/admin/profile-versions/".concat(I),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({versionName:G,changeSummary:Q,profileData:L,createdBy:"admin"})})).ok)throw Error("Failed to save version");q(!1),J(""),K(""),await et()}catch(e){console.error("Error saving version:",e),ee("Failed to save version")}finally{Y(!1)}},ea=async e=>{try{F(!0),ee(null);let t=await fetch("/api/admin/profile-versions/load/".concat(e));if(!t.ok)throw Error("Failed to load version");let{profile:r}=await t.json();M(r)}catch(e){console.error("Error loading version:",e),ee("Failed to load version")}finally{F(!1)}};return(0,a.jsxs)(s.Z,{sx:{mb:3,p:3,bgcolor:"primary.50",border:2,borderColor:"primary.main"},children:[$&&(0,a.jsx)(o.Z,{severity:"error",sx:{mb:2},onClose:()=>ee(null),children:$}),(0,a.jsxs)(i.default,{variant:"h6",gutterBottom:!0,sx:{display:"flex",alignItems:"center",gap:1,color:"primary.main"},children:[(0,a.jsx)(_.Z,{}),"\uD83D\uDCDA Profile Version Control & History"]}),0===B.length&&!W&&(0,a.jsx)(o.Z,{severity:"info",sx:{mb:2},children:(0,a.jsxs)(i.default,{variant:"body2",children:[(0,a.jsx)("strong",{children:"Versioning setup needed:"})," Run the Supabase table creation to enable version history. See ",(0,a.jsx)("code",{children:"SUPABASE_TABLE_CREATION_GUIDE.md"})," for 2-minute setup."]})}),(0,a.jsxs)(l.default,{sx:{display:"flex",gap:2,alignItems:"center",mb:2,flexWrap:"wrap"},children:[(0,a.jsxs)(i.default,{variant:"body2",color:"text.secondary",children:["Current: Version ",B.length>0?Math.max(...B.map(e=>e.version_number))+1:1]}),(0,a.jsx)(d.default,{label:new Date().toLocaleDateString(),size:"small",color:"primary"}),(0,a.jsxs)(i.default,{variant:"body2",color:"text.secondary",children:["(",(((null===(t=L.personal_goals)||void 0===t?void 0:t.length)||0)+((null===(r=L.linkedin_profile_text)||void 0===r?void 0:r.length)||0)+((null===(T=L.social_media_posts)||void 0===T?void 0:T.length)||0)+((null===(P=L.blog_content)||void 0===P?void 0:P.length)||0)+((null===(H=L.coaches)||void 0===H?void 0:H.length)||0)).toLocaleString()," chars)"]}),B.length>0&&(0,a.jsx)(d.default,{label:"".concat(B.length," saved version").concat(1===B.length?"":"s"),size:"small",color:"success",variant:"outlined"})]}),(0,a.jsx)(c.Z,{sx:{my:2}}),(0,a.jsxs)(l.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsx)(u.default,{variant:"contained",color:"primary",startIcon:(0,a.jsx)(V.Z,{}),onClick:()=>q(!0),sx:{fontWeight:"bold"},children:"\uD83D\uDCBE Save Current Profile as Version"}),(0,a.jsxs)(u.default,{variant:"outlined",startIcon:(0,a.jsx)(_.Z,{}),onClick:()=>O(!A),disabled:W,children:["\uD83D\uDCDC View History (",B.length,")"]}),B.length>1&&(0,a.jsx)(u.default,{variant:"outlined",size:"small",startIcon:(0,a.jsx)(z.Z,{}),onClick:()=>{console.log("Version comparison not yet implemented")},children:"Compare Versions"})]}),A&&(0,a.jsxs)(h.Z,{sx:{mt:2}
1,children:[(0,a.jsx)(m.Z,{expandIcon:(0,a.jsx)(D.Z,{}),children:(0,a.jsxs)(i.default,{children:["Version History (",B.length," versions)"]})}),(0,a.jsx)(x.Z,{children:W?(0,a.jsx)(l.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,a.jsx)(f.Z,{size:24})}):0===B.length?(0,a.jsxs)(o.Z,{severity:"info",sx:{mt:2},children:[(0,a.jsx)(i.default,{variant:"body2",gutterBottom:!0,children:(0,a.jsx)("strong",{children:"No saved versions yet."})}),(0,a.jsx)(i.default,{variant:"body2",children:'Click "\uD83D\uDCBE Save Current Profile as Version" above to create your first version snapshot. This allows you to save different versions of the profile and restore them later.'})]}):(0,a.jsx)(p.Z,{children:B.map(e=>(0,a.jsxs)(v.ZP,{divider:!0,children:[(0,a.jsx)(y.Z,{primary:(0,a.jsxs)(l.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsxs)(i.default,{variant:"subtitle2",children:["Version ",e.version_number,e.version_name&&" - ".concat(e.version_name)]}),(0,a.jsx)(d.default,{label:"".concat(e.total_characters.toLocaleString()," chars"),size:"small",variant:"outlined"})]}),secondary:(0,a.jsxs)(l.default,{children:[(0,a.jsxs)(i.default,{variant:"caption",color:"text.secondary",children:[new Date(e.created_at).toLocaleString()," by ",e.created_by]}),e.change_summary&&(0,a.jsx)(i.default,{variant:"body2",sx:{mt:.5},children:e.change_summary})]})}),(0,a.jsx)(j.Z,{children:(0,a.jsxs)(l.default,{sx:{display:"flex",gap:1},children:[(0,a.jsx)(g.Z,{size:"small",onClick:()=>ea(e.id),title:"Load this version",disabled:W,children:(0,a.jsx)(E.Z,{})}),(0,a.jsx)(g.Z,{size:"small",title:"Preview version (coming soon)",disabled:!0,children:(0,a.jsx)(k.Z,{})})]})})]},e.id))})})]}),(0,a.jsxs)(Z.Z,{open:U,onClose:()=>q(!1),maxWidth:"sm",fullWidth:!0,children:[(0,a.jsx)(b.Z,{children:"Save Profile Version"}),(0,a.jsxs)(C.Z,{children:[(0,a.jsx)(i.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Create a named snapshot of the current profile state for easy restoration later."}),(0,a.jsx)(w.Z,{autoFocus:!0,margin:"dense",label:"Version Name",fullWidth:!0,variant:"outlined",value:G,onChange:e=>J(e.target.value),placeholder:"e.g., After Q4 review updates",sx:{mb:2}}),(0,a.jsx)(w.Z,{margin:"dense",label:"Change Summary (Optional)",fullWidth:!0,multiline:!0,rows:3,variant:"outlined",value:Q,onChange:e=>K(e.target.value),placeholder:"Describe what changes were made in this version..."})]}),(0,a.jsxs)(S.Z,{children:[(0,a.jsx)(u.default,{onClick:()=>q(!1),disabled:X,children:"Cancel"}),(0,a.jsx)(u.default,{onClick:er,variant:"contained",disabled:X||!G.trim(),startIcon:X?(0,a.jsx)(f.Z,{size:16}):(0,a.jsx)(V.Z,{}),children:X?"Saving...":"Save Version"})]})]})]})}},75018:function(e,t,r){var a=r(64059),n=r(57437);t.Z=(0,a.Z)((0,n.jsx)("path",{d:"M10 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h5v2h2V1h-2zm0 15H5l5-6zm9-15h-5v2h5v13l-5-6v9h5c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2"}),"Compare")},13327:function(e,t,r){var a=r(64059),n=r(57437);t.Z=(0,a.Z)((0,n.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"History")},64262:function(e,t,r){var a=r(64059),n=r(57437);t.Z=(0,a.Z)((0,n.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"Restore")},11617:function(e,t,r){var a=r(64059),n=r(57437);t.Z=(0,a.Z)((0,n.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z"}),"Save")},86873:function(e,t,r){var a=r(64059),n=r(57437);t.Z=(0,a.Z)((0,n.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},73985:function(e,t,r){var a=r(2265),n=r(61994),s=r(7609),o=r(90658),i=r(1589),l=r(42318),d=r(51864),c=r(70708),u=r(57437);let h=e=>{let{classes:t}=e;return(0,s.Z)({root:["root"]},d.a,t)},m=(0,i.ZP)(o.default,{name:"MuiDialogTitle",slot:"Root"})({padding:"16px 24px",flex:"0 0 auto"}),x=a.forwardRef(function(e,t){let r=(0,l.i)({props:e,name:"MuiDialogTitle"}),{className:s,id:o,...i}
1=r,d=h(r),{titleId:x=o}=a.useContext(c.Z);return(0,u.jsx)(m,{component:"h2",className:(0,n.Z)(d.root,s),ownerState:r,ref:t,variant:"h6",id:null!=o?o:x,...i})});t.Z=x},75263:function(e,t,r){var a=r(2265),n=r(61994),s=r(7609),o=r(22634),i=r(90658),l=r(54305),d=r(1589),c=r(42318),u=r(81271),h=r(69921),m=r(57437);let x=e=>{let{classes:t,inset:r,primary:a,secondary:n,dense:o}=e;return(0,s.Z)({root:["root",r&&"inset",o&&"dense",a&&n&&"multiline"],primary:["primary"],secondary:["secondary"]},u.L,t)},f=(0,d.ZP)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[{["& .".concat(u.Z.primary)]:t.primary},{["& .".concat(u.Z.secondary)]:t.secondary},t.root,r.inset&&t.inset,r.primary&&r.secondary&&t.multiline,r.dense&&t.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[".".concat(o.Z.root,":where(& .").concat(u.Z.primary,")")]:{display:"block"},[".".concat(o.Z.root,":where(& .").concat(u.Z.secondary,")")]:{display:"block"},variants:[{props:e=>{let{ownerState:t}=e;return t.primary&&t.secondary},style:{marginTop:6,marginBottom:6}},{props:e=>{let{ownerState:t}=e;return t.inset},style:{paddingLeft:56}}]}),p=a.forwardRef(function(e,t){let r=(0,c.i)({props:e,name:"MuiListItemText"}),{children:s,className:o,disableTypography:d=!1,inset:u=!1,primary:p,primaryTypographyProps:v,secondary:y,secondaryTypographyProps:j,slots:g={},slotProps:Z={},...b}=r,{dense:C}=a.useContext(l.Z),w=null!=p?p:s,S=y,D={...r,disableTypography:d,inset:u,primary:!!w,secondary:!!S,dense:C},_=x(D),V={slots:g,slotProps:{primary:v,secondary:j,...Z}},[k,E]=(0,h.Z)("root",{className:(0,n.Z)(_.root,o),elementType:f,externalForwardedProps:{...V,...b},ownerState:D,ref:t}),[z,T]=(0,h.Z)("primary",{className:_.primary,elementType:i.default,externalForwardedProps:V,ownerState:D}),[P,H]=(0,h.Z)("secondary",{className:_.secondary,elementType:i.default,externalForwardedProps:V,ownerState:D});return null==w||w.type===i.default||d||(w=(0,m.jsx)(z,{variant:C?"body2":"body1",component:(null==T?void 0:T.variant)?void 0:"span",...T,children:w})),null==S||S.type===i.default||d||(S=(0,m.jsx)(P,{variant:"body2",color:"textSecondary",...H,children:S})),(0,m.jsxs)(k,{...E,children:[w,S]})});t.Z=p}}]);
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.