TheNoiseClock/TheNoiseClock/Shared/Design/UIConstants.swift
Matt Bruce a3398f0dd0 refactored with bedrock and organized folders
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
2026-01-31 10:46:41 -06:00

78 lines
2.3 KiB
Swift

//
// UIConstants.swift
// TheNoiseClock
//
// Created by Matt Bruce on 9/7/25.
//
import SwiftUI
/// UI-specific constants for colors, sizes, and styling
enum UIConstants {
// MARK: - Colors
enum Colors {
static let accentColor = Color.blue
static let primaryText = Color.white
static let secondaryText = Color.gray
static let background = Color.black
static let overlayBackground = Color.black.opacity(0.25)
static let overlayBorder = Color.white.opacity(0.05)
}
// MARK: - Font Sizes
enum FontSizes {
static let largeTitle: CGFloat = 34
static let title: CGFloat = 28
static let title2: CGFloat = 22
static let title3: CGFloat = 20
static let headline: CGFloat = 17
static let body: CGFloat = 17
static let callout: CGFloat = 16
static let subheadline: CGFloat = 15
static let footnote: CGFloat = 13
static let caption: CGFloat = 12
static let caption2: CGFloat = 11
}
// MARK: - Spacing
enum Spacing {
static let extraSmall: CGFloat = 4
static let small: CGFloat = 8
static let medium: CGFloat = 12
static let large: CGFloat = 16
static let extraLarge: CGFloat = 20
static let huge: CGFloat = 24
}
// MARK: - Corner Radius
enum CornerRadius {
static let small: CGFloat = 8
static let medium: CGFloat = 12
static let large: CGFloat = 16
static let extraLarge: CGFloat = 20
}
// MARK: - Border Width
enum BorderWidth {
static let thin: CGFloat = 0.5
static let normal: CGFloat = 1
static let thick: CGFloat = 2
}
// MARK: - Opacity
enum Opacity {
static let disabled: Double = 0.3
static let secondary: Double = 0.6
static let primary: Double = 0.8
static let full: Double = 1.0
}
// MARK: - Animation Curves
enum AnimationCurves {
static let smooth = Animation.smooth(duration: AppConstants.AnimationDurations.medium)
static let bouncy = Animation.bouncy(duration: AppConstants.AnimationDurations.bouncy)
static let quick = Animation.easeInOut(duration: AppConstants.AnimationDurations.short)
}
}