From 027aa0852f86d84cec6884031853b6d4904e571c Mon Sep 17 00:00:00 2001 From: Stupdi Go Date: Tue, 5 Aug 2025 18:41:05 -0500 Subject: [PATCH] Finished --- .idea/.gitignore | 8 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/polymath.iml | 12 + .idea/vcs.xml | 6 + bun.lockb | Bin 0 -> 228689 bytes components.json | 21 + src/components/theme-provider.tsx | 11 + src/components/ui/accordion.tsx | 66 ++ src/components/ui/alert-dialog.tsx | 157 ++++ src/components/ui/alert.tsx | 66 ++ src/components/ui/articles.tsx | 532 +++++++++++++ src/components/ui/aspect-ratio.tsx | 11 + src/components/ui/avatar.tsx | 53 ++ src/components/ui/background-gradient.tsx | 73 ++ src/components/ui/badge.tsx | 46 ++ src/components/ui/breadcrumb.tsx | 109 +++ src/components/ui/button.tsx | 59 ++ src/components/ui/calendar.tsx | 213 +++++ src/components/ui/card.tsx | 92 +++ src/components/ui/carousel.tsx | 241 ++++++ src/components/ui/chart.tsx | 353 +++++++++ src/components/ui/checkbox.tsx | 32 + src/components/ui/collapsible.tsx | 33 + src/components/ui/command.tsx | 184 +++++ src/components/ui/context-menu.tsx | 252 ++++++ src/components/ui/dialog.tsx | 143 ++++ src/components/ui/drawer.tsx | 135 ++++ src/components/ui/dropdown-menu.tsx | 257 +++++++ src/components/ui/form.tsx | 167 ++++ src/components/ui/functionalpagination.tsx | 171 +++++ src/components/ui/hover-card.tsx | 44 ++ src/components/ui/input-otp.tsx | 77 ++ src/components/ui/input.tsx | 21 + src/components/ui/label.tsx | 24 + src/components/ui/menubar.tsx | 276 +++++++ src/components/ui/navigation-menu.tsx | 168 ++++ src/components/ui/pagination.tsx | 127 +++ .../ui/placeholders-and-vanish-input.tsx | 276 +++++++ src/components/ui/popover.tsx | 48 ++ src/components/ui/progress.tsx | 31 + src/components/ui/radio-group.tsx | 45 ++ src/components/ui/resizable.tsx | 56 ++ src/components/ui/scroll-area.tsx | 58 ++ src/components/ui/select.tsx | 185 +++++ src/components/ui/separator.tsx | 28 + src/components/ui/sheet.tsx | 139 ++++ src/components/ui/sidebar.tsx | 726 ++++++++++++++++++ src/components/ui/skeleton.tsx | 13 + src/components/ui/slider.tsx | 63 ++ src/components/ui/sonner.tsx | 25 + src/components/ui/switch.tsx | 31 + src/components/ui/table.tsx | 116 +++ src/components/ui/tabs.tsx | 66 ++ src/components/ui/textarea.tsx | 18 + src/components/ui/toggle-group.tsx | 73 ++ src/components/ui/toggle.tsx | 47 ++ src/components/ui/tooltip.tsx | 61 ++ src/hooks/use-mobile.ts | 19 + src/lib/CrossRefAPI.ts | 205 +++++ src/lib/utils.ts | 6 + src/styles/theme.css | 81 ++ 63 files changed, 6674 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/polymath.iml create mode 100644 .idea/vcs.xml create mode 100755 bun.lockb create mode 100644 components.json create mode 100644 src/components/theme-provider.tsx create mode 100644 src/components/ui/accordion.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/articles.tsx create mode 100644 src/components/ui/aspect-ratio.tsx create mode 100644 src/components/ui/avatar.tsx create mode 100644 src/components/ui/background-gradient.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/breadcrumb.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/calendar.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/carousel.tsx create mode 100644 src/components/ui/chart.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/collapsible.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/context-menu.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/drawer.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/form.tsx create mode 100644 src/components/ui/functionalpagination.tsx create mode 100644 src/components/ui/hover-card.tsx create mode 100644 src/components/ui/input-otp.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/menubar.tsx create mode 100644 src/components/ui/navigation-menu.tsx create mode 100644 src/components/ui/pagination.tsx create mode 100644 src/components/ui/placeholders-and-vanish-input.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/progress.tsx create mode 100644 src/components/ui/radio-group.tsx create mode 100644 src/components/ui/resizable.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/sheet.tsx create mode 100644 src/components/ui/sidebar.tsx create mode 100644 src/components/ui/skeleton.tsx create mode 100644 src/components/ui/slider.tsx create mode 100644 src/components/ui/sonner.tsx create mode 100644 src/components/ui/switch.tsx create mode 100644 src/components/ui/table.tsx create mode 100644 src/components/ui/tabs.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/components/ui/toggle-group.tsx create mode 100644 src/components/ui/toggle.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/hooks/use-mobile.ts create mode 100644 src/lib/CrossRefAPI.ts create mode 100644 src/lib/utils.ts create mode 100644 src/styles/theme.css diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..0a75641 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..91010ff --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/polymath.iml b/.idea/polymath.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/polymath.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..80bfa686e3f5243f2b7b8a1a261d52612267460a GIT binary patch literal 228689 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 z zNYCQ_y@*Te`R2Vzla`5yJzL<#Bx6u^kHDoA!;_$61_13I-ed0)9pz>QC zphHY%OCt@Q_PmV{Ay&TtWxE)J=R+)z+=fTb-(Z5lPtP*_}f9Y`bg#?pS!^lvipj2?V;aAb)V)pXZ~NF zsJx~}jxBC(?O**{Qhi%y-zeR`^wu$p$)7X5LX({8Epm6x{lvdxzt8ukzrVY5Hcy&` zWUdA*5J34NjpRdQLoS@+q{gN%8J* zZ<&4Nu(0r9p6LGk3q2gqpZ#`AzcvlYTuo$iOLne3Aa6W@z3-oOgW=DszYghYS>_zh z^eUYidV0~t_3n%_Ul@8YBBn=Zf`7@iH#<^d#27Bm*XApJvL!LxgO_;+?}U}R<(l@%3YQ$L zJu+Ev$;DsMQId`Ckj&LaHa9sb{g!&*nmt!)n5N#?Gf^p}?sS*b4bHdgn3%s$X;+u- z3EIgUm$sZ&eeU~cLDM;F_C5;T9^tL~azaYm+|!Pkptaese4&GE?%i!V*ETobuU_$S zRcFoO@2bfMI(Ha+oVo4C{(P2&?CL2AzkW=1-(_i({d4AYrHcElu5AsLsXsj?2*xuU*`qwAtY2TB1s5nYeRNCS*n(uP98Vh-~iiqW&iZ^Z)LC z%&OA0vtsVcS&RDRJ}7<;`!WAn#&5fBmhz{oD^=7^2ikInzI&^Q6q` zQ-PJ6SU_vp*Ob|uqPkZ=dyJ^ zl;kUW=I%TD80M6%qExd&392UeKC$ zn0rl-%?(?$_>9oK-Yq@;O$vFb34B&5Nt?q0o6>U>SA5>5_vSE{Vm61a=s&Be{~IlB zj8?q#53ny@c;n`UhWFciFGUL6L~^ewvbkHYFw9mk{iMhFo-2E4*B-8L!*tzC+_eFQ z4~kAG7P;L!7*ZZ6$W}RR&Wq}qt%7YKk?&WmK6r4Szh~c!*(Y2p)R4?ILpJwGMRjtF zK;AdYMU4w=H{8;nF++#>v!SVW&*`O`98b%yQQ!Z;?%KNS2De4K7Amv9GL$S5O*`u< z{-j>xb9t(YL=uv@=E&wIt8%}ph|M2w-3YqIuoKDV2u9olh{&e2z-;5PV=2{?|dr1!9;ja$!tXjvw)%glYWaMjk3 z@6Z40yehi$E!Y1=;-k6W|NLax-yeo#E^Pe~$at1X+Gj=HZ?QbeyL-olRgbPS%X}5- zk?cSDy8oGq#d6En_jvOR))(5%@|@9e=FZ(4tCv3N)AqY%;}}vq<#6s1JGSdc=30Xc zgkqKz&8$m}C1=&_GdQHQg`tXn$5b0H?Qp&sj-pHUuDU$YPM7sbx1QqXVvb*{oz)T* zojRkER(uLpapPDwo&Rhg$37%;ZJ=g?D3(v$?W_|vXcZ~(vA$w{d<2#^rS0FP% zn5C((%Ws;&ioG0Ny0#5f(q^6c@lA_XH=jDbd>V_IM7R8&!aH^aS>|Q^C9h(ASw1cC z%qivLaJqUkO#0Hd9qCn9k=$zsG7yScmQI(wa-egO(jr#bUU%^(H{S9cs<%&Gem+Bv z#qvpZ@;;kOi^HrBaWpdSIv4O{_Ueg7M+IYkcdd4uwoTdc>$-qfNalj}r$LQnU|D2u z&Bf-yd3$M4M@D0S;2Vyo+`ix5`pHdi`c=VwZiV`~k^@(Ror7DhP5rswxxPKTQTc0Q zvGAPliM8*)tuXuv+EW569~@wYg4z$a+jpHRG?RbawY^ho!|SuW z!MX7cOK2pg(jUXmnO;m!R`;2INGd#Vi$mom+v7R4v#l?=)Z`+$*Ady=H8X^rDn;hh z=7{qf`7aF$t~q?~=(63bC0n}Xl8=V}NXfhNuk}szK9vhEVt=X%g`HN_ymKd1KsJ0w zpmA^1HZwM$Qj+^G>U*8JyeH?<~*`{<_`JY8vCV3Ew6tTY2tz@IYVy|359&I`I{@9*Z=5dt8$t?UCsd};IdyCa$Fj%;rD{)>~YnqHZE;{M`-)k*0o&emIQZhiZ}^Ze^=&z2XmPH)mu z{l(@Ql*;iTqU)bh+k?4t_GR&X-)feSruTNe(`$Alb3KsF{j=#zxZ0Xa5s#T}Np$?0 z(Xn4NvgS(Qm51w6Eq~Q+;hp_2`@vGT_VvLwmg=H*iZ3evp0_@AOPDp@?Mg&f&81l6 zcC{z6x%)Gj1>aRqeJ;E!tXb)Cu)XfZ(;eIr^JZRo`(8LwyRpo7-4Q#TkYlnjp}j}X zZ;m_Nx-C@lxr5q&@$~5Y{)zcsNbdDQHn*~Ki(^7=(1x(o#4Y9ZRu%~c*O%3PpZv%& z%8Y&6<4CpRl^2&jeJdHcYS%O8wnmrUs)HPS4z-GEmzzI%eZAq7f@H2Yvbi7oxXf5< zA6A6y>FutN*<{o4B4FC@E9bwoYvi7DytQho`{ri>n~(jvz46(3jkM5??cCS+U&>GC z4_YR@!@b8X9J#&YgKX}brL9%wwx6Zi{=`W$OL;#IcD&b{KJN?PRneLLC9hnkaetKh zM=K8CU{r)GWx&&Vqv~r(ba>di|@0W%%DZ6KvTt2z}{c6Y4 zDahrzAF{cvM*RQn*Zx|xfyG>H*2!nRDR*}ZEciWXe%aCqd-qQNe_-z~&l}0hSDOEd zKYHQa$;hD4hsBo;TUNM#P;{}r=qED?DSZ8r%?$iOeV+7pflz zoN@Z0$>@IXaf3xju(iiMr0@+!Hn+02!+GV=MWQ=+cOO@HbdkN7U2K|G*6Qo!B`=@8 zzx?+~`{(kH8J7awKAdS`SvKLy8&gx)+n@Uu&AG^R@8cp5{yNB>IgSPf28Ix1b1id> zFHf)gX;ZA@{UfYe`22)r=_@;4>RN96!X|L)>{@m{0hj3bzU}vu^o4i%{c%+~yyMEc zEjupTpLyr}srP5eBd~ip7(nKN_J_laW;ym?ZcCj-wDk0b$JW<7(jTr|Q8HO_dU4C% zzigqFTUdO0DtOl}e$Os=#otTti^n$2Ez?YQ$k=%(`hQIg=nkS=u%JhkJ1dW?=F5lapsc?-^~+#2i$TuZ4q*|zPWPY z^e>h9?+TB***l4gTFqVu8Gm5l0L_U+BAeTwI%WR7iZ|<`4}D(#EiPPwQ90D)VxOLr ztyTA#)Z=@)e&saW)VOlsez%;#51xyelj@&Du+*7e4O`Fo;^m#6e3fALLd*s2GlY7oBk*Xe_Y)EYJMGL+>-^o-!~d&C@38EaNL%$%zmVEq_f!6(n4X0I)C%+^oL!K zv}Yga>*3r`Bg@iWc=4OyMwgT$8@IXa+}o^>^?HTD)+8HgS^Gu*J0a}{h`BMy<_6?< zuVjj@pX&MHYUk6rZ%f+u%T~Noyk(*K)R)2ZpxDFR=kGjT_(Jo%VaLh1Vuuww&Mr!x z!(R4_clq4)!fC&!eMJg~SY&fQx#=uEUUPZP%DGzG|Lob~;A49+E^1D+)a#f!# zw0`j{;8$KED)&dVYOzWvuiDS=)&liX?GBC?ncqeBZ3gYZ25miI8>QuB58X?w@y%zvRS@bUjyFF3?_S(6(rhxe3VbtvEFQjE%RX zz1qCwlRlSadOvT!`{|L7wYE{HXwkgc-xmt!6{VGTuTK~C^jLhMR)0k~`_+t$`E3VE z-putrRT$R}4&MfFdPqbzS7LXxE;EyfUiz^|YPPcb+_>I%Gi?Z4S@t1xrebb!)b35M zjUF)1|9ErilY2SI&yW7!cIK-1dM|A!ozJB;NvsQXkjza&HaD)l{>`#xo=S<`S&7HR z?+JXpA6n>jd@l<_SjlQtSu2A%M|ZqBF}WpZ!o8P5Mp-Y99kuRvp#8uslrvz4(;7(>H+jv@RWb9t<7it%=pjbbMT$_*I3G@U3enK zWqxhap(`0b=5E?>YRL@o<%Qe-NvgHYc8GQ|{{aqPh`FG1Jzz$&%uFxanSFT6{^xso zF1PI3UblDoob*rYzn+PU+LJOr%uudBPUH9#-6xyoax8n{^>UY9(--X`QHFXG@436> z<~yv~4>p$pv;~wQ9cCyf9E{hAhduiH;DwS&+0K8tGxoS}JX0eG;3%1R$nt-1vZxjyiXc*{s_!ymJMQQ%Q-i$ z=FF15Juf2k?ZT6ao5km6#`S$}@UhyF+x$%{*KA_hf+O!_vNHqCPp=R)Zf`l3{yDmB zPgT6bn(Zx}U~?hv&4d{Wa_@;M&t%Pu793x18d$B;to$U|KZD0mW5MpVPqnrrectf! zzWx5!^OW6u_Urbh{?ad)9NxdvzGr2j-udP4&auB&f{af>+?$1L?s`R^x<7?WS#laD zWwG8f*mOI>al^(9Gj-Pe_dfjl_xD3F&gVCL?re;D`eFK$%NLXCqqgzsF4H{7`sm&P z+qp(k$n*Z$$mY7lvL1eQ?g_K}mjgzbq9-1(mIOuooO1A0xJ;}U$J9KXAkHe5S*ic~ ze3^F4vG`rGYF!)O*C>(phj(_&SikR5+zfCyK1eY4tDO`7z-Z;950 z(*c&xWY#S-ez@$;)4yC>{jMR;U*sX1yGiP5HVf+_%bWYx_&j!7e!OAH0^@(Rvkm@E zUoCK2?BATt8^w-Ho6Y^lAT)Z{c43)61tAu*4ev>bB>tBNKbYB^*m!o-1)!*jEkeM*PdSb=hJ<@45s)zB}C0?ylWn zy3JkbvE)*7g`Vv0;NOk`wgddjBzh7FXhFR#~k~k(+P&|CL#WT-4lWY(Gmqp4Iif zY1&LH-h$`HxF1a9n||uAU(LhM3ipq>b1qbc)bkABc4{%mKqzL}*Sh3wwcEaE{@?tf z>~>FA&6oIj&EU_G6AzY8y2NsI>-WTxc>#w+PtUmZyd-$h{Ljn_w6A1r?U~rr;JaW& zkayW1a5zBPlb~~lpvE$=e9ii?{o<0eWZpv4e6J|hZ8o>%yWje^?fL2Wimx^O2w%X- zuk&7>i=S%vm8G>`;_9TJDEZ>!p(>2l{pVPnxK;Lo&4sk1N@0eA;w^FRZ4;|YpZFTiFD!)Z&10Cd4hFYp@MR|%%Ten-Yn}24j*A%osZvI;IP8@qo>R)I;US=041C{#Rq}HpxJ0*Ge(H2Wy{| zv{@a>(qa?ZWF1qXQfNM{bb9II#lE|vE#%7D7Zu$zwb0Wl`WCcneSf})nqAv!By%f} z&AldawfyFoc9P)G1qC%z`gas?hHAQ$@a*j`@mLK2*Ryn!RmkRkZg((m ze^Ps4_uRU5B}SjWO z3EWQ?T>Dc|x4G=E;C>UnOG&HNYh1d2|ME9o6^C21cg=Ubfjq8J12Ytq&J<(M?e@52 zY?fVK75Vt&>52Bv%o`N0%{+g0#e}x0yNgSri&kykZ*z6`qd$$mdY1p^FisZOs`(VkvAqgl+4tgQK}9yB*v`|+8?d@axP)UW;< z4qWYc$h6V2;nSB1+KWqj;&+u>Ao`ZZEGfX+9A zn>)ok^Y$NYtCWjTuNa?L#hW>7Su^3v2djzMD{ts8JoW0#+QWMVjJk6FT$1^JrRTk- z$F_j58iwhUyx zZgonNWx%|p9xZM?elw@prbfvX%04J8F5qkn+{+^7X5rWI$!#X@d?uxfFPo;t9%*Rb zxckdO)+2XcACk7vMRIQo%utYfKN&QCdb(4>HfF;st@hA`@&Q);6ZmBVO`laaP6(ga zapnf=m4XwD&piIWh}E8UG08tw^s?xM4C#)DuZCe}5(V>+%xy(B_vO1kYp>?ck$x%| zq4)Bk3lrns{WaWk8>JVV=XmnYCGPtv?h}TR3^fOfV%waJu6s-^sv}VHRbiW7O5@n>X{rktLOeas>Qe{r zO^-{Tj;K82oP&-@xhE{nO<@2U~~Q&w_T9fJt!+1-Ev&swSpAq0%jM0&myHf0=i@Gzp`i3|`SatI zeh(@mSGu7lScZYzniLvcndCSACU;mveXyQ@tSTrLdKZGsh z+zmgGY4LB2ug5%1W^J|F_ancBTZ&h4P4dZ#+%?GU$sS~Ly-YWy2%favwNd8Hoe9rh zdqwOiRK^auQyCU zinm^5bHh&mo)9*D_N!bOW65_qx7-f@zL23Eec90@+hF_UnVA9JQ+$QYCcOIidVfgj zC-GaqjomhDmu`CVG9vEuri6{f$m_)Vkj>Rxzt?Z~+Wi~%7%!dtQhkwY&hPI@J6Cvh zNH}heS>YhO#xH`+YRShx!S6kitC)=bEm>*Vz3Jce_P-l$N-UW8_{=6G_x2;3%QSz! zX%ClgQ|)rAX+O)i$z2xAw30J<|4&aW}la6umAIArE32{+tue5{@ho(ZT63Y zr?YIfz2Coe%FbOX;cN|Yahsf~X02}P+7X_d*!=(W9^`iQL}YUn9UThKd{tMPQ~xEI zeO{Se=!RqFO)B#C57q>~@on(M*r`wa~@rJekY+M)FO4L7fja zB^5dJ1aK{$;`^`vjGbFZ=3&+ESrY{`5{q*u&Rx9qtaNmE_OlBs8m(noFC(ubg`J-X zGM+`|kETS=lj-?t(P~-Ja~F3lIC(us%0AXVJJM~D&Xfs_dIlT(FSU35(YLKSc746H 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 IGs7SS0IZBcX8-^I literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..421c026 --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "gray", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/src/components/theme-provider.tsx b/src/components/theme-provider.tsx new file mode 100644 index 0000000..1466952 --- /dev/null +++ b/src/components/theme-provider.tsx @@ -0,0 +1,11 @@ +"use client" + +import * as React from "react" +import { ThemeProvider as NextThemesProvider } from "next-themes" + +export function ThemeProvider({ + children, + ...props + }: React.ComponentProps) { + return {children} +} \ No newline at end of file diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx new file mode 100644 index 0000000..4a8cca4 --- /dev/null +++ b/src/components/ui/accordion.tsx @@ -0,0 +1,66 @@ +"use client" + +import * as React from "react" +import * as AccordionPrimitive from "@radix-ui/react-accordion" +import { ChevronDownIcon } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Accordion({ + ...props +}: React.ComponentProps) { + return +} + +function AccordionItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AccordionTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + svg]:rotate-180", + className + )} + {...props} + > + {children} + + + + ) +} + +function AccordionContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + +

