From 4f0a48f9ad0df81e79257c7db2d2a848dbd7d292 Mon Sep 17 00:00:00 2001 From: Shubham Singh Date: Mon, 13 May 2024 11:30:33 +0530 Subject: [PATCH] Update README and some component previews --- README.MD | 27 ------- README.md | 72 ++++++++++++++++++ adapt/build.gradle.kts | 1 + .../previews/cupertino/CupertinoSlider.kt | 21 +++-- .../adapt/previews/cupertino/IOSToggle.kt | 11 ++- .../adapt/previews/cupertino/MacOSSwitch.kt | 6 +- assets/cupertino_sliders.png | Bin 0 -> 15816 bytes assets/cupertino_spinner.png | Bin 0 -> 2335 bytes assets/iOS_button.png | Bin 0 -> 3236 bytes assets/iOS_toggle.png | Bin 0 -> 9202 bytes assets/macOS_button.png | Bin 0 -> 4525 bytes assets/macOS_switch.png | Bin 0 -> 3666 bytes assets/windows_button.png | Bin 0 -> 4016 bytes assets/windows_progress_ring.png | Bin 0 -> 1866 bytes assets/windows_slider.png | Bin 0 -> 4029 bytes assets/windows_toggle_switch.png | Bin 0 -> 5487 bytes 16 files changed, 101 insertions(+), 37 deletions(-) delete mode 100644 README.MD create mode 100644 README.md create mode 100644 assets/cupertino_sliders.png create mode 100644 assets/cupertino_spinner.png create mode 100644 assets/iOS_button.png create mode 100644 assets/iOS_toggle.png create mode 100644 assets/macOS_button.png create mode 100644 assets/macOS_switch.png create mode 100644 assets/windows_button.png create mode 100644 assets/windows_progress_ring.png create mode 100644 assets/windows_slider.png create mode 100644 assets/windows_toggle_switch.png diff --git a/README.MD b/README.MD deleted file mode 100644 index 86df443..0000000 --- a/README.MD +++ /dev/null @@ -1,27 +0,0 @@ -# Compose Multiplatform Application - -## Before running! - - check your system with [KDoctor](https://github.com/Kotlin/kdoctor) - - install JDK 8 on your machine - - add `local.properties` file to the project root and set a path to Android SDK there - - run `./gradlew podInstall` in the project root - -### Android -To run the application on android device/emulator: - - open project in Android Studio and run imported android run configuration - -To build the application bundle: - - run `./gradlew :composeApp:assembleDebug` - - find `.apk` file in `composeApp/build/outputs/apk/debug/composeApp-debug.apk` - -### Desktop -Run the desktop application: `./gradlew :composeApp:run` - -### iOS -To run the application on iPhone device/simulator: - - Open `iosApp/iosApp.xcworkspace` in Xcode and run standard configuration - - Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio - -### Browser -Run the browser application: `./gradlew :composeApp:jsBrowserDevelopmentRun` - diff --git a/README.md b/README.md new file mode 100644 index 0000000..992fce2 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# Adapt +![badge][badge-android] ![badge][badge-ios] ![badge][badge-js] ![badge][badge-wasm] ![badge][badge-jvm] + +Adapt is a Compose-based UI component library that provides you components from various commonly +used design systems on different platforms like Material 3 (for Android & Web), Cupertino (for +iOS & macOS), and WinUI 3 (for Windows). + +Adapt provides a Flutter-like experience where you can mix-and-match UI components between platforms +to achieve your desired UI/UX output(s) (e.g. using Cupertino components on Android devices and +Material components on Apple devices). + +## Types of components +Adapt offers the following 2 types of composables/components: +1. **Platform-specific** - These look the same on all platforms (e.g. `WindowsButton`, `CupertinoSpinner`) +2. **Platform-agnostic** - These look native-like on every platform (e.g. `AdaptButton`, `AdaptCircularIndicator`) + +## Available Components ✅ + +| Name | Image | Platform-agnostic variant | +|---------------------|-----------------------------------------------------------|---------------------------| +| CupertinoSlider | ![CupertinoSlider](/assets/cupertino_sliders.png) | AdaptSlider | +| CupertinoSpinner | ![CupertinoSpinner](/assets/cupertino_spinner.png) | AdaptCircularIndicator | +| IOSButton | ![IOSButton](/assets/iOS_button.png) | AdaptButton | +| IOSToggle | ![IOSToggle](/assets/iOS_toggle.png) | AdaptSwitch | +| MacOSButton | ![MacOSButton](/assets/macOS_button.png) | AdaptButton | +| MacOSSwitch | ![MacOSSwitch](/assets/macOS_switch.png) | AdaptSwitch | +| WindowsButton | ![WindowsButton](/assets/windows_button.png) | AdaptButton | +| WindowsProgressRing | ![WindowsProgressRing](/assets/windows_progress_ring.png) | AdaptCircularIndicator | +| WindowsSlider | ![WindowsSlider](/assets/windows_slider.png) | AdaptSlider | +| WindowsToggleSwitch | ![WindowsToggleSwitch](/assets/windows_toggle_switch.png) | AdaptSwitch | + +## Planned Components 🚧 +The long term goal of this library is to recreate all components from major design systems like +`Material`, `Cupertino`, `WinUI`, etc. to allow developers to seamlessly create multiplatform apps +that look, feel, and behave native-like. + +Expected upcoming components are: `Checkbox`, `TextField`, and `Date/Time Pickers`. + +## Run Demo/Sample +This repository also contains a sample Compose Multiplatform app that showcases the components +provided by this library. You can check out this repository and simply run the app, but before you +do that, please make sure to: + + - check your system with [KDoctor](https://github.com/Kotlin/kdoctor) + - install JDK 17 on your machine + - add `local.properties` file to the project root and set a path to Android SDK there + - run `./gradlew podInstall` in the project root + +### Android +To run the application on android device/emulator: + - open project in Android Studio and run imported android run configuration + +To build the application bundle: + - run `./gradlew :sample:composeApp:assembleDebug` + - find `.apk` file in `sample/composeApp/build/outputs/apk/debug/composeApp-debug.apk` + +### Desktop +Run the desktop application: `./gradlew :sample:composeApp:run` + +### iOS +To run the application on iPhone device/simulator: + - Open `sample/iosApp/iosApp.xcworkspace` in Xcode and run standard configuration + - Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio + +### Browser +Run the browser application: `./gradlew :sample:composeApp:jsBrowserDevelopmentRun` + +[badge-android]: http://img.shields.io/badge/-android-6EDB8D.svg?style=flat +[badge-ios]: http://img.shields.io/badge/-ios-CDCDCD.svg?style=flat +[badge-js]: http://img.shields.io/badge/-js-F8DB5D.svg?style=flat +[badge-jvm]: http://img.shields.io/badge/-jvm-DB413D.svg?style=flat +[badge-wasm]: https://img.shields.io/badge/-wasm-624FE8.svg?style=flat diff --git a/adapt/build.gradle.kts b/adapt/build.gradle.kts index 7120618..9742527 100644 --- a/adapt/build.gradle.kts +++ b/adapt/build.gradle.kts @@ -69,6 +69,7 @@ kotlin { implementation(compose.components.resources) implementation(compose.foundation) implementation(compose.material3) + implementation(compose.materialIconsExtended) implementation(compose.runtime) implementation(compose.ui) } diff --git a/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/CupertinoSlider.kt b/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/CupertinoSlider.kt index 3eb327c..1ff3262 100644 --- a/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/CupertinoSlider.kt +++ b/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/CupertinoSlider.kt @@ -19,11 +19,10 @@ package design.adapt.previews.cupertino import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.AddCircle -import androidx.compose.material.icons.filled.Menu +import androidx.compose.material.icons.automirrored.filled.VolumeMute +import androidx.compose.material.icons.automirrored.filled.VolumeUp import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf @@ -31,6 +30,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -45,9 +45,8 @@ private fun CupertinoSliderPreview() { MacOSTheme { Column( modifier = Modifier - .fillMaxSize() .background(Color.White) - .wrapContentSize(), + .padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(32.dp), ) { @@ -57,13 +56,19 @@ private fun CupertinoSliderPreview() { steps = 4, leadingIcon = { AdaptIcon( - imageVector = Icons.Default.Menu, + modifier = Modifier + .padding(end = 8.dp) + .alpha(0.7f), + imageVector = Icons.AutoMirrored.Filled.VolumeMute, contentDescription = null ) }, trailingIcon = { AdaptIcon( - imageVector = Icons.Default.AddCircle, + modifier = Modifier + .padding(start = 8.dp) + .alpha(0.7f), + imageVector = Icons.AutoMirrored.Filled.VolumeUp, contentDescription = null ) }, diff --git a/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/IOSToggle.kt b/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/IOSToggle.kt index 3afa07d..a70f5ac 100644 --- a/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/IOSToggle.kt +++ b/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/IOSToggle.kt @@ -16,9 +16,13 @@ package design.adapt.previews.cupertino +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import design.adapt.cupertino.IOSTheme @@ -28,7 +32,12 @@ import design.adapt.cupertino.IOSToggle @Composable private fun IOSTogglePreview() { IOSTheme { - Column(verticalArrangement = Arrangement.spacedBy(16.dp)) { + Column( + modifier = Modifier + .background(Color.White) + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { IOSToggle(checked = false, onCheckedChange = {}) IOSToggle(checked = true, onCheckedChange = {}) } diff --git a/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/MacOSSwitch.kt b/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/MacOSSwitch.kt index e25b5b7..2918d3a 100644 --- a/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/MacOSSwitch.kt +++ b/adapt/src/androidMain/kotlin/design/adapt/previews/cupertino/MacOSSwitch.kt @@ -16,6 +16,7 @@ package design.adapt.previews.cupertino +import androidx.compose.foundation.background import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -23,6 +24,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import design.adapt.cupertino.MacOSSwitch @@ -34,7 +36,9 @@ private fun MacOSSwitchPreview() { var checked by remember { mutableStateOf(true) } MacOSTheme { MacOSSwitch( - modifier = Modifier.padding(8.dp), + modifier = Modifier + .background(Color.White) + .padding(8.dp), checked = checked, onCheckedChange = { checked = it }, ) diff --git a/assets/cupertino_sliders.png b/assets/cupertino_sliders.png new file mode 100644 index 0000000000000000000000000000000000000000..170c1b41b109125cef54dbaf41b19795c943e4e8 GIT binary patch literal 15816 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 literal 0 HcmV?d00001 diff --git a/assets/cupertino_spinner.png b/assets/cupertino_spinner.png new file mode 100644 index 0000000000000000000000000000000000000000..5c57194a6b6ee5aecb1b92a5fe60d1f95ddff0c4 GIT binary patch literal 2335 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�zg$3bR%TPf5~zE1uRcy?9GHI^8vBm|m$37vb=4MnN4 zg@0`VzV|nvvuXyOR%NEM4c$=< zBE+6dhVr#y2k_&`z(o()TU!-kD4z!xhSR=(47j*997haQ0vzn~PM&pexe=HUaxoOe z&iiA_yg`feTIgq#lVS`-mTnKHcm5d;7ekc@dP)6rqY;o0ay68%x84EnnhtznxLvhX zv4;BX^l%!sr8miNufLs3#41EQ7Y9;W*3g7`%6aI7xaCQsL=gUR_S3i~Jl3`|? zDEL_vlCCV!OYQ&G=|gNGTDq{4enyu1aEUM#8AF=y$@8VrqNgb zQvMLD}#wxU==eP?Vq{o<|R@N9iz@vyU|rhvYx}C>%%6YgR)z{1-2n*9t-t2Q}e8W*n=am((xYjDUnttf44Q=j{0a z7`7Pr_So#-s;xn>hGL-)YP?o3vl(jB{&YC!w`yOBp3my>G_do%bX@A^0n_mJpkB(- z?3?mNIR16x%{Z2^jfUD25s(N!rRoj1pYU=!OqPO5yzh-MtsG+)#_WDafZQN(Z%Va3NhaAN4xqgC~UWf0IuQzsw z!`Ms=>X%c^^n}+5>ha}f9P4m!kTsMUkPu33C||6tSWx=SZkv%n-B7G0S#w0u`z7GM z1zz9p$nkJGj$q#WteJl%Llr{9yXpM63@RA*{qgBAN*}`a8M`tZkNrSBj&-ndk{T+1 zmD^B-h=U5;2BPOpN^Pihd(-(vHPu*4`r;^FRI{%!U`pnvhg(Urp$-}W38B=6;sC|| z!@x6a@;y_&CSN{cGj+*!;F@t}zCQUFit|f%sao*qdf??P!0KJVhJD_^g-=jXh8npf z9EbbWg5lpB6AtHIFFg-S*&~AzIm#cD=-WIf(UyCvbVI#&40!usG@Soo{F&>$re7}o zty~PnX#+OHGEM46Daugn+XYv{>&?F4s3hZEIoiy_QruC##GVja3PbS&^@q*bjz6c` zyiRMQ8!8u*`W;8eZxDwtMjdkfGW?E~Zmr@Bn zi?0wv9Y5)97f;gS*lc7n6bBxBaV_2_b9hgJBXlhpitqp(Uw*TXyODjdCe+hdjk{}C zwr`vgn>Ke$^_m??+P;yEOoj^fojAXwr;Q@0Oor08mGqero;$15_H9{@yL}^p=kfXE zYA9|n9MinPkl&JeKINvIh6=uaTsEYq)w$}4bbKn4q1XrG@*`jG9!~$x=Agc_I0kf2 zxsQym#L{y-U9MH~o4+xD+Z% zzn^8swVZjLnLI-!a@TH@p*R%IU7#Fv;4xxtIYC<}yVQyWV z$J2N3>aZ3ID%Zges|XzM(oT49L3z$h9ayncpyt~;J_D+ z#J=cF%`4ff=7+CjSYbvq@p*~iD(bQx^^U9by|==qu&*x?%^A|7W$$phDf zHipetuH^T{^ZxWWR@34G*QkV!_6hdFbN+mB&?xHg7puwmNKih2mye6r6A40zVLxfa zYvFxSv07Q~(Uke2)l@B}EmL~2w=DEsyX4G~g6G12f zuDD=7X2}FYTtTa6CJ61D=0|@PqAGkg z#m<+RsUWmR_N4mb0^KJ0Nt%9w;8B4dx;+Y0B}N*V3qt#1q;8AC)f;E13|B;4L=cjX zgO#ajbkuE8obJU%D)V*5#RMVAI9RWKUZ~rlH1bTf#ki;-BoPN&Q>|tuUlq7SU1XPW zaY0BDG!sX;+e8C!vAW=!#!U!95^%6qnW>vz>|0k{7+8sg#?1&qoZ*pr)i_@-?rkG) z&EHJprUW6L)aAcMuhi;^)0L_ED~?Cppdi?fS9S-wW!V~4;_He{#?1ZzV>(`q}7qD&@?;_Qc_ow-CD_#XU(Z3l4@VZdbL?m3pzULH`Gu W(xk|zqVjFf*itLx>FU@KDkX4k_Ir%}7bt&|Ok8 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 literal 0 HcmV?d00001 diff --git a/assets/macOS_button.png b/assets/macOS_button.png new file mode 100644 index 0000000000000000000000000000000000000000..d09a44c1c0901e64e876ed7913a301ea1a359efa GIT binary patch literal 4525 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 literal 0 HcmV?d00001 diff --git a/assets/windows_button.png b/assets/windows_button.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c4e154c793c09513e95a2f7952677fc6d18f95 GIT binary patch literal 4016 zcmdUy`#aO`AIDXn>O-NDRC5S@D96gj4$TO2D$@Z;u_#eaYlbn+giu0qNDM`emD55F zo601mmGfz{n!_4x%eiIvZq#*s|Ag=Nm-~8O*ZcjxpZDwex?ivRao;{=XC*DQS4u)c zLfXa}envuKotNnO{@E`#3+ZJdY zv_E|QHbe^<68|VtXCJ64V!iU|+r@Da0e^>}rL^wENxl1L-}=bE?*zm}O0ilhl@B~P z5PM+X&*^0(8%MtD5gfbhC8U&=_YU*2TL{G{6<8P9S)|;ZJQluQLLxF2yg}kX^#Ay< zUzgPw{=wK_^cJGfjp{vga;#r!PfsPm(le@axj}MI)(4@7312E8VXuxrji6NjEw%`s0=wm#>S`MKv+#N~ zd@`*YP(fGx^))Ul@6~Aqb{N~Y!aU`x{Drd5CN6MlXNLVx`^)vT1)MsgBc>FLVq#ti zd2esEY#>!#vZOk2ot7C*zYN=?ePJL2x+L;ecpbVo381kj>3JEt+Ov+M!QC z!#D#qWlb`8h}X>pwj$0vD!zls)*~Upy#QWMp~wFG<+hkF>4;AM+Wqa{E*YP6R76}{ z$th8gB`1hUcG*w8aOUqx^&8-D+goCN$-edgk^V0h9UY_8i=nJjQ!6y%Aac0kH-T#_ zYnZvq0xQsdNN?MISpGQ5JCNwF5NojJN?#?KHhJiyj8FY| zT*dxgK>VAd*+q3WQafGIysNQ+Jv*V#O4j61rdJ#6i{#M8TGdiT{a}+x>Gw+e)GleI z4qIcru|(FYgLO3tn7R2BZbi=A?{z$ZQX%WAkMs47#j)}I!sfOEBNP^IZe}&g|&U?^E zSjJ!6SNQ%Ev|*nwG+7kIxT73muI5unRKVuAqe}&E1)pFS4f;&x!l{k^@i$uCaN<05 zS1ol!*MnmRjr?Ng?xG@!yO=?Q7TfbvSIk`LOJ!cO7deZ@gWrw(UFj<+)Ir#$E^|&o zU@TbkktY-|4m|nL1$qD*kwKv}hC7WykP8B1=5k;v*eg+#AG?q9CtG1frullby62kP z*jrP;`JPvLbQr2M$#*E|>*(_)9I;!4<e1B>AgW{nxEh=H0{s_En3hD zsh>Va-!wC5bulY1oB7bMK{ivCBJ6F)d&SoIzroo*?pn|6i_2HQ?}g;*q9(Tl;oGpb z&!WbC?z2zDsyLM(LjHu$_%J41SPkX5BMq6U|!BcVy>9>dmEwc;0eGH zGT4bEc8lZVOclKK8U{fZli;d?f^zvyjp9;VIkLAFy z*~r~2;=|*pCs08!x>!^yWgXtcwlr|?jX!?xr+>BoQXE@+EJk`WWXF8n! zgYw=Qv8w#ekmY1^Nv2!e@}#7lB4CT7JYw#rG2A1w!7ENk$6aTJZvl z2oXDBcpkQEfw(E53OsZOM2H4^WwgC@Mt<31z~(AZmdfzC@nv`aso;fAcY6uj^>5BHBDlX}5e_JQWr>wj5E7O)p2%Fh~ z`Ds1tF{9hMt$mYhqdWu&ejcr`L=7haEfbUF1qw{XINzq}*L{?c6ZgdhkX2d(?NmV= zh$l&7x(-tz&9)k}2ePh8Goa=S5RePBAMVfmJm6E)ibsrmeTq*40OxmF?{@Z!Wp)WM zJJ{`~-{>$(+*cc7*|5+ZW$l=0{9T;oHtGPZ=iXMQgapbL_Ah?8cB3Okr}m`a9hTm) zpY||+*0MeYJJyW;bnWx1_-peu@qiASYsnGyNr3r<+Qx~7;)1!1%T104(KN*ZP-k|d zb}Lm}tlG4XmRY4c*pVH-LudSyH?E;Ui-e-RnU(%i8T5U|CzuMO{1BA!$tS3c%O^UQ zX123u9dY&rZmF({iHTu$QI^g`zl`$THbjGV57ze_Od|QmlNa^w31qNEctU#E4V(HT zQ(~8sJ`G`+**GrSB39O-Jub}mC0b>?M_39riK_4jI(^G2ndNQx+87ryTRG+K^oMn$ zF*fd_$6sH_T{={y>!e<@cP5cP>2e!0F6w4rClpXioWLt+o)dQlYmXbiC=Q=0Ks=KF!89WFiNJFHL`1RDhtE`$xWa#V5 z_%oEq{czp}ZW&d@S?KK1bVI)mU%ZHalLHEI96k4y#!*>Jd_7wcFtQzqHQU%clGF9* zv^<-x{k^oVBdYLBzWZw8e2Es$$!~{+*7vl3<=~dK7`V+_@`LlbnDlYiV>>L%bW#DT zEyjt8a+Z2VI-K=sLLY?|#x95D3weBH&Ex%-S6l*|8U;RB9EhFkw&Kg1Ds~cee$8%= zbEAUph$^tGVVWKxLR4)9w@D$m6?solA}%c#Dk{~XVj8WE&QFf$gAvz-0G=(WZn_FnbW})HrL*x+|F`@xkKY^e!+2ugbrv$1$3nntn2rjsr3I zkU90PmT+O+P(q%b7*^Kks7J5%>G%o0p*;8G;Xg#cX!8qf5}(Ao*o(F;G3H{v0ga`` z1ZviH;QjBfw{RprMS3>VuUC{@CETg|!z^~yANWBcGMQkxJbn$M?%AG{B@Y+`gLZq2 z7*R!7^zF_}L6mLF30~z*Wl^#J28mK6uz&R>rrEU6Y-!zm(QdRQbtIqaT(2H)ju5$* zwrK-d)$ygry;YK_h!py`vgp?zt)arS!op0#Q>>5ecEi(#*w}3Q-g@sj!d0*ndv6CNCK@`VhXdCh0PgaKi zA+XRPB^EK_xWZhu`GjA9UgHo*On4dUE9Yy`WjD|l#bl^QgRq&LCAsD`TmqlK#$ncL zx%LkM&WL8iuNoGhWylsHgVFs%tI?BOArGJnGAS6OK2u`*cKgS(h4fHtMSvZg5oxNy zrsn`Z!w_dD_fS+t3|sQND2&_&DKCOlLO{kxwdVX4z20YI8j_EBfxPHXKfc2sZu@*pZ|}Bib}K~>>P775h+h6NQ;rBGU*JCS zpELGUxH}^)x4lxQT`$CF5YP~?eDwopE%Ub`jZ@GTrD>!KlLh#1PfYT!Aq1=97l$r4>7h4=T-BqXF%{~rc{ ZO6WD7wsFTunCK=hVPjzjFEewC{10jaqf-C? literal 0 HcmV?d00001 diff --git a/assets/windows_progress_ring.png b/assets/windows_progress_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..88681bc4c32403093d18636f0d930491900c82b7 GIT binary patch literal 1866 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 literal 0 HcmV?d00001 diff --git a/assets/windows_toggle_switch.png b/assets/windows_toggle_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..ebebc35bea64500b619e93e1f275258beb8eb797 GIT binary patch literal 5487 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