From 5785afc2ebfe132f9bd33fe23a84026cc8ce5341 Mon Sep 17 00:00:00 2001 From: michele-theleftbit Date: Thu, 13 Aug 2026 12:49:57 +0200 Subject: [PATCH] Reorganize into UIKit and SwiftUI verticals --- .../{ => Shared}/Extensions/Localizable.swift | 0 .../Extensions/UIColor+Utilities.swift | 0 .../{ => Shared}/Extensions/iOSAppOnMac.swift | 0 .../{ => Shared}/Model/Photo.swift | 0 .../SwiftUI/Actors/PagingHandler.swift | 7 ++- .../InfiniteScrollingDataSource.swift | 10 ++--- .../Extensions/SwiftUI+AlwaysPopover.swift | 45 ------------------- ...wiftUI+View.swift => View+Utilities.swift} | 19 ++++++++ .../Extensions/View+ViewBuilders.swift | 19 -------- .../Views/ToastView.swift} | 0 .../Behaviour/MailComposerBehaviour.swift | 0 .../Behaviour/MediaPickerBehavior.swift | 0 .../UpdatePageControlOnScrollBehavior.swift | 0 .../InfiniteLoadingCollectionViewCell.swift | 0 .../Cells/PhotoCollectionViewCell.swift | 0 .../HorizontalPagedCollectionViewLayout.swift | 0 .../CollectionViewDiffableDataSource.swift | 0 .../PagingCollectionViewDataSource.swift | 0 .../SelectableTableViewDataSource.swift | 0 .../Extensions/Keyboard+LayoutGuide.swift | 0 .../NSAttributedStrings+Utilities.swift | 0 .../UIActivityIndicatorViewStyle.swift | 0 .../Extensions/UIButton+Utilities.swift | 0 .../UICollectionView+Utilities.swift | 0 .../UICollectionViewCell+Utilities.swift | 0 .../Extensions/UIContentView+Utilities.swift | 0 .../Extensions/UIEdgeInsets+Utilities.swift | 0 .../Extensions/UIFont+Utilities.swift | 0 .../Extensions/UIImage+Utilities.swift | 0 .../Extensions/UIImageView+Download.swift | 0 .../Extensions/UIImageView+Utilities.swift | 0 .../Extensions/UILabel+Utilities.swift | 0 .../{ => UIKit}/Extensions/UIResponder.swift | 0 .../Extensions/UIScreen+Utilities.swift | 0 .../Extensions/UIStackView+Utilities.swift | 0 .../Extensions/UITableView+Utilities.swift | 0 .../Extensions/UITextField+Utilities.swift | 0 .../Extensions/UIView+Utilities.swift | 0 .../UIViewController+FetchData.swift | 0 .../Extensions/UIViewController+States.swift | 0 .../UIViewController+Utilities.swift | 0 .../Extensions/UIWindow+Utilities.swift | 0 .../Operations/PresentAlertOperation.swift | 0 .../Protocols/IntrinsicSizeCalculable.swift | 0 .../{ => UIKit}/Protocols/ViewModel.swift | 0 .../SocialAuthentication+Facebook.swift | 0 .../Social/SocialAuthentication.swift | 0 .../{ => UIKit}/Stylesheet/TextStyler.swift | 0 .../BottomContainerViewController.swift | 0 .../ContainerViewController.swift | 0 .../PhotoGalleryViewController.swift | 0 .../Presentations/CardPresentation.swift | 0 .../Presentations/MarqueePresentation.swift | 0 .../TextFieldAlertController.swift | 0 .../{Views => UIKit/UIViews}/AvatarView.swift | 0 .../UIViews}/CheckboxButton.swift | 0 .../{Views => UIKit/UIViews}/ErrorView.swift | 0 .../UIViews/InAppNotificationView.swift} | 0 .../UIViews}/LinkAwareLabel.swift | 0 .../UIViews}/LoadingView.swift | 0 .../UIViews}/PhotoGalleryView.swift | 0 .../UIViews}/PresentationBackgroundView.swift | 0 .../UIViews}/RangeSlider.swift | 0 .../{Views => UIKit/UIViews}/RoundLayer.swift | 0 .../UIViews}/ScrollableStackView.swift | 0 .../UIViews}/SeparatorView.swift | 0 66 files changed, 29 insertions(+), 71 deletions(-) rename Sources/BSWInterfaceKit/{ => Shared}/Extensions/Localizable.swift (100%) rename Sources/BSWInterfaceKit/{ => Shared}/Extensions/UIColor+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => Shared}/Extensions/iOSAppOnMac.swift (100%) rename Sources/BSWInterfaceKit/{ => Shared}/Model/Photo.swift (100%) delete mode 100644 Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+AlwaysPopover.swift rename Sources/BSWInterfaceKit/SwiftUI/Extensions/{SwiftUI+View.swift => View+Utilities.swift} (78%) delete mode 100644 Sources/BSWInterfaceKit/SwiftUI/Extensions/View+ViewBuilders.swift rename Sources/BSWInterfaceKit/{InAppNotifications/SwiftUI_InAppNotifications.swift => SwiftUI/Views/ToastView.swift} (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Behaviour/MailComposerBehaviour.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Behaviour/MediaPickerBehavior.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Behaviour/UpdatePageControlOnScrollBehavior.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Cells/InfiniteLoadingCollectionViewCell.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Cells/PhotoCollectionViewCell.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/CollectionViewLayout/HorizontalPagedCollectionViewLayout.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/DataSource/CollectionViewDiffableDataSource.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/DataSource/PagingCollectionViewDataSource.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/DataSource/SelectableTableViewDataSource.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/Keyboard+LayoutGuide.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/NSAttributedStrings+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIActivityIndicatorViewStyle.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIButton+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UICollectionView+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UICollectionViewCell+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIContentView+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIEdgeInsets+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIFont+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIImage+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIImageView+Download.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIImageView+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UILabel+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIResponder.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIScreen+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIStackView+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UITableView+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UITextField+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIView+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIViewController+FetchData.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIViewController+States.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIViewController+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Extensions/UIWindow+Utilities.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Operations/PresentAlertOperation.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Protocols/IntrinsicSizeCalculable.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Protocols/ViewModel.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Social/SocialAuthentication+Facebook.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Social/SocialAuthentication.swift (100%) rename Sources/BSWInterfaceKit/{ => UIKit}/Stylesheet/TextStyler.swift (100%) rename Sources/BSWInterfaceKit/{ViewControllers => UIKit/UIViewControllers}/BottomContainerViewController.swift (100%) rename Sources/BSWInterfaceKit/{ViewControllers => UIKit/UIViewControllers}/ContainerViewController.swift (100%) rename Sources/BSWInterfaceKit/{ViewControllers => UIKit/UIViewControllers}/PhotoGalleryViewController.swift (100%) rename Sources/BSWInterfaceKit/{ViewControllers => UIKit/UIViewControllers}/Presentations/CardPresentation.swift (100%) rename Sources/BSWInterfaceKit/{ViewControllers => UIKit/UIViewControllers}/Presentations/MarqueePresentation.swift (100%) rename Sources/BSWInterfaceKit/{ViewControllers => UIKit/UIViewControllers}/TextFieldAlertController.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/AvatarView.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/CheckboxButton.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/ErrorView.swift (100%) rename Sources/BSWInterfaceKit/{InAppNotifications/UIKit_InAppNotifications.swift => UIKit/UIViews/InAppNotificationView.swift} (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/LinkAwareLabel.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/LoadingView.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/PhotoGalleryView.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/PresentationBackgroundView.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/RangeSlider.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/RoundLayer.swift (100%) rename Sources/BSWInterfaceKit/{Views/StackViews => UIKit/UIViews}/ScrollableStackView.swift (100%) rename Sources/BSWInterfaceKit/{Views => UIKit/UIViews}/SeparatorView.swift (100%) diff --git a/Sources/BSWInterfaceKit/Extensions/Localizable.swift b/Sources/BSWInterfaceKit/Shared/Extensions/Localizable.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/Localizable.swift rename to Sources/BSWInterfaceKit/Shared/Extensions/Localizable.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIColor+Utilities.swift b/Sources/BSWInterfaceKit/Shared/Extensions/UIColor+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIColor+Utilities.swift rename to Sources/BSWInterfaceKit/Shared/Extensions/UIColor+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/iOSAppOnMac.swift b/Sources/BSWInterfaceKit/Shared/Extensions/iOSAppOnMac.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/iOSAppOnMac.swift rename to Sources/BSWInterfaceKit/Shared/Extensions/iOSAppOnMac.swift diff --git a/Sources/BSWInterfaceKit/Model/Photo.swift b/Sources/BSWInterfaceKit/Shared/Model/Photo.swift similarity index 100% rename from Sources/BSWInterfaceKit/Model/Photo.swift rename to Sources/BSWInterfaceKit/Shared/Model/Photo.swift diff --git a/Sources/BSWInterfaceKit/SwiftUI/Actors/PagingHandler.swift b/Sources/BSWInterfaceKit/SwiftUI/Actors/PagingHandler.swift index 449dbb1c..d64bcc96 100644 --- a/Sources/BSWInterfaceKit/SwiftUI/Actors/PagingHandler.swift +++ b/Sources/BSWInterfaceKit/SwiftUI/Actors/PagingHandler.swift @@ -82,6 +82,7 @@ private class PagingHandlerPreviewViewModel { Use `loadMoreContent()` to fetch the next page, and `getState()`/`getItems()` to read the results from outside the actor. */ + // SKIP @nobridge public actor PagingHandler { @@ -153,9 +154,11 @@ public actor PagingHandler { } } - /// - Returns: A pre-filled mock instance of `PagingHandler`. (Not for production) public static func mock() -> PagingHandler { - let handler = PagingHandler(initialPage: 0, fetchPage: { _ in .empty }) + let handler = PagingHandler( + initialPage: 0, + fetchPage: { _ in .empty } + ) Task { await handler.setNoMorePages() } return handler } diff --git a/Sources/BSWInterfaceKit/SwiftUI/DataSource/InfiniteScrollingDataSource.swift b/Sources/BSWInterfaceKit/SwiftUI/DataSource/InfiniteScrollingDataSource.swift index bb868ce1..e7197327 100644 --- a/Sources/BSWInterfaceKit/SwiftUI/DataSource/InfiniteScrollingDataSource.swift +++ b/Sources/BSWInterfaceKit/SwiftUI/DataSource/InfiniteScrollingDataSource.swift @@ -72,7 +72,7 @@ open class InfiniteScrollingDataSource { try await loadMoreContent() } -#if os(iOS) + #if os(iOS) /// Use at your own peril public var unsafeItemsBinding: Binding<[ListItem]> { .init(get: { @@ -81,7 +81,7 @@ open class InfiniteScrollingDataSource { self.items = newItems }) } -#endif + #endif /// MARK: Private @@ -114,12 +114,12 @@ open class InfiniteScrollingDataSource { } private func performAnimatedMutation(_ mutation: () -> Void) { -#if os(Android) + #if os(Android) mutation() -#else + #else withAnimation { mutation() } -#endif + #endif } } diff --git a/Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+AlwaysPopover.swift b/Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+AlwaysPopover.swift deleted file mode 100644 index 8ea93406..00000000 --- a/Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+AlwaysPopover.swift +++ /dev/null @@ -1,45 +0,0 @@ -#if canImport(Darwin) -import SwiftUI - -#Preview { - ContentView(items: [ - .init( - id: 0, - systemImageName: "person.circle", - description: "Description" - ) - ]) -} - -struct ContentView: View { - - struct Item: Identifiable { - let id: Int - let systemImageName: String - let description: String - } - var items: [Item] - - @State - var presentingDetailsOfItem: Item? - - var body: some View { - HStack { - ForEach(items, id: \.id) { item in - Button { - presentingDetailsOfItem = item - } label: { - Image(systemName: item.systemImageName) - } - .popover(item: $presentingDetailsOfItem) { item in - Text(item.description) - .lineLimit(nil) - .multilineTextAlignment(.center) - .padding() - .presentationCompactAdaptation(.popover) - } - } - } - } -} -#endif diff --git a/Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+View.swift b/Sources/BSWInterfaceKit/SwiftUI/Extensions/View+Utilities.swift similarity index 78% rename from Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+View.swift rename to Sources/BSWInterfaceKit/SwiftUI/Extensions/View+Utilities.swift index 7dfab5cc..bb632128 100644 --- a/Sources/BSWInterfaceKit/SwiftUI/Extensions/SwiftUI+View.swift +++ b/Sources/BSWInterfaceKit/SwiftUI/Extensions/View+Utilities.swift @@ -1,3 +1,8 @@ +// +// Created by Michele Restuccia on 25/2/26. +// + +import SwiftUI #if os(Android) import SkipFuseUI @@ -19,6 +24,20 @@ public extension SwiftUI.View { #endif +public extension View { + + /// Expands the hit-testing area of a `Button` to the full view on iOS. + /// Not required on Android, where the default behavior already covers the whole view. + @ViewBuilder + func contentRectangleShape() -> some View { + #if canImport(Darwin) + self.contentShape(Rectangle()) + #else + self + #endif + } +} + public extension View { func errorAlert(error: Binding) -> some View { modifier(ErrorAwareView(errorBinding: error)) diff --git a/Sources/BSWInterfaceKit/SwiftUI/Extensions/View+ViewBuilders.swift b/Sources/BSWInterfaceKit/SwiftUI/Extensions/View+ViewBuilders.swift deleted file mode 100644 index d6c1c68d..00000000 --- a/Sources/BSWInterfaceKit/SwiftUI/Extensions/View+ViewBuilders.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by Michele Restuccia on 25/2/26. -// - -import SwiftUI - -public extension View { - - /// Expands the hit-testing area of a `Button` to the full view on iOS. - /// Not required on Android, where the default behavior already covers the whole view. - @ViewBuilder - func contentRectangleShape() -> some View { - #if canImport(Darwin) - self.contentShape(Rectangle()) - #else - self - #endif - } -} diff --git a/Sources/BSWInterfaceKit/InAppNotifications/SwiftUI_InAppNotifications.swift b/Sources/BSWInterfaceKit/SwiftUI/Views/ToastView.swift similarity index 100% rename from Sources/BSWInterfaceKit/InAppNotifications/SwiftUI_InAppNotifications.swift rename to Sources/BSWInterfaceKit/SwiftUI/Views/ToastView.swift diff --git a/Sources/BSWInterfaceKit/Behaviour/MailComposerBehaviour.swift b/Sources/BSWInterfaceKit/UIKit/Behaviour/MailComposerBehaviour.swift similarity index 100% rename from Sources/BSWInterfaceKit/Behaviour/MailComposerBehaviour.swift rename to Sources/BSWInterfaceKit/UIKit/Behaviour/MailComposerBehaviour.swift diff --git a/Sources/BSWInterfaceKit/Behaviour/MediaPickerBehavior.swift b/Sources/BSWInterfaceKit/UIKit/Behaviour/MediaPickerBehavior.swift similarity index 100% rename from Sources/BSWInterfaceKit/Behaviour/MediaPickerBehavior.swift rename to Sources/BSWInterfaceKit/UIKit/Behaviour/MediaPickerBehavior.swift diff --git a/Sources/BSWInterfaceKit/Behaviour/UpdatePageControlOnScrollBehavior.swift b/Sources/BSWInterfaceKit/UIKit/Behaviour/UpdatePageControlOnScrollBehavior.swift similarity index 100% rename from Sources/BSWInterfaceKit/Behaviour/UpdatePageControlOnScrollBehavior.swift rename to Sources/BSWInterfaceKit/UIKit/Behaviour/UpdatePageControlOnScrollBehavior.swift diff --git a/Sources/BSWInterfaceKit/Cells/InfiniteLoadingCollectionViewCell.swift b/Sources/BSWInterfaceKit/UIKit/Cells/InfiniteLoadingCollectionViewCell.swift similarity index 100% rename from Sources/BSWInterfaceKit/Cells/InfiniteLoadingCollectionViewCell.swift rename to Sources/BSWInterfaceKit/UIKit/Cells/InfiniteLoadingCollectionViewCell.swift diff --git a/Sources/BSWInterfaceKit/Cells/PhotoCollectionViewCell.swift b/Sources/BSWInterfaceKit/UIKit/Cells/PhotoCollectionViewCell.swift similarity index 100% rename from Sources/BSWInterfaceKit/Cells/PhotoCollectionViewCell.swift rename to Sources/BSWInterfaceKit/UIKit/Cells/PhotoCollectionViewCell.swift diff --git a/Sources/BSWInterfaceKit/CollectionViewLayout/HorizontalPagedCollectionViewLayout.swift b/Sources/BSWInterfaceKit/UIKit/CollectionViewLayout/HorizontalPagedCollectionViewLayout.swift similarity index 100% rename from Sources/BSWInterfaceKit/CollectionViewLayout/HorizontalPagedCollectionViewLayout.swift rename to Sources/BSWInterfaceKit/UIKit/CollectionViewLayout/HorizontalPagedCollectionViewLayout.swift diff --git a/Sources/BSWInterfaceKit/DataSource/CollectionViewDiffableDataSource.swift b/Sources/BSWInterfaceKit/UIKit/DataSource/CollectionViewDiffableDataSource.swift similarity index 100% rename from Sources/BSWInterfaceKit/DataSource/CollectionViewDiffableDataSource.swift rename to Sources/BSWInterfaceKit/UIKit/DataSource/CollectionViewDiffableDataSource.swift diff --git a/Sources/BSWInterfaceKit/DataSource/PagingCollectionViewDataSource.swift b/Sources/BSWInterfaceKit/UIKit/DataSource/PagingCollectionViewDataSource.swift similarity index 100% rename from Sources/BSWInterfaceKit/DataSource/PagingCollectionViewDataSource.swift rename to Sources/BSWInterfaceKit/UIKit/DataSource/PagingCollectionViewDataSource.swift diff --git a/Sources/BSWInterfaceKit/DataSource/SelectableTableViewDataSource.swift b/Sources/BSWInterfaceKit/UIKit/DataSource/SelectableTableViewDataSource.swift similarity index 100% rename from Sources/BSWInterfaceKit/DataSource/SelectableTableViewDataSource.swift rename to Sources/BSWInterfaceKit/UIKit/DataSource/SelectableTableViewDataSource.swift diff --git a/Sources/BSWInterfaceKit/Extensions/Keyboard+LayoutGuide.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/Keyboard+LayoutGuide.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/Keyboard+LayoutGuide.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/Keyboard+LayoutGuide.swift diff --git a/Sources/BSWInterfaceKit/Extensions/NSAttributedStrings+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/NSAttributedStrings+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/NSAttributedStrings+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/NSAttributedStrings+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIActivityIndicatorViewStyle.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIActivityIndicatorViewStyle.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIActivityIndicatorViewStyle.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIActivityIndicatorViewStyle.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIButton+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIButton+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIButton+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIButton+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UICollectionView+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UICollectionView+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UICollectionView+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UICollectionView+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UICollectionViewCell+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UICollectionViewCell+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UICollectionViewCell+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UICollectionViewCell+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIContentView+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIContentView+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIContentView+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIContentView+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIEdgeInsets+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIEdgeInsets+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIEdgeInsets+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIEdgeInsets+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIFont+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIFont+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIFont+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIFont+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIImage+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIImage+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIImage+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIImage+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIImageView+Download.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIImageView+Download.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIImageView+Download.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIImageView+Download.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIImageView+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIImageView+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIImageView+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIImageView+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UILabel+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UILabel+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UILabel+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UILabel+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIResponder.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIResponder.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIResponder.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIResponder.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIScreen+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIScreen+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIScreen+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIScreen+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIStackView+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIStackView+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIStackView+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIStackView+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UITableView+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UITableView+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UITableView+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UITableView+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UITextField+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UITextField+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UITextField+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UITextField+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIView+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIView+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIView+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIView+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIViewController+FetchData.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIViewController+FetchData.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIViewController+FetchData.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIViewController+FetchData.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIViewController+States.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIViewController+States.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIViewController+States.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIViewController+States.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIViewController+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIViewController+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIViewController+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIViewController+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Extensions/UIWindow+Utilities.swift b/Sources/BSWInterfaceKit/UIKit/Extensions/UIWindow+Utilities.swift similarity index 100% rename from Sources/BSWInterfaceKit/Extensions/UIWindow+Utilities.swift rename to Sources/BSWInterfaceKit/UIKit/Extensions/UIWindow+Utilities.swift diff --git a/Sources/BSWInterfaceKit/Operations/PresentAlertOperation.swift b/Sources/BSWInterfaceKit/UIKit/Operations/PresentAlertOperation.swift similarity index 100% rename from Sources/BSWInterfaceKit/Operations/PresentAlertOperation.swift rename to Sources/BSWInterfaceKit/UIKit/Operations/PresentAlertOperation.swift diff --git a/Sources/BSWInterfaceKit/Protocols/IntrinsicSizeCalculable.swift b/Sources/BSWInterfaceKit/UIKit/Protocols/IntrinsicSizeCalculable.swift similarity index 100% rename from Sources/BSWInterfaceKit/Protocols/IntrinsicSizeCalculable.swift rename to Sources/BSWInterfaceKit/UIKit/Protocols/IntrinsicSizeCalculable.swift diff --git a/Sources/BSWInterfaceKit/Protocols/ViewModel.swift b/Sources/BSWInterfaceKit/UIKit/Protocols/ViewModel.swift similarity index 100% rename from Sources/BSWInterfaceKit/Protocols/ViewModel.swift rename to Sources/BSWInterfaceKit/UIKit/Protocols/ViewModel.swift diff --git a/Sources/BSWInterfaceKit/Social/SocialAuthentication+Facebook.swift b/Sources/BSWInterfaceKit/UIKit/Social/SocialAuthentication+Facebook.swift similarity index 100% rename from Sources/BSWInterfaceKit/Social/SocialAuthentication+Facebook.swift rename to Sources/BSWInterfaceKit/UIKit/Social/SocialAuthentication+Facebook.swift diff --git a/Sources/BSWInterfaceKit/Social/SocialAuthentication.swift b/Sources/BSWInterfaceKit/UIKit/Social/SocialAuthentication.swift similarity index 100% rename from Sources/BSWInterfaceKit/Social/SocialAuthentication.swift rename to Sources/BSWInterfaceKit/UIKit/Social/SocialAuthentication.swift diff --git a/Sources/BSWInterfaceKit/Stylesheet/TextStyler.swift b/Sources/BSWInterfaceKit/UIKit/Stylesheet/TextStyler.swift similarity index 100% rename from Sources/BSWInterfaceKit/Stylesheet/TextStyler.swift rename to Sources/BSWInterfaceKit/UIKit/Stylesheet/TextStyler.swift diff --git a/Sources/BSWInterfaceKit/ViewControllers/BottomContainerViewController.swift b/Sources/BSWInterfaceKit/UIKit/UIViewControllers/BottomContainerViewController.swift similarity index 100% rename from Sources/BSWInterfaceKit/ViewControllers/BottomContainerViewController.swift rename to Sources/BSWInterfaceKit/UIKit/UIViewControllers/BottomContainerViewController.swift diff --git a/Sources/BSWInterfaceKit/ViewControllers/ContainerViewController.swift b/Sources/BSWInterfaceKit/UIKit/UIViewControllers/ContainerViewController.swift similarity index 100% rename from Sources/BSWInterfaceKit/ViewControllers/ContainerViewController.swift rename to Sources/BSWInterfaceKit/UIKit/UIViewControllers/ContainerViewController.swift diff --git a/Sources/BSWInterfaceKit/ViewControllers/PhotoGalleryViewController.swift b/Sources/BSWInterfaceKit/UIKit/UIViewControllers/PhotoGalleryViewController.swift similarity index 100% rename from Sources/BSWInterfaceKit/ViewControllers/PhotoGalleryViewController.swift rename to Sources/BSWInterfaceKit/UIKit/UIViewControllers/PhotoGalleryViewController.swift diff --git a/Sources/BSWInterfaceKit/ViewControllers/Presentations/CardPresentation.swift b/Sources/BSWInterfaceKit/UIKit/UIViewControllers/Presentations/CardPresentation.swift similarity index 100% rename from Sources/BSWInterfaceKit/ViewControllers/Presentations/CardPresentation.swift rename to Sources/BSWInterfaceKit/UIKit/UIViewControllers/Presentations/CardPresentation.swift diff --git a/Sources/BSWInterfaceKit/ViewControllers/Presentations/MarqueePresentation.swift b/Sources/BSWInterfaceKit/UIKit/UIViewControllers/Presentations/MarqueePresentation.swift similarity index 100% rename from Sources/BSWInterfaceKit/ViewControllers/Presentations/MarqueePresentation.swift rename to Sources/BSWInterfaceKit/UIKit/UIViewControllers/Presentations/MarqueePresentation.swift diff --git a/Sources/BSWInterfaceKit/ViewControllers/TextFieldAlertController.swift b/Sources/BSWInterfaceKit/UIKit/UIViewControllers/TextFieldAlertController.swift similarity index 100% rename from Sources/BSWInterfaceKit/ViewControllers/TextFieldAlertController.swift rename to Sources/BSWInterfaceKit/UIKit/UIViewControllers/TextFieldAlertController.swift diff --git a/Sources/BSWInterfaceKit/Views/AvatarView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/AvatarView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/AvatarView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/AvatarView.swift diff --git a/Sources/BSWInterfaceKit/Views/CheckboxButton.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/CheckboxButton.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/CheckboxButton.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/CheckboxButton.swift diff --git a/Sources/BSWInterfaceKit/Views/ErrorView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/ErrorView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/ErrorView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/ErrorView.swift diff --git a/Sources/BSWInterfaceKit/InAppNotifications/UIKit_InAppNotifications.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/InAppNotificationView.swift similarity index 100% rename from Sources/BSWInterfaceKit/InAppNotifications/UIKit_InAppNotifications.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/InAppNotificationView.swift diff --git a/Sources/BSWInterfaceKit/Views/LinkAwareLabel.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/LinkAwareLabel.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/LinkAwareLabel.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/LinkAwareLabel.swift diff --git a/Sources/BSWInterfaceKit/Views/LoadingView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/LoadingView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/LoadingView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/LoadingView.swift diff --git a/Sources/BSWInterfaceKit/Views/PhotoGalleryView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/PhotoGalleryView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/PhotoGalleryView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/PhotoGalleryView.swift diff --git a/Sources/BSWInterfaceKit/Views/PresentationBackgroundView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/PresentationBackgroundView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/PresentationBackgroundView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/PresentationBackgroundView.swift diff --git a/Sources/BSWInterfaceKit/Views/RangeSlider.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/RangeSlider.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/RangeSlider.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/RangeSlider.swift diff --git a/Sources/BSWInterfaceKit/Views/RoundLayer.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/RoundLayer.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/RoundLayer.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/RoundLayer.swift diff --git a/Sources/BSWInterfaceKit/Views/StackViews/ScrollableStackView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/ScrollableStackView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/StackViews/ScrollableStackView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/ScrollableStackView.swift diff --git a/Sources/BSWInterfaceKit/Views/SeparatorView.swift b/Sources/BSWInterfaceKit/UIKit/UIViews/SeparatorView.swift similarity index 100% rename from Sources/BSWInterfaceKit/Views/SeparatorView.swift rename to Sources/BSWInterfaceKit/UIKit/UIViews/SeparatorView.swift