/**
 * Shared Dashboard Components
 *
 * Centralized exports for reusable dashboard UI components.
 * Import from this file for consistent styling across all dashboard sections.
 *
 * @example
 * import {
 *   DashboardStatCard,
 *   DashboardSectionHeader,
 *   DashboardEmptyState,
 *   DashboardTable,
 *   DashboardBadge,
 *   CurrencyTooltip,
 *   ChartSkeleton,
 * } from "@/components/dashboard/shared";
 */

// =============================================================================
// SECTION HEADER
// =============================================================================

export {
  DashboardSectionHeader,
  DashboardSectionHeaderSkeleton,
  type DashboardSectionHeaderProps,
  type DashboardSectionHeaderSkeletonProps,
} from "./DashboardSectionHeader";

// =============================================================================
// STATE COMPONENTS (Empty, Error, Loading)
// =============================================================================

export {
  DashboardEmptyState,
  DashboardErrorState,
  DashboardLoadingState,
  DashboardNoPermissionState,
  type DashboardEmptyStateProps,
  type DashboardErrorStateProps,
  type DashboardLoadingStateProps,
  type DashboardNoPermissionStateProps,
} from "./DashboardStates";

// =============================================================================
// BADGES
// =============================================================================

export {
  DashboardBadge,
  StatusBadge,
  MetricBadge,
  TrendBadge,
  type DashboardBadgeProps,
  type BadgeVariant,
  type BadgeSize,
  type StatusBadgeProps,
  type StatusType,
  type MetricBadgeProps,
  type TrendBadgeProps,
} from "./DashboardBadge";

// =============================================================================
// TABLES
// =============================================================================

export {
  DashboardTable,
  SimpleTable,
  type DashboardTableProps,
  type TableColumn,
  type CellAlignment,
  type SimpleTableProps,
  type SimpleTableRow,
  type SortDirection,
  type SortConfig,
} from "./DashboardTable";

// =============================================================================
// STAT CARDS
// =============================================================================

export {
  DashboardStatCard,
  DashboardStatCardSkeleton,
  type DashboardStatCardProps,
  type TrendDirection,
  type CardSize,
  type IconColor,
  type TrendProps,
  type DashboardStatCardSkeletonProps,
} from "./DashboardStatCard";

export {
  DashboardStatCardMini,
  DashboardStatCardMiniSkeleton,
  type DashboardStatCardMiniProps,
  type DashboardStatCardMiniSkeletonProps,
  type GradientVariant,
} from "./DashboardStatCardMini";

export {
  DashboardMultiStatCardMini,
  type DashboardMultiStatCardMiniProps,
  type MultiStatEntry,
} from "./DashboardMultiStatCardMini";

// =============================================================================
// CHART TOOLTIPS
// =============================================================================

export {
  DashboardChartTooltip,
  CurrencyTooltip,
  PercentageTooltip,
  NumberTooltip,
  DurationTooltip,
  SimpleTooltip,
  // Formatters (useful for custom implementations)
  formatCurrency,
  formatPercentage,
  formatNumber,
  formatDuration,
  // Types
  type DashboardChartTooltipProps,
  type TooltipPayloadItem,
  type SimpleTooltipProps,
} from "./DashboardChartTooltip";

// =============================================================================
// SKELETONS
// =============================================================================

export {
  ChartSkeleton,
  TableSkeleton,
  StatCardSkeleton,
  GridSkeleton,
  ListSkeleton,
  SectionSkeleton,
  // Types
  type ChartSkeletonProps,
  type TableSkeletonProps,
  type TableSkeletonVariant,
  type StatCardSkeletonProps,
  type GridSkeletonProps,
  type ListSkeletonProps,
  type SectionSkeletonProps,
  type ChartType,
  type ChartHeight,
  type ColorVariant,
} from "./DashboardSkeleton";

// =============================================================================
// CONVENIENCE RE-EXPORTS FROM DESIGN TOKENS
// =============================================================================

export {
  CARD_STYLES,
  TYPOGRAPHY,
  SPACING,
  RADIUS,
  MOTION,
  SCROLL_STYLES,
  TREND_COLORS,
  EVENT_COLORS,
  FINANCIAL_COLORS,
  METRIC_COLORS,
  METRIC_COLORS_HSL,
  STATUS_COLORS,
  STAT_ICON_STYLES,
  TABLE_STYLES,
  BADGE_STYLES,
  getTrendColor,
  getIconColorVariant,
} from "@/lib/dashboard/designTokens";

// =============================================================================
// CONVENIENCE RE-EXPORTS FROM CHART CONFIG
// =============================================================================

export {
  CHART_MARGINS,
  CHART_HEIGHTS,
  GRID_CONFIG,
  X_AXIS_CONFIG,
  Y_AXIS_CONFIG,
  LINE_CONFIG,
  AREA_CONFIG,
  BAR_CONFIG,
  TOOLTIP_STYLES,
  TOOLTIP_THEMES,
  TOOLTIP_CURSOR,
  LEGEND_CONFIG,
  CHART_PALETTE,
  FINANCIAL_PALETTE,
  COMPARISON_PALETTE,
  formatChartCurrency,
  formatChartNumber,
  formatChartPercent,
  formatChartDate,
  formatChartTime,
  CHART_PRESETS,
  CHART_BREAKPOINTS,
  getResponsiveHeight,
} from "@/lib/dashboard/chartConfig";
