// DragonX Wallet - ImGui Edition
// Copyright 2024-2026 The Hush Developers
// Released under the GPLv3

#pragma once

// ============================================================================
// Material Design Components - Unified Header
// ============================================================================
// Include this single header to get all Material Design components.
//
// Based on Material Design 2 (m2.material.io)
//
// All components are in the namespace: dragonx::ui::material

// Core dependencies
#include "../colors.h"
#include "../typography.h"
#include "../layout.h"

// Components
#include "buttons.h"       // Button, IconButton, FAB
#include "cards.h"         // Card, CardHeader, CardContent, CardActions
#include "text_fields.h"   // TextField
#include "lists.h"         // ListItem, ListDivider, ListSubheader
#include "dialogs.h"       // Dialog, ConfirmDialog, AlertDialog
#include "inputs.h"        // Switch, Checkbox, RadioButton
#include "progress.h"      // LinearProgress, CircularProgress
#include "snackbar.h"      // Snackbar, ShowSnackbar
#include "slider.h"        // Slider, SliderDiscrete, SliderRange
#include "tabs.h"          // TabBar, Tab
#include "chips.h"         // Chip, FilterChip, ChoiceChip, InputChip
#include "nav_drawer.h"    // NavDrawer, NavItem
#include "app_bar.h"       // AppBar, AppBarTitle, AppBarAction

// ============================================================================
// Quick Reference
// ============================================================================
//
// BUTTONS:
//   Button(label, spec)           - Generic button with style config
//   TextButton(label)             - Text-only button
//   OutlinedButton(label)         - Button with outline
//   ContainedButton(label)        - Filled button (primary)
//   IconButton(icon, tooltip)     - Circular icon button
//   FAB(icon)                     - Floating action button
//
// CARDS:
//   BeginCard(spec)/EndCard()     - Card container
//   CardHeader(title, subtitle)   - Card header section
//   CardContent(text)             - Card body text
//   CardActions()/EndCardActions()- Card button area
//
// TEXT FIELDS:
//   TextField(label, buf, size)   - Text input field
//   TextField(id, buf, size, spec)- Configurable text field
//
// LISTS:
//   BeginList(id)/EndList()       - List container
//   ListItem(text)                - Simple list item
//   ListItem(primary, secondary)  - Two-line item
//   ListItem(spec)                - Full config item
//   ListDivider(inset)            - Divider line
//   ListSubheader(text)           - Section header
//
// DIALOGS:
//   BeginDialog(id, &open, spec)  - Modal dialog
//   EndDialog()
//   ConfirmDialog(...)            - Confirm/cancel dialog
//   AlertDialog(...)              - Single-action alert
//
// SELECTION CONTROLS:
//   Switch(label, &value)         - Toggle switch
//   Checkbox(label, &value)       - Checkbox
//   RadioButton(label, active)    - Radio button
//   RadioButton(label, &sel, val) - Radio with int selection
//
// PROGRESS:
//   LinearProgress(fraction)      - Determinate progress bar
//   LinearProgressIndeterminate() - Indeterminate progress bar
//   CircularProgress(fraction)    - Circular progress
//   CircularProgressIndeterminate()- Spinner
//
// SNACKBAR:
//   ShowSnackbar(msg, action)     - Show notification
//   DismissSnackbar()             - Dismiss current snackbar
//   RenderSnackbar()              - Call each frame to render
//
// SLIDER:
//   Slider(label, &val, min, max) - Continuous slider
//   SliderInt(label, &val, ...)   - Integer slider
//   SliderDiscrete(...)           - Stepped slider
//   SliderRange(...)              - Two-thumb range slider
//
// TABS:
//   BeginTabBar(id, &idx)         - Tab bar container
//   Tab(label)                    - Tab item
//   EndTabBar()
//   TabBar(id, labels, count, &idx) - Simple tab bar
//
// CHIPS:
//   Chip(label)                   - Action chip
//   FilterChip(label, &selected)  - Toggleable filter chip
//   ChoiceChip(label, selected)   - Choice chip
//   InputChip(label, avatar)      - Deletable input chip
//   BeginChipGroup()/EndChipGroup()- Chip layout helper
//
// NAVIGATION DRAWER:
//   BeginNavDrawer(id, &open, spec) - Navigation drawer
//   EndNavDrawer()
//   NavItem(icon, label, selected) - Navigation item
//   NavDivider()                   - Drawer divider
//   NavSubheader(text)             - Section header
//
// APP BAR:
//   BeginAppBar(id, spec)          - Top app bar
//   EndAppBar()
//   AppBarNavIcon(icon)            - Navigation icon (left)
//   AppBarTitle(title)             - App bar title
//   AppBarAction(icon)             - Action button (right)
//   BeginAppBarMenu(icon)          - Overflow menu
//   AppBarMenuItem(label)          - Menu item
