From d801d9c534595dc173bc68c0678fe819b2edfc91 Mon Sep 17 00:00:00 2001 From: Devasy Patel <110348311+Devasy23@users.noreply.github.com> Date: Tue, 16 Jun 2026 22:53:04 +0530 Subject: [PATCH] feat: bundle Geist fonts locally and add F-Droid metadata (Option B) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove google_fonts dependency; replace with bundled variable font files (Geist-Variable.ttf + GeistMono-Variable.ttf from Vercel v1.7.2, MIT licensed) - Replace all 377 GoogleFonts.geist/geistMono() calls with TextStyle(fontFamily:) across 31 dart files — no runtime Google CDN fetch, F-Droid build-compatible - Declare fonts in pubspec.yaml flutter.fonts section - Add fdroid/metadata/com.devasy.repforge.yml with anti-features (NonFreeNet) and auto-update config for F-Droid submission Co-Authored-By: Claude Sonnet 4.6 --- fdroid/metadata/com.devasy.repforge.yml | 56 ++++++++++++++ .../assets/fonts/Geist-Variable.ttf | Bin 0 -> 169056 bytes .../assets/fonts/GeistMono-Variable.ttf | Bin 0 -> 171200 bytes .../lib/screens/ai_coach_screen.dart | 27 ++++--- .../screens/ai_program_generator_screen.dart | 31 ++++---- .../lib/screens/analytics_screen.dart | 39 +++++----- .../lib/screens/heart_rate_detail_screen.dart | 19 +++-- .../lib/screens/history_screen.dart | 39 +++++----- workout-logger/lib/screens/home_screen.dart | 69 ++++++++--------- .../lib/screens/onboarding_screen.dart | 19 +++-- .../lib/screens/profile_screen.dart | 17 ++-- .../lib/screens/routine_optimizer_screen.dart | 21 +++-- .../lib/screens/routines_screen.dart | 35 ++++----- .../lib/screens/sleep_detail_screen.dart | 13 ++-- .../screens/widgets/analytics_overview.dart | 37 +++++---- .../lib/screens/widgets/calendar_grid.dart | 5 +- .../widgets/exercise_input_section.dart | 9 +-- .../widgets/exercise_progress_view.dart | 73 +++++++++--------- .../lib/screens/widgets/health_bar_chart.dart | 15 ++-- .../screens/widgets/health_detail_shell.dart | 7 +- .../lib/screens/widgets/heart_rate_card.dart | 13 ++-- .../screens/widgets/muscle_detail_sheet.dart | 31 ++++---- .../lib/screens/widgets/profile_sections.dart | 69 ++++++++--------- .../lib/screens/widgets/readiness_card.dart | 17 ++-- .../lib/screens/widgets/rf_question_card.dart | 11 ++- .../lib/screens/widgets/rf_widgets.dart | 3 +- .../lib/screens/widgets/sleep_hr_card.dart | 11 ++- .../lib/screens/widgets/sleep_hr_charts.dart | 31 ++++---- .../lib/screens/widgets/targets_tab.dart | 43 +++++------ .../lib/screens/widgets/volume_chart.dart | 3 +- .../lib/screens/widgets/wheel_picker.dart | 7 +- .../lib/screens/widgets/workout_header.dart | 7 +- .../screens/widgets/workout_hr_section.dart | 31 ++++---- .../lib/screens/workout_flow_screen.dart | 5 +- workout-logger/lib/theme/app_theme.dart | 29 ++++--- workout-logger/pubspec.yaml | 29 ++----- 36 files changed, 440 insertions(+), 431 deletions(-) create mode 100644 fdroid/metadata/com.devasy.repforge.yml create mode 100644 workout-logger/assets/fonts/Geist-Variable.ttf create mode 100644 workout-logger/assets/fonts/GeistMono-Variable.ttf diff --git a/fdroid/metadata/com.devasy.repforge.yml b/fdroid/metadata/com.devasy.repforge.yml new file mode 100644 index 0000000..7b0ab30 --- /dev/null +++ b/fdroid/metadata/com.devasy.repforge.yml @@ -0,0 +1,56 @@ +Categories: + - Sports & Health +License: Apache-2.0 +AuthorName: Devasy Patel +SourceCode: https://github.com/Devasy23/RepForge +IssueTracker: https://github.com/Devasy23/RepForge/issues + +AutoName: RepForge +Summary: Open-source workout logger with AI coaching and progress analytics +Description: |- + RepForge is a privacy-first workout logging app that helps you track sets, + reps, and weights across customizable routines. + + Features: + * Log workout sessions with sets, reps, and weights + * Visualise progress with charts (volume, strength curves) + * AI-powered set recommendations using linear regression + * Customisable exercise library with 50+ built-in exercises + * Goal tracking with ML-estimated completion dates + * Reusable workout routines + * Health Connect integration for sleep and heart rate readiness scores + * Optional AI Coach powered by Google Gemini (requires user-supplied API key) + * Full data export/import for portability + + All workout data is stored locally on-device using Hive. No account required. + No data is sent to any server unless you enable the optional AI Coach feature. + +RepoType: git +Repo: https://github.com/Devasy23/RepForge + +AntiFeatures: + NonFreeNet: + - description: > + The optional AI Coach and Routine Optimizer features send data to + Google's Gemini API (a proprietary cloud service). These features are + fully disabled unless the user provides their own Gemini API key in + Settings → AI Settings. The app is fully functional as an offline + workout logger without configuring a key. + +Builds: + - versionName: 2.0.1 + versionCode: 21 + commit: v2.0.1 + subdir: workout-logger + gradle: + - release + prebuild: + - flutter pub get + build: + - flutter build apk --release --split-per-abi + +AutoUpdateMode: Version v%v +UpdateCheckMode: Tags +UpdateCheckData: workout-logger/pubspec.yaml|^version:\s+([\d.]+)\+|.| +CurrentVersion: 2.0.1 +CurrentVersionCode: 21 diff --git a/workout-logger/assets/fonts/Geist-Variable.ttf b/workout-logger/assets/fonts/Geist-Variable.ttf new file mode 100644 index 0000000000000000000000000000000000000000..59f91f054d4f7ab5dd50544bf391dcc6b9930a81 GIT binary patch literal 169056 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

