From 84b565cbb56743d16f8c11ebb6f971b58eb8cd94 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Sun, 4 Jan 2026 18:39:59 -0600 Subject: [PATCH] Reorganize folder structure with consistent Views/ViewModels/Components pattern Camera: - Views/: ContentView, CustomCameraScreen, PhotoReviewView - Components/: All UI components (buttons, overlays, controls) Settings: - Views/: SettingsView, AppLicensesView - ViewModels/: SettingsViewModel + extensions - Components/: ColorPresetButton, CustomColorPickerButton Paywall: - Views/: ProPaywallView Shared: - Theme/: SelfieCamTheme, DesignConstants, BrandingConfig - Extensions/: Color extensions (moved Color+Extensions here) --- .../Camera/{Views => Components}/CaptureButton.swift | 0 .../{Views => Components}/CaptureEventInteraction.swift | 0 .../{Views => Components}/ColorPickerOverlay.swift | 0 .../{Views => Components}/ExpandableControlsPanel.swift | 0 .../{Views => Components}/ExpandedControlItem.swift | 0 .../{Views => Components}/OpacitySliderOverlay.swift | 0 .../Camera/{Views => Components}/RingLightOverlay.swift | 0 .../Camera/{Views => Components}/ShareButton.swift | 0 .../Camera/{Views => Components}/ShareSheet.swift | 0 .../Camera/{Views => Components}/SizeSliderOverlay.swift | 0 .../{Views => Components}/VolumeButtonObserver.swift | 0 .../Camera/{Views => Components}/ZoomControlView.swift | 0 SelfieCam/Features/Camera/{ => Views}/ContentView.swift | 9 +++++++-- .../Features/Paywall/{ => Views}/ProPaywallView.swift | 0 .../Settings/{ => Components}/ColorPresetButton.swift | 0 .../{ => Components}/CustomColorPickerButton.swift | 0 .../{ => ViewModels}/SettingsViewModel+Camera.swift | 0 .../{ => ViewModels}/SettingsViewModel+CloudSync.swift | 0 .../{ => ViewModels}/SettingsViewModel+Premium.swift | 0 .../{ => ViewModels}/SettingsViewModel+RingLight.swift | 0 .../Settings/{ => ViewModels}/SettingsViewModel.swift | 0 .../Features/Settings/{ => Views}/AppLicensesView.swift | 0 .../Features/Settings/{ => Views}/SettingsView.swift | 0 SelfieCam/Shared/{ => Extensions}/Color+Extensions.swift | 0 SelfieCam/Shared/{ => Theme}/BrandingConfig.swift | 0 SelfieCam/Shared/{ => Theme}/DesignConstants.swift | 0 SelfieCam/Shared/{ => Theme}/SelfieCamTheme.swift | 0 27 files changed, 7 insertions(+), 2 deletions(-) rename SelfieCam/Features/Camera/{Views => Components}/CaptureButton.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/CaptureEventInteraction.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/ColorPickerOverlay.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/ExpandableControlsPanel.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/ExpandedControlItem.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/OpacitySliderOverlay.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/RingLightOverlay.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/ShareButton.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/ShareSheet.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/SizeSliderOverlay.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/VolumeButtonObserver.swift (100%) rename SelfieCam/Features/Camera/{Views => Components}/ZoomControlView.swift (100%) rename SelfieCam/Features/Camera/{ => Views}/ContentView.swift (98%) rename SelfieCam/Features/Paywall/{ => Views}/ProPaywallView.swift (100%) rename SelfieCam/Features/Settings/{ => Components}/ColorPresetButton.swift (100%) rename SelfieCam/Features/Settings/{ => Components}/CustomColorPickerButton.swift (100%) rename SelfieCam/Features/Settings/{ => ViewModels}/SettingsViewModel+Camera.swift (100%) rename SelfieCam/Features/Settings/{ => ViewModels}/SettingsViewModel+CloudSync.swift (100%) rename SelfieCam/Features/Settings/{ => ViewModels}/SettingsViewModel+Premium.swift (100%) rename SelfieCam/Features/Settings/{ => ViewModels}/SettingsViewModel+RingLight.swift (100%) rename SelfieCam/Features/Settings/{ => ViewModels}/SettingsViewModel.swift (100%) rename SelfieCam/Features/Settings/{ => Views}/AppLicensesView.swift (100%) rename SelfieCam/Features/Settings/{ => Views}/SettingsView.swift (100%) rename SelfieCam/Shared/{ => Extensions}/Color+Extensions.swift (100%) rename SelfieCam/Shared/{ => Theme}/BrandingConfig.swift (100%) rename SelfieCam/Shared/{ => Theme}/DesignConstants.swift (100%) rename SelfieCam/Shared/{ => Theme}/SelfieCamTheme.swift (100%) diff --git a/SelfieCam/Features/Camera/Views/CaptureButton.swift b/SelfieCam/Features/Camera/Components/CaptureButton.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/CaptureButton.swift rename to SelfieCam/Features/Camera/Components/CaptureButton.swift diff --git a/SelfieCam/Features/Camera/Views/CaptureEventInteraction.swift b/SelfieCam/Features/Camera/Components/CaptureEventInteraction.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/CaptureEventInteraction.swift rename to SelfieCam/Features/Camera/Components/CaptureEventInteraction.swift diff --git a/SelfieCam/Features/Camera/Views/ColorPickerOverlay.swift b/SelfieCam/Features/Camera/Components/ColorPickerOverlay.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/ColorPickerOverlay.swift rename to SelfieCam/Features/Camera/Components/ColorPickerOverlay.swift diff --git a/SelfieCam/Features/Camera/Views/ExpandableControlsPanel.swift b/SelfieCam/Features/Camera/Components/ExpandableControlsPanel.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/ExpandableControlsPanel.swift rename to SelfieCam/Features/Camera/Components/ExpandableControlsPanel.swift diff --git a/SelfieCam/Features/Camera/Views/ExpandedControlItem.swift b/SelfieCam/Features/Camera/Components/ExpandedControlItem.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/ExpandedControlItem.swift rename to SelfieCam/Features/Camera/Components/ExpandedControlItem.swift diff --git a/SelfieCam/Features/Camera/Views/OpacitySliderOverlay.swift b/SelfieCam/Features/Camera/Components/OpacitySliderOverlay.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/OpacitySliderOverlay.swift rename to SelfieCam/Features/Camera/Components/OpacitySliderOverlay.swift diff --git a/SelfieCam/Features/Camera/Views/RingLightOverlay.swift b/SelfieCam/Features/Camera/Components/RingLightOverlay.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/RingLightOverlay.swift rename to SelfieCam/Features/Camera/Components/RingLightOverlay.swift diff --git a/SelfieCam/Features/Camera/Views/ShareButton.swift b/SelfieCam/Features/Camera/Components/ShareButton.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/ShareButton.swift rename to SelfieCam/Features/Camera/Components/ShareButton.swift diff --git a/SelfieCam/Features/Camera/Views/ShareSheet.swift b/SelfieCam/Features/Camera/Components/ShareSheet.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/ShareSheet.swift rename to SelfieCam/Features/Camera/Components/ShareSheet.swift diff --git a/SelfieCam/Features/Camera/Views/SizeSliderOverlay.swift b/SelfieCam/Features/Camera/Components/SizeSliderOverlay.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/SizeSliderOverlay.swift rename to SelfieCam/Features/Camera/Components/SizeSliderOverlay.swift diff --git a/SelfieCam/Features/Camera/Views/VolumeButtonObserver.swift b/SelfieCam/Features/Camera/Components/VolumeButtonObserver.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/VolumeButtonObserver.swift rename to SelfieCam/Features/Camera/Components/VolumeButtonObserver.swift diff --git a/SelfieCam/Features/Camera/Views/ZoomControlView.swift b/SelfieCam/Features/Camera/Components/ZoomControlView.swift similarity index 100% rename from SelfieCam/Features/Camera/Views/ZoomControlView.swift rename to SelfieCam/Features/Camera/Components/ZoomControlView.swift diff --git a/SelfieCam/Features/Camera/ContentView.swift b/SelfieCam/Features/Camera/Views/ContentView.swift similarity index 98% rename from SelfieCam/Features/Camera/ContentView.swift rename to SelfieCam/Features/Camera/Views/ContentView.swift index 5819692..d7c21d4 100644 --- a/SelfieCam/Features/Camera/ContentView.swift +++ b/SelfieCam/Features/Camera/Views/ContentView.swift @@ -1,9 +1,14 @@ +// +// ContentView.swift +// SelfieCam +// +// Main camera view - coordinates camera session, settings, and photo capture flow. +// + import SwiftUI import MijickCamera import Bedrock - - struct ContentView: View { @State private var settings = SettingsViewModel() @State private var premiumManager = PremiumManager() diff --git a/SelfieCam/Features/Paywall/ProPaywallView.swift b/SelfieCam/Features/Paywall/Views/ProPaywallView.swift similarity index 100% rename from SelfieCam/Features/Paywall/ProPaywallView.swift rename to SelfieCam/Features/Paywall/Views/ProPaywallView.swift diff --git a/SelfieCam/Features/Settings/ColorPresetButton.swift b/SelfieCam/Features/Settings/Components/ColorPresetButton.swift similarity index 100% rename from SelfieCam/Features/Settings/ColorPresetButton.swift rename to SelfieCam/Features/Settings/Components/ColorPresetButton.swift diff --git a/SelfieCam/Features/Settings/CustomColorPickerButton.swift b/SelfieCam/Features/Settings/Components/CustomColorPickerButton.swift similarity index 100% rename from SelfieCam/Features/Settings/CustomColorPickerButton.swift rename to SelfieCam/Features/Settings/Components/CustomColorPickerButton.swift diff --git a/SelfieCam/Features/Settings/SettingsViewModel+Camera.swift b/SelfieCam/Features/Settings/ViewModels/SettingsViewModel+Camera.swift similarity index 100% rename from SelfieCam/Features/Settings/SettingsViewModel+Camera.swift rename to SelfieCam/Features/Settings/ViewModels/SettingsViewModel+Camera.swift diff --git a/SelfieCam/Features/Settings/SettingsViewModel+CloudSync.swift b/SelfieCam/Features/Settings/ViewModels/SettingsViewModel+CloudSync.swift similarity index 100% rename from SelfieCam/Features/Settings/SettingsViewModel+CloudSync.swift rename to SelfieCam/Features/Settings/ViewModels/SettingsViewModel+CloudSync.swift diff --git a/SelfieCam/Features/Settings/SettingsViewModel+Premium.swift b/SelfieCam/Features/Settings/ViewModels/SettingsViewModel+Premium.swift similarity index 100% rename from SelfieCam/Features/Settings/SettingsViewModel+Premium.swift rename to SelfieCam/Features/Settings/ViewModels/SettingsViewModel+Premium.swift diff --git a/SelfieCam/Features/Settings/SettingsViewModel+RingLight.swift b/SelfieCam/Features/Settings/ViewModels/SettingsViewModel+RingLight.swift similarity index 100% rename from SelfieCam/Features/Settings/SettingsViewModel+RingLight.swift rename to SelfieCam/Features/Settings/ViewModels/SettingsViewModel+RingLight.swift diff --git a/SelfieCam/Features/Settings/SettingsViewModel.swift b/SelfieCam/Features/Settings/ViewModels/SettingsViewModel.swift similarity index 100% rename from SelfieCam/Features/Settings/SettingsViewModel.swift rename to SelfieCam/Features/Settings/ViewModels/SettingsViewModel.swift diff --git a/SelfieCam/Features/Settings/AppLicensesView.swift b/SelfieCam/Features/Settings/Views/AppLicensesView.swift similarity index 100% rename from SelfieCam/Features/Settings/AppLicensesView.swift rename to SelfieCam/Features/Settings/Views/AppLicensesView.swift diff --git a/SelfieCam/Features/Settings/SettingsView.swift b/SelfieCam/Features/Settings/Views/SettingsView.swift similarity index 100% rename from SelfieCam/Features/Settings/SettingsView.swift rename to SelfieCam/Features/Settings/Views/SettingsView.swift diff --git a/SelfieCam/Shared/Color+Extensions.swift b/SelfieCam/Shared/Extensions/Color+Extensions.swift similarity index 100% rename from SelfieCam/Shared/Color+Extensions.swift rename to SelfieCam/Shared/Extensions/Color+Extensions.swift diff --git a/SelfieCam/Shared/BrandingConfig.swift b/SelfieCam/Shared/Theme/BrandingConfig.swift similarity index 100% rename from SelfieCam/Shared/BrandingConfig.swift rename to SelfieCam/Shared/Theme/BrandingConfig.swift diff --git a/SelfieCam/Shared/DesignConstants.swift b/SelfieCam/Shared/Theme/DesignConstants.swift similarity index 100% rename from SelfieCam/Shared/DesignConstants.swift rename to SelfieCam/Shared/Theme/DesignConstants.swift diff --git a/SelfieCam/Shared/SelfieCamTheme.swift b/SelfieCam/Shared/Theme/SelfieCamTheme.swift similarity index 100% rename from SelfieCam/Shared/SelfieCamTheme.swift rename to SelfieCam/Shared/Theme/SelfieCamTheme.swift