# HugeIcons Migration Spec ## Scope - Replace current Lucide icon usage with HugeIcons targets. - Prioritize Islamic-context icons first (bottom nav, Beranda, Lainnya, Qibla, Qur'an entry points). - Keep UI behavior unchanged; this spec is icon-only. ## Inventory Summary (Current State) - Total Lucide references: `158` - Unique Lucide symbols: `72` - Non-Lucid icon reference: `Icons.arrow_back` in `quran_murattal_screen.dart` Top icon-heavy files: 1. `lib/features/settings/presentation/settings_screen.dart` 2. `lib/features/dashboard/presentation/dashboard_screen.dart` 3. `lib/features/quran/presentation/quran_reading_screen.dart` 4. `lib/features/checklist/presentation/checklist_screen.dart` 5. `lib/features/tools/presentation/tools_screen.dart` ## Recommended HugeIcons Style Policy - `Stroke Rounded` for navigation/system icons. - `Duotone Rounded` for high-emphasis feature cards. - Islamic-specific icons use explicit semantic slugs (Qur'an, Tasbih, Kaaba, Dua, Mosque). ## Canonical Mapping (Lucide -> HugeIcons Candidate) Notes: - `Confidence` = how certain the target slug/semantic fit is. - `High` means already validated semantically on HugeIcons. - `Medium` means strong candidate but should be quickly verified in final implementation pass. | Lucide | HugeIcons candidate | Confidence | Notes | |---|---|---|---| | `home` | `home-01-stroke-rounded` | High | Bottom nav Beranda | | `calendar` | `calendar-01` | High | Bottom nav Jadwal | | `bookOpen` | `quran-02-solid-sharp` (feature), `book-open-01-stroke-rounded` (generic) | High | Use Qur'an variant where context is Qur'an | | `sparkles` | `tasbih` (Dzikir), `sparkles`-family for generic | High/Medium | Dzikir should use Tasbih | | `wand2` | `magic-wand-01-duotone-rounded` | High | Bottom nav Lainnya | | `listChecks` | `check-list` | High | Ibadah list | | `barChart3` | `bar-chart-03-stroke-rounded` | High | Laporan | | `headphones` | `headset-solid-rounded` | Medium | Murattal/audio | | `compass` | `compass-duotone-rounded` | High | Qibla entry/action | | `library` | `books-01-solid-standard` | High | Hadits card | | `heart` | `dua-solid-sharp` (Doa context), `heart`-family (generic) | High/Medium | Prefer Dua icon for Doa feature | | `mapPin` | `mosque-location` (Qibla/location context), `location-01` (generic) | High/Medium | Prefer mosque-location in Islamic context | | `locate` | `compass-duotone-rounded` or `location-focus`-family | Medium | Qibla live-state | | `locateOff` | `location-off`-family | Medium | Qibla sensor-off | | `bookmark` | `bookmark-02-stroke-rounded` | Medium | Qur'an/bookmarks | | `pin` | `pin-location`-family | Medium | Last read | | `search` | `search-01-stroke-rounded` | Medium | Global search | | `refreshCw` | `refresh`-family | Medium | Reload actions | | `settings` | `settings-02-stroke-rounded` | Medium | Global settings | | `settings2` | `settings-02-stroke-rounded` | Medium | Keep one settings variant | | `bell` | `notification`-family | Medium | Notification | | `checkCircle2` | `checkmark-circle`-family | Medium | Completion status | | `circle` | `circle`-family | Medium | Unchecked state | | `check` | `tick`-family | Medium | Confirmed state | | `chevronLeft` | `arrow-left-01-stroke-rounded` | Medium | Back | | `chevronRight` | `arrow-right-01-stroke-rounded` | Medium | Settings rows | | `chevronDown` | `arrow-down-01-stroke-rounded` | Medium | Dropdown | | `chevronUp` | `arrow-up-01-stroke-rounded` | Medium | Expand/collapse | | `arrowLeft` | `arrow-left-01-stroke-rounded` | Medium | Back | | `arrowRight` | `arrow-right-01-stroke-rounded` | Medium | Forward | | `clock` | `time`-family | Medium | Prayer/meta time | | `sunrise` | `sunrise`-family | Medium | Prayer icon | | `sun` | `sun`-family | Medium | Prayer icon | | `cloudSun` | `cloud-sun`-family | Medium | Prayer icon | | `sunset` | `sunset`-family | Medium | Prayer icon | | `moon` | `moon`-family | Medium | Prayer/night | | `volume2` | `volume-high`-family | Medium | Audio toggle | | `user` | `user-03-stroke-rounded` | Medium | Profile/author | | `quote` | `quote`-family | Medium | Ayat quote panel | | `fingerprint` | `fingerprint-01` | Medium | Dzikir tap counter | | `inbox` | `inbox-01` | Medium | Empty state | | `wifiOff` | `wifi-off-01` | Medium | Offline state | | `star` | `star`-family | Medium | Ratings/highlight | | `building` | `mosque-01` (Islamic), `building`-family (generic) | Medium | Prefer mosque if religious place context | | `minusCircle` | `minus-sign-circle`-family | Medium | Counter controls | | `plusCircle` | `plus-sign-circle`-family | Medium | Counter controls | | `moonStar` | `moon-stars`-family | Medium | Night checklist | | `trendingUp` | `chart-up`-family | Medium | Trend KPI | | `history` | `history`-family | Medium | Reports history | | `share2` | `share`-family | Medium | Share action | | `play` | `play`-family | Medium | Media | | `pause` | `pause`-family | Medium | Media | | `stopCircle` | `stop-circle`-family | Medium | Media/record stop | | `playCircle` | `play-circle`-family | Medium | Media/record play | | `square` | `stop-square`-family | Medium | Media | | `skipBack` | `skip-back`-family | Medium | Media | | `skipForward` | `skip-forward`-family | Medium | Media | | `shuffle` | `shuffle`-family | Medium | Media | | `listMusic` | `playlist`-family | Medium | Media list | | `music` | `music-note`-family | Medium | Media indicator | | `brain` | `brain`-family | Medium | Hafalan mode | | `gem` | `diamond`/`gem`-family | Medium | Highlight badge | | `flag` | `flag`-family | Medium | Marker | | `trash2` | `delete`-family | Medium | Remove bookmark | | `layoutDashboard` | `dashboard-square`-family | Medium | Settings | | `timer` | `timer`-family | Medium | Timing settings | | `type` | `text`-family | Medium | Typography settings | | `vibrate` | `vibration`-family | Medium | Haptic settings | | `pencil` | `edit`-family | Medium | Edit profile | | `info` | `information-circle`-family | Medium | Info | | `logOut` | `logout-01`-family | Medium | Logout | | `languages` | `language`-family | Medium | Qur'an enrichment language | ## Screen-Level Migration Targets ### P0: Bottom Navigation File: `lib/core/widgets/bottom_nav_bar.dart` - `home` -> `home-01-stroke-rounded` - `calendar` -> `calendar-01` - `bookOpen` -> `quran-02-solid-sharp` - `sparkles` -> `tasbih` - `wand2` -> `magic-wand-01-duotone-rounded` - `listChecks` -> `check-list` - `barChart3` -> `bar-chart-03-stroke-rounded` ### P0: Beranda Quick Access + Header Context File: `lib/features/dashboard/presentation/dashboard_screen.dart` - Qur'an card: `bookOpen` -> `quran-02-solid-sharp` - Murattal: `headphones` -> `headset-solid-rounded` - Dzikir: `sparkles` -> `tasbih` - Doa: `heart` -> `dua-solid-sharp` - Hadits: `library` -> `books-01-solid-standard` - Qibla button/location: `compass/mapPin` -> `compass-duotone-rounded` + `mosque-location` - Prayer state icons (`sunrise/sun/cloudSun/sunset/moon`) -> matching HugeIcons weather/time family ### P0: Lainnya (Tools) File: `lib/features/tools/presentation/tools_screen.dart` - Same feature mapping as Beranda quick access. - App-bar/system icons remain generic HugeIcons stroke-rounded (`bell`, `settings`, `share`). ### P0: Qibla Screen File: `lib/features/qibla/presentation/qibla_screen.dart` - Back: `arrowLeft` -> `arrow-left-01-stroke-rounded` - Live state: `locate/locateOff` -> location-focus/location-off family - Location marker: `mapPin` -> `mosque-location` (preferred) or `location-01` ### P1: Qur'an, Dzikir, Doa, Hadits - Qur'an family files: prioritize Qur'an/bookmark/media semantics. - Dzikir screen: `fingerprint` may remain if preferred UX metaphor; alternative `tasbih` for stronger Islamic tone. - Doa/Hadits list screens: keep simple system icon replacements for `search`, `refresh`. ### P2: Settings / Checklist / Laporan - Mostly generic system icons; migrate to HugeIcons equivalents with minimal semantic risk. ## Proposed Implementation Contract 1. Introduce wrapper layer (single source of truth): `lib/app/icons/app_icons.dart` 2. Keep semantic names stable in app code (`AppIcons.quran`, `AppIcons.dzikir`, `AppIcons.qibla`, etc.). 3. Map `AppIcons.*` to HugeIcons package symbols. 4. Perform migration by feature slices (P0 -> P2), with visual QA after each slice. ## QA Checklist - Bottom nav recognizability retained at 24dp. - Active/inactive contrast unchanged. - No icon clipping at 20/24dp sizes. - Islamic features feel more explicit (Qur'an, Dzikir, Doa, Qibla). - Dark/light mode visual consistency maintained. ## Reference Links (HugeIcons) - https://hugeicons.com/icon/quran-02-solid-sharp - https://hugeicons.com/icon/tasbih - https://hugeicons.com/icon/mosque-location - https://hugeicons.com/icon/kaaba-01-stroke-standard - https://hugeicons.com/icon/dua-solid-sharp - https://hugeicons.com/icon/books-01-solid-standard - https://hugeicons.com/icon/home-01-stroke-rounded - https://hugeicons.com/icon/calendar-01 - https://hugeicons.com/icon/check-list - https://hugeicons.com/icon/magic-wand-01-duotone-rounded - https://hugeicons.com/icon/bar-chart-03-stroke-rounded - https://hugeicons.com/icon/compass-duotone-rounded - https://hugeicons.com/icon/headset-solid-rounded