Issue: Create UmbralEmptyState with Illustrations
Overview
Create an empty state component with minimalist line art illustrations for various empty/error states throughout the app.
PRD Reference
Section B1: Empty States (B1.1, B1.2)
Acceptance Criteria
UmbralEmptyState Component
EmptyStateIllustrations
General
Visual Reference
Empty State Layout:
┌─────────────┐
│ │
│ ┌───┐ │
│ │ ? │ │ ← Illustration (120x120)
│ └───┘ │
│ │
└─────────────┘
No hay perfiles aun ← Title
Crea tu primer perfil para ← Description
empezar a bloquear apps
[ + Crear perfil ] ← Action Button
Illustration Examples (Line Art):
NoProfiles: NoStats: SearchEmpty:
┌─────────────┐ │ ◯
│ ┌─────┐ │ │ /
│ │ ? │ │ ──┼───────── ✕
│ └─────┘ │ │
│ - - - - - - │
│ - - - - - - │
└─────────────┘
NoNfc: Error: Success:
╭───────────╮ ▲ ✓
│ ╭───╮ │ ╱ ╲
│ │ ? │ │ ╱ ! ╲
│ ╰───╯ │ ▔▔▔▔▔▔
╰───────────╯
Implementation Notes
- Use
Canvas with drawPath for illustrations
- Keep illustrations simple (line art style)
- Accent color for small details/highlights
- Consider using
rememberVectorPainter for complex paths
- Test illustrations in both dark and light themes
File Locations
app/src/main/java/com/umbral/presentation/ui/components/empty/UmbralEmptyState.kt
app/src/main/java/com/umbral/presentation/ui/components/empty/EmptyStateIllustrations.kt
Dependencies
- UmbralButton (02-umbral-button)
- Phase 1 color and typography tokens
Part of Epic #80
Issue: Create UmbralEmptyState with Illustrations
Overview
Create an empty state component with minimalist line art illustrations for various empty/error states throughout the app.
PRD Reference
Section B1: Empty States (B1.1, B1.2)
Acceptance Criteria
UmbralEmptyState Component
illustration: EmptyStateIllustrationtitle: Stringdescription: Stringmodifier: Modifieraction: EmptyStateAction?label: StringonClick: () -> UnittextTertiarywithaccentPrimarydetailstitleMedium,textPrimary, centeredbodyMedium,textSecondary, centered, max 2 linesEmptyStateIllustrations
EmptyStateIllustration.Render()extension function:modifier: ModifierprimaryColor: Color(default textTertiary)accentColor: Color(default accentPrimary)General
Visual Reference
Implementation Notes
CanvaswithdrawPathfor illustrationsrememberVectorPainterfor complex pathsFile Locations
app/src/main/java/com/umbral/presentation/ui/components/empty/UmbralEmptyState.ktapp/src/main/java/com/umbral/presentation/ui/components/empty/EmptyStateIllustrations.ktDependencies
Part of Epic #80