diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 2535edf2..5b81d850 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -139,6 +139,7 @@ dependencies { implementation(libs.compose.ui) implementation(libs.compose.ui.graphics) implementation(libs.compose.material3) + implementation(libs.compose.material.icons.extended) implementation(libs.compose.ui.text.google.fonts) debugImplementation(libs.compose.ui.tooling) implementation(libs.compose.ui.tooling.preview) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/shared/widgets/MainAppBarActions.kt b/android/app/src/main/java/com/fabledsword/minstrel/shared/widgets/MainAppBarActions.kt index 995423eb..d6b32c7e 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/shared/widgets/MainAppBarActions.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/shared/widgets/MainAppBarActions.kt @@ -11,12 +11,13 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.LibraryMusic import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavHostController import com.composables.icons.lucide.House import com.composables.icons.lucide.Lucide -import com.composables.icons.lucide.SquareLibrary import com.composables.icons.lucide.EllipsisVertical import com.composables.icons.lucide.Search as SearchIcon import com.fabledsword.minstrel.nav.Admin @@ -58,7 +59,14 @@ fun MainAppBarActions( } if (currentRouteName != Library::class.qualifiedName) { IconButton(onClick = { navController.navigate(Library) }) { - Icon(Lucide.SquareLibrary, contentDescription = "Library") + // Intentional cross-family icon — Lucide has no + // equivalent "library + music" glyph and the literal + // library icons (Library / LibraryBig / SquareLibrary) + // don't read as "music collection" without a label. + // Material's Outlined LibraryMusic is the canonical + // music-library symbol; the outlined variant matches + // Lucide's stroke style closely enough to blend. + Icon(Icons.Outlined.LibraryMusic, contentDescription = "Library") } } if (currentRouteName != SearchRoute::class.qualifiedName) { diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 8a2be34f..5fc19f10 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -51,6 +51,11 @@ compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } compose-material3 = { module = "androidx.compose.material3:material3" } +# material-icons-extended supplies the full Material Icons catalog +# (Outlined / Filled / Rounded / Sharp / TwoTone). We use the Outlined +# variant for LibraryMusic — its stroke style blends with Lucide. +# Version pinned by compose-bom. +compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" } compose-ui-text-google-fonts = { module = "androidx.compose.ui:ui-text-google-fonts" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" }