FRE-709: DONE - final state, all memory updates committed
This commit is contained in:
BIN
dist/assets/128x128-C2pl-Bao.png
vendored
BIN
dist/assets/128x128-C2pl-Bao.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB |
BIN
dist/assets/32x32-0ab4xkmQ.png
vendored
BIN
dist/assets/32x32-0ab4xkmQ.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 908 B |
2
dist/assets/AppLayout-B2IMoOrv.js
vendored
2
dist/assets/AppLayout-B2IMoOrv.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{u as A,a as w,c as D,i as e,b as a,A as r,d as E,e as F,t as n,f as L}from"./main-kFSMP3Dq.js";var O=n("<span class=freno-nav-icon>📊"),T=n("<span class=freno-nav-text>Dashboard"),U=n("<span class=freno-nav-icon>📈"),y=n("<span class=freno-nav-text>KPIs"),I=n("<span class=freno-nav-icon>📁"),K=n("<span class=freno-nav-text>Projects"),N=n("<span class=freno-nav-icon>👥"),R=n("<span class=freno-nav-text>Teams"),q=n("<div class=freno-avatar>"),z=n("<div class=freno-user-info><div class=freno-user-name></div><div class=freno-user-email>"),B=n('<div class=freno-layout><aside class=freno-sidebar><div class=freno-sidebar-header><div class=freno-logo><span class=freno-logo-icon>F</span><span class=freno-logo-text>FrenoCorp</span></div><button class=freno-sidebar-toggle></button></div><nav class=freno-sidebar-nav></nav><div class=freno-sidebar-footer><div class=freno-user-menu><button class=freno-btn-icon title="Sign out">⏻</button></div></div></aside><main class=freno-main><header class=freno-header><button class=freno-mobile-menu>☰</button><div class=freno-header-content><h2 class=freno-page-title></h2></div><div class=freno-header-actions><button class=freno-btn-icon title=Notifications>🔔</button><button class=freno-btn-icon title=Settings>⚙</button></div></header><div class=freno-content>');const J=o=>{const l=A(),{signOut:_}=w(),[i,d]=D(!0);return(()=>{var f=B(),c=f.firstChild,u=c.firstChild,g=u.firstChild,p=g.nextSibling,s=u.nextSibling,x=s.nextSibling,v=x.firstChild,h=v.firstChild,C=c.nextSibling,b=C.firstChild,$=b.firstChild,k=$.nextSibling,S=k.firstChild,P=b.nextSibling;return p.$$click=()=>d(!i()),e(p,()=>i()?"◀":"▶"),e(s,a(r,{href:"/dashboard",class:"freno-nav-link",end:!0,get children(){return[O(),T()]}}),null),e(s,a(r,{href:"/kpi",class:"freno-nav-link",get children(){return[U(),y()]}}),null),e(s,a(r,{href:"/projects",class:"freno-nav-link",get children(){return[I(),K()]}}),null),e(s,a(r,{href:"/teams",class:"freno-nav-link",get children(){return[N(),R()]}}),null),e(v,a(r,{href:"/profile",class:"freno-user-link",get children(){return[(()=>{var t=q();return e(t,()=>l().user?.name?.charAt(0)?.toUpperCase()||"U"),t})(),(()=>{var t=z(),m=t.firstChild,j=m.nextSibling;return e(m,()=>l().user?.name||"User"),e(j,()=>l().user?.email),t})()]}}),h),E(h,"click",_,!0),$.$$click=()=>d(!i()),e(S,G),e(P,()=>o.children),F(()=>c.classList.toggle("freno-sidebar-collapsed",!i())),f})()};function G(){const o=window.location.pathname;return{"/dashboard":"Dashboard","/kpi":"KPI Dashboard","/projects":"Projects","/projects/new":"New Project","/profile":"Profile","/teams":"Teams"}[o]||"FrenoCorp"}L(["click"]);export{J as AppLayout};
|
||||
//# sourceMappingURL=AppLayout-B2IMoOrv.js.map
|
||||
1
dist/assets/AppLayout-B2IMoOrv.js.map
vendored
1
dist/assets/AppLayout-B2IMoOrv.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/Dashboard-Byg93aLi.js
vendored
2
dist/assets/Dashboard-Byg93aLi.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{u as H,i as e,b as v,A as f,m as S,e as j,g as L,s as T,t as a}from"./main-kFSMP3Dq.js";import{c as W}from"./service-DvNx77jR.js";var q=a("<div class=freno-dashboard><div class=freno-welcome><h1>Welcome back, <!>!</h1><p>Here's what's happening with your projects.</p></div><div class=freno-stats-grid><div class=freno-stat-card><div class=freno-stat-value></div><div class=freno-stat-label>Total Projects</div></div><div class=freno-stat-card><div class=freno-stat-value></div><div class=freno-stat-label>Active</div></div><div class=freno-stat-card><div class=freno-stat-value></div><div class=freno-stat-label>Drafts</div></div><div class=freno-stat-card><div class=freno-stat-value></div><div class=freno-stat-label>Shared</div></div></div><div class=freno-section><div class=freno-section-header><h2>Recent Projects</h2></div><div class=freno-project-grid>"),z=a("<div class=freno-empty-state><div class=freno-empty-icon>📝</div><h3>No projects yet</h3><p>Create your first project to start writing collaboratively."),B=a("<div class=freno-project-card-header><h3></h3><span>"),F=a("<p class=freno-project-card-desc>"),G=a("<div class=freno-project-card-footer><div class=freno-collaborators></div><span class=freno-date>"),I=a("<div class=freno-avatar-small>"),J=a("<div class=freno-avatar-more>+");const O=()=>{const x=H(),i=W();return(()=>{var h=q(),$=h.firstChild,p=$.firstChild,y=p.firstChild,_=y.nextSibling;_.nextSibling;var u=$.nextSibling,b=u.firstChild,w=b.firstChild,g=b.nextSibling,P=g.firstChild,m=g.nextSibling,A=m.firstChild,D=m.nextSibling,N=D.firstChild,R=u.nextSibling,c=R.firstChild;c.firstChild;var k=c.nextSibling;return e(p,()=>x().user?.name?.split(" ")[0]||"there",_),e(w,()=>i.projects().length),e(P,()=>i.projects().filter(s=>s.status==="active").length),e(A,()=>i.projects().filter(s=>s.status==="draft").length),e(N,()=>i.projects().filter(s=>s.collaborators.length>0).length),e(c,v(f,{href:"/projects/new",class:"freno-btn freno-btn-primary",children:"+ New Project"}),null),e(k,(()=>{var s=S(()=>i.projects().length===0);return()=>s()?(()=>{var r=z(),t=r.firstChild,l=t.nextSibling;return l.nextSibling,e(r,v(f,{href:"/projects/new",class:"freno-btn freno-btn-primary",children:"Create Project"}),null),r})():i.projects().slice(0,6).map(r=>v(f,{get href(){return`/projects/${r.id}`},class:"freno-project-card",get children(){return[(()=>{var t=B(),l=t.firstChild,o=l.nextSibling;return e(l,()=>r.name),e(o,()=>r.status),j(()=>L(o,`freno-badge freno-badge-${r.status}`)),t})(),(()=>{var t=F();return e(t,()=>r.description),t})(),(()=>{var t=G(),l=t.firstChild,o=l.nextSibling;return e(l,()=>r.collaborators.slice(0,3).map((C,n)=>(()=>{var d=I();return e(d,()=>String.fromCharCode(65+n)),j(E=>T(d,`--i: ${n}`,E)),d})()),null),e(l,(()=>{var C=S(()=>r.collaborators.length>3);return()=>C()&&(()=>{var n=J();return n.firstChild,e(n,()=>r.collaborators.length-3,null),n})()})(),null),e(o,()=>new Date(r.updatedAt).toLocaleDateString()),t})()]}}))})()),h})()};export{O as Dashboard};
|
||||
//# sourceMappingURL=Dashboard-Byg93aLi.js.map
|
||||
1
dist/assets/Dashboard-Byg93aLi.js.map
vendored
1
dist/assets/Dashboard-Byg93aLi.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/KPIDashboard-VlDCsNsP.js
vendored
2
dist/assets/KPIDashboard-VlDCsNsP.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/KPIDashboard-VlDCsNsP.js.map
vendored
1
dist/assets/KPIDashboard-VlDCsNsP.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/ProjectDetail-BKkF06se.js
vendored
2
dist/assets/ProjectDetail-BKkF06se.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/ProjectDetail-BKkF06se.js.map
vendored
1
dist/assets/ProjectDetail-BKkF06se.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/ProjectForm-CrROmiHM.js
vendored
2
dist/assets/ProjectForm-CrROmiHM.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{u as E,j as N,c as s,i as m,m as w,e as v,t as b,f as D}from"./main-kFSMP3Dq.js";import{c as k}from"./service-DvNx77jR.js";var A=b('<div class=freno-project-form><div class=freno-page-header><h1>New Project</h1><button class="freno-btn freno-btn-secondary">Cancel</button></div><form class=freno-form><div class=freno-form-group><label class=freno-label for=project-name>Project Name</label><input class=freno-input id=project-name type=text placeholder="My Screenplay"autofocus></div><div class=freno-form-group><label class=freno-label for=project-desc>Description</label><textarea class=freno-textarea id=project-desc placeholder="A brief description of your project..."rows=4></textarea></div><div class=freno-form-actions><button type=submit class="freno-btn freno-btn-primary">Create Project'),F=b('<div class="freno-alert freno-alert-error">');const M=()=>{const $=E(),n=N(),j=k(),[a,g]=s(""),[i,_]=s(""),[c,l]=s(""),h=async r=>{if(r.preventDefault(),!a().trim()){l("Project name is required");return}try{const e=await j.createProject(a().trim(),i().trim(),$().user.id);n(`/projects/${e.id}`)}catch(e){l(e instanceof Error?e.message:"Failed to create project")}};return(()=>{var r=A(),e=r.firstChild,x=e.firstChild,S=x.nextSibling,o=e.nextSibling,f=o.firstChild,y=f.firstChild,p=y.nextSibling,C=f.nextSibling,P=C.firstChild,d=P.nextSibling;return S.$$click=()=>n("/projects"),m(r,(()=>{var t=w(()=>!!c());return()=>t()&&(()=>{var u=F();return m(u,c),u})()})(),o),o.addEventListener("submit",h),p.$$input=t=>g(t.target.value),d.$$input=t=>_(t.target.value),v(()=>p.value=a()),v(()=>d.value=i()),r})()};D(["click","input"]);export{M as ProjectForm};
|
||||
//# sourceMappingURL=ProjectForm-CrROmiHM.js.map
|
||||
1
dist/assets/ProjectForm-CrROmiHM.js.map
vendored
1
dist/assets/ProjectForm-CrROmiHM.js.map
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"ProjectForm-CrROmiHM.js","sources":["../../src/components/projects/ProjectForm.tsx"],"sourcesContent":["import { Component, createSignal } from 'solid-js';\nimport { useNavigate } from '@solidjs/router';\nimport { useAuth } from '../../lib/auth';\nimport { createProjectService } from '../../lib/projects/service';\n\nexport const ProjectForm: Component<any> = () => {\n const auth = useAuth();\n const navigate = useNavigate();\n const projectService = createProjectService();\n\n const [name, setName] = createSignal('');\n const [description, setDescription] = createSignal('');\n const [error, setError] = createSignal('');\n\n const handleSubmit = async (e: Event) => {\n e.preventDefault();\n if (!name().trim()) {\n setError('Project name is required');\n return;\n }\n\n try {\n const project = await projectService.createProject(\n name().trim(),\n description().trim(),\n auth().user!.id\n );\n navigate(`/projects/${project.id}`);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create project');\n }\n };\n\n return (\n <div class=\"freno-project-form\">\n <div class=\"freno-page-header\">\n <h1>New Project</h1>\n <button class=\"freno-btn freno-btn-secondary\" onClick={() => navigate('/projects')}>\n Cancel\n </button>\n </div>\n\n {error() && (\n <div class=\"freno-alert freno-alert-error\">{error()}</div>\n )}\n\n <form class=\"freno-form\" onSubmit={handleSubmit}>\n <div class=\"freno-form-group\">\n <label class=\"freno-label\" for=\"project-name\">Project Name</label>\n <input\n class=\"freno-input\"\n id=\"project-name\"\n type=\"text\"\n placeholder=\"My Screenplay\"\n value={name()}\n onInput={(e) => setName(e.target.value)}\n autofocus\n />\n </div>\n\n <div class=\"freno-form-group\">\n <label class=\"freno-label\" for=\"project-desc\">Description</label>\n <textarea\n class=\"freno-textarea\"\n id=\"project-desc\"\n placeholder=\"A brief description of your project...\"\n value={description()}\n onInput={(e) => setDescription(e.target.value)}\n rows={4}\n />\n </div>\n\n <div class=\"freno-form-actions\">\n <button type=\"submit\" class=\"freno-btn freno-btn-primary\">\n Create Project\n </button>\n </div>\n </form>\n </div>\n );\n};\n"],"names":["ProjectForm","auth","useAuth","navigate","useNavigate","projectService","createProjectService","name","setName","createSignal","description","setDescription","error","setError","handleSubmit","e","preventDefault","trim","project","createProject","user","id","err","Error","message","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","$$click","_$insert","_c$","_$memo","_el$10","_tmpl$2","addEventListener","$$input","target","value","_$effect","_$delegateEvents"],"mappings":"01BAKO,MAAMA,EAA8BA,IAAM,CAC/C,MAAMC,EAAOC,EAAAA,EACPC,EAAWC,EAAAA,EACXC,EAAiBC,EAAAA,EAEjB,CAACC,EAAMC,CAAO,EAAIC,EAAa,EAAE,EACjC,CAACC,EAAaC,CAAc,EAAIF,EAAa,EAAE,EAC/C,CAACG,EAAOC,CAAQ,EAAIJ,EAAa,EAAE,EAEnCK,EAAe,MAAOC,GAAa,CAEvC,GADAA,EAAEC,eAAAA,EACE,CAACT,IAAOU,OAAQ,CAClBJ,EAAS,0BAA0B,EACnC,MACF,CAEA,GAAI,CACF,MAAMK,EAAU,MAAMb,EAAec,cACnCZ,IAAOU,KAAAA,EACPP,EAAAA,EAAcO,KAAAA,EACdhB,EAAAA,EAAOmB,KAAMC,EACf,EACAlB,EAAS,aAAae,EAAQG,EAAE,EAAE,CACpC,OAASC,EAAK,CACZT,EAASS,aAAeC,MAAQD,EAAIE,QAAU,0BAA0B,CAC1E,CACF,EAEA,OAAA,IAAA,CAAA,IAAAC,EAAAC,EAAAA,EAAAC,EAAAF,EAAAG,WAAAC,EAAAF,EAAAC,WAAAE,EAAAD,EAAAE,YAAAC,EAAAL,EAAAI,YAAAE,EAAAD,EAAAJ,WAAAM,EAAAD,EAAAL,WAAAO,EAAAD,EAAAH,YAAAK,EAAAH,EAAAF,YAAAM,EAAAD,EAAAR,WAAAU,EAAAD,EAAAN,YAAAD,OAAAA,EAAAS,QAI6D,IAAMpC,EAAS,WAAW,EAACqC,EAAAf,GAAA,IAAA,CAAA,IAAAgB,EAAAC,EAAA,IAAA,CAAA,CAKnF9B,GAAO,EAAA,MAAA,IAAP6B,EAAAA,IAAA,IAAA,CAAA,IAAAE,EAAAC,EAAAA,EAAAJ,OAAAA,EAAAG,EAC6C/B,CAAK,EAAA+B,CAAA,GAAA,CAClD,GAAA,EAAAX,CAAA,EAAAA,EAAAa,iBAAA,SAEkC/B,CAAY,EAAAqB,EAAAW,QAS/B/B,GAAMP,EAAQO,EAAEgC,OAAOC,KAAK,EAACV,EAAAQ,QAY7B/B,GAAMJ,EAAeI,EAAEgC,OAAOC,KAAK,EAACC,MAAAd,EAAAa,MAbvCzC,EAAAA,CAAM,EAAA0C,MAAAX,EAAAU,MAYNtC,EAAAA,CAAa,EAAAe,CAAA,GAAA,CAchC,EAAEyB,EAAA,CAAA,QAAA,OAAA,CAAA"}
|
||||
2
dist/assets/ProjectList-D4JXax5a.js
vendored
2
dist/assets/ProjectList-D4JXax5a.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{u as L,c as m,i as t,b as _,A as g,e as p,g as b,m as P,t as o,f as A}from"./main-kFSMP3Dq.js";import{c as D}from"./service-DvNx77jR.js";var N=o('<div class=freno-project-list><div class=freno-page-header><h1>Projects</h1></div><div class=freno-toolbar><div class=freno-search-box><input type=text placeholder="Search projects..."class=freno-input></div><div class=freno-filter-tabs></div></div><div class=freno-project-grid>'),U=o("<button>"),k=o("<div class=freno-empty-state><div class=freno-empty-icon>📁</div><h3>No projects found</h3><p>"),E=o("<div class=freno-project-card-header><h3></h3><span>"),q=o("<p class=freno-project-card-desc>"),F=o("<div class=freno-project-card-footer><span class=freno-collab-count> collaborator</span><span class=freno-date>Updated ");const z=()=>{L();const C=D(),[d,S]=m(""),[f,j]=m("all"),u=()=>{let r=C.projects();if(f()!=="all"&&(r=r.filter(s=>s.status===f())),d()){const s=d().toLowerCase();r=r.filter(c=>c.name.toLowerCase().includes(s)||c.description.toLowerCase().includes(s))}return r},x=r=>new Date(r).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"});return(()=>{var r=N(),s=r.firstChild;s.firstChild;var c=s.nextSibling,h=c.firstChild,$=h.firstChild,y=h.nextSibling,w=c.nextSibling;return t(s,_(g,{href:"/projects/new",class:"freno-btn freno-btn-primary",children:"+ New Project"}),null),$.$$input=n=>S(n.target.value),t(y,()=>["all","active","draft","archived"].map(n=>(()=>{var e=U();return e.$$click=()=>j(n),t(e,()=>n.charAt(0).toUpperCase()+n.slice(1)),p(()=>b(e,`freno-tab ${f()===n?"freno-tab-active":""}`)),e})())),t(w,(()=>{var n=P(()=>u().length===0);return()=>n()?(()=>{var e=k(),a=e.firstChild,l=a.nextSibling,i=l.nextSibling;return t(i,()=>d()||f()!=="all"?"Try adjusting your search or filters.":"Create your first project to get started."),e})():u().map(e=>_(g,{get href(){return`/projects/${e.id}`},class:"freno-project-card",get children(){return[(()=>{var a=E(),l=a.firstChild,i=l.nextSibling;return t(l,()=>e.name),t(i,()=>e.status),p(()=>b(i,`freno-badge freno-badge-${e.status}`)),a})(),(()=>{var a=q();return t(a,()=>e.description),a})(),(()=>{var a=F(),l=a.firstChild,i=l.firstChild,v=l.nextSibling;return v.firstChild,t(l,()=>e.collaborators.length,i),t(l,()=>e.collaborators.length!==1?"s":"",null),t(v,()=>x(e.updatedAt),null),a})()]}}))})()),p(()=>$.value=d()),r})()};A(["input","click"]);export{z as ProjectList};
|
||||
//# sourceMappingURL=ProjectList-D4JXax5a.js.map
|
||||
1
dist/assets/ProjectList-D4JXax5a.js.map
vendored
1
dist/assets/ProjectList-D4JXax5a.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/TeamManagement-CZHcN6Ju.js
vendored
2
dist/assets/TeamManagement-CZHcN6Ju.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{u as A,c as o,i as r,b as N,A as I,m as E,e as M,t as n,f as O}from"./main-kFSMP3Dq.js";var L=n('<div class=freno-teams><div class=freno-page-header><h1>Teams</h1><button class="freno-btn freno-btn-primary">+ New Team</button></div><div class=freno-team-grid><button class="freno-team-card freno-team-card-new"><div class=freno-team-icon>+</div><h3>Create Team'),W=n("<div class=freno-team-icon>👥"),j=n("<h3>"),P=n("<p class=freno-team-members> member"),R=n("<span class=freno-date>Created "),q=n('<div class=freno-modal-overlay><div class=freno-modal><div class=freno-modal-header><h2>Create New Team</h2><button class=freno-btn-icon>✕</button></div><form class=freno-form><div class=freno-form-group><label class=freno-label for=team-name>Team Name</label><input class=freno-input id=team-name type=text placeholder="My Writing Team"autofocus></div><div class=freno-form-actions><button type=submit class="freno-btn freno-btn-primary">Create Team</button><button type=button class="freno-btn freno-btn-secondary">Cancel');const B=()=>{const h=A(),[v]=o([{id:"team_default",name:"My Workspace",members:[{userId:h().user?.id||"",role:"owner",joinedAt:new Date().toISOString()}],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()}]),[g,a]=o(!1),[m,c]=o("");return(()=>{var i=L(),f=i.firstChild,C=f.firstChild,S=C.nextSibling,d=f.nextSibling,$=d.firstChild;return S.$$click=()=>a(!0),r(d,()=>v().map(t=>N(I,{get href(){return`/teams/${t.id}`},class:"freno-team-card",get children(){return[W(),(()=>{var e=j();return r(e,()=>t.name),e})(),(()=>{var e=P(),s=e.firstChild;return r(e,()=>t.members.length,s),r(e,()=>t.members.length!==1?"s":"",null),e})(),(()=>{var e=R();return e.firstChild,r(e,()=>new Date(t.createdAt).toLocaleDateString(),null),e})()]}})),$),$.$$click=()=>a(!0),r(i,(()=>{var t=E(()=>!!g());return()=>t()&&(()=>{var e=q(),s=e.firstChild,u=s.firstChild,w=u.firstChild,T=w.nextSibling,b=u.nextSibling,p=b.firstChild,x=p.firstChild,_=x.nextSibling,y=p.nextSibling,k=y.firstChild,D=k.nextSibling;return e.$$click=()=>a(!1),s.$$click=l=>l.stopPropagation(),T.$$click=()=>a(!1),b.addEventListener("submit",l=>{l.preventDefault(),m().trim()&&(a(!1),c(""))}),_.$$input=l=>c(l.target.value),D.$$click=()=>a(!1),M(()=>_.value=m()),e})()})(),null),i})()};O(["click","input"]);export{B as TeamManagement};
|
||||
//# sourceMappingURL=TeamManagement-CZHcN6Ju.js.map
|
||||
1
dist/assets/TeamManagement-CZHcN6Ju.js.map
vendored
1
dist/assets/TeamManagement-CZHcN6Ju.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/UserProfile-CT1xHhGY.js
vendored
2
dist/assets/UserProfile-CT1xHhGY.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{u as j,a as D,c as g,i as n,m as b,e as f,l as _,g as G,t as s,f as I}from"./main-kFSMP3Dq.js";var q=s("<div class=freno-profile><div class=freno-page-header><h1>Profile</h1></div><div class=freno-profile-card><div class=freno-profile-header><div class=freno-avatar-large></div><div class=freno-profile-info><p class=freno-email></p><span></span></div></div><div class=freno-profile-details><dl class=freno-dl><dt>User ID</dt><dd class=freno-mono></dd></dl></div></div><div class=freno-section><h2>Preferences</h2><div class=freno-preferences><div class=freno-preference-item><div><h3>Email Notifications</h3><p>Receive email updates about project activity</p></div><label class=freno-toggle><input type=checkbox checked><span class=freno-toggle-slider></span></label></div><div class=freno-preference-item><div><h3>Collaboration Alerts</h3><p>Get notified when others edit your documents</p></div><label class=freno-toggle><input type=checkbox checked><span class=freno-toggle-slider>"),z=s("<img class=freno-avatar-img>"),B=s("<span>"),F=s('<div class=freno-edit-name><input type=text class=freno-input><button class="freno-btn freno-btn-primary">Save</button><button class="freno-btn freno-btn-secondary">Cancel'),H=s('<div class=freno-name-row><h2></h2><button class="freno-btn freno-btn-small">Edit');const K=()=>{const x=j(),{updateUser:C}=D(),[S,o]=g(!1),[v,p]=g(""),r=()=>x().user,k=async()=>{const a=r();a&&(await C({name:v().trim()||a.name}),o(!1))},y=()=>{const a=r();a&&(p(a.name),o(!0))};return(()=>{var a=q(),U=a.firstChild,A=U.nextSibling,u=A.firstChild,m=u.firstChild,$=m.nextSibling,c=$.firstChild,h=c.nextSibling,E=u.nextSibling,w=E.firstChild,N=w.firstChild,P=N.nextSibling;return n(m,(()=>{var d=b(()=>!!r()?.avatarUrl);return()=>d()?(()=>{var e=z();return f(t=>{var l=r().avatarUrl,i=r().name;return l!==t.e&&_(e,"src",t.e=l),i!==t.t&&_(e,"alt",t.t=i),t},{e:void 0,t:void 0}),e})():(()=>{var e=B();return n(e,()=>r()?.name?.charAt(0)?.toUpperCase()||"U"),e})()})()),n($,(()=>{var d=b(()=>!!S());return()=>d()?(()=>{var e=F(),t=e.firstChild,l=t.nextSibling,i=l.nextSibling;return t.$$input=R=>p(R.target.value),l.$$click=k,i.$$click=()=>o(!1),f(()=>t.value=v()),e})():(()=>{var e=H(),t=e.firstChild,l=t.nextSibling;return n(t,()=>r()?.name),l.$$click=y,e})()})(),c),n(c,()=>r()?.email),n(h,()=>r()?.role),n(P,()=>r()?.id),f(()=>G(h,`freno-badge freno-badge-${r()?.role}`)),a})()};I(["input","click"]);export{K as UserProfile};
|
||||
//# sourceMappingURL=UserProfile-CT1xHhGY.js.map
|
||||
1
dist/assets/UserProfile-CT1xHhGY.js.map
vendored
1
dist/assets/UserProfile-CT1xHhGY.js.map
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/main-B2U0hTg1.css
vendored
1
dist/assets/main-B2U0hTg1.css
vendored
File diff suppressed because one or more lines are too long
262
dist/assets/main-kFSMP3Dq.js
vendored
262
dist/assets/main-kFSMP3Dq.js
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/main-kFSMP3Dq.js.map
vendored
1
dist/assets/main-kFSMP3Dq.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/service-DvNx77jR.js
vendored
2
dist/assets/service-DvNx77jR.js
vendored
@@ -1,2 +0,0 @@
|
||||
import{c as l,k as g}from"./main-kFSMP3Dq.js";const d="frenocorp_projects";function j(){try{const o=localStorage.getItem(d);return o?JSON.parse(o):[]}catch{return[]}}function P(o){localStorage.setItem(d,JSON.stringify(o))}function A(){const[o,s]=l(j()),[u,a]=l(!1);g(()=>{const t=o();P(t)});const f=async(t,n,r)=>{a(!0);const e={id:b(),name:t,description:n,ownerId:r,status:"draft",collaborators:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return s(c=>[e,...c]),a(!1),e},i=async(t,n)=>(a(!0),s(r=>r.map(e=>e.id===t?{...e,...n,updatedAt:new Date().toISOString()}:e)),a(!1),o().find(r=>r.id===t));return{projects:o,loading:u,createProject:f,updateProject:i,deleteProject:async t=>{a(!0),s(n=>n.filter(r=>r.id!==t)),a(!1)},addCollaborator:async(t,n,r)=>(a(!0),s(e=>e.map(c=>c.id!==t||c.collaborators.find(S=>S.userId===n)?c:{...c,collaborators:[...c.collaborators,{userId:n,role:r,addedAt:new Date().toISOString()}],updatedAt:new Date().toISOString()})),a(!1),o().find(e=>e.id===t)),removeCollaborator:async(t,n)=>(a(!0),s(r=>r.map(e=>e.id!==t?e:{...e,collaborators:e.collaborators.filter(c=>c.userId!==n),updatedAt:new Date().toISOString()})),a(!1),o().find(r=>r.id===t)),archiveProject:async t=>i(t,{status:"archived"})}}function b(){return`proj_${Date.now()}_${Math.random().toString(36).slice(2,9)}`}export{A as c};
|
||||
//# sourceMappingURL=service-DvNx77jR.js.map
|
||||
1
dist/assets/service-DvNx77jR.js.map
vendored
1
dist/assets/service-DvNx77jR.js.map
vendored
File diff suppressed because one or more lines are too long
21
dist/index.html
vendored
21
dist/index.html
vendored
@@ -1,21 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#518ac8" />
|
||||
<meta name="description" content="Scripter — Write Faster. The modern screenwriting platform built for how you actually work." />
|
||||
<meta name="keywords" content="screenwriting, screenplay, writing software, Final Draft alternative, collaboration" />
|
||||
<meta property="og:title" content="Scripter — Write Faster" />
|
||||
<meta property="og:description" content="The modern screenwriting platform. Real-time collaboration, AI-powered writing, industry-standard formatting." />
|
||||
<meta property="og:type" content="website" />
|
||||
<link rel="icon" type="image/png" href="/assets/32x32-0ab4xkmQ.png" />
|
||||
<link rel="apple-touch-icon" href="/assets/128x128-C2pl-Bao.png" />
|
||||
<title>Scripter — Write Faster</title>
|
||||
<script type="module" crossorigin src="/assets/main-kFSMP3Dq.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/main-B2U0hTg1.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user