From 5122eebc1162d826a57fa4b15aa5c0b8592af755 Mon Sep 17 00:00:00 2001 From: R-Bharathraj Date: Fri, 18 Sep 2026 15:23:30 +0530 Subject: [PATCH] feat: enhance UI, branding assets, onboarding flow, and screen layouts --- README.md | 44 +- android/app/build.gradle.kts | 5 +- android/app/src/main/AndroidManifest.xml | 20 + .../res/drawable-v21/launch_background.xml | 12 +- .../main/res/drawable/launch_background.xml | 13 +- .../main/res/drawable/splash_icon_none.xml | 8 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 11 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 2282 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 3483 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 1313 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 2124 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 3376 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 4930 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 5390 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 7737 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 7278 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 10664 bytes .../src/main/res/values-night-v31/styles.xml | 15 + .../app/src/main/res/values-v31/styles.xml | 16 + android/app/src/main/res/values/colors.xml | 11 + assets/art/onboarding_find_work.svg | 33 ++ assets/art/onboarding_get_paid.svg | 26 + assets/art/onboarding_know_your_pay.svg | 30 ++ assets/images/krow_logo.png | Bin 0 -> 17764 bytes .../Icon-App-1024x1024@1x.png | Bin 10932 -> 64062 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 295 -> 370 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 406 -> 996 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 450 -> 1799 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 282 -> 649 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 462 -> 1757 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 704 -> 2893 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 406 -> 996 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 586 -> 2660 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 862 -> 4359 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 862 -> 4359 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 1674 -> 6798 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 762 -> 2452 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 1226 -> 5612 bytes .../Icon-App-83.5x83.5@2x.png | Bin 1418 -> 6186 bytes ios/Runner/Base.lproj/LaunchScreen.storyboard | 16 +- ios/Runner/Info.plist | 8 + lib/core/permissions.dart | 62 +++ lib/core/router.dart | 26 +- lib/screens/auth_screens.dart | 490 ++++++++++++------ lib/screens/clock_screen.dart | 94 ++-- lib/screens/compliance_screens.dart | 70 ++- lib/screens/home_shell.dart | 5 +- lib/screens/onboarding_screens.dart | 254 ++++++--- lib/screens/pay_screens.dart | 21 +- lib/screens/profile_screen.dart | 12 +- lib/screens/requirements_screen.dart | 173 +++++++ lib/screens/settings_screens.dart | 41 +- lib/screens/shift_detail_screen.dart | 16 +- lib/screens/shifts_screen.dart | 13 +- lib/screens/timecard_screens.dart | 43 +- lib/screens/today_screen.dart | 28 +- lib/state/compliance_controller.dart | 9 +- lib/state/session_controller.dart | 52 +- lib/widgets/krow_nav_bar.dart | 134 ++--- lib/widgets/krow_wordmark.dart | 78 +++ pubspec.lock | 224 ++++++++ pubspec.yaml | 14 +- test/screen_layout_test.dart | 4 + web/favicon.png | Bin 917 -> 389 bytes web/icons/Icon-192.png | Bin 5292 -> 7195 bytes web/icons/Icon-512.png | Bin 8252 -> 22126 bytes web/icons/Icon-maskable-192.png | Bin 5594 -> 5801 bytes web/icons/Icon-maskable-512.png | Bin 20998 -> 17309 bytes 68 files changed, 1661 insertions(+), 470 deletions(-) create mode 100644 android/app/src/main/res/drawable/splash_icon_none.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/values-night-v31/styles.xml create mode 100644 android/app/src/main/res/values-v31/styles.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 assets/art/onboarding_find_work.svg create mode 100644 assets/art/onboarding_get_paid.svg create mode 100644 assets/art/onboarding_know_your_pay.svg create mode 100644 assets/images/krow_logo.png create mode 100644 lib/core/permissions.dart create mode 100644 lib/screens/requirements_screen.dart create mode 100644 lib/widgets/krow_wordmark.dart diff --git a/README.md b/README.md index d6d5ae2..3e8e7cc 100644 --- a/README.md +++ b/README.md @@ -145,15 +145,47 @@ segmented control: that the indicator actually travels rather than jumping, that taps report the right index, and that each tab reaches the semantics tree with its selected state (the dot alone is not readable). +## Device permissions + +Location, notifications and camera are real requests through +`permission_handler`, wrapped in `lib/core/permissions.dart` so nothing else +imports the plugin. Two rules that layer enforces: + +- **The OS is the source of truth.** The flags on `SessionState` are a cache for + the UI. A permission can be revoked in system settings while the app is + closed, so any screen that shows their state calls `refresh()` to re-read. +- **Platforms the plugin does not implement degrade to granted.** On web and + desktop it returns `true` rather than throwing — the browser prompts at the + point of use, so asking up front is neither possible nor useful. + +There is no API to revoke a permission, and re-requesting a granted one is a +no-op, so switching one off in Settings opens the system settings page instead. +Same when a permission is permanently denied and the OS will no longer show its +dialog. + +Native declarations live in `AndroidManifest.xml` and `ios/Runner/Info.plist`; +iOS rejects builds that request a permission without a usage string. + +> `permission_handler_android` compiles against Android API 37, and its AAR +> metadata requires dependents to match, so `android/app/build.gradle.kts` pins +> `compileSdk = 37` rather than following `flutter.compileSdkVersion`. Building +> needs the `platforms;android-37` SDK package installed. + ## Wiring it to a backend The seams are deliberate. `lib/state/seed.dart` is the only source of demo data; swap each controller's `build()` for an API call and the screens are unchanged. -Two places currently stand in for device APIs: + +What still stands in for something real: - **Geofence** — `ClockScreen` has an "at the venue" switch in place of GPS. - Replace with `geolocator` and a 150 m radius check against the venue. -- **File upload** — the compliance sheet fakes a filename. Replace with - `image_picker` / `file_picker` and a real upload. - -Notifications and SMS verification are also stubbed: the OTP is always `123456`. + Location permission is real, but nothing measures distance yet. Add + `geolocator` and a 150 m radius check against the venue. +- **PDF upload** — compliance items take a photo or a gallery image through + `image_picker`. Picking a document needs `file_picker`, so that option is not + offered rather than offered and faked. +- **Upload** — a picked file updates local state only; nothing is sent + anywhere yet. +- **Notifications** — permission is requested, but nothing is scheduled or + received. Needs a messaging service and a local-notifications plugin. +- **SMS verification** — the OTP is always `123456`. diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 01af1bb..1270e0a 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -6,7 +6,10 @@ plugins { android { namespace = "in.nearle.krow.krow_worker_app" - compileSdk = flutter.compileSdkVersion + // Pinned above flutter.compileSdkVersion because permission_handler_android + // compiles against 37 and AAR metadata requires anything depending on it to + // do the same. Drop this back once Flutter's default reaches 37. + compileSdk = 37 ndkVersion = flutter.ndkVersion compileOptions { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 924d2ba..2572890 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,4 +1,24 @@ + + + + + + + + + + + + + + + - + - - - - + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index 304732f..7e20987 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -1,12 +1,7 @@ - + - - - - + diff --git a/android/app/src/main/res/drawable/splash_icon_none.xml b/android/app/src/main/res/drawable/splash_icon_none.xml new file mode 100644 index 0000000..612d41b --- /dev/null +++ b/android/app/src/main/res/drawable/splash_icon_none.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..2abc601 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..b2c949a30fbafed7fedd7ac74ddc01817e877bda 100644 GIT binary patch literal 2282 zcmbuB=Q|q=7sgYojqwDvidv1Ts46vTKSkPTh$lu{rKnky*hH-w)!MI>T2)jKyK1k_ zq-Ja-Ml}^9NQse{kN01A-w)?^zMbp3uXA7bIj{af+~MIAJjFc_1K77tq2PDRw= zuROiwK+aO@PmeFdI=kWL^PE6RM{g%3Z-YtAgZ|&X@vwmsZt2SKLuVm7<7?Ibc(ftkel#giyT%PzLg%)0X|sAxDwGmwl|9_ z6UIg;^NdxX#5IGTA2<7+J6KxC8p{wMwYIza=u)f6;9bU-bfbPOpPJ*>v$0X$BC%02 zH5^27c(L%8N%;A>1B~<&mMsod#s!pbiWoqza+{w8 zSx|Ad)aTbzl1Q^405aHAuNJ6P?K1}3O%xA7cL>41}xZhss-7t zSCFU6?J-twFir{1Ej*k68##)oiVw#WmDkEy1{P&-5qo8)W)!RquDQJY-Oo&stR^-4 z!kMG`uhX;Fh607k_w;aQqY(CWxSAMq3P2cNQdZ-W0m0Sy(Ip_F{=}3`SxacB)3X5^ z$$X4#(klKJ%2{uJd<^F7z*TF;6_*1#44xW>cj%bp{!VEg3vDaW%8+oYs*oZ<@68QLDy_+I>25xaoV>dR#>jMeo~mabjva1-1r~BDAD-A{)SMusQy7=$+uV3&kM7 z%%*ZH2t4Bt@smLwp$fxNVwYd=IhkkcE9YdJc)bABis*H%De?#=+?6&~(MwEiH2 zCN-F0y3$<@%#8CW3#Z^^o#nqTTwjD@p*GD{()@2k3@hji2yR+5H$1k^aAgyHKB7(a zEI<|NIF67KSLa~!S{`9_e~RRe5#``vD@jPoz!Ns(B{#futirR(sF@PL?YTIMGsz(Qu{7qXBP&yZ)7z+MU)$`)k zEKumpBTVOU*YWq{5f@&e&IxsWVMx3wdsKP{c%y&Aa3FbL5+J2GwNO`Ky+@#%PSM@z zMO#9Ey4P8UJ+GQIv8W{x8X&(OJNYJ0S$Wo7#4`KOq>b4ax~=t!uc0Y!n=Xk!yIS9} zbc3u?fx4}(C{sgWnVd8sn{>>(D>qU2n~8COf-?d_x>A^$ZM!GVa3tsX8~Oe9wi^6F zA8r?OP=SC1|Jh6fkN3K=Jscm^%Xc88#HxPAgLd_fqV@)-85RSF*@Vw){R|#`d6hh8 zPE~=4NpC$-?v-4bMjxEyU37nC6M@4l(Od*O5NmyN~7pCR7DMl zEi2~CfW+@~hm!-q9=uW;Z1CNq&CK_Vq>El;Ch>e1m^hG{e|S|``l@`(p^1_+no;}i z*Uwb}ezGI?-BAm1&o_=id8!rPs3%9-R=8dnh_T5GbDq6nWU~6|Z-V7%5bei(A$rN9 zyjP6xe)z*iK5+)J7A@ly7f)?s1y#9nbR2DBnk9pLln#r?<^ou6~6Z7NLfuSfgV6n!6LxZaE|}m{r@kjkR7qSyCk^4_7A- z#);A0uoVd(eBo$tufhF?lqvsmP5nNreDYnm?~iJa>*a-&PWut{jhJR6RC9yiS}K+~ zP-cQ4bauDviHw|a*xjyIcFn;AN8Bsc{`AX>MqVF(GU))=Vt84RGvs$eLq_nnpiflC-0K!HGJv9`>)ZTO9G~-k+hOf&!jCz2k;)(`8?7~ zg08L2#@5D1O9AWH;INSvGA%h-IH!e&@Xnaa)urk|eko*RsPwp?viFf@P+uY?IZw9s z_!CLuuhpfYU?vRgm|3_Zp*i(%bZF6wM&mLPxRAlG7-wCBzF~d?kDnWH>{?U2hS{FL t44(LWJtp4b6=1vdzvIwe?9co!NiAimb!RTB?CB2!Foq(GY788r{{`%}R^9*r literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc757ccf592e484aec72e0720909bfa2439bb45 GIT binary patch literal 3483 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 O0)TRGwXd-axbZJyMj2=T literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 09d4391482be68e9e4a07fab769b5de337d16eb1..470c231e7707f2c9f0d8e242dbf0743fa7ee3b9c 100644 GIT binary patch literal 3376 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 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..f97464a032da12138133053ec42f4f362c769540 GIT binary patch literal 4930 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 BNp=7L literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..c38ebcb9d443f4af194e93ff1939c829271ac8f5 GIT binary patch literal 7737 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 J$|r9l{vT^A-6{Y8 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0ce2e6ecc379bae79e4e2f95b140b3b805f78b63 100644 GIT binary patch literal 7278 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 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..812cb0fb3cd197f3c2d68f053f0febcee3e8ad41 GIT binary patch literal 10664 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 + + + + + diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 0000000..42feb96 --- /dev/null +++ b/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..56929d6 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,11 @@ + + + + #3752A8 + + + #FFFFFF + diff --git a/assets/art/onboarding_find_work.svg b/assets/art/onboarding_find_work.svg new file mode 100644 index 0000000..8f9a065 --- /dev/null +++ b/assets/art/onboarding_find_work.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/art/onboarding_get_paid.svg b/assets/art/onboarding_get_paid.svg new file mode 100644 index 0000000..5814cbb --- /dev/null +++ b/assets/art/onboarding_get_paid.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/art/onboarding_know_your_pay.svg b/assets/art/onboarding_know_your_pay.svg new file mode 100644 index 0000000..1c9e971 --- /dev/null +++ b/assets/art/onboarding_know_your_pay.svg @@ -0,0 +1,30 @@ + + + + + + + $ + + + + + + + + + + + + + + + + + + + $121.80 + + diff --git a/assets/images/krow_logo.png b/assets/images/krow_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2ea856c5b3c24e8bde130431b5dc4127b4aa25 GIT binary patch literal 17764 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 Z{||AbP%qY-;ky6;002ovPDHLkV1fosi)jD= literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index dc9ada4725e9b0ddb1deab583e5b5102493aa332..b96ebbb606c5cdec2bc562234d6062b1a4a4de3a 100644 GIT binary patch literal 64062 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 !T0 zLRAj-i$y1ec*tcWorQN|Or9(h=uXe5BMcLMW@hI%O*JD3W-51&T`v)SH3xpePt(2A zDv$4mIR|mutizyyqA9Y!m<-cch^4I*V9RpRfG~^ej{(9TMbhlc`_pESpYSI1FE_bH zcp2=|%Y7;P)!^7FS@Lk4_n}d~k98V@&9EY>CQ1vw=fp6gJPkK?pqt+9WG545qc1E0 zeG-DL-w*G6U*US`+wf@5BJBBkdn2uHuxB-clvG-Oau!7Q*^sxL&+cSBhm?bH)TZwN zkzzj&MJ1sNXn7RW>_C+>hc>ma8f!eZgFaMIW%>Zq@_H6WRR8ZT7fkIjq*nwpX7o|a z@*|kWbB+6GBQ82fYM2OWAU>Xw5`sy4bic&LCEN;qmR*N`&haund~Q(+v%&T03cJ(b z1J{v8zq4zAr11XK-Nsn1GDg_U64x97M1OXwqBaOY-ECN}=<}_YhbFmO+g%|fY&#Y5 zjF|K;~wX=;;U736{ebQxkt3KkXSgo88v+ap5F8mI$nu($|kjehsQ3 zye4PIPOkp@e2M`ksJPT_Z_x7W-_i2I$egu%R&8zUR$~n}dKH_SnrA3&JB{Mnx`ntW z^k<~YOk{qAusWkspFQ8@p>1o+qTt}0u0TN8B*I(NYZ$UBPMrztIS@J6{_0drbF9*y zYO?&KH)^et?#lyTZS+*};@QalPL@CZVP&_TL>duuxK$pEkSTyc76tW| z2LAzyW+6wviHpt(Qjzl0p1D>3K3{1+OxpGwT&ri5;ozI`K34)W^?qwnspH4P*% zPRF6#l4W1nak*%Y7#fONnhTUwLwVwysOtQ|i#zcAbiF~&P2S!@(r#`?bAE+Y{bLfC z3m3UHWY!P+56;PjEE{G@xND)eG*U4eGQI+0&Fod5Cs7}m88(7>v@u{RDHrITrz^0C zS+WB<55#Di7((cS-7?Xv^Xx_mwwK1F8~U6sE){BnGCVr27#8X=j^am~9{lLT>>&@( z2|7bf=l*5$AI@xsINEcym2oSD_+Bsi@C{FQ{OOp;LR$N}nF&5Qmj9cjoRiJ+PcvP) z>+af+=ct8b-LZ_5PL{(#YLQ=_gD13hzSV^1N`4-2+zX&U13bQT6ts^h_>Tfq<+Y+F zbeU;t?B>;>T*l1XV6k*2YC()W^j3)h;uBGZQ}u6W ztlF5ly*s5Q;Q)rTENFS`<`dxgE_-DrC~s%y`;B!(>@T)7jBn(srX)t0Fz|lWJ>Ds{ z(T7^@_V}p?#qsq!ix+wOa|h7MW0hZt8)$$7(=!>*+c6>0St!}{a+C6#b zRo}JJOY8I4_+f+g&j)}PRCQBpxk8|}W>PkVS^xez8_cY<_nC`7JwI1IVlY0rOQjJH zg(~>0!=Z5sYLV0@$5R`)5^98VlgsLup&!a_Ue&tT8z>R9Es>FkP&6K3_9VplVYaTX znQuW)`&=SHz||;?I&RhY$gT18uh{(~rhPq!OJ)hyHHd(SQB#hq$*+BJk+`=(*&kp` z^u+^mwp`f-{7(E2Bk^L6OeJYTyg04Wrx$@!DUYY686_oAnn!lCQG;F+`>%^% zpo>P8QsuxXI!-$M9;F5R{ni7&SPg{SeT^Q>ZuZ`{^QmvLS;q3eoxLz=K6I;8-#=_# zAk=+6d^$Hoejk{cJ-l1890GoMLTxRtOVHrg2tMnKO9*_VD0dVxOcg78uwdY`dpfPd z_L^Af;#$O$reU`)sy~@>s|OpOW;VIs!r!WGr5>k_CyWuoprh(wri(SUTkF zm2?2Nt*2pgG_Wt$){*n5wtn9`GBFS%iqgBbSFJzd#k+WP1?NtT5B}Yxah+OCP+}3P z%$dg<1+|-l|JJaaLrbre$eaV7T^F~4i8NiOV%6fH@bOi%)`~{zKAwS;+X@tI$qzd_pUW!5mk7T=I&HG80aAlJ;_}3+AN9nJMIpEK7I363;V$N}gtu!ebHw$3_Pu;WceU9=3|5DJ45aN*g3b|4>}!Us^iXT|j+~7y9&XQe z6Y3{ePHWCka#s<^=lZmLfU>dig!mlqeuakS{1t!ZU$@p{#~sgfFb|~h$*pxDVK{C@(1I51Y!^C?H;8GOo?w#~-x9~qYoeannJHmC1U%Yx#G6cedgr_10Z69xHkidbUMG`5)Y;`XjzHWC0 zZ@iz~kn3otgsd&&c|sPeu;#G8{!S8kxD_3R0Y3`VIh05vVAO3X<@U=oOdAT~`wxZGy=?l5;JqgaWSdVeZcZYsBSa#8`*r?b6i-Owj z*i>@l9kP^HZhZ}ft~vx*hSG17ER1`aszn%*$C>r;z~T)N${lyXU75O<3MOGLoeQqk zYZVXhuY5c-=^Ki8$j-yruH29)i?dHpP3Pey%eRf&Y`Ij{DJf?)Tz3*?q_toEY84z(ag?GMOfNC<g`)DjSTupUKa?GfgE4D+Q@em znJZyD&110jS$q+A!z}#rI{H9>NGc=T6_Tzd)707m=RcpD8frRL zEt~g=cbls#W@w#`H6DH0V?kMm=bqC`nZc-BP_9zGf_fm|ruR9MLRYY*E!H&if>#g9p7uoJ+&&{>W zj8pdy&O{-7h$)9<=cs>tvxjv~?!m9b;n4GLReSTYes))}kuJDAYD9pf_7;qVgT5?> z)Kpi7IFaY?8W#mi##?&8LlEa+O0@R4qNm2F`5<DBq}$kDsK%uf^7)h(fZIU1bTSvSwe#@>4^yWZxN4q{$K?CMFaKBgEL3B+JN< z%wU)iGj@X+yD{F|`~Cy(AJB8Tu4i1=%rp0#=U&b^-_N<9w)i)5pPd0N4kM$bTu(Hf zdirx^s4-SEi|T0@a9Hi8w*MiSRt9?Q zg552C_mB+Ze<^zlNEXWCl`@~rE+u7|X2B3eE$W z0w9*};ox<}xj=BR&bzJ8_onPmg5LMNUg7g7|D$B$rsnQ2dN=GdJDU&7ByR_r@w)I4 z{fs{m|8kEi=T*OC)Ng93tiyE>|M*k>sMqB{ld38MDW(<93%*{yZqjEZB{t}dP-U|& z{(W~qfJ`D*TQX;puEBv23r17>MYDa-FB4OdDdVRvt*8m1_fPSfU=A4zb8qj| zDeR@+M!C@q1uvi1Cz5hl!>MQW)fkL?u?a)R1Xh~-Zp*1ix6Fb}SuV}spf;d~U_X4P z+#iO)cvIuf<@LWbE-Opi+k9R9XlSoHY&t3DbcWKzd}gvqo}~j)KT`+#WuBHG>6)&& zrG@2% z`cT%rSc>HQPhmnd#K}14ftt3@y-T$E;$Hk$cqr>3?)jWo7ZZGr4%z zb8cK55g6b1a&WtHp^Y;^G_=69KrCyk|4%rn!mv<%Po@Ha)85M6-ZDFzmigil)3N)~ z7lLu%=i`PKxGaH8H}$$Yt9z!*QG)@1>ILmq&sHPuC<}_EC7%J{)^7M4x8YC=pNd|^ z-%1&{XYsmtQGoKcV8)g)&_SFpo@@@?>ghLoFx=h%O)R6?cNRGd!jCVXvEc9Dr-xY& z^~CuFe%@8Gdspm*M&{fYQ!@0?Y<3R{FuVogpGHPk%j!Z3Gp<+(M|8`7Y=_-_4vMQ6 ziI?{%E9*N;CkpZOn8smQS+ujgX^;8ELiyP`$=d69rS%;`J$d^9YEgOs7IU(Hp1B<= zg-x~(%)%o6%W|F~A$d^x(B^}gl?#t}(L&Iuj z2bKG&q?85m^2&VXv~j>_n4Z0;KyvMIOfb(_+d#A%z#&8TnQpa@J@n;5)zrawbu@zm ziy|WhPSCVUwWw?#$_I75}TZ^@eF$)?B{v za`fEY9{?+3b)c3?ieGk(rT=^l_Z=WNg}0tQg<}DD-io}qIExI7IZ$}hWTiTMSE+=S z4lfrO1htiJwu%$*ajiC>8eu%UIxi8BJBb*&nuc=iaz|OLL&OGCu;aGnRPNXeHJ~sY zIDP9sPJ0E`ruXxo2p!c`ysjPO9shA4 z;u~!kpl>J#$n|fOIjm&38R=$CLy4VzqK+kN0_(U;H^Oy)O@C?d5CqXX>w{yBm}=?cZ`gj(e+O1|df(9~ zzbzr4!E{~*p$0tC-@4#Q{7p9eNAb5Ur6nww)cRx`5*60)fSCT(6Y-xMvVM7EyEy{L zosOuJyY$UYkQ@h4*qB^)_@~&as3q(4*1NiOs(lEMOq<&Gpai=!srA+Ad4%R_amiS}jzTP3ThP(;&@Lsu5nkF6*D|zn0x0R6SBnmgQPpkcKbQ zV%ftUKg8U#;~m@{5pN1LBE2C?T+`YEy+K8@!Mi#rG*A}v#k?k-+&4Xtx?-YZ$OOrf zqrx7K(fXZ-9uJ~sCSdOE>t%o_U)|;uY`S(;%5j}%Ed~Vi<&WMMh=y*EvVgSIf z;hJzM^<61`+w8($_NBlL1ShQB`7y_H!rAW}-ZX3BZ~O5@Aw`~W$Wx{H_$DLwrfScE z+KH{77P-qCBclUWTQiwiHrvaH)}zfeLlOUly2z@ipz3R96Y9`l2X0+yYpb*5%F>DD zr?I`3iD#MEy$ zMN|r&5(eWUQ+6jeZ-~@f&y@5kPcKhG?@?}qTdUY47tl2PhQnngPP`4!d6RMLTa&Kz z+k3IV{ozrHubZ>>v?xJen@T(;r+mk9yw}=8u_k)TG-eDEU&-3x&0~kCsM^luRys9f<1?@ z$&vAHqSJ2Ymk|XdM95no_I7axE4U`2B*z8)YKo4utfk6`!zQQnmIO03eT8kSi4(|; z-6!Pkl+mKhkANYFFKS=uYG>sRgBP>4qpJ(1f#u0q8|Qgj(hT$Vg^47+n0RXudjWKD z;-I;%LXo#8tfWqKj&ubUcMrA{O#c9*l9(VU^nU0S?(5^>o4YqLIz;)l3iS$<&9Il0 zrW%;7cWu(P&rd>0Bi+^^zzxV;7URbv2CZ+6?;L{Q({6M_htY*jwmSJXt}>E8I$kb) z8OXXlD%=*iwOCrj7xW|TaP;K?^57qVZ)lG|MaA^9=K|2Aa4!vHhLy4M>%IW>lUGvW zO|G5#+@t&Xa{gv`}EyR}TD*ffmE zlnHl(Opp{bC(#@xn&JGJYBQ$cST20<4M-~b6tbz*z~O#-gHw}U#pLe+HHsB8Kd$eR zMYr_G-@WiKSG}4a{K}=yXYGIn-ccso1cEWaj#${A_hGwFi(exyU@JhLX`dJ!tR%Wi z<;gFLGp6gjd`4u{Ka9ExVd^hClBhcb8G8~nF%QDla?skQ5}xgN3loVdqrtNMyu7Y9 zp3mqvd|20;5y6Y%ZLjsrS2SEDHC|EO>CcFH67HS56aC0cvRWehaHxv;GamjIDWT1h zTUFBa)l%y{ZJx$A`b;PNM`Yd#ba<%5DwP>SluQlwfZIE zIW5FYC*OV3kfu7U$LXDq@*Tw>C5QikK#<{&iwfL;bFVNhL1xwLEo!bO8Oqjtq&z%OBt5P|De*BJ zpf%>N*GgQY4cS--aowpn5M`JEfwU9^*zBc~o@N5oIfA*?E|-|lqndw`Tjv9u@A`ve z-VY9ia3Wr}4aLp_Ea*$bA3+(L$JZpl*qkawA&@U!{FtpZ=l`@o8r+JsxJ#MO%`Fd6 zlXapxDSd+k{EAdGEG~L+PNQ!b;aZJ1*QHMD8hMguG7dxB5fDg}?E@tlqJynGD8vi} zbx0UZ8tR>cKjzuku+Gq%m%QfO_6DRcRf*}pQ8!2|P@@ULFD|LO+nnzYf!};@ljStk zgs7D0H3;|dpnyu=xZBfXfyvbt9=NK0xl_e=KZI@hSBj8^wOWE_Xg`4GwM3IP{@xB< z4sR{mhAjz4fz4wfk_3t06$?>h3Bj=G9oKz-2CN3#2VM1k2vX`Cr4IxoY_%d|!d1q8 zl&vYP>|!jyo+iY^^;ZRMwGFchx=L3NaL63kTll?bkn$It#6%P@CRmO)X@$EIIHM`9 z0(87auJheTaMxv_dx@2sf=dOS?vbc|lIi+@9`Wd6nejy(x`GyGDC7t*D7ebC0_56N zb>x{-xX6%jN(_#(S>vjdgiidw+OeufuCy~D-R$?`(FhFAa}@yGpjh^rucMj!19^eN zH45!_ci7&G0ONd4;!a&_rAsJyvxcqzhuZz z!vXD^WRR?D+?fM$^pnr}FJA36d_0r&j+gU)+Z3g5(VVCMN>-d*=(;*CMfW20m5+{pZ4v#y$0+@GxrcE`U|DE;@L44h1hTO zXL<(@O0(D`6Cn_YY#BHHtFsUAmj17|8*doos9x_MR2aUlI`1H-CTGdiqi}di*5;SZ z=OGIX*hcUS!kN#fxImdU}Igm`-UM2p~j0{;}w!A{R(_-0rPB;jQ5;}(02ufpo zg7#c-;TX?i0QfMT65WALiz{?Y$8$iE_pKFI_Z)3aMKIW~=gwjO<;H=lX@rKB%#WIr z+m|RDr($cWUWy$sjloArxAg@yns^JavIGuqEe%-&02dQ5AU^}T9({+qtydc58$)V@ z*dP$*mD*jnjcGEB2nNl&xg6Dyz`Xh=p&q_IzM(#_W|1v;FI<*&e)y)!Vg+K>p$lZ1 z%azM3E15K+JGdn&H?v9(91{~tf1nK6FByP%D?I-O1iadd!_U6~&=b%(;eNj6Mn}D^ zm_~M|3r*juIb+@}Pd2cL(tZWVoLp8SNPt<0*2mf|Ep=1*(@`zU;|YO4kAtR-QuzL) zby3q{#yD9+133UvXhwL^XJ%Ivrp3q9oGWx-K03BS;(gkyb$py(XM34dR2!cD7kfaL z;#@ahnk)HKmiQ6-t-WtNY#^HrVx^i~`y_gKI0i)%Fy3iO2cS;iaO)wD~}_ zE^OmJk*MR`r;BtS>HE#K6pT5H+beQ~FoS^^u^SM&2J zx^lJ3fBoBUP~e!uHQ*XrD4t#!^N`!yW~A=1nzjb{aiDrjH9s@=#5r17sP3>0uh-DbV{6zgJ6Z%AnP`x-1ofE27rs^KLy4L}C$vopzkFI6)gOowR%LAVv z5JD1YGyWxPxWK|-xu56t&k0s>v|IK(^3=(k>jV|Q>Y&HKJ5@?WX5(a}1?U{}JH)+q zjklLe420;u=Huvo>U{G^C&i>s@bFIRiW8_6v(j^Mw+nT*tNVOoJNt6T$AJ@I19~tg zMg?SFnzB69DN2ZTqtfx;oB_3eT_3d_>!X$ z`!oqXOMmu|%JuJNLfu?&n4gWE*)XUY&MuvO^j%JHn=Z(gWM;j_-XaAau@SX)PHJH^ zLe8<@HeLN{m8yD%ovnO_xF9f6fs0@M!;5NLaXcL_E16t_4G7o`k#EaJj6cxL)rQ*0XWyS!SZhUBTzY(lL)oESN{3+Mge6jA7rMONpxDZ=V z){!pljK!vUF)oTQg;k7gi<*x=f=&;vbiShPV@uySz}{r7n0)WRWVus;^lua7r_xtI zez85B;+2!M6N4c498T_BXN#)R0^fe7%l-<&+ewXZ%PXjCluPa{el*;n_w<>QS=R}g z3ZMn3pCAZ(kct>k(65aSnN@+JwVO_>)K9&fXDwkaHu7mp@BQpv+`_`CFX^LEWJ%*& zQu2R*l8C<6R4OxOas~)|qj@BKi(Vt?uf9$45T^t%e4-?3Vmzp)W=n#Z#pV27=Mojp~~sQn-QTRhjmJU6MTC;xWnzIh8Gj?M_Ty|O z6o2V_C$$IK+CBXfN>aR~6ZtwCg+(&Bo`3upjdKN>fRomD2>8**mO0q>Wx+UIY;T3` zryKm}9$nKe6Hx(wPC@AHA1A9lu^PAKQ*u8ELX`I>0^nFAFDYj4zxYyneE$SF0{T5T z__Y7`B)M-j2*l*j|GoJbSjiv|t@8)=Pf^-nIReLXaR0#Z_k(|pv)>Q?_ME??W4|B# zojU$bkNf@L@7nQqecbN{@Bcav`)2sNKK}o`$G+byd+cJaTe@u)H;49ZclVZ&E?V0u G`hNhkfC*m! literal 10932 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 Ai~s-t delta 279 zcmV+y0qFkn0;d9y8Gi!+006pI?LPnj0Blf9R7L;)|5U~J`u_j-{Qm)0oAmqtj@kOz z^8J|I`-|B6ht~R5kG+%I`zf~eztraM`u^bc{`dO)zUlmg)%x%C`E}6wSI77~z4s`y z^XT{f(eM4n?EUff`e@AgO~UxV*5*r_%Uhbj5N)LaQj!wdIe!-b004GLL_t&-)18pX z4udcZ1u-#g(~z+5JN*AY5?>Gw7hsN~k)CYt4dQDFxbs5*_&e@Hj)wtt(&JE<3Eq*D z;_gQLvqXoKv=I*gWqM9C(Tvu0>=?hTbOp9!6k6AF;>f6|S5%jGEE}TA9h)e`Yuiu8 d7)l?o1NFcJg%EAfM$P~L002ovPDHLkV1jKAn$Q3M diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 797d452e458972bab9d994556c8305db4c827017..ca21b6efdef93e032be16213e0878f4538338495 100644 GIT binary patch delta 985 zcmV;~119{I1LOyg8Gix*000A=FFF7K1FK0yK~#90?Urq9lT{Re&%N(H`?dFVTU*+# zA8XkrI5r3G7$33?&@d{7fQCe)SqL#KMsbNDvSxoO>=}jKPxtKM^aW z#1ev~l+7n4mJBSNDv^{}GVuRSoc3Q2Fa``5M(C{Fd;HAEs3!;jr553pjm5TF)7*?j z=<#vT{CRxf$S+nCzp=&?jgc>o4y_UOm5bG1wO{j$Pg4day>j#O7M(_c5VRg0YCAOy z0E?_oQO1U^|9=GlwmNfjqlgg12tC;LE3e9YW6RSRA$zaS;hJjN{_MZr_`4rRN{R$q zt?A=~eO;Hvip|3LE8|B_xN`X{g*@YOpZ~1g+i~bchcnQ2YS?1P+52v_)yMX6 zK!+<3j*uIH*>x)mlTw{bG>9=gK?*H0xxzFGKTcD&!2!Zx%4y~j*zNyEdU(; z-szvb`~J>lUSFuA>pCG!mYpV+X_7?AspeIgAAh~GT%Mi&>6iVJQ?n{X2FIb#nxA{Q zej#IU;wSg){phZSip?)rFhZ0vjM1Po5RFlzUTH2+sdHssUkD>qRjyrLu6+pW$*2%T))b2@v49O?sIyLVpl^2#)#vP z!+$mP$)P@kVAI+n01(U60HDszUXU*@wFnr;8*8oNw>7E9L1%y(%0b?y-0u@7XC9n|a1y$F^rU4%b!} zAOu2A*6uf#{_YK~Us=dla&ss2@k1z!KT;9%cOJeBqn_Z&bMEeeiJQ0XAq16+)eT!0 ziAyy9Jo0Ez>O(ITSTa)*DY0Z==~RiN#FBxfQzeoTgH-$tozZ^U>bzE;00000NkvXX Hu0mjfnFr+< delta 390 zcmV;10eSx92bKen8Gi!+006rnNM8T|0E$pdR7L;)|5U~J0au$Tw)XJ){%+3s=lA~6 z@BMVp`S<<*VaoaP`~U3u{%g(ou*=|m)B4`@{`33)?ezIj#Q6OF|6IuUF}e2O>+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$g49*ln*aa+ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 6ed2d933e1120817fe9182483a228007b18ab6ae..a532e76c224312bccd1f6d44b813e5e8b612a93f 100644 GIT binary patch literal 1799 zcmb7__dgp51Bb)e#5|M|7vo}7D^(3Gf-{;@v(ehLqE_vB(b6JSq@k!4T=lG))kuus zj5Y*OBQa`g4`+mr-4N$}|AYJC`+Wa`=kvU@wYC5X$O-@e03hO)sr~uu|8IPp=WHsr zRsjHbXb4l|yD@lrUVts0E<-8VC8JTf$tW-IB|eU%5LlOJxLC?<=&OfhT&hHU5%mSl zv^MM2m~TL-lCvasOjbMpI??%Yp+6amAb&IA{FNhos@$l#Pbbi8$}OmEan^vMhYl(8 z3h?V3-(@v?WX8@P;?KfqXR!zQD(TP+AQ!)JhUkC9$e_XlAwCZ31#$5ft~~j-*P}@Xsk>kr=ZN0M8DIp%LV-GIi!14Z2$LEgR_`{s97xUn|quqZ} zp1Qut0Y%$wJ3OU(kF(P-g2wL*sm12f?Z;*1jw^75SkEbX^{CpzG4?`_iwHLTm}J=4 zs5-$I|NZILixo5O@iFmWMvVro$sh#n^`mssHbqU~cr~q9vmPYjpyG_RY^*g;^!cJQ z#aMg0*fa>8#th|{wGeGn)|KfV`u_LTnqr9%e4R)832L#7f4`71C@rs& zeTsboXgCaEPUrY>^<@Ev9!*vM8uzMgFse%+|AnA>{vGTVZHwccf4I4<^SXb9(y?~UTsEgY>ZN*eC zPS3*+-|f?#WVvVO{(4aoDZ$wmRf0s`R%7)SeG-{P$^|g&sLg8}0%79rrzqsU?3N!1 z*03xO!C^oAoz;_KTJOO3th}BkSWSpTXJpV(Rf3XtWJp$Iv*_)~g%U$w-UPF#u`yho z{m)cY8^{ub*Z z%#Qf2N@>c9FD|TdLV-^hXBE94tA=_{Z4W0Tr){n7w3=6_Jw$5A3D$wKERlCCl9`{f-2Rw5Jf&GOGu{e|r*=(mS;n zB+OjOkBZ*>L0)kW-r;@z=q6=m&PcUadrA4gC z%R#vKz_Q%6Ql~TBTmaqzUg2vZgCMEbjfyO!##k#Wj*Cy!2fEf_$=r6~59P7bz_@1V zNXiT|eK`^mDLjx0AAo0Q0jlTDaS3dn^;4Hr#rj4I6rf78v?9n#`{SmXx^rIH|GmQv zLKC6ASgPXa6$DmNrrb^oqV)7@7E+emZ0LbdhcNHSX4j7HPug95tSA>N|HgdiWOVaA zWh=Y7#|R=lD2*e51mEyoUn;$)>9WUUf5BdM{`sJF`ZYCdOa0Lc*0H>%zQJ*+D=iY4 zUvChZ(_ab1_}(iy%%2DG0xVLGso$%3+8fErPDwxjIY}%`*_HRgav}B9q5D+Z5V~Br zaMR7vTUrG#svAYs(Z5lv>TTwCd)(vAYN?LERnGy-*UT2ZvlS7y;yh1NlYAs?w-!zFg?2r5|-Hp)deG-s5V*j}&6jO2C9UOPE zL}O$^;VAO2DO6j0?h#c2$1}T_5}ygijk1C@ugNr} z@6_o0qvM}}uDb^Bm+Rp@x8_z~x@>87Z3kZZrdVwD<0AN7hs@9uLcpe^->sDQqp0Kq z3k6r=?r^+^UBT<8nW-gNWLc01j==7H2}wh%oET7)pK)h}0LP zn6xK!)cX6A2h->B!X^fbjcO2WI~`?T=M5h=tui}njg)Ol>Gz|f`wP+2SLHsy93N?a zR>GFGJVW*+#bY z%bi|JP^fMvzf;C)S}VEbbmB0=8?aEAr}sragb-QzahM`_ox70UK=@^?ya4|k&-KAt ynWP9DJG`>zv9Tv2_aAfc|A2IzkrK|5g8};rR^cJVN2BL~10c+-P3ufNpZ^Q7NMxG; delta 435 zcmV;k0Zjgf4#ESF8Gi!+000dlDL?=K0EAFXR7L;)|5U~JDYo_jSDRPH_*uvJ?fL$s z;QQnD{*>GM-ShrilfUZt{^9lhT*&z4_x{-O{Rv#2V9EI}xb^~1iQe@7)8g(7UZ4B@ z|4zgB>+<*9=;^^)>d)H7pzGjuM>Jnezy3`@G2r z?{~a!Fj;`+8Gq^x2Jl;?IEV8)=fG217*|@)CCYgFze-x?IFODUIA>nWKpE+bn~n7; z-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGrXPIdeRE&b2Thd#{MtDK$ zpx*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{HY|nMnXd&JOovdH8X70)+jV0*M8X8Gix*007zX@K^u<0#HdrK~#90WBmXBKLZT_6DlCRaY0Tz4rUhKXDPRfia{xdN#5^!&P>8`sE zKR$l`IjUgC(-&XLI*<6KZ3;-=ykg5OCPu~?%P!AZdBxLSA%8!?Kv9OTvis5AQtuaQps;3)f%Yd-M^DdsrY^qp z>g~5F4UQ}7#l8Rj|9|!N8xterxofYa#d(;R7-uZM{Ql#Q&T<=BNuIxd z|9}7ahlh)mgPr-uk3WKZ9C{iei`HG&QWbJAmzlTb8h;}rLv6Mh7We-9_rEmNIM7|W zp!wkSJMaGd{WrDI!NNeIbLN?E-~Y^RbCwX{VrFLCf8xpapMR{3C3VzvSz2Cq)SnE=xnnJx3oqn9B(8v773Ot11d`urtF=V?-|3|Nm!TL`pUg?!W*4 zmu|SRe9NtOAAT?~GKTx8<;LkVFfuSPGC~xqVZqE6)=lqo0`vF#&*75!I`TIh@_d&k*HoEtQyV-iD z%Xz2D9EQRbeYh5Nr~y=#0ZD;^+vz0$004MNL_t(2&&|%+4u6C&2tZM$Wf&dzefR%A z(^3-?6X>hnCz2Ba@RH&`m!pgy?n@#@AuLYB&}Q)FGY`?vcft0!vht0Z@M&ZeNCWXh75gzRTXR8EE3oN&6 Q00000NkvXXt^-0~g68mrfB*mh diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index fe730945a01f64a61e2235dbe3f45b08f7729182..64f6f764d3b380ec4f5654214d336211d4e3fe39 100644 GIT binary patch literal 1757 zcmb7_`6Cky1II@>Ub&B~^t2~wxkBy19PwCl#puB%_njxkWQ#n74#P6>bh);-2gNhT z7A85ilx*di)F?B?%zfk;))HRtpYZ(f{e1s`&krBM1us_>rNc@906@jv4eqn|w*Q}^ z>>d-p@G}7b`KRu1C%m~h@-7WNTC+(0R=DR#39$A&Dz9{|Yw(X6EPbPY#mGC!%M($FL7RSQXdVRy z!G=67N~5`#9Br!GclA?Kl-s#;wgrw$?0Q z)Dcr~On}qEQb(A zOFhgkNqR@vCF(A@p5pL(^WRxeiz(@QljUd5^Yy3Vb)&O0Nmpe%-w%9f>p{~T>Fv!? zk;WFMb;3!Yv&&E%&Twry;bzdvUyRr(i8(cB`&TMYZ?uV%=*fG5ssH@rT1mh06dO03 z2*PYfweYm!937dv0?{g_ULH`rxXD}Hkok4id4!-E`_cdLzE0PZG;c43Dh5_}mP)Cj zz;nTfi*wx*SKGj`0D(e3_tJwQyE!nd47uIUVd4ZWdZ~^rwkO={gs;^U)F%fUj?ojfbb!0*315idP=WJ=>1`Ogmmb(AFKnS zC36#^%hD*fu$J0|(bQr1HRpq>Ha8~HcjhL%@6pj=CvHP_*4{7XCT&*aVRKno4Q3mN zZk&}!Rn_(eQOrV0#XV%U@|#Bh_9zA#lB(E%PIKwS)<)U-KH{*fw1_F8xR_Io>9!VU zr`90@9(hADotB3LM;1`gTIJ7^f9PsM$FB$%3ip(XCl?XVoDYpquRF}Q>nO7w7&G!W zH#YFIX8iSUu;X64)3~2Cxe2IdCOEY`Ie$#AZPHhJx-$XAjYL)aCa(lcJEX+USobM2 zlw0e)O`5I`t5w|JZF&rL{{CgJ%}eHu8U)h4)66O}O!!;KAL4;Ot#a79u&fz`PNns# zGV$7g#PeHX9RmPPicp=n6-^=BiES9w8Hc%wrgU!X_xC16paygt9qMyEe9rAdf5d zUJeo6-2tQ~*6x|eR>UxPykSeQyt;(YUDqM)$=*=Ge=t1Yx?Uvt!q|DVJ{XBY zAw>pR$$~ePd^7kv&z7gpihCc&J~g=9Hh^i}mwUm#L=MpWXzi}e+)>~fOEfcfCm5lV zuQzfkeWBrg2!{%X!^WCuy^Cr={c$(Cw1i*8LQ9uc#u*ESaJD*|%p`L@{glC&pJ#ih zNcP>V86>FAN=>v#=hClIt9%*}wWcASSzrWuf3|D<3P*Db)}g68ZBS(D@k*ifL-E(> zz`G@69b6e(K~VXz4%uEA!Ng-^%^V>;$wliEfk9)8cvf@@_@ zpY~a;&mIldC(hTU`F0Dg(ipLgRgqU*N=4gI=Qb=`DMnyctGjPt&@huuTXZXn0t3?* z`Q!U?XyYvgXB}NHrVUPFiPHSy_80ZRfrT}TkwqD3eq+kkH_MzkYBBxkgHmdrm-_qMY z_?KCXO%lP^SzfTl+xHxD;LMxuE9JWhOq-TB>ZsMUi zOP=xR3FFqU0)2|h?1SPX3!B<7p O1#oxvf>UAPxBmw*zF&v{ delta 447 zcmV;w0YLuU4bB6Q8Gi!+007oyx*7lg0G3cpR7L;)|5U~J0au$Tw)URh`@-w}Xw3Np zS)Ix4{k7)&ujKrh-TO(x_}20L&+q+}+xr1ilg8}*yXgGl_5RcF{f*iBEV%Z~-t4>5 ziGV;=={^- z?sLQGb)?A{hr$_!z8HbH7kH=vM0x-*R~t>;jsO4v^GQTOR7l6|(&r9>FcgO2dg?%> z;=sK?5%;?Pn^T7LL?Y$@5u?06NuIR*0?Yf$Hf5Afk+lM<^ch*jvO$sU*m9J?JI7eI zGFV6+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9R%3*Q+)t%S!MU_`id^@& zY{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&p6kME1_Z%?`+u)^el0!1<0sd p?Eyu!OMLDifi)An*I;?S-wj=m4RYIt!kPd8002ovPDHLkV1jH$^jiP` diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index 321773cd857a8a0f0c9c7d3dc3f5ff4fb298dc10..d34d39353c3b585fc6284bbe13207db8c90f741a 100644 GIT binary patch literal 2893 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 Zxpx7IC@PekH?;r&002ovPDHLkV1h%8YjXeq diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 797d452e458972bab9d994556c8305db4c827017..ca21b6efdef93e032be16213e0878f4538338495 100644 GIT binary patch delta 985 zcmV;~119{I1LOyg8Gix*000A=FFF7K1FK0yK~#90?Urq9lT{Re&%N(H`?dFVTU*+# zA8XkrI5r3G7$33?&@d{7fQCe)SqL#KMsbNDvSxoO>=}jKPxtKM^aW z#1ev~l+7n4mJBSNDv^{}GVuRSoc3Q2Fa``5M(C{Fd;HAEs3!;jr553pjm5TF)7*?j z=<#vT{CRxf$S+nCzp=&?jgc>o4y_UOm5bG1wO{j$Pg4day>j#O7M(_c5VRg0YCAOy z0E?_oQO1U^|9=GlwmNfjqlgg12tC;LE3e9YW6RSRA$zaS;hJjN{_MZr_`4rRN{R$q zt?A=~eO;Hvip|3LE8|B_xN`X{g*@YOpZ~1g+i~bchcnQ2YS?1P+52v_)yMX6 zK!+<3j*uIH*>x)mlTw{bG>9=gK?*H0xxzFGKTcD&!2!Zx%4y~j*zNyEdU(; z-szvb`~J>lUSFuA>pCG!mYpV+X_7?AspeIgAAh~GT%Mi&>6iVJQ?n{X2FIb#nxA{Q zej#IU;wSg){phZSip?)rFhZ0vjM1Po5RFlzUTH2+sdHssUkD>qRjyrLu6+pW$*2%T))b2@v49O?sIyLVpl^2#)#vP z!+$mP$)P@kVAI+n01(U60HDszUXU*@wFnr;8*8oNw>7E9L1%y(%0b?y-0u@7XC9n|a1y$F^rU4%b!} zAOu2A*6uf#{_YK~Us=dla&ss2@k1z!KT;9%cOJeBqn_Z&bMEeeiJQ0XAq16+)eT!0 ziAyy9Jo0Ez>O(ITSTa)*DY0Z==~RiN#FBxfQzeoTgH-$tozZ^U>bzE;00000NkvXX Hu0mjfnFr+< delta 390 zcmV;10eSx92bKen8Gi!+006rnNM8T|0E$pdR7L;)|5U~J0au$Tw)XJ){%+3s=lA~6 z@BMVp`S<<*VaoaP`~U3u{%g(ou*=|m)B4`@{`33)?ezIj#Q6OF|6IuUF}e2O>+>eB z?J{?+FLkYu+4_Uk`r_>LHF~flZm0oBf#vr8%vJ>#p~!KNvqGG3)|f1T_)ydeh8$vDceZ>oNbH^|*hJ*t?Yc*1`WB&W>VYVEzu) zq#7;;VjO)t*nbgf(!`OXJBr45rP>>AQr$6c7slJWvbpNW@KTwna6d?PP>hvXCcp=4 zF;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$g49*ln*aa+ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index 502f463a9bc882b461c96aadf492d1729e49e725..7c675f59922433fd0f9d680f5b17df54182cb183 100644 GIT binary patch literal 2660 zcmb`J`9Bkm1IFjdnX8-~=#cxKxk(f;lB<#{S2>qCTCNY~*g{A`hL&wajvOO%`#3gH z=B{Dn$h9H1So!w-A3i@k@8=(Qp4amrZrR;9$tTSR002%}TUp%x>$mgwF1#6;iCAK3n=tSl`oS5_sfz;3dhi~xq@t}I9FZWge- zwKC;(QGFe;6GpSXvx+bJ?4$#V9|hvTo0pm$Ulf#^p!3QuR7l?Xev)L9m_qSujT!w> zZ0rl{|l^N^2uPsWXQ_OflP22ntbV( z4huBBiZ`GjQ^9Em=(Hcz=KUA%Gh1oTFk2}JM*k`(tKUrV8o@+-g1Rt}c_cU>r!ply81BKI(@3|McviW z$pb;b6nF?P8;+7&SQ6ay5X9Ffc@a)%#O;P1KV%1hEsbq`bTds-?+p*dkxA zylJQyX31^cFcVFf}c|$syuRYb@KCV;uwt8{O)ZJRKv{s4vO6bfzgEXDYTKbor{C#}D@`_$0 zDp2}YBjJc^|%aZU`&P(fd9Xr0#BM zE^yObko1-@@)gp#ngx_{d6o))sC3?7_Wp0n+II_9gVPPi#Sl~C^xhf%(wS^pqnm0NuQda|LuX!vf1Yq2`OY2rYX z-8)%)I2!EWExi-f-&GcyJQeQ=U5vnCsTHBapBlsB(AhVDem*~Py0?_crB5%>hSI|E zAxg8qH*eST$UzQ`KrqWD{M(>AdOawN6yrTYnCQiP&b<+d zdZ%P>rw`p^teCRMR{!X9=)(30oEt)w#Bqr_=w`+^5$j|%G3f)X;RrF3) zVv6~Qu%~4KJ%d}W^GMNC4iA&zT@|6e*vsl}c|=Lh>r7t2KS4#8@1gtWGA+Cx5b_^R zuo5*y$HsM;TN4cdqqc#83^p^cd#!1OXG?_haA!b>KkOwQlPu&s89~9T?QOn71kNlD zWl4mNVJzoF4N9wMhOua8=g(#JSAr!sZ*F*9Bbj+72J%=C2+7CW)EySa=Ls#X)Qe16xePrLUx&vA*9r#!fp6xg((gFp$zyc zE?=E8N579Pe;dycx28#gutf%44rcT>~QbLajPMP2S@4#+{S;+kaaToA(39b z^NIJ|S10Xlz{H#OC4|Vn+6kA_xUc!Rke2ytit1wBIdppuV=120i(D%oMN7&|__tx`DyuHjXpGSCdRv^U9X zd(s^-C;D)Dd^_f`J%)}~xc0}vrugu1WMWV292&YNa~9^$sBe&n5gCdOeZ98}CE-mR zT0)>A2|G5W;=iM&%fdQ62gohmqKi!|m|DN=7h;0Qo71X^J)=3<=oCWJX|43{9|;DWt-rl&S&DygiUW59ML7zQ;_W)y)g?u1@Dm5xm$B zAyv_xe}3g4qe}X92xA7!s&?m?KM*x#O1_Eqml9vWAB}HdWrxo^a-{n%KRQ}@@FfhX z7u{BUW}A`jPg<^vrOm;NGUY&5i|@`b&9iZFE7I{h zT0#GfGUdrLasHCp&e3}cAlS}r${Wg>i7L1tMG>x2f3CbAdTfZf8Qg(+S1OV#@s9Ef8qZurT_o{ delta 572 zcmV-C0>k~}6v_mU8Gi!+006nq0-pc?0H{z*R7L;)|5U~JDYo_jSDXF*|5nEMy6F5^ z$M}8I`uzU?*Yf=uXr;5|{0m;6_Wb|A>ik^D_|)+I$?g3CSDK^3+eX0mD!2CP`2NN0 z{dLg!a?km&%iyTt`yiax0acdp`~T(l{$a`ZF1YpsRg(cvjDG_-U$Er-fz#Bw>2W$eUI#iU z)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G!hkE!s;%oku3;IwG3U^2k zw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn_j%}l|2+O?a>_7qq7W zmx(qtA2nV^tZlLpy_#$U%ZNx5;$`0L&dZ!@e7rFXPGAOup%q`|03hpdtXsPP0000< KMNUMnLSTZ7_%(F^ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index 0ec303439225b78712f49115768196d8d76f6790..bf02ee734cdeef59655cd0de508f8eca3b5d0fbc 100644 GIT binary patch literal 4359 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 CWM;OrUCbaZYjJo^$ z{nGILmD~Da$@upC{`C6(Ey4dPw)Pyc^>5DkHoEo!QcuK-Jwl-l}t(fQKv z{dds$V#@dygS`PvhX6is7Z+@*x-d;$ zb=6f@U3Jw}_s+W3%*+b9H_vS)-R#9?zrXogeLVI2We2RFTTAL}&3C8PS~<5D&v@UI z+`s*$wqQ=yd$laNUY-|ovcS9~n_90tFUdl#qq0tEUXle|k{Op|DHpSrbxEeZ5~$>o%>OSe z^=41qvh3LlC2xXzu+-2eQoqs1^L>7ylB$bCP);(%(xYZL1 cY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f>EQ%!~g&Q diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index 0ec303439225b78712f49115768196d8d76f6790..bf02ee734cdeef59655cd0de508f8eca3b5d0fbc 100644 GIT binary patch literal 4359 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 CWM;OrUCbaZYjJo^$ z{nGILmD~Da$@upC{`C6(Ey4dPw)Pyc^>5DkHoEo!QcuK-Jwl-l}t(fQKv z{dds$V#@dygS`PvhX6is7Z+@*x-d;$ zb=6f@U3Jw}_s+W3%*+b9H_vS)-R#9?zrXogeLVI2We2RFTTAL}&3C8PS~<5D&v@UI z+`s*$wqQ=yd$laNUY-|ovcS9~n_90tFUdl#qq0tEUXle|k{Op|DHpSrbxEeZ5~$>o%>OSe z^=41qvh3LlC2xXzu+-2eQoqs1^L>7ylB$bCP);(%(xYZL1 cY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f>EQ%!~g&Q diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index e9f5fea27c705180eb716271f41b582e76dcbd90..28dde0c8067ffdfe2c80a7ea8fc86cce9b7021a0 100644 GIT binary patch literal 6798 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 O0000DF9v5hRv!?O?O$-X7BCi~7<#xnLYXfPvd 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 delta 749 zcmV^8Gi!+008hwp&0-G0NzkcR7L;)|5U~J{Qmz~#`r0=_5oL$`~Cib z)cN`S|M>g;Ps8|O$@u8^{Z_{KM!@$5TAfS6_e#O{MZfpz`2O`0$7~@NRr(1{THzH08y3x{{PYM{eL;T_A9^tcF_4Sxb`8l z_9V3RD6;a(-0A^Pjsi!1?)d#Ap4Tk3^CP0(07;VpJ7@tgQ}z4)*zx@&yZwC9`DV-b z0ZobH_5IB4{KxD3;p_6%|f=bdFhu+F!zMZ2UFj;GUKX7tI;hv3{q~!*pMj75WP_c}> z6)IWvg5_yyg<9Op()eD1hWC19M@?_9_MHec{Z8n3FMs~w_u?Av_yNBmRxVYrpi(M% zFMP21g+hmocQp3ay*Su=qM6He)*HaaTg$E^sym`(t%s3A)x!M+vfjXUBEpK6X9%iU zU!u9jj3(-$dM~sJ%Liy#?|+!6IY#MTau#O6vVj`yh_7%Ni!?!VS+MPTO(_fG+1<#p zqu;A#i+_(N%CmVnYvb>#nA{>Q%3E`Ds7<~jZMywn@h2t>G-LrYy7?Dj{aZqhQd6tzX%(Trn+ z)HNF}%-F{rr=m*0{=a;s#YDL00000NkvXXu0mjfpw5`e diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 8953cba09064923c5daf2d37e7c3c836ccdd794b..95059f540729994fe589ca13e7458dcd2430a482 100644 GIT binary patch literal 5612 zcmdT|=OY_#7qzz9wPYEx=cnjqDhB{gf;YEgTW+KNzZRBWpD-V~u$sl9h=Hdd&; z^5*wvydR!>Ki_-Kx%b>BR!>Khmg+7Q0RaImR10i?&uRZX3L<<&<}~^c5HQz5!D=u3 zGWIMey%J^XxiD4o|6y7+#HS*G)FoO*}Vz4^hhA| z%*ki&Y-IX}{%IcJvUx;QY($iZ$orJqVTj=SPUBGVvv$K1U!g`f<0nCmnV0K+>47`b zr&G8Y9PR`Ogy@qbW~=_#St3mQO$bV1a0jygf2MF9tGjVP!8l-?7ClL$rkL0pC7+u8 zPZveM1On1nxuBJ^s4+~z!V6(~$K zs<*N}+uV4KIuOsSY#PV8Ln1Wh%4!P}n{0iqV+0?LQtqsR?l{DzQWEMQUoU*Szu^11 zem)b+S(}FljcNPy;4#rHISy!`Wi_hpJCqo@T``#!Ltvth2n+d>BF_Z0uA@kHBR5dV z$w7o!IRuJo3-8vGk-mQ>+iMjl7*}*0^iTL;^HY`^3yE3^0%*(5g*98$)W`a{L*wVL zv%&0V%UK1V572_1Y*Hd=gsrsMs~7wm(S-yd63NPa#I;J&dSBRFcci%8aU06qkd)E( z#lgW9h23p0ZAQx{>H0p}xvTdwF+_PWVZ-us_gGXVdv+^%^nRVnFyB1WAA!9$m+aevGv!9%CR>4tx*$5~f(UHdwo|ZqCSLefcBpD&$MqOl+ORjYm_J zgRV}`*Po9X$<272V}Ld3v<;5h8t=9vj8w4@ZsWz`s+Jd&Cm*FTs12ooPHx3fBityY4JMT-IZKhTA>xJg4F_Pp?{4I8B z3cx&@@YNLZOoFv8N(ow?Y<1c{Rmb)sH}57G=q`{e{F~9$c{?AXUI|c^(x25rfY;v* zc3d<{>Z(ZVOjx&&Ds@~2UdNJmcn7Y>=;20ifwxKA^hIU$_acI&OwiQye7R+uW`Lqn zfoD|_aoQX+ZN4-+_f0I$sTQ)n7JqG?uk*uzG6zhU7bfEI_eew@|P*Lm&)z0@|j>$+ge*DvOz+kh7Os znU&$vb>!la;{GQMH)^>1_Dh)}DieLH*G`V_uJsI})cGZ=>uj+M)Dh{X3ZE-}c{JOj z8>`9$i(~n`o?IU9c>2u>DQnzMx<#M(n#jh%SrPodW!iVkyJ1{nuIwq5_BFF-+$H^@ zMTCEInTd*%7Bd^HFBZ!t-Cu@QS#9%NN_g05xN#>Lyc`cxeBw&XRw&y0E>qphVyQQiKL8i$-7G`9 z=Uh!NaX9Qx2|ZNfttt1}>iPLdDtGB)g&=(Hl`5aIje*1Z`cVII!Dy9L8>m>6bX04~ z8;0{;Aq6X`My8#MHMTijQJTm8v{DDNuqvgTM3YM~6IRkNSU-s9QNxW!cWzI5=pTHS z5?6lkqWddwEyWG@z3SIK|1#2fb=I!b$fa;!C8jBM5q|gNl(6uqr(`+~^XR9n$SnIu zn+ngEJ8Y(BjcXS@_0H8{UyP=4GE$Ixy~BVnrsc z7k*DZ5~mgRE-x>}1s-Ur=QS>6*iLOA&8BLIIu5e4-{G#AM0E3JJwMm;W-C}^Rnbqh z+<%yTKGS1?&k2l6X9ERd&$|#8* z?lwm&pd{r_1IT_^zi4g$UKRZM3thaOCS}cCn9@V85AhX(adcMUpd_lq`1$}@Hed{) zz|Epl1Cm9j8%=__NQN;R`DlJa2`yV({hT7Bs8duB+a4gV{uFM)*)RJ(SU&}!mUQJL z$zd6I8pT`6;Qa41pV>*`((8p?9Zox5XLdeUg^X6eudqHcD)S;&(T>G9qZrsZw)FbX zTU+LIHikDk90|VJI~oO+pwAgDA)jW6yd;|33i<|F9oAm5nt0qysh<<$NZ8<_o7`~yi%~W(R zkGH|wjO75n#l?2>U0bUjoynhLe-w~r#yi&8Mi8$jAs(X4daj(_E%DZCsjV{Df+4N% zmTf9vc>VbJe6!#4#EA|4QdYK39-iTJDKV;{o!e5P35^>Ppl2MA#FS?J00WCL_B(oJ zyI{oXt*gc^&_n*5i-+{mT|y+}81fe&zJHZ%VXxS(bTt`wbKoj$z+}DbWu^-w=li{L zAU-z7O2XGj0I2i;$aGkvzg`zi;{`{IS|St?OK2Qm(1-|3U< z?%_o2J%Co#(2@(Nxx;6!i`k~fn80mZeVeFtXP(f08_14UxrCS@@3NV~NpJdMroF2DHUn0oyI%uD9Lh;y+k zBXy2y$Z2lTa6{N1%?dIwk9}H~ao4dT)~p01G5MFXJ$-F#nx@0p_bt*EH~{cN!Cp{j zk3Q!zZWdYlBeKJ?{@$*(AT z>RL2(J02u`e*3ZJHbmhgw6!c#r*iMJ#JF?(BSW*Hop+P7!X*nB6z7&$eHdfjQEDc0 zxnLK5qNZA%7vz=fEkZKBA~c)GhplFyP>MvpEv+ZoV(etVK#%YN0Mg9z_LSjI{}mbJ zij0O(Bk#`47!fy}5A6)jUI#8p|A8q@MHLw2?4_X0_4vI+f8kYzYLdtfzlTj>Qd1{f zSjUw{T&FM@M2OtW8Nann2Co`T&DuTAPTQPD&U|Dvja^E1jGa#D5o)~jk zX+_JRhpczn$)9{h%1ga_9>mVa$?11_26$ASfm9MITKLA_qfS)4P@%H9>lIL<6&CWC zJKRY#dSR@1YJ}|1xHly`gZN6-B0As5-Ej&+xvyqw;HZVj?#q8U6g9*o(bSUUo0whV z=CmhL*`zM3RYg~rki=bM$)y8C|G-ive_Wjy19)>Ri{I5l6Op6CLuzX^({4`g(h@fV zbQaNlQqHvQNFL|THWXfbaxtxt`J^vbSHIx#3;!x4%r}Q3KUdx{kKpT+V1}@7 z#KzZ~5*_m@W15y4MxLH-SQ_{31;F-V~ErsxxIR1CpMN6uie+IW?io2r5?9 zOx$8lV^YGtO;viBGm;y1BWfVN6MeWbJaqu zJZKyru2r?>?GBdfwenzXY2>}~K|+SHK1L(;0aI|-9*uOs8WA*u1XTZ{=j9*Ua%a-D z)Bbwey;N8c`=fpr=p-N-l24X)T&Wsri)^}(>uBd7J$XC|dyKJ&-r_Uj3v z67#q6$`6hcdLD`rs$A$uFP!g{M=nqxk6(=KR)+31a~J}u7sLk7Umi}qcB83dt0JB` z*zHtM3~DPZYm3Z!*O>z^>lFifSZ4CBJ}y#7DU;8PlmbWrA6tk0z8B}Ht`VUzJ#|}D zCWt4-7ycYi(Fe#GFn<9!?L!Om$TK_wG)}~!0j`W0R$kd`2*=kZ{)0QH#1g>kOCl{Z zjdz06)xqw~_&)X0#aDY0MRfo_BvN1Ql*-=h)uUu9TP_YNS5lHW6>=WXaUJ@l((*7R zAD+8bf9%sx-;v%BL$f%>S05XRPLhd{XYyQv0nRzJ*83CPQ>_Qye2ldzS)A#ak+y&2 zCM+4QpSRdk*LYBL^f_GgEFXo2c;8_>A|Ke8@3AlkiXzQ?GECb9zD=Rja~~T(oNXx9 zuj$xyx(>P zrFFE<_z^RB3v7)Rm{)KdejLxI40XA$zn?(nWS~L9a_N$9BUfg;V&}=bnzit8^LeAw zBkc$hr1tXlzypl_aS_!?ul+2Cwga9*%78pDgGEKPYVA?yztRrX;0h>HvL(oXkQ7-r zv&bn|xO{GXh%%$fX)B~oQk7syZNT^={k;F0J?~>UQs7oW3BH61fxs4g>guKj6go&Q z1A`+OhGO}?(H}KaKCAzdbWeLti}{l?SYyE2>6}d}B?g|99I=<~3_`37Izrb=wJRc~ z-tM^MpFYtGff2ydFDOIzmfORxfsMOzq#`9x!nl*(U6q{=*xn1wQVYmLFmcw8v2|DJ z6(aUV`zrW4KuHO^5BjV&bU+?qgd_7&s*YK5QvX5bW?33xE@ls|`y!A#DyClGJO|&! zy{sYEMTCuz^3k!pl_xd*V2v)s8|2K0H%di9Xosm65RmU~T2-TE#?7M3%8X1ysfB^t zcv*~@5(4JWTPYK zg7KAWEMnzIDJW5qP~8}BMk&^*4|Idtxy{o0SkwjU3VdZd&q9($mJRa$5{kc3Fl%XQM z{grlbs{j-UH<(p*K+*p26y2?O|JZDa@Z+S6}+un6IX*j(ngwIgqE5_6+!~ zy<*X{_%wUxs;BX=5wQ?d;*^}}hpNgUws7R9sAuonx@Lt2X0fCufO11kkPI7VI6 z(#2s#O+IMHTufe447+cp2}&A&ibWjeuk>QJ8pi0we8zMWnWph#uEI|?OaIhBj+o17 zW^hly+ZXPlQVKw;o{5PGjp(8S6`I)uv~T-NV|ULV`upP?w_$GN9`dN=-~0YwP|I1I zc1F&s;~Ocs!>PGF#leytcLh2&-dWOJw6U(=i96D9IGwR|yE;~mJz%tNbqNXfz+_L8 z?UruU-J+9_ha7`m8oPTH;vKEni>!A|a3btxr@BP#PTP!d=DIxdN)y{)#|kQhqxt68 zv)O)_DcO09ssA7^B?`YY{d?+Jh0UfwjNiLP1nmW)msAu(mc3A8yf-3Z$cNem0zdD0 z{qEYBPWkr>e{PE#H%w19zH-{Z`vN=2;X_Op{N|5MxvgQBfP)7AES9}z#Dac~FNL@h p_a6Eo3@|_;m;8U59#ns{jB1 delta 1217 zcmV;y1U~!hE6NFw8Gi!+001u>&=UXv0SHh`R7L;)|5U~JDYo_jSDRDC`1<|-SjPDL z{{Q{{{{H{}09Kk-#rR9Y_viNgVafPO!S|ls`uzR=MZfp^{QU=8od8La1X`Tr_Wmff z_5e$ivgQ1@=KMy$_g9a+`TPAle6cOJ_Fc#L7qIpvwDkd1mw$fK`6IOUD75rX!}mad zv(fMTE4=(Nx%L54lL1hVF1YpqNrC`FddBPg#_Ietx%Lrkq5wX00X1L{S%Cm9QY*av z#_Rh5PKy9KYTWbvz3BX9%J>0Hi1+#X{rLA{m%$Kamk?i!03AC38#Yrxs)5QTeTVRiEmz~MKK1WAjCw(c-JK6eox;2O)?`?TG`AHia671e^vgmp!llK zp|=5sVHk#C7=~epA~VAf-~%aPC=%Qw01h8mnSZ|p?tc*y?iZ$PR7_ceEIapF3KB14K0Pog?7wtd+^xgUCa_GVmlD z<^nU>AU_Yn-JU?NFdu|wf^bTCNf-wSBYVZltDdvGBln-YrbeGvJ!|s{#`gjN@yAMb zM6cjFz0eFECCsc|_8hTa3*9-JQGehksdoVP^K4m?&wpA~+|b%{EP5D-+7h)6CE; z*{>BP=GRR3Ea}xyV*bqry{l^J=0#DaC4ej;1qs8_by?H6Tr@7hl>UKNZt)^B&yl;)&oqzLg zcfZxpE?3k%_iTOVywh%`XVN-E#COl+($9{v(pqSQcrz=)>G!!3HeNxbXGM@})1|9g zG4*@(OBaMvY0P0_TfMFPh fVHk#CZX3S=^^2mI>Ux-D00000NkvXXu0mjfR;z>o diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index 0467bf12aa4d28f374bb26596605a46dcbb3e7c8..f3e47a129202f4bab67ac72035e47e9e1beace03 100644 GIT binary patch literal 6186 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 delta 1410 zcmV-|1%3LeFp3M18Gi!+002YCyxsr+0P|2xR7L;)|5U~JDYo_jSDRDB`2GI>{Qds= z{r_0T`1}6fwc-8!#-TGX}_?g)CZq4{k!uZ_g@DrQdoW0kI zu+W69&uN^)W`CK&06mMNcYMVF00dG=L_t(|+U?wHQxh>12H+Dm+1+fh+IF>G0SjJM zkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJTkdTm&kdTm&kdTm&kdP`e zsgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>VI$fQI%^ugM`#6By?GeadWcu z0gy9!D`m!H>Bd!JW(@avE8`|5XX(0PN}!8K>`dkavs;rHL+wy96QGNT=S@#7%xtlm zIW!++@*2zm-Py#Zr`DzqsLm!b{iskFNULSqE9A>SqHem>o31A%XL>S_5?=;V_i_y+ z(xxXhnt#r-l1Y8_*h`r?8Tr|)(RAiO)4jQR`13X0mx07C&p@KBP_2s``KEhv^|*8c z$$_T(v6^1Ig=#R}sE{vjA?ErGDZGUsyoJuWdJMc7Nb1^KF)-u<7q zPy$=;)0>vuWuK2hQhswLf!9yg`88u&eBbR8uhod?Nw09AXH}-#qOLLxeT2%C;R)QQ$Za#qp~cM&YVmS4i-*Fpd!cC zBXc?(4wcg>sHmXGd^VdE<5QX{Kyz$;$sCPl(_*-P2Iw?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF34$0Z;QO!J zOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUCUoZo%k(yku QW&i*H07*qoM6N<$f{$6v5dZ)H diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard index f2e259c..ddbd45c 100644 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -13,17 +13,12 @@ + - - - - - - - - - + @@ -31,7 +26,4 @@ - - - diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 937f7d6..2d5f600 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -47,6 +47,14 @@ + + NSLocationWhenInUseUsageDescription + KROW unlocks clock-in once you are at the venue, and sorts shifts by how far away they are. Location is only read while a shift is active. + NSCameraUsageDescription + KROW uses the camera to photograph your uniform items, ID and certificates. Nothing is uploaded until you tap send. + NSPhotoLibraryUsageDescription + KROW lets you pick an existing photo of your uniform items, ID or certificates instead of taking a new one. UIApplicationSupportsIndirectInputEvents UILaunchStoryboardName diff --git a/lib/core/permissions.dart b/lib/core/permissions.dart new file mode 100644 index 0000000..b214ec7 --- /dev/null +++ b/lib/core/permissions.dart @@ -0,0 +1,62 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:permission_handler/permission_handler.dart'; + +/// The three things the app asks for, in the order it asks. +enum AppPermission { location, notifications, camera } + +extension AppPermissionX on AppPermission { + Permission get _platform => switch (this) { + // While-in-use only: clock-in needs to know you are at the venue, and + // nothing here justifies background tracking. + AppPermission.location => Permission.locationWhenInUse, + AppPermission.notifications => Permission.notification, + AppPermission.camera => Permission.camera, + }; +} + +/// Thin wrapper over `permission_handler`. +/// +/// Exists so the rest of the app never imports the plugin directly, and so the +/// platforms it has no implementation for — web, desktop — degrade to "granted" +/// instead of throwing. On the web the browser prompts at the point of use +/// anyway, so asking up front is neither possible nor needed. +class PermissionService { + const PermissionService(); + + bool get _supported => + !kIsWeb && + (defaultTargetPlatform == TargetPlatform.android || + defaultTargetPlatform == TargetPlatform.iOS); + + /// Shows the platform dialog. Returns whether the permission ended up + /// granted — which is not the same as whether the user tapped Allow, since + /// it may already have been permanently denied. + Future request(AppPermission permission) async { + if (!_supported) return true; + final status = await permission._platform.request(); + return status.isGranted || status.isLimited; + } + + Future isGranted(AppPermission permission) async { + if (!_supported) return true; + final status = await permission._platform.status; + return status.isGranted || status.isLimited; + } + + /// True once the OS will no longer show a dialog, so the only way back is + /// the system settings page. + Future isPermanentlyDenied(AppPermission permission) async { + if (!_supported) return false; + return permission._platform.status.then((s) => s.isPermanentlyDenied); + } + + Future openSettings() async { + if (!_supported) return; + await openAppSettings(); + } +} + +final permissionServiceProvider = Provider( + (ref) => const PermissionService(), +); diff --git a/lib/core/router.dart b/lib/core/router.dart index dbbe6ea..d9e9b9c 100644 --- a/lib/core/router.dart +++ b/lib/core/router.dart @@ -10,6 +10,7 @@ import '../screens/onboarding_screens.dart'; import '../screens/pay_screens.dart'; import '../screens/profile_detail_screens.dart'; import '../screens/profile_screen.dart'; +import '../screens/requirements_screen.dart'; import '../screens/settings_screens.dart'; import '../screens/shift_detail_screen.dart'; import '../screens/shifts_screen.dart'; @@ -60,27 +61,30 @@ final router = GoRouter( _detailRoute('/phone', (_) => const PhoneScreen()), _detailRoute('/otp', (_) => const OtpScreen()), + // Branch order is the tab order, and it matches the prototype: Today sits + // in the middle, with the two browsing tabs to its left and the two + // personal ones to its right. KrowNavBar's items must stay in step. StatefulShellRoute.indexedStack( builder: (_, _, shell) => HomeShell(navigationShell: shell), branches: [ + StatefulShellBranch( + routes: [ + GoRoute(path: '/shifts', builder: (_, _) => const ShiftsScreen()), + ], + ), + StatefulShellBranch( + routes: [GoRoute(path: '/pay', builder: (_, _) => const PayScreen())], + ), StatefulShellBranch( routes: [ GoRoute(path: '/today', builder: (_, _) => const TodayScreen()), ], ), - StatefulShellBranch( - routes: [ - GoRoute(path: '/shifts', builder: (_, _) => const ShiftsScreen()), - ], - ), StatefulShellBranch( routes: [ GoRoute(path: '/clock', builder: (_, _) => const ClockScreen()), ], ), - StatefulShellBranch( - routes: [GoRoute(path: '/pay', builder: (_, _) => const PayScreen())], - ), StatefulShellBranch( routes: [ GoRoute(path: '/profile', builder: (_, _) => const ProfileScreen()), @@ -92,6 +96,12 @@ final router = GoRouter( _detailRoute( '/shift/:id', (state) => ShiftDetailScreen(shiftId: state.pathParameters['id']!), + routes: [ + _detailRoute( + 'requirements', + (state) => RequirementsScreen(shiftId: state.pathParameters['id']!), + ), + ], ), _detailRoute('/availability', (_) => const AvailabilityScreen()), _detailRoute('/timecards', (_) => const TimecardsScreen()), diff --git a/lib/screens/auth_screens.dart b/lib/screens/auth_screens.dart index c1afa04..431e6ec 100644 --- a/lib/screens/auth_screens.dart +++ b/lib/screens/auth_screens.dart @@ -7,8 +7,11 @@ import 'package:go_router/go_router.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; import '../core/theme.dart'; +import '../core/permissions.dart'; import '../state/session_controller.dart'; import '../widgets/common.dart'; +import 'today_screen.dart'; +import '../widgets/krow_nav_bar.dart'; /// Step 1 of 2: the mobile number a shift manager would text. class PhoneScreen extends ConsumerStatefulWidget { @@ -456,18 +459,92 @@ class _TodoRow extends StatelessWidget { } } +/// One permission ask, as the prototype words it. class _Permission { - const _Permission(this.icon, this.step, this.title, this.body, this.reasons); + const _Permission({ + required this.icon, + required this.step, + required this.title, + required this.body, + required this.reasons, + required this.allow, + required this.defer, + required this.permission, + }); final IconData icon; final String step; final String title; final String body; - final List reasons; + + /// Each reason as `(before, emphasis, after)` — the prototype bolds the part + /// that says what you actually get. + final List<(String, String, String)> reasons; + final String allow; + + /// The way out. Worded differently each time, per the prototype. + final String defer; + + /// What the OS is actually asked for when Allow is tapped. + final AppPermission permission; } -/// The three-step permission run. Each grant is recorded in the session so the -/// app knows what it is allowed to do later. +const _permissions = [ + _Permission( + icon: LucideIcons.mapPin, + step: 'Step 1 of 3', + title: 'Let KROW see where you are', + body: + 'Clock-in is locked until you are within 150 m of the venue. Without ' + 'location you cannot start a shift.', + reasons: [ + ('Unlocks ', 'clock in', ' when you arrive'), + ('Sorts shifts by ', 'distance from you', ''), + ('Only read ', 'while a shift is active', ''), + ], + allow: 'Allow location', + defer: 'Not now', + permission: AppPermission.location, + ), + _Permission( + icon: LucideIcons.bell, + step: 'Step 2 of 3', + title: 'Turn on notifications', + body: + 'Shift offers are first-come. If your phone is silent someone else ' + 'takes the shift.', + reasons: [ + ('', 'New shift offers', ' matched to you'), + ('', 'Clock-in reminders', ' 30 min before'), + ('', 'Pay alerts', ' when money lands'), + ], + allow: 'Turn on notifications', + defer: 'Maybe later', + permission: AppPermission.notifications, + ), + _Permission( + icon: LucideIcons.camera, + step: 'Step 3 of 3', + title: 'Camera and photos', + body: + 'Attire and document checks need a photo of the real item. Nothing is ' + 'uploaded until you tap send.', + reasons: [ + ('Photograph ', 'your uniform items', ''), + ('Capture ', 'ID and certificates', ''), + ('Nothing is stored ', 'on our servers unsent', ''), + ], + allow: 'Allow camera', + defer: 'Choose from library instead', + permission: AppPermission.camera, + ), +]; + +/// The three permission asks, each a sheet over the home screen. +/// +/// Shown this way rather than as full pages because that is what the worker +/// is actually looking at: the app is already there behind the scrim, so the +/// ask reads as a step before using it rather than another sign-up screen. class PermissionsScreen extends ConsumerStatefulWidget { const PermissionsScreen({super.key}); @@ -477,58 +554,9 @@ class PermissionsScreen extends ConsumerStatefulWidget { class _PermissionsScreenState extends ConsumerState { int _step = 0; + bool _asking = false; - static const _permissions = [ - _Permission( - LucideIcons.mapPin, - 'Step 1 of 3', - 'Let KROW see where you are', - 'Clock-in is locked until you are within 150 m of the venue. Without ' - 'location you cannot start a shift.', - [ - 'Unlocks clock in when you arrive', - 'Sorts shifts by distance from you', - 'Only read while a shift is active', - ], - ), - _Permission( - LucideIcons.bell, - 'Step 2 of 3', - 'Turn on notifications', - 'Shift offers are first-come. If your phone is silent someone else takes ' - 'the shift.', - [ - 'New shift offers matched to you', - 'Clock-in reminders 30 min before', - 'Pay alerts when money lands', - ], - ), - _Permission( - LucideIcons.camera, - 'Step 3 of 3', - 'Camera and photos', - 'Attire and document checks need a photo of the real item. Nothing is ' - 'uploaded until you tap send.', - [ - 'Photograph your uniform items', - 'Capture ID and certificates', - 'Nothing is stored on our servers unsent', - ], - ), - ]; - - void _advance({required bool granted}) { - final notifier = ref.read(sessionProvider.notifier); - if (granted) { - switch (_step) { - case 0: - notifier.grantLocation(); - case 1: - notifier.grantNotifications(); - case 2: - notifier.grantCamera(); - } - } + void _next() { if (_step == _permissions.length - 1) { context.go('/today'); } else { @@ -536,115 +564,267 @@ class _PermissionsScreenState extends ConsumerState { } } + /// Hands off to the operating system's own dialog. Whatever it answers is + /// recorded, and the run continues either way — a refused permission is a + /// smaller problem than a worker stuck on a sign-up step. + Future _allow(_Permission permission) async { + if (_asking) return; + setState(() => _asking = true); + final granted = await ref + .read(sessionProvider.notifier) + .request(permission.permission); + if (!mounted) return; + setState(() => _asking = false); + + if (!granted) { + final blocked = await ref + .read(permissionServiceProvider) + .isPermanentlyDenied(permission.permission); + // Once the OS stops showing the dialog, tapping Allow again does + // nothing — the only way back is the system settings page. + if (blocked && mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: const Text('Turn this on in system settings'), + action: SnackBarAction( + label: 'Open', + textColor: KrowPalette.yellow, + onPressed: ref.read(permissionServiceProvider).openSettings, + ), + ), + ); + } + } + if (mounted) _next(); + } + @override Widget build(BuildContext context) { - final p = _permissions[_step]; + final permission = _permissions[_step]; + return Scaffold( - body: SafeArea( - child: Padding( - padding: const EdgeInsets.fromLTRB(22, 24, 22, 16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - // The copy scrolls if it has to; the actions stay pinned, so a - // short screen or a large text scale can never push them off. - Expanded( - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 60, - height: 60, - decoration: BoxDecoration( - color: KrowPalette.blue, - borderRadius: BorderRadius.circular(18), - ), - child: Icon(p.icon, size: 27, color: Colors.white), + backgroundColor: KrowPalette.sage, + body: Stack( + children: [ + // The app itself, already built, sitting behind the ask. + const IgnorePointer( + child: Scaffold( + body: TodayScreen(), + bottomNavigationBar: KrowNavBar( + items: [ + KrowNavItem(icon: LucideIcons.briefcase, label: 'Shifts'), + KrowNavItem(icon: LucideIcons.wallet, label: 'Pay'), + KrowNavItem(icon: LucideIcons.house, label: 'Today'), + KrowNavItem(icon: LucideIcons.clock, label: 'Clock'), + KrowNavItem(icon: LucideIcons.user, label: 'Profile'), + ], + currentIndex: 2, + onSelect: _ignoreTap, + ), + ), + ), + const ModalBarrier(color: Color(0x8F101A14), dismissible: false), + Align( + alignment: Alignment.bottomCenter, + child: _PermissionSheet( + permission: permission, + busy: _asking, + onAllow: () => _allow(permission), + onDefer: _next, + ), + ), + ], + ), + ); + } + + static void _ignoreTap(int _) {} +} + +class _PermissionSheet extends StatelessWidget { + const _PermissionSheet({ + required this.permission, + required this.busy, + required this.onAllow, + required this.onDefer, + }); + + final _Permission permission; + final bool busy; + final VoidCallback onAllow; + final VoidCallback onDefer; + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), + ), + child: SafeArea( + top: false, + child: ConstrainedBox( + // Scrolls rather than overflows if the copy outgrows the screen. + constraints: BoxConstraints( + maxHeight: MediaQuery.sizeOf(context).height * 0.86, + ), + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.fromLTRB(22, 12, 22, 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: [ + Center( + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: const Color(0xFFCFDDD4), + borderRadius: BorderRadius.circular(2), ), - SectionLabel(p.step), - Text( - p.title, - style: const TextStyle( - fontSize: 25, - fontWeight: FontWeight.w700, - height: 1.15, - letterSpacing: -0.9, - ), - ), - const SizedBox(height: 10), - Text( - p.body, - style: const TextStyle( - fontSize: 14, - height: 1.55, - color: KrowPalette.mute, - ), - ), - const SizedBox(height: 18), - for (final reason in p.reasons) - Padding( - padding: const EdgeInsets.only(bottom: 12), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 20, - height: 20, - // Nudged to sit on the first line's optical - // centre, so wrapped reasons stay top-aligned. - margin: const EdgeInsets.only(top: 1), - decoration: BoxDecoration( - color: KrowPalette.blueTint, - borderRadius: BorderRadius.circular(7), - ), - child: const Icon( - LucideIcons.check, - size: 12, - color: KrowPalette.blue, - ), - ), - const SizedBox(width: 11), - Expanded( - child: Text( - reason, - style: const TextStyle( - fontSize: 13, - height: 1.45, - color: KrowPalette.mute, - ), - ), - ), - ], - ), - ), - ], + ), ), - ), + const SizedBox(height: 20), + // Aligned rather than stretched: the surrounding column + // stretches its children so the buttons fill the sheet, and + // that would pull this 60px tile across the whole width. + Align( + alignment: Alignment.centerLeft, + child: Container( + width: 60, + height: 60, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + gradient: const LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [Color(0xFF4A69C6), KrowPalette.blue], + ), + boxShadow: [ + BoxShadow( + color: KrowPalette.blue.withValues(alpha: 0.4), + blurRadius: 24, + offset: const Offset(0, 12), + ), + ], + ), + child: Icon( + permission.icon, + size: 27, + color: Colors.white, + ), + ), + ), + SectionLabel(permission.step), + Text( + permission.title, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.w700, + height: 1.15, + letterSpacing: -0.7, + ), + ), + const SizedBox(height: 10), + Text( + permission.body, + style: const TextStyle( + fontSize: 14, + height: 1.55, + fontWeight: FontWeight.w500, + color: KrowPalette.mute, + ), + ), + const SizedBox(height: 14), + for (final (before, emphasis, after) in permission.reasons) + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: _Reason( + before: before, + emphasis: emphasis, + after: after, + ), + ), + const SizedBox(height: 10), + FilledButton( + onPressed: busy ? null : onAllow, + child: Text(permission.allow), + ), + TextButton( + onPressed: onDefer, + style: TextButton.styleFrom( + minimumSize: const Size.fromHeight(44), + foregroundColor: KrowPalette.mute, + ), + child: Text(permission.defer), + ), + ], ), - const SizedBox(height: 16), - FilledButton( - onPressed: () => _advance(granted: true), - child: Text(switch (_step) { - 0 => 'Allow location', - 1 => 'Turn on notifications', - _ => 'Allow camera', - }), - ), - const SizedBox(height: 4), - // Full width so the secondary action shares the primary's edges - // rather than hugging the left. - TextButton( - onPressed: () => _advance(granted: false), - style: TextButton.styleFrom( - minimumSize: const Size.fromHeight(44), - ), - child: const Text('Not now'), - ), - ], + ), ), ), ), ); } } + +class _Reason extends StatelessWidget { + const _Reason({ + required this.before, + required this.emphasis, + required this.after, + }); + + final String before; + final String emphasis; + final String after; + + @override + Widget build(BuildContext context) { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 20, + height: 20, + margin: const EdgeInsets.only(top: 1), + decoration: BoxDecoration( + color: KrowPalette.blueTint, + borderRadius: BorderRadius.circular(7), + ), + child: const Icon( + LucideIcons.check, + size: 11, + color: KrowPalette.blue, + ), + ), + const SizedBox(width: 11), + Expanded( + child: Text.rich( + TextSpan( + children: [ + TextSpan(text: before), + TextSpan( + text: emphasis, + style: const TextStyle( + fontWeight: FontWeight.w600, + color: KrowPalette.ink, + ), + ), + TextSpan(text: after), + ], + ), + style: const TextStyle( + fontSize: 13, + height: 1.45, + fontWeight: FontWeight.w500, + color: KrowPalette.mute, + ), + ), + ), + ], + ); + } +} diff --git a/lib/screens/clock_screen.dart b/lib/screens/clock_screen.dart index 6b82c8a..2de1285 100644 --- a/lib/screens/clock_screen.dart +++ b/lib/screens/clock_screen.dart @@ -11,9 +11,13 @@ import '../core/theme.dart'; import '../models/shift.dart'; import '../state/session_controller.dart'; import '../state/shifts_controller.dart'; +import '../state/timecards_controller.dart'; import '../widgets/collapsing_header.dart'; import '../widgets/common.dart'; +import '../widgets/glass_segments.dart'; +import '../widgets/krow_wordmark.dart'; import '../widgets/shift_card.dart'; +import 'timecard_screens.dart'; /// Clock in and out. The button unlocks 30 minutes before the shift starts, /// and only once the worker is at the venue. @@ -24,7 +28,11 @@ class ClockScreen extends ConsumerStatefulWidget { ConsumerState createState() => _ClockScreenState(); } +/// The two halves of the Clock tab, as the prototype splits them. +enum _ClockTab { today, timecards } + class _ClockScreenState extends ConsumerState { + _ClockTab _tab = _ClockTab.today; Timer? _ticker; /// Stands in for the geofence check while there is no GPS plugin wired up. @@ -66,56 +74,58 @@ class _ClockScreenState extends ConsumerState { return Scaffold( body: CustomScrollView( slivers: [ - // Already compact, so it pins at one height rather than collapsing. - // Sized with headroom over the 58px of content, so a larger system - // text scale does not push it over. + // Pins at one height: the two segments have to stay reachable, so + // there is nothing worth collapsing away. Sized with headroom for a + // large system text scale, which the eyebrow and title both grow with. KrowSliverHeader( - expandedHeight: 96, - collapsedHeight: 96, + expandedHeight: 170, + collapsedHeight: 170, builder: (context, t) => Padding( padding: const EdgeInsets.fromLTRB(20, 8, 20, 16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - Fmt.dayFull(DateTime.now()).toUpperCase(), - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontSize: 9.5, - letterSpacing: 1.5, - fontWeight: FontWeight.w600, - color: Colors.white.withValues(alpha: 0.5), - ), - ), - const SizedBox(height: 4), - const Text( - 'Clock in', - style: TextStyle( - fontSize: 27, - fontWeight: FontWeight.w700, - letterSpacing: -0.9, - color: Colors.white, - ), - ), - ], + HeaderBrandLine( + // The caption reports whichever half you are looking at. + trailing: HeaderEyebrow( + _tab == _ClockTab.today + ? Fmt.dayFull(DateTime.now()) + : '${Fmt.monthYear(DateTime.now())} · ' + '${Fmt.duration(ref.watch(hoursLoggedProvider))} logged', ), ), - HeaderIconButton( - icon: LucideIcons.fileText, - tooltip: 'Timecards', - onPressed: () => context.push('/timecards'), + const SizedBox(height: 8), + const Text( + 'Clock in', + style: TextStyle( + fontSize: 27, + fontWeight: FontWeight.w700, + letterSpacing: -0.9, + color: Colors.white, + ), + ), + const SizedBox(height: 14), + GlassSegments<_ClockTab>( + segments: const [ + (_ClockTab.today, 'Today'), + (_ClockTab.timecards, 'Timecards'), + ], + value: _tab, + onChanged: (v) => setState(() => _tab = v), ), ], ), ), ), - if (shift == null) + if (_tab == _ClockTab.timecards) + SliverPadding( + padding: const EdgeInsets.fromLTRB(20, 18, 20, 28), + sliver: SliverList.list( + children: timecardItems(ref.watch(timecardsProvider)), + ), + ) + else if (shift == null) const SliverPadding( padding: EdgeInsets.fromLTRB(20, 40, 20, 20), sliver: SliverToBoxAdapter( @@ -168,12 +178,6 @@ class _ClockScreenState extends ConsumerState { shift: shift, onTap: () => context.push('/shift/${shift.id}'), ), - const SizedBox(height: 14), - OutlinedButton.icon( - onPressed: () => context.push('/timecards'), - icon: const Icon(LucideIcons.fileText, size: 18), - label: const Text('View timecards'), - ), ], ), ), diff --git a/lib/screens/compliance_screens.dart b/lib/screens/compliance_screens.dart index 075b6a8..ac480ad 100644 --- a/lib/screens/compliance_screens.dart +++ b/lib/screens/compliance_screens.dart @@ -1,12 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; +import 'package:image_picker/image_picker.dart'; import 'package:intl/intl.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; import '../core/theme.dart'; +import '../core/permissions.dart'; import '../models/compliance.dart'; import '../state/compliance_controller.dart'; +import '../state/session_controller.dart'; import '../widgets/common.dart'; IconData _sectionIcon(ComplianceSection s) => switch (s) { @@ -299,8 +303,12 @@ class ComplianceDetailScreen extends ConsumerWidget { final ComplianceSection section; final String itemId; + /// Picks a real file: the camera for a new photo, the gallery for an + /// existing one. Camera access is requested first, because image_picker + /// surfaces a refusal as a plain null and the worker would be left tapping a + /// button that silently does nothing. Future _upload(BuildContext context, WidgetRef ref) async { - final choice = await showModalBottomSheet( + final source = await showModalBottomSheet( context: context, showDragHandle: true, builder: (context) => SafeArea( @@ -311,29 +319,67 @@ class ComplianceDetailScreen extends ConsumerWidget { leading: const Icon(LucideIcons.camera), title: const Text('Take a photo'), subtitle: const Text('It has to be the real item, worn by you'), - onTap: () => Navigator.pop(context, 'camera'), + onTap: () => Navigator.pop(context, ImageSource.camera), ), ListTile( leading: const Icon(LucideIcons.image), title: const Text('Choose from library'), - onTap: () => Navigator.pop(context, 'library'), - ), - ListTile( - leading: const Icon(LucideIcons.file), - title: const Text('Pick a PDF'), - onTap: () => Navigator.pop(context, 'file'), + onTap: () => Navigator.pop(context, ImageSource.gallery), ), ], ), ), ); - if (choice == null || !context.mounted) return; + if (source == null || !context.mounted) return; - final ext = choice == 'file' ? 'pdf' : 'jpg'; - final slug = itemId.toLowerCase(); + if (source == ImageSource.camera) { + final granted = await ref + .read(sessionProvider.notifier) + .request(AppPermission.camera); + if (!context.mounted) return; + if (!granted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: const Text('Camera access is off'), + action: SnackBarAction( + label: 'Settings', + onPressed: ref.read(permissionServiceProvider).openSettings, + ), + ), + ); + return; + } + } + + final XFile? picked; + try { + picked = await ImagePicker().pickImage( + source: source, + // Documents only need to be legible, and a full-resolution phone + // photo is a slow upload on a venue's wifi. + maxWidth: 2000, + imageQuality: 85, + ); + } on PlatformException catch (error) { + if (!context.mounted) return; + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text('Could not open: ${error.code}'))); + return; + } + // Null means the picker was dismissed, which is not an error. + if (picked == null || !context.mounted) return; + + final size = await picked.length(); + if (!context.mounted) return; ref .read(complianceProvider.notifier) - .uploadFile(section, itemId, 'krow-$slug.$ext'); + .uploadFile( + section, + itemId, + picked.name, + meta: '${(size / 1024 / 1024).toStringAsFixed(1)} MB · just now', + ); ScaffoldMessenger.of( context, ).showSnackBar(const SnackBar(content: Text('Uploaded - sent for review'))); diff --git a/lib/screens/home_shell.dart b/lib/screens/home_shell.dart index c7207a7..984b98d 100644 --- a/lib/screens/home_shell.dart +++ b/lib/screens/home_shell.dart @@ -27,15 +27,16 @@ class HomeShell extends ConsumerWidget { i, initialLocation: i == navigationShell.currentIndex, ), + // Must stay in the same order as the shell branches in the router. items: [ - const KrowNavItem(icon: LucideIcons.house, label: 'Today'), const KrowNavItem(icon: LucideIcons.briefcase, label: 'Shifts'), + const KrowNavItem(icon: LucideIcons.wallet, label: 'Pay'), + const KrowNavItem(icon: LucideIcons.house, label: 'Today'), KrowNavItem( icon: LucideIcons.clock, label: 'Clock', showDot: needsReview, ), - const KrowNavItem(icon: LucideIcons.wallet, label: 'Pay'), const KrowNavItem(icon: LucideIcons.user, label: 'Profile'), ], ), diff --git a/lib/screens/onboarding_screens.dart b/lib/screens/onboarding_screens.dart index c9a9b9f..85c1741 100644 --- a/lib/screens/onboarding_screens.dart +++ b/lib/screens/onboarding_screens.dart @@ -2,33 +2,13 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:go_router/go_router.dart'; -import 'package:lucide_icons_flutter/lucide_icons.dart'; import '../core/theme.dart'; import '../state/session_controller.dart'; - -/// Brand wordmark. Drawn rather than shipped as an asset so it tints cleanly -/// on either ground. -class KrowWordmark extends StatelessWidget { - const KrowWordmark({super.key, this.size = 34, this.color}); - - final double size; - final Color? color; - - @override - Widget build(BuildContext context) { - return Text( - 'KROW', - style: TextStyle( - fontSize: size, - fontWeight: FontWeight.w800, - letterSpacing: size * 0.06, - color: color ?? KrowPalette.yellow, - ), - ); - } -} +import '../widgets/common.dart'; +import '../widgets/krow_wordmark.dart'; /// Splash. Routes on to onboarding, sign-in or the app depending on how far /// the worker got last time. @@ -57,10 +37,11 @@ class _SplashScreenState extends ConsumerState { void _go() { if (!mounted) return; final s = ref.read(sessionProvider); - if (!s.onboardingSeen) { + // Onboarding sits between the splash and the welcome screen for anyone + // who is not signed in, rather than only on a first install — the flow is + // splash, onboarding, welcome, mobile number. + if (!s.signedIn) { context.go('/onboarding'); - } else if (!s.signedIn) { - context.go('/welcome'); } else if (!s.permissionsDone) { context.go('/permissions'); } else { @@ -76,7 +57,7 @@ class _SplashScreenState extends ConsumerState { child: Column( mainAxisSize: MainAxisSize.min, children: [ - const KrowWordmark(size: 46), + const KrowWordmark(width: 196), const SizedBox(height: 22), Text( 'WORK · HIRE · ELEVATE', @@ -107,38 +88,177 @@ class _SplashScreenState extends ConsumerState { } class _Slide { - const _Slide(this.eyebrow, this.title, this.body, this.icon); + const _Slide({ + required this.eyebrow, + required this.title, + required this.body, + required this.art, + required this.preview, + }); final String eyebrow; final String title; final String body; - final IconData icon; + + /// The scene behind the copy, taken from the prototype's own artwork. + final String art; + + /// A sample of the thing the slide is describing, floated over the artwork. + /// Each one is a real piece of the app rather than an illustration. + final Widget preview; } const _slides = [ _Slide( - 'Find work', - 'Shifts that fit around your week.', - 'Browse open hospitality shifts near you, filtered to the hours you said ' - 'you can work.', - LucideIcons.search, + eyebrow: 'Find work', + title: 'Shifts that fit around your week.', + body: + 'Browse open hospitality shifts near you, filtered to the hours you ' + 'said you can work.', + art: 'assets/art/onboarding_find_work.svg', + preview: _PreviewCard( + accent: KrowPalette.yellow, + title: r'Barista · $21/hr', + subtitle: 'Zoox · tonight, 5:50 PM', + ), ), _Slide( - 'Know your pay', - 'See the money before you say yes.', - 'Every shift shows the hourly rate and the total. No surprises on the ' + eyebrow: 'Know your pay', + title: 'See the money before you say yes.', + body: + 'Every shift shows the hourly rate and the total. No surprises on the ' 'payslip.', - LucideIcons.banknote, + art: 'assets/art/onboarding_know_your_pay.svg', + preview: _PreviewRow( + label: 'Regular · 5h 48m', + trailing: Text( + r'$121.80', + style: TextStyle( + fontSize: 15, + fontWeight: FontWeight.w700, + letterSpacing: -0.5, + color: KrowPalette.ink, + ), + ), + ), ), _Slide( - 'Get paid', - 'Clock in on site. Paid on schedule.', - 'Tap in when you arrive, tap out when you leave. Timecards submit ' + eyebrow: 'Get paid', + title: 'Clock in on site. Paid on schedule.', + body: + 'Tap in when you arrive, tap out when you leave. Timecards submit ' 'themselves.', - LucideIcons.clock, + art: 'assets/art/onboarding_get_paid.svg', + preview: _PreviewRow(label: 'Paid 26 Aug', trailing: StatusChip('On time')), ), ]; +/// A miniature shift card, matching the one used throughout the app: identity +/// rail down the side, role and venue stacked. +class _PreviewCard extends StatelessWidget { + const _PreviewCard({ + required this.accent, + required this.title, + required this.subtitle, + }); + + final Color accent; + final String title; + final String subtitle; + + @override + Widget build(BuildContext context) { + return Container( + width: 218, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(14), + boxShadow: [ + BoxShadow( + color: KrowPalette.blueDeep.withValues(alpha: 0.35), + blurRadius: 24, + offset: const Offset(0, 10), + ), + ], + ), + clipBehavior: Clip.antiAlias, + child: Row( + children: [ + Container(width: 6, height: 62, color: accent), + Expanded( + child: Padding( + padding: const EdgeInsets.fromLTRB(12, 11, 12, 11), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + title, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + letterSpacing: -0.3, + ), + ), + const SizedBox(height: 2), + Text( + subtitle, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 11.5, + color: KrowPalette.mute, + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} + +/// A single floated row: a label and a figure or status. +class _PreviewRow extends StatelessWidget { + const _PreviewRow({required this.label, required this.trailing}); + + final String label; + final Widget trailing; + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 11), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(14), + boxShadow: [ + BoxShadow( + color: KrowPalette.blueDeep.withValues(alpha: 0.35), + blurRadius: 24, + offset: const Offset(0, 10), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + label, + style: const TextStyle(fontSize: 12.5, fontWeight: FontWeight.w600), + ), + const SizedBox(width: 14), + trailing, + ], + ), + ); + } +} + class OnboardingScreen extends ConsumerStatefulWidget { const OnboardingScreen({super.key}); @@ -156,10 +276,7 @@ class _OnboardingScreenState extends ConsumerState { super.dispose(); } - void _finish() { - ref.read(sessionProvider.notifier).completeOnboarding(); - context.go('/welcome'); - } + void _finish() => context.go('/welcome'); @override Widget build(BuildContext context) { @@ -175,7 +292,7 @@ class _OnboardingScreenState extends ConsumerState { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - const KrowWordmark(size: 20), + const KrowWordmark(width: 66), TextButton( onPressed: _finish, style: TextButton.styleFrom( @@ -194,20 +311,37 @@ class _OnboardingScreenState extends ConsumerState { onPageChanged: (i) => setState(() => _page = i), itemBuilder: (context, i) { final slide = _slides[i]; - return Center( - child: Container( - width: 190, - height: 190, - decoration: BoxDecoration( - color: Colors.white.withValues(alpha: 0.10), - shape: BoxShape.circle, + // Artwork behind, with a real piece of the app floated over + // the bottom-right of it — the prototype's hero layout. + return Stack( + fit: StackFit.expand, + children: [ + // Cropped rather than letterboxed, so the scene fills the + // hero on any aspect ratio the way the prototype does. + SvgPicture.asset( + slide.art, + fit: BoxFit.cover, + alignment: Alignment.topCenter, ), - child: Icon( - slide.icon, - size: 76, - color: KrowPalette.yellow, + // Veil: darkens the foot of the artwork so the floated + // card and the sheet below it keep their edges. + const Positioned( + left: 0, + right: 0, + bottom: 0, + height: 140, + child: DecoratedBox( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [Color(0x0022366F), Color(0xF022366F)], + ), + ), + ), ), - ), + Positioned(right: 20, bottom: 24, child: slide.preview), + ], ); }, ), @@ -322,7 +456,7 @@ class WelcomeScreen extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - const KrowWordmark(size: 40), + const KrowWordmark(width: 150), const SizedBox(height: 34), const Text( 'Work the shifts\nyou actually want.', diff --git a/lib/screens/pay_screens.dart b/lib/screens/pay_screens.dart index ca54c00..29f576e 100644 --- a/lib/screens/pay_screens.dart +++ b/lib/screens/pay_screens.dart @@ -12,22 +12,25 @@ import '../state/shifts_controller.dart'; import '../widgets/collapsing_header.dart'; import '../widgets/common.dart'; import '../widgets/glass_segments.dart'; +import '../widgets/krow_wordmark.dart'; -enum PayRange { week, month, year, all } +/// Declared in the order the segments are shown, which is the prototype's: +/// All first, then narrowing. +enum PayRange { all, week, month, year } extension on PayRange { String get label => switch (this) { + PayRange.all => 'All', PayRange.week => 'Week', PayRange.month => 'Month', PayRange.year => 'Year', - PayRange.all => 'All', }; Duration get window => switch (this) { + PayRange.all => const Duration(days: 3650), PayRange.week => const Duration(days: 7), PayRange.month => const Duration(days: 30), PayRange.year => const Duration(days: 365), - PayRange.all => const Duration(days: 3650), }; } @@ -86,16 +89,10 @@ class _PayScreenState extends ConsumerState { expanded: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'ESTIMATED GROSS PAY · PRE-TAX', - style: TextStyle( - fontSize: 9.5, - letterSpacing: 1.5, - fontWeight: FontWeight.w600, - color: Colors.white.withValues(alpha: 0.5), - ), + const HeaderBrandLine( + trailing: HeaderEyebrow('Gross pay · pre-tax'), ), - const SizedBox(height: 5), + const SizedBox(height: 6), Text( Fmt.money(paid + pending), style: const TextStyle( diff --git a/lib/screens/profile_screen.dart b/lib/screens/profile_screen.dart index 793de96..11f0854 100644 --- a/lib/screens/profile_screen.dart +++ b/lib/screens/profile_screen.dart @@ -8,6 +8,7 @@ import '../state/compliance_controller.dart'; import '../state/profile_controller.dart'; import '../widgets/collapsing_header.dart'; import '../widgets/common.dart'; +import '../widgets/krow_wordmark.dart'; class ProfileScreen extends ConsumerWidget { const ProfileScreen({super.key}); @@ -69,11 +70,14 @@ class ProfileScreen extends ConsumerWidget { // row it added 46px the header could not afford. Positioned( top: 0, + left: 0, right: 0, - child: HeaderIconButton( - icon: LucideIcons.settings, - tooltip: 'Settings', - onPressed: () => context.push('/settings'), + child: HeaderBrandLine( + trailing: HeaderIconButton( + icon: LucideIcons.settings, + tooltip: 'Settings', + onPressed: () => context.push('/settings'), + ), ), ), Column( diff --git a/lib/screens/requirements_screen.dart b/lib/screens/requirements_screen.dart new file mode 100644 index 0000000..845c637 --- /dev/null +++ b/lib/screens/requirements_screen.dart @@ -0,0 +1,173 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:lucide_icons_flutter/lucide_icons.dart'; + +import '../core/theme.dart'; +import '../models/compliance.dart'; +import '../state/compliance_controller.dart'; +import '../state/shifts_controller.dart'; +import '../widgets/common.dart'; +import 'shift_detail_screen.dart'; + +/// Everything one business asks for, on its own screen. +/// +/// The shift page shows the same check inline; this is the full read, grouped +/// the way the compliance hub groups things, so it is obvious *which* kind of +/// item is missing and where to go and fix it. +class RequirementsScreen extends ConsumerWidget { + const RequirementsScreen({super.key, required this.shiftId}); + + final String shiftId; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final shift = ref.watch(shiftsProvider.notifier).byId(shiftId); + if (shift == null) { + return Scaffold( + appBar: AppBar(), + body: const Center(child: Text('That shift is no longer listed.')), + ); + } + + final compliance = ref.watch(complianceProvider); + + /// The items this shift needs, split by which compliance section they + /// belong to, so each group can be labelled and linked separately. + List group(ComplianceSection section) => compliance + .section(section) + .where((i) => shift.requirements.contains(i.title)) + .toList(); + + final groups = <(ComplianceSection, String, List)>[ + ( + ComplianceSection.documents, + 'Documents', + group(ComplianceSection.documents), + ), + (ComplianceSection.wardrobe, 'Attire', group(ComplianceSection.wardrobe)), + ( + ComplianceSection.certificates, + 'Certificates', + group(ComplianceSection.certificates), + ), + ]; + + return Scaffold( + appBar: AppBar( + title: const Text('Requirements'), + actions: [ + Padding( + padding: const EdgeInsets.only(right: 16), + child: Center( + child: IconButton( + onPressed: () => context.push('/support'), + icon: const Icon(LucideIcons.messageCircle, size: 20), + tooltip: 'Message the manager', + ), + ), + ), + ], + ), + body: ListView( + padding: const EdgeInsets.fromLTRB(20, 8, 20, 28), + children: [ + Text( + '${shift.role} at ${shift.business}', + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.w700, + letterSpacing: -0.7, + ), + ), + const SizedBox(height: 16), + // The same summary the shift page shows, so the two never disagree. + ShiftRequirements(shift: shift), + for (final (section, label, items) in groups) + if (items.isNotEmpty) ...[ + SectionLabel( + label, + trailing: TextButton( + onPressed: () => context.push('/compliance/${section.name}'), + child: const Text('Manage'), + ), + ), + KrowCard( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + children: [ + for (var i = 0; i < items.length; i++) ...[ + if (i > 0) const Divider(height: 1), + _RequirementRow(item: items[i]), + ], + ], + ), + ), + ], + const SizedBox(height: 16), + const InfoBanner( + 'These are shared with the business only while you are booked on ' + 'one of their shifts.', + ), + ], + ), + ); + } +} + +class _RequirementRow extends StatelessWidget { + const _RequirementRow({required this.item}); + + final ComplianceItem item; + + @override + Widget build(BuildContext context) { + final ok = item.state == ComplianceState.verified; + return Padding( + padding: const EdgeInsets.symmetric(vertical: 11), + child: Row( + children: [ + Container( + width: 22, + height: 22, + decoration: BoxDecoration( + color: ok ? KrowPalette.blueTint : const Color(0xFFF7E4AE), + borderRadius: BorderRadius.circular(7), + ), + child: Icon( + ok ? LucideIcons.check : LucideIcons.clock, + size: 12, + color: ok ? KrowPalette.blue : KrowPalette.ink, + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + item.title, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 1), + Text( + item.subtitle, + style: const TextStyle( + fontSize: 12, + height: 1.4, + color: KrowPalette.mute, + ), + ), + ], + ), + ), + const SizedBox(width: 8), + StatusChip(item.badge, tone: ok ? ChipTone.neutral : ChipTone.yellow), + ], + ), + ); + } +} diff --git a/lib/screens/settings_screens.dart b/lib/screens/settings_screens.dart index c7b48c7..b8608ae 100644 --- a/lib/screens/settings_screens.dart +++ b/lib/screens/settings_screens.dart @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; +import '../core/permissions.dart'; import '../core/theme.dart'; import '../state/profile_controller.dart'; import '../state/seed.dart'; @@ -11,13 +12,41 @@ import '../state/shifts_controller.dart'; import '../state/timecards_controller.dart'; import '../widgets/common.dart'; -class SettingsScreen extends ConsumerWidget { +class SettingsScreen extends ConsumerStatefulWidget { const SettingsScreen({super.key}); @override - Widget build(BuildContext context, WidgetRef ref) { - final session = ref.watch(sessionProvider); + ConsumerState createState() => _SettingsScreenState(); +} + +class _SettingsScreenState extends ConsumerState { + @override + void initState() { + super.initState(); + // A permission can be revoked in system settings while the app is closed, + // so the switches are re-read from the OS rather than trusted from cache. + WidgetsBinding.instance.addPostFrameCallback((_) { + ref.read(sessionProvider.notifier).refresh(); + }); + } + + /// The OS has no API to revoke a permission, and re-requesting a granted one + /// does nothing — so the switch hands off to the system settings page for + /// anything it cannot do itself. + Future _toggle(AppPermission permission, bool value) async { final notifier = ref.read(sessionProvider.notifier); + if (!value) { + await ref.read(permissionServiceProvider).openSettings(); + return; + } + final granted = await notifier.request(permission); + if (granted || !mounted) return; + await ref.read(permissionServiceProvider).openSettings(); + } + + @override + Widget build(BuildContext context) { + final session = ref.watch(sessionProvider); final profile = ref.watch(profileProvider); final reviewCount = ref.watch(timecardsNeedingReviewProvider).length; @@ -44,7 +73,7 @@ class SettingsScreen extends ConsumerWidget { title: 'Location', subtitle: 'Needed to clock in at the venue', value: session.locationGranted, - onChanged: (v) => v ? notifier.grantLocation() : null, + onChanged: (v) => _toggle(AppPermission.location, v), ), const Divider(height: 1), _SwitchRow( @@ -52,7 +81,7 @@ class SettingsScreen extends ConsumerWidget { title: 'Notifications', subtitle: 'Shift offers, reminders and pay alerts', value: session.notificationsGranted, - onChanged: (v) => v ? notifier.grantNotifications() : null, + onChanged: (v) => _toggle(AppPermission.notifications, v), ), const Divider(height: 1), _SwitchRow( @@ -60,7 +89,7 @@ class SettingsScreen extends ConsumerWidget { title: 'Camera', subtitle: 'Photograph documents and attire', value: session.cameraGranted, - onChanged: (v) => v ? notifier.grantCamera() : null, + onChanged: (v) => _toggle(AppPermission.camera, v), ), ], ), diff --git a/lib/screens/shift_detail_screen.dart b/lib/screens/shift_detail_screen.dart index 3e925a4..36169f7 100644 --- a/lib/screens/shift_detail_screen.dart +++ b/lib/screens/shift_detail_screen.dart @@ -152,8 +152,15 @@ class ShiftDetailScreen extends ConsumerWidget { ], ), ), - const SectionLabel('Requirements'), - _Requirements(shift: shift), + SectionLabel( + 'Requirements', + trailing: TextButton( + onPressed: () => + context.push('/shift/${shift.id}/requirements'), + child: const Text('See all'), + ), + ), + ShiftRequirements(shift: shift), const SizedBox(height: 18), _Actions(shift: shift), ], @@ -166,8 +173,9 @@ class ShiftDetailScreen extends ConsumerWidget { } /// What this business asks for, checked against what is already on file. -class _Requirements extends ConsumerWidget { - const _Requirements({required this.shift}); +/// Shown inline on the shift, and on its own screen from the link above it. +class ShiftRequirements extends ConsumerWidget { + const ShiftRequirements({super.key, required this.shift}); final Shift shift; diff --git a/lib/screens/shifts_screen.dart b/lib/screens/shifts_screen.dart index eb16c28..a5911fd 100644 --- a/lib/screens/shifts_screen.dart +++ b/lib/screens/shifts_screen.dart @@ -10,6 +10,7 @@ import '../models/shift.dart'; import '../state/shifts_controller.dart'; import '../widgets/common.dart'; import '../widgets/glass_segments.dart'; +import '../widgets/krow_wordmark.dart'; import '../widgets/shift_card.dart'; import '../widgets/week_strip.dart'; @@ -54,16 +55,10 @@ class _ShiftsScreenState extends ConsumerState { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - Fmt.monthYear(DateTime.now()).toUpperCase(), - style: TextStyle( - fontSize: 9.5, - letterSpacing: 1.6, - fontWeight: FontWeight.w600, - color: Colors.white.withValues(alpha: 0.5), - ), + HeaderBrandLine( + trailing: HeaderEyebrow(Fmt.monthYear(DateTime.now())), ), - const SizedBox(height: 4), + const SizedBox(height: 8), const Text( 'Shifts', style: TextStyle( diff --git a/lib/screens/timecard_screens.dart b/lib/screens/timecard_screens.dart index c5da005..9ddc22a 100644 --- a/lib/screens/timecard_screens.dart +++ b/lib/screens/timecard_screens.dart @@ -33,27 +33,36 @@ class TimecardsScreen extends ConsumerWidget { ), ], ), - body: cards.isEmpty - ? const Padding( - padding: EdgeInsets.all(20), - child: EmptyState( - icon: LucideIcons.fileText, - title: 'No timecards yet', - message: 'One is filed automatically every time you clock out.', - ), - ) - : ListView.separated( - padding: const EdgeInsets.fromLTRB(20, 16, 20, 28), - itemCount: cards.length, - separatorBuilder: (_, _) => const SizedBox(height: 11), - itemBuilder: (context, i) => _TimecardTile(card: cards[i]), - ), + body: ListView( + padding: const EdgeInsets.fromLTRB(20, 16, 20, 28), + children: timecardItems(cards), + ), ); } } -class _TimecardTile extends StatelessWidget { - const _TimecardTile({required this.card}); +/// The timecard list as plain children, so the Clock tab can drop them into +/// its sliver list and the pushed screen into a ListView, with one layout. +List timecardItems(List cards) { + if (cards.isEmpty) { + return const [ + EmptyState( + icon: LucideIcons.fileText, + title: 'No timecards yet', + message: 'One is filed automatically every time you clock out.', + ), + ]; + } + return [ + for (var i = 0; i < cards.length; i++) ...[ + if (i > 0) const SizedBox(height: 11), + TimecardTile(card: cards[i]), + ], + ]; +} + +class TimecardTile extends StatelessWidget { + const TimecardTile({super.key, required this.card}); final Timecard card; diff --git a/lib/screens/today_screen.dart b/lib/screens/today_screen.dart index bf35937..f80db5c 100644 --- a/lib/screens/today_screen.dart +++ b/lib/screens/today_screen.dart @@ -13,10 +13,15 @@ import '../state/shifts_controller.dart'; import '../widgets/collapsing_header.dart'; import '../widgets/common.dart'; import '../widgets/shift_card.dart'; +import '../widgets/krow_wordmark.dart'; class TodayScreen extends ConsumerWidget { const TodayScreen({super.key}); + /// Brand line (40) + gap + identity row (44) + gap + stats, plus 6/18 + /// padding. + static const _expandedHeader = 188.0; + String _greeting() { final h = DateTime.now().hour; if (h < 12) return 'Good morning'; @@ -39,16 +44,24 @@ class TodayScreen extends ConsumerWidget { body: CustomScrollView( slivers: [ KrowSliverHeader( - expandedHeight: 152, + expandedHeight: _expandedHeader, collapsedHeight: 60, builder: (context, t) => HeaderCrossFade( t: t, - expandedHeight: 152, + expandedHeight: _expandedHeader, expanded: Padding( - padding: const EdgeInsets.fromLTRB(20, 8, 20, 20), + padding: const EdgeInsets.fromLTRB(20, 6, 20, 18), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + HeaderBrandLine( + trailing: HeaderIconButton( + icon: LucideIcons.messageCircle, + tooltip: 'Support', + onPressed: () => context.push('/support'), + ), + ), + const SizedBox(height: 14), Row( children: [ _Avatar(worker.initials), @@ -69,6 +82,8 @@ class TodayScreen extends ConsumerWidget { const SizedBox(height: 2), Text( worker.name, + maxLines: 1, + overflow: TextOverflow.ellipsis, style: const TextStyle( fontSize: 22, fontWeight: FontWeight.w700, @@ -79,14 +94,9 @@ class TodayScreen extends ConsumerWidget { ], ), ), - HeaderIconButton( - icon: LucideIcons.messageCircle, - tooltip: 'Support', - onPressed: () => context.push('/support'), - ), ], ), - const SizedBox(height: 18), + const SizedBox(height: 16), Row( children: [ // Flexible, not free-sized: on a 320px screen the two diff --git a/lib/state/compliance_controller.dart b/lib/state/compliance_controller.dart index 1363657..af6ac9e 100644 --- a/lib/state/compliance_controller.dart +++ b/lib/state/compliance_controller.dart @@ -104,7 +104,12 @@ class ComplianceController extends Notifier { /// Stand-in for the camera / file picker: attaching a file sends the item /// back for review. - void uploadFile(ComplianceSection section, String id, String fileName) { + void uploadFile( + ComplianceSection section, + String id, + String fileName, { + String? meta, + }) { _update( section, id, @@ -112,7 +117,7 @@ class ComplianceController extends Notifier { state: ComplianceState.pending, statusLabel: 'In review', fileName: fileName, - fileMeta: 'Uploaded just now', + fileMeta: meta ?? 'Uploaded just now', ), ); } diff --git a/lib/state/session_controller.dart b/lib/state/session_controller.dart index 088b11a..d539cd6 100644 --- a/lib/state/session_controller.dart +++ b/lib/state/session_controller.dart @@ -1,6 +1,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import '../core/permissions.dart'; + /// Injected in `main()` once SharedPreferences has loaded. final prefsProvider = Provider( (ref) => throw UnimplementedError('prefsProvider must be overridden'), @@ -8,7 +10,6 @@ final prefsProvider = Provider( class SessionState { const SessionState({ - this.onboardingSeen = false, this.phone, this.signedIn = false, this.locationGranted = false, @@ -16,7 +17,6 @@ class SessionState { this.cameraGranted = false, }); - final bool onboardingSeen; final String? phone; final bool signedIn; final bool locationGranted; @@ -28,14 +28,12 @@ class SessionState { locationGranted && notificationsGranted && cameraGranted; SessionState copyWith({ - bool? onboardingSeen, String? phone, bool? signedIn, bool? locationGranted, bool? notificationsGranted, bool? cameraGranted, }) => SessionState( - onboardingSeen: onboardingSeen ?? this.onboardingSeen, phone: phone ?? this.phone, signedIn: signedIn ?? this.signedIn, locationGranted: locationGranted ?? this.locationGranted, @@ -45,7 +43,6 @@ class SessionState { } class SessionController extends Notifier { - static const _kOnboarding = 'onboarding_seen'; static const _kPhone = 'phone'; static const _kSignedIn = 'signed_in'; static const _kLocation = 'perm_location'; @@ -58,7 +55,6 @@ class SessionController extends Notifier { SessionState build() { final p = _prefs; return SessionState( - onboardingSeen: p.getBool(_kOnboarding) ?? false, phone: p.getString(_kPhone), signedIn: p.getBool(_kSignedIn) ?? false, locationGranted: p.getBool(_kLocation) ?? false, @@ -67,11 +63,6 @@ class SessionController extends Notifier { ); } - void completeOnboarding() { - _prefs.setBool(_kOnboarding, true); - state = state.copyWith(onboardingSeen: true); - } - /// The demo backend accepts any 10-digit number and always sends `123456`. static const demoCode = '123456'; @@ -88,19 +79,40 @@ class SessionController extends Notifier { return true; } - void grantLocation() { - _prefs.setBool(_kLocation, true); - state = state.copyWith(locationGranted: true); + /// Asks the OS, then records what it actually said. + /// + /// The stored flag is a cache for the UI, never the source of truth — the + /// user can revoke a permission in system settings without the app running, + /// so [refresh] re-reads the real status whenever a screen needs it. + Future request(AppPermission permission) async { + final granted = await ref + .read(permissionServiceProvider) + .request(permission); + _record(permission, granted); + return granted; } - void grantNotifications() { - _prefs.setBool(_kNotifications, true); - state = state.copyWith(notificationsGranted: true); + /// Re-reads all three from the OS. Called when a screen that shows their + /// state appears, so a change made in system settings is picked up. + Future refresh() async { + final service = ref.read(permissionServiceProvider); + for (final permission in AppPermission.values) { + _record(permission, await service.isGranted(permission)); + } } - void grantCamera() { - _prefs.setBool(_kCamera, true); - state = state.copyWith(cameraGranted: true); + void _record(AppPermission permission, bool granted) { + switch (permission) { + case AppPermission.location: + _prefs.setBool(_kLocation, granted); + state = state.copyWith(locationGranted: granted); + case AppPermission.notifications: + _prefs.setBool(_kNotifications, granted); + state = state.copyWith(notificationsGranted: granted); + case AppPermission.camera: + _prefs.setBool(_kCamera, granted); + state = state.copyWith(cameraGranted: granted); + } } Future signOut() async { diff --git a/lib/widgets/krow_nav_bar.dart b/lib/widgets/krow_nav_bar.dart index e9d7af9..7440c8b 100644 --- a/lib/widgets/krow_nav_bar.dart +++ b/lib/widgets/krow_nav_bar.dart @@ -43,6 +43,9 @@ class KrowNavBar extends StatelessWidget { /// of pixels apart. static const _topPadding = 12.0; + static const _labelSize = 11.0; + static const _dotSlot = 6.0; + /// Lets tests find the travelling indicator unambiguously. static const indicatorKey = ValueKey('krow-nav-indicator'); @@ -55,74 +58,75 @@ class KrowNavBar extends StatelessWidget { ), child: SafeArea( top: false, - child: SizedBox( - height: 76, - child: LayoutBuilder( - builder: (context, constraints) { - final slot = constraints.maxWidth / items.length; + // No fixed height: the Stack below takes the height of the item row, + // and the pill is positioned within it. A hard number here has to be + // retuned every time the label grows — a bigger text scale, a longer + // word, a different font — and overflows the moment it is not. + child: LayoutBuilder( + builder: (context, constraints) { + final slot = constraints.maxWidth / items.length; - // The selected index animated as a double, so the pill's - // position and every icon's colour come from one value. - return TweenAnimationBuilder( - tween: Tween(end: currentIndex.toDouble()), - duration: const Duration(milliseconds: 360), - curve: Curves.easeOutQuint, - builder: (context, position, _) { - final travel = (position - position.roundToDouble()).abs(); - final stretch = 20 * (travel * 2); + // The selected index animated as a double, so the pill's + // position and every icon's colour come from one value. + return TweenAnimationBuilder( + tween: Tween(end: currentIndex.toDouble()), + duration: const Duration(milliseconds: 360), + curve: Curves.easeOutQuint, + builder: (context, position, _) { + final travel = (position - position.roundToDouble()).abs(); + final stretch = 20 * (travel * 2); - return Stack( - children: [ - Positioned( - left: - position * slot + - (slot - _pillWidth) / 2 - - stretch / 2, - top: _topPadding, - width: _pillWidth + stretch, - height: _pillHeight, - child: DecoratedBox( - key: indicatorKey, - decoration: BoxDecoration( - color: KrowPalette.blue, - borderRadius: BorderRadius.circular(10), - boxShadow: [ - BoxShadow( - color: KrowPalette.blue.withValues(alpha: 0.28), - blurRadius: 12, - offset: const Offset(0, 4), - ), - ], - ), + return Stack( + children: [ + Positioned( + left: + position * slot + + (slot - _pillWidth) / 2 - + stretch / 2, + top: _topPadding, + width: _pillWidth + stretch, + height: _pillHeight, + child: DecoratedBox( + key: indicatorKey, + decoration: BoxDecoration( + color: KrowPalette.blue, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: KrowPalette.blue.withValues(alpha: 0.28), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], ), ), - Row( - children: [ - for (var i = 0; i < items.length; i++) - Expanded( - child: _NavItem( - item: items[i], - // 1 when the pill is centred on this tab. - proximity: (1 - (position - i).abs()).clamp( - 0.0, - 1.0, - ), - onTap: () { - if (i != currentIndex) { - HapticFeedback.selectionClick(); - } - onSelect(i); - }, + ), + Row( + children: [ + for (var i = 0; i < items.length; i++) + Expanded( + child: _NavItem( + item: items[i], + // 1 when the pill is centred on this tab. + proximity: (1 - (position - i).abs()).clamp( + 0.0, + 1.0, ), + onTap: () { + if (i != currentIndex) { + HapticFeedback.selectionClick(); + } + onSelect(i); + }, ), - ], - ), - ], - ); - }, - ); - }, - ), + ), + ], + ), + ], + ); + }, + ); + }, ), ), ); @@ -171,6 +175,7 @@ class _NavItem extends StatelessWidget { // Started from the top rather than centred, so the icon sits exactly // where the pill is drawn. mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, children: [ const SizedBox(height: KrowNavBar._topPadding), SizedBox( @@ -181,7 +186,7 @@ class _NavItem extends StatelessWidget { // The dot's slot is always reserved, so tabs with and without one // keep their labels on the same line. SizedBox( - height: 6, + height: KrowNavBar._dotSlot, child: Center( child: AnimatedScale( scale: item.showDot ? 1 : 0, @@ -202,11 +207,12 @@ class _NavItem extends StatelessWidget { Text( item.label, style: TextStyle( - fontSize: 11, + fontSize: KrowNavBar._labelSize, fontWeight: proximity > 0.5 ? FontWeight.w600 : FontWeight.w500, color: labelColor, ), ), + const SizedBox(height: 4), ], ), ), diff --git a/lib/widgets/krow_wordmark.dart b/lib/widgets/krow_wordmark.dart new file mode 100644 index 0000000..c74fbba --- /dev/null +++ b/lib/widgets/krow_wordmark.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; + +import '../core/theme.dart'; + +/// The brand wordmark. +/// +/// The asset is an alpha mask — the shape lives in the alpha channel — so one +/// file tints to any colour. `Image.asset` blends a `color` with `srcIn` by +/// default, which is the same thing the brand sheet did with a CSS mask. +/// +/// Sized by width, because the mark is a fixed 3.06:1 and the width is what +/// has to sit within a layout. +class KrowWordmark extends StatelessWidget { + const KrowWordmark({super.key, this.width = 132, this.color}); + + final double width; + final Color? color; + + @override + Widget build(BuildContext context) { + return Image.asset( + 'assets/images/krow_logo.png', + width: width, + color: color ?? KrowPalette.yellow, + filterQuality: FilterQuality.medium, + semanticLabel: 'KROW', + ); + } +} + +/// The line that tops each main tab: the wordmark on the left, and whatever +/// that tab already had up there on the right — an action button, or its +/// caption. Putting the mark on the existing line rather than a new one keeps +/// the brand consistent across tabs without spending header height on it. +class HeaderBrandLine extends StatelessWidget { + const HeaderBrandLine({super.key, this.trailing}); + + final Widget? trailing; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + // White rather than yellow: the accent is already carrying the avatar + // and the money figures, and a third yellow element leads nowhere. + const KrowWordmark(width: 62, color: Colors.white), + const SizedBox(width: 12), + if (trailing != null) + Expanded( + child: Align(alignment: Alignment.centerRight, child: trailing), + ), + ], + ); + } +} + +/// The small uppercase caption that sits beside the wordmark on a tab header. +class HeaderEyebrow extends StatelessWidget { + const HeaderEyebrow(this.text, {super.key}); + + final String text; + + @override + Widget build(BuildContext context) { + return Text( + text.toUpperCase(), + maxLines: 1, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.right, + style: TextStyle( + fontSize: 9.5, + letterSpacing: 1.5, + fontWeight: FontWeight.w600, + color: Colors.white.withValues(alpha: 0.5), + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 5f09bb8..0074ee5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -57,6 +57,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: f141ea4f277af142a0356955707f6556f37b03947d39d55585981a06ca437bd6 + url: "https://pub.dev" + source: hosted + version: "0.3.5+5" crypto: dependency: transitive description: @@ -97,6 +105,38 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: da76400e7872ce7637ffdce12749ec24169c25f6195c28372208e65a24bcd2ab + url: "https://pub.dev" + source: hosted + version: "0.9.4+1" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: d57c62362766b5e7ae739448650b66c6aab7a68ba7ecc65e04018652645ae0f4 + url: "https://pub.dev" + source: hosted + version: "0.9.5+1" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" + url: "https://pub.dev" + source: hosted + version: "2.7.0" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: fbefc5fb92c6d3cbe8d284a2cd971b593bb07d2cd6da8557b81a862250b4acec + url: "https://pub.dev" + source: hosted + version: "0.9.3+6" fixnum: dependency: transitive description: @@ -118,6 +158,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785" + url: "https://pub.dev" + source: hosted + version: "2.0.35" flutter_riverpod: dependency: "direct main" description: @@ -126,6 +174,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.3" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f" + url: "https://pub.dev" + source: hosted + version: "2.3.0" flutter_test: dependency: "direct dev" description: flutter @@ -176,6 +232,70 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + image_picker: + dependency: "direct main" + description: + name: image_picker + sha256: d8402284df184bc05f4a2210c6c23983b0720f4cd87cbd05c5390a78af602667 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + sha256: "0a55d645a670d6ae11efa948f955ae904afa472f1344fc15a7ddacc20c1e7219" + url: "https://pub.dev" + source: hosted + version: "0.8.13+23" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + sha256: ee3885b6fcd71958fbc79770dd194c63371439d536d69c47b279171a486482ae + url: "https://pub.dev" + source: hosted + version: "0.8.13+7" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" + url: "https://pub.dev" + source: hosted + version: "0.2.2" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" + url: "https://pub.dev" + source: hosted + version: "0.2.2+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" + url: "https://pub.dev" + source: hosted + version: "2.11.1" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae + url: "https://pub.dev" + source: hosted + version: "0.2.2" intl: dependency: "direct main" description: @@ -288,6 +408,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" + mime: + dependency: transitive + description: + name: mime + sha256: bd47de35f07e27267e69c8c8b22edf9473bfee170a60d60fcc93730c5144b7f6 + url: "https://pub.dev" + source: hosted + version: "2.1.0" objective_c: dependency: transitive description: @@ -312,6 +440,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" path_provider: dependency: transitive description: @@ -360,6 +496,62 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.0" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: e6bcecadfe40df6b888141f23cbaf6ba6c3da49fb33f6ff887d060dd48544fbd + url: "https://pub.dev" + source: hosted + version: "13.0.2" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: b1ce660f4d0dcaffdf2605a19544c129fb5adda4e6fd039992ae356c4e437039 + url: "https://pub.dev" + source: hosted + version: "14.1.0" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8 + url: "https://pub.dev" + source: hosted + version: "9.6.1" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac" + url: "https://pub.dev" + source: hosted + version: "0.1.4+1" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: ed86a61c190258fdd65de395ea0632822e3415c1faec38eae0c31b479c28a531 + url: "https://pub.dev" + source: hosted + version: "4.4.1" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd + url: "https://pub.dev" + source: hosted + version: "0.2.2" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" + url: "https://pub.dev" + source: hosted + version: "7.0.2" platform: dependency: transitive description: @@ -533,6 +725,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.6.0" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "9d0e3b9cb16542ad660daee871e726a10d13a93b7b5391677c3160e8f5e83935" + url: "https://pub.dev" + source: hosted + version: "1.2.3" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" + url: "https://pub.dev" + source: hosted + version: "1.1.13" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "4dca4feb77dc3ec7f6e27e49c53241eb8217f55e4f9b12599a27f8903bca5682" + url: "https://pub.dev" + source: hosted + version: "1.3.0" vector_math: dependency: transitive description: @@ -565,6 +781,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4" + url: "https://pub.dev" + source: hosted + version: "7.0.1" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 532e17f..743eaf3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,6 +40,9 @@ dependencies: lucide_icons_flutter: ^3.1.20 intl: ^0.20.3 shared_preferences: ^2.5.5 + flutter_svg: ^2.3.0 + permission_handler: ^13.0.2 + image_picker: ^1.2.3 dev_dependencies: flutter_test: @@ -63,10 +66,13 @@ flutter: # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + # The brand wordmark. Shipped as an alpha mask so a single file can be + # tinted white, yellow or blue wherever it appears. + - assets/images/krow_logo.png + # Onboarding artwork, lifted from the prototype's SVG with its theme + # variables resolved to the sage palette. + - assets/art/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images diff --git a/test/screen_layout_test.dart b/test/screen_layout_test.dart index 19c4fa5..061937d 100644 --- a/test/screen_layout_test.dart +++ b/test/screen_layout_test.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:krow_worker_app/core/theme.dart'; +import 'package:krow_worker_app/screens/auth_screens.dart'; import 'package:krow_worker_app/screens/clock_screen.dart'; import 'package:krow_worker_app/screens/pay_screens.dart'; import 'package:krow_worker_app/screens/profile_screen.dart'; @@ -72,6 +73,9 @@ void main() { 'Clock': const ClockScreen(), 'Pay': const PayScreen(), 'Profile': const ProfileScreen(), + // Not a tab, but it renders Today behind a sheet full of copy, so it + // is the most crowded layout in the app. + 'Permissions': const PermissionsScreen(), }; // A small phone, a tall one, and a short-but-wide one. diff --git a/web/favicon.png b/web/favicon.png index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0c0b17afdc4ae25dd40a22656d6939b1c27b8aa8 100644 GIT binary patch delta 363 zcmV-x0hIog2ZaNWBYy!*NklS^CP=ioGLM>N7jMN^UQ#r(A~4jUAK(x~XE@t=;CbI8E0szm zY8ZJf$A1J+S6;W#EX|^t0k6l-?$IM_8|Nq$a(~=??aWN|a&eu)Vb&3s z^0=&G6|m~_V>Ae~HmM2SXV3~t!tor@#~cf@0|@mB=9c#9cIsL2`I(;V;^0hTdEQ-B zIK5189C&7Y#DJ$E~~Brkd+_lCX&T&)^g~7!qD1) z)ugGo`>zrd-o6;>H&*-up%k5Vk;p?1LrVi1L0JX-YK`)L0N>oubm+v_MqB^@002ov JPDHLkV1oWRtqcGF literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png index b749bfef07473333cf1dd31e9eed89862a5d52aa..0626b0e88dff758ad4019632a7e9bff3becf21a2 100644 GIT binary patch literal 7195 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 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png index 88cfd48dff1169879ba46840804b412fe02fefd6..5e1cb533c7043de2eeb97ceb57b79ac3927a630f 100644 GIT binary patch literal 22126 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≦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 D&wP7H literal 8252 zcmd5=2T+s!lYZ%-(h(2@5fr2dC?F^$C=i-}R6$UX8af(!je;W5yC_|HmujSgN*6?W z3knF*TL1$|?oD*=zPbBVex*RUIKsL<(&Rj9%^UD2IK3W?2j>D?eWQgvS-HLymHo9%~|N2Q{~j za?*X-{b9JRowv_*Mh|;*-kPFn>PI;r<#kFaxFqbn?aq|PduQg=2Q;~Qc}#z)_T%x9 zE|0!a70`58wjREmAH38H1)#gof)U3g9FZ^ zF7&-0^Hy{4XHWLoC*hOG(dg~2g6&?-wqcpf{ z&3=o8vw7lMi22jCG9RQbv8H}`+}9^zSk`nlR8?Z&G2dlDy$4#+WOlg;VHqzuE=fM@ z?OI6HEJH4&tA?FVG}9>jAnq_^tlw8NbjNhfqk2rQr?h(F&WiKy03Sn=-;ZJRh~JrD zbt)zLbnabttEZ>zUiu`N*u4sfQaLE8-WDn@tHp50uD(^r-}UsUUu)`!Rl1PozAc!a z?uj|2QDQ%oV-jxUJmJycySBINSKdX{kDYRS=+`HgR2GO19fg&lZKyBFbbXhQV~v~L za^U944F1_GtuFXtvDdDNDvp<`fqy);>Vw=ncy!NB85Tw{&sT5&Ox%-p%8fTS;OzlRBwErvO+ROe?{%q-Zge=%Up|D4L#>4K@Ke=x%?*^_^P*KD zgXueMiS63!sEw@fNLB-i^F|@Oib+S4bcy{eu&e}Xvb^(mA!=U=Xr3||IpV~3K zQWzEsUeX_qBe6fky#M zzOJm5b+l;~>=sdp%i}}0h zO?B?i*W;Ndn02Y0GUUPxERG`3Bjtj!NroLoYtyVdLtl?SE*CYpf4|_${ku2s`*_)k zN=a}V8_2R5QANlxsq!1BkT6$4>9=-Ix4As@FSS;1q^#TXPrBsw>hJ}$jZ{kUHoP+H zvoYiR39gX}2OHIBYCa~6ERRPJ#V}RIIZakUmuIoLF*{sO8rAUEB9|+A#C|@kw5>u0 zBd=F!4I)Be8ycH*)X1-VPiZ+Ts8_GB;YW&ZFFUo|Sw|x~ZajLsp+_3gv((Q#N>?Jz zFBf`~p_#^${zhPIIJY~yo!7$-xi2LK%3&RkFg}Ax)3+dFCjGgKv^1;lUzQlPo^E{K zmCnrwJ)NuSaJEmueEPO@(_6h3f5mFffhkU9r8A8(JC5eOkux{gPmx_$Uv&|hyj)gN zd>JP8l2U&81@1Hc>#*su2xd{)T`Yw< zN$dSLUN}dfx)Fu`NcY}TuZ)SdviT{JHaiYgP4~@`x{&h*Hd>c3K_To9BnQi@;tuoL z%PYQo&{|IsM)_>BrF1oB~+`2_uZQ48z9!)mtUR zdfKE+b*w8cPu;F6RYJiYyV;PRBbThqHBEu_(U{(gGtjM}Zi$pL8Whx}<JwE3RM0F8x7%!!s)UJVq|TVd#hf1zVLya$;mYp(^oZQ2>=ZXU1c$}f zm|7kfk>=4KoQoQ!2&SOW5|JP1)%#55C$M(u4%SP~tHa&M+=;YsW=v(Old9L3(j)`u z2?#fK&1vtS?G6aOt@E`gZ9*qCmyvc>Ma@Q8^I4y~f3gs7*d=ATlP>1S zyF=k&6p2;7dn^8?+!wZO5r~B+;@KXFEn^&C=6ma1J7Au6y29iMIxd7#iW%=iUzq&C=$aPLa^Q zncia$@TIy6UT@69=nbty5epP>*fVW@5qbUcb2~Gg75dNd{COFLdiz3}kODn^U*=@E z0*$7u7Rl2u)=%fk4m8EK1ctR!6%Ve`e!O20L$0LkM#f+)n9h^dn{n`T*^~d+l*Qlx z$;JC0P9+en2Wlxjwq#z^a6pdnD6fJM!GV7_%8%c)kc5LZs_G^qvw)&J#6WSp< zmsd~1-(GrgjC56Pdf6#!dt^y8Rg}!#UXf)W%~PeU+kU`FeSZHk)%sFv++#Dujk-~m zFHvVJC}UBn2jN& zs!@nZ?e(iyZPNo`p1i#~wsv9l@#Z|ag3JR>0#u1iW9M1RK1iF6-RbJ4KYg?B`dET9 zyR~DjZ>%_vWYm*Z9_+^~hJ_|SNTzBKx=U0l9 z9x(J96b{`R)UVQ$I`wTJ@$_}`)_DyUNOso6=WOmQKI1e`oyYy1C&%AQU<0-`(ow)1 zT}gYdwWdm4wW6|K)LcfMe&psE0XGhMy&xS`@vLi|1#Za{D6l@#D!?nW87wcscUZgELT{Cz**^;Zb~7 z(~WFRO`~!WvyZAW-8v!6n&j*PLm9NlN}BuUN}@E^TX*4Or#dMMF?V9KBeLSiLO4?B zcE3WNIa-H{ThrlCoN=XjOGk1dT=xwwrmt<1a)mrRzg{35`@C!T?&_;Q4Ce=5=>z^*zE_c(0*vWo2_#TD<2)pLXV$FlwP}Ik74IdDQU@yhkCr5h zn5aa>B7PWy5NQ!vf7@p_qtC*{dZ8zLS;JetPkHi>IvPjtJ#ThGQD|Lq#@vE2xdl%`x4A8xOln}BiQ92Po zW;0%A?I5CQ_O`@Ad=`2BLPPbBuPUp@Hb%a_OOI}y{Rwa<#h z5^6M}s7VzE)2&I*33pA>e71d78QpF>sNK;?lj^Kl#wU7G++`N_oL4QPd-iPqBhhs| z(uVM}$ItF-onXuuXO}o$t)emBO3Hjfyil@*+GF;9j?`&67GBM;TGkLHi>@)rkS4Nj zAEk;u)`jc4C$qN6WV2dVd#q}2X6nKt&X*}I@jP%Srs%%DS92lpDY^K*Sx4`l;aql$ zt*-V{U&$DM>pdO?%jt$t=vg5|p+Rw?SPaLW zB6nvZ69$ne4Z(s$3=Rf&RX8L9PWMV*S0@R zuIk&ba#s6sxVZ51^4Kon46X^9`?DC9mEhWB3f+o4#2EXFqy0(UTc>GU| zGCJmI|Dn-dX#7|_6(fT)>&YQ0H&&JX3cTvAq(a@ydM4>5Njnuere{J8p;3?1az60* z$1E7Yyxt^ytULeokgDnRVKQw9vzHg1>X@@jM$n$HBlveIrKP5-GJq%iWH#odVwV6cF^kKX(@#%%uQVb>#T6L^mC@)%SMd4DF? zVky!~ge27>cpUP1Vi}Z32lbLV+CQy+T5Wdmva6Fg^lKb!zrg|HPU=5Qu}k;4GVH+x z%;&pN1LOce0w@9i1Mo-Y|7|z}fbch@BPp2{&R-5{GLoeu8@limQmFF zaJRR|^;kW_nw~0V^ zfTnR!Ni*;-%oSHG1yItARs~uxra|O?YJxBzLjpeE-=~TO3Dn`JL5Gz;F~O1u3|FE- zvK2Vve`ylc`a}G`gpHg58Cqc9fMoy1L}7x7T>%~b&irrNMo?np3`q;d3d;zTK>nrK zOjPS{@&74-fA7j)8uT9~*g23uGnxwIVj9HorzUX#s0pcp2?GH6i}~+kv9fWChtPa_ z@T3m+$0pbjdQw7jcnHn;Pi85hk_u2-1^}c)LNvjdam8K-XJ+KgKQ%!?2n_!#{$H|| zLO=%;hRo6EDmnOBKCL9Cg~ETU##@u^W_5joZ%Et%X_n##%JDOcsO=0VL|Lkk!VdRJ z^|~2pB@PUspT?NOeO?=0Vb+fAGc!j%Ufn-cB`s2A~W{Zj{`wqWq_-w0wr@6VrM zbzni@8c>WS!7c&|ZR$cQ;`niRw{4kG#e z70e!uX8VmP23SuJ*)#(&R=;SxGAvq|&>geL&!5Z7@0Z(No*W561n#u$Uc`f9pD70# z=sKOSK|bF~#khTTn)B28h^a1{;>EaRnHj~>i=Fnr3+Fa4 z`^+O5_itS#7kPd20rq66_wH`%?HNzWk@XFK0n;Z@Cx{kx==2L22zWH$Yg?7 zvDj|u{{+NR3JvUH({;b*$b(U5U z7(lF!1bz2%06+|-v(D?2KgwNw7( zJB#Tz+ZRi&U$i?f34m7>uTzO#+E5cbaiQ&L}UxyOQq~afbNB4EI{E04ZWg53w0A{O%qo=lF8d zf~ktGvIgf-a~zQoWf>loF7pOodrd0a2|BzwwPDV}ShauTK8*fmF6NRbO>Iw9zZU}u zw8Ya}?seBnEGQDmH#XpUUkj}N49tP<2jYwTFp!P+&Fd(%Z#yo80|5@zN(D{_pNow*&4%ql zW~&yp@scb-+Qj-EmErY+Tu=dUmf@*BoXY2&oKT8U?8?s1d}4a`Aq>7SV800m$FE~? zjmz(LY+Xx9sDX$;vU`xgw*jLw7dWOnWWCO8o|;}f>cu0Q&`0I{YudMn;P;L3R-uz# zfns_mZED_IakFBPP2r_S8XM$X)@O-xVKi4`7373Jkd5{2$M#%cRhWer3M(vr{S6>h zj{givZJ3(`yFL@``(afn&~iNx@B1|-qfYiZu?-_&Z8+R~v`d6R-}EX9IVXWO-!hL5 z*k6T#^2zAXdardU3Ao~I)4DGdAv2bx{4nOK`20rJo>rmk3S2ZDu}))8Z1m}CKigf0 z3L`3Y`{huj`xj9@`$xTZzZc3je?n^yG<8sw$`Y%}9mUsjUR%T!?k^(q)6FH6Af^b6 zlPg~IEwg0y;`t9y;#D+uz!oE4VP&Je!<#q*F?m5L5?J3i@!0J6q#eu z!RRU`-)HeqGi_UJZ(n~|PSNsv+Wgl{P-TvaUQ9j?ZCtvb^37U$sFpBrkT{7Jpd?HpIvj2!}RIq zH{9~+gErN2+}J`>Jvng2hwM`=PLNkc7pkjblKW|+Fk9rc)G1R>Ww>RC=r-|!m-u7( zc(a$9NG}w#PjWNMS~)o=i~WA&4L(YIW25@AL9+H9!?3Y}sv#MOdY{bb9j>p`{?O(P zIvb`n?_(gP2w3P#&91JX*md+bBEr%xUHMVqfB;(f?OPtMnAZ#rm5q5mh;a2f_si2_ z3oXWB?{NF(JtkAn6F(O{z@b76OIqMC$&oJ_&S|YbFJ*)3qVX_uNf5b8(!vGX19hsG z(OP>RmZp29KH9Ge2kKjKigUmOe^K_!UXP`von)PR8Qz$%=EmOB9xS(ZxE_tnyzo}7 z=6~$~9k0M~v}`w={AeqF?_)9q{m8K#6M{a&(;u;O41j)I$^T?lx5(zlebpY@NT&#N zR+1bB)-1-xj}R8uwqwf=iP1GbxBjneCC%UrSdSxK1vM^i9;bUkS#iRZw2H>rS<2<$ zNT3|sDH>{tXb=zq7XZi*K?#Zsa1h1{h5!Tq_YbKFm_*=A5-<~j63he;4`77!|LBlo zR^~tR3yxcU=gDFbshyF6>o0bdp$qmHS7D}m3;^QZq9kBBU|9$N-~oU?G5;jyFR7>z hN`IR97YZXIo@y!QgFWddJ3|0`sjFx!m))><{BI=FK%f8s diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png index eb9b4d76e525556d5d89141648c724331630325d..d13d62614d46919f6004248ab74a60ee0dfd6a71 100644 GIT binary patch literal 5801 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..948bbbf707ef9689244cc05df744a780f9ca30b4 100644 GIT binary patch literal 17309 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 MPgg&ebxsLQ025IeI{*Lx