diff --git a/.gitignore b/.gitignore
index 3c15043..d0902d2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,8 @@ local.properties
.idea
/manager/signing.properties
/out
-/signing.properties
\ No newline at end of file
+/signing.properties
+/CLAUDE.md
+/AGENTS.md
+/CLAUDE.md
+/AGENTS.md
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b889fa1..3688063 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -40,6 +40,7 @@ appcompat = "1.7.1"
junit = "4.13.2"
junitVersion = "1.3.0"
espressoCore = "3.7.0"
+capsule = "2.1.3"
[libraries]
androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" }
@@ -100,6 +101,8 @@ sheet-compose-dialogs-core = { group = "com.maxkeppeler.sheets-compose-dialogs",
sheet-compose-dialogs-list = { group = "com.maxkeppeler.sheets-compose-dialogs", name = "list", version.ref = "sheets-compose-dialogs" }
sheet-compose-dialogs-input = { group = "com.maxkeppeler.sheets-compose-dialogs", name = "input", version.ref = "sheets-compose-dialogs" }
+capsule = { module = "io.github.kyant0:capsule", version.ref = "capsule" }
+
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
diff --git a/manager/build.gradle.kts b/manager/build.gradle.kts
index 2b32a64..358d547 100644
--- a/manager/build.gradle.kts
+++ b/manager/build.gradle.kts
@@ -93,4 +93,6 @@ dependencies {
implementation(libs.sheet.compose.dialogs.core)
implementation(libs.sheet.compose.dialogs.list)
implementation(libs.sheet.compose.dialogs.input)
+
+ implementation(libs.capsule)
}
\ No newline at end of file
diff --git a/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt b/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt
index f5c6ebc..b15ca1f 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt
@@ -21,7 +21,7 @@ import androidx.compose.animation.slideOutVertically
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.material3.Badge
import androidx.compose.material3.BadgedBox
import androidx.compose.material3.Card
@@ -275,7 +275,7 @@ class AxActivity : ComponentActivity() {
containerColor = MaterialTheme.colorScheme.surfaceContainer
),
elevation = CardDefaults.cardElevation(0.dp),
- shape = RoundedCornerShape(topStart = 15.dp, topEnd = 15.dp)
+ shape = AppShape.Top15
) {
NavigationBar(
containerColor = Color.Transparent,
@@ -337,4 +337,4 @@ class AxActivity : ComponentActivity() {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt b/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt
index f4379e7..1560130 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt
@@ -17,7 +17,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -165,7 +165,7 @@ fun RequestPermissionDialog(
onDismissRequest = { onDeny() },
sheetState = sheetState,
containerColor = MaterialTheme.colorScheme.surface,
- shape = RoundedCornerShape(topStart = 28.dp, topEnd = 28.dp),
+ shape = AppShape.Top28,
dragHandle = { }
) {
Column(
@@ -185,7 +185,7 @@ fun RequestPermissionDialog(
pm = pm,
modifier = Modifier
.size(56.dp)
- .clip(RoundedCornerShape(12.dp))
+ .clip(AppShape.R12)
)
Spacer(Modifier.width(12.dp))
@@ -231,7 +231,7 @@ fun RequestPermissionDialog(
onClick = {
scope.launch { sheetState.hide() }.invokeOnCompletion { onAllow(false) }
},
- shape = RoundedCornerShape(12.dp)
+ shape = AppShape.R12
) {
Text(stringResource(R.string.permission_allow_all_time))
}
@@ -240,7 +240,7 @@ fun RequestPermissionDialog(
onClick = {
scope.launch { sheetState.hide() }.invokeOnCompletion { onAllow(true) }
},
- shape = RoundedCornerShape(12.dp),
+ shape = AppShape.R12,
colors = ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.surfaceVariant,
contentColor = MaterialTheme.colorScheme.onSurfaceVariant
@@ -253,7 +253,7 @@ fun RequestPermissionDialog(
onClick = {
scope.launch { sheetState.hide() }.invokeOnCompletion { onDeny() }
},
- shape = RoundedCornerShape(12.dp),
+ shape = AppShape.R12,
colors = ButtonDefaults.buttonColors(
containerColor = Color.Transparent,
contentColor = MaterialTheme.colorScheme.error
@@ -289,4 +289,4 @@ fun AppIcon(
},
modifier = modifier
)
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt b/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt
index 12ddee2..817d164 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt
@@ -34,6 +34,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import frb.axeron.manager.R
+import frb.axeron.manager.ui.theme.AppShape
import frb.axeron.manager.ui.viewmodel.PluginViewModel
import frb.axeron.manager.ui.viewmodel.PrivilegeViewModel
@@ -48,6 +49,7 @@ fun StatusCard() {
}
ElevatedCard(
+ shape = AppShape.R12,
modifier = Modifier
.fillMaxWidth()
.height(IntrinsicSize.Max)
@@ -139,6 +141,7 @@ fun PluginCard(
ElevatedCard(
colors = CardDefaults.cardColors(),
+ shape = AppShape.R12,
modifier = modifier
.fillMaxWidth()
.height(IntrinsicSize.Max)
@@ -208,6 +211,7 @@ fun PrivilegeCard(
val containerColor = colorScheme.surfaceVariant
ElevatedCard(
colors = CardDefaults.cardColors(),
+ shape = AppShape.R12,
modifier = modifier
.fillMaxWidth()
.height(IntrinsicSize.Max)
@@ -265,4 +269,4 @@ fun PrivilegeCard(
}
}
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt
index 27c5e89..0c062f5 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt
@@ -13,7 +13,7 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -469,7 +469,7 @@ private fun LoadingDialog() {
properties = DialogProperties(dismissOnClickOutside = false, dismissOnBackPress = false)
) {
Surface(
- modifier = Modifier.size(100.dp), shape = RoundedCornerShape(8.dp)
+ modifier = Modifier.size(100.dp), shape = AppShape.R8
) {
Box(
contentAlignment = Alignment.Center,
@@ -586,4 +586,4 @@ private fun MarkdownContent(content: String) {
it.setTextColor(contentColor.toArgb())
}
)
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt b/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt
index a00ce26..e062a7c 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt
@@ -7,7 +7,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Tune
import androidx.compose.material3.Card
@@ -39,7 +39,7 @@ fun LabelPreview() {
@Composable
fun ExtraLabel() {
Card(
- shape = RoundedCornerShape(3.dp),
+ shape = AppShape.R3,
) {
Row(
modifier = Modifier
@@ -112,7 +112,7 @@ object ExtraLabelDefaults {
@Composable get() = ExtraLabelStyle(
containerColor = MaterialTheme.colorScheme.primary,
contentColor = MaterialTheme.colorScheme.onPrimary,
- shape = RoundedCornerShape(3.dp),
+ shape = AppShape.R3,
textStyle = TextStyle(
fontSize = 8.sp,
fontWeight = FontWeight.Medium,
@@ -138,7 +138,7 @@ fun ExtraLabel(
.then(
if (onClick != null) Modifier.clickable { onClick() } else Modifier
),
- shape = RoundedCornerShape(3.dp),
+ shape = AppShape.R3,
colors = CardDefaults.cardColors().copy(
containerColor = style.containerColor,
contentColor = style.contentColor
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt
index b988feb..ea3d0d2 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt
@@ -9,7 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.CardDefaults
@@ -42,7 +42,7 @@ fun MaterialDialog(
)
) {
ElevatedCard(
- shape = RoundedCornerShape(24.dp),
+ shape = AppShape.R24,
elevation = CardDefaults.cardElevation(8.dp),
modifier = Modifier
.fillMaxWidth()
@@ -112,7 +112,7 @@ fun MaterialBottomSheet(
containerColor = MaterialTheme.colorScheme.surfaceContainerLowest,
onDismissRequest = { onDismissRequest() },
sheetState = sheetState,
- shape = RoundedCornerShape(topStart = 24.dp, topEnd = 24.dp),
+ shape = AppShape.Top24,
tonalElevation = 8.dp,
dragHandle = dragHandle
) {
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt
index a8073e0..360e7cf 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt
@@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -184,9 +184,9 @@ fun PaletteDialog(
modifier = Modifier
.fillMaxWidth()
.height(48.dp)
- .clip(RoundedCornerShape(8.dp))
+ .clip(AppShape.R8)
.background(selectedColor)
- .border(1.dp, MaterialTheme.colorScheme.outline, RoundedCornerShape(8.dp))
+ .border(1.dp, MaterialTheme.colorScheme.outline, AppShape.R8)
)
}
},
@@ -239,4 +239,4 @@ private fun SliderRow(
}
}
-// aaaa
\ No newline at end of file
+// aaaa
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt
index a26221e..5be4adf 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt
@@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExpandLess
import androidx.compose.material.icons.filled.ExpandMore
@@ -56,7 +56,7 @@ fun VerticalSlideSeekbar(
modifier = Modifier
.width(65.dp)
.height(height)
- .background(Color(0xFF303030), RoundedCornerShape(46.dp))
+ .background(Color(0xFF303030), AppShape.R46)
.pointerInput(Unit) {
detectVerticalDragGestures(
onVerticalDrag = { _, dragAmount ->
@@ -204,4 +204,4 @@ fun PowerDialog(
}
}
}
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt b/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt
index 8da2ec7..05dbc8d 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt
@@ -7,7 +7,7 @@ import androidx.compose.animation.fadeOut
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
@@ -119,7 +119,7 @@ fun SearchAppBar(
unfocusedIndicatorColor = Color.Transparent, // garis saat tidak fokus
disabledIndicatorColor = Color.Transparent // garis saat disabled
),
- shape = RoundedCornerShape(12.dp),
+ shape = AppShape.R12,
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {
keyboardController?.hide()
diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt b/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt
index 36f2551..9556c15 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt
@@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExpandMore
import androidx.compose.material3.Card
@@ -73,8 +73,8 @@ fun SettingsItem(
contentColor = contentColor
),
shape = when (type) {
- SettingsItemType.PARENT -> CardDefaults.elevatedShape
- SettingsItemType.CHILD -> RoundedCornerShape(0.dp)
+ SettingsItemType.PARENT -> AppShape.R12
+ SettingsItemType.CHILD -> AppShape.R0
},
elevation = when (type) {
SettingsItemType.PARENT -> CardDefaults.elevatedCardElevation()
@@ -204,8 +204,8 @@ fun SettingsItemExpanded(
contentColor = contentColor
),
shape = when (type) {
- SettingsItemType.PARENT -> CardDefaults.elevatedShape
- SettingsItemType.CHILD -> RoundedCornerShape(0.dp)
+ SettingsItemType.PARENT -> AppShape.R12
+ SettingsItemType.CHILD -> AppShape.R0
},
elevation = when (type) {
SettingsItemType.PARENT -> CardDefaults.elevatedCardElevation()
@@ -295,7 +295,7 @@ fun CheckBoxText(
.height(36.dp)
.fillMaxWidth()
.padding(horizontal = 12.dp, vertical = 2.dp),
- shape = RoundedCornerShape(5.dp),
+ shape = AppShape.R5,
onClick = {
onCheckedChange(!checked)
}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt
index 841de4e..e93a186 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt
@@ -68,6 +68,7 @@ import frb.axeron.manager.R
import frb.axeron.manager.adb.AdbStateInfo
import frb.axeron.manager.ui.component.ConfirmResult
import frb.axeron.manager.ui.component.rememberConfirmDialog
+import frb.axeron.manager.ui.theme.AppShape
import frb.axeron.manager.ui.util.ClipboardUtil
import frb.axeron.manager.ui.viewmodel.ActivateViewModel
import frb.axeron.manager.ui.viewmodel.ViewModelGlobal
@@ -124,6 +125,7 @@ fun ActivateScreen(navigator: DestinationsNavigator, viewModelGlobal: ViewModelG
colors = CardDefaults.cardColors().copy(
containerColor = MaterialTheme.colorScheme.errorContainer
),
+ shape = AppShape.R12,
modifier = Modifier.fillMaxWidth()
) {
Column(
@@ -168,6 +170,7 @@ fun TcpDebuggingCard(
elevation = CardDefaults.cardElevation(
defaultElevation = 1.dp
),
+ shape = AppShape.R12,
modifier = Modifier.fillMaxWidth()
) {
Column(
@@ -308,6 +311,7 @@ fun WirelessDebuggingCard(
elevation = CardDefaults.cardElevation(
defaultElevation = 1.dp
),
+ shape = AppShape.R12,
modifier = Modifier.fillMaxWidth()
) {
Column(
@@ -481,6 +485,7 @@ fun RootCard(
elevation = CardDefaults.cardElevation(
defaultElevation = 1.dp
),
+ shape = AppShape.R12,
modifier = Modifier.fillMaxWidth()
) {
Column(
@@ -585,6 +590,7 @@ fun ComputerCard() {
elevation = CardDefaults.cardElevation(
defaultElevation = 1.dp
),
+ shape = AppShape.R12,
modifier = Modifier.fillMaxWidth()
) {
Column(
@@ -673,4 +679,4 @@ fun ComputerCard() {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt
index f5871bd..69cb951 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt
@@ -87,6 +87,7 @@ import frb.axeron.manager.ui.component.AxSnackBarHost
import frb.axeron.manager.ui.component.KeyEventBlocker
import frb.axeron.manager.ui.component.rememberLoadingDialog
import frb.axeron.manager.ui.component.resolveDisplayName
+import frb.axeron.manager.ui.theme.AppShape
import frb.axeron.manager.ui.theme.GREEN
import frb.axeron.manager.ui.theme.ORANGE
import frb.axeron.manager.ui.theme.RED
@@ -192,7 +193,8 @@ fun InstallDialog(
modifier = Modifier.fillMaxWidth(),
colors = CardDefaults.elevatedCardColors(
containerColor = MaterialTheme.colorScheme.surfaceContainerLow
- )
+ ),
+ shape = AppShape.R12
) {
Row(
modifier = Modifier
@@ -614,4 +616,4 @@ private fun TopBar(
},
scrollBehavior = scrollBehavior
)
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt
index 5be3a13..f268110 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt
@@ -90,6 +90,7 @@ import frb.axeron.manager.ui.component.PowerDialog
import frb.axeron.manager.ui.component.PrivilegeCard
import frb.axeron.manager.ui.component.rememberConfirmDialog
import frb.axeron.manager.ui.component.rememberLoadingDialog
+import frb.axeron.manager.ui.theme.AppShape
import frb.axeron.manager.ui.util.checkNewVersion
import frb.axeron.manager.ui.util.module.LatestVersionInfo
import frb.axeron.manager.ui.viewmodel.ActivateViewModel
@@ -247,6 +248,7 @@ fun SupportCard() {
val githubFahrez182 = "https://github.com/fahrez182/AxManager"
ElevatedCard(
+ shape = AppShape.R12,
onClick = {
uriHandler.openUri(githubFahrez182)
}
@@ -286,6 +288,7 @@ fun LearnCard() {
val learnAxManager = "https://fahrez182.github.io/AxManager"
ElevatedCard(
+ shape = AppShape.R12,
onClick = {
uriHandler.openUri(learnAxManager)
}
@@ -345,6 +348,7 @@ fun StatusCard(
}
}
),
+ shape = AppShape.R12,
modifier = Modifier
.fillMaxWidth()
.height(IntrinsicSize.Min)
@@ -655,7 +659,8 @@ fun WarningCard(
ElevatedCard(
colors = CardDefaults.elevatedCardColors(
containerColor = color
- )
+ ),
+ shape = AppShape.R12
) {
Row(
modifier = Modifier
@@ -678,6 +683,7 @@ fun InfoCard(activateViewModel: ActivateViewModel) {
elevation = CardDefaults.cardElevation(
defaultElevation = 1.dp
),
+ shape = AppShape.R12,
modifier = Modifier.fillMaxWidth()
) {
Column(
@@ -688,7 +694,7 @@ fun InfoCard(activateViewModel: ActivateViewModel) {
) {
@Composable
fun InfoCardItem(label: String, content: String, icon: Any? = null) {
- Card {
+ Card(shape = AppShape.R12) {
Row(
modifier = Modifier.padding(vertical = 8.dp, horizontal = 12.dp),
verticalAlignment = Alignment.CenterVertically
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt
index 98a80e0..c38c2e4 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt
@@ -28,7 +28,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.foundation.text.BasicText
import androidx.compose.foundation.text.selection.SelectionContainer
import androidx.compose.material.icons.Icons
@@ -415,7 +415,7 @@ fun QuickShellScreen(navigator: DestinationsNavigator, viewModelGlobal: ViewMode
ElevatedCard(
- shape = RoundedCornerShape(10.dp),
+ shape = AppShape.R10,
colors = CardDefaults.elevatedCardColors().copy(
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh
// containerColor = Color.Transparent
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt
index a4f5e0b..7026c5b 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt
@@ -17,7 +17,7 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
@@ -267,7 +267,7 @@ fun SettingsScreen(navigator: DestinationsNavigator, viewModelGlobal: ViewModelG
unfocusedContainerColor = MaterialTheme.colorScheme.surfaceContainerLowest,
disabledIndicatorColor = Color.Transparent
),
- shape = RoundedCornerShape(12.dp),
+ shape = AppShape.R12,
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
),
@@ -495,4 +495,4 @@ fun DeveloperInfo(
}
}
}
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt
index 76dd47e..f011be4 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt
@@ -27,7 +27,7 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
-import androidx.compose.foundation.shape.RoundedCornerShape
+import frb.axeron.manager.ui.theme.AppShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.TextSnippet
@@ -343,7 +343,7 @@ fun RoundedTabRow(
modifier = Modifier
.fillMaxWidth()
.padding(12.dp)
- .clip(RoundedCornerShape(50)), // biar seluruh tabrow bulat
+ .clip(AppShape.R50Percent), // biar seluruh tabrow bulat
containerColor = MaterialTheme.colorScheme.surfaceVariant,
indicator = { null },
edgePadding = 0.dp,
@@ -362,7 +362,7 @@ fun RoundedTabRow(
selected = isSelected,
onClick = { onSelect(type) },
modifier = Modifier
- .clip(RoundedCornerShape(50))
+ .clip(AppShape.R50Percent)
.background(
if (isSelected) MaterialTheme.colorScheme.primary
else MaterialTheme.colorScheme.surfaceVariant
@@ -412,7 +412,8 @@ fun TableItem(
},
colors = CardDefaults.elevatedCardColors(
containerColor = MaterialTheme.colorScheme.surfaceContainerLowest
- )
+ ),
+ shape = AppShape.R12
) {
Column(
modifier = Modifier
@@ -673,7 +674,7 @@ fun TableEditor(
unfocusedTextColor = MaterialTheme.colorScheme.onSurfaceVariant,
disabledTextColor = MaterialTheme.colorScheme.onSurfaceVariant,
),
- shape = RoundedCornerShape(12.dp),
+ shape = AppShape.R12,
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
)
} else {
@@ -717,7 +718,7 @@ fun TableEditor(
unfocusedTextColor = MaterialTheme.colorScheme.onSurfaceVariant,
disabledTextColor = MaterialTheme.colorScheme.onSurfaceVariant,
),
- shape = RoundedCornerShape(12.dp),
+ shape = AppShape.R12,
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
)
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt
index 805791c..c60bbbf 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt
@@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
-import androidx.compose.foundation.shape.CornerSize
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.DeveloperMode
@@ -66,6 +65,7 @@ import frb.axeron.manager.ui.component.SearchAppBar
import frb.axeron.manager.ui.component.SettingsItem
import frb.axeron.manager.ui.component.rememberLoadingDialog
import frb.axeron.manager.ui.screen.FlashIt
+import frb.axeron.manager.ui.theme.AppShape
import frb.axeron.manager.ui.util.LocalSnackbarHost
import frb.axeron.manager.ui.viewmodel.PluginViewModel
import frb.axeron.manager.ui.viewmodel.SettingsViewModel
@@ -332,12 +332,7 @@ fun ExtraFilterSettings(
shape = SegmentedButtonDefaults.itemShape(
index = index,
count = ascOption.size,
- baseShape = SegmentedButtonDefaults.baseShape.copy(
- bottomStart = CornerSize(6.dp),
- bottomEnd = CornerSize(6.dp),
- topStart = CornerSize(6.dp),
- topEnd = CornerSize(6.dp)
- )
+ baseShape = AppShape.R6
),
onClick = { pluginViewModel.setSelectedAsc(index) },
selected = index == pluginViewModel.getSelectedAsc,
@@ -365,12 +360,7 @@ fun ExtraFilterSettings(
shape = SegmentedButtonDefaults.itemShape(
index = index,
count = sortOption.size,
- baseShape = SegmentedButtonDefaults.baseShape.copy(
- bottomStart = CornerSize(6.dp),
- bottomEnd = CornerSize(6.dp),
- topStart = CornerSize(6.dp),
- topEnd = CornerSize(6.dp)
- )
+ baseShape = AppShape.R6
),
onClick = { pluginViewModel.setSelectedSort(index) },
selected = index == pluginViewModel.getSelectedSort,
@@ -422,4 +412,4 @@ fun ItemPreview() {
expanded = false,
onExpandToggle = {},
)
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt
index 373e234..4aea4db 100644
--- a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt
+++ b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt
@@ -73,6 +73,7 @@ import frb.axeron.manager.ui.component.createWebUIShortcut
import frb.axeron.manager.ui.component.formatSize
import frb.axeron.manager.ui.component.rememberConfirmDialog
import frb.axeron.manager.ui.component.rememberLoadingDialog
+import frb.axeron.manager.ui.theme.AppShape
import frb.axeron.manager.ui.viewmodel.PluginViewModel
import frb.axeron.manager.ui.viewmodel.SettingsViewModel
import frb.axeron.server.PluginInfo
@@ -156,9 +157,10 @@ fun PluginItem(
}
ElevatedCard(
+ shape = AppShape.R12,
modifier = Modifier
.fillMaxWidth()
- .clip(MaterialTheme.shapes.medium)
+ .clip(AppShape.R12)
.combinedClickable(
onClick = onExpandToggle,
)
@@ -616,4 +618,4 @@ fun PluginItem(
}
}
}
-}
\ No newline at end of file
+}
diff --git a/manager/src/main/java/frb/axeron/manager/ui/theme/AppShape.kt b/manager/src/main/java/frb/axeron/manager/ui/theme/AppShape.kt
new file mode 100644
index 0000000..1fd7781
--- /dev/null
+++ b/manager/src/main/java/frb/axeron/manager/ui/theme/AppShape.kt
@@ -0,0 +1,22 @@
+package frb.axeron.manager.ui.theme
+
+import androidx.compose.ui.unit.dp
+import com.kyant.capsule.ContinuousRoundedRectangle
+
+object AppShape {
+ val R0 = ContinuousRoundedRectangle(0.dp)
+ val R3 = ContinuousRoundedRectangle(3.dp)
+ val R5 = ContinuousRoundedRectangle(5.dp)
+ val R6 = ContinuousRoundedRectangle(6.dp)
+ val R8 = ContinuousRoundedRectangle(8.dp)
+ val R10 = ContinuousRoundedRectangle(10.dp)
+ val R12 = ContinuousRoundedRectangle(12.dp)
+ val R24 = ContinuousRoundedRectangle(24.dp)
+ val R46 = ContinuousRoundedRectangle(46.dp)
+
+ val R50Percent = ContinuousRoundedRectangle(50)
+
+ val Top15 = ContinuousRoundedRectangle(topStart = 15.dp, topEnd = 15.dp)
+ val Top24 = ContinuousRoundedRectangle(topStart = 24.dp, topEnd = 24.dp)
+ val Top28 = ContinuousRoundedRectangle(topStart = 28.dp, topEnd = 28.dp)
+}
diff --git a/manager/src/main/res/values-zh-rCN/strings.xml b/manager/src/main/res/values-zh-rCN/strings.xml
index e011e41..5656665 100644
--- a/manager/src/main/res/values-zh-rCN/strings.xml
+++ b/manager/src/main/res/values-zh-rCN/strings.xml
@@ -3,11 +3,11 @@
运行中
MIUI用户可能需要将通知切换为原生样式。
否则您可能无法从通知中输入配对码。
- 全局设置
- 安全设置
- 系统设置
- 安卓属性
- Axeron 环境
+ Global 表
+ Secuer 表
+ System 表
+ Android Properties
+ Axeron PATH
搜索
主页
特权