Z(gi@J-QIRcFE2WvRQ4V!H0NCvbu8wY9P*nX9U3 z5WHOA4U-z8VWQl6{J4(`XYzOBxVP{5b3YV(^7rGVwV`$i^PA23G+Senzor?pow$N2 z5Azgx%{?YgoY=#woWG(;fm=Tu&&JDaU9*xA6{z=@-$YrI)d~uHj~EeAb{aEZXZ#T( zjPg$d|0BVFY@iuKolR^CNCA8u&pqJ_&}x&a#@zm?v4P^_Ee*u&uTjFn>d`hXRblr3 z+BFW$n!U00^<|g_y;a{VxiGade0aCOwc}rh+stW)KEK=;KGd5L&5L>?5t@X`${4hd zq^=P-B;Iu$5@GZvZN@Yls;Ezr=;hp|{BaZu*95j%`M06ta28xw*O`6^^r#@cRYPoU z_GaLfDxI$D0fpp<_7!hpm{M=s$|z*6|8Wy-h#RCVncB z+vOX_(Le*}obH{shO;P{Zq-tIc&H9 z_jWa1KY|%tXkTW@l<8LNN<@SY!f@_ZrA4i+^*}^o^w!rMEMsQ{=ZKDu)-c3Xm153L z#g{KsUxG7J!l2Nv7sndE1A1dQ28GnS&~y0xZa2J?G-O&3Z$UA4QdLhHHH|YDaJoOo z^=oM2ZDHqfZ#7uZej~N!W}3m5c)=0gr3+ZTQB|+T#zcpj>Tj^Nn-MCCLNg5xH4#0- znwpyG8?cHalfRss;SANx+&AA8b80+m!NuQr`vuCcmt4PZcwFErIQTmMRNjT6qM{3V zr%xU_d=v}7+-7s}*GIoPU2cvYI&>%|Rn!1y>VnWcBg<+tqnn$W%rv?0KsS{VC2=V! z4x#R9US3|c;7HNSrd4v7=3?(WBHW42v_pK5)+M1e9;mD7+->5ylmGVgIVjgTDAzF5 zlfS&OMzEebcBMQ3eMvJ_RW)QrHrCXdZ4L*%YFsQS&=q@R7|7Ybp zfQO1weeFWwg?k1@R2QI!|7XtE$4{e#P9Oi~=)ME!{@rRr!}))H`pGxf8r&%~14&0~TxDsYpgnlr`AMJ3Q{nwq?33qI!B`K<7Q zg4EQMK?8dCOz7ftIx&NuQ|d(ZdNVCr*KitqFz25k@z*hxTv(OWu}zj?tkHsF4b_nT z_KX@Oz2DXL9kPwKfR}5XW9p`yn5vR7?E=k|=Vf}M#Xo`1Jmg+Vb!sPwNIPAGSaOj z*2u`BqM;RejU$?{#37UWHiK)*;1gU~Pzn+fjz#x~`n)V50aEs~s)`wWj;W1qsmld) zOOlJ0`HsR$sYt#f|kOUNb&Dp*PJmI}?4}$&*=* zQ>RYlpY!E-dA8PZ$5|pD@qpK^j-|m?g|yRfDL3$Y z(o4DV<3KZ3r=%;=2_A{6`a@p+xpPI=@vZAt6f_0TTgOwo+JF zl_}oH&ApY$HwziEttF$?mk2-9y8|Os32`=ZyN1f#7Q>1$zTzwcVc1+8??ey){wKDWTrec^^1S z=jHRA=W~2n=u&0ssVSyTAT7DgKYc|A={=yasjj>Zv-)-AH_o3vefs>3@&*O->qV`ORu9hKcPe+&uTq=e(&*qc4q|W_5S#*3E5oi8s)`Z-_3>U^L&s9?zlAe<(M_ zcr!!Hv{1_Vf2eyC;I{7cPVgOgI3DgBAOR5IeTkANiI!|xlI5dqb-Txz?j)ORRnptD z+1kwP&Q9%AP1R1idI>zbotmCZ&#ZehNzGQO)3w>nOx%-n4%yx5wq@CtX-c9bilTTQ zAOM0O?)%36{to~z$?Z%{P1O!d=pSIgSa# zwzA7|T+dbDZ}B?Sl=9kk7Q`+rEG#XB(jh;_vb~etTYtPXKVMa$b7hn4ZDm0CKAYb1 zNq7~N&HD_NvzMO3r1nHRi<6@&+p|K?;^L_@<7WoPJdkEg7SGt|=`$ew`8AkX*7AHe zct8&?OsaTZA|djyPRmuxK0}S>6&R?M%YX$eW;x4v%g#dZwW1!+arf>$e!RI8TwMqC zTwe|D23H>6yH~DhF+y#vT-}3gwpSH=%Eg)0G{k4Qk_^(M=sM-0?%tgXQI?^Rk&#|K z63O&CYgP32m|ehjf)^*)~cMeuWfU94PzB49zcZyL)~VT-3b-N)uHJa7#JSTOH^GT z${wvWzqPdm*aiFCrLz{FB%h^JypP$M{>%%b)pmvAh?&StK~3)&oSR#iz4vHtGXe?~ z*_>OvGkf>`AfF>(y7fHY3yT8`Zmfc*Yrc+hmD7sBA`%H?hO6TiF1v`;%y8D$TAs!D zNG32FtS5FmbeX-KXueR1Mzfg+z%4bf=}8Vk31kv4^3&5kg86eQY1IsyV^*V{WOCxKPvZ>TC+2Axz!crK>8+-Go?v*YtVNqLJdC?C+5+da2n8_q+^Am7KTxg z9>n(fsC2>0W!FjDUS>>lo-!V9dVRgWU-0UWHXo2k0!>Ovv^bJ^!kEf^dhdymv)tpy z+!Mn$qS)=T$NLf3GL-+%na9Dcv6H<|K6#rUCyQ6AdCU4+qcSOpx(^vETGe1r;_+St zxm$%drTH-a7;6ZO#;lq$Jz9YQ_9gONQP(^AsiXfodiuqdpF%f8d1Rk%yn>mM>_)vRl~Sn$ zr;gRMeSLk2L|=DDx2>no+~px(Ir617ADX!YGk*f-(>u2aHiMh)k!*eX>8DQT+}*k5 zrTeqD=U~r%{Mg}y6t7r*Vr7h287hL6)|;&OgvG3DL;x>8Iv>$epMG-Z#I@O<&%sWM zpN9+VINcQODIlK5|1P$(|M`{-bx0lxb>o&F8|@IZgO+ypIFV{F6IJqL2u} zN80W3Q!YR37u2oqNbiL&Q8#U;g-OuH|B-KFScr~FEO4qGezw*TV#o8V-4wBS+>%Ic z3Dg@?s=fRrXF;)jlQ%&UhtUl-eCq$EB@*%zXOa4sPd|yjP`Yl88KzAV*(DBmA1lQ?F2SJZrS7ywK(yap z%ta@WBA|7$jIbD1lxhWR7#0j5!cq2zPKf^ho_vczgy1-?LQ_X z>Td7Zp%JCU5kXr!KIhPpCk|Qyb9?H^{=5;1_UL_i@t_@XO}}vM4n9v#JrIOXoVvf; zc)pDDC-Nb!%?8A$&8F2k`UxL$ySr@idQ}aXNnNd1c46+@tq5Ko3V>1$g(ddz7JQF` z7HBJoO3?R0TN$!Yp}D(4@8WJ8&c68W!qTJJ**VzkK6`k7nGW5BjCD6e+s?oxamEH_ zl!$XK2N6As!1#NOU83W0P{B1eA(w5y0WnB)m4iD&unI?S9F}R4(my$O@!lKSe?Qn& z4Nll3&FP=q)z525{QG`O2dn;hpFi63!RPnLNXMQsBGDee8J--Gs88%aanKTxQl7To zpEn}W=7~2CuOyc2*h+rhxZwbKYHxqHQS8gc1tMAlv79Op>uEX-**Lu9l`hR6$j0<8 zOj!`u$4?Ry?8%e(h;Gy?9iJew@wAtkZh5T8N;K`fpvuHD`jlt`KN)q`!JH5C&V9+Z z0Fz=#iBObeGMOpG;}%OcE3n4BJ>wIDGfv+)%=|<0!XF{YI*s9|+N#s2Hc_zNdyW8qXl(Ez?q7SaR zVapLugaqT3Q20T^%gVq%+VZF#oWG-<*@M4}V>=Sf(3G^rbGgqI4`yl3ky&mJJUPpw zPaO0>yc!g9*bdiRVNUdU;0f{qrn<%_o|3IG|IX zqeozqn)~+oJs!Mc$&<18`=4B$1BvLMNAkC0r|TF;J!rXfjI$lQLvN8j1A|ZYd6ZWj zJaL?!9(v~(T|0QEx$nudPxf*^smNTuiKF-5K{7fi#*!&nn~l$h=I-%|dVUwS#r5rQ zAP`IzD#V_`*K>H^77M^C5D>g-x?W5tGlqeI0UJzTJ_l2aZQ~J!L4XecB&a5f>?KvB zM$MJ>)`XKg8@SmU;kC7Jy25gcOa8P(jW4YhUdc)pn6AC(ZloH6uU7OxFr){Xtx=5v zNJpVuW_RU4^2Y2h(co+^Mx7AP(FtCmUw zn3hJ20L&RQ4fxCAVgkUE!9imqz6gs|4&MAMrH0u;)%o!7A&Df zN^WoVM*Ie6v3g!hqXFfZt`YlEu}06(CQvXFJp&*6#6%~IB%wsU+z>O1Z09*xM+E62 zB8lx26JF8e$$8}yxqAqjnaxe$nRnlP2z-Fuq*vh$#Q&VoXQ7cd`&6M%wHtl1`TPtz zpeH7#5HAS9G|FF_LqNlVZ^9N)=lmC;Q9KG>Ybgz;573! zX1Y^&Tl;a}wEVx7Y;1Tu7ps3#Jij8m-JHokz%%~<&zx##>=x7VO1#k^))BijnUtEq z$JCAb#ME`ub*wm}0?h9p!u>8-4`ySg1$^raWinaisrE;QTKm0iM%<%0Y97oxF5u4?Fj#hl3$i&+*g zBmgx!WF5mpr=CYV)oF(u-NN9g*d>X59&Cp)b)OoTO1K|+sov3Pkkc(K^iV|l{QT+* zB*MM-100=&d4V1pB@yY@u00>;`Rms|G6=pGC_fcMe2lZviRat&54;`_n8P&wcorw3 z;{yReDI8hH;!hVzES2zk>|a0o*QP7f?@GiB0>ba@x6nMDps9ol@@;fMH~vBNWv?Vv zsL>1wzMZ{&=l)6vW@uQS?)i&?WMZOFuD_|z=M&NJPH35=q!@hm!l)4mYB*e$S6_KW zkX*n1oJZE;1T9Y8jFe+d(Qd>Dp~`L4bRB1`b=FD0{peR`GVN8=hMw^H##V5^wk82x z!P%Wz40!1Zmh-bIUA4NCDwlt5IzR4`&qZHki6(#P(xodedFejAm+JM>zukLCqCQx+ zXVAyX=%dGOB5*~u$sUZPK`_#hV2}m9V1xE5B()02Log`(8}-agg3=*wa6(5VW@g^% z*$5@^>11fb(@AXlx=xQL4`Y7bv%y1pQ@|+d@c<)LfqRJ)K!K@p#jAepwLWSYaf9zJ zQ+=`Kj#(AJiwQYd#v@3vtg#^zdnn z-a0yJaX78em+=Lvl+f7*PLeDK!lWX@Yn3o9%VZLtG(~Lw+u`q6uV4S!Pd=Pm-XdU5 zL@JLNs!Jb`L?Zb7+QRA{ylT-v)GLz=6OF~w(UdRtv(_|6$hpFuL7RV)nW1L9Ty$*L zI%k?>u2I*#;@C_Wn_G-gY|aO+SjBL5Ak`apcb$odPYIY8rL9)apD&lYyMsZu`}+0U znKv;%kh45v0s2b?q^{#t#?Q5J6IVnouIhrwd>r&U zz5Hvx_G_0%=iy638VwFzMe{Y0$uv893$FgNXO%^qjH2?a^uZtg;UC_Yp1pGiYwzPo zR}Q7v(U^lrN3F9#_L*df@KQl9J2Ru?VEb3jC`mYzOF4tlbYkpJ_9a+WR*=o(!UdM( z4Pw~~*;&l$ZuSD6m_wvJ>95bBKRmJKx%v|NBbm~?h6+mC>pHj9yFgq7lO*h@Fr_GL z7sRd$+xry2+oS+K8BgM`k4{V_h$N?Q36q z!NvN2@?)h&C9pxKGf132kmY|tCO0x7Le)I|sZ@WJQL7#<>{S`!hwEUf!H07yRkezc z@@zJl!H6&@Q zQk`Xe3Q$!KRSd0=c+rnP2J)r1SCNiq5Yt_+SAB9T5Lf*jCThYXo;YeJke&)ak|P#k6{$ zdEd@qG{oa;KYiLCD?=kK$NY$7*DOr?@t4P+efHU70MP(>Fd2}>Y)UE9Q_IU(F1x(A zEZA?{ka0QqgL0hAA`mJE z_=31CoerzsV9-{w^T4G)PD|W_gY)x)gT4LTcB9Nk8NBr1APL=SeCbOFuyW=;`QtzS z;~)PNwzYh!T+i?A?WKxd>N@^!?$S8ch0r}CF`?*L^u+4pdMDQ1sgHYU#M>%@ZzJ#OXV>colO`tRAtWL2nMZQj;15ji|=D?4N?+!DmQp#10yH! zH9X)&BtA6^1!7{jfK-L<^3Jw@Y0%}cOF#4nlXY5ecU|7xbh$#nsg$hL2k`hK02B`B za;5H-ef%>b6#VVSUP&@ZExzlOyt`O__ubaW{wYTGzhY$10NY;#ISq$HTQNXTOLb1u zX*SzYtCw*9L-{<8=k&3f&DIWhyMXc918)fjK@;P}F^~C+lKnh$^Y*TC^unb#e(hIZ zyZFoqAD+GS(e*$1lRy9DiL@WblK@%aJXwbyZehWsgOcdz$107VN+%OXGJ$+fb|51E z5tO2?i@%qkpPT42sq*=iqsMz#1Etnt8Net0 z(LcQRDC(17Mc;d`C38E`BJ%fB?8LEwro%Lig9ulgq3IsYj4#L&BAC*c!+7DS5N7!C@{pje~v-$jy zIC(Ndl5V9LE3dzP{pUZ&&~8LtmEG$8iu)$_syI{drz27G=P@Qi@d3aD#3ny6;qD*s zI0)JjvtKWDbf3O3F#*XBZ9i3FbzZ;z>8C`i_#C-alo@}4?7A;06B-{006Ll>Np`>y z^~vzk0|FLRsPke5ky5GZlWIZY2A#GkNNd-wz4Yp(v3@teoaq1hTwF5n0!b34=o#)c zgT9jb%GRp^h)Qojoqs;^G(H zM0V5d-u%1VI$}k9`q*2REYW&;JbIeE*UVh?w3y@H!n?nP-Jd*3FmMVsye zz{DOsoS$EKyb`ICd}8@RnIf5ZJNfc935HK1MvIl?cQ%$6mV-HOw?YB4N@?%W$2abV z!3~fZ3(z}6Vo*vvie5%QwCvAoQa7nU+|6)B`DDaS#Ssj^-@ z< z6;p*#!K(+q9rU(~SExw6no1BwqOgc9tc!}SSRDM7NB1(A*2^b)luzp@~ev;v* zS4 zhdMFQ{5+j@gGal#{5a{5E5ApfOY!p)Xc=j7fN<03v>IEveCkwuePcTq*d$c0yBo0- zl7-cc#aS-^_hVys76ZHCaDHwspC_4aZL5n5kLK@mLku%@_x1NUZG?zUPeVpAk0JNN zDZ&P)r-#SSo*L{2!j7O1_|}dcvQ~XwJk^mnC}OQ5xCbERgF#eJC|u9q=dUU5*?;Q<CayK+uJ&0#h(J+(mNeI~ z=?;;=9~!zK{o>1B`sEi%Ue+;XZjPMDRcRTC$i#K|o!=qr^6&o8OaI}&Ypo5j<+g4O zF_CcmyrM9g_tND-FE`t}$*+!cN@^_1H&={U%y_DmTZ-lLqw~026zg|QpC=cwWf3}( zfr{-kMPbE)F@$}T=SSFSe){<8i=Lu=^a-J7MDOqE=pfcC*t0sofry2R*tkL+9eEg# z@*y6~kq<${sw4d)`=*3tsT$0jFd=tPJCMVX1QNn;&*mnH(1`D1b=_{46%@+q0u$P- zgX`Aa4D@2gE%>B$iX+fyFGM#v$058|eg46NU9KC4w42*~@St^zh!S|<441X2te3chZ2I2Z*97cDy-fmGa3dFh)d1J4xw7W^D1I|)f zs+2*sOTpZgSi$rjZ~DJuot_T(*B9sS-NgmO?K8@YtDj9HUQd`b^MRcNmZL-xBzK>H zk?~Bgt9=rQh3xQ-n$|mm-BB1@08Zlk9RWwk#bJC`v5(^T2z4>xu**R;n_u$gBi+vC zQ)FiHuzS)}OC6V88r+VyCJbVt$6)gbn&Q`lWI zS%Y{c1=f?w#Mk30%up4_DVC8)~t5+Gl7>2KBu2$~@A%4FK z#RZ`gJv}{6lU^wuCD{L+S)Cmxt&K}h%RqQxKdRS zaqM8KwtW8l`J#+iQ8lun-(NqUz6HSRt@L?;zkM)UAHQ?^_Agu5RlYEOvO;6hth@-`3SoEsHTd~h;MajFPBM>MyaC93*A_ObI zd;&!aBo9k50Ij$=h&NS(aZuI*}<0aAZaz zzc3MlXUF5&DMv|Ozs+b_>FVvi|1erGKnXMyVvp{3_jyS6>vTtlw}XMPod}za1d>PM z79-~X$`XyZTu8}qbYyoek%-M}pdq6Y zmfQ?Aaw=soOEtrvr#yE1#)dSrv9f+@)TD@m2*wqr6Q|Z!{W+-#q^8?#!pJ&0(%ufa z+2tC+Sdgp&ZLI`C39vH~1A=fgabySl?CE}d5n%RI#FdCK+()Gyl68*6kzOKa)lE?h zQib@Om0Z4%1}R7*N6GrSQdubEiNK-BZ$L!e5Sjs2Z)&Z(yVmy1Np1|mVumM}n7YUh z@5wBory~<*MvRJSu>q*wql#dCg6YpzZpRE@XdMkvNEJ1K9 z(G2WOS1l6Q8DLJteb_2PCLtlc0#iuld=ez~FW0=RH5Ri9o)15K_vbKswqkn;m}h7N zVTB~(S65$6CPzon2;kb!U2X;X3VfL*2}9s!zuFD2F)mkgTqO2GTnRFg)@@xc+A&{y zaUH?y5btFY3FQ5Hwd_@3T;Zw~4p1@l-5QU-^itUX7H25GRDT3I{iyy@6dBI&j9!m> z+Nqa&Rp3~?`WgZy@9_Mc7PbBgdi@I4zlWDf>_dw?^-BKSY1mij`24-w4o4_7sJy*r zd8V*Ljt5$+kn$;r5Ae!(BiijTVT}uL>5q+R$+tL~p8U)w(+|haU!36QE0k1~L&VG| zafdBOdsWF*(*WTMXe&s(O@+OnSGGJ4H29{(p~A{!bX?8J44y z+mS>X27l0!N~(}ggtxb2HR=~d3R=e{B)flJqH;mQFP3IRV+_ z`~|uU6*UzEesIBSNA?R6Y{)C59Emr)>Jn4c#5h+wDv8)!`Y=14fuG$enY7Y6TsO(R z5HwmJT;h7R=9AzUoEVzYZAD*F(?9v(?p6$OkvvO{2$SGhZ@e+RNg|+dZEwEUq$D1+ zNg~$8@Qh*qNa`<=Gm@9s&kWFp2dY)!dsN=bK&=wMVY<2=y4GyJq&Zi9H#rhnT)cNr zDm|>xNQg#*m;&fity4p+X`*hV(Kwxpi-#okcC!%NwaCY_WHQ||Esg)y;Kv_#bOp^K9AoeYEGJA;d35mV@*oTsif1?6T- z`#MXfX}O^2N3=V1H^}IZ9tm_PG^LzhJTEIv4-U`I4-bp7`RlI}*?d2i`H-9+jUH(O z<3LPus~zp^?D+W6w&<%@z0iSKRVjk<2I^{olT%aPHyfQ z7X85J2Z8K)>S@xh6XufD!NE^HSzlXOT$m@x6M!Ew$qUQ3KKTT96rI~i=f6nuy@GMP zfN{9~e~~YQtjZNPGDw%pHrp?x3Llwg5J|97NRAOl9Bb1a>Rr63A!W1EQ?@r{Rfr-o`Zqk@6-&me(K9p0^aF3K=~7%Y(> z&Ibv~FoyJF6a7ZH9IcLyo;)#ns*Cr@_^wlc%(I_iNVi0r57jKNt30@hTGF1}#@1qzW8-e2KL!8K@trpw# zZ~Ft=sgzC&u>)0b;H22zcK0ATnq0+gZbF|yw46>oe)8n$)2F?(xm77^1ig-+S7QqH z0*KXtJ>b5b&Yhjk&QM73%A@OWpDkdtUe;isM!nRiU}TdJc9DV$0kx7uVsH@2Cuw}t zG(poNr_Y@`=Y{i`+BBQnS%(Sc=^vqwv$PyfX>DDOPL~ZYkkY-F2=B-xNEH`cT3T9< z(=1DuLU$Puzwe@MJX#~Yvl&}W>>9{b`C*h?@?2189C&g$Y#UU63b9_=ax1# z(l^h-p_IvF$_P8=s(6t>)-y(KjK}N9w2qa}6hizrz^ zM1Q%2YWt(?Vo?gaz*>?K6mMzz&*7plpgIML0Ps|99^%`4j^an!S?CFV#Xr(-uYUSh@WsEsS#tc+*R$zVO|FJZQ>n9fF8}f`qgu-qUw;SHXqC(w?A@`W{N}rOEDr5}_(*W>|of>2Eh5RqQ zF(}P^2K32Cfeb3|1wQ%lkAM8A*7ee>@kF*k(gA5vmWimD0673pXSR+(xxGAWYJ`A2 z1tL|N4LpRPHM_BuLGx4O-VWu`-k^Ln4 zL#xSp{wK2N37FNWu|E>Et+wpjD^no$^8Ukw%m!LFV3K5)AIjk?o|~C_u)J5Sku)P^ z0ATeDQh2Mc z&pm1~>og`CaU~g*XiKJ2YKJjXx4f_d{p8V3#;d-5T_F`E98~#Z>DFF-1M~YP_Ua^O zAP<}MTp_x(v1zwZh1|}{vVS|0$szF^V#FJ)3F@1nlG_1S-zfroR?OAwjj0}%Q&;g(IQ7Z&b+^i#ruOuZ*zQ=F7k zH*NsABzf-RUB6tlC6N(?yDJd<3;;NANdL;@3R?BE9h4Y2w*)1!8>{66>?<5ipm54o1H4?() z+4LS3DpM|JK>x!?4q$_8T`iTW$o8nI6)e&MHAJcrQd+5$pEuaH1cAHdGEsD*Lb4ojoLI*PbgC2s4P4(0&g$TK~^5Nl56~GZvT+#*wxDS&+ zeD->x%=ZH8JEkN`q*l&KkY+UX<(Il8dow?MFA$6+anaFpq9Au;Vjfj_0W+IJjs&h+ z$Yl!^U$0D~Gm)!1D$D1qBsX=fQbYll>(@6Z7qEom7H0QTQkjupRxe=RE@Iy%J4smz zq^pC0i=krMD&iH%M4_VQD5K+T0Z=FW4@*>h*hyvA=T}k`YBY4~-k$8#laz~8f&dvP zUQg0<6!d2J(0HnpeA~+)HJ;DJAe%GJ?^c3RIXcY9Awc-`+u{g_1=ZpvxI)pA!NnB{ znZYzEX>gp!P0)t0Y|xwsMQS$o@YibY?j7;D7x3IwjJykwl$GU#q7Fw)wO(T->{c*W zBhmI*<;dyYC>Lo7<5Msw zu8M7mB}+aPWR9v_hlv}IB=Gy<3Lc`@qUDH|#R@U4+~_w>O1U5v=7Q&Ch-&(pWi;A~xqeKkW7p zVLLl@Q~}eC>J9M)Vb zp|Yh?X?L-VtuROsGohDoNE*4hnLr6HoLgBvwfS~GgJ?usr&epV+ErY+ly�c!uP* zN=OWtp;gId0hP+5J;=5AV)-iIUr4H0@#%RTG6=d{8m64UWi3z|R|`Ym#=fYmg+dwp zQzjc4a$Dc_@&PD_@QJkwKXwi)`R<^e4w`SP~Ow#GGvuEIixsN(@&#OsVk~H6tr}AGM(9l@=9@%DI^ll)2$ip?<1g&gjH0CJyyaf z%pCv<uL=><=d4jGnM`IIlwy*xDp>!{PKhCLEqW=H+IhP_ z-yjLrbafIG8cd~jcf;9=RIb`w%hpsd$?&4bH-bCP=978a=WHOZ1H33Nfl^^s;$&DX z3M!4krt4C@r8U~Nb_h>BEwr*{AB_MIbCn?Y7K&o4+6?*V@wms&^T!_iy&YxHeEQ&D z0r`jI0kR7U{B9TUV%$an1;bex1*TnwT36{+siAp=Zw(aWMjT@|ZVug0(e z(m@+G1FVliToF^kIZ07cy<50U*B~m^t2LVAFf0!6y(;XdsDMLDkS+>%l%6lvcgSuMZ^0Bc zv&ozH@5C4GR(rF)XgAX0ZuEcAYVR-hf68k9*EL$=^;Kf;Wp156?b2)}iG>Y5{Cs{& zR@mij`LMz&eD{c*2)-Jqhu>jxSwwt3^_^H**?xym2q`&RBxIDS*I5KNk{jB#ACZJd zXe*Z0wx8I4M=K+}R0_!Of2Urfge>oLi%KFa>Z%@bgrpXpsZoA_}-#K;bD31Y0E) zUoWjnyM@UPB0?porj*+ZbL7Dij=b{bp|4fWM*U=ucw zY7Ltvt;yp{%h)`x3X*#?TW1&|-Dv>}^(iC_gk2p2F?Fg7>>S9)H1eT`E3n(y6Nyqq z4@tKJ5^rChOa@bh$>X%^AmyaP;B%=`RpL`X(k(%@>>M7R66dim-Iic#T3ia2h_oO_ z=>=MbmDJSY+gl*!P&5#dmySV#MM7^olq(`BCu$PNv-n$8XTvlsa=F6C!1Ly1ku02^ z8myKwslGmQH4H&EKqT5EMB7+H@A1T9nHq8N=oK6UU^C`gRPaPL(aEb2Xfezr0c^$N zNd&<%61rG!K>Tfv_>go<)|h5wCWS6ujBlG{T$l=S6r|gHdULdQ)Rvd+@|0qidP2IT zAqS&KqY9!9LR`ZEMp~~2*H(6mVnBodA=b-hF~b6-BdZ`N;4;`F5DVnMb$y841yV%8R=Yb+h0rC`VD3;n-@a za$-~HZ$vTbctfUeJ5%`rqkvUGrLsXD($X0mloTa5fqiPxUIW4`9MsiZ1pK$k6Z}6( zuny^#LfB6vQD!u*7Qb@g?;_^eYIP3{$z-q(mEo%75SI&Ih*zT1F(q11?d?T&{F#he zt+Dm=z?zVctS>Bh+1dF}xjE|t=@v$92_Sa(2|(b!q>I{@M3$wpkT^1;jEf9_c#SAf zBHeO_rCaGQl5U}8hascHD&&fXDR^(3M$Uv)vbE(}QN|@HPxE5w3Rqeo-AW7c?YLW@U`(B9Fb!@~NB(QZ2-3_Xt<3p2Yrq-^SVbyA zyn+N-=tbE4#mg6Kz_}`5pwon2T|D@ z_pSLLX+q$dPkQOww*^J>Nzz7Zy#IMmlV}0rJ>2j6>tDZ0`5>zKm=|BUDrgUe(V9tn zFwE4{P>s^+6ns$P*3S45ncP<2<=9L#;5wr)*G+znr#vVSr+W2;3vhgkE{hRM&Wa3IcF|xK@ zw#Q=0=aNzm#_`GR>-7MnN)1o?}r*zOT=K4&cc2L=2oMHo(5b+y;c<0q!m^a z3m>(~kqn^(+FFR9YWVzWq=3pbO)2Qtu?D}6H5j2KN-#E^1{qUT2nx~ZloGnHZ!ZQH z(pESY+abT>dwqSEF5&EWwLnhFRESsyF-;fXVel#8pixux3c8W7UU~Y#{rh0ha1qJf zsubq3ov3-;HDc-7PO03n7($}(WtPc^wYRs=7(-8|QI0{YaEz#BY5%shO&3aa2|OqA^B2yZfzyn%d`yl5nStb$p)_ro><||dFB&7$%xmT=JCz;ThGoOD zre4>`c24e`lo%ui*Dl%Zy z0od*Y$*PQtQDp`xITd<$$S=I+4X)M{$O zXxu0a4;PNzLe}Ei+y36922YJvtE1qI4%NyELMyi;PAmS7C)XvC^_0buk_-+?T2HsN zZc!JeH2^I)M@Hmqrg8did(Fswvf*z~Hs53&ra)BSbDw;YBi}I9Okvr*v|jIJSLb_2 z1=+1~`PRB#zy6juua*=J7Q)b$2)#hj0SA4mxl66+aCmYNGZ~E*0q9>?s830wc|Xis zh#h85oswd;4qF1Cngg;BF(&`=nv(Y`gpcWRUv>R(Ha6ke!(AVuIxOhR*WkZ&90EBqB zE>X9l)mtyxB)J5%x;hOdn;5+2n5)H4cq0NB6 z;Vz{R1b{RfDI~7A->w)*vLk;9t#+d|Edd$3HMQjWCSoWgwF-dCp-5zVXD1jG2d~pI zxje1ZTZs42$~IstQZq`6&DjZypiWDs)9v>!E=8n$#?U!)N*n8}pI-FT%nHV@0`(SpV5w34;lO+|o< z-b}MPk2@4j)vyE>0hOfKN+Fqo;Dq=fi1>ks4}BkTsd|$Z}!K$G^6;LE;Dp z`%j(++|443d;(~VRb#aRi0-w^w0gZpPSc5ng_X@44^vc|yOP`0C*p8K{Qx&#uI?QlS7&BtGx9!bJ@EeffqEY`sYw!8ferNbwmCWJPlj{WyxEg9Zgle|zty~9`|k%#4w3~I5G%HKesxr6y-z4A{0(p# zH(d*~4DJ9e^puoLT383XvVaoyP}KlD;WDckO|OP4s;^v87mwa+x{SPRlhkZ$6=bbZ z(Y3rl8BoHjE>N?r`!nx75`BT5QxJR4lLZF~_tGP7SIo7Ffj{NXXaTX^rA`ykIGd77z97l*~j}+0@ zQdqTEO#DWjg+c_2GP{mt5zNaAxCpqh!~IkSS`GLV_#WWC{axJ-uh!As)n6>C9ivyS zTp4w!i_NolYQL{!yh&_~&0d;43V^WEDAq^5D;3__1Aumqm9L<){$X^54i}o;G`kce z%gbBq0k0;oz9pAu0`u@{&IdB`);|0idK2S(zJLnRI%uLOKnGTy7M?b7JN{`2*d-2%IY6bGYzQOc56=#^He@huW9H!Pxm!FNypw> zZ@#x8p3?T6dW+SpuWN+2*pR{DeDqN`RhI~zg6H5m9d zrP4C+R8pZ&k_Nzbc{!BNhr}0Y@ZXVf+}^X6?rsbDeRc$(n7(XQqN@}m8yiUU!OPNh zL?VE{PtV12b;tl3^QqGSXlI*rV}Gmxo)4B_y0_R_mVkvVr6A7-mcW5SF~kq&h+`nM zB*5*D!IY&K7D2suSrR_%(?}T&myJXm4g*t^&=@PMCXeods@y>yH{yrCGy4dRLk$4j z{rxBe(J8*rkg;Mcr%#zR7+F0Ro14Z+G2VJw1|rq7u@Na&bduIsTe9kx*9Thyi`e$DU0!VL8($9!pf}5?lmpY zay%gi`y?!g;j>GV^r>f2dBizM`y0*kcH|Rz)d17D_X#S_ZcoxKy7>um&y{YHD2=80 zm>0l}becx(IN@I$e_uiy5icrj6f?yJl&;qMqzB%OF;H@r;q}ZUC;~&vS-L2rWu;@I zAfL%6>WDkaPtx)d!?XJ4ClFLc+1-f7qvW^%ywS)^GEi|S)kr!$GXBiC#AZXRi|`%J ztVCK1bL$QqJf#5N%-3VFNjTu~)T3DxEz@WaZc+`0$x~+dca^QD+PVjALWW$>nl^^i zjWM{fW9))|anZ|U>p*7@4mt!i*vo6LdGJ&GC2)hT@o`Aa9AGrFvx|Zn?y%X}B5}@< zU#(tRD^HPLi1bZ5I*_nix*#Quz|(3n$ptBB&b4dZZb53|VR-~$k%IK!yH{#!#s~Cx z81%R;sqfFFj>MRB8i@~^>uD$JiMgn4R@+iEx@0n%9)-h?1c8oNrpUJ%h9zWe>%yf$ zoDhpQ!nP^$-F%+dgrIR^d_xw?P-G8cgeCGFX@6pQIYG(+(6(^PZ?XSLi`nux5_#P0 zLJHcU@9)<)+ikW<{4_+DQ#9zicUSt(oN3Sqhe0s0@;i!J4MA+k%L3v@J%*e7@nd8l zN0JsIR})=LhvzsGsUQW4OG$AIr?^d`s<{RFaoS6#4}DgP&!YAhVvHiqpThT)A3XXX ztH@ULl~XUD0!)8$UkmQqZfU_JW`@KzdS%IiOrd~L+N(&07D0#LF0Q{hX#`tIph75U zFiaR`iiK@bM50>#{@~`?+QWxCyDk^p4c*8JWPSHt65J^L>Q}$|##hrxpY+fF{Lg>< zml}G^r72H-(WZeDmx zDTR*~c6odiie5d5C@Qcp#}K52lq8!G1~eL*ZFg6#gFMmgRI59kFzy?e=go1LEmG#^ zpSP!hOiJ6IM`J1k*2ySR^{1Ti>RYRT&RmYv4RirGLelig?}K7=l#d1a+h%fW7*Oe1elmShl0 z=4v<7>6Fo3+v-E6#|daMYYSh z?N7_pBMuOHe6`l0O&$l1R##@0}C)P-!x*D)x_S~ps~Z7 zyH4lsf05RRCUyGIIj6tz4KMSJZ+!a-@{oS}^3_X%F^d$fg^YG%LrcDk$fH$(Po!b04Kv zw|GL^wk^LwvDAkj6Z@MYC)%P3GF^~gffeBDCCcfXf~i+Tv%v`6>aiEI741|_8d9p3 ze){vDq*8#OwhZnEW_K7qM883;T)X_-^S!+b3xXCf6NGaj1{FUeE?4_Bk?IvB_owlARV_P+e!2VUj}KcKEOzD>XX?_X&A!^S_P|NZ+{8vi@al6aWJ!;1rz z!(r0mFzxT$Z~TUr`HkP8u256-%fIph^>3+vOaJoASE%n`ZVYTMNXlR|?(RAq3`2h7 z!RATcKNlZMDE8wIsdRcukw0`UE;Xp?rK{Arb5A)J|2fYdJ5yrkA1^Fiy43cS9C%FH zXG$E&rLHay%1SRy&ax2n0BbYUinxU?6UyS`}#^C@VsQkK2Vo z<-PVxb+Vqavu9;n8>=fTD<}gs(AynC))2u!E(et1T8$>bGf%e}6D~mbxe_&v42G>O zL(pglfZBJjQ{!}F_ATXf6lJ4hv1#dN(^5g%Sm|j@$Mh2rN87UKKJPl*0`V9ewDMi; z;Z_I>#Cxl~)Ms(SGcDe=&rgrHaJldP=k2)#^@yMHkEj=N_Va}NiTt`vYbHsw3t|=t z3T#T*)wQyssn%l-$6iF3!uI^GvV%L>5v@Vt^%UFH`QdH8=SN4Q_UkBVxe;5f;p?g}U*hMDjnrPbE&C zOptFvr`kj~1tJVrwKWAI-0F?o>~5@_7S$$!Tg~MfN(2x1{S85D@iUU%AYh*YwFl)m{*FZ0cBq9-47^`$FBy7&&xc!P)~>ktmY z5KExBgOiJA+=sq==<8Da#PDc*@80~{_RjYD!h?s)TY=DCGM$KQEw66vL=cd&urT*v zC6df#lhMe|=F;QUz-}}W++1INFf)ByxYV5NQ5W(TxszM2Wn@*f3zzImE068hPM;VZ z9UB?&IGv>6o)uYcjVcaCf?6q^M&2+uSGT@qtWX0^z?Xo28ITa!A-a%F5<{h z$MY9Cp<52=wMene+h(vLGgy(!r%#+pCCcktJJI;g`qIMUnm@1;&p`_bYz4ycWTs3p zP+?+;EVLB4Myu4#%|Fl?mm4)eb1SS|>S-V*Fdo^7BoX?QjYY!S>#G}qXetrjT3>xU zclXZSlyF%*?Z+JNhga?J>r{ybjHUzuY<&FmkO#K^4x4A+HGkMm-(FXX)!vyCF0ZaH zJ6`|FKyOcPZOlD*G$I+@jqF82n;YwoX9EM>y@9#;)y>Tf zB!N#RJkeM(izFjiLIfToE|DA%NddR7V>sjv{`bDq1 ztX5IH%Ow(tT#aSfO2V@Z#0f1+3KE-=9v$V+E;7uLItOt#;=!MT(P4X&{}F zk)3F^gcvo{nGUY6ZtbE;TY-lg0ZGn*V-hwO_G~dqJ4Zz1m0q!Mj?~b^4SuN zC=iorYb!&ua$M#g{F*Xpxi$Fh>N}*62bu4U;E|=A) zMMV#_0zqdC(=YG}_EsImZ&)47yS1P(!s*ZLkWZwXd%anLe#Xl7(LD97aI5TjLl#G1jH2 zBRB>iQZauRut)K2-&l^68lm((D5_;IZcC2N`sfLcZtoR+79i{y8i5mPQrRR5sIl;>(;5XR_UG?B@slBpb0Pa=pp5ee@`c7q}R zHtOxtR=FC9ys>UvtCD8^tnT*l^9_k%rivWeDi{%nbT}l5V z7-t@B<1irbK}+z~jFtpJXv#F}vq)tyvdd~we*%d)WK zvc*bOh7LqwBku)o(5O(srJPuuo&Bz!MX+h3kq;Bk(OL?gH^d4ntR!x?Tf>S}nwO(un+2+1(?jPk*C0dL`q!^r7#l<0?12H7 zUILgeXLeJgqf}*Jpwc=G`~22$?)=2b{%&`t1@$v~hX&jz%YhrNv-F-EBl%tB7JFB3 zf0qR$&fMYX>OXOExZ7!W_Kco38|D`tg5TPajkt}=IznEada@5us3u(R(vIK1w)l8y zZDVb1V|zCii$r26c*e?&YC5>OiaNt!y46ZHw!5>lyR*HyxxKxy^k{B={^7mrJ41Z~ z;J4LcWDPb_5zTd!5IpTZ9HJ{Dhme8)1iST5uv_Oe8iP?@&Z2HE;vFSQwH$WOGV-16 zlWmPrk5n!764I%cStMAfm7~kc!Z`#o<%4a|+M#Ja6~NY7D7#ZQ7mMX38a)_+lx+~N zYbBRLtY%_whlt;ba%?Y^%caw~Ql(U?G^A>c)?l`y2=uukr;@?y&;+&}n$%N4Zmnh6 zEgt7xW2cMG4x?6Y?dt9BH0iZGvJI$Ac8gAdG;d`D;3FhmQY#~aY9d>f8x0!G@^Z9X zW94vC=F-_xcb#H+y-_1YxDLvcYb_3!U9VCob;wZNJ3Kl#2H6d~3!=jK2tYkY4#*)u z-;uvRd2qUq(Z|Efn=UuS5#jR6^vuscym{m1r*|Jbn4Nv_=<&j%$E*HOz`q@WOtBkH z=F27IrG?QJC5`0u6wwomS{1L5(TD`k=DJD2m_#xfLOk}?<|@ESD~})Cy?y)c?N2}Y z_}0faR-E=u@Gg!k8V zdKbY3rbwPr=(Sai3!m|*%aIj0k9P!KsQ@K3I9#sTTxg*=;a8mB|8ouLG)ENsnPgzDgxWuc9b}zt^O!7xN(L zP+ID!qJ-$YlFg=*^F~DLa(>27cbs|M!k2f~XFvS#!?^%3-YuFyum*0-9ErcW5H4XdI!^&% zCa>39`9YZ}5MX z^2UJN*2r$dr5DHm4M)>deGg1>AylX#iChh;4^LHSm5lKXp)e0?gpa1rq^RvC3Lso1 zMDkXvnLHJZ)}#_8qDRzBIk^`VE_220#l`azj{5d(%;fHUbpGh^%m<$!&&zUxR&)#u z&CEunhC!rB8I)Ai;P=BPPQcjJW7wRBt8h~;v2+fguYN#0YPE8e;mi*!Fk`4G@D;Y_Kab2Lxi|A2M- z9jx2rbDWrC3^Bz>9)|lyaRvxP282;208~g+I2eKOMI*CBqtV}EU>G{%~s#$8P<{Q9Ax0A|;R89VYd`^GqQQXx^(s9LZkL-~Y ziIQoF6iJCI0AeH7hlNX^Du?YBgFc@AqQ6k4}2`*KW>gnCJwa)JNFBtdVV5>!tGDy2U!@};w*pjCWjSYhXF!D5SBG5@oxN3zAw0gjk zJl2$Awt)8|MG&|28fa#c%oZTg6lkdP2v&42SA3RfxhqMBBbTGZhpM`^=JCKye33gm z{9D!^W&J~^{J{JGhTqBglq#%@12Ksu?PuxC;BOt;_u31I#UqF=~Njz>PI z-dXI54BX-&Kj^P)wyvNU$n0pyZ(j76{h`s>E3)hhg^?8$Qc_ktZf$xgFBner+VAe_ z!PeG+wKv?$kogL7&*J{w7pn=CsZYNsY{6aO$w8qre|Ge5$C!kH;BH!B)hMef!urGU z3kpL{0>gK!du!>-;MVft8-|C3;gJUK2UsaTM7=6pTkAKST|Zc|!P5(Vuuq>}xIiz% z50?Bp;A5}*2?Z1W^dg%T9$elEM>+X!2g9?sv%y3l8AwKjrzSRQqNZppTx-a8wSD*v zKztwLiMsyr+BI4J*AE`RHyuARx9H^LK1ioNxdBeq@cTblWbh*RO9kv_5lTVSb+XQ* zKNj;V6RMhCUG@9ns^Wx|-wO*3mZHxIgJzXE2f<7SdwP(OaPc}fs$6e9U*u~{TC{;n zp#~(R2+n7y%+jYKReFa@kk6Cc9k0ALrAF9tRH(V~<_Pb`W7-&AN2?hc14@g)vjuN> zm*quRTNQdOaz0;FI687Vm%6`wVAq(U8Ar-?+iYHf=~bcEA_wCuDhZOGzwui~2O}9t z{&EW2%Bb@wXhW_S^a^ar{Y+@KU`l;p}CiKk;|NOu0oc@D9GlZ4W=p zhNE_VYKnhS?Vpin2C7zN$xh%{7amwoJ8HKjllC54J5@<@whG!1P=sPP3+6(@a|SBg zjyktl>$TR}nnhjNU#VF32r2{8a(^{$i&y%|4b#c7a>;zqQ;ZsEklAG(Bcd zqo6~*h*4h;Bi*#-l%Vr0jd9VNzu+#wQKjH1cv7BiPrbn~$mSP(_ z9m*NL1W_TA^`g)*d;*cSL-`R+D_%?RjJJ^S9M^;t1@$AELcDa%WC3HLQ~Agcs<~ic z(K5&7STUWQ48xTdz8eM3Ju;q76`BfbM29eE0&=NQail6zy;ANWZzFd1?%iD+|C$YD z#Eyw**2pV4TWgBFW5bVDvh4wQVGgtpAN{_67`gf*VL0p}kg*LnOK5DB*o)0&C|}#H ze#&Ir8*p+pozm|ByMGsELxaE^w`rPeA~^`Eo%|UTY)zzu92^W-(kRk)G}Ky`#@Mbf zY2IrN)}IaHTVXd{Gy4bq=3092Xrn#AHtXZuo-|?F-(Va+ z1eNClNJ!ceC5!W`2dnuO9|Zp$@ACz`&;l)7quD5>$6p((H!Pyh+wM$M|iFm$V6V0v(WQ*>zw2IkmI#X&KwU*|aO{=w%g$3pP zZ@=kkBp)EB(Px`S2x&Yzsy9ut+im}+kH5^ddoVd~jraN}Bvj&*c_ax!q7aj{Cpi8# z^y;f)ep|bk*xrn*bq=Q~tDu%sPie;MqIY0)GTa}A&ufP_k&Wjj#yKv_9#ju>_e$;J0u8z3i|l=DNvLr!1~fx)Matx%c3~?>~Xx)LkUBev5{1ValVgcVi~r zLM9Z{DH?Sjl}qa@KEF>=a~UXSFP@fuNH4<=-W+zPw^3?rZ1C=x88;92$Eejk zi0m@)%E*-~tWQ;kP>BOifG%*PLMpEMBc#@QR7W+aXUXI<#Z$><(v)q5L2Wl@zCpcJ?w z$OT6m-d=YeW|3A)G8c;_Z-j^W;RB?gg0e>^hVP-5?_t!_NKyokx&ip#Pfo&!5wuCQ z>_PmsOOyOj4%YuKFTAG5`iLe0b2iK@&B+lkfH66bDYRzCX-8J1Q=?39y% zN4!JbRc%AI&U@PL_$1Y6q&|rw)3PV-UePcmpX(EPAe^){Z$p7%P&HRWt(ETIY{963 z8}S^!Ka-)TRrBHY_MsN*N*XskWsXZyyc_G7$up!My8$_&p#eojl`1Qt1{VBvS7mZA}HC7m{X+4b$D1*OWS zD{S`04}uZ0Owt(y!Bz^~>2)|)@h@72ls?=5BB|_=8sGN^QR%)?RNKrF45i|#LN|~; z+$017*p4Rbvsm^J_AX>2Z1gK~p;qNBu0Y=y+)!i_L?~a&#bFtWvLhvg`j6@Dr(nTJ zSUqr>7QJ+}gpjY6K@B=PIk3)QrTQ=;y#6}8WN1V@zk#@bB>ca->z#Z?&E#s^BR0T{ z$kKN=znHFI0RW3BGsI7T^;*?}}$N2H3w~(w%)XDt?nKEZpi~rTg+5 zD-PBGe&3fd%^|>Wj+tJl^5CP3rrV7E(?;P&FUaX@mO8r}cNX@rz4U)esAG;S(pT;> zTdDM@RI=M|jNYKo75*LeX;i#(hh4p@>qP-TpqKy~Z-2Hd$g7X+I5^@Mu1Q3jT>I07 zLv{XjR2-I-B}lUqwM@zLW)@EdoKD!>5&{{(3x&z?X~)swi`7*WLTZ;m#avtALgq!z zGrkm9TZ7?i$d-rnoSK3)uxjg_xpWD8T9&7;E-Wm(HBEWz_YW7jqq>gYzdMu8EN8O{P^))CrnOvi{ z6UJ~^rRp89EkddmR1Ug7r>3D7r{!^VL)KzOWeEe6WX)hHGbq1HVmKUfn-*OrcPNYu z!ERJL9UX9stq%hA+&&)O&(#@O+Z)*7jojXI<;?~HxzuulvbSTvPkv(d`P}T<_F}4tFd4ZMhHZwz;GJ;;QW8?jEk(>{|n&0-&~t~|nt;nB)d5cTQZ4Gd`G?(Lud{O7k-im^am?nQfzd2t%@ zGMc%p^2ZIgm@8p)sP_CkdWsCk|Bhg<#^Mz^t>S8=q1CKzP>KoMb1>Ph8I|3`Fv|=} zh-56ZCCYp5tf$aARp)V)A~ta-0HJV*vFpUag%S~`9pynB963%C2ZkN|GfX?dQ=~lp z=MK#bYuE>8av6{&Lm4AX3D6JrupgU7Gpm_VyYl1CPVauNN7Ve-^t|-khl$g_H~e_5 zFqp!Qt=Y^hn(ttf!Pa9%e7MMvRTEm9MROAr*}Z%E9y2Tn)`7vkG}3~~$t}e?GBJT$ zqC_4sa@JTpjf%X&CXcw1t@U-Q)it0#I-7^W`u4TA>&;rT2}Wb3I%=#z#yiFO+3!A+ zc-+4~c%WD{&sY(jC2?I|cKhxh9)>&6PRh>#*Fl?ulfqxX<0*9%_{W=-Xnk zzgVvXoms_7y-iH)p+m(wS*hg16V^S1^mk^Y+xO>YLHhhNp;Qtu?yl#sV!hUA)vsMQ zUA}C>xVtXFXP@3f5$yPGJKUp!=A~+NVj^Mj<`ruwmD>0BHCJ0>pn=P3U0)xlJTkNl z(xk&!EsjfUHusC~yC1PfuJ8XMuQ(n<>L-(zE}^bRF!)$;q}y5B8_Q)M^OYaIVMAOe zq7wT0kP%dpVlhKw=tASx*Mq_Jb>w+TCJ|)j;HDCP_x-*#wjTQa-^Hhp4nkFNO^*!( zgC-q^?6&DQ9frQiI!>nJedqC&SKq9z6B1T&!EITYE)u z&AFotqo&YBcvfAwG(Z1(uYk~CkDV7pRx8>9lb2k%O=bAV)T&oi(G{LVRXx~M;9Z4` z5`{zpLCB0taLTa6iskgfFFyTpdplJ`_W82x8=8IN%Eb#_w^?uvUOYkXK9Eelley#f z@9o{YhhrE&&2MySVJVsj1yA9nIon*@^({`?Y=jz(z>dbjX|A=WuU_?~2L{q_`TcL< z=?%V9laR`*K8M4_Z2&B z*Mq|vbBsc5`T)1jz1!O?99}~94mwARWTfi+xC(=Xl|ogp2-Vqo=_Ri`Y?eyt}S1U-W9ZfngT(CayY;S#ij|JufUzMM5z22y8c9g+gjQV8T=v1?c zi4T{&Nz1;fA!d8m0ZwR&EDXCEfmxGY--~?slDJi6U?1^wmnlY!6w-= z)5>+rRd&@B3$cgn4Xr)tNEAI{+4cEUb$4I@S*uXCEf}19wq%~ER)6=qnLBruqNpkx zi#>d!qgS2nV^{SJlm|?SAbW zvuNAj$7rs7!<+rhKkq7ki;7nJ`_)UAs{8wjdu0VW`^*fivSKCgvL4}3j&OxAg6ZCT zb9eWis@~h(?MMj^AW|f#wEKX9seP7ga?vzt6lk1~X@$Sm!3G;GDv* zv9&0N`l1r1M`Ox7mPC|$@4d56YQhC!p*D6cU-O|4_P#eWc;oC7 zo8qRhvm;;}!gH!Z3=%Z1nBINYgmE-xC@!R=Kh@W#SiKD|s&$Ac*r8bY07}bD1&|B$%+nFe zWN+^zTR%8hSFG*T)#2gl@G$h`hy~uG8HO7?AO1ZMNF-W`L>F7q@L}OFOWw{Moisi- zUf5hNNSltaOJnUvqTq&qWQ1Q~Gr~-9#i8wfPM{r(^%Hs5DVqf3CT?;zCww9b@c3~Y z!DFe~vN$B6R<_7C8PzOGu)8&?rJ7i^+bmMCT$SMO)r2zF{JPV^a1$;#t*j3B+`2=y zT1w@r1)eBWIs>=K_9`4u>MgU)!dHtX$>zi@bP*m2P67QX?>bqtT%hjlB7-+W!)fJ^ zUYDF!h zd-y(9OLY-vZL6hRuGSsMSBF&dCMR6D3Z=%<2-M+vUEta#_?3xpmZk~;(AaILCUZoN z1BhCC7gxl#dL6|*Ok&dtcTWM{Q1wc^*@oDbnk~^Lp3bTECJ&-Jn1Qln@;>T*d(F&;~0VKVFZc7D2k&KjtMYMQe-xrSjdJzH@l16N8esr zL}lCWBO%wquMjSdfc#%}cvQDd=WFi$e?Uw6c9FmREf{JDj&Vc0$bZDXjW1??F++g3 zU*UcAJFEH*Id0YY{(bfj`u70U{+8ZK=ZVNQL}D5i4O5KWy2(OObLb|!8Dg_0taNIpj>!K0^m9QDO2ngJ)}Qk3NFwS=e9=|=*V;{#?TKA-w-tmrUm40*U#WY z2ODVh6Laj=t=P>_=q4_!g9{76+lj<&9d~UPL(mcKq$coO?3Tja3`Hb*;uec>!3Bl8 zorp;E*a8clhe<@#a5jb5O*|11HJp)t_4X^;n>3=ZhzPuI#Y`GS@E7o2=)gBHH^+ea zO<+!l1M}O!+_+_@l^tTtZtGB8BRy{;L^QI1h7p;@K*Rx7HbP1x5$G9_X*5JA1H+Sa z&_E$V9}k9Nw?sUAGlXEv+i0E$E{J&Kc4ASZ!%I(r(u^iQ6cKL4LN^ydZWu8Z(4(*r zOx*4~b;?f4ZbsQHAq3@v-Hx&aAraJPn=E+U3?3K)kICkNFpp{OtcPw328_`n!o@<= zB7zhQoffBinvb&kot~DXZ0;33&9nPjPs?oXxF>xdAQd~&Mw|y-?neNM#l&UMWG(_= z7^g;)E><)z1Pw#u2^x^^|vH0BfSo*&OLuM*Gtv z4nIu=iL{Se{!x2S;pBe*Qk=6D-It&z*-OCx#eOR7C)a&5H@PJO>=n^i|N% zp#}}zojc+X;KTrp-3K(l2?823a673-f`Zso)Y^nMfW@Yw_9na;?N51%HC9K{a1 z3BIEZJBkf<+u%9JvxD?QG;-`%4Oi^dGqgdt2(^fCw{B942)FPOUjb1lch@|&Cup)v zFP*P+cd+(7+E5d{jj@Aa8)V4ps9jFX-{)eCTb|?eRdjkDwUw*QqqcI-pGR72ppv%M zK%Xyf@k zjae47@nDiMc18E;I=kcMX~*3+cHA=UxVe)%PPcgJmwD70s3RQ-8UpuDK8-HkwC;#+ zpqvqw9&wGi2rWJh?~^^_g4G1>X7t?QZbr{KH|%mwP3D0s5eEiMLJV99>rMn!UgEM^ zTb)~jlVFKz+*$-5Nt}a6hvyK3B?=Ii1(gAtC}42eGkAam?7j$@FwY)@;r7j236X{1HlE-yPt55hyA39U78du=ApYp=;Ap~EZhM?ex5oA2<-xd@2Dg2#In zcWI))!?Q#Pv7;ECiBXOe{0k?T5=DeJ1tVfQ5%hOvi009E`iUc=33=WkJQmhge^7)W zp{Vm4YOnPG>pRR801m-s3L!)aJ@C8++5zRx!H&|$J4Ne(Jc>F`5Mm|~K0tWpD1o+} zemWSD{bUpzCCUb){4UKnbUw%JNtE4*;^=xO%3up%`%%6hZ`y4Q>qm<#>~54@ ziSoFFiL$%;8C{nk2!sMGn12ZfvXtU6{6X#YcKYmSJyUu=xxrE5TO`Jh(z#w386`PO^ebb{rOrH$ve!5ChxF{I(QsQ zM65V!f$7y+ba#@$J3fTQgOPlQ?b98_2_8riA{HVE5j>vRc2fZ&i|IOoZc&VB-wNjKHh#FzMggbQH~ zStx?O0OmYx8c;M{88D7@Wn-2FZ9JG{jQv#-0&_|Hk=~B^BcK`l@w9}X)<7ys6CVUt z=Sc_xh4EvF5EzXAtp1DJf1J*UBa*f(lAM?)j!62ln1Gzy>&6uB5Fd`{|F zC*}f@lQ_4oL!#la4tWMg{cK7=p8}$m(+vM~zQt`X>0qoN<;r3k{v(+(#H1 zXHx*vwWgEM2s=&d1a8M#rw*;-HNo-J<)Y~pY#uNWfDtU37GUv!ao`kg3=5BVn6_$w z+sh|2ghzJzqmvo+XPnGVQW)#b1oIPmGx!v2Pw4ODn$l&k;nhLyVevrc3d~8jVe9~s zr|f0jmN;9Il>-8AkxW!%;eaq%)JAd=i|(E~ab~CaIElq+Zb>^@NX8v$#E$wtX*ha_9)CJjQILoL z(TB(aQmzSt)rC9J)RzzZJtz*CN?)E0D2@!gl^j;sR;><4*|-@wwdaJ(4e^0cbQN8~ z-`h+7O7LZTNTZ5;dX{7utop23&S5wA`)UY%4SiOBJtX& z!tO=cJ-t=e|8IJHW0e=0EyZjX;GgXE+Tl-j&^wf^OJ3yNMUX`qp{_4Ig<`Y(>c+TY z7KA1;kidt)yyKPX*`eM8coO!wT=by+)QPzWxN~{Th0~o&8*@Pw;p_TbRN=MkMKSaY z9GJ~C7cGZFMg$kiX|#;FAZTxfnakPnlO#t@?LVgl?oR1+4Mz;2*=RJKZlM?}3hs)Q zXtr8m5xD}77ZhoQLERdq2;N0H@GSMVT4tvff#x)~P(j7%gr^VQ-JL!DHT3s2oGi>d zGg%y{9~zZI{YVat&{2fFMfq5)q9A1kQtH6f1MhIB#1%OGpo)Uouk`WF22xUpR;Ls3 zb+{4`SqnEV1!PuH`f|C$Tnc_DseB&MHV73!u_z=g@z+q3@1-?`{NZsQmveK0eeJs$ zU`DY+zN{ObF(|F&3j&7IQbjOh9(kmAz9}N&4xU##a>y_W-YnFtf>Y8BO+ce8@oy)pW*CdCQ_%WaS(~c3S3IUwg6%_o|(pscGbW z@b4?GByLqa$m%dK&=YXCahLiM9k91{kg9Q%>rqc*I29Nk&SY?d_^r#AEtWUGrAVm? z#iLmjDY>_2v1H*jsXZ|d3}OCcy-kbTTPanV0s;;h=Q8geP)?Iv6?x^{LaS7PuTh18 zh7{)wcSu2YE4>mfyzDl!h+HuBw!M<|4TUjj0a2>U65X_&*Arz&QJg6xFuNSvYEx2%5?QQiCUm@p<)2jpu3Aoa~ z*xdH_4Z!WGuctTQ>+v>}04mKPf0rmTNp`sdSbqI|^&^9qoa9Exx1IEZO>q1F=Ot=l zRpHcwtn})q+IPqN12F{fmnala)#ky2%a;`)Gd5=ILOK`FEsEd|rYRaQo%MSaq^Xwm zQ}HyupT_r|fM+wstf%(9r?$IWL-0zimfPLkMUMWqN%3qY=R)lC{`Vlxs6U_QQA-5; z7=`0_BRgalde3++{l`GxzUS%xqoFSVci4SdBzy|*0y1p)d~SyuYXgZdj<7b$3e_?^ zF%G!!9~5v)iaXY)s|Z$pwx2je9M!3D^`(#~*eg@Gw9O+I3<^kP)44Ws{|j~Xu#ofm z?d?h`Ylawih>Dm#)-Nub*0DhOVGjAYFV-7hL_~zw?f&hQoe8 z-}>~4Vzake#B1&FKTIpOU;ftWTU*Oy9Io$t1AgSaz2&mSQf>?k7n9;~tO6 z)bxDy=v7bxj&FbGTqxH-!E2yk|3$cxI*>IGWdJFYbWtr9ONXiF@YY`aO6fOnE2{Y# zDoi4E(e@73>wd0SEh_!L{oFUWyIZM*hroJ$zP_Qs!J!MYUw`kt_ZDs{{RZxWS=35o zx0(a}*t!8XZvS`rnI@CKaF5qoj;+tVC^0(=!=rv7P35wuWW;R)ZH(jjy$2mWw+ zi#SBg4=YiJ6B=HXoI8gYC3O13!Bkf{p8UjS?pQ(x6tt}ns)RsP5>slH9|5dT>LU=`WY6WNjo6ZkO2L3<( e^$-6uKIwPyzjb~mZAN(i-~aa?zV|=>EBk-*ab@8E literal 0 HcmV?d00001 diff --git a/workout-logger/lib/screens/ai_coach_screen.dart b/workout-logger/lib/screens/ai_coach_screen.dart index 79f8145..69e3a36 100644 --- a/workout-logger/lib/screens/ai_coach_screen.dart +++ b/workout-logger/lib/screens/ai_coach_screen.dart @@ -7,7 +7,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:gpt_markdown/gpt_markdown.dart'; import '../models/models.dart'; @@ -190,7 +189,7 @@ class _AiCoachViewState extends State<_AiCoachView> { children: [ Text( 'AI Coach', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -199,7 +198,7 @@ class _AiCoachViewState extends State<_AiCoachView> { ), Text( 'Powered by Gemini', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), @@ -297,7 +296,7 @@ class _AiCoachViewState extends State<_AiCoachView> { const SizedBox(height: AppSpacing.lg), Text( name != null && name.isNotEmpty ? 'Hey $name 👋' : 'Your AI Coach', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 22, fontWeight: FontWeight.w700, @@ -308,7 +307,7 @@ class _AiCoachViewState extends State<_AiCoachView> { Text( 'Ask me anything — what to train today, how to break a plateau, reading your progress, anything.', textAlign: TextAlign.center, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 14, height: 1.5, @@ -393,7 +392,7 @@ class _AiCoachViewState extends State<_AiCoachView> { ), child: TextField( controller: _controller, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, ), @@ -402,7 +401,7 @@ class _AiCoachViewState extends State<_AiCoachView> { textCapitalization: TextCapitalization.sentences, decoration: InputDecoration( hintText: 'Ask your coach...', - hintStyle: GoogleFonts.geist( + hintStyle: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 14, ), @@ -515,7 +514,7 @@ class _ConversationsSheet extends StatelessWidget { children: [ Text( 'Conversations', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -534,7 +533,7 @@ class _ConversationsSheet extends StatelessWidget { const SizedBox(width: 4), Text( 'New chat', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.primary, fontSize: 13, fontWeight: FontWeight.w600, @@ -551,7 +550,7 @@ class _ConversationsSheet extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: AppSpacing.lg), child: Text( 'No saved conversations yet.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -630,7 +629,7 @@ class _ConversationTile extends StatelessWidget { conversation.title.isEmpty ? 'New chat' : conversation.title, maxLines: 1, overflow: TextOverflow.ellipsis, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w500, @@ -672,7 +671,7 @@ class _SuggestionChip extends StatelessWidget { ), child: Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.primary, fontSize: 13, fontWeight: FontWeight.w500, @@ -740,7 +739,7 @@ class _MessageBubble extends StatelessWidget { child: isUser ? Text( message.text, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, height: 1.55, @@ -804,7 +803,7 @@ class _CoachMarkdown extends StatelessWidget { Widget build(BuildContext context) { return GptMarkdown( text, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, height: 1.55, diff --git a/workout-logger/lib/screens/ai_program_generator_screen.dart b/workout-logger/lib/screens/ai_program_generator_screen.dart index ded3dc5..9003bca 100644 --- a/workout-logger/lib/screens/ai_program_generator_screen.dart +++ b/workout-logger/lib/screens/ai_program_generator_screen.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../models/models.dart'; import '../services/ai/gemini_ai_service.dart'; @@ -196,7 +195,7 @@ class _AiProgramGeneratorScreenState extends State { children: [ Text( 'AI Program Generator', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -205,7 +204,7 @@ class _AiProgramGeneratorScreenState extends State { ), Text( 'Powered by Gemini', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), @@ -233,7 +232,7 @@ class _AiProgramGeneratorScreenState extends State { const SizedBox(width: 8), Text( 'Describe your program', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w700, @@ -250,7 +249,7 @@ class _AiProgramGeneratorScreenState extends State { ), child: TextField( controller: _promptCtrl, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, height: 1.5, @@ -261,7 +260,7 @@ class _AiProgramGeneratorScreenState extends State { decoration: InputDecoration( hintText: 'e.g. "12-week hypertrophy program, 4 days/week, push-pull split, intermediate level"', - hintStyle: GoogleFonts.geist( + hintStyle: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 13, height: 1.5, @@ -274,7 +273,7 @@ class _AiProgramGeneratorScreenState extends State { const SizedBox(height: AppSpacing.md), Text( 'QUICK PROMPTS', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 9, fontWeight: FontWeight.w600, @@ -300,7 +299,7 @@ class _AiProgramGeneratorScreenState extends State { ), child: Text( s, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 11, ), @@ -337,7 +336,7 @@ class _AiProgramGeneratorScreenState extends State { const SizedBox(height: AppSpacing.md), Text( _statusText, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 15, fontWeight: FontWeight.w600, @@ -346,7 +345,7 @@ class _AiProgramGeneratorScreenState extends State { const SizedBox(height: AppSpacing.xs), Text( 'Gemini is designing your training block…', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -367,7 +366,7 @@ class _AiProgramGeneratorScreenState extends State { Expanded( child: Text( _error!, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.error, fontSize: 13, ), @@ -415,7 +414,7 @@ class _AiProgramGeneratorScreenState extends State { children: [ Text( p.name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -425,7 +424,7 @@ class _AiProgramGeneratorScreenState extends State { if (p.description != null) Text( p.description!, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -456,7 +455,7 @@ class _AiProgramGeneratorScreenState extends State { const SizedBox(height: AppSpacing.md), Text( 'PHASES', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 9, fontWeight: FontWeight.w600, @@ -480,7 +479,7 @@ class _AiProgramGeneratorScreenState extends State { const SizedBox(width: 10), Text( phase.name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w500, @@ -489,7 +488,7 @@ class _AiProgramGeneratorScreenState extends State { const Spacer(), Text( 'Wk ${phase.startWeek}–${phase.endWeek}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 11, ), diff --git a/workout-logger/lib/screens/analytics_screen.dart b/workout-logger/lib/screens/analytics_screen.dart index 4a5016c..73b9764 100644 --- a/workout-logger/lib/screens/analytics_screen.dart +++ b/workout-logger/lib/screens/analytics_screen.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:intl/intl.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../models/models.dart'; import '../services/workout_provider.dart'; @@ -58,7 +57,7 @@ class _AnalyticsScreenState extends State { children: [ Text( 'INSIGHTS', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, fontWeight: FontWeight.w600, color: AppColors.textFaint, @@ -68,7 +67,7 @@ class _AnalyticsScreenState extends State { const SizedBox(height: 2), Text( 'Analytics', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 28, fontWeight: FontWeight.w700, color: AppColors.textPrimary, @@ -118,7 +117,7 @@ class _AnalyticsScreenState extends State { child: Text( _tabs[i], textAlign: TextAlign.center, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: active ? Colors.white : AppColors.textMuted, @@ -181,7 +180,7 @@ class _RecordsTabState extends State<_RecordsTab> { const SizedBox(height: 12), Text( 'No records yet', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 15, fontWeight: FontWeight.w600, @@ -190,7 +189,7 @@ class _RecordsTabState extends State<_RecordsTab> { const SizedBox(height: 4), Text( 'Finish a workout to set your first PRs', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 12), ), ], @@ -250,7 +249,7 @@ class _RecordsTabState extends State<_RecordsTab> { children: [ Text( '${allRecords.length} PRs', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 15, fontWeight: FontWeight.w700, @@ -271,7 +270,7 @@ class _RecordsTabState extends State<_RecordsTab> { ), child: Text( '$thisMonthCount this month', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.warning, fontSize: 11, fontWeight: FontWeight.w600, @@ -358,7 +357,7 @@ class _RecordsTabState extends State<_RecordsTab> { _sort == _RecordsSort.recent ? 'Recent' : 'Heaviest', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 11, fontWeight: FontWeight.w600, @@ -448,7 +447,7 @@ class _NewestPRHero extends StatelessWidget { children: [ Text( 'Latest PR', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.warning, fontSize: 10, fontWeight: FontWeight.w700, @@ -457,7 +456,7 @@ class _NewestPRHero extends StatelessWidget { ), Text( exerciseName, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 15, fontWeight: FontWeight.w700, @@ -465,7 +464,7 @@ class _NewestPRHero extends StatelessWidget { ), Text( dateStr, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, ), @@ -478,7 +477,7 @@ class _NewestPRHero extends StatelessWidget { children: [ Text( '${w % 1 == 0 ? w.toStringAsFixed(0) : w.toStringAsFixed(1)} ${settings.unitLabel}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.warning, fontSize: 18, fontWeight: FontWeight.w800, @@ -487,7 +486,7 @@ class _NewestPRHero extends StatelessWidget { ), Text( '${record.bestReps} reps', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 11, ), @@ -517,7 +516,7 @@ class _ExercisePRGroup extends StatelessWidget { padding: const EdgeInsets.only(bottom: 6, top: 4), child: Text( exerciseName, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, fontWeight: FontWeight.w700, @@ -563,7 +562,7 @@ class _FilterChip extends StatelessWidget { ), child: Text( label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: selected ? AppColors.primary : AppColors.textMuted, fontSize: 11, fontWeight: @@ -614,7 +613,7 @@ class _PRCard extends StatelessWidget { children: [ Text( exerciseName, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w600, @@ -622,7 +621,7 @@ class _PRCard extends StatelessWidget { ), Text( dateStr, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11), ), ], @@ -684,11 +683,11 @@ class _PRStat extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), const SizedBox(height: 2), Text(value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 13, fontWeight: FontWeight.w700)), diff --git a/workout-logger/lib/screens/heart_rate_detail_screen.dart b/workout-logger/lib/screens/heart_rate_detail_screen.dart index 047209e..695689d 100644 --- a/workout-logger/lib/screens/heart_rate_detail_screen.dart +++ b/workout-logger/lib/screens/heart_rate_detail_screen.dart @@ -4,7 +4,6 @@ // Week / Month / Year : daily/monthly min–max range bars with resting markers. import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; @@ -144,9 +143,9 @@ class _DayBody extends StatelessWidget { children: [ Text( 'All-day heart rate · 30-min bars', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), ), - Text('bpm', style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11)), + Text('bpm', style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11)), ], ), const SizedBox(height: 8), @@ -171,7 +170,7 @@ class _DayBody extends StatelessWidget { children: [ Container(width: 8, height: 8, decoration: BoxDecoration(color: c, borderRadius: BorderRadius.circular(2))), const SizedBox(width: 4), - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ); @@ -180,7 +179,7 @@ class _DayBody extends StatelessWidget { children: [ Container(width: 14, height: 2, color: c), const SizedBox(width: 4), - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ); } @@ -221,7 +220,7 @@ class _AggBody extends StatelessWidget { children: [ Text( '$unit range · resting ●', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), ), const SizedBox(height: 12), HrRangeChart(bars: bars, workoutDays: workoutDays), @@ -246,7 +245,7 @@ class _AggBody extends StatelessWidget { children: [ Container(width: 8, height: 8, decoration: BoxDecoration(color: c, borderRadius: BorderRadius.circular(2))), const SizedBox(width: 4), - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ); } @@ -272,12 +271,12 @@ class _Pill extends StatelessWidget { children: [ Text( label.toUpperCase(), - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 9, letterSpacing: 0.5), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 9, letterSpacing: 0.5), ), const SizedBox(height: 2), Text( value, - style: GoogleFonts.geistMono(color: color, fontSize: 16, fontWeight: FontWeight.w700), + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 16, fontWeight: FontWeight.w700), ), ], ), @@ -293,7 +292,7 @@ class _Empty extends StatelessWidget { Widget build(BuildContext context) => GlassCard( padding: const EdgeInsets.symmetric(vertical: 48, horizontal: 16), child: Center( - child: Text(message, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 13)), + child: Text(message, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 13)), ), ); } diff --git a/workout-logger/lib/screens/history_screen.dart b/workout-logger/lib/screens/history_screen.dart index a5aa3ab..7b6d5df 100644 --- a/workout-logger/lib/screens/history_screen.dart +++ b/workout-logger/lib/screens/history_screen.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:intl/intl.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../models/models.dart'; import '../services/workout_provider.dart'; @@ -137,12 +136,12 @@ class _HistoryScreenState extends State { const SizedBox(height: 12), Text( _query.isNotEmpty ? 'No results' : 'No Workout History', - style: GoogleFonts.geist(fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.textMuted), ), const SizedBox(height: 4), Text( _query.isNotEmpty ? 'Try a different search term' : 'Complete a workout to see it here', - style: GoogleFonts.geist(fontSize: 13, color: AppColors.textFaint), + style: TextStyle(fontFamily: 'Geist', fontSize: 13, color: AppColors.textFaint), ), ], ), @@ -187,7 +186,7 @@ class _HistoryScreenState extends State { children: [ Text( 'LOG', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, fontWeight: FontWeight.w600, color: AppColors.textFaint, @@ -197,7 +196,7 @@ class _HistoryScreenState extends State { const SizedBox(height: 2), Text( 'History', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 28, fontWeight: FontWeight.w700, color: AppColors.textPrimary, @@ -323,7 +322,7 @@ class _HistoryScreenState extends State { children: [ Text( monthLabel, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -332,7 +331,7 @@ class _HistoryScreenState extends State { ), Text( '$monthSessions session${monthSessions == 1 ? '' : 's'}', - style: GoogleFonts.geist(fontSize: 11, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted), textAlign: TextAlign.center, ), ], @@ -387,7 +386,7 @@ class _SummaryCell extends StatelessWidget { children: [ Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 9, fontWeight: FontWeight.w600, color: AppColors.textFaint, @@ -397,7 +396,7 @@ class _SummaryCell extends StatelessWidget { const SizedBox(height: 4), Text( value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 22, fontWeight: FontWeight.w700, color: AppColors.textPrimary, @@ -405,7 +404,7 @@ class _SummaryCell extends StatelessWidget { ), Text( unit, - style: GoogleFonts.geist(fontSize: 10, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', fontSize: 10, color: AppColors.textMuted), ), ], ), @@ -442,10 +441,10 @@ class _SearchBar extends StatelessWidget { controller: controller, onChanged: onChanged, autofocus: true, - style: GoogleFonts.geist(color: AppColors.textPrimary, fontSize: 14), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14), decoration: InputDecoration( hintText: 'Search by date or exercise…', - hintStyle: GoogleFonts.geist(color: AppColors.textMuted, fontSize: 14), + hintStyle: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 14), prefixIcon: const Icon(Icons.search_rounded, color: AppColors.textMuted, size: 18), border: InputBorder.none, contentPadding: const EdgeInsets.symmetric(vertical: 12), @@ -482,7 +481,7 @@ class _MonthGroup extends StatelessWidget { children: [ Text( month, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textSoft, @@ -493,7 +492,7 @@ class _MonthGroup extends StatelessWidget { const SizedBox(width: 10), Text( '${sessions.length}', - style: GoogleFonts.geistMono(fontSize: 11, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'GeistMono', fontSize: 11, color: AppColors.textMuted), ), ], ), @@ -648,12 +647,12 @@ class _HistoryCard extends StatelessWidget { children: [ Text( dayAbbr.toUpperCase(), - style: GoogleFonts.geist(fontSize: 9, fontWeight: FontWeight.w600, color: AppColors.textMuted, letterSpacing: 0.6), + style: TextStyle(fontFamily: 'Geist', fontSize: 9, fontWeight: FontWeight.w600, color: AppColors.textMuted, letterSpacing: 0.6), ), const SizedBox(height: 2), Text( '$dayNum', - style: GoogleFonts.geistMono(fontSize: 20, fontWeight: FontWeight.w700, color: AppColors.textPrimary), + style: TextStyle(fontFamily: 'GeistMono', fontSize: 20, fontWeight: FontWeight.w700, color: AppColors.textPrimary), ), ], ), @@ -670,14 +669,14 @@ class _HistoryCard extends StatelessWidget { children: [ Text( routineName, - style: GoogleFonts.geist(fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary), + style: TextStyle(fontFamily: 'Geist', fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary), maxLines: 1, overflow: TextOverflow.ellipsis, ), const SizedBox(height: 3), Text( '$exCount exercises · $setCount sets${duration > 0 ? ' · ${duration}m' : ''}', - style: GoogleFonts.geist(fontSize: 11, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted), ), ], ), @@ -691,13 +690,13 @@ class _HistoryCard extends StatelessWidget { children: [ Text( volStr, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.secondary, ), ), - Text(settings.unitLabel, style: GoogleFonts.geist(fontSize: 10, color: AppColors.textMuted)), + Text(settings.unitLabel, style: TextStyle(fontFamily: 'Geist', fontSize: 10, color: AppColors.textMuted)), ], ), ), diff --git a/workout-logger/lib/screens/home_screen.dart b/workout-logger/lib/screens/home_screen.dart index f46439f..4be9887 100644 --- a/workout-logger/lib/screens/home_screen.dart +++ b/workout-logger/lib/screens/home_screen.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; import 'package:intl/intl.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../models/models.dart'; import '../services/workout_provider.dart'; @@ -248,7 +247,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( dateStr.toUpperCase(), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.textMuted, fontWeight: FontWeight.w500, @@ -258,7 +257,7 @@ class _DashboardTab extends StatelessWidget { const SizedBox(height: 4), RichText( text: TextSpan( - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 28, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -416,7 +415,7 @@ class _DashboardTab extends StatelessWidget { const SizedBox(width: 6), Text( 'STREAK', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, fontWeight: FontWeight.w600, color: AppColors.primary, @@ -432,7 +431,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( '$streak', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 56, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -443,7 +442,7 @@ class _DashboardTab extends StatelessWidget { const SizedBox(width: 6), Text( 'days', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 16, color: AppColors.textMuted, fontWeight: FontWeight.w500, @@ -456,7 +455,7 @@ class _DashboardTab extends StatelessWidget { streak == 0 ? 'Start your streak today' : 'Keep it going — you\'re on a roll', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, color: AppColors.textMuted, ), @@ -499,7 +498,7 @@ class _DashboardTab extends StatelessWidget { const SizedBox(width: 4), Text( isActive ? 'Resume' : 'Start', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: Colors.white, @@ -525,7 +524,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( weekDays[i], - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, color: AppColors.textFaint, fontWeight: FontWeight.w500, @@ -689,7 +688,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( 'Activity', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -697,7 +696,7 @@ class _DashboardTab extends StatelessWidget { ), Text( 'Last 14 weeks', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted, ), @@ -751,7 +750,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( 'Weekly muscle volume', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -759,7 +758,7 @@ class _DashboardTab extends StatelessWidget { ), Text( settings.unitLabel, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted, ), @@ -779,7 +778,7 @@ class _DashboardTab extends StatelessWidget { ? [ Text( 'No data yet', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.textMuted, ), @@ -801,14 +800,14 @@ class _DashboardTab extends StatelessWidget { children: [ Text( _capitalize(e.key.replaceAll('_', ' ')), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textSoft, ), ), Text( volStr, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 11, color: AppColors.textMuted, ), @@ -869,7 +868,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( 'Recent workouts', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -879,7 +878,7 @@ class _DashboardTab extends StatelessWidget { onTap: () => homeState?.switchTab(2), child: Text( 'See all', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.primary, fontWeight: FontWeight.w500, @@ -895,7 +894,7 @@ class _DashboardTab extends StatelessWidget { child: Center( child: Text( 'No workouts yet — start one!', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, color: AppColors.textMuted, ), @@ -940,7 +939,7 @@ class _DashboardTab extends StatelessWidget { s.routineId != null ? (provider.routines.cast().firstWhere((r) => r?.id == s.routineId, orElse: () => null)?.name ?? 'Workout') : 'Quick Workout', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -949,7 +948,7 @@ class _DashboardTab extends StatelessWidget { const SizedBox(height: 2), Text( '$dateStr · $exCount exercises · $setCount sets', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted, ), @@ -962,7 +961,7 @@ class _DashboardTab extends StatelessWidget { children: [ Text( volStr, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.secondary, @@ -970,7 +969,7 @@ class _DashboardTab extends StatelessWidget { ), Text( '${settings.unitLabel} vol', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, color: AppColors.textFaint, ), @@ -1034,7 +1033,7 @@ class _StatCard extends StatelessWidget { children: [ Text( item.label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted, fontWeight: FontWeight.w500, @@ -1054,7 +1053,7 @@ class _StatCard extends StatelessWidget { children: [ Text( item.value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 26, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -1063,7 +1062,7 @@ class _StatCard extends StatelessWidget { ), Text( item.unit, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textMuted, fontWeight: FontWeight.w400, @@ -1131,14 +1130,14 @@ class _RoutineSelectorSheet extends StatelessWidget { ), title: Text( 'Quick Start', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontWeight: FontWeight.w600, ), ), subtitle: Text( 'Empty workout, no routine', - style: GoogleFonts.geist(color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted), ), trailing: const Icon(Icons.play_arrow_rounded, color: AppColors.primary), onTap: onQuickStart, @@ -1161,14 +1160,14 @@ class _RoutineSelectorSheet extends StatelessWidget { ), title: Text( r.name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontWeight: FontWeight.w600, ), ), subtitle: Text( '${r.exerciseIds.length} exercises', - style: GoogleFonts.geist(color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted), ), trailing: const Icon( Icons.play_arrow_rounded, @@ -1288,7 +1287,7 @@ class _WeeklyInsightsCardState extends State<_WeeklyInsightsCard> { Expanded( child: Text( 'This Week\'s Insights', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w700, @@ -1319,7 +1318,7 @@ class _WeeklyInsightsCardState extends State<_WeeklyInsightsCard> { ) : Text( hasInsights ? 'Refresh' : 'Generate', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.primary, fontSize: 11, fontWeight: FontWeight.w600, @@ -1341,7 +1340,7 @@ class _WeeklyInsightsCardState extends State<_WeeklyInsightsCard> { else Text( insights, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 13, height: 1.6, @@ -1351,7 +1350,7 @@ class _WeeklyInsightsCardState extends State<_WeeklyInsightsCard> { const SizedBox(height: AppSpacing.sm), Text( 'Updated ${DateFormat('MMM d, h:mm a').format(updatedAt)}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 10, ), @@ -1361,7 +1360,7 @@ class _WeeklyInsightsCardState extends State<_WeeklyInsightsCard> { const SizedBox(height: AppSpacing.sm), Text( 'Tap Generate to get a personalised coaching summary for this week.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, height: 1.5, diff --git a/workout-logger/lib/screens/onboarding_screen.dart b/workout-logger/lib/screens/onboarding_screen.dart index 9bcbb9e..2837231 100644 --- a/workout-logger/lib/screens/onboarding_screen.dart +++ b/workout-logger/lib/screens/onboarding_screen.dart @@ -6,7 +6,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../services/settings_provider.dart'; import '../theme/app_theme.dart'; @@ -95,7 +94,7 @@ class _WelcomePageState extends State { const SizedBox(height: AppSpacing.xl), Text( 'Welcome to\nRepForge', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 36, fontWeight: FontWeight.w800, color: AppColors.textPrimary, @@ -106,7 +105,7 @@ class _WelcomePageState extends State { const SizedBox(height: 12), Text( 'Track every rep. Beat every record.\nForge your best self.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 15, color: AppColors.textMuted, height: 1.5, @@ -115,7 +114,7 @@ class _WelcomePageState extends State { const Spacer(flex: 2), Text( 'WHAT SHOULD WE CALL YOU?', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, fontWeight: FontWeight.w600, color: AppColors.textFaint, @@ -127,14 +126,14 @@ class _WelcomePageState extends State { controller: _controller, autofocus: true, textCapitalization: TextCapitalization.words, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w500, ), decoration: InputDecoration( hintText: 'Your name', - hintStyle: GoogleFonts.geist(color: AppColors.textFaint), + hintStyle: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint), filled: true, fillColor: AppColors.glass2, border: OutlineInputBorder( @@ -240,7 +239,7 @@ class _VersionUpdateSheet extends StatelessWidget { children: [ Text( 'Updated to v$version', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -248,7 +247,7 @@ class _VersionUpdateSheet extends StatelessWidget { ), Text( 'RepForge is better than ever', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -321,7 +320,7 @@ class _WhatsNewItem extends StatelessWidget { children: [ Text( title, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w600, @@ -330,7 +329,7 @@ class _WhatsNewItem extends StatelessWidget { const SizedBox(height: 2), Text( description, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, height: 1.4, diff --git a/workout-logger/lib/screens/profile_screen.dart b/workout-logger/lib/screens/profile_screen.dart index 112c9bf..60ccf00 100644 --- a/workout-logger/lib/screens/profile_screen.dart +++ b/workout-logger/lib/screens/profile_screen.dart @@ -11,7 +11,6 @@ import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; import 'package:intl/intl.dart'; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../services/workout_provider.dart'; import '../services/settings_provider.dart'; @@ -231,7 +230,7 @@ class _ProfileScreenState extends State ), title: Text( 'Import Backup', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontWeight: FontWeight.w700, ), @@ -239,14 +238,14 @@ class _ProfileScreenState extends State content: Text( 'This will merge the backup with your existing data. ' 'Select a .json RepForge backup file to continue.', - style: GoogleFonts.geist(color: AppColors.textSoft), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft), ), actions: [ TextButton( onPressed: () => Navigator.pop(ctx, false), child: Text( 'Cancel', - style: GoogleFonts.geist(color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted), ), ), TextButton( @@ -254,7 +253,7 @@ class _ProfileScreenState extends State style: TextButton.styleFrom(foregroundColor: AppColors.primary), child: Text( 'Choose File', - style: GoogleFonts.geist(fontWeight: FontWeight.w600), + style: TextStyle(fontFamily: 'Geist', fontWeight: FontWeight.w600), ), ), ], @@ -322,7 +321,7 @@ class _ProfileScreenState extends State SnackBar( content: Text( message, - style: GoogleFonts.geist(color: AppColors.textPrimary), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary), ), backgroundColor: color, behavior: SnackBarBehavior.floating, @@ -484,7 +483,7 @@ class _ProfileScreenState extends State ), child: Text( 'v$_appVersion', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 11, fontWeight: FontWeight.w500, @@ -496,7 +495,7 @@ class _ProfileScreenState extends State const SizedBox(height: AppSpacing.md), Text( 'RepForge', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 30, fontWeight: FontWeight.w800, @@ -506,7 +505,7 @@ class _ProfileScreenState extends State const SizedBox(height: 2), Text( 'Settings & preferences', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 14, fontWeight: FontWeight.w400, diff --git a/workout-logger/lib/screens/routine_optimizer_screen.dart b/workout-logger/lib/screens/routine_optimizer_screen.dart index 366170c..166e649 100644 --- a/workout-logger/lib/screens/routine_optimizer_screen.dart +++ b/workout-logger/lib/screens/routine_optimizer_screen.dart @@ -7,7 +7,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:gpt_markdown/gpt_markdown.dart'; import '../models/models.dart'; @@ -180,7 +179,7 @@ class _OptimizerViewState extends State<_OptimizerView> { children: [ Text( 'Optimize Routine', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -191,7 +190,7 @@ class _OptimizerViewState extends State<_OptimizerView> { widget.routine.name, maxLines: 1, overflow: TextOverflow.ellipsis, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), @@ -292,7 +291,7 @@ class _OptimizerViewState extends State<_OptimizerView> { const SizedBox(height: AppSpacing.lg), Text( 'Analyzing your routine…', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 18, fontWeight: FontWeight.w700, @@ -303,7 +302,7 @@ class _OptimizerViewState extends State<_OptimizerView> { Text( 'Reviewing your history and building a personalized plan.', textAlign: TextAlign.center, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 14, height: 1.5, @@ -395,7 +394,7 @@ class _MessageBubble extends StatelessWidget { child: isUser ? Text( message.text, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, height: 1.55, @@ -461,7 +460,7 @@ class _OptimizerMarkdown extends StatelessWidget { Widget build(BuildContext context) { return GptMarkdown( text, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, height: 1.55, @@ -517,7 +516,7 @@ class _ConversationsSheet extends StatelessWidget { children: [ Text( 'Optimization History', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -529,7 +528,7 @@ class _ConversationsSheet extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: AppSpacing.lg), child: Text( 'No saved optimization sessions yet.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -617,7 +616,7 @@ class _ConversationTile extends StatelessWidget { : conversation.title, maxLines: 1, overflow: TextOverflow.ellipsis, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w500, @@ -625,7 +624,7 @@ class _ConversationTile extends StatelessWidget { ), Text( '${conversation.messages.length} messages', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, ), diff --git a/workout-logger/lib/screens/routines_screen.dart b/workout-logger/lib/screens/routines_screen.dart index bad08e6..2218294 100644 --- a/workout-logger/lib/screens/routines_screen.dart +++ b/workout-logger/lib/screens/routines_screen.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../models/models.dart'; @@ -67,7 +66,7 @@ class RoutinesScreen extends StatelessWidget { children: [ Text( 'PROGRAMS', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 11, fontWeight: FontWeight.w600, color: AppColors.textFaint, @@ -77,7 +76,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(height: 2), Text( 'Routines', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 28, fontWeight: FontWeight.w700, color: AppColors.textPrimary, @@ -103,7 +102,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(width: 4), Text( 'New', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.primary, @@ -160,7 +159,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(width: 8), Text( 'UP NEXT · TODAY', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, fontWeight: FontWeight.w700, color: AppColors.primary, @@ -172,7 +171,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(height: 10), Text( routine.name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 22, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -182,7 +181,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(height: 4), Text( '$exCount exercises', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.textMuted, ), @@ -216,7 +215,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(width: 6), Text( 'Start workout', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: Colors.white, @@ -260,7 +259,7 @@ class RoutinesScreen extends StatelessWidget { children: [ Text( 'All Routines', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textSoft, @@ -275,7 +274,7 @@ class RoutinesScreen extends StatelessWidget { ), child: Text( '${routines.length}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 11, color: AppColors.textMuted, ), @@ -304,7 +303,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(height: 16), Text( 'No Routines Yet', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 16, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -313,7 +312,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(height: 6), Text( 'Create a routine to organize your workouts', - style: GoogleFonts.geist(fontSize: 13, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', fontSize: 13, color: AppColors.textMuted), textAlign: TextAlign.center, ), ], @@ -332,7 +331,7 @@ class RoutinesScreen extends StatelessWidget { children: [ Text( 'Programs', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -368,7 +367,7 @@ class RoutinesScreen extends StatelessWidget { children: [ Text( 'Browse Programs', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -376,7 +375,7 @@ class RoutinesScreen extends StatelessWidget { ), Text( 'Structured multi-week training plans', - style: GoogleFonts.geist(fontSize: 12, color: AppColors.textMuted), + style: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.textMuted), ), ], ), @@ -412,7 +411,7 @@ class RoutinesScreen extends StatelessWidget { const SizedBox(width: 6), Text( 'New Routine', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w500, color: AppColors.textMuted, @@ -473,7 +472,7 @@ class _RoutineCard extends StatelessWidget { children: [ Text( routine.name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 14, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -482,7 +481,7 @@ class _RoutineCard extends StatelessWidget { const SizedBox(height: 3), Text( '$exCount exercise${exCount == 1 ? '' : 's'}', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.textMuted, ), diff --git a/workout-logger/lib/screens/sleep_detail_screen.dart b/workout-logger/lib/screens/sleep_detail_screen.dart index ccc6f1c..13a38c1 100644 --- a/workout-logger/lib/screens/sleep_detail_screen.dart +++ b/workout-logger/lib/screens/sleep_detail_screen.dart @@ -5,7 +5,6 @@ // 8h goal line and workout-day highlights. import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; @@ -140,7 +139,7 @@ class _DayBody extends StatelessWidget { children: [ Text( 'Asleep · ${_fmt(_ist(snapshot.sleepStart))} – ${_fmt(_ist(snapshot.sleepEnd))} IST', - style: GoogleFonts.geist(color: AppColors.textMuted, fontSize: 12), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12), ), const SizedBox(height: 16), SleepHrDayView(snapshot: snapshot), @@ -180,11 +179,11 @@ class _AggBody extends StatelessWidget { children: [ Text( 'Sleep duration · $unit', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), ), Text( withData.isEmpty ? '—' : 'avg $avgLabel', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w700, @@ -220,7 +219,7 @@ class _AggBody extends StatelessWidget { decoration: BoxDecoration(color: c, borderRadius: BorderRadius.circular(2)), ), const SizedBox(width: 4), - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ); @@ -229,7 +228,7 @@ class _AggBody extends StatelessWidget { children: [ Container(width: 14, height: 2, color: c), const SizedBox(width: 4), - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ); } @@ -252,7 +251,7 @@ class _Empty extends StatelessWidget { child: Center( child: Text( message, - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 13), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 13), ), ), ); diff --git a/workout-logger/lib/screens/widgets/analytics_overview.dart b/workout-logger/lib/screens/widgets/analytics_overview.dart index 8c4065f..cb2a286 100644 --- a/workout-logger/lib/screens/widgets/analytics_overview.dart +++ b/workout-logger/lib/screens/widgets/analytics_overview.dart @@ -9,7 +9,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:intl/intl.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/models.dart'; import '../../services/workout_provider.dart'; @@ -159,7 +158,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { children: [ Text( 'Volume Trend', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w600, @@ -168,7 +167,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { const SizedBox(height: 2), Text( '${settings.unitLabel} · per week', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), @@ -196,7 +195,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { const SizedBox(width: 2), Text( '${deltaPct.abs().toStringAsFixed(0)}% vs prev ${weeks}w', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: deltaPct >= 0 ? AppColors.success : AppColors.error, fontSize: 11, fontWeight: FontWeight.w600, @@ -232,7 +231,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { final ws = weekStartFor(i); return LineTooltipItem( '$volStr ${settings.unitLabel}', - GoogleFonts.geistMono( + TextStyle(fontFamily: 'GeistMono', color: AppColors.primary, fontSize: 13, fontWeight: FontWeight.w700, @@ -241,7 +240,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { TextSpan( text: '\nwk of ${DateFormat('MMM d').format(ws)}', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.normal, @@ -269,7 +268,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { padding: const EdgeInsets.only(top: 6), child: Text( DateFormat('d/M').format(weekStartFor(i)), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 9, ), @@ -284,7 +283,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { reservedSize: 40, getTitlesWidget: (v, _) => Text( _fmtK(v), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 9, ), @@ -306,7 +305,7 @@ class _VolumeTrendCardState extends State<_VolumeTrendCard> { direction: LabelDirection.horizontal, alignment: Alignment.topRight, padding: const EdgeInsets.only(right: 6, bottom: 2), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.warning, fontSize: 9, fontWeight: FontWeight.w600, @@ -388,7 +387,7 @@ class _RangeToggle extends StatelessWidget { ), child: Text( r.label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 11, fontWeight: FontWeight.w700, color: active ? Colors.white : AppColors.textMuted, @@ -557,7 +556,7 @@ class _MuscleFocusRow extends StatelessWidget { Expanded( child: Text( name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, fontWeight: FontWeight.w500, @@ -566,7 +565,7 @@ class _MuscleFocusRow extends StatelessWidget { ), Text( '${_fmtK(displayVol)} ${settings.unitLabel}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 11, ), @@ -591,7 +590,7 @@ class _MuscleFocusRow extends StatelessWidget { const SizedBox(width: 8), Text( '${recovery!.recoveryPercent}%', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 10, fontWeight: FontWeight.w600, color: _recoveryColor, @@ -663,7 +662,7 @@ class _FrequencyGrid extends StatelessWidget { child: Center( child: Text( '$count', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: active ? AppColors.primary : AppColors.textMuted, fontSize: 22, fontWeight: FontWeight.w700, @@ -674,7 +673,7 @@ class _FrequencyGrid extends StatelessWidget { const SizedBox(height: 6), Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, ), @@ -713,7 +712,7 @@ class _ChartCard extends StatelessWidget { children: [ Text( title, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w600, @@ -723,7 +722,7 @@ class _ChartCard extends StatelessWidget { const SizedBox(height: 2), Text( subtitle!, - style: GoogleFonts.geist(color: AppColors.textMuted, fontSize: 11), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11), ), ], if (isEmpty) ...[ @@ -750,9 +749,9 @@ class _EmptyChart extends StatelessWidget { const Icon(Icons.show_chart_rounded, size: 32, color: AppColors.textFaint), const SizedBox(height: 8), Text('No data yet', - style: GoogleFonts.geist(fontSize: 13, color: AppColors.textMuted)), + style: TextStyle(fontFamily: 'Geist', fontSize: 13, color: AppColors.textMuted)), Text('Complete workouts to see progress', - style: GoogleFonts.geist(fontSize: 11, color: AppColors.textFaint)), + style: TextStyle(fontFamily: 'Geist', fontSize: 11, color: AppColors.textFaint)), ], ), ); diff --git a/workout-logger/lib/screens/widgets/calendar_grid.dart b/workout-logger/lib/screens/widgets/calendar_grid.dart index 2858b43..0959025 100644 --- a/workout-logger/lib/screens/widgets/calendar_grid.dart +++ b/workout-logger/lib/screens/widgets/calendar_grid.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../theme/app_theme.dart'; class CalendarDayData { @@ -43,7 +42,7 @@ class CalendarMonthGrid extends StatelessWidget { child: Center( child: Text( d, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, fontWeight: FontWeight.w600, color: AppColors.textFaint, @@ -206,7 +205,7 @@ class _DayCell extends StatelessWidget { Center( child: Text( '$day', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 12, fontWeight: intensity > 0 ? FontWeight.w600 : FontWeight.w400, diff --git a/workout-logger/lib/screens/widgets/exercise_input_section.dart b/workout-logger/lib/screens/widgets/exercise_input_section.dart index 483674a..687809d 100644 --- a/workout-logger/lib/screens/widgets/exercise_input_section.dart +++ b/workout-logger/lib/screens/widgets/exercise_input_section.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/models.dart'; import '../../services/settings_provider.dart'; import '../../theme/app_theme.dart'; @@ -368,7 +367,7 @@ class _NumberInputCardState extends State<_NumberInputCard> { children: [ Text( widget.label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, fontWeight: FontWeight.w600, @@ -389,7 +388,7 @@ class _NumberInputCardState extends State<_NumberInputCard> { child: TextField( controller: _controller, focusNode: _focusNode, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 36, fontWeight: FontWeight.w700, @@ -687,7 +686,7 @@ class _PreviousSetsSection extends StatelessWidget { children: [ Text( 'THIS SESSION', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10, fontWeight: FontWeight.w600, @@ -820,7 +819,7 @@ class _LastSessionSection extends StatelessWidget { children: [ Text( 'LAST SESSION', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10, fontWeight: FontWeight.w600, diff --git a/workout-logger/lib/screens/widgets/exercise_progress_view.dart b/workout-logger/lib/screens/widgets/exercise_progress_view.dart index db7508a..b56ec6c 100644 --- a/workout-logger/lib/screens/widgets/exercise_progress_view.dart +++ b/workout-logger/lib/screens/widgets/exercise_progress_view.dart @@ -6,7 +6,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:intl/intl.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/models.dart'; import '../../services/workout_provider.dart'; @@ -71,7 +70,7 @@ class _ExerciseProgressViewState extends State { child: Center( child: Text( 'Select an exercise above', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 14, ), @@ -173,7 +172,7 @@ class _ExerciseDropdown extends StatelessWidget { hasSelection ? getExerciseName(selected!) : 'Pick an exercise…', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: hasSelection ? AppColors.textPrimary : AppColors.textMuted, @@ -275,7 +274,7 @@ class _ExercisePickerSheetState extends State<_ExercisePickerSheet> { children: [ Text( 'Select Exercise', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 17, fontWeight: FontWeight.w700, @@ -284,7 +283,7 @@ class _ExercisePickerSheetState extends State<_ExercisePickerSheet> { const Spacer(), Text( '${widget.ids.length} logged', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 12, ), @@ -305,13 +304,13 @@ class _ExercisePickerSheetState extends State<_ExercisePickerSheet> { child: TextField( controller: _search, autofocus: true, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, ), decoration: InputDecoration( hintText: 'Search…', - hintStyle: GoogleFonts.geist( + hintStyle: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 14, ), @@ -345,7 +344,7 @@ class _ExercisePickerSheetState extends State<_ExercisePickerSheet> { ? Center( child: Text( 'No exercises match', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -382,7 +381,7 @@ class _ExercisePickerSheetState extends State<_ExercisePickerSheet> { Expanded( child: Text( name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: isSelected ? AppColors.primary : AppColors.textSoft, @@ -505,14 +504,14 @@ class _OneRMCard extends StatelessWidget { children: [ Text( 'Estimated 1RM', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), ), Text( settings.formatWeight(oneRM), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.primary, fontSize: 28, fontWeight: FontWeight.w800, @@ -527,14 +526,14 @@ class _OneRMCard extends StatelessWidget { children: [ Text( 'Epley formula', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, ), ), Text( 'Best across sets', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, ), @@ -578,7 +577,7 @@ class _GrowthCard extends StatelessWidget { children: [ Text( isGrowing ? 'Growing!' : 'Plateau', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: color, fontSize: 17, fontWeight: FontWeight.w700, @@ -588,7 +587,7 @@ class _GrowthCard extends StatelessWidget { isGrowing ? '+${settings.toDisplay(model.slope.abs() * 7).toStringAsFixed(1)} ${settings.unitLabel}/week' : 'Volume trend is flat', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, ), @@ -601,7 +600,7 @@ class _GrowthCard extends StatelessWidget { children: [ Text( 'R² ${(model.r2 * 100).toStringAsFixed(0)}%', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 13, fontWeight: FontWeight.w700, @@ -609,7 +608,7 @@ class _GrowthCard extends StatelessWidget { ), Text( 'model fit', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, ), @@ -655,7 +654,7 @@ class _ChartSection extends StatelessWidget { chartMode == _ChartMode.volume ? 'Volume Progression' : 'Set Progression', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w600, @@ -708,7 +707,7 @@ class _ChartModeToggle extends StatelessWidget { ), child: Text( mode == _ChartMode.volume ? 'Volume' : 'Sets', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 11, fontWeight: FontWeight.w700, color: mode == value ? Colors.white : AppColors.textMuted, @@ -883,7 +882,7 @@ class _VolumeChart extends StatelessWidget { : ''; return LineTooltipItem( '$volStr ${settings.unitLabel}', - GoogleFonts.geistMono( + TextStyle(fontFamily: 'GeistMono', color: AppColors.secondary, fontSize: 13, fontWeight: FontWeight.w700, @@ -891,7 +890,7 @@ class _VolumeChart extends StatelessWidget { children: [ TextSpan( text: '\n$dateStr', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.normal, @@ -919,7 +918,7 @@ class _VolumeChart extends StatelessWidget { : v.toStringAsFixed(0); return Text( label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 9, ), @@ -942,7 +941,7 @@ class _VolumeChart extends StatelessWidget { direction: LabelDirection.horizontal, alignment: Alignment.topRight, padding: const EdgeInsets.only(right: 4, bottom: 2), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.warning, fontSize: 9, fontWeight: FontWeight.w600, @@ -1130,12 +1129,12 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { w % 1 == 0 ? w.toStringAsFixed(0) : w.toStringAsFixed(1); return BarTooltipItem( '$setLabel $wStr ${settings.unitLabel}', - GoogleFonts.geistMono( + TextStyle(fontFamily: 'GeistMono', color: _wc, fontSize: 12, fontWeight: FontWeight.w700), children: [ TextSpan( text: '\n$dateLabel', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10, fontWeight: FontWeight.normal), @@ -1145,12 +1144,12 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { } else { return BarTooltipItem( '$setLabel ${set.reps} reps', - GoogleFonts.geistMono( + TextStyle(fontFamily: 'GeistMono', color: _rc, fontSize: 12, fontWeight: FontWeight.w700), children: [ TextSpan( text: '\n$dateLabel', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10, fontWeight: FontWeight.normal), @@ -1256,7 +1255,7 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { leftTitles: AxisTitles( axisNameWidget: Text( settings.unitLabel, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: _wc, fontSize: 9, fontWeight: FontWeight.w700), @@ -1269,7 +1268,7 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { v >= 1000 ? '${(v / 1000).toStringAsFixed(1)}k' : v.toStringAsFixed(0), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: _wc.withValues(alpha: 0.7), fontSize: 9), ), @@ -1278,7 +1277,7 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { rightTitles: AxisTitles( axisNameWidget: Text( 'reps', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: _rc, fontSize: 9, fontWeight: FontWeight.w700), @@ -1291,7 +1290,7 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { final r = (v / scale).round(); if (r <= 0) return const Text(''); return Text('$r', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: _rc.withValues(alpha: 0.7), fontSize: 9)); }, @@ -1313,7 +1312,7 @@ class _SetProgressionChartState extends State<_SetProgressionChart> { return Padding( padding: const EdgeInsets.only(top: 6), child: Text(label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 9)), ); @@ -1368,7 +1367,7 @@ class _ToggleLegend extends StatelessWidget { const SizedBox(width: 5), Text( label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: active ? AppColors.textSoft : AppColors.textFaint, fontSize: 11, ), @@ -1411,7 +1410,7 @@ class _SetModeToggle extends StatelessWidget { ), child: Text( mode == _SetViewMode.recent ? 'Recent' : 'Weekly', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 10, fontWeight: FontWeight.w700, color: mode == value ? Colors.white : AppColors.textMuted, @@ -1447,7 +1446,7 @@ class _SessionHistory extends StatelessWidget { children: [ Text( 'Session History', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w600, @@ -1463,14 +1462,14 @@ class _SessionHistory extends StatelessWidget { children: [ Text( DateFormat('MMM d, yyyy').format(entry.date), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 13, ), ), Text( '${displayVol.toStringAsFixed(0)} ${settings.unitLabel}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w600, diff --git a/workout-logger/lib/screens/widgets/health_bar_chart.dart b/workout-logger/lib/screens/widgets/health_bar_chart.dart index 1974cd3..de0b1b2 100644 --- a/workout-logger/lib/screens/widgets/health_bar_chart.dart +++ b/workout-logger/lib/screens/widgets/health_bar_chart.dart @@ -9,7 +9,6 @@ import 'dart:math' show max; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/sleep_hr_models.dart'; import '../../theme/app_theme.dart'; @@ -251,7 +250,7 @@ class _HrDayPainter extends CustomPainter { final gridPaint = Paint() ..color = AppColors.glassBorder ..strokeWidth = 0.5; - final yStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final yStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); for (var v = (axisMin / 30).ceil() * 30.0; v <= axisMax; v += 30) { final y = yFor(v); canvas.drawLine(Offset(_padLeft, y), Offset(size.width - 4, y), gridPaint); @@ -293,7 +292,7 @@ class _HrDayPainter extends CustomPainter { } // X-axis time labels (12a / 6a / 12p / 6p / 11p). - final labelStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final labelStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); const marks = ['12a', '6a', '12p', '6p', '11p']; for (var i = 0; i < marks.length; i++) { final x = _padLeft + (i / (marks.length - 1)) * chartW; @@ -312,7 +311,7 @@ class _HrDayPainter extends CustomPainter { final mm = t.minute.toString().padLeft(2, '0'); final ap = t.hour < 12 ? 'AM' : 'PM'; final lines = ['$h12:$mm $ap', '${b.minBpm}–${b.maxBpm} bpm', 'avg ${b.avgBpm.round()}']; - final lineStyle = GoogleFonts.geistMono(color: Colors.white, fontSize: 9.5); + final lineStyle = TextStyle(fontFamily: 'GeistMono', color: Colors.white, fontSize: 9.5); final painters = lines .map((l) => TextPainter(text: TextSpan(text: l, style: lineStyle), textDirection: TextDirection.ltr)..layout()) .toList(); @@ -391,7 +390,7 @@ class _AggBarChartState extends State<_AggBarChart> { child: Center( child: Text( 'No data for this range.', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 12), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 12), ), ), ); @@ -468,7 +467,7 @@ class _AggPainter extends CustomPainter { final gridPaint = Paint() ..color = AppColors.glassBorder ..strokeWidth = 0.5; - final yStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final yStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); for (var v = (axisMin / gridStep).ceil() * gridStep; v <= axisMax; v += gridStep) { final y = yFor(v); canvas.drawLine(Offset(_padLeft, y), Offset(size.width - 4, y), gridPaint); @@ -491,7 +490,7 @@ class _AggPainter extends CustomPainter { } final baselineY = yFor(axisMin); - final labelStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final labelStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); final labelEvery = n > 16 ? 5 : (n > 10 ? 2 : 1); for (var i = 0; i < n; i++) { @@ -574,7 +573,7 @@ class _AggPainter extends CustomPainter { void _paintTooltip(Canvas canvas, Size size, int idx, double slotW, double Function(double) yFor) { final bar = bars[idx]; - final lineStyle = GoogleFonts.geistMono(color: Colors.white, fontSize: 9.5); + final lineStyle = TextStyle(fontFamily: 'GeistMono', color: Colors.white, fontSize: 9.5); final painters = bar.tooltip .map((l) => TextPainter( text: TextSpan(text: l, style: lineStyle), diff --git a/workout-logger/lib/screens/widgets/health_detail_shell.dart b/workout-logger/lib/screens/widgets/health_detail_shell.dart index 0529699..fbac10c 100644 --- a/workout-logger/lib/screens/widgets/health_detail_shell.dart +++ b/workout-logger/lib/screens/widgets/health_detail_shell.dart @@ -3,7 +3,6 @@ // Day/Week/Month/Year granularity toggle. The body is supplied by each screen. import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/sleep_hr_models.dart'; import '../../theme/app_theme.dart'; @@ -95,7 +94,7 @@ class HealthDetailShell extends StatelessWidget { const SizedBox(width: 5), Text( title, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -107,7 +106,7 @@ class HealthDetailShell extends StatelessWidget { const SizedBox(height: 1), Text( dateLabel, - style: GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 11), + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 11), ), ], ), @@ -189,7 +188,7 @@ class _GranularityToggle extends StatelessWidget { alignment: Alignment.center, child: Text( g.label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, fontWeight: FontWeight.w600, color: active ? AppColors.textPrimary : AppColors.textMuted, diff --git a/workout-logger/lib/screens/widgets/heart_rate_card.dart b/workout-logger/lib/screens/widgets/heart_rate_card.dart index 4487caf..ce77cf3 100644 --- a/workout-logger/lib/screens/widgets/heart_rate_card.dart +++ b/workout-logger/lib/screens/widgets/heart_rate_card.dart @@ -6,7 +6,6 @@ import 'dart:math' show max, min; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../../models/sleep_hr_models.dart'; @@ -47,7 +46,7 @@ class HeartRateCard extends StatelessWidget { const SizedBox(width: 5), Text( 'Heart rate', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w700, @@ -59,7 +58,7 @@ class HeartRateCard extends StatelessWidget { const SizedBox(height: 2), Text( 'Today · all-day', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11), ), ], ), @@ -92,7 +91,7 @@ class HeartRateCard extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: ['12a', '6a', '12p', '6p', 'now'] - .map((l) => Text(l, style: GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8))) + .map((l) => Text(l, style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8))) .toList(), ), ], @@ -116,14 +115,14 @@ class _MiniStat extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), const SizedBox(height: 1), RichText( text: TextSpan( children: [ TextSpan( text: value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 18, fontWeight: FontWeight.w700, @@ -132,7 +131,7 @@ class _MiniStat extends StatelessWidget { ), TextSpan( text: ' $unit', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10), ), ], ), diff --git a/workout-logger/lib/screens/widgets/muscle_detail_sheet.dart b/workout-logger/lib/screens/widgets/muscle_detail_sheet.dart index 832411b..1270ca1 100644 --- a/workout-logger/lib/screens/widgets/muscle_detail_sheet.dart +++ b/workout-logger/lib/screens/widgets/muscle_detail_sheet.dart @@ -8,7 +8,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/widget_previews.dart'; import 'package:provider/provider.dart'; import 'package:fl_chart/fl_chart.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:intl/intl.dart'; import '../../services/workout_provider.dart'; @@ -89,7 +88,7 @@ class MuscleDetailSheet extends StatelessWidget { Expanded( child: Text( name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 22, fontWeight: FontWeight.w800, @@ -117,7 +116,7 @@ class MuscleDetailSheet extends StatelessWidget { const SizedBox(width: 5), Text( recoveryLabel, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: recoveryColor, fontSize: 12, fontWeight: FontWeight.w700, @@ -137,7 +136,7 @@ class MuscleDetailSheet extends StatelessWidget { : recovery.isUnderRecovered ? 'Still fatigued — consider rest' : 'Recovering', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -153,7 +152,7 @@ class MuscleDetailSheet extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: AppSpacing.lg), child: Text( 'No sessions logged for this muscle in the last 7 days.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -200,7 +199,7 @@ class MuscleDetailSheet extends StatelessWidget { Expanded( child: Text( ex.name, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 13, fontWeight: FontWeight.w500, @@ -209,7 +208,7 @@ class MuscleDetailSheet extends StatelessWidget { ), Text( '$volStr ${settings.unitLabel}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 12, fontWeight: FontWeight.w600, @@ -299,7 +298,7 @@ class _VolumeTrendChartView extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: AppSpacing.md), child: Text( 'Not enough data yet.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -327,7 +326,7 @@ class _VolumeTrendChartView extends StatelessWidget { if (i != 0 && i != series.length - 1) return const SizedBox.shrink(); return Text( DateFormat('MMM d').format(series[i].weekStart), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 9, ), @@ -419,7 +418,7 @@ class _RecentSessionsView extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: AppSpacing.md), child: Text( 'No sessions recorded for this muscle yet.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -450,7 +449,7 @@ class _RecentSessionsView extends StatelessWidget { children: [ Text( _relativeDate(s.date), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.w600, @@ -459,7 +458,7 @@ class _RecentSessionsView extends StatelessWidget { const SizedBox(height: 2), Text( s.exerciseNames.join(' · '), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, fontWeight: FontWeight.w500, @@ -472,7 +471,7 @@ class _RecentSessionsView extends StatelessWidget { ), Text( '$volStr $unitLabel', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 12, fontWeight: FontWeight.w600, @@ -684,7 +683,7 @@ class _AiInsightSectionState extends State<_AiInsightSection> { const SizedBox(width: 5), Text( 'AI Insight', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.primary, fontSize: 11, fontWeight: FontWeight.w700, @@ -696,7 +695,7 @@ class _AiInsightSectionState extends State<_AiInsightSection> { const SizedBox(height: 6), Text( _insight!, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 13, height: 1.5, @@ -707,7 +706,7 @@ class _AiInsightSectionState extends State<_AiInsightSection> { onTap: () => _openCoach(context), child: Text( 'Continue in Coach →', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.secondary, fontSize: 12, fontWeight: FontWeight.w600, diff --git a/workout-logger/lib/screens/widgets/profile_sections.dart b/workout-logger/lib/screens/widgets/profile_sections.dart index 78000c5..55a0c0e 100644 --- a/workout-logger/lib/screens/widgets/profile_sections.dart +++ b/workout-logger/lib/screens/widgets/profile_sections.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../../services/debug_log_buffer.dart'; @@ -59,7 +58,7 @@ class _ProfileSection extends StatelessWidget { children: [ Text( title, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontWeight: FontWeight.w700, fontSize: 14, @@ -68,7 +67,7 @@ class _ProfileSection extends StatelessWidget { ), Text( subtitle, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, fontWeight: FontWeight.w400, @@ -174,7 +173,7 @@ class PreferencesSection extends StatelessWidget { ), child: Text( label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: selected ? AppColors.primary : AppColors.textSoft, fontWeight: selected ? FontWeight.w700 : FontWeight.w400, fontSize: 12, @@ -197,7 +196,7 @@ class PreferencesSection extends StatelessWidget { children: [ Text( 'Show estimated 1RM', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w500, @@ -206,7 +205,7 @@ class PreferencesSection extends StatelessWidget { const SizedBox(height: 2), Text( 'Display 1-rep max badge on completed sets', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -268,7 +267,7 @@ class HealthConnectSection extends StatelessWidget { children: [ Text( 'Sync workouts after finishing', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w500, @@ -277,7 +276,7 @@ class HealthConnectSection extends StatelessWidget { const SizedBox(height: 2), Text( 'Writes session + per-set reps to Health Connect', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -303,7 +302,7 @@ class HealthConnectSection extends StatelessWidget { const SizedBox(width: 8), Text( 'Connected — syncing after each workout', - style: GoogleFonts.geist(color: _hcColor, fontSize: 12), + style: TextStyle(fontFamily: 'Geist', color: _hcColor, fontSize: 12), ), ], ), @@ -319,7 +318,7 @@ class HealthConnectSection extends StatelessWidget { children: [ Text( 'Readiness insights', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w500, @@ -328,7 +327,7 @@ class HealthConnectSection extends StatelessWidget { const SizedBox(height: 2), Text( 'Reads sleep & heart data to score daily recovery', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -436,13 +435,13 @@ class CloudSyncSection extends StatelessWidget { ), child: TextField( enabled: false, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 12, ), decoration: InputDecoration( hintText: 'mongodb+srv://user:pass@cluster.mongodb.net/db', - hintStyle: GoogleFonts.geistMono( + hintStyle: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 12, ), @@ -462,7 +461,7 @@ class CloudSyncSection extends StatelessWidget { const SizedBox(height: AppSpacing.sm), Text( 'Cloud sync with custom MongoDB will be available in a future update.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, fontStyle: FontStyle.italic, @@ -557,7 +556,7 @@ class _SectionLabel extends StatelessWidget { Widget build(BuildContext context) { return Text( text, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 9, fontWeight: FontWeight.w600, @@ -609,7 +608,7 @@ class _UnitToggleButton extends StatelessWidget { child: Center( child: Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: selected ? AppColors.primary : AppColors.textSoft, fontWeight: selected ? FontWeight.w700 : FontWeight.w500, fontSize: 14, @@ -668,7 +667,7 @@ class _ActionTile extends StatelessWidget { children: [ Text( title, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w500, @@ -676,7 +675,7 @@ class _ActionTile extends StatelessWidget { ), Text( subtitle, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -727,7 +726,7 @@ class _InfoTile extends StatelessWidget { const SizedBox(width: 12), Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 13, ), @@ -735,7 +734,7 @@ class _InfoTile extends StatelessWidget { const Spacer(), Text( value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textSoft, fontSize: 12, fontWeight: FontWeight.w500, @@ -826,7 +825,7 @@ class _AiSettingsSectionState extends State { ), child: Text( 'Active', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.success, fontSize: 10, fontWeight: FontWeight.w600, @@ -854,13 +853,13 @@ class _AiSettingsSectionState extends State { enableSuggestions: false, autocorrect: false, keyboardType: TextInputType.visiblePassword, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 12, ), decoration: InputDecoration( hintText: 'AIza…', - hintStyle: GoogleFonts.geistMono( + hintStyle: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 12, ), @@ -889,7 +888,7 @@ class _AiSettingsSectionState extends State { const SizedBox(height: AppSpacing.sm), Text( 'Get a free key at aistudio.google.com. Stored locally on-device.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, fontStyle: FontStyle.italic, @@ -923,7 +922,7 @@ class _AiSettingsSectionState extends State { ), child: Text( label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: selected ? AppColors.primary : AppColors.textSoft, fontWeight: selected ? FontWeight.w700 : FontWeight.w400, fontSize: 11, @@ -962,7 +961,7 @@ class _AiSettingsSectionState extends State { ) : Text( 'Save API Key', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.primary, fontSize: 13, fontWeight: FontWeight.w600, @@ -981,7 +980,7 @@ class _AiSettingsSectionState extends State { onTap: () => context.read().resetUsage(), child: Text( 'Reset', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.accent, fontSize: 11, fontWeight: FontWeight.w600, @@ -1013,7 +1012,7 @@ class _AiSettingsSectionState extends State { const SizedBox(height: AppSpacing.sm), Text( 'Cumulative billable tokens across coach, program builder & insights.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, fontStyle: FontStyle.italic, @@ -1038,11 +1037,11 @@ class _UsageRow extends StatelessWidget { children: [ Text( label, - style: GoogleFonts.geist(color: AppColors.textMuted, fontSize: 12), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12), ), Text( value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 12, fontWeight: FontWeight.w600, @@ -1084,7 +1083,7 @@ class _DebugLogSheet extends StatelessWidget { children: [ Text( 'Debug Logs', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontWeight: FontWeight.w700, fontSize: 14, @@ -1095,7 +1094,7 @@ class _DebugLogSheet extends StatelessWidget { onPressed: () => DebugLogBuffer.instance.clear(), child: Text( 'Clear', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.accent, fontSize: 12, fontWeight: FontWeight.w600, @@ -1119,7 +1118,7 @@ class _DebugLogSheet extends StatelessWidget { return Center( child: Text( 'No logs yet', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 13), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 13), ), ); } @@ -1141,7 +1140,7 @@ class _DebugLogSheet extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 1), child: Text( line, - style: GoogleFonts.geistMono(fontSize: 10, color: color), + style: TextStyle(fontFamily: 'GeistMono', fontSize: 10, color: color), ), ); }, @@ -1170,7 +1169,7 @@ class _ComingSoonBadge extends StatelessWidget { ), child: Text( 'Soon', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.warning, fontSize: 10, fontWeight: FontWeight.w600, diff --git a/workout-logger/lib/screens/widgets/readiness_card.dart b/workout-logger/lib/screens/widgets/readiness_card.dart index 2c42625..521243e 100644 --- a/workout-logger/lib/screens/widgets/readiness_card.dart +++ b/workout-logger/lib/screens/widgets/readiness_card.dart @@ -5,7 +5,6 @@ // (or with the feature disabled) never see an empty state. import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../../models/models.dart'; @@ -62,7 +61,7 @@ class ReadinessCard extends StatelessWidget { children: [ Text( _headline(snapshot.band!), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w700, @@ -72,7 +71,7 @@ class ReadinessCard extends StatelessWidget { const SizedBox(height: 3), Text( _subtitle(snapshot), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), @@ -173,7 +172,7 @@ class _ScoreRing extends StatelessWidget { ), Text( '$score', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textPrimary, fontSize: 16, fontWeight: FontWeight.w700, @@ -213,7 +212,7 @@ class _ReadinessDetailsSheet extends StatelessWidget { const SizedBox(height: 18), Text( 'Readiness · ${snapshot.score}', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 18, fontWeight: FontWeight.w700, @@ -223,7 +222,7 @@ class _ReadinessDetailsSheet extends StatelessWidget { const SizedBox(height: 4), Text( 'As of $time, from your watch via Health Connect', - style: GoogleFonts.geist(color: AppColors.textMuted, fontSize: 12), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12), ), const SizedBox(height: 18), if (snapshot.sleepScore != null) @@ -252,7 +251,7 @@ class _ReadinessDetailsSheet extends StatelessWidget { 'Each factor compares last night and this morning to your own ' '14-day average — only dips below your normal lower the score. ' 'Accuracy improves after about 5 nights of watch data.', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, height: 1.5, @@ -294,7 +293,7 @@ class _ComponentRow extends StatelessWidget { children: [ Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 13, fontWeight: FontWeight.w600, @@ -302,7 +301,7 @@ class _ComponentRow extends StatelessWidget { ), Text( value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textMuted, fontSize: 12, ), diff --git a/workout-logger/lib/screens/widgets/rf_question_card.dart b/workout-logger/lib/screens/widgets/rf_question_card.dart index fbdd0eb..719131a 100644 --- a/workout-logger/lib/screens/widgets/rf_question_card.dart +++ b/workout-logger/lib/screens/widgets/rf_question_card.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/models.dart'; import '../../theme/app_theme.dart'; @@ -76,7 +75,7 @@ class _RFQuestionCardState extends State { const SizedBox(width: AppSpacing.xs), Text( 'QUICK QUESTIONS', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, fontWeight: FontWeight.w700, letterSpacing: 1.2, @@ -143,7 +142,7 @@ class _QuestionBlock extends StatelessWidget { children: [ Text( spec.question, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textPrimary, @@ -167,13 +166,13 @@ class _QuestionBlock extends StatelessWidget { const SizedBox(height: AppSpacing.sm), TextField( controller: controller, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, color: AppColors.textPrimary, ), decoration: InputDecoration( hintText: 'Or type your own answer…', - hintStyle: GoogleFonts.geist( + hintStyle: TextStyle(fontFamily: 'Geist', fontSize: 12, color: AppColors.textFaint, ), @@ -243,7 +242,7 @@ class _OptionChip extends StatelessWidget { ), child: Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 12, fontWeight: selected ? FontWeight.w600 : FontWeight.w400, color: selected ? AppColors.secondary : AppColors.textSoft, diff --git a/workout-logger/lib/screens/widgets/rf_widgets.dart b/workout-logger/lib/screens/widgets/rf_widgets.dart index c99ea32..14ae34e 100644 --- a/workout-logger/lib/screens/widgets/rf_widgets.dart +++ b/workout-logger/lib/screens/widgets/rf_widgets.dart @@ -5,7 +5,6 @@ import 'dart:math' as math; import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../theme/app_theme.dart'; // ── Route helper ────────────────────────────────────────────────────────────── @@ -286,7 +285,7 @@ class _NavItem extends StatelessWidget { const SizedBox(height: 4), Text( item.label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, fontWeight: active ? FontWeight.w600 : FontWeight.w500, color: active ? AppColors.textPrimary : AppColors.textMuted, diff --git a/workout-logger/lib/screens/widgets/sleep_hr_card.dart b/workout-logger/lib/screens/widgets/sleep_hr_card.dart index 3e1af45..e60ad59 100644 --- a/workout-logger/lib/screens/widgets/sleep_hr_card.dart +++ b/workout-logger/lib/screens/widgets/sleep_hr_card.dart @@ -6,7 +6,6 @@ import 'dart:math' show min; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../../models/sleep_hr_models.dart'; @@ -48,7 +47,7 @@ class SleepHrCard extends StatelessWidget { children: [ Text( 'Sleep heart rate', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 13, fontWeight: FontWeight.w700, @@ -58,7 +57,7 @@ class SleepHrCard extends StatelessWidget { const SizedBox(height: 2), Text( 'Last night · $startFmt – $endFmt', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, ), @@ -159,7 +158,7 @@ class _MiniStat extends StatelessWidget { children: [ Text( label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10, ), @@ -170,7 +169,7 @@ class _MiniStat extends StatelessWidget { children: [ TextSpan( text: value, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 18, fontWeight: FontWeight.w700, @@ -179,7 +178,7 @@ class _MiniStat extends StatelessWidget { ), TextSpan( text: ' $unit', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10, ), diff --git a/workout-logger/lib/screens/widgets/sleep_hr_charts.dart b/workout-logger/lib/screens/widgets/sleep_hr_charts.dart index 1c2c1e2..f50cd95 100644 --- a/workout-logger/lib/screens/widgets/sleep_hr_charts.dart +++ b/workout-logger/lib/screens/widgets/sleep_hr_charts.dart @@ -8,7 +8,6 @@ import 'dart:math' show min, max; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../models/sleep_hr_models.dart'; import '../../theme/app_theme.dart'; @@ -73,7 +72,7 @@ class SleepHrDayView extends StatelessWidget { Text( 'Heart rate during sleep · 10-min bars', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), ), const SizedBox(height: 8), _InteractiveBarChart(segments: snapshot.segments), @@ -85,7 +84,7 @@ class SleepHrDayView extends StatelessWidget { Text( 'HR range by stage', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, letterSpacing: 0.3), ), const SizedBox(height: 10), _StageDistributionChart( @@ -124,12 +123,12 @@ class _StatPill extends StatelessWidget { children: [ Text( label.toUpperCase(), - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 9, letterSpacing: 0.5), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 9, letterSpacing: 0.5), ), const SizedBox(height: 2), Text( value, - style: GoogleFonts.geistMono(color: color, fontSize: 14, fontWeight: FontWeight.w700), + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 14, fontWeight: FontWeight.w700), ), ], ), @@ -220,7 +219,7 @@ class _BarChartPainter extends CustomPainter { final gridPaint = Paint() ..color = AppColors.glassBorder ..strokeWidth = 0.5; - final yLabelStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final yLabelStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); final gridBpms = []; for (var b = (bpmMin ~/ 10) * 10; b <= bpmMax; b += 10) { @@ -271,7 +270,7 @@ class _BarChartPainter extends CustomPainter { } canvas.drawPath(path, avgPaint); - final xLabelStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final xLabelStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); for (var i = 0; i < n; i += 6) { final t = _toIst(segments[i].windowStart); final h = t.hour == 0 ? 12 : t.hour > 12 ? t.hour - 12 : t.hour; @@ -319,7 +318,7 @@ class _BarChartPainter extends CustomPainter { }[seg.stage] ?? seg.stage; final lines = ['$th:$tm–$eh:$em IST', '${seg.minBpm}–${seg.maxBpm} bpm', stageName]; - final lineStyle = GoogleFonts.geistMono(color: Colors.white, fontSize: 9.5); + final lineStyle = TextStyle(fontFamily: 'GeistMono', color: Colors.white, fontSize: 9.5); final painters = lines .map((l) => TextPainter( text: TextSpan(text: l, style: lineStyle), @@ -360,7 +359,7 @@ class _BarChartPainter extends CustomPainter { final stagePainter = TextPainter( text: TextSpan( text: stageName, - style: GoogleFonts.geistMono(color: color, fontSize: 9.5, fontWeight: FontWeight.w700), + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 9.5, fontWeight: FontWeight.w700), ), textDirection: TextDirection.ltr, )..layout(); @@ -430,7 +429,7 @@ class _Legend extends StatelessWidget { decoration: BoxDecoration(color: e.$2, borderRadius: BorderRadius.circular(2)), ), const SizedBox(width: 4), - Text(e.$1, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(e.$1, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], )), Row( @@ -438,7 +437,7 @@ class _Legend extends StatelessWidget { children: [ SizedBox(width: 14, height: 10, child: CustomPaint(painter: _DashLinePainter())), const SizedBox(width: 4), - Text('Avg trend', style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text('Avg trend', style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ), ], @@ -481,7 +480,7 @@ class _StageDistributionChart extends StatelessWidget { if (stats.isEmpty) { return Text( 'No stage HR data available.', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 12), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 12), ); } @@ -537,7 +536,7 @@ class _DistRow extends StatelessWidget { child: Text( label, textAlign: TextAlign.right, - style: GoogleFonts.geist(color: color, fontSize: 10, fontWeight: FontWeight.w600), + style: TextStyle(fontFamily: 'Geist', color: color, fontSize: 10, fontWeight: FontWeight.w600), ), ), const SizedBox(width: 8), @@ -591,7 +590,7 @@ class _DistRow extends StatelessWidget { top: 0, child: Text( '${stats.avgBpm.round()} bpm', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 8, fontWeight: FontWeight.w700, @@ -635,7 +634,7 @@ class _DistAxis extends StatelessWidget { left: (pct(t.toDouble()) * w - 10).clamp(0, w - 20), child: Text( '$t', - style: GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8), + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8), ), )) .toList(), @@ -701,7 +700,7 @@ class _DistLi extends StatelessWidget { children: [ swatch, const SizedBox(width: 4), - Text(label, style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 10)), + Text(label, style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 10)), ], ); } diff --git a/workout-logger/lib/screens/widgets/targets_tab.dart b/workout-logger/lib/screens/widgets/targets_tab.dart index 5cc1744..6cb2978 100644 --- a/workout-logger/lib/screens/widgets/targets_tab.dart +++ b/workout-logger/lib/screens/widgets/targets_tab.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:intl/intl.dart'; import '../../models/models.dart'; @@ -81,7 +80,7 @@ class TargetsTab extends StatelessWidget { icon: const Icon(Icons.add_rounded, color: Colors.white), label: Text( 'New Target', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: Colors.white, fontWeight: FontWeight.w700, ), @@ -171,7 +170,7 @@ class _SummaryChip extends StatelessWidget { ), child: Text( label, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 11, fontWeight: FontWeight.w600, @@ -280,7 +279,7 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { Expanded( child: Text( widget.exerciseName, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 15, fontWeight: FontWeight.w600, @@ -303,7 +302,7 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { ), child: Text( _statusWord, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: _statusColor, fontSize: 10, fontWeight: FontWeight.w700, @@ -330,14 +329,14 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { Text( '${settings.toDisplay(t.currentValue).toStringAsFixed(1)} / ' '${settings.toDisplay(t.targetValue).toStringAsFixed(1)} ${settings.unitLabel}', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, ), ), Text( '${pct.toStringAsFixed(0)}%', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.primary, fontSize: 12, fontWeight: FontWeight.w700, @@ -356,7 +355,7 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { const SizedBox(width: 4), Text( 'Est. $etaStr', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), @@ -412,7 +411,7 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { const SizedBox(width: 4), Text( 'AI Tip', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.warning, fontSize: 11, fontWeight: FontWeight.w700, @@ -423,7 +422,7 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { const SizedBox(height: 4), Text( _nudge!, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, height: 1.5, @@ -434,7 +433,7 @@ class _TargetCardWithAiState extends State<_TargetCardWithAi> { onTap: _openCoach, child: Text( 'Continue in Coach →', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.secondary, fontSize: 11, fontWeight: FontWeight.w600, @@ -546,7 +545,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { ), Text( 'New Target', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 20, fontWeight: FontWeight.w800, @@ -556,7 +555,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { Text( 'EXERCISE', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.w700, @@ -578,12 +577,12 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { dropdownColor: AppColors.cardHigh, hint: Text( 'Select exercise…', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 14, ), ), - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, ), @@ -606,7 +605,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { const SizedBox(height: AppSpacing.md), Text( 'TARGET TYPE', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.w700, @@ -641,7 +640,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { child: Text( t.$2, textAlign: TextAlign.center, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: selected ? AppColors.primary : AppColors.textMuted, @@ -660,7 +659,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { const SizedBox(height: AppSpacing.md), Text( 'TARGET VALUE', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.w700, @@ -681,14 +680,14 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { FilteringTextInputFormatter.allow( RegExp(r'^\d*\.?\d*$')), ], - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, ), decoration: InputDecoration( hintText: 'e.g. 100', hintStyle: - GoogleFonts.geist(color: AppColors.textMuted), + TextStyle(fontFamily: 'Geist', color: AppColors.textMuted), border: InputBorder.none, contentPadding: const EdgeInsets.symmetric( horizontal: AppSpacing.md, @@ -711,7 +710,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { const SizedBox(width: 5), Text( 'Suggest a target based on my progress', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.primary, fontSize: 12, fontWeight: FontWeight.w600, @@ -740,7 +739,7 @@ class _CreateTargetSheetState extends State<_CreateTargetSheet> { Expanded( child: Text( _suggestionText!, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, height: 1.4, diff --git a/workout-logger/lib/screens/widgets/volume_chart.dart b/workout-logger/lib/screens/widgets/volume_chart.dart index ff779b7..e744bf7 100644 --- a/workout-logger/lib/screens/widgets/volume_chart.dart +++ b/workout-logger/lib/screens/widgets/volume_chart.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../theme/app_theme.dart'; class VolumeChart extends StatelessWidget { @@ -35,7 +34,7 @@ class VolumeChart extends StatelessWidget { children: labels .map((l) => Text( l, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: 9, color: AppColors.textFaint, ), diff --git a/workout-logger/lib/screens/widgets/wheel_picker.dart b/workout-logger/lib/screens/widgets/wheel_picker.dart index 56d83a0..7ef8f2a 100644 --- a/workout-logger/lib/screens/widgets/wheel_picker.dart +++ b/workout-logger/lib/screens/widgets/wheel_picker.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../theme/app_theme.dart'; /// Two-column wheel picker for weight + reps input. @@ -159,7 +158,7 @@ class _SingleWheelState extends State<_SingleWheel> { children: [ Text( widget.label, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, fontWeight: FontWeight.w600, color: AppColors.textMuted, @@ -169,7 +168,7 @@ class _SingleWheelState extends State<_SingleWheel> { if (widget.unit.isNotEmpty) Text( widget.unit, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 10, color: AppColors.textFaint, ), @@ -217,7 +216,7 @@ class _SingleWheelState extends State<_SingleWheel> { return Center( child: Text( widget.formatter(widget.values[i]), - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', fontSize: isCurrent ? 28 : 16, fontWeight: FontWeight.w600, color: isCurrent diff --git a/workout-logger/lib/screens/widgets/workout_header.dart b/workout-logger/lib/screens/widgets/workout_header.dart index 50665cb..729ae49 100644 --- a/workout-logger/lib/screens/widgets/workout_header.dart +++ b/workout-logger/lib/screens/widgets/workout_header.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../../theme/app_theme.dart'; import 'rf_widgets.dart'; @@ -111,7 +110,7 @@ class _WorkoutHeaderState extends State { children: [ Text( widget.exerciseName, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 17, fontWeight: FontWeight.w600, @@ -127,7 +126,7 @@ class _WorkoutHeaderState extends State { children: [ Text( 'Exercise ${widget.currentExerciseIndex + 1} of ${widget.totalExercises} · Set ${widget.setNumber}', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, ), @@ -157,7 +156,7 @@ class _WorkoutHeaderState extends State { const SizedBox(width: 4), Text( _elapsedLabel, - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textSoft, fontSize: 12, ), diff --git a/workout-logger/lib/screens/widgets/workout_hr_section.dart b/workout-logger/lib/screens/widgets/workout_hr_section.dart index c4b6df7..4dd59d0 100644 --- a/workout-logger/lib/screens/widgets/workout_hr_section.dart +++ b/workout-logger/lib/screens/widgets/workout_hr_section.dart @@ -8,7 +8,6 @@ import 'dart:math' show max, min; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import '../../models/models.dart'; @@ -83,9 +82,9 @@ class _WorkoutHrSectionState extends State { children: [ Text( 'HR across the session · ⚑ = exercise', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11), ), - Text('bpm', style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11)), + Text('bpm', style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11)), ], ), const SizedBox(height: 8), @@ -113,7 +112,7 @@ class _WorkoutHrSectionState extends State { alignment: Alignment.center, child: Text( _expanded ? 'Hide per-rest breakdown ▴' : 'Show per-rest breakdown ▾', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, fontWeight: FontWeight.w600, @@ -130,7 +129,7 @@ class _WorkoutHrSectionState extends State { Text( 'Per-rest recovery needs per-set timing, which this workout ' 'didn\'t record.', - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 11, height: 1.4), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 11, height: 1.4), ), ], ], @@ -177,7 +176,7 @@ class _RecoverySummary extends StatelessWidget { children: [ Text( '${analysis.restsRecovered}/${analysis.restCount}', - style: GoogleFonts.geistMono( + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.success, fontSize: 18, fontWeight: FontWeight.w700, @@ -187,7 +186,7 @@ class _RecoverySummary extends StatelessWidget { Expanded( child: RichText( text: TextSpan( - style: GoogleFonts.geist(color: AppColors.textMuted, fontSize: 11, height: 1.4), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 11, height: 1.4), children: [ const TextSpan( text: 'rests brought your HR down\n', @@ -238,7 +237,7 @@ class _RestRow extends StatelessWidget { children: [ Text( 'After set ${rest.afterSet} · rest ${rest.durationSec}s', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 12, fontWeight: FontWeight.w600, @@ -247,14 +246,14 @@ class _RestRow extends StatelessWidget { const SizedBox(height: 1), Text( 'peak ${rest.peakBpm} → low ${rest.troughBpm} bpm${ok ? '' : ' · too short'}', - style: GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 10), + style: TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 10), ), ], ), ), Text( '−${rest.recoveryBpm} bpm', - style: GoogleFonts.geistMono(color: color, fontSize: 14, fontWeight: FontWeight.w700), + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 14, fontWeight: FontWeight.w700), ), ], ), @@ -285,16 +284,16 @@ class _Pill extends StatelessWidget { children: [ Text( label.toUpperCase(), - style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 9, letterSpacing: 0.5), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 9, letterSpacing: 0.5), ), const SizedBox(height: 2), RichText( text: TextSpan(children: [ TextSpan( text: value, - style: GoogleFonts.geistMono(color: color, fontSize: 16, fontWeight: FontWeight.w700), + style: TextStyle(fontFamily: 'GeistMono', color: color, fontSize: 16, fontWeight: FontWeight.w700), ), - TextSpan(text: ' bpm', style: GoogleFonts.geist(color: AppColors.textFaint, fontSize: 9)), + TextSpan(text: ' bpm', style: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 9)), ]), ), ], @@ -337,7 +336,7 @@ class _CurvePainter extends CustomPainter { final grid = Paint() ..color = AppColors.glassBorder ..strokeWidth = 0.5; - final yStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final yStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); for (var v = (vmin / 20).ceil() * 20; v <= vmax; v += 20) { final yy = y(v.toDouble()); canvas.drawLine(Offset(_padLeft, yy), Offset(size.width - 4, yy), grid); @@ -402,7 +401,7 @@ class _CurvePainter extends CustomPainter { final tp = TextPainter( text: TextSpan( text: s.label, - style: GoogleFonts.geist(color: AppColors.textSoft, fontSize: 8, fontWeight: FontWeight.w600), + style: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 8, fontWeight: FontWeight.w600), ), textDirection: TextDirection.ltr, maxLines: 1, @@ -418,7 +417,7 @@ class _CurvePainter extends CustomPainter { } // X labels (minutes). - final xStyle = GoogleFonts.geistMono(color: AppColors.textFaint, fontSize: 8); + final xStyle = TextStyle(fontFamily: 'GeistMono', color: AppColors.textFaint, fontSize: 8); final totalMin = (spanMs / 60000).round(); final stepMin = totalMin <= 0 ? 1 : (totalMin / 4).ceil(); for (var m = 0; m <= totalMin; m += stepMin) { diff --git a/workout-logger/lib/screens/workout_flow_screen.dart b/workout-logger/lib/screens/workout_flow_screen.dart index b5dd37e..cdcab5b 100644 --- a/workout-logger/lib/screens/workout_flow_screen.dart +++ b/workout-logger/lib/screens/workout_flow_screen.dart @@ -5,7 +5,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:provider/provider.dart'; -import 'package:google_fonts/google_fonts.dart'; import '../models/models.dart'; import '../services/workout_provider.dart'; @@ -410,7 +409,7 @@ class _WorkoutFlowScreenState extends State { const SizedBox(width: 6), Text( 'Prev', - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textMuted, @@ -453,7 +452,7 @@ class _WorkoutFlowScreenState extends State { child: Text( isLast ? 'Finish' : 'Next exercise', overflow: TextOverflow.ellipsis, - style: GoogleFonts.geist( + style: TextStyle(fontFamily: 'Geist', fontSize: 13, fontWeight: FontWeight.w600, color: Colors.white, diff --git a/workout-logger/lib/theme/app_theme.dart b/workout-logger/lib/theme/app_theme.dart index 7f02c15..5e2bcef 100644 --- a/workout-logger/lib/theme/app_theme.dart +++ b/workout-logger/lib/theme/app_theme.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; // ── AppColors ────────────────────────────────────────────────────────────── // Single source of truth for all colour tokens. Never use hex literals in @@ -121,7 +120,7 @@ class AppTheme { foregroundColor: AppColors.textPrimary, elevation: 0, centerTitle: false, - titleTextStyle: GoogleFonts.geist( + titleTextStyle: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 22, fontWeight: FontWeight.w700, @@ -144,7 +143,7 @@ class AppTheme { shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(14), ), - textStyle: GoogleFonts.geist( + textStyle: TextStyle(fontFamily: 'Geist', fontSize: 14, fontWeight: FontWeight.w600, letterSpacing: 0.2, @@ -210,64 +209,64 @@ class AppTheme { static TextTheme _buildTextTheme() { return TextTheme( - headlineLarge: GoogleFonts.geist( + headlineLarge: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 32, fontWeight: FontWeight.w700, letterSpacing: -1.28, ), - headlineMedium: GoogleFonts.geist( + headlineMedium: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 28, fontWeight: FontWeight.w600, letterSpacing: -1.12, ), - headlineSmall: GoogleFonts.geist( + headlineSmall: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 22, fontWeight: FontWeight.w600, letterSpacing: -0.88, ), - titleLarge: GoogleFonts.geist( + titleLarge: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 17, fontWeight: FontWeight.w600, ), - titleMedium: GoogleFonts.geist( + titleMedium: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 14, fontWeight: FontWeight.w600, ), - titleSmall: GoogleFonts.geist( + titleSmall: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 13, fontWeight: FontWeight.w500, ), - bodyLarge: GoogleFonts.geist( + bodyLarge: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 16, ), - bodyMedium: GoogleFonts.geist( + bodyMedium: TextStyle(fontFamily: 'Geist', color: AppColors.textSoft, fontSize: 14, ), - bodySmall: GoogleFonts.geist( + bodySmall: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 12, ), - labelLarge: GoogleFonts.geist( + labelLarge: TextStyle(fontFamily: 'Geist', color: AppColors.textPrimary, fontSize: 11, fontWeight: FontWeight.w600, letterSpacing: 0.4, ), - labelMedium: GoogleFonts.geist( + labelMedium: TextStyle(fontFamily: 'Geist', color: AppColors.textMuted, fontSize: 10, fontWeight: FontWeight.w500, letterSpacing: 0.3, ), - labelSmall: GoogleFonts.geist( + labelSmall: TextStyle(fontFamily: 'Geist', color: AppColors.textFaint, fontSize: 9, fontWeight: FontWeight.w500, diff --git a/workout-logger/pubspec.yaml b/workout-logger/pubspec.yaml index d4a544d..74f1eba 100644 --- a/workout-logger/pubspec.yaml +++ b/workout-logger/pubspec.yaml @@ -52,9 +52,6 @@ dependencies: http: ^1.2.1 package_info_plus: ^8.3.1 - # Fonts — Geist Sans + Geist Mono (requires ^8.0.0 for Geist support) - google_fonts: ^8.0.0 - # Health Connect integration health_connector: ^3.9.1 @@ -105,25 +102,13 @@ flutter: # For details regarding adding assets from package dependencies, see # https://flutter.dev/to/asset-from-package - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/to/font-from-package + fonts: + - family: Geist + fonts: + - asset: assets/fonts/Geist-Variable.ttf + - family: GeistMono + fonts: + - asset: assets/fonts/GeistMono-Variable.ttf flutter_launcher_icons: android: true