Loading app/src/main/java/foundation/e/apps/ui/compose/theme/AppTheme.kt 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.compose.theme import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.res.colorResource import foundation.e.elib.R as eR @Composable fun AppTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit) { val colorScheme = if (darkTheme) { darkColorScheme( primary = colorResource(eR.color.e_action_bar_dark), secondary = colorResource(eR.color.e_action_bar_dark), tertiary = colorResource(eR.color.e_accent_dark), background = colorResource(eR.color.e_background_dark), surface = colorResource(eR.color.e_floating_background_dark), onPrimary = colorResource(eR.color.e_primary_text_color_dark), onSecondary = colorResource(eR.color.e_primary_text_color_light), onBackground = colorResource(eR.color.e_primary_text_color_dark), onSurface = colorResource(eR.color.e_primary_text_color_dark), ) } else { lightColorScheme( primary = colorResource(eR.color.e_action_bar_light), secondary = colorResource(eR.color.e_action_bar_light), tertiary = colorResource(eR.color.e_accent_light), background = colorResource(eR.color.e_background_light), surface = colorResource(eR.color.e_floating_background_light), onPrimary = colorResource(eR.color.e_primary_text_color_light), onSecondary = colorResource(eR.color.e_primary_text_color_dark), onBackground = colorResource(eR.color.e_primary_text_color_light), onSurface = colorResource(eR.color.e_primary_text_color_light), ) } MaterialTheme(colorScheme = colorScheme, typography = Typography, content = content) } app/src/main/java/foundation/e/apps/ui/compose/theme/Typography.kt 0 → 100644 +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.compose.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.Hyphens import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp // Set of Material typography styles to start with val Typography = Typography( bodyLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, ) ) val titleStyle = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Normal, fontSize = 20.sp, lineHeight = 24.sp, letterSpacing = 0.02.em, hyphens = Hyphens.Auto, ) val summaryStyle = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Normal, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.01.em, hyphens = Hyphens.Auto, ) val categoryStyle = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Medium, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.01.em, ) app/src/main/java/foundation/e/apps/ui/search/v2/SearchFragmentV2.kt 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.search.v2 import android.os.Bundle import android.view.View import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment import foundation.e.apps.R import foundation.e.apps.ui.compose.theme.AppTheme class SearchFragmentV2 : Fragment(R.layout.fragment_search_v2) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val composeView = view.findViewById<ComposeView>(R.id.composeView) composeView.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) composeView.setContent { AppTheme { } } } } app/src/main/java/foundation/e/apps/ui/search/v2/SearchViewModelV2.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.search.v2 import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel class SearchViewModelV2 @Inject constructor() : ViewModel() app/src/main/res/layout/fragment_search_v2.xml 0 → 100644 +7 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <androidx.compose.ui.platform.ComposeView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/composeView" android:layout_width="match_parent" android:layout_height="match_parent"> </androidx.compose.ui.platform.ComposeView> Loading
app/src/main/java/foundation/e/apps/ui/compose/theme/AppTheme.kt 0 → 100644 +57 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.compose.theme import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.res.colorResource import foundation.e.elib.R as eR @Composable fun AppTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit) { val colorScheme = if (darkTheme) { darkColorScheme( primary = colorResource(eR.color.e_action_bar_dark), secondary = colorResource(eR.color.e_action_bar_dark), tertiary = colorResource(eR.color.e_accent_dark), background = colorResource(eR.color.e_background_dark), surface = colorResource(eR.color.e_floating_background_dark), onPrimary = colorResource(eR.color.e_primary_text_color_dark), onSecondary = colorResource(eR.color.e_primary_text_color_light), onBackground = colorResource(eR.color.e_primary_text_color_dark), onSurface = colorResource(eR.color.e_primary_text_color_dark), ) } else { lightColorScheme( primary = colorResource(eR.color.e_action_bar_light), secondary = colorResource(eR.color.e_action_bar_light), tertiary = colorResource(eR.color.e_accent_light), background = colorResource(eR.color.e_background_light), surface = colorResource(eR.color.e_floating_background_light), onPrimary = colorResource(eR.color.e_primary_text_color_light), onSecondary = colorResource(eR.color.e_primary_text_color_dark), onBackground = colorResource(eR.color.e_primary_text_color_light), onSurface = colorResource(eR.color.e_primary_text_color_light), ) } MaterialTheme(colorScheme = colorScheme, typography = Typography, content = content) }
app/src/main/java/foundation/e/apps/ui/compose/theme/Typography.kt 0 → 100644 +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.compose.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.Hyphens import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp // Set of Material typography styles to start with val Typography = Typography( bodyLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, ) ) val titleStyle = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Normal, fontSize = 20.sp, lineHeight = 24.sp, letterSpacing = 0.02.em, hyphens = Hyphens.Auto, ) val summaryStyle = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Normal, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.01.em, hyphens = Hyphens.Auto, ) val categoryStyle = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Medium, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.01.em, )
app/src/main/java/foundation/e/apps/ui/search/v2/SearchFragmentV2.kt 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.search.v2 import android.os.Bundle import android.view.View import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment import foundation.e.apps.R import foundation.e.apps.ui.compose.theme.AppTheme class SearchFragmentV2 : Fragment(R.layout.fragment_search_v2) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val composeView = view.findViewById<ComposeView>(R.id.composeView) composeView.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) composeView.setContent { AppTheme { } } } }
app/src/main/java/foundation/e/apps/ui/search/v2/SearchViewModelV2.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * Copyright (C) 2026 e Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. * */ package foundation.e.apps.ui.search.v2 import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @HiltViewModel class SearchViewModelV2 @Inject constructor() : ViewModel()
app/src/main/res/layout/fragment_search_v2.xml 0 → 100644 +7 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <androidx.compose.ui.platform.ComposeView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/composeView" android:layout_width="match_parent" android:layout_height="match_parent"> </androidx.compose.ui.platform.ComposeView>