From 83075ef1253cd1822570e5e10dda5fc8baff3e4e Mon Sep 17 00:00:00 2001 From: powermaker450 Date: Thu, 10 Oct 2024 16:29:19 -0400 Subject: [PATCH] Major refactor, add about page --- public/server.png | Bin 34571 -> 0 bytes src/App.tsx | 6 --- src/colors.css | 31 +++++++++++ src/components/B.tsx | 14 +++++ src/components/Bullet.tsx | 17 ++++++ src/components/Description.tsx | 2 +- src/components/index.ts | 9 ++-- src/index.css | 42 +++------------ src/pages/About.tsx | 92 ++++++++++++++++++++++++++++----- src/pages/Main.tsx | 8 ++- src/pages/SelfHosting.tsx | 76 --------------------------- 11 files changed, 158 insertions(+), 139 deletions(-) delete mode 100644 public/server.png create mode 100644 src/colors.css create mode 100644 src/components/B.tsx create mode 100644 src/components/Bullet.tsx delete mode 100644 src/pages/SelfHosting.tsx diff --git a/public/server.png b/public/server.png deleted file mode 100644 index 1ff210ba08046ba0f61dfce5e110f82fffb2e456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34571 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%0A7um(r~*y^yi};S2}lbvxNeZuSYIw%qoDzv z3oR3-Ar1;80H*`QmVt(f5`~YcFa&u-pj05xQlmB==+jYJRt*k{P7z>3kD889>1t3_ zp7+n36xaz@4|ziXQ2GO=3$Z!Fs9-HrBZ%f<1S~!EN4c?m0pK!Fp+^5N7^AK zi;l>Vi2l`cQeoWy&+}#PTk^#mE}EiTcKiPxB(7bYECxR9njCi~WoEo|x+=qnqm%!X zvt0t``QGp?mOv&r)=xjj>7MV!HXB@3 z5A1hO`p@L}cD8OzrDBeAFIep{Q5osZCw#lW3x3+$ew~E~%hvwZy`G_$4THNMOiHzi zTC40zE$vK|otoJWWZU-m;)Fvlc{7%L!oT2S2n@m@PP7rcx5gxZpKbQ`{d@BE`B|;_ zhGYN?@A<#I=IQMBw=AaAqdj}H&Z8MYj%dSz=5$7N>4E+QQXX?4ZcV2HYKIpPIKLgE6bZ?CQk_V}J zo{B`124T6eaBWhkPBB{N8XkQLzu6c1xPl!o5?fdIMj|Y(`x>zh$B`T1nxEz=^OdM# zjWU!Nket6VOO^6)CaLUq$fBLD#Tpd|3-uDxzELF?aS0hY23cvIj+&#IhfAEniltFt zLhm?zoOzGj45w^g-vE;HnbDt9j;vV`nz-tjlRmw$x9OZV%C8AEyAMoCZf4o8t(50B zVryj)E($DSi*G*A{I%PAG8BW3X3?FI(VHVc5IyNN(_>^d%ob5?H{q@ki`zo>9^2{C z>L%Vjd2 zG~UWK!f@<4m;a`5TZap40xx6zHY4IpbuGvLWHR40N zL#L^2`Haff9u(a%?^OKnJ_&t{xKVlEOLO5sn4wG|1kpc|sn(HSImXnJJ3i5V>Sp`$ zBYWAcjmM|Bb8>#9J<&#OtcR4@o{J`JoX^k_+;7nT5a9?zkOpQ51YAS1i}8LQ_-9|n zF|_^LZ_h@uRihL~m2Q}tbtmskftNID{o#p}Y^zx>JFC97+RRjXOIe7|^Qi~58rgZ9 z7C5~hf=a7Q%rMYNKW7PB{O+UGV}g`c5lM|R{lLR}?J}gfOrf*?p3&f2M2!|%YLVX@ zCCO#*q^%UJ_3Tpm;lBfG72_17x^3U#!tU8^qlWpvT zIO%5!90wAW{1vfPEn1mY^i2>6H1H-v!Xi>(czeKa)H^gLNq$_2o-%fZ}U{Y}nI7c=+>&_sf>0 zI|Nzw)w4D%j!h2IQMV%F9;~~$O?*NV81!GL(Q3bI)KS23QHIPajPNzZ+%l^!`f%4o zEr~X?kZ_8AVc_L8+Rbu%59OZ%0hS)u?HgS}WW-x>G)!gzv$ZHL2@-S^A^S5v4o!z^ zS0C@Q4Sv_hrwz>UuftDno|8HZVWVj zad7!880DwHtK9yuhtHN&>h!QCd#%FwI8&E#z}5S0KE;cS!X=!rQ~Q|E^nlcuA|0ys z^$BeBp*6>f=(#Kj+J;~3sF(@#MnMGZ?|f73PPU>mqO7pJx#gUXXxc5 z>E;CdKgc?o_G$q-93LMY5a{TnQ(z*BK2%{MV&xKITO8-5$N!+;;@y;q#X%(Qu&&U) zQOC@e5SGdoV7!mUBz9}PZ>)GD?FY}$vbIB=+)ws@*!j9qA@>3UvE~SgGkGYDx#%$b zantP4-y3#`3|u8oIMzraerwrBSFTqCvj%6#6)d*ZBqk-z|HG6z81fdEAyA_V`C@Qa z{MnbLM$(Be`d4U(VT@DiSV&cJ_*VHX%&|TTr@Xu})GCLPms%u~Pqm!H0Efd~E24eA zp_pUeIur}X?~WbTh`_?0$c}3Rq5k6~Y8la)yMPw_wXkGJqGsJRBhCL z$#~U%o8o@_2enKeKfgLh{@X9tD}+BOGtv+4zcksBN$bVbDI{UzTuKV2K`3+)}thC2XU-E+K2X@sJ z+1u{9pOLc^&+fdPw&e+<$EDVnzKM=Q_3ln|GxFyTr}t8i>n^!My&Hqs^W8kQ|I$Xz zp;6+uiCrsosS6GYdTMkEm9eq0ocYAthrvJ5DmL^(Ty_Mw?OP1muvD`dG{t>73*Wy! ze~bBsFTY%WA;kOHB>Aaqwo<{((LkN;OSi*K2^ot8=ojQ8KwPc3^)3I!B7X zB^e{{vy_+-`LuEx<1c@z`&wB961m)I3x6QMaL~lqI(L%i_@hcZe?*p_jPLe%2t!fL zZdi|>fV7$@q>QLL;xH}Kb1C5&I<=XN(zGG}ZAi!D$InH2$UDSS z2O?7YyenJ+`|9mPN$~wfRZ3oKdlD~d5E2j4^P>rSSUXl`-n-Le$z&m6K-v*OQrNKd zeJsI2&fb8seu_#}(~=V}n)Vkx&=if0$tvY^$g%*LMUhc&`jE2F)ua3Stle=064Oml zOr0O%dn7ee?iMu%%)97TpfhH~i7C>jN|x%73YG28sBcI%p}k19smmahn0c44zE!7~ zd$*2wdS>|E7TUubBpRbwxU~8myi;8ZnmF?sq%t;|`ABOE%d|-~{?uK+BULjP84-3v zWtmq+$u$G-ply^$RCxBzpt;AHygKvcc9Z1!u>wC?MC;t0;HUEo)m^!SSk2Ok>N)94 zI6nj>zF+$)&5ZaH%KqTh#$xs-me)&BV%^{WEZ;NWeyt*rPUsM(^pusomUi35DpT&J z^z`+#?J2v{1I>deDuMQd@ALDw2ydUfpbO+@e^o{N@XCty(AcO02Q9_;-Kf{hrwH6l zOmclC%4o+g${IUOa-P@F(GXKv!SoBJZ%B|vyb4UI1mmrjLJV1D8rHEhMj@aCqiBC? zW~$!-Q41#Wsp3MZlGXPc!pO74LtM|$^-aTrASX_)S%rbR_({Q}mDbYR1Y#NfOB{wU zWSG&o=q08t1$66<&enxxA-Xo8Yex)iIw(p=#mlLEMd)Mi+lQ7hlP~?up-<^IGm7dc z;9>L~UfAO|&S4;~kGT<=eQGJY5=mr~O=4^6ZT6ij^F}F;T zUCuN6S9kC&(ypEKuG!c7OiCT|Lsj82gu_-Fux%+jKf4@GW3ND7it#M*G(NH~^Fr=G zvCnB;F#bh_z`@w?FSFd4+69HK-lX>KHzH<0*6>X0cJa@lVfvGSs4Zn;P~FH4VN@>UEuF zCQrz`#mzPPt-)UTqyYlBPY+8lMmNq~eou@KQ!S#2Y3PO8==(DVTwDl(So3yRBAau{ zr$p}J%pCrkuXmZRy#80`7h?bwMV{N>hm^-Z)$v+40Til8?Dtvml;2H*WSE{b*1!Nu zQSykYbneMRe7-!>pr92F)hx3qLo_>0p{0`k(gbNRV6->mHb8RUFR#%a6*X?!Z z1@I{A_9tsI3BqZLkwkQ#KH+A3J`CZJuBj>CE0ozpVA{~$=|4|HiXJ3-`tqTprmhtK zULk+naLE<&pd7)e?uKMlcy_cMr5d_w$)A(5ix)ukQ9CZY<;NG}u0Ix4HWw4B_Vv^0 z$KnDZX7UWdZ*BJm`OeKO3yTcAoVZ8hQ$^WvlUvy~|4uu+SsEp$(#sk7vACvi&1@7H zcf3t|?3)*SrHC9Y!ZOG9`2KwS%4sWqr+W_vlo%xGsJ0IdDn{?CKSu`7TXZ~)krvhd zXpeXzZf?hZMiR2R7e7dn1~PF5q9=MB_@6|dm|t%Czlpwg(<(sym-a;Y=W-nG9)Z=a z_u5M2%5IBVqiR}xw(lwjnI1$vY$J1gO#b&c<4c%;{*6DsD8?K>;w#Fi=;bP}K^7oc zhnO*mq|D23xj{$vlwqGXKK9L+NOh6gXptHLAj#62uzh7E>X{P>-4UuEd#3qLb-9$U zf+&Zpd#3E98QmHp-Ei$^W}h%woY`c4^0vEDWeq+iYLDti4!W1e26`MlBV?XBW6I<1#L zPF!T`z#hh!{gtxrA0-Qqdo1pG5pvHkvNhrXM$3`aSwc*Do#PlTB7gnxd&lh$0P>U-%sUy!+SYy=)`RxtGtbW(Vcn(PQ^CEsD{ z-J>+>no;Ks!MW@p5}UX?x?|m%`I?skTSM}`r_lK>PIe}D)cs&imAw#U-P*5t#yDCx zi-l$!IKxPg98a%8lzxdw4$7a?kZ1NqV0bB)tc*K?Mv_2uyUVMDK`vlDaN|?AzIS?8 zj^!la=EUq#SA%AiS~hR!9$b1R0heA&>_Jzm>sbGgM7N83^u{k2FY3+WKfIFrp=%x2 zcPF;Lx#m&ba`ICzy*kQF`Oy(y%P}haM&VyVcz)7m4IRm0wUT}N3A|5)&|<<3Jq z{6+;v{cVLm`5i)l)4iONOFkW8CjJEAh1zmIr!3fPkY$At_zV^itjAW-l}B?c?+I!R zUbra5VfmS^O6S#+3gL8+0&BCUlAUY$X|Pmf(-(hq>00#F?=Gz(;$aEo-sk=Voe2$z zB?`jjyW9BppBFFC8)`*8i}U zj*?O*BjuLb8@uMD7}+@{th{-A&2dtRKS#buBKf{to)$KVu;vn;Cg=DeI=NeOXFg?+ zs;mVRt>MKzdG|&sCx;9q$b^96?}3JJVEOvD{Q`>@$x5)1LkR$2woA%PbpB?z> z!dQn~m|nV<2}J4O-OIv#QfumiA7(En0fQ-27|a)9&+a*Vp)b2_woj9=V`Nqpx{gCm zCx1C3Y4Au+c{wvIFmRiN!vUxyL)rJFh8`n`Br<}r=I`&^^jiqIs&`e5RZaey{KT#yg^%41Bf!+ zn{rjSaORR7qpvv}PuD48EOl=%1~+8(b(JL{vdL`P@82QzT?vLknaf$I2Ps7s@5v6vP7|M+Cu()`o=GVJuV#O zDOUoEfE&RluxY2UccY7_p5Xcinnz#Djgaa(4F2)s82^PJ^4?4;OY~xJ^*|%@IFBrua|Mh?Q$NbJ^{8dg`Uj(|kFD=HUrkw)0dufUCKTVz;@mmFn zzfO&^UK>XDY~&70F&40b)*lrz#Ko0u=_MlP6e2~^yun9&)n^GZ!vE&Oyx->JkR!x8n|DD&IdV8Mn|k^pG7lgEXnh>bS}Q zZnTY(FP*HP3MK;UglwEw0qJ?2|8)9G<$XVz(e{l=2ih*D!}_NI}U z>wv2z9MS(fwFYc_^d+K`Zf&Ewq#LOX>>xEqk(>HxPQD7s*Z#T`R~a6?l<_X!pc;7Z zw`R}RCiObT>lcnB-b#SGJM$;oA7wc*f$6CM(sx&EU1a13O~VsalBJQ|EBokShL`7v z{lKloL>QFu*4NHHCH8xq%A73|YbxFqT)_%qK-MwpJNK56qu{!!yY%GiKu)+mD zLx{`U@M`IlX)Eq?JXL?+IvVT??$M3IieRpRUxA3eDnv}BYd!HxFYM2+f4WNqapRfA z=>I%iOk*v(*_s-jcFk6&Gq?0sumLG}RwRMIgv_O{+G)N$=8TeSw+RSXWMJ?^&Iqhp z(3hb^&G63)5kF(}e3^eY^SL^|*7B>$9L8h&<@I-lu(7I-jbH1dEc}p;-)&dP{59q4 zM?b5P-4?tN1#YVmPJ>CcS($Kc3Kcs2YaZaBTx>)WFbe!7d?>LHIk2H(hhLDh%DUb6 zD!B^33)& zNt`eAF%>5(*pGTYmr?Qy6U^zuh26_EU;c{nzwqu%WF6Wjc!_sdB9fZaGd z1*tkwvl|{?Ch8(2GT8UXG2?Q=O7S(`$XyircW!*355J5hQGbT*oW41{FJPHy(C4>; zThc67ydBc7_GbV4s)bJ+Z-oNj8E zdak{_bZ_T0PvR#=QvJ7FT)j$U`xJ zq5}gHNDv}HgTl+pdw|;+8R{51N*&oS)O$5BDE|iRF`%~P*RNWnd|xu=Ke@rcKYe-m znC@UfipI2q)U^>$N8K`G>#%MD{T{`bAjO><+*pJAA5OGl20h8&bJQ)=tkwz^`K~(h z1(sjw>va08@c4xKu8gc5R_ty4qo_$Kz=0ZPFniSDqlad}Byjg50~kv?2AP&I+;s~F zc>Ncxn4!)o*wthA^EouF!bV17kq%QW1g?vYcONsJY+IF-^!YKpeBrgzF1YPC9C1~| zfGI%Cqd)6q0Wqu*>QytBOMBv$9^+L-)5=|>ek8UDkt?n}r$aFu>o`SMA=k)f?hPuB z<>{0#6nsv?oc3;|mZW%+_ZoTCD58 zJ@+0n&<1fPVuEU@EwXFIhjZQGOD^8eS{;^6$17j!v3~sTt-?3P96$h}pU|N|-e6}| zc^p6BXV$w0R$#S)=MS(wzwv|*dObJ;ND94$QsVqxj6Amw!e}Odwomldzam7W)aOfg+H z9nWlDtm7_y6LwjBy5ZMb^y@wDp}ODZTUJ~zK8O+sl`zZ|!f5vS*W$DqcXKeuE1WxL z+iyfE*01*m%WGb0+vFRS!pzvs`;V>VL0tp-T`-Wnb&>@Q)auw`&H1U6Lm!=C2$}HJ z$sjl65(-U2CXK(%()aM!3+A`naRaaPE)5erZlcsFLQ}>_>m1lzV1^PpO*9Bb?{05x zSv5cWLTkfwn)>C-9ZU^)XyA@&3EhhTy30m=LFr+j1vN8$Kh5v>&CyBZQS<{|H?4AWDW! z4yHZ<;0@}JY%}CO#gDoEfq`JdMzD>}@`N3G!%c<#L0o8ZlWYC3?%l1`L%|pm;}3h| z6BGA9yOoffOcV?KwFd%^(Yggh5n!Mt+yelgj2?pLzNDs-$Y}u2-p1E55}%wbUOOdh zk@my%qgu(%gf}tCh&W2hro09q2WX|5F}F|v47+a!vG;wWNJ!B zPt%!-tGe3%R-)He(1m6Uz!jFlh#VL~GYmo}0y-r~wgIh9(5V@Wth2liIvn(}SxT}a zZLpV#S85TJ%{st&%6|lLxgcZuFK!Wo?^$mdD1{#MRDtu_u^zNH-;bVy>;n=$9>SWI zRSW~+5Y+Hs%2o{5*4EDGuf)R)1(nN7Vo)_fLKRrr|1;U)b-}1Ta8v~~JJr8|M+WjG ztP|8&u(6FG_v$Ys^UG;HbG9-l7~6PThH+q> zh*BRlFPQ|W7yR;RP4m*9OXch$xKW$~lTP3pf;-OQQL&Kj`w(g|0_zoYjPzQ?kC%jX z(tAu|FfI_&mt9{-UU{Z+Kd_QUKb5<7c}899JG*9M(345%5*^#S6d+M!OCe%r^Q84A zQz~+OFh^iVVX1uk>pT3cR>l}=W)^DcqR;+G_%0RQFqWv5h;k5`T6CkOvd>0ygMscX zym8ff#OLS{sl7%qjZI4eT_@3#>I#qp{829(aLM*~ssDb1o|+DELm>=Bnr-po z#lPf>G5N9Q%}I~Ti;@jEz_`enrW2XL8PA36^q!n4=C;MnIR7M!?KD+~o&}gVNuLUT z(VAC=c&~aZ&cFE0@nnh~vCcQiNdGC%CC66GED?{-0<3tacoz;mBRfaDwp5Eez7xW6 zIn6T*=r~@@#6MZ~IM4T%2bbLQPX&4Lyy|z32KSuks|CGgx|g2yKFXb5eb)+O!oUF+ zWF$Y1|FDaFO}+5^>QV@_A?cv&f`cq|yih(ZUU{H&#(kBWrJFj{fE08*Zygu7w@)p% zrR3Ry&zRPi&lDE})m!L?WzVeC3_hpu#E3VFxx`hE6h`)MWXi1MM)cl0aEo30E@&=j z<$3OK_b{2M?cH51XP@5T{(*qSG>27+eKY185(XAF7;YR_bv}4ud$^&@ z|El}CpVeSl%i8q!>}@R6$b^|n>N1D#rYy1p8w9p z<@;NeR&#$f)A2iELoX(-l)Yy=pYJzk&!d5-{F;ne3l9nxZl6}o$MVZbCUP|+W?n~? zFd>cej(t|OAB|MaJwA*S)6713qw9rxJ5#ANKPc~<^3}4Dac_`+ayQuruT5382KLN^ zNJ_~D&Az|qwyz1)lbjYE0v}g5eC?k^G>|;EYQBE!KF?ibh^zNQ{4|LythP2f)t6G% z@x1xtcCl+lc`}lRGDH$t&JM(SUe3)f)Bmm>U@p_Xec{z31t}8I0}Sswh2L|mD8_3= zEpqqtDIe+lVgn`EEjPLf+GPV6N<^$U^{6~LJys&fMr71Cp1O~qArYH1B z;E8JB502kg>|Y=0i1HT~qm|bF^f@jqzF_9|UoUmrXj{uM2RHZDFU_PsyAe@r;g5Ux z%ys-(odZo=#bdt`^eOR%J!+~k@H2j&`MDF(9%UbKhjVoZpi;bFGIXXG*@+@_k#Szx zIj3&X2lI}O>5|N}IQLaL6eCrqGF1vQwXCVcYrd9YX>-ffZ6&tbC70n&1okBl@FmNQ zIKFY}beI-z{->sDs$n2$X&Xw=Ts+)1A5@U^dB7q}>BNX_qt7?xcEWs{a#Lva3uQWlK zoLe0ZLyC*f=#$o?V;-;NxJc5PFHy(JyCg4KDQM+41cZi^i;a=xI}*HG(&v;n4_=SQS)#E6l}%)D53cR;2ID?Bb^;^?%yJgZ^33`mXeSAz8O@SBdZE=jVUG zOn=mTe&%(xeKm#V4f?mT9Z9bP$*VYso<7&(2H@fy2jX*Mr6PMS%>Y;G<7Bm1EHNQHeqjA$N_0_+b%Vu1p&G!*F(a*v!SHpGd?AL~` z8ft4#K)IV_M?nXc?z;|Zj8|LD-4F8PgV~G$*Kb&H$)2%KF3mKm)hRYl$R?qoBEDzx zv%>K1Qd-c*;HXgBI~kwl)ode1Y7$L~5^5wZY2+xc=qbHl%DBiJ>IN7Yupv8T8EtQ{ z2|D7wnNq}*y&G+2da2Ctj`%tJZKJ{c9>ul*gtJn5V((I&$e_yh&J`wQ1L1+yP_yia zz3hku(WmxFD0QqMZz9U;l;vuv*?o`|M4$pVS)QOJJ}au8NzkrsEYm0%D=1Ry-EmXR z9Ezb@ifX)E%6fnGtTRuXpom)Ge{+OWv;1D#}rbx$|??Jy3Q` zK1JZmQ{A-=8hNS2%T>4CkCCz34Q=AIAdI|^~(MUe(%!WKZux7hf1^zOF2={@& zn7>z0JYAF^DfoHL6TSf)hz9X-)<54@UQM6E7b4F80hVtK65kVMq`E`Eu$NlN7zxO? zz(^*P8vfM+Kb1eg;M_VcF7C>!^9?a&B#Wmoq-wMoO;+LSj1}cqF&uwmDo7k$X@*#$ zt1PXeOE2r`I&taP2UzpW3ns#6*S6zk!-8U>6<98jPkhLyhm1L=sFi_>vNr6DxkH@B2Sor3obf diff --git a/src/App.tsx b/src/App.tsx index 69101f9..8e3e85e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,8 +1,6 @@ -import React from 'react' import { Route, Routes } from 'react-router-dom' import Main from './pages/Main' import About from './pages/About' -import SelfHosting from './pages/SelfHosting' function App() { return ( @@ -16,10 +14,6 @@ function App() { path="/about" element={} /> - } - /> ) } diff --git a/src/colors.css b/src/colors.css new file mode 100644 index 0000000..49aa786 --- /dev/null +++ b/src/colors.css @@ -0,0 +1,31 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + + color: var(--text-color); + background-color: var(--background); + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; + + --background: rgb(0, 0, 0); + --main: rgb(250, 95, 0); + --primary: rgb(40, 40, 40); + --secondary: rgb(100, 100, 100); + --tertiary: rgb(30, 30, 30); + --text-color: rgb(255, 255, 255); + --shadow-color: rgba(40, 40, 40, 0.5); + --shadow: 5px 5px 7px var(--shadow-color); +} + +@media (prefers-color-scheme: light) { + :root { + --background: rgb(220, 220, 220); + --main: rgb(250, 95, 0); + --primary: rgb(255, 255, 255); + --secondary: rgb(170, 170, 170); + --tertiary: rgb(100, 100, 100); + --text-color: rgb(0, 0, 0); + --shadow: 5px 5px 7px rgba(0, 0, 0, 0.2); + } +} diff --git a/src/components/B.tsx b/src/components/B.tsx new file mode 100644 index 0000000..4717e05 --- /dev/null +++ b/src/components/B.tsx @@ -0,0 +1,14 @@ +import { ReactNode } from 'react' + +interface BoldProps { + children: ReactNode; + col?: string; +} + +export const B = ({ children, col = "var(--textcolor)" }: BoldProps) => { + return ( + + {children} + + ) +} diff --git a/src/components/Bullet.tsx b/src/components/Bullet.tsx new file mode 100644 index 0000000..9f01526 --- /dev/null +++ b/src/components/Bullet.tsx @@ -0,0 +1,17 @@ +import { Children, ReactNode } from 'react' + +interface BulletProps { + indents?: number; + children: ReactNode; +} + +function Bullet({ indents, children }: BulletProps) { + + return ( +
+ • {children} +
+ ) +} + +export default Bullet; diff --git a/src/components/Description.tsx b/src/components/Description.tsx index 771c36c..b989dc9 100644 --- a/src/components/Description.tsx +++ b/src/components/Description.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from "react"; +import { ReactNode } from "react"; import { TextProps } from "../types"; export interface DescriptionProps extends TextProps { diff --git a/src/components/index.ts b/src/components/index.ts index 3de50de..33ba125 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,6 +1,7 @@ -export * from "./Header"; -export * from "./Title"; -export * from "./Description"; +export * from "./B"; export * from "./ButtonRow"; -export * from "./Message"; +export * from "./Description"; export * from "./DoubleSpace"; +export * from "./Header"; +export * from "./Message"; +export * from "./Title"; diff --git a/src/index.css b/src/index.css index 7eb58a7..36854fe 100644 --- a/src/index.css +++ b/src/index.css @@ -1,25 +1,4 @@ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"); - -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - - color: var(--text-color); - background-color: var(--background); - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; - - --background: rgb(0, 0, 0); - --main: rgb(250, 95, 0); - --primary: rgb(40, 40, 40); - --secondary: rgb(100, 100, 100); - --tertiary: rgb(30, 30, 30); - --text-color: rgb(255, 255, 255); - --shadow-color: rgba(40, 40, 40, 0.5); - --shadow: 5px 5px 7px var(--shadow-color); -} - body { animation: zoom-in 0.3s; } @@ -53,6 +32,11 @@ body { color 0s; } +.reg-link:link, .reg-link:visited { + color: var(--main); + text-decoration: none; +} + .hidden { display: none; } @@ -173,8 +157,8 @@ body { } .message { - width: 75%; - margin: auto; + width: 100%; + margin: 20px auto; text-align: center; align-content: center; } @@ -189,15 +173,3 @@ body { .small-font { font-size: 12px; } - -@media (prefers-color-scheme: light) { - :root { - --background: rgb(220, 220, 220); - --main: rgb(250, 95, 0); - --primary: rgb(255, 255, 255); - --secondary: rgb(170, 170, 170); - --tertiary: rgb(100, 100, 100); - --text-color: rgb(0, 0, 0); - --shadow: 5px 5px 7px rgba(0, 0, 0, 0.2); - } -} diff --git a/src/pages/About.tsx b/src/pages/About.tsx index d017998..9a4e3d7 100644 --- a/src/pages/About.tsx +++ b/src/pages/About.tsx @@ -1,6 +1,6 @@ -import React from 'react' -import { Link } from 'react-router-dom' -import { Description, Header, Message, Title, DoubleSpace, ButtonRow, Buttons, TextLink } from '../components' +import { Link } from 'react-router-dom'; +import { B, Description, Header, Message, Title, TextLink } from '../components' +import Bullet from '../components/Bullet' function About() { const links: TextLink[] = [ @@ -10,12 +10,45 @@ function About() { } ] - const buttons: Buttons[] = [ - { - name: "Self-Hosting", - link: "/about/selfhosting", - } - ]; + const serverLink = ( + + Server + + ); + + const clientLink = ( + + Client + + ); + + const assistantLink = ( + + Tailchat-Assistant + + ); + + const neovimLink = ( + + Neovim + + ); return ( <> @@ -25,19 +58,54 @@ function About() { About +

+ I'm powermaker450. +

+

You've probably met me online and checked out my website, I know you IRL, or you're interested in me.

- In the wise words of Lester Crest, "don't dawdle!" and read on. + I got very interested in programming at young age, and while my skills have improved a lot, I'm only 16 and got a lot to learn. + Despite that, I'm proud of what I've done and learned so far. +

+ +

+ You can check out some of my favorite projects, like Simple Review {serverLink} + {clientLink}, and {assistantLink}.

- + + +

+ So far, I've managed to famaliarize myself with these... +

- + Languages: + HTML/CSS + TypeScript/Javascript + Python + Lua (minimally, only for Neovim) + +
+ + Tools: + Git + React + Material UI (for React) + OpenAI API + SQLite + Regular Expressions + +
+ +

+ And my main/only editor is {neovimLink}. I love it until I don't. :) +

+
+
) } diff --git a/src/pages/Main.tsx b/src/pages/Main.tsx index 8d61d3b..5022bea 100644 --- a/src/pages/Main.tsx +++ b/src/pages/Main.tsx @@ -1,5 +1,5 @@ +import "../colors.css"; import { useState } from "react"; -import { Link } from "react-router-dom"; import { Buttons, ButtonRow, @@ -48,7 +48,7 @@ function Main() { link: "https://github.com/powermaker450", }, { - name: "Forgejo", + name: "Projects", link: "https://git.povario.com/powermaker450", }, { @@ -95,14 +95,12 @@ function Main() {
@powermaker450 - Professional Linux Enjoyer + Self Hosts a Lot + Professional FOSS Enjoyer
- Welcome! -

You've reached my homepage.

diff --git a/src/pages/SelfHosting.tsx b/src/pages/SelfHosting.tsx deleted file mode 100644 index 3b0a5e3..0000000 --- a/src/pages/SelfHosting.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { Link } from 'react-router-dom' -import { Description, DoubleSpace, Header, Message, TextLink, Title } from '../components' - -function SelfHosting() { - const links: TextLink[] = [ - { - text: "Back", - link: "/about" - } - ] - - return ( - <> -

- - - Self-Hosting - - -

- Getting the more obvious stuff out of the way, I like self-hosting. I started my self-hosting journey back in - 2021, when all I was was fed up with Netflix not having all the shows I wanted to watch. -

- -

- Eventually, that grew into something much bigger, and suddenly this machine I got from a dumpster was my key - to a privacy suite. -

- - - -

- Yep. Did I say it was from a dumpster? It's beautiful in it's own way. -

-
- - - - -

- Managing your own server is a learning experience in itself, and with time I learned the - cold, hard, basic skills of being a Linux sysadmin. - Not to say it hasn't paid off. -

- -

- I've learned my way around the terminal, and can comfortably surf through it without worry, - and if I do come across something I don't know, I'll figure out how to do it. - Not to mention the money saved not paying for cloud services. Money's not exactly something that get's thrown at me in my life. -

- -

- Instead of the Google Suite, I use Nextcloud. -

- -

- Instead of Spotify, I use Navidrome. -

- -

- Instead of paying for game hosting, I use Pufferpanel. -

- -

- And so on. Between becoming comfortable with the ways of Linux, and saving my family money in the long run, this server - has been a worthwhile investment of my time and effort. -

-
-
- - - - ) -} - -export default SelfHosting;