# Ethiopian Calendar Compose
Multi-module Android/Kotlin project for Ethiopian calendar date handling and Compose date picking UI.
## Modules
- `:ethiopic-calendar-core`
- Strict domain models (`EthiopianDate`, `GregorianDate`)
- Ethiopian leap/month rules
- Ethiopian month navigation (`prevMonth`, `nextMonth`)
- Ethiopian Gregorian conversion
- Month grid model generator (`EthiopicMonthUiModelGenerator`)
- Unit tests for conversion/rules/grid generation
- `:ethiopic-calendar-compose`
- Reusable Compose picker: `EthiopianDatePicker`
- Features: month navigation, weekday headers, selection, today highlight, min/max, custom disabled dates
- Optional Gregorian hint display
- English and Amharic month-name/string support
- `:sample`
- Demo app with:
- Inline picker mode
- Dialog picker mode
- Selected Ethiopian + Gregorian date display
- English/Amharic toggle
## Usage
Core conversion:
```kotlin
val ethiopian = EthiopianDate(year = 2017, month = 1, day = 1)
val gregorian = EthiopianDateConverter.toGregorian(ethiopian)
val back = EthiopianDateConverter.fromGregorian(gregorian)
```
Compose picker:
```kotlin
var selected by remember { mutableStateOf (null) }
EthiopianDatePicker(
selected = selected,
onSelect = { selected = it }
)
```
## Build and Test
```bash
./gradlew :ethiopic-calendar-core:test
./gradlew :ethiopic-calendar-compose:compileDebugKotlin
./gradlew :sample:compileDebugKotlin
```