- Backend: Add server-side validation with go-playground/validator/v10 - Frontend: Add toast notifications for API errors with @zerodevx/svelte-toast - UI: Complete Tokyo Night theme redesign with modern animations - Docs: Update COMPLETE_DOCUMENTATION.md and README.md with all enhancements - Validation: Email format, password strength, and input sanitization - UX: Real-time error feedback, loading states, and responsive design
2 lines
6.0 KiB
JavaScript
2 lines
6.0 KiB
JavaScript
import{f as N,a as T,c as te}from"../chunks/DUCk1qN8.js";import{i as _e}from"../chunks/VM9GfMNA.js";import{o as he}from"../chunks/BOU_Z_Ye.js";import{c as J,h as H,O as me,k as K,a as xe,b as Ee,y as _,P as be,r as ye,H as we,s as se,d as Q,m as V,Q as Te,R as Ae,S as ie,f as Ie,l as $,o as Ne,T as ee,U as ke,V as ne,W as P,X as Ce,Y as Se,Z as Me,_ as F,i as ve,p as de,$ as W,a0 as Re,a1 as Fe,j as De,D as He,I as Oe,a2 as Z,M as Y,J as M,K as S,F as le,G as z}from"../chunks/DnPHkIdi.js";import{s as B}from"../chunks/DZQwV0xP.js";import{i as O}from"../chunks/6OCXa8_L.js";import{s as oe}from"../chunks/C9HAc536.js";function ze(e,i){return i}function Le(e,i,s){for(var u=[],h=i.length,n,l=i.length,t=0;t<h;t++){let f=i[t];de(f,()=>{if(n){if(n.pending.delete(f),n.done.add(f),n.pending.size===0){var m=e.outrogroups;j(ee(n.done)),m.delete(n),m.size===0&&(e.outrogroups=null)}}else l-=1},!1)}if(l===0){var v=u.length===0&&s!==null;if(v){var a=s,o=a.parentNode;Fe(o),o.append(a),e.items.clear()}j(i,!v)}else n={pending:new Set(i),done:new Set},(e.outrogroups??=new Set).add(n)}function j(e,i=!0){for(var s=0;s<e.length;s++)De(e[s],i)}var fe;function Ve(e,i,s,u,h,n=null){var l=e,t=new Map;{var v=e;l=H?J(me(v)):v.appendChild(K())}H&&xe();var a=null,o=be(()=>{var p=s();return ke(p)?p:p==null?[]:ee(p)}),f,m=!0;function D(){c.fallback=a,Ye(c,f,l,i,u),a!==null&&(f.length===0?(a.f&F)===0?ve(a):(a.f^=F,L(a,null,l)):de(a,()=>{a=null}))}var r=Ee(()=>{f=_(o);var p=f.length;let I=!1;if(H){var y=ye(l)===we;y!==(p===0)&&(l=se(),J(l),Q(!1),I=!0)}for(var w=new Set,x=Ie,k=Ne(),d=0;d<p;d+=1){H&&V.nodeType===Te&&V.data===Ae&&(l=V,I=!0,Q(!1));var C=f[d],g=u(C,d),A=m?null:t.get(g);A?(A.v&&ie(A.v,C),A.i&&ie(A.i,d),k&&x.skipped_effects.delete(A.e)):(A=Be(t,m?l:fe??=K(),C,g,d,h,i,s),m||(A.e.f|=F),t.set(g,A)),w.add(g)}if(p===0&&n&&!a&&(m?a=$(()=>n(l)):(a=$(()=>n(fe??=K())),a.f|=F)),H&&p>0&&J(se()),!m)if(k){for(const[U,X]of t)w.has(U)||x.skipped_effects.add(X.e);x.oncommit(D),x.ondiscard(()=>{})}else D();I&&Q(!0),_(o)}),c={effect:r,items:t,outrogroups:null,fallback:a};m=!1,H&&(l=V)}function Ye(e,i,s,u,h){var n=i.length,l=e.items,t=e.effect.first,v,a=null,o=[],f=[],m,D,r,c;for(c=0;c<n;c+=1){if(m=i[c],D=h(m,c),r=l.get(D).e,e.outrogroups!==null)for(const g of e.outrogroups)g.pending.delete(r),g.done.delete(r);if((r.f&F)!==0)if(r.f^=F,r===t)L(r,null,s);else{var p=a?a.next:t;r===e.effect.last&&(e.effect.last=r.prev),r.prev&&(r.prev.next=r.next),r.next&&(r.next.prev=r.prev),R(e,a,r),R(e,r,p),L(r,p,s),a=r,o=[],f=[],t=a.next;continue}if((r.f&W)!==0&&ve(r),r!==t){if(v!==void 0&&v.has(r)){if(o.length<f.length){var I=f[0],y;a=I.prev;var w=o[0],x=o[o.length-1];for(y=0;y<o.length;y+=1)L(o[y],I,s);for(y=0;y<f.length;y+=1)v.delete(f[y]);R(e,w.prev,x.next),R(e,a,w),R(e,x,I),t=I,a=x,c-=1,o=[],f=[]}else v.delete(r),L(r,t,s),R(e,r.prev,r.next),R(e,r,a===null?e.effect.first:a.next),R(e,a,r),a=r;continue}for(o=[],f=[];t!==null&&t!==r;)(v??=new Set).add(t),f.push(t),t=t.next;if(t===null)continue}(r.f&F)===0&&o.push(r),a=r,t=r.next}if(e.outrogroups!==null){for(const g of e.outrogroups)g.pending.size===0&&(j(ee(g.done)),e.outrogroups?.delete(g));e.outrogroups.size===0&&(e.outrogroups=null)}if(t!==null||v!==void 0){var k=[];if(v!==void 0)for(r of v)(r.f&W)===0&&k.push(r);for(;t!==null;)(t.f&W)===0&&t!==e.fallback&&k.push(t),t=t.next;var d=k.length;if(d>0){var C=n===0?s:null;Le(e,k,C)}}}function Be(e,i,s,u,h,n,l,t){var v=(l&Se)!==0?(l&Me)===0?P(s,!1,!1):ne(s):null,a=(l&Ce)!==0?ne(h):null;return{v,i:a,e:$(()=>(n(i,v??s,a??h,t),()=>{e.delete(u)}))}}function L(e,i,s){if(e.nodes)for(var u=e.nodes.start,h=e.nodes.end,n=i&&(i.f&F)===0?i.nodes.start:s;u!==null;){var l=Re(u);if(n.before(u),u===h)return;u=l}}function R(e,i,s){i===null?e.effect.first=s:i.next=s,s===null?e.effect.last=i:s.prev=i}const Pe="/api";async function Ue(e=20,i=0){const s=await fetch(`${Pe}/ebooks?limit=${e}&offset=${i}`);if(!s.ok)throw new Error("Failed to fetch ebooks");return s.json()}var Xe=N('<div class="text-center py-8">Loading ebooks...</div>'),qe=N('<div class="text-red-500 text-center py-8"> </div>'),Ge=N('<div class="text-center py-8 text-gray-500">No ebooks found. Add some ebooks to get started.</div>'),Je=N('<img class="w-full h-full object-cover"/>'),Ke=N('<div class="text-gray-400 text-center p-4"><div class="text-2xl mb-2">📖</div> <div class="text-sm">No Cover</div></div>'),Qe=N('<p class="text-gray-600 text-sm mb-2"> </p>'),We=N('<p class="text-gray-700 text-sm line-clamp-3 svelte-1uha8ag"> </p>'),Ze=N('<div class="bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow"><div class="aspect-[3/4] bg-gray-200 flex items-center justify-center"><!></div> <div class="p-4"><h3 class="font-semibold text-lg mb-1 line-clamp-2 svelte-1uha8ag"> </h3> <!> <!></div></div>'),$e=N('<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"></div>'),je=N('<main class="container mx-auto px-4 py-8"><h1 class="text-3xl font-bold mb-8">Ebook Library</h1> <!></main>');function lr(e,i){He(i,!1);let s=P([]),u=P(!0),h=P(null);he(async()=>{try{Z(s,await Ue())}catch(a){Z(h,a instanceof Error?a.message:"Failed to load ebooks")}finally{Z(u,!1)}}),_e();var n=je(),l=Y(M(n),2);{var t=a=>{var o=Xe();T(a,o)},v=a=>{var o=te(),f=le(o);{var m=r=>{var c=qe(),p=M(c,!0);S(c),z(()=>B(p,_(h))),T(r,c)},D=r=>{var c=te(),p=le(c);{var I=w=>{var x=Ge();T(w,x)},y=w=>{var x=$e();Ve(x,5,()=>_(s),ze,(k,d)=>{var C=Ze(),g=M(C),A=M(g);{var U=E=>{var b=Je();z(()=>{oe(b,"src",_(d).cover_image_path),oe(b,"alt",`${_(d).title??""} cover`)}),T(E,b)},X=E=>{var b=Ke();T(E,b)};O(A,E=>{_(d).cover_image_path?E(U):E(X,!1)})}S(g);var re=Y(g,2),q=M(re),ue=M(q,!0);S(q);var ae=Y(q,2);{var ce=E=>{var b=Qe(),G=M(b);S(b),z(()=>B(G,`by ${_(d).author??""}`)),T(E,b)};O(ae,E=>{_(d).author&&E(ce)})}var pe=Y(ae,2);{var ge=E=>{var b=We(),G=M(b,!0);S(b),z(()=>B(G,_(d).description)),T(E,b)};O(pe,E=>{_(d).description&&E(ge)})}S(re),S(C),z(()=>B(ue,_(d).title)),T(k,C)}),S(x),T(w,x)};O(p,w=>{_(s).length===0?w(I):w(y,!1)},!0)}T(r,c)};O(f,r=>{_(h)?r(m):r(D,!1)},!0)}T(a,o)};O(l,a=>{_(u)?a(t):a(v,!1)})}S(n),T(e,n),Oe()}export{lr as component};
|