feat(android): add design system components matching web theme
Implement 10 reusable Jetpack Compose UI components: - ShieldButton: 4 variants (primary/secondary/ghost/danger), 3 sizes, loading state, icon support - ShieldCard: gradient background matching web .gradient-card, click handling, header/footer slots - ShieldTextField: validation, password toggle, error/helper text, focus styling - ShieldBadge: 5 variants (default/success/warning/error/info), pill shape, icon support - ShieldModal: ModalBottomSheet + AlertDialog, swipe-to-dismiss - ShieldToast: Snackbar-based with 4 variants, auto-dismiss, action buttons - ShieldAvatar: Coil async image loading, initials fallback, online status indicator - ShieldProgressBar: linear progress with percentage, 5 color variants - ShieldEmptyState: icon, title, description, action button - ShieldSkeleton: shimmer animation with infinite transition All components use theme tokens (no hardcoded colors) and support light/dark modes. Add Coil dependency for avatar image loading. Add ComponentShowcase preview with light/dark mode support. Add instrumented Compose UI tests for all components.
This commit is contained in:
@@ -9,6 +9,7 @@ activityCompose = "1.8.0"
|
||||
navigationCompose = "2.7.7"
|
||||
kotlin = "2.2.10"
|
||||
composeBom = "2025.12.00"
|
||||
coilCompose = "2.7.0"
|
||||
|
||||
[libraries]
|
||||
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
||||
@@ -27,6 +28,7 @@ androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-
|
||||
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
|
||||
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" }
|
||||
androidx-compose-material3-adaptive-navigation-suite = { group = "androidx.compose.material3", name = "material3-adaptive-navigation-suite" }
|
||||
coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coilCompose" }
|
||||
|
||||
[plugins]
|
||||
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||
|
||||
Reference in New Issue
Block a user