{children}
+ + ) +} + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/src/components/ui/alert-dialog.tsx b/src/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..0863e40 --- /dev/null +++ b/src/components/ui/alert-dialog.tsx @@ -0,0 +1,157 @@ +"use client" + +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "@/lib/utils" +import { buttonVariants } from "@/components/ui/button" + +function AlertDialog({ + ...props +}: React.ComponentProps) { + return +} + +function AlertDialogTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogPortal({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + ) +} + +function AlertDialogHeader({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogFooter({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogAction({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AlertDialogCancel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx new file mode 100644 index 0000000..1421354 --- /dev/null +++ b/src/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Alert, AlertTitle, AlertDescription } diff --git a/src/components/ui/articles.tsx b/src/components/ui/articles.tsx new file mode 100644 index 0000000..871d999 --- /dev/null +++ b/src/components/ui/articles.tsx @@ -0,0 +1,532 @@ +"use client"; + +import { useState, useEffect } from "react"; +import { useSearchParams, useRouter } from "next/navigation"; +import { getArticlesPage } from "@/lib/CrossRefAPI"; // Update this import path +import { + Pagination, + PaginationContent, + PaginationEllipsis, + PaginationItem, + PaginationLink, + PaginationNext, + PaginationPrevious, +} from "@/components/ui/pagination"; +import { X } from "lucide-react"; + +type CrossrefWork = { + DOI: string; + title?: string[]; + author?: { + given?: string; + family?: string; + name?: string; // Sometimes CrossRef uses 'name' instead + }[]; + published?: { "date-parts": number[][] }; + type?: string; + "container-title"?: string[]; + publisher?: string; + tags?: string[]; +}; + +type AdvancedFields = { + title?: string; + author?: string; + abstract?: string; +}; + +// Article Element Component +function ArticleElement({ article }: { article: CrossrefWork }) { + // Console log the article object for debugging + console.log("Article Object:", article); + console.log("Author data:", article.author); + + const formatAuthors = (authors?: { given?: string; family?: string; name?: string }[]) => { + // Debug logging + console.log("Formatting authors:", authors); + console.log("Authors type:", typeof authors); + console.log("Authors array?", Array.isArray(authors)); + + if (!authors || authors.length === 0) { + console.log("No authors found for article:", article.title?.[0]); + // For book chapters or other content without individual authors, + // we might want to show the container title or publisher instead + if (article["container-title"]?.[0]) { + return `From: ${article["container-title"][0]}`; + } + if (article.publisher) { + return `Publisher: ${article.publisher}`; + } + return "Unknown Author"; + } + + const authorList = authors.map(author => { + // Check if there's a 'name' field first (sometimes CrossRef uses this) + if (author.name) { + return author.name.trim(); + } + + // Handle cases where given or family might be missing + const given = author.given?.trim() || ""; + const family = author.family?.trim() || ""; + + // If both are empty, skip this author + if (!given && !family) return null; + + // Format based on what's available + if (given && family) return `${given} ${family}`; + if (family) return family; + if (given) return given; + + return null; + }).filter(Boolean); // Remove null entries + + console.log("Processed author list:", authorList); + + if (authorList.length === 0) return "Unknown Author"; + + // Limit to first 3 authors for smaller display + if (authorList.length > 3) { + return authorList.slice(0, 3).join(", ") + " et al."; + } + return authorList.join(", "); + }; + + const formatDate = (published?: { "date-parts": number[][] }) => { + if (!published || !published["date-parts"] || !published["date-parts"][0]) { + return "Date unknown"; + } + const [year] = published["date-parts"][0]; + return year; + }; + + return ( +
+ {/* Title */} +

+ {article.title?.[0] || "Untitled Article"} +

+ + {/* Authors and Meta Info */} +
+

{formatAuthors(article.author)} • {formatDate(article.published)}

+ {article["container-title"]?.[0] && ( +

{article["container-title"][0]}

+ )} +
+ + {/* Tags - Show only first 4 */} + {article.tags && article.tags.length > 0 && ( +
+
+ {article.tags.slice(0, 4).map((tag, index) => ( + + {tag} + + ))} + {article.tags.length > 4 && ( + + +{article.tags.length - 4} more + + )} +
+
+ )} + + {/* DOI */} +
+ DOI: {article.DOI} + + View Article + +
+
+ ); +} + +// Main Articles Container Component +export default function ArticlesContainer({ + searchQuery, + page = 1, + pageSize = 10, + advancedFields}: { + searchQuery?: string; + page?: number; + pageSize?: number; + advancedFields?: AdvancedFields; +}) { + const [articles, setArticles] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const [hasNextPage, setHasNextPage] = useState(true); + + const searchParams = useSearchParams(); + const router = useRouter(); + + const currentPage = parseInt(searchParams.get("p") || "1"); + const currentSearchQuery = searchParams.get("q") || ""; + const currentPageSize = searchParams.get("pageSize") || "10"; + + // Get advanced fields from URL params + const currentTitleQuery = searchParams.get("title") || ""; + const currentAuthorQuery = searchParams.get("author") || ""; + const currentAbstractQuery = searchParams.get("abstract") || ""; + + // Generate URL for pagination + const generatePageUrl = (targetPage: number) => { + const params = new URLSearchParams(); + if (currentSearchQuery) params.set("q", currentSearchQuery); + if (currentTitleQuery) params.set("title", currentTitleQuery); + if (currentAuthorQuery) params.set("author", currentAuthorQuery); + if (currentAbstractQuery) params.set("abstract", currentAbstractQuery); + params.set("p", targetPage.toString()); + params.set("pageSize", currentPageSize); + return `/search?${params.toString()}`; + }; + + // Remove individual filter + const removeFilter = (filterType: 'q' | 'title' | 'author' | 'abstract') => { + const params = new URLSearchParams(); + + // Keep all current params except the one being removed + if (filterType !== 'q' && currentSearchQuery) params.set("q", currentSearchQuery); + if (filterType !== 'title' && currentTitleQuery) params.set("title", currentTitleQuery); + if (filterType !== 'author' && currentAuthorQuery) params.set("author", currentAuthorQuery); + if (filterType !== 'abstract' && currentAbstractQuery) params.set("abstract", currentAbstractQuery); + + // Reset to page 1 when filters change + params.set("p", "1"); + params.set("pageSize", currentPageSize); + + router.push(`/search?${params.toString()}`); + }; + + // Clear all filters + const clearAllFilters = () => { + router.push(`/search?p=1&pageSize=${currentPageSize}`); + }; + + // Handle page navigation + const navigateToPage = (targetPage: number) => { + if (targetPage < 1) return; + router.push(generatePageUrl(targetPage)); + }; + + useEffect(() => { + const fetchArticles = async () => { + setLoading(true); + setError(null); + + try { + // Create advanced fields object from current URL params or props + const currentAdvancedFields: AdvancedFields | undefined = + (currentTitleQuery || currentAuthorQuery || currentAbstractQuery || advancedFields) ? { + title: currentTitleQuery || advancedFields?.title, + author: currentAuthorQuery || advancedFields?.author, + abstract: currentAbstractQuery || advancedFields?.abstract + } : undefined; + + console.log("Fetching with params:", { + page: currentPage, + pageSize: parseInt(currentPageSize), + searchQuery: currentSearchQuery, + advancedFields: currentAdvancedFields + }); + + const results = await getArticlesPage( + currentPage, + parseInt(currentPageSize), + currentSearchQuery, + currentAdvancedFields + ); + + // If we're searching by author, filter results to only include articles with authors + let filteredResults = results; + if (currentAdvancedFields?.author && currentAdvancedFields.author.trim()) { + console.log("Filtering results for author search:", currentAdvancedFields.author); + console.log("Results before filtering:", results.length); + + const searchTerms = currentAdvancedFields.author.toLowerCase().split(' ').filter(term => term.length > 0); + console.log("Search terms:", searchTerms); + + filteredResults = results.filter(article => { + // Only include articles that have author data + if (!article.author || article.author.length === 0) { + return false; + } + + // Check if the searched author name appears in any of the authors + return article.author.some(author => { + const given = (author.given || '').toLowerCase(); + const family = (author.family || '').toLowerCase(); + const fullName = `${given} ${family}`.trim(); + + console.log(`Checking author: "${fullName}" against search terms:`, searchTerms); + + // Check if all search terms appear somewhere in the author's name + const matchesAllTerms = searchTerms.every(term => + given.includes(term) || family.includes(term) || fullName.includes(term) + ); + + // Also check for partial matches (at least 2 terms if searching for more than 2 words) + const matchesPartially = searchTerms.length > 2 ? + searchTerms.filter(term => + given.includes(term) || family.includes(term) || fullName.includes(term) + ).length >= 2 : + matchesAllTerms; + + console.log(`Author "${fullName}" matches: ${matchesPartially}`); + return matchesPartially; + }); + }); + + console.log("Results after filtering:", filteredResults.length); + console.log("Filtered articles:", filteredResults.map(a => ({ + title: a.title?.[0], + authors: a.author?.map(auth => `${auth.given} ${auth.family}`) + }))); + } + + console.log("Setting articles:", filteredResults.length); + setArticles(filteredResults); + + // Determine if there's a next page based on results + setHasNextPage(filteredResults.length === parseInt(currentPageSize)); + } catch (err) { + console.error("Error fetching articles:", err); + setError(err instanceof Error ? err.message : "Failed to fetch articles"); + setArticles([]); + setHasNextPage(false); + } finally { + setLoading(false); + } + }; + + fetchArticles(); + }, [currentSearchQuery, currentPage, currentPageSize, currentTitleQuery, currentAuthorQuery, currentAbstractQuery, advancedFields?.title, advancedFields?.author, advancedFields?.abstract]); + + if (loading) { + return ( +
+
+
+
+
+ ); + } + + if (error) { + return ( +
+
+

Error loading articles:

+

{error}

+
+
+ ); + } + + if (articles.length === 0) { + return ( +
+
+

No articles found

+

Try adjusting your search query

+
+
+ ); + } + + return ( +
+ {/* Active Filters Display */} + {(currentSearchQuery || currentTitleQuery || currentAuthorQuery || currentAbstractQuery) && ( +
+
+
+

Active Filters:

+ +
+
+ {currentSearchQuery && ( +
+ General: {currentSearchQuery} + +
+ )} + {currentTitleQuery && ( +
+ Title: {currentTitleQuery} + +
+ )} + {currentAuthorQuery && ( +
+ Author: {currentAuthorQuery} + +
+ )} + {currentAbstractQuery && ( +
+ Abstract: {currentAbstractQuery} + +
+ )} +
+
+
+ )} + + {/* Articles List */} + {articles.map((article) => ( + + ))} + + {/* Fixed Pagination at Bottom */} +
+
+ + + {/* Previous Button */} + + 1 ? generatePageUrl(currentPage - 1) : "#"} + onClick={(e) => { + e.preventDefault(); + if (currentPage > 1) navigateToPage(currentPage - 1); + }} + className={`text-white hover:bg-gray-700 border-gray-600 ${currentPage <= 1 ? "pointer-events-none opacity-50" : ""}`} + /> + + + {/* Show a few pages around current */} + {currentPage > 2 && ( + + { + e.preventDefault(); + navigateToPage(currentPage - 2); + }} + className="text-white hover:bg-gray-700 border-gray-600" + > + {currentPage - 2} + + + )} + + {currentPage > 1 && ( + + { + e.preventDefault(); + navigateToPage(currentPage - 1); + }} + className="text-white hover:bg-gray-700 border-gray-600" + > + {currentPage - 1} + + + )} + + {/* Current Page */} + + + {currentPage} + + + + {/* Next pages */} + {hasNextPage && ( + + { + e.preventDefault(); + navigateToPage(currentPage + 1); + }} + className="text-white hover:bg-gray-700 border-gray-600" + > + {currentPage + 1} + + + )} + + {hasNextPage && ( + + { + e.preventDefault(); + navigateToPage(currentPage + 2); + }} + className="text-white hover:bg-gray-700 border-gray-600" + > + {currentPage + 2} + + + )} + + {/* Ellipsis if there are likely more pages */} + {hasNextPage && currentPage > 1 && ( + + + + )} + + {/* Next Button */} + + { + e.preventDefault(); + if (hasNextPage) navigateToPage(currentPage + 1); + }} + className={`text-white hover:bg-gray-700 border-gray-600 ${!hasNextPage ? "pointer-events-none opacity-50" : ""}`} + /> + + + +
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/ui/aspect-ratio.tsx b/src/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..3df3fd0 --- /dev/null +++ b/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,11 @@ +"use client" + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +function AspectRatio({ + ...props +}: React.ComponentProps) { + return +} + +export { AspectRatio } diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx new file mode 100644 index 0000000..71e428b --- /dev/null +++ b/src/components/ui/avatar.tsx @@ -0,0 +1,53 @@ +"use client" + +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/src/components/ui/background-gradient.tsx b/src/components/ui/background-gradient.tsx new file mode 100644 index 0000000..4a9a5db --- /dev/null +++ b/src/components/ui/background-gradient.tsx @@ -0,0 +1,73 @@ +import { cn } from "@/lib/utils"; +import React from "react"; +import { motion } from "motion/react"; + +export const BackgroundGradient = ({ + children, + className, + containerClassName, + animate = true, +}: { + children?: React.ReactNode; + className?: string; + containerClassName?: string; + animate?: boolean; +}) => { + const variants = { + initial: { + backgroundPosition: "0 50%", + }, + animate: { + backgroundPosition: ["0, 50%", "100% 50%", "0 50%"], + }, + }; + return ( +
+ + + + +
{children}
+
+ ); +}; diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx new file mode 100644 index 0000000..0205413 --- /dev/null +++ b/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..eb88f32 --- /dev/null +++ b/src/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return