From 32e71e03380abcd4e14691401467237bb0f944ed Mon Sep 17 00:00:00 2001 From: dhanushd-27 Date: Sat, 31 Jan 2026 12:35:47 +0530 Subject: [PATCH 01/11] Add Authentication and Middleware control in landing page --- apps/landing/app/(auth)/signin/page.tsx | 66 +++++++++++++-- apps/landing/app/(auth)/signup/page.tsx | 76 ++++++++++++++++-- apps/landing/app/dashboard/page.tsx | 7 ++ apps/landing/app/fonts/GeistMonoVF.woff | Bin 67864 -> 0 bytes apps/landing/app/fonts/GeistVF.woff | Bin 66268 -> 0 bytes apps/landing/app/layout.tsx | 10 --- apps/landing/app/token-refresh/page.tsx | 43 ++++++++++ apps/landing/components/auth/auth-card.tsx | 2 +- .../components/landing/footer/footer.tsx | 2 +- .../components/landing/header/header.tsx | 2 +- apps/landing/components/landing/home/home.tsx | 4 +- apps/landing/lib/axios.ts | 36 +++++++++ apps/landing/middleware.ts | 54 +++++++++++++ apps/landing/package.json | 9 ++- apps/landing/services/auth.service.ts | 21 +++++ apps/server/src/services/auth.services.ts | 11 +-- bun.lockb | Bin 225848 -> 230664 bytes package.json | 1 + packages/types/src/auth.types.ts | 33 ++++++++ packages/types/src/index.ts | 1 + 20 files changed, 341 insertions(+), 37 deletions(-) create mode 100644 apps/landing/app/dashboard/page.tsx delete mode 100644 apps/landing/app/fonts/GeistMonoVF.woff delete mode 100644 apps/landing/app/fonts/GeistVF.woff create mode 100644 apps/landing/app/token-refresh/page.tsx create mode 100644 apps/landing/lib/axios.ts create mode 100644 apps/landing/middleware.ts create mode 100644 apps/landing/services/auth.service.ts create mode 100644 packages/types/src/auth.types.ts diff --git a/apps/landing/app/(auth)/signin/page.tsx b/apps/landing/app/(auth)/signin/page.tsx index 64c92b7..7bddd54 100644 --- a/apps/landing/app/(auth)/signin/page.tsx +++ b/apps/landing/app/(auth)/signin/page.tsx @@ -1,32 +1,83 @@ "use client"; -import React from "react"; +import React, { useState } from "react"; +import { useRouter } from "next/navigation"; import { AuthCard } from "../../../components/auth/auth-card"; import { Button, Input, Capsule } from "@repo/ui"; import { FcGoogle } from "react-icons/fc"; +import { signin } from "../../../services/auth.service"; export default function SignInPage() { + const router = useRouter(); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + // Form State + const [formData, setFormData] = useState({ + email: "", + password: "", + }); + + const handleChange = (e: React.ChangeEvent) => { + setFormData({ ...formData, [e.target.id]: e.target.value }); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + setError(null); + + try { + await signin(formData); + router.push("/dashboard"); + } catch (err: any) { + setError(err?.response?.data?.error || "Invalid credentials"); + } finally { + setLoading(false); + } + }; + + const handleGoogleLogin = () => { + window.location.href = `${process.env.NEXT_PUBLIC_API_URL}/auth/google`; + }; + return ( } > -
+ + {error && ( +
+ {error} +
+ )} -
@@ -41,7 +92,12 @@ export default function SignInPage() { - diff --git a/apps/landing/app/(auth)/signup/page.tsx b/apps/landing/app/(auth)/signup/page.tsx index ee4cdd0..ca41ccc 100644 --- a/apps/landing/app/(auth)/signup/page.tsx +++ b/apps/landing/app/(auth)/signup/page.tsx @@ -1,32 +1,93 @@ "use client"; -import React from "react"; +import React, { useState } from "react"; +import { useRouter } from "next/navigation"; import { AuthCard } from "../../../components/auth/auth-card"; import { Button, Input, Capsule } from "@repo/ui"; import { FcGoogle } from "react-icons/fc"; +import { signup } from "../../../services/auth.service"; export default function SignUpPage() { + const router = useRouter(); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + // Form State + const [formData, setFormData] = useState({ + name: "", + email: "", + password: "", + }); + + const handleChange = (e: React.ChangeEvent) => { + setFormData({ ...formData, [e.target.id]: e.target.value }); + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + setError(null); + + try { + await signup(formData); + router.push("/dashboard"); + } catch (err: any) { + setError(err?.response?.data?.error || "Failed to sign up"); + } finally { + setLoading(false); + } + }; + + const handleGoogleLogin = () => { + window.location.href = `${process.env.NEXT_PUBLIC_API_URL}/auth/google`; + }; + return ( } > -
+ + {error && ( +
+ {error} +
+ )} + -
@@ -41,7 +102,12 @@ export default function SignUpPage() { - diff --git a/apps/landing/app/dashboard/page.tsx b/apps/landing/app/dashboard/page.tsx new file mode 100644 index 0000000..9d421e2 --- /dev/null +++ b/apps/landing/app/dashboard/page.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +export default function Dashboard() { + return ( +
Dashboard
+ ) +} diff --git a/apps/landing/app/fonts/GeistMonoVF.woff b/apps/landing/app/fonts/GeistMonoVF.woff deleted file mode 100644 index f2ae185cbfd16946a534d819e9eb03924abbcc49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67864 zcmZsCV{|6X^LDby#!fc2?QCp28{4*X$D569+qP}vj&0lKKhN*HAKy9W>N!=Xdb(?> zQB^(TCNCxi0tx~G0t$@@g8bk8lJvX$|6bxEqGBK*H_sp-KYBnwz$0Q}BT2;-%I=)X2ub{=04r2*}TK5D+LXt~5{t z)Bof^+#0@Rw7=mKi|m$bX6?Bh~_rVfN!~Z5D+lYZ~eMdYd=)1 z?To(VG`{%|MBi{mhZ2~!F#vq`Pec9x)g^>91o^TxurUDvvGDqSS9st3-kw(m@3Xga z`qtIzyIr_nARq+I@sH7;0MG(2NPTSa#jh!1f4cEF5Xll)bpZ(>cyI|Q1wleT1wA5Y zq9^hv^x;~(?2G$>(CTL2)#Ou-rP=XDW$spn8<%0TH%F=^X^(F62Vd@bY`Wi$j$33w zf!U^8o_B|x>{pW$eFZG}b7#|uFueKt$`e9j!wHNBGQX67&nfgl(Ae`3qE-E+yBSfA zEnJSA6p%}|+P9ZIYR{w}nfaKIlV@b3YYzcH!?WNXRvg|J( z((lq^WAE%Q7;oE?zDk~Nvg1Dr_0)KH8m&HF%^&8bI!=#YAGqIx$Yf2lH9S*;=c=b6 zUHi?R*$?Q;>HU4-#?hGJ&dj2jq>d3;_NN_TeipMG!(E+ou)RL-kMQv(W$b9+k# z*%bh8;4)9Je-Giu+XwdbyoaSGei^KG*(1D)5+h{Kfg<`v)nU>dj}RiD_+VvZgb7>9 z-Qb^cdc0k1VSIW!onbm2*_uY*_+r1qe${8^DzXxMnX@F#u>I3_n0j_0ih#p?wd+gPI5niQVbIIsk zkxy%JZZqLeb?p_DXdh1*9Z(O`Nm%TZ(zL`RA!dd+$VNO>qwecEt;dy5w%UK1@1exK zD~__{?4}pb@sGL5CjI=xAR7Jym_*l%fS~I(m>6873y~E7k;IfdA_0)|1$o9?h92Js zt4eu6$WMaSodkz#g|LB%Iw?^B?6x^A=arKjpBhhH6ZCbk2{;io5x)B3eh9R{KEOQX z9|&Q1T3-YGeF+9$doOBzU`TntM~LF~ON3aEZ|p9Y7+wF9qBi`6(hl}&)@-uZ`4zJl z>R`Cps(&x90dBZ~SLeCp?oa*PgM%P!bZaG*OS96bkBT*gF)q0a zxEd&4ZXnQHBuCrYm@m@ffPQTObP*2j+P z_?=gLxmGc32nceW5l5oy=+SB$=N%F^{g}lKR9(TljKIPHw)zVyZ?3ODUL^k;0CuW% z!;ErXcl6|m8OB+{5iYNEq}!Y@o<%r_^{5a($V)INcxkIcMA}Gd8LUShZK5U!u)=PR z6ZALS*{0F1Oxl?y$xE;JA+eyc6mW}LqFTZ3ZvVl#h*UFfj`$%JE0l8D!JRBYUlH!L zJ!uZs@&)nqNg9x8t`fZ?k4Ihgdv(Ogzr)|%{JQ|-g@#=7rCIq(Oo={zr!i7F_F!6; zqpKdMO={?6)e1SETQW+U?L?WPzQx9x#RrVu%xa5u$bDgLQrF-K4Iwd}9a=yS3(f1J z=&B1p=UwPU_#kfxrJ(YnDYZkc%{pp&sn{<~MdR_9^8y%u``RUJaJtY*yi=~R9ryu@ z9kzsKGwMLhZ1egl=e5m~k^Ft9pSfxI5B!$g1WaeqpO`4?C-3aj(gSm%1+@BdqpyAV z@X|;G-&|(jA;zG>T=$%}2gC%)gu@pTPQ)SpSw*2DuSrX((%PM=kQ&E@b=Ygy)l&#k zn6Q419734+(;{THjU2Uy9No0H4_jV1#6O)c>u@tbG6oWD;-8yHLnM^;;b@dWvle!?{40o`dO)$$EZ zM^@JN7b3@-+?UUO*P#gtLsy$!7gZcziDwAj59PsCAJm>m6r+l^X1z|%wu-jJhnQ&_ znPJwq9_*qBLoo*W`sPdYk10kPgf$aH@4qU~%&pFl2rZ0AHR*E-AvBR{F9QCehDa@z z95xXU{QZg|=zb2Pq36>@3je4inO+>S(`ht?)Z#zrHM(i>qE+>iU#!8v4QnWDruR08 zihT~ec3TRJh#llhgk(NqF04=VE8}61FWwvTi_}KWRnkIGbxQ)CAyBfBoVsTvRsR!v zeeHuptQ&5sDmg3vV_f9UtqYjdrR(_D^waATK``ZJjfZD5Kduvl1+l2-u6Qf=6Ombx z7Sq ztJ92oU^LD6n$?=8G?#FGx#fF$d!2WBTf$UGVa}#`S@X&5dFIq%K!1Ikjs!+ybc~8&;<*f2$gyb>j{=&y@=kHsC%Xl#WTojY!)xQxm z+xUe-8Of9gTp&DDOh{Yy9#6leUk5m&-h{G7M@bsLtAJZq1|X(5;ulY z-D2nY-`lAFFZza${swOYsV>&wyw;MiiXw9Ze4so}{Flt`IeJQ5b1l1!d)yG4v?WEO zO3yg9oy--%g}hya8*T);IAWhS&T>>KL9Je(WS#9P#!$_f6!1`7cfKj*+i>@*tP8Mjj|un5Z`YGD>MiCU!adPX zx#5sU8_)@)5fHgRLdp7k;l9Mr_8H3SOvpCBbBRGBQ`Wih*Xpj<)C6}E4SH?GeM1wt)HAM~N<~ejyt^Wpq0tmp z6X&e+wbKjOt@{1ng^s>(semrGFCQLXu|@O1tvtmYwuZ`$BSe{a-011Sk2a~(>MVE0 zpIQ7LpuG+o?lOHuw%e_kJ6yAoXCpu*QQeY%8SNh6?$89*3`>%=;EOJb+gtz&Kp|yv zfPV+nw`uTKbxE3vpT)v3C@L}V3(f*@_3N$Flc(8e<6F?hmPF|Dt%$W})5dMX(nql2 zOMy&yEWPokJ^l?odvVv&l(un4B`x0UHu6T8LraPoL*NltIUElZ5m!YVjcyZe{0Gtx zK{scl85IYuMO$EBG$tHHu0zc0wi&8rW3`d{VJC$oYNJ?m2MBStoGQ!4xQLHS_tBeI z4=tL^Lv>Bj^g79fzfCc?aTHu%Uvn6&+a@&*N~Rba)gbaLl?WBo%1^Pjx=t&|S^9nh zu(^m2A5XEp+ZN2L2#w^7IpLW%BW#F@6{50p0liwKYe!&NWu2F@oIV-5r<}*;+3|bP ze>zfTOAXqW760vNex|NG!Xz~@Wcd5UhOk&n5clNgylEGuS)lF7K$c{a+Hl#rx-2Ic zD(HhN(=Sa(v|zonLt6q9;>ZBVh6n__yB8Pn7WCY*KX8V+u(@n9e zOTe7&?}Fvh8wHRCgku@eEVodSv4NBH%wJEO4wEp#-}%%$wR$2D5JR|@$vRkRb7}iIhxv; zshP$6ckt<2KCd5K9#gwy%I*Ey>Fe20M_29Y=)g1AcBH#@^pXEtP30j`IbaZgR2{t^ z`r?E$A9Zdf@wct0$aRwJ=i9-^yxU77e+%zOG9j-MXBP)nekEiIFHfS>Ba|3w;D?|dL35fhFX>Fi zQcepJaiZvXu&=IsDUMoZIo?5N1`h|7?WDfbJmXcY~w_lg&|t|BlK!`YFCDcu*n(Sa{%c z4$vg-+drB`)#x8&q6x0pG5p+BKvfIu#O32<*&LF;z8q?zL`41|Yicx^Yq4jz6>WcO z4=~f8fF;F-A=fL28*f$mLyZ)0X>6z$biG4VuDpiV4z zY~_evrt9XZfAzEyT`LtOtA^qKGM{Tq8NMHGIOL>T;4vaiE@lH-C<@aOeh_^m?<&&h zdXSPA^^n-i>Uj{Z%Lb+6v5B_zD^V_GWE1OBNlHndI9YW5kD^Kk@cZ&Ia z6oRdBan^1xma-m6+`d|wRJR`V~A;L2zw&Yu_yoTtgzTrhi-xxFYK659imn;^%TR%3!4mYTU`we=`K-=!r$)M^U|fng0gd4 zY&D|@id)hQ6lZ6$q#}%snpqqb>@aUApp7;*W>0UoVkg(l}MYC6COXI29 zGc~J-gZ4vC{yy!bjlkXM?rF2de*R#dL=(PI9-L-quUxck&u`DmTQjI#p*2mPjNqc? z$X9XK{UtI;@pJUK?cwIxV;%;lTG0!%y5 zJpWhb11vK@d2I=!;)F5vM`ML)^6b)LCj<7zlFm7!F$_T_`hyDZ>MEBe@A%a+9RG#y z_*KevIxJ(rEBNzd_KBWC<+$;IWH5}W4eTN}TM#4*`n;PelIth54aC}8|KHL1Kd9hY zdg6C1@KJ_+m6OHmY-}EB_QYaDnd8)^Y#fTGC1QB3E&Rq&s{PIUL5DzjJG<4E+;x=! zz3?hDSALlK#YF2II?cmMlq^D)riLWp(`LjFJNTY&BkIxb04C*yZ)Vjb*8{OJ&U(p# z3cxi}BFmgL+V%Ew9*g|D_V>-jj>E&_kXF}@LX&k)UuVIb+!>`~SGXZrZd9yBFoeR5 zNrxA*){}5*BIRJ3GSAb5CW!RX5}9`W*v3|J4v;znteT1Jn6BmRxF0|>v+o2A%ix3E z_}aH+5hk}2B`>5kW}hg%W`rkIVN-e8*j3!A(mQ&IFKdo(2cn%(!rGGG-la2y4dz)d z;cU;$Z5l<(tUS+pPC9~e+Sl_5OnGT=${=;{P%TayUQ^o1bm#Qel@0Ea2wDFsgpR8p z%{42-o*aWIGVFESm@;QGB)am8yb0`j>EazkuEVoKMd!r}nWzO!rg#7+BuCQ?4|TZ^ z`|;e56wJl>(SLl!DEUo1dvlUaqZZ{;%CQg!oaJ?FFxAmVK6uv$_;SHB!^)t!xv-f_$Bs$C)MjJg|HA#qe9b`BSwl8 z2McXH6Uvn|ClJyKV8|OT-V{LIG1v~h>gQprzhfK(DrmFQ4M!VgO!ZS8o6D1p%RSmV z+Xf5C09vC7w0t%eXb8L=U(~wlP)tZ3TaN#j4{NWJFL7# zMeiEPfaIS?IHAdP9aH+sm5udxfk^i!o76N(KewVyMk&0@OpX6rwAKG}3?0IvE?(cPM;r3Az!_xLiYFY&)}Sl<19#fU0x zj-uZ}`Ey9BnVxqbj#D{R24|$jM(dNl2KH#FvbDSz*@x<{sy48Gz=(yRiYW`ofYMu+ zzdPsn^PhpxWX2v}!sahrD*o$$3k;XDHq|HQU^rDKHq%xw$IafF=^BmtY8T@#Z%YDW zAdx@ahu2vaLq%D&-me?D(}&)mEb|5m{{oc6#p!vRnXxnizHWv)adXiBb>q0*jdBJ~Zv<2B}4vZ{P z>E)ayXwPyT&!MqX{ao=#mpGCX5|61&)PEQKmppcZigqM*Xe+;DOlb?AQ8hZ8S0~w3)(nNAK)Iuc7rg zfIT}yB^fVpt`B3Pkl;fBY6u~2&%W5O{d;oadPW=tcE^D^C>VI_JPYukh@TfhQoWZeCJ5B$7I19W@q_TM0($TkNK3wl)QIl3|@|1RCuW$X^KSG)YgdJf$ zD&q2EfNK5$`W1XPc!pW_jn16RK(}y~T4kUY!;u`93tAJiu%lz7ol{&ur{Q zrA4yCFcU|gV0|>p_`D&ByZc`)DL+`Qqx8bmSv%J+qdQd*Y<;Klb{>?OW@XKPzqewj ztIkvI-K;Hlf@9cCVRdISFG4&ME?xbBnin*J=9sxZ+*CAN{PGnwwyeqzbU^u}JEz&U zujyQvjy%LMauULwp0$59k|Lxd4Icntq<^uQ3!iJ0*EJT#GqBhF5^zk{hkBT< zKNwtg4Y`s4lJ-1VzUy%1!)~>kypou8iu}HY$;B}2qhX>w`(0ya>5ndBmNHvwz@<@d z)_T3Arr!pCuZ?)(&jZ=LnXHsU&B)ifpJd12LpQF3x4*zCIMUlbov*YMkDIX`ZQ}#B zDEm7;2>6H|!x9eQMZTTQ#83yK07tV{aiGreb{XKo=?{!()DRH+$I-(B{q;fyyO2n) z-rGbBGoMjZLapRim!$3W&f}tbELYcO^N@9^$@oA{Fw|v>Jo^sP%|m`>OsVrmyd1`r z*_-ScUuU|lzR~%OHT$uyWNQuw)pj`yF@eLl^+;zNjqf~|6huSAAIGYnALff2fZP5> zz7ARH{>mIa^RkT@w4ZV!CXF(cDn9w9CcPN-d;=6xcKKM>?vd2tUshA!XM9hA9JplyPAlKHA3W}2f4;=EdS9$VRk zJd#7BDuS+qpm{NTo#0B*Oj{$Z2l2)5j>joob07T0UCp(y#jl_ioRJq7;CrcFZ;7+D ziT+n)gme?&`MZ8Q3URYd1 zUXO6*c;TeIhsi*l(c2?lau-s#yIh8Vm$bBPLkB24pwd6-v8=f_57U7s_X=;?ZMPX$=V+KD?D%h69Plxj z6s25MR;B`_3y$P%?|Wl%v9)a+)Xt1ovYG0-8ZEx;{wk%oGLr8D(F1mGIiIYKO7qIT zkyAXybQE{@&#($=@kZpE5&n7R;k?&LuC|WbUG$$?mLATHDk-iOwVbXY!1z4~OSn zL9Iql5xuH}kpF|{#T-2i$=3HA7g2YTKZSXE!U$;^53~)*>eS`jehs0aZ z?~}w>o$4HP*axMt=ZuDj#B+$8z;s<~`^+`;?9euOJhNPximpeOXZLVk`?)op?#1LI zsEJ(3NA-`GoL{a>z!{Z>a*D$!ZnSUCRhF+h1{YrQx-{HFin8WzZefO{l z8cNaM;e7wxPv4B1qdM6*FoUE$-f@ij7)Qn+%qi1X#m$C)|q*>heV z_F1E1;>jFo_X_SxU4z7K=dzD=a^~oL!C9SEV-!KD$#mnz60qM-#pJFWBjB{A91?@LxNGc9%0{4?@cU#Y7z;WB&(t+Ux8ij z{ywC~@RW4y=k@~>Rr8pTmb$u=7qLo2Vpes~6>g_ENtTY7^pVeIg!wVc`DUmbY|`3M z-R+tCPAunS>R|zng`6f_20?)pLm}bSq%ja@pW1*wXr=T!IW0oYP6_8+GG^?eKvEc| z0FC0qr5|LsL5JWpacSeAuHLx1qO#F6G*`!D4x6a;L#0WM=HD&Vnsp=Ye)1&&^=NgK z$R=p#49`^kf{*a{V%70)-|osKU4qK8u*Ee`n^}AVgiVqOGq`)`$~)h-UbZ_TpWn5) z4AU%KuIEO^Hr5rLcT?KcOFj<^6-E5p*F`RXe_*jNQ-<*{pcs{>ypy$kvv5&h_=hdL<+0wfo7i8Zr zN2QPM2zwaYFfOrCFU7(G*GymiiuOMUH#o1w-P5{_<`RmBx9=5gvCW1?z*U9M+@ATPF1Psy-Tq}n0&H9|(XuzmZW30{I#a|z_}fb*J@}$Os9qoBgJ+y# zL#8>}`N|}X{(N$J8f*=>O{m7)%z$pbzMS2$yb0xce}L`230Nn-UPkBNZy?Asat0>M==4pw7^P*~|GtzfgB9oEz zSk=B0wEed=|Ip)4I}(ZDBYlprm6N!l&1a{)JCR@4>nZ9els~Gu+`<5ezJ3A;{B3`Ck6-7#p ziFkA{?4$2BcHuw~sGfB+sGG>sgP(eW)M^H@39}u3uf^6HSPdw&q^1jxpusc>E1p9-Su?Z)!3+F+@GwHP~|a`e`o(nklU0c z$M)W3BB{3Wn$(JgntlTNAP(iL>=b;wqp`!xMfLpa7@%+oG3L2vFv0Yd{WYP^a(Nq8 z;2jw%*$3xNJbL7%aTo}j30ZXHpm9k0sVi_dl8xNyUxDA006-~CjL%1|Og^BvD;u`5 z8eUsPX>1Jry+fY`?0PYEo<6g2_UycjSnM=1^3)pT)`AiKgWBpcxjSg3%AirFd5eP* zjvhK=PEj=}3VEoUv38N5?p1FxcdB>$Mz7(sJzqFUM>lEr#N`oGvZQdU_A z`K|dEXc~4j2p{1d#j?jW&BI$yC00u2CH5F#XOFeDJdb_wrIAZDw(D<$uoFNSLNQjK zmiC)`+pCCs75<1NJK7S?oxlh4Tt%Ivo^LVH@gw3D4)|DOKg<>hv+aNnO=o?qd) zBGw!;7ZuIzay6nnEQm`!NKyMPw{nUUXT~md>GPvp*Ji(};@O*%38?IVxSFTwda8h& z9P2K-lj+LZ<%5qMIw`qxMMTPc z%1Ih+=0rkm9R@ptoN^AtL$sNVqokbv6{Nq1?bg%!*-vI88&j7m`-g2-c|Su|XmJBx z42Uub_~d!tp@Fbl(y`29x`NFGQrL6X@8ZCx;)-D4k4cR9IoeQM*@nMU9Mcy3(NVPh zf_5O8k#(#Tw=kX}S;sXT-GpXIvnQowOrmasb{$NgKNzM^`;cBQ=W!Z=VMcOmH1-K5 z^bm4kEA0rOiCv@0Apn-2k&-3;*9MhJ?#( z5?H^2k%5!&3qybCk7+d3658c9fRy__w>T(QRzEr z6APC_Hl-})SqZ!%4*dsbIVE1#BJPv13iV6|Xed34s`O*jDYmyxsWFar_w}g$gsP-F@R z<>#H5`3B+f=oWr9JZTL7Z{APZfW5v-+aMO7e%ivNM-W#S?|Fvcyr?2@iI$Su+QJ(8 zq)JjtA!jdwfSsSQtWg8*n1W0cSx?;@IDH_LVuf6GBSq35qz-=rbdpafaqtpmaJkD6 z)FU4N`0$>ky=urSXvZ>Z5+CCcp%Qe6L{{t03OeZ+ zRCbk>BIWW0M0}3H@E=v2SKJ_R*ZIq!pRh-^0N+(eDiOZF+6xCZvte(X-r1bgx@pkv zyuQ{9&YI}0FuXVNd!Ap~T&FwUkgPRr@D4#DMnvJm1tLU6;X~EEviiyPcadF~p;X(( zPfbc8;^*!TCu>?d3D>G!=ToM}c5s~~nAt0=*7w(iu|XXp80WJwG}1joDxbSx$aAHK z_4SS%_W_33*4oH7igJ$!EPp1HV0E_tW<^(9NXO>(=o@os$07H+%tEmGFeU>MmLY06 zM#|ETy5I{ZDk;tjza2(WL4xUo)ATh)MsAvybn+I26<_Ht)DH2oGS;c^iFp z4=e6_4}OiZpR&2uo*f!1=h32V;?$GJj0|3JHsw|;xTovqX6j}6C`D5HN!C5e+*J7P zKF^L%n<_W(?l+=cLx(%qs`;Bp2y!0pTKzjaegZo4s`ypoU3=-CzI7%Qc0MjP+hvIs zvb;zY9!)RL06PHqC)}A{LHB%6N+xzQphj`@&{1BeOL{q2x78AOd_f7I+j_IvX+|Vn z;q+Ntq*~#0;rD1E65XF4;rnv1(&|XIxp1t$ep72{*Id~ItSweukLcT7ZA-LpPVd|} zI|J&@lEL%J**H(TRG(7%nGS6)l#a|*#lfUcUj($QIM!Fu1yHlZf|t(B?*%dvjr||y zmQG$R(Djjf#x&R_;KPYt+psuo(YjfvRY^YCepUr0KHi`K5E}HpQ}UVqa+|mpE`Q|< zdhU+Q^%%w9`tGj9BKCBPd)P{E&^~Nr7WBf7rUWVMq8{5g_b0ORy#>P_8@k~pp8sm` zAK8t57^DN6D~ln!mx3!7?RnjSQCppf;A@p`!|uysB)zWt0wEJ~NP^3@9h=eFIzj}u zLin3oX0!Gg7N*gAUQ-kEVRUF2Fm*1dw5V-Uda}wp?rS*;JB*a%d<;*zOP(|x(?XuX zT@q#!3@qgxWi@Lnx@t<=W4YNd1RE{H-DO3K!}#f@QS$BNWln5GJmy1GJa}{u+9e|K zO1UT>v>KSj}% z1ang#sQMe>iK-&XnHp09x5iB-ZOc{map*+J5@myMGiwFnRd*g&rOsi|J!C!Hu((A; zk{)gS&m|={yS~CZCVsNh)&>Us*frV$UMqb^bB81yA;$E^JwPt9k4NS5IK(?4EDb^A?E^z_xMj%`kfHxeCO9B#{Q6c ztL=4VCp>ts_-;MHzD@d;1d8)z^Lxwb+b;Za^}>>?(vDJ)dJ=Iw`O6{ zuC-%5D~vgwyL>QxiSK1c-}xkG{zTaJqlTx)N2nHZ+MvhzFKM(L`;XO2D1AhuiWvQ`?uM(s(Phi{U1pa_;IqwzwsmyrO{H3KvRCl7LMSLGWoUjP z$oo{WpJ<}lz@>{WL$!+Q<{hhlP|KdeGe`AZPv;w?o=@B?_3SHT1GjI4PEScrQyH8r zPDPoV{+#wyfE@$V?tuKORJ!R*uK4H84tF{_%-is=TMLf8!&|N1cAt|vc$_3U9X+bX z21!M&@Pr@ry9YoEg2S&IWRFo~(+%E2_Xr~IJZC(CXIR#Lx_2+XtScM&FJ>bgXf0FA zPfTyb_3(SA*w5%HLA_6fMi3xkGmXe{AahG1?v7F4Ylte+sgNx8yGLE6p?5b;zPAG&fcXYZRYmHY~O|d)^ay%!^0=f^?4r>4fNSZd(zC^9ro6d;5Lq& zqu+6;__+p}fb*>b26D^6eI>l%CJ;+T`zM>Jr#}sMG7K%OC?p?w)hi5GGJ05ziOq|! z=x=f4L>vZjEx~HXe#at~R17>w2uJ$!_`)8{^Tc-jR#Hi?jt-prwCrGgGn#3hl24dm zldosg>kw^8#goKcCK=*+s7-U4()3lMoxjW=HnQ_wb_FGqw*!nN`=Q7pBfaSk?msx9 z4w(l2)N4*{gEFy=qg~fFvk7l)fU6LpQTCK@WSvf&0LmzTGANW1@7+QJ3`M+dc2Y8y zt^o_&Lq1iu@x#K_YX3BI(R#bD!1=5b(kTB~ViL`hpz<*}?a~GD5=9I1B{L1C4+Y!A zA*Ore{`=ZUFVl<2uCxSy(0t{=6&oGBQqKe^J}Y>^UK%$EpwlXMh~1Xy6&;h}VGTdcm4+@ESi z$Xo1_84wSsl~^tnvi^v)!MfQFLhjh3Ay~l%t5k;|Spz?SolNM9aJ`XJ+rE?UGs%Ydbo$nb(!mkD|0>$yf2HhWp#)nthTOk*s)IOEU_qIB_MT}8Gv7w z)1iert?Vlq6I<_FNO628gDnvW)ha~1@FnX@JdNItDGO=wkA{|iNP-4H!meaW;A3nZ z*tb~SNjVUMvsZWpGORQw2MXO#j{Y%0y?P5g{}7J&J*BzZp3L|uwdx2Ppq%3F1EY>m zSL{U_Z_W>0&M^inR~kA<-my?xX;qSE7eM-kG>l%7BZ5mn^}%`$CBimAz{c$w(a%;?K4-_vd|h6H=}23A>@E z$ziyCWpieAcE+IVDsiV5^Dr}g5^v|%)Zh~w;uiM{jvo@DzuB7vpcATzIOvzJMkSIt zf26$!EdeSgg|6AiJ*vvTq+1hol{BA7%CN4P83r2@Gmb4!U~TS%DJqALJ@oDxrw{KV zzl@mD$SYoAB;sNOy?`=l4vMHD0iO4wDUDY4$EN2L3ng@)bsU^EZv5b$e3}Ewmj0W$ zGwaO3)M%7dm31}_8(ODTfo&ke!rs{EF#%p+z)O;GFw6Md@=BFP<78(Gb92!|#_5rx zIUId2V7&}LdjT8rMnpf(pkPWuO)k0vo5X+!E55DR^6&6q%s$++q;!;_q-vC3F_M4b z=gR_=C%tuW@`w`aK_{OFYZ`E$WhRj}ezCN(+F`Cp%uP7I-D0kY+|3B={b0ULsgi_5 z^_7K3#>9=Tpy%USwd7)uDGU`1jt;-9T9Z{7(GHK-BjMzSDdaEJrJ|(e19O7=axuiqvckscp64zgVR@{C^ck&^ER#d^@CMPOP)^kX( zvBciKadokDb*w>}3Yf$hgPs?wM^iGo{D8!nZOmF2Geaz!Z#H=kbC?2R(AY92O@8hC zZ9aXT7k0mUsL4-RG!BAO_;t3iI`KBfbxhjQ7 zE;Ou=mhw^wP%bG5sCx1Od@mvWIIS9S82b`Uff+*eb1*tC3mbqwfsNDC!?`lWaoCHb zEK)M5$ysY9F~81=s$x)3YKNzS$}(n_LQY@mSHh2G@bP?taR4NfT+$7Ykzuh+ogQl4 z^q$$^2ZB&A;qB(Ki2`9a2%e%j&<3O{K<;2o>N&ClpX;R=mq;M2xa%OMq^EhT`Er{N zWso(m2D#g%AIvd5;EJt}y#Ue{Y1YEqk*mK`GzGvuApSw#%V1SO?o>+OpM3~a*G|(k zT1ek`jRH@W8PboCmKYhoNq&VNN*NI8s81-U1K1&KfAe2MYhbbY~k zNxeYxvAEWJ#@xYUxwn)%p2xJdw~Zd3)l^xq?ERE+_hq@5VtqNoo+hA`2E4xl4VA9j z<58n##BL}in6!*gpoQ+4W|_icS=XlN=T6gG`&D;0PE!9}oizRS9!o&0e?Q#uw54#z zi4Tl3c}EV2UkyJ11Ruk}HT5Q6lJO$AV58k?a322~4l@s*CRw9nS z>j%EC#ja3R5pUnuw#p0;V4zy%nR6WJo~H)`uAx;!0w7z5CeY{A2(anBn-I6syH*Qe z+%%=3LRx8zE+io$W`pUMC?~j4&VzK>*an#;@^^E>zeK3=XCK6;u9pp6rY22maPvLl z`z&ftU*4?Xpf%&s?A@LcY|-La|I2`^6(e%NX@~FT%g*;q+2P%?JK1yNOM=_W`azLU zv?5hzA00oO6k_rApf~mM&@J+%w_k<3yoLuQS9sH%GISt?oobE9yfUd;ke<2SPrHRU z)9$v_dU#qc?D&aG@9n(%3;oI@{x+*p0=M!i5?XU)S@t4yv&~}?oBj=#>FAI9K2yY- z)%@LA4Nx#dT-f~umG28ayK;YCt0Y1$5%6`7-2#SB3K=uJFp|GV1QAZRyEU>`Qmsm2 z&fx!s*q7P2Ek_1M)KZOXi|5bnf>I@&BAmD55@EIx$eQKCTM?btfx&8BHK1Y2tgkfg zyS>9(&d_G=g5Lh`^Y{U8iJ%Z8iCsK^^ZU<2R8>x1^Cr`Ow%}{^W(Z(Lj7!85c32TY zSX})fwa<3`c=nJ@deoQEe}^t}7q#v%Qp&EhbNX8QF73Kbicrl!e)MJSuLn*#9YzFu z8IBvPn#-rv%m_c2r5L1&?V**H_OCY3){>UhI{?5o6Luq^eaNy`VzVH=tgX*SB;p;u zXpnS9vfL>FBveRvCG8K(t|m@e#y7$8AMb7TcWJ2zpJ;ff+@j-f!M?Md{C%|N?EL=j zq7)69qnr9+(`pngdgxFb|JX~<$JFaqlwAK|H)JX!&f<+A_1usw1UbJSBjBiwDFS1_ zUkZhZB01EPAeBj6Q&t2-d1GpIg z@vmFNf-Rlrte~+O!ehclveAU*))^3)xrKm2m@J&(F;67BpYFIdOKWuVGqY{Y;MLAm zYKcgz?DQ2szyOTX8-XDED*~~Y{5Pqje)Et)n2h(MK=^TB?SfVW>iBMA8Gs|eflsc% zy5s4YhYtd8h6iG6H}m(qj67mc+Vu^I*V;qr{mlJKjJgS*2v)1uM35IpQL%v|{(kH< zrs}>E6Uz)#b}aH2qXRbloOwx15YCG^)Xa3Igeb4KE4j(JH#%3Mn*yF(Bh~$1wEiQ_ zWpkxeyVL?*Q=yBJ$P5>EPaglkjsEBeI0F12nCY>t(OUy4uOkDL4@POv{b!wJw7laU z4}L1ASUHdyqOUnWBZ?_3n;&Cgh%BWL^SK4*$SmGDhw(DQWT8WQJzlR2{i%4r?bz7# znv`Puo^{6X3QCWnH-1xDO^e6`LW3*!x(#}UQYb^$mg z`TrJUaUt75yl^1#r-{J4e^3cAl=I_Dr=>xwm7Lg7C%(`TwY*BG#QR26>le0+ zSjA8Kpk{_9Y|)SEY2B|2Lv-Cl3gV+L#6O}c!&g65jJ@HknlYmzUS$?;sa(dF{aIy7 z=>r`$X{U0m5?@2P!cXZRoH>HH8_3W`dWy13 zce1IF^&L7{DkW(g+eI$1shczxU?#d?dON16jK6flt~Chm`~GAYEV57P{@Oe;9+#Oq zkxXR@C13kLs=fg@v!H1=+1R!=wr$(CZQFJ>w!N`!jUP6r#mw2MMX{-)F_Sgh&vcW zKE{vkxb2N=1XV@_rK%6?*bjC>#k`8`QL88_Dn?4u*vZML5knoj56%U-t0O0_fTM<# z@yL|l)s7tseqKE@4)zPbaLr5&?X}E4Ot8k>PY-VRIH%*kl_$W7(DFrMJqW(|$e|aj z<}Z}X&QMT1GGoQQxSiMf=_!b*(=4>4l#EcTp$czycI(KP4|gOnGO6L0eDozy$`iq7 z+jF{tG>&vUUYR{Kr%9Lla1L*V;2bn1ARfY9ekHvww86i!>4)o}QIaNG6vxwoJBfN& zTG^klmW8FkoO~!yLKNX`W0QJT@pnWPD={ zkDz;wyAkm}F^IwL#dxW_h}LWVc2CV}$_(NXmvU=bO)ZX+l$cV81cR}n0(X4LGVJf3 z?*69|d6rTpKAe^X@(o*wwl|!et)4$unl%-wC0oil(%97D^_P6jz`wT8$Y8Eex`Ri$ zLXK0kqAI<$(RB^aT&In;aa{9*fb^QA#6{ZM3kUoC4I9VH@~zddNKFi2!)|z0EboNE z{ia6Q1z_Y(3Y3Ly7U?{jIitwcPB?I2KkD#~_R13bhc1oA>E=UoNp-Rm^(^Z$3)D+M zBP+9fE^}*E+e~z!_m$WpyYO%_fki#~;DgZnT)#X|4zIP3;zCXlDq<`sXKAaI$LZQ} zyyr@+j|I!~63a@fS&NEj95t-RdUCfMVvVfzMYuT2H}=XOX8I`FmUKz^F>cjo!0k5Q zF?s$VdCpZVq9&~-PfUFk=~ekfUT!72%3sepTk&V6s?>ZsA#WXBWxBkf%zOn9l{e+T zyM|jKz1s1FBgTbu558xvCcama)nrIOB8fOXl%v)5WK^JSqX?#fTc~k5;-d zh(_Pd@tFK?0~+T@Iz9|(X3b6@M??0LlC407cVDzsbbl6>4~eXM1-5VW>Ztk*qTzZ<=h~(g;x?UD>*TPzg327N_qACmOb5l z^@;AHAh=}YglwU6tAbT6ApgiV*B~yXi)m!wUxg2!t8E~ zmiQ;$RIsLL$|H!HI~>8zo}XYOF3N>af&yprcg!_FIHf<+vv$RD{(%0TM>ZN<9x@MX z2+xwNd+uQ|Y`tn8I*GHUX+xEXotm(v{vvG1!!eN7`0KCReg1}Gii3Coe_4@=a;|NC znt+p)%$|a-rLke|+O;%oij#`fw}RyKW|eu;J9Ht{%7%L9JTpnrS2LjFSNIGp#)`I0 zXh`y^GS%fTg$q!#{) zC3`wacCX0}bd!Jo(AKHbye4qa+h8gyvE}Kr|1G1cA8Jg2Nk+DBUvzl|ZyVEFx*kru zTI-lfYI+HKIaSrrZ6v0hvuMLKrJGX$8nje|F&>?Dary8wZ+8jGzV&@ zE-~nInmW6Ep9@1VT3YQjx0*UO=Ps1~wI5IAFxM6<(mK4WENak8@3mY5GSKD66sm2*H*yma)O0?)7Br`1`KeHi86a#yotkjM!s%JhTraYdP+lfcCj4mpTL=a>KSHmtd)aGkvevTSKC{ud zobS+D7KMna$Q}BYHAA6dU@!Rr7)jPv=4DQ`XJXcb#cPuWh78?MNtQ73`71@!K(xT&k9 zMuP)~u=%IFwfGP$jrR`N|4C|9B;RpmzZ1AJYJfm=ly&Tp;D9d` zy*NdJYGnPL4-YR)-|D`r4~Hs5yT^a#x69-*Ix^236v77`Zro|dn&`rsO>J*}k1mP# z;tG1o*fw^5fy}5-p{{6wZE^jWBv*Kbr~+`8Ah>6*${yA%l`d9v`15!BIw9BVfYaC9 z<~*1=*RymuE#tINYfUvTv2dlN_=Eup{6)VHL4SfV(M7W7&`sLY^C6ReR9Rv7=@7%i zgP(+ZRY1XeZqZhR+7uz|f=*)v?ZxTy&A-mIS}jp#8r>)z4ulp9oV;^==msMFeh9?u zUe`TC8bqEaKErcGH^cO11Nr{wFX`Wvq{3OaWr(X$!p-So4Aa9tO`<#mS}lg5go-}G z7qL_={ySe4y)Q@36h~%XPegs65PFSnrTVATTK8e5b4)yPlCx|=sfx<-P|9pNg3T7% zSK{mNqa%XXT~v+Xv2puxdwC?4`ln9%?ClYeXt~8m2~?qnLW3Pub;*sxU4>FJy48F-(=`E7>< zN~(g}>iSE|%k#1=;(wNx?MCj1CAHyk1B4v@j9CX0i%-9WKLkGfY5bk$gd)Ixi+r4d zb3YO1Sz_u0w`4&;oM++e9mWLCTiLZk`)Ol|#i{KF9(DA-NlJS6UX|Ut`=-Oi8NDV^ zkA3{f*A2gx)11?2#&w*QjYe^mxmT`#oF#FSD3jRV9oK-?R(R@_AoU@#6;UgLd2+2D z-KBSQ9etULXa8!;*1M!7`Q77ieY5#*?P|Mzu=^9$9@F3feϣ%UY8`RWp~V-U_7 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 CLkb=M diff --git a/apps/landing/app/fonts/GeistVF.woff b/apps/landing/app/fonts/GeistVF.woff deleted file mode 100644 index 1b62daacff96dad6584e71cd962051b82957c313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66268 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 >-Aun5A4Gp>4U0IQJ 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 G)cz05(PHWV diff --git a/apps/landing/app/layout.tsx b/apps/landing/app/layout.tsx index fbc7747..d376556 100644 --- a/apps/landing/app/layout.tsx +++ b/apps/landing/app/layout.tsx @@ -3,15 +3,6 @@ import localFont from "next/font/local"; import "./globals.css"; import { ThemeProvider } from "../components/theme/theme-provider"; -const geistSans = localFont({ - src: "./fonts/GeistVF.woff", - variable: "--font-geist-sans", -}); -const geistMono = localFont({ - src: "./fonts/GeistMonoVF.woff", - variable: "--font-geist-mono", -}); - export const metadata: Metadata = { title: "CoBrain", description: "CoBrain is a platform for sharing a slice of your mind.", @@ -25,7 +16,6 @@ export default function RootLayout({ return ( diff --git a/apps/landing/app/token-refresh/page.tsx b/apps/landing/app/token-refresh/page.tsx new file mode 100644 index 0000000..2dc1a30 --- /dev/null +++ b/apps/landing/app/token-refresh/page.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { useEffect, Suspense } from "react"; +import { useRouter, useSearchParams } from "next/navigation"; +import { refresh } from "../../services/auth.service"; + +function TokenRefreshContent() { + const router = useRouter(); + const searchParams = useSearchParams(); + const from = searchParams.get("from") || "/dashboard"; + + useEffect(() => { + const performRefresh = async () => { + try { + await refresh(); + // Refresh successful, retry the original navigation + router.replace(from); + } catch (error) { + // Refresh failed, user must sign in again + router.replace("/signin"); + } + }; + + performRefresh(); + }, [router, from]); + + return ( +
+
+
+

Refreshing session...

+
+
+ ); +} + +export default function TokenRefreshPage() { + return ( + + + + ); +} diff --git a/apps/landing/components/auth/auth-card.tsx b/apps/landing/components/auth/auth-card.tsx index 02e39f7..2a6cf82 100644 --- a/apps/landing/components/auth/auth-card.tsx +++ b/apps/landing/components/auth/auth-card.tsx @@ -28,7 +28,7 @@ export function AuthCard({ alt="Auth Background" width={1000} height={1000} - className="h-full w-full object-contain" + className="h-full w-full object-cover" priority /> {imageOverlay && ( diff --git a/apps/landing/components/landing/footer/footer.tsx b/apps/landing/components/landing/footer/footer.tsx index e746ae3..be2fa54 100644 --- a/apps/landing/components/landing/footer/footer.tsx +++ b/apps/landing/components/landing/footer/footer.tsx @@ -25,7 +25,7 @@ export const Footer = () => {

{content.footer.description}

- +
diff --git a/apps/landing/components/landing/header/header.tsx b/apps/landing/components/landing/header/header.tsx index ff3688d..9e02207 100644 --- a/apps/landing/components/landing/header/header.tsx +++ b/apps/landing/components/landing/header/header.tsx @@ -58,7 +58,7 @@ export const Header = () => { {/* Right Side (Desktop) */}
- +
diff --git a/apps/landing/components/landing/home/home.tsx b/apps/landing/components/landing/home/home.tsx index 7b434fc..ae0c490 100644 --- a/apps/landing/components/landing/home/home.tsx +++ b/apps/landing/components/landing/home/home.tsx @@ -36,12 +36,12 @@ export const Home = () => { {content.home.description}

- + - + diff --git a/apps/landing/lib/axios.ts b/apps/landing/lib/axios.ts new file mode 100644 index 0000000..6b4413b --- /dev/null +++ b/apps/landing/lib/axios.ts @@ -0,0 +1,36 @@ +import axios from "axios"; + +const apiClient = axios.create({ + baseURL: process.env.NEXT_PUBLIC_API_URL, + withCredentials: true, + headers: { + "Content-Type": "application/json", + }, +}); + +apiClient.interceptors.response.use( + (response) => response, + async (error) => { + const originalRequest = error.config; + + // Prevent infinite loop + if (error.response?.status === 401 && !originalRequest._retry) { + originalRequest._retry = true; + + try { + // Attempt to refresh token + await apiClient.post("/auth/refresh"); + + // Retry original request + return apiClient(originalRequest); + } catch (refreshError) { + // If refresh fails, let the error propagate (caller handles redirect/logout) + return Promise.reject(refreshError); + } + } + + return Promise.reject(error); + }, +); + +export default apiClient; diff --git a/apps/landing/middleware.ts b/apps/landing/middleware.ts new file mode 100644 index 0000000..f7bb213 --- /dev/null +++ b/apps/landing/middleware.ts @@ -0,0 +1,54 @@ +import { NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; +import { jwtVerify } from "jose"; + +// Define protected routes +// Define protected routes +// Removed manual check array since matcher handles it by default + +export async function middleware(req: NextRequest) { + const { pathname } = req.nextUrl; + + // With the matcher set to /dashboard/:path*, this middleware ONLY runs on protected routes + // So we don't need to manually check if route is protected + + const cookieName = process.env.ACCESS_TOKEN_COOKIE_NAME || "access_token"; + const accessToken = req.cookies.get(cookieName)?.value; + + if (!accessToken) { + // Check for refresh token + const refreshCookieName = + process.env.REFRESH_TOKEN_COOKIE_NAME || "refresh_token"; + const refreshToken = req.cookies.get(refreshCookieName)?.value; + + if (refreshToken) { + // Access expired but refresh exists -> Attempt silent refresh + const from = encodeURIComponent(pathname); + return NextResponse.redirect( + new URL(`/token-refresh?from=${from}`, req.url), + ); + } + + // No tokens, redirect to login + return NextResponse.redirect(new URL("/signin", req.url)); + } + + try { + const secret = new TextEncoder().encode( + process.env.ACCESS_JWT_SECRET || "default_access_secret", + ); + + // Verify the token + await jwtVerify(accessToken, secret); + + // Token is valid, allow request + return NextResponse.next(); + } catch (error) { + // Token invalid or expired, redirect to login + return NextResponse.redirect(new URL("/signin", req.url)); + } +} + +export const config = { + matcher: ["/dashboard/:path*"], +}; diff --git a/apps/landing/package.json b/apps/landing/package.json index d9faf47..c61e256 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@repo/ui": "workspace:*", + "axios": "^1.13.4", "lucide-react": "^0.563.0", "motion": "^12.23.25", "next": "^15.5.7", @@ -21,13 +22,15 @@ }, "devDependencies": { "@repo/eslint-config": "*", - "@repo/typescript-config": "*", + "@repo/types": "workspace:*", + "@repo/fonts": "workspace:*", "@repo/tailwind-config": "workspace:*", + "@repo/typescript-config": "*", + "@types/axios": "^0.14.4", "@types/node": "^22.15.3", "@types/react": "19.1.0", "@types/react-dom": "19.1.1", "eslint": "^9.34.0", - "typescript": "5.9.2", - "@repo/fonts": "workspace:*" + "typescript": "5.9.2" } } diff --git a/apps/landing/services/auth.service.ts b/apps/landing/services/auth.service.ts new file mode 100644 index 0000000..1453d1d --- /dev/null +++ b/apps/landing/services/auth.service.ts @@ -0,0 +1,21 @@ +import apiClient from "../lib/axios"; +import type { SignUpRequest, SignInRequest, AuthResponse } from "@repo/types"; + +export const signup = async (data: SignUpRequest): Promise => { + const response = await apiClient.post("/auth/signup", data); + return response.data; +}; + +export const signin = async (data: SignInRequest): Promise => { + const response = await apiClient.post("/auth/signin", data); + return response.data; +}; + +export const signout = async (): Promise => { + await apiClient.post("/auth/signout"); +}; + +export const refresh = async (): Promise => { + const response = await apiClient.post("/auth/refresh"); + return response.data; +}; diff --git a/apps/server/src/services/auth.services.ts b/apps/server/src/services/auth.services.ts index ec6d9e5..4793c14 100644 --- a/apps/server/src/services/auth.services.ts +++ b/apps/server/src/services/auth.services.ts @@ -300,15 +300,8 @@ export const handleGoogleCallback = ( maxAge: 7 * 24 * 60 * 60 * 1000, }); - res.json({ - user: { - id: user.id, - name: user.name, - email: user.email, - }, - accessToken, - refreshToken, - }); + // Redirect to client dashboard + res.redirect(`${config.client.appUrl}/dashboard`); } catch (error) { next(error); } diff --git a/bun.lockb b/bun.lockb index a36fd0bb40614a77685a5fa2112b37ccc2073e67..60e832704b0cc317608ecaa2f0364336c7ecce1c 100755 GIT binary patch delta 45418 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 Wp^hYpuQ?lYd0|?vz1M89i}ru+HKPvz delta 42617 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 x9&}dFq}cMY&iY~sD*_}z Date: Sat, 31 Jan 2026 17:00:09 +0530 Subject: [PATCH 02/11] Add a responsive sidebar to the app? --- apps/landing/app/dashboard/layout.tsx | 21 +++++ apps/landing/app/dashboard/page.tsx | 34 +++++++- .../dashboard/sidebar/dashboard-layout.tsx | 22 +++++ .../components/dashboard/sidebar/index.ts | 8 ++ .../dashboard/sidebar/sidebar-context.tsx | 73 ++++++++++++++++ .../dashboard/sidebar/sidebar-footer.tsx | 17 ++++ .../dashboard/sidebar/sidebar-header.tsx | 33 ++++++++ .../dashboard/sidebar/sidebar-item.tsx | 66 +++++++++++++++ .../dashboard/sidebar/sidebar-options.tsx | 28 ++++++ .../dashboard/sidebar/sidebar-trigger.tsx | 22 +++++ .../components/dashboard/sidebar/sidebar.tsx | 80 ++++++++++++++++++ apps/landing/package.json | 3 +- bun.lockb | Bin 230664 -> 230688 bytes 13 files changed, 403 insertions(+), 4 deletions(-) create mode 100644 apps/landing/app/dashboard/layout.tsx create mode 100644 apps/landing/components/dashboard/sidebar/dashboard-layout.tsx create mode 100644 apps/landing/components/dashboard/sidebar/index.ts create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-context.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-footer.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-header.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-item.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-options.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-trigger.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar.tsx diff --git a/apps/landing/app/dashboard/layout.tsx b/apps/landing/app/dashboard/layout.tsx new file mode 100644 index 0000000..b561359 --- /dev/null +++ b/apps/landing/app/dashboard/layout.tsx @@ -0,0 +1,21 @@ +"use client"; + +import React from "react"; +import { + DashboardLayout, + Sidebar, + SidebarHeader, + SidebarFooter, + // SidebarOptions, +} from "../../components/dashboard/sidebar"; + +export default function Layout({ children }: { children: React.ReactNode }) { + const sidebar = ( + }> + + {/* */} + + ); + + return {children}; +} diff --git a/apps/landing/app/dashboard/page.tsx b/apps/landing/app/dashboard/page.tsx index 9d421e2..3928bd9 100644 --- a/apps/landing/app/dashboard/page.tsx +++ b/apps/landing/app/dashboard/page.tsx @@ -1,7 +1,35 @@ -import React from 'react' +import React from "react"; +import { SidebarTrigger } from "../../components/dashboard/sidebar"; +import ThemeToggler from "../../components/theme/theme-toggler"; +import { MdChevronRight } from "react-icons/md"; export default function Dashboard() { return ( -
Dashboard
- ) +
+
+
+ + +

Dashboard Overview

+
+ +
+ +
+
+

Total Projects

+ +

12

+
+
+

Active Tasks

+

24

+
+
+

Team Members

+

8

+
+
+
+ ); } diff --git a/apps/landing/components/dashboard/sidebar/dashboard-layout.tsx b/apps/landing/components/dashboard/sidebar/dashboard-layout.tsx new file mode 100644 index 0000000..071fab0 --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/dashboard-layout.tsx @@ -0,0 +1,22 @@ +"use client"; + +import React from "react"; +import { SidebarProvider } from "./sidebar-context"; + +interface DashboardLayoutProps { + children: React.ReactNode; + sidebar: React.ReactNode; +} + +export function DashboardLayout({ children, sidebar }: DashboardLayoutProps) { + return ( + +
+ {sidebar} +
+ {children} +
+
+
+ ); +} diff --git a/apps/landing/components/dashboard/sidebar/index.ts b/apps/landing/components/dashboard/sidebar/index.ts new file mode 100644 index 0000000..c2cc80a --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/index.ts @@ -0,0 +1,8 @@ +export * from "./sidebar-context"; +export * from "./sidebar-item"; +export * from "./sidebar"; +export * from "./dashboard-layout"; +export * from "./sidebar-trigger"; +export * from "./sidebar-header"; +export * from "./sidebar-footer"; +export * from "./sidebar-options"; diff --git a/apps/landing/components/dashboard/sidebar/sidebar-context.tsx b/apps/landing/components/dashboard/sidebar/sidebar-context.tsx new file mode 100644 index 0000000..2c7c6cc --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-context.tsx @@ -0,0 +1,73 @@ +"use client"; + +import React, { createContext, useContext, useEffect, useState } from "react"; + +interface SidebarContextType { + isCollapsed: boolean; + isMobileOpen: boolean; + toggleSidebar: () => void; + toggleMobileSidebar: () => void; + closeMobileSidebar: () => void; +} + +const SidebarContext = createContext(undefined); + +const SIDEBAR_COLLAPSED_KEY = "sidebar-collapsed"; + +export function SidebarProvider({ children }: { children: React.ReactNode }) { + const [isCollapsed, setIsCollapsed] = useState(false); + const [isMobileOpen, setIsMobileOpen] = useState(false); + + useEffect(() => { + const saved = localStorage.getItem(SIDEBAR_COLLAPSED_KEY); + if (saved !== null) { + setIsCollapsed(JSON.parse(saved)); + } + }, []); + + useEffect(() => { + const handleResize = () => { + if (window.innerWidth >= 768) { + setIsMobileOpen(false); + } + }; + window.addEventListener("resize", handleResize); + return () => window.removeEventListener("resize", handleResize); + }, []); + + const toggleSidebar = () => { + const newState = !isCollapsed; + setIsCollapsed(newState); + localStorage.setItem(SIDEBAR_COLLAPSED_KEY, JSON.stringify(newState)); + }; + + const toggleMobileSidebar = () => { + setIsMobileOpen(!isMobileOpen); + }; + + const closeMobileSidebar = () => { + setIsMobileOpen(false); + }; + + return ( + + {children} + + ); +} + +export function useSidebar() { + const context = useContext(SidebarContext); + if (context === undefined) { + throw new Error("useSidebar must be used within a SidebarProvider"); + } + return context; +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx b/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx new file mode 100644 index 0000000..294d9af --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx @@ -0,0 +1,17 @@ +"use client"; + +import { signout } from "../../../services/auth.service"; +import { SidebarItem } from "./sidebar-item"; +import { MdLogout } from "react-icons/md"; + +export function SidebarFooter() { + const handleLogout = async () => { + await signout(); + }; + + return ( +
+ +
+ ); +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar-header.tsx b/apps/landing/components/dashboard/sidebar/sidebar-header.tsx new file mode 100644 index 0000000..6c1439b --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-header.tsx @@ -0,0 +1,33 @@ +"use client"; + +import { useSidebar } from "./sidebar-context"; +import { AnimatePresence, motion } from "motion/react"; +import { cn } from "@repo/ui"; +import Image from "next/image"; + +export function SidebarHeader() { + const { isCollapsed } = useSidebar(); + + return ( +
+ + {!isCollapsed && ( + + Logo + CoBrain + + )} + +
+ ); +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar-item.tsx b/apps/landing/components/dashboard/sidebar/sidebar-item.tsx new file mode 100644 index 0000000..ac9ae71 --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-item.tsx @@ -0,0 +1,66 @@ +"use client"; + +import Link from "next/link"; +import type { IconType } from "react-icons"; +import { motion, AnimatePresence } from "motion/react"; +import { useSidebar } from "./sidebar-context"; +import { cn } from "@repo/ui"; + +interface SidebarItemProps { + icon: IconType; + label: string; + href?: string; + isActive?: boolean; + onClick?: () => void; +} + +export function SidebarItem({ + icon: Icon, + label, + href, + isActive, + onClick, +}: SidebarItemProps) { + const { isCollapsed } = useSidebar(); + + const content = ( + <> + + + {!isCollapsed && ( + + {label} + + )} + + + ); + + const parentClasses = cn( + "flex items-center px-4 py-3 cursor-pointer transition-colors duration-200 rounded-lg mx-2 my-1", + isActive + ? "bg-primary/10 text-primary hover:bg-primary/20" + : "text-muted-foreground hover:bg-muted hover:text-foreground", + isCollapsed ? "justify-center px-0" : "justify-start", + ); + + if (href) { + return ( + + {content} + + ); + } + + return ( +
+ {content} +
+ ); +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar-options.tsx b/apps/landing/components/dashboard/sidebar/sidebar-options.tsx new file mode 100644 index 0000000..9d92d56 --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-options.tsx @@ -0,0 +1,28 @@ +"use client"; + +import { SidebarItem } from "./sidebar-item"; +import { MdDashboard, MdSettings, MdPerson, MdFolder } from "react-icons/md"; + +export function SidebarOptions() { + return ( +
+ + + + +
+ ); +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar-trigger.tsx b/apps/landing/components/dashboard/sidebar/sidebar-trigger.tsx new file mode 100644 index 0000000..3b38c89 --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-trigger.tsx @@ -0,0 +1,22 @@ +"use client"; + +import { FiSidebar } from "react-icons/fi"; +import { useSidebar } from "./sidebar-context"; +import { IconButton } from "@repo/ui"; + +export function SidebarTrigger() { + const { toggleSidebar, toggleMobileSidebar } = useSidebar(); + + const handleClick = () => { + // Simple check for desktop vs mobile action + if (window.innerWidth >= 768) { + toggleSidebar(); + } else { + toggleMobileSidebar(); + } + }; + + return ( + + ); +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar.tsx b/apps/landing/components/dashboard/sidebar/sidebar.tsx new file mode 100644 index 0000000..d90a358 --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar.tsx @@ -0,0 +1,80 @@ +"use client"; + +import { useSidebar } from "./sidebar-context"; +import { motion, AnimatePresence } from "motion/react"; +import { cn } from "@repo/ui"; +import { MdClose } from "react-icons/md"; // Example icons, user asked for react-icons +import Image from "next/image"; +import React from "react"; + +export function Sidebar({ + children, + footer, +}: { + children: React.ReactNode; + footer?: React.ReactNode; +}) { + const { isCollapsed, isMobileOpen, closeMobileSidebar } = useSidebar(); + + return ( + <> + {/* Desktop Sidebar */} + +
{children}
+ {footer &&
{footer}
} +
+ + {/* Mobile Sidebar Overlay */} + + {isMobileOpen && ( + <> + {/* Backdrop */} + + {/* Sidebar Panel */} + +
+
+ Logo + CoBrain +
+ +
+
{children}
+ {footer &&
{footer}
} +
+ + )} +
+ + ); +} diff --git a/apps/landing/package.json b/apps/landing/package.json index c61e256..bd66fca 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -18,7 +18,8 @@ "next": "^15.5.7", "next-themes": "^0.4.6", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-icons": "^5.5.0" }, "devDependencies": { "@repo/eslint-config": "*", diff --git a/bun.lockb b/bun.lockb index 60e832704b0cc317608ecaa2f0364336c7ecce1c..aa258bac4ffa51bf11ae520baafb75287be3151f 100755 GIT binary patch delta 14936 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 WP&4OyO|tb~;7+e}UYPF{X#N)fjY6yd delta 14854 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 Date: Sun, 1 Feb 2026 12:07:05 +0530 Subject: [PATCH 03/11] Add the search bar, create new slice button for now --- apps/landing/app/dashboard/[id]/page.tsx | 139 ++++++++++++++++++ apps/landing/app/dashboard/layout.tsx | 2 + .../components/dashboard/sidebar/index.ts | 1 + .../dashboard/sidebar/sidebar-footer.tsx | 2 + .../sidebar/sidebar-search-slice.tsx | 116 +++++++++++++++ .../components/dashboard/sidebar/sidebar.tsx | 4 +- .../dashboard/slice/create-slice-dialog.tsx | 122 +++++++++++++++ apps/landing/services/slice.service.ts | 48 ++++++ 8 files changed, 432 insertions(+), 2 deletions(-) create mode 100644 apps/landing/app/dashboard/[id]/page.tsx create mode 100644 apps/landing/components/dashboard/sidebar/sidebar-search-slice.tsx create mode 100644 apps/landing/components/dashboard/slice/create-slice-dialog.tsx create mode 100644 apps/landing/services/slice.service.ts diff --git a/apps/landing/app/dashboard/[id]/page.tsx b/apps/landing/app/dashboard/[id]/page.tsx new file mode 100644 index 0000000..08f43d0 --- /dev/null +++ b/apps/landing/app/dashboard/[id]/page.tsx @@ -0,0 +1,139 @@ +"use client"; + +import React, { useEffect, useState } from "react"; +import { useParams, useRouter } from "next/navigation"; +import { + getSlice, + getSliceBrains, + type SliceResponse, + type SliceBrainsResponse, +} from "../../../services/slice.service"; +import type { Slice, Memo } from "@repo/types"; +import { TbLoader, TbBrain, TbPlus } from "react-icons/tb"; +import { Button, cn } from "@repo/ui"; + +export default function SliceDashboardPage() { + const params = useParams(); + const router = useRouter(); + const [slice, setSlice] = useState(null); + const [brains, setBrains] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + const fetchData = async () => { + try { + const hash = params.id as string; + // Decode the slug (simple base64 decode for now) + let sliceId; + try { + sliceId = atob(hash); + } catch (e) { + setError("Invalid slice ID"); + setLoading(false); + return; + } + + const [sliceRes, brainsRes] = await Promise.all([ + getSlice(sliceId), + getSliceBrains(sliceId), + ]); + + setSlice(sliceRes.slice); + setBrains(brainsRes.brains); + } catch (err) { + console.error("Failed to fetch slice data", err); + setError( + "Failed to load slice. It might not exist or you don't have access.", + ); + } finally { + setLoading(false); + } + }; + + if (params.id) { + fetchData(); + } + }, [params.id]); + + if (loading) { + return ( +
+ +
+ ); + } + + if (error || !slice) { + return ( +
+
+ {error || "Slice not found"} +
+ +
+ ); + } + + return ( +
+
+

{slice.name}

+ {slice.description && ( +

{slice.description}

+ )} +
+ +
+ + {brains.length === 0 ? ( +
+
+ +
+
+

No brains yet

+

+ This slice is empty. Create your first brain (memo) to start + organizing your thoughts. +

+
+ +
+ ) : ( +
+ {brains.map((brain) => ( +
+
+
+ +
+ + {brain.type} + +
+

+ {brain.title || "Untitled Brain"} +

+

+ {/* Add Content */} + {/* {brain.content} */} +

+
+ Created {new Date(brain.createdAt).toLocaleDateString()} +
+
+ ))} +
+ )} +
+ ); +} diff --git a/apps/landing/app/dashboard/layout.tsx b/apps/landing/app/dashboard/layout.tsx index b561359..9070a13 100644 --- a/apps/landing/app/dashboard/layout.tsx +++ b/apps/landing/app/dashboard/layout.tsx @@ -6,6 +6,7 @@ import { Sidebar, SidebarHeader, SidebarFooter, + SidebarSearchSlice, // SidebarOptions, } from "../../components/dashboard/sidebar"; @@ -13,6 +14,7 @@ export default function Layout({ children }: { children: React.ReactNode }) { const sidebar = ( }> + {/* */} ); diff --git a/apps/landing/components/dashboard/sidebar/index.ts b/apps/landing/components/dashboard/sidebar/index.ts index c2cc80a..29a7c06 100644 --- a/apps/landing/components/dashboard/sidebar/index.ts +++ b/apps/landing/components/dashboard/sidebar/index.ts @@ -6,3 +6,4 @@ export * from "./sidebar-trigger"; export * from "./sidebar-header"; export * from "./sidebar-footer"; export * from "./sidebar-options"; +export * from "./sidebar-search-slice"; diff --git a/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx b/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx index 294d9af..5dbffbe 100644 --- a/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx +++ b/apps/landing/components/dashboard/sidebar/sidebar-footer.tsx @@ -7,6 +7,8 @@ import { MdLogout } from "react-icons/md"; export function SidebarFooter() { const handleLogout = async () => { await signout(); + window.location.href = "/"; + }; return ( diff --git a/apps/landing/components/dashboard/sidebar/sidebar-search-slice.tsx b/apps/landing/components/dashboard/sidebar/sidebar-search-slice.tsx new file mode 100644 index 0000000..d482eba --- /dev/null +++ b/apps/landing/components/dashboard/sidebar/sidebar-search-slice.tsx @@ -0,0 +1,116 @@ +"use client"; + +import React, { useState, useEffect } from "react"; +import { useSidebar } from "./sidebar-context"; +import { Input, Button, cn } from "@repo/ui"; +import { TbSearch, TbPlus, TbLoader } from "react-icons/tb"; +import { motion } from "motion/react"; +import Link from "next/link"; +import { getSlices, type SliceResponse } from "../../../services/slice.service"; +import type { Slice } from "@repo/types"; +import { CreateSliceDialog } from "../slice/create-slice-dialog"; + +export function SidebarSearchSlice() { + const { isCollapsed, toggleSidebar } = useSidebar(); + const [slices, setSlices] = useState([]); + const [loading, setLoading] = useState(true); + const [isDialogOpen, setIsDialogOpen] = useState(false); + + const fetchSlices = async () => { + try { + const response = await getSlices(); + setSlices(response.slices); + } catch (error) { + console.error("Failed to fetch slices", error); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchSlices(); + }, []); + + return ( +
+ setIsDialogOpen(false)} + onSuccess={fetchSlices} + /> + + {/* Search Bar - Only visible when expanded */} + {!isCollapsed && ( + + + + )} + + {/* Search Icon for collapsed state - expands sidebar when clicked */} + {isCollapsed && ( +
+ +
+ )} + + {/* New Slice Button */} + + + {/* Recent Slices */} + {!isCollapsed && ( + +
+ Recent Slices +
+ {loading ? ( +
+ +
+ ) : ( + slices.map((slice) => ( + + {slice.name} + + )) + )} +
+ )} +
+ ); +} diff --git a/apps/landing/components/dashboard/sidebar/sidebar.tsx b/apps/landing/components/dashboard/sidebar/sidebar.tsx index d90a358..138022d 100644 --- a/apps/landing/components/dashboard/sidebar/sidebar.tsx +++ b/apps/landing/components/dashboard/sidebar/sidebar.tsx @@ -34,7 +34,7 @@ export function Sidebar({ }} >
{children}
- {footer &&
{footer}
} + {footer &&
{footer}
} {/* Mobile Sidebar Overlay */} @@ -70,7 +70,7 @@ export function Sidebar({
{children}
- {footer &&
{footer}
} + {footer &&
{footer}
} )} diff --git a/apps/landing/components/dashboard/slice/create-slice-dialog.tsx b/apps/landing/components/dashboard/slice/create-slice-dialog.tsx new file mode 100644 index 0000000..3cc8643 --- /dev/null +++ b/apps/landing/components/dashboard/slice/create-slice-dialog.tsx @@ -0,0 +1,122 @@ +"use client"; + +import React, { useState } from "react"; +import { Button, Input, cn } from "@repo/ui"; +import { createSlice } from "../../../services/slice.service"; +import { TbPlus, TbLoader } from "react-icons/tb"; +import { motion, AnimatePresence } from "motion/react"; + +// Inline Dialog for simplicity if @repo/ui doesn't have it, or reusing what we can +// Given I don't see Dialog in @repo/ui export, I'll build a simple overlay modal +// or check if I missed it. +// I will build a simple custom modal for now to avoid dependency hell if not present. + +interface CreateSliceDialogProps { + isOpen: boolean; + onClose: () => void; + onSuccess: () => void; +} + +export function CreateSliceDialog({ + isOpen, + onClose, + onSuccess, +}: CreateSliceDialogProps) { + const [name, setName] = useState(""); + const [description, setDescription] = useState(""); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + setError(null); + + try { + await createSlice({ name, description }); + setName(""); + setDescription(""); + onSuccess(); + onClose(); + } catch (err) { + console.error("Failed to create slice", err); + setError("Failed to create slice. Please try again."); + } finally { + setLoading(false); + } + }; + + if (!isOpen) return null; + + return ( + + {isOpen && ( + <> + {/* Backdrop */} + + {/* Dialog */} + +
+

+ Create New Slice +

+
+ setName(e.target.value)} + placeholder="e.g. Marketing Q1" + required + className="bg-background" + /> +
+ +