#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ToggleField {
    DrawingTextBackground,
    DrawingFillEnabled,
    PerformanceVsync,
    UiShowStatusBar,
    UiShowFrozenBadge,
    UiHelpOverlayContextFilter,
    UiContextMenuEnabled,
    UiXdgFullscreen,
    UiToolbarTopPinned,
    UiToolbarSidePinned,
    UiToolbarUseIcons,
    UiToolbarShowMoreColors,
    UiToolbarPresetToasts,
    UiToolbarShowPresets,
    UiToolbarShowActionsSection,
    UiToolbarShowActionsAdvanced,
    UiToolbarShowZoomActions,
    UiToolbarShowPagesSection,
    UiToolbarShowBoardsSection,
    UiToolbarShowStepSection,
    UiToolbarShowTextControls,
    UiToolbarShowSettingsSection,
    UiToolbarShowDelaySliders,
    UiToolbarShowMarkerOpacitySection,
    UiToolbarShowToolPreview,
    UiToolbarForceInline,
    UiClickHighlightEnabled,
    UiClickHighlightUsePenColor,
    UiShowStatusBoardBadge,
    UiShowStatusPageBadge,
    UiShowPageBadgeWithStatusBar,
    PresenterHideStatusBar,
    PresenterHideToolbars,
    PresenterHideToolPreview,
    PresenterCloseHelpOverlay,
    PresenterEnableClickHighlight,
    PresenterShowToast,
    BoardsAutoCreate,
    BoardsShowBadge,
    BoardsPersistCustomizations,
    CaptureEnabled,
    CaptureCopyToClipboard,
    CaptureExitAfter,
    SessionPersistTransparent,
    SessionPersistWhiteboard,
    SessionPersistBlackboard,
    SessionPersistHistory,
    SessionRestoreToolState,
    SessionPerOutput,
    SessionAutosaveEnabled,
    HistoryCustomSectionEnabled,
    ArrowHeadAtEnd,
    #[cfg(feature = "tablet-input")]
    TabletEnabled,
    #[cfg(feature = "tablet-input")]
    TabletPressureEnabled,
    #[cfg(feature = "tablet-input")]
    TabletAutoEraserSwitch,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
/// Copy for cheap capture in iced callback closures.
pub enum PresetToggleField {
    FillEnabled,
    TextBackgroundEnabled,
    ArrowHeadAtEnd,
    ShowStatusBar,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TextField {
    DrawingColorName,
    DrawingThickness,
    DrawingEraserSize,
    DrawingFontSize,
    DrawingMarkerOpacity,
    DrawingFontFamily,
    DrawingFontWeight,
    DrawingFontStyle,
    DrawingHitTestTolerance,
    DrawingHitTestThreshold,
    DrawingUndoStackLimit,
    ArrowLength,
    ArrowAngle,
    PerformanceMaxFpsNoVsync,
    PerformanceUiAnimationFps,
    HistoryUndoAllDelayMs,
    HistoryRedoAllDelayMs,
    HistoryCustomUndoDelayMs,
    HistoryCustomRedoDelayMs,
    HistoryCustomUndoSteps,
    HistoryCustomRedoSteps,
    UiPreferredOutput,
    StatusFontSize,
    StatusPadding,
    StatusDotRadius,
    HighlightRadius,
    HighlightOutlineThickness,
    HighlightDurationMs,
    HelpFontFamily,
    HelpFontSize,
    HelpLineHeight,
    HelpPadding,
    HelpBorderWidth,
    CaptureSaveDirectory,
    CaptureFilename,
    CaptureFormat,
    ToolbarTopOffset,
    ToolbarTopOffsetY,
    ToolbarSideOffset,
    ToolbarSideOffsetX,
    BoardsMaxCount,
    SessionCustomDirectory,
    SessionMaxShapesPerFrame,
    SessionMaxFileSizeMb,
    SessionAutoCompressThresholdKb,
    SessionMaxPersistedUndoDepth,
    SessionBackupRetention,
    SessionAutosaveIdleMs,
    SessionAutosaveIntervalMs,
    SessionAutosaveFailureBackoffMs,
    #[cfg(feature = "tablet-input")]
    TabletMinThickness,
    #[cfg(feature = "tablet-input")]
    TabletMaxThickness,
    #[cfg(feature = "tablet-input")]
    TabletPressureVariationThreshold,
    #[cfg(feature = "tablet-input")]
    TabletPressureScaleStep,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
/// Copy for cheap capture in iced callback closures.
pub enum PresetTextField {
    Name,
    ColorName,
    Size,
    MarkerOpacity,
    FontSize,
    ArrowLength,
    ArrowAngle,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TripletField {
    DrawingColorRgb,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum QuadField {
    StatusBarBg,
    StatusBarText,
    HelpBg,
    HelpBorder,
    HelpText,
    HighlightFill,
    HighlightOutline,
}
