diff --git a/Jetsnack/app/build.gradle.kts b/Jetsnack/app/build.gradle.kts
index ba7fe9e01..8e2746048 100644
--- a/Jetsnack/app/build.gradle.kts
+++ b/Jetsnack/app/build.gradle.kts
@@ -125,7 +125,6 @@ dependencies {
implementation(libs.androidx.compose.ui.util)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.animation)
- implementation(libs.androidx.compose.material.iconsExtended)
implementation(libs.androidx.compose.ui.tooling.preview)
debugImplementation(libs.androidx.compose.ui.tooling)
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/model/Filter.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/model/Filter.kt
index 855b9fdfd..d438ff8e5 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/model/Filter.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/model/Filter.kt
@@ -16,16 +16,13 @@
package com.example.jetsnack.model
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Android
-import androidx.compose.material.icons.filled.SortByAlpha
-import androidx.compose.material.icons.filled.Star
+import androidx.annotation.DrawableRes
import androidx.compose.runtime.Stable
import androidx.compose.runtime.mutableStateOf
-import androidx.compose.ui.graphics.vector.ImageVector
+import com.example.jetsnack.R
@Stable
-class Filter(val name: String, enabled: Boolean = false, val icon: ImageVector? = null) {
+class Filter(val name: String, enabled: Boolean = false, @DrawableRes val icon: Int? = null) {
val enabled = mutableStateOf(enabled)
}
@@ -43,9 +40,9 @@ val priceFilters = listOf(
Filter(name = "$$$$"),
)
val sortFilters = listOf(
- Filter(name = "Android's favorite (default)", icon = Icons.Filled.Android),
- Filter(name = "Rating", icon = Icons.Filled.Star),
- Filter(name = "Alphabetical", icon = Icons.Filled.SortByAlpha),
+ Filter(name = "Android's favorite (default)", icon = R.drawable.ic_android),
+ Filter(name = "Rating", icon = R.drawable.ic_star),
+ Filter(name = "Alphabetical", icon = R.drawable.ic_sort_by_alpha),
)
val categoryFilters = listOf(
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Filters.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Filters.kt
index 48468407b..30121ea10 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Filters.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/Filters.kt
@@ -35,8 +35,6 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.rounded.FilterList
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@@ -48,6 +46,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@@ -82,7 +81,7 @@ fun FilterBar(
),
) {
Icon(
- imageVector = Icons.Rounded.FilterList,
+ painterResource(R.drawable.ic_filter_list),
tint = JetsnackTheme.colors.brand,
contentDescription = stringResource(R.string.label_filters),
modifier = Modifier.diagonalGradientBorder(
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/GradientTintedIconButton.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/GradientTintedIconButton.kt
index 053b2b23b..39ebb9070 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/GradientTintedIconButton.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/GradientTintedIconButton.kt
@@ -17,14 +17,13 @@
package com.example.jetsnack.ui.components
import android.content.res.Configuration
+import androidx.annotation.DrawableRes
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.interaction.collectIsPressedAsState
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Add
import androidx.compose.material3.Icon
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
@@ -34,14 +33,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.BlendMode
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import com.example.jetsnack.R
import com.example.jetsnack.ui.theme.JetsnackTheme
@Composable
fun JetsnackGradientTintedIconButton(
- imageVector: ImageVector,
+ @DrawableRes iconResourceId: Int,
onClick: () -> Unit,
contentDescription: String?,
modifier: Modifier = Modifier,
@@ -89,7 +89,7 @@ fun JetsnackGradientTintedIconButton(
color = Color.Transparent,
) {
Icon(
- imageVector = imageVector,
+ painter = painterResource(id = iconResourceId),
contentDescription = contentDescription,
modifier = modifierColor,
)
@@ -102,7 +102,7 @@ fun JetsnackGradientTintedIconButton(
private fun GradientTintedIconButtonPreview() {
JetsnackTheme {
JetsnackGradientTintedIconButton(
- imageVector = Icons.Default.Add,
+ iconResourceId = R.drawable.ic_add,
onClick = {},
contentDescription = "Demo",
modifier = Modifier.padding(4.dp),
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/QuantitySelector.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/QuantitySelector.kt
index 1d38ce155..4952bd276 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/QuantitySelector.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/components/QuantitySelector.kt
@@ -21,9 +21,6 @@ import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Add
-import androidx.compose.material.icons.filled.Remove
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -54,7 +51,7 @@ fun QuantitySelector(count: Int, decreaseItemCount: () -> Unit, increaseItemCoun
.align(Alignment.CenterVertically),
)
JetsnackGradientTintedIconButton(
- imageVector = Icons.Default.Remove,
+ iconResourceId = R.drawable.ic_remove,
onClick = decreaseItemCount,
contentDescription = stringResource(R.string.label_decrease),
modifier = Modifier.align(Alignment.CenterVertically),
@@ -74,7 +71,7 @@ fun QuantitySelector(count: Int, decreaseItemCount: () -> Unit, increaseItemCoun
)
}
JetsnackGradientTintedIconButton(
- imageVector = Icons.Default.Add,
+ iconResourceId = R.drawable.ic_add,
onClick = increaseItemCount,
contentDescription = stringResource(R.string.label_increase),
modifier = Modifier.align(Alignment.CenterVertically),
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/DestinationBar.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/DestinationBar.kt
index ba7ce52fd..b0189188b 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/DestinationBar.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/DestinationBar.kt
@@ -25,8 +25,6 @@ import androidx.compose.animation.slideOutVertically
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.outlined.ExpandMore
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
@@ -37,6 +35,7 @@ import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
@@ -87,7 +86,7 @@ fun DestinationBar(modifier: Modifier = Modifier) {
modifier = Modifier.align(Alignment.CenterVertically),
) {
Icon(
- imageVector = Icons.Outlined.ExpandMore,
+ painter = painterResource(id = R.drawable.ic_expand_more),
tint = JetsnackTheme.colors.brand,
contentDescription =
stringResource(R.string.label_select_delivery),
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/FilterScreen.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/FilterScreen.kt
index 449d96e94..f2c0dcabc 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/FilterScreen.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/FilterScreen.kt
@@ -18,6 +18,7 @@
package com.example.jetsnack.ui.home
+import androidx.annotation.DrawableRes
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.AnimatedVisibilityScope
import androidx.compose.animation.ExperimentalSharedTransitionApi
@@ -43,9 +44,6 @@ import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.verticalScroll
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Close
-import androidx.compose.material.icons.filled.Done
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@@ -62,7 +60,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
@@ -131,7 +129,7 @@ fun FilterScreen(sharedTransitionScope: SharedTransitionScope, animatedVisibilit
Row(modifier = Modifier.height(IntrinsicSize.Min)) {
IconButton(onClick = onDismiss) {
Icon(
- imageVector = Icons.Filled.Close,
+ painter = painterResource(id = R.drawable.ic_close),
contentDescription = stringResource(id = R.string.close),
)
}
@@ -280,14 +278,14 @@ fun FilterTitle(text: String) {
}
@Composable
-fun SortOption(text: String, icon: ImageVector?, onClickOption: () -> Unit, selected: Boolean) {
+fun SortOption(text: String, @DrawableRes icon: Int?, onClickOption: () -> Unit, selected: Boolean) {
Row(
modifier = Modifier
.padding(top = 14.dp)
.selectable(selected) { onClickOption() },
) {
if (icon != null) {
- Icon(imageVector = icon, contentDescription = null)
+ Icon(painter = painterResource(id = icon), contentDescription = null)
}
Text(
text = text,
@@ -298,7 +296,7 @@ fun SortOption(text: String, icon: ImageVector?, onClickOption: () -> Unit, sele
)
if (selected) {
Icon(
- imageVector = Icons.Filled.Done,
+ painter = painterResource(id = R.drawable.ic_check),
contentDescription = null,
tint = JetsnackTheme.colors.brand,
)
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/Home.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/Home.kt
index 00205d573..28d1f4b92 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/Home.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/Home.kt
@@ -16,6 +16,7 @@
package com.example.jetsnack.ui.home
+import androidx.annotation.DrawableRes
import androidx.annotation.FloatRange
import androidx.annotation.StringRes
import androidx.compose.animation.AnimatedContentScope
@@ -39,11 +40,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.outlined.AccountCircle
-import androidx.compose.material.icons.outlined.Home
-import androidx.compose.material.icons.outlined.Search
-import androidx.compose.material.icons.outlined.ShoppingCart
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@@ -58,13 +54,13 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.TransformOrigin
import androidx.compose.ui.graphics.graphicsLayer
-import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.MeasureResult
import androidx.compose.ui.layout.MeasureScope
import androidx.compose.ui.layout.Placeable
import androidx.compose.ui.layout.layoutId
import androidx.compose.ui.platform.LocalConfiguration
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
@@ -157,11 +153,11 @@ fun NavGraphBuilder.addHomeGraph(onSnackSelected: (Long, String, NavBackStackEnt
}
}
-enum class HomeSections(@StringRes val title: Int, val icon: ImageVector, val route: String) {
- FEED(R.string.home_feed, Icons.Outlined.Home, "home/feed"),
- SEARCH(R.string.home_search, Icons.Outlined.Search, "home/search"),
- CART(R.string.home_cart, Icons.Outlined.ShoppingCart, "home/cart"),
- PROFILE(R.string.home_profile, Icons.Outlined.AccountCircle, "home/profile"),
+enum class HomeSections(@StringRes val title: Int, @DrawableRes val icon: Int, val route: String) {
+ FEED(R.string.home_feed, R.drawable.ic_home, "home/feed"),
+ SEARCH(R.string.home_search, R.drawable.ic_search, "home/search"),
+ CART(R.string.home_cart, R.drawable.ic_shopping_cart, "home/cart"),
+ PROFILE(R.string.home_profile, R.drawable.ic_account_circle, "home/profile"),
}
@Composable
@@ -209,7 +205,7 @@ fun JetsnackBottomBar(
JetsnackBottomNavigationItem(
icon = {
Icon(
- imageVector = section.icon,
+ painter = painterResource(id = section.icon),
tint = tint,
contentDescription = text,
)
diff --git a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/cart/Cart.kt b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/cart/Cart.kt
index ab47bdc2f..d62a31d20 100644
--- a/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/cart/Cart.kt
+++ b/Jetsnack/app/src/main/java/com/example/jetsnack/ui/home/cart/Cart.kt
@@ -43,9 +43,6 @@ import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Close
-import androidx.compose.material.icons.filled.DeleteForever
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@@ -60,6 +57,7 @@ import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.layout.LastBaseline
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
@@ -259,7 +257,7 @@ private fun SwipeDismissItemBackground(progress: Float) {
)
Icon(
- imageVector = Icons.Filled.DeleteForever,
+ painter = painterResource(id = R.drawable.ic_delete_forever),
modifier = Modifier
.size(32.dp)
.graphicsLayer(alpha = iconAlpha),
@@ -345,7 +343,7 @@ fun CartItem(
.padding(top = 12.dp),
) {
Icon(
- imageVector = Icons.Filled.Close,
+ painter = painterResource(id = R.drawable.ic_close),
tint = JetsnackTheme.colors.iconSecondary,
contentDescription = stringResource(R.string.label_remove),
)
diff --git a/Jetsnack/app/src/main/res/drawable/ic_account_circle.xml b/Jetsnack/app/src/main/res/drawable/ic_account_circle.xml
new file mode 100644
index 000000000..677551f7a
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_account_circle.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_add.xml b/Jetsnack/app/src/main/res/drawable/ic_add.xml
new file mode 100644
index 000000000..2fcde96c9
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_add.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_android.xml b/Jetsnack/app/src/main/res/drawable/ic_android.xml
new file mode 100644
index 000000000..d67c3392d
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_android.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_check.xml b/Jetsnack/app/src/main/res/drawable/ic_check.xml
new file mode 100644
index 000000000..6f1fcce82
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_check.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_close.xml b/Jetsnack/app/src/main/res/drawable/ic_close.xml
new file mode 100644
index 000000000..b604725ec
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_close.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_delete_forever.xml b/Jetsnack/app/src/main/res/drawable/ic_delete_forever.xml
new file mode 100644
index 000000000..596ca765c
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_delete_forever.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_expand_more.xml b/Jetsnack/app/src/main/res/drawable/ic_expand_more.xml
new file mode 100644
index 000000000..b2ab526d5
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_expand_more.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_filter_list.xml b/Jetsnack/app/src/main/res/drawable/ic_filter_list.xml
new file mode 100644
index 000000000..1789ba74a
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_filter_list.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_home.xml b/Jetsnack/app/src/main/res/drawable/ic_home.xml
new file mode 100644
index 000000000..18cdcd1a9
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_home.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_remove.xml b/Jetsnack/app/src/main/res/drawable/ic_remove.xml
new file mode 100644
index 000000000..0cc9cffb4
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_remove.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_search.xml b/Jetsnack/app/src/main/res/drawable/ic_search.xml
new file mode 100644
index 000000000..20c7b4e73
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_search.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_shopping_cart.xml b/Jetsnack/app/src/main/res/drawable/ic_shopping_cart.xml
new file mode 100644
index 000000000..92a75cfca
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_shopping_cart.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_sort_by_alpha.xml b/Jetsnack/app/src/main/res/drawable/ic_sort_by_alpha.xml
new file mode 100644
index 000000000..38d2d0f8e
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_sort_by_alpha.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Jetsnack/app/src/main/res/drawable/ic_star.xml b/Jetsnack/app/src/main/res/drawable/ic_star.xml
new file mode 100644
index 000000000..3dea3fcdc
--- /dev/null
+++ b/Jetsnack/app/src/main/res/drawable/ic_star.xml
@@ -0,0 +1,9 @@
+
+
+