A collection of user interface components and drawing routines for building tasteful apps using AppKit.
appkit swift aqua ui mac

MIT License

+164
+4
Sources/AquaKit/Controls and Views/AquaDragHandle.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 /// This is an abstract superclass that draws nothing but handles drag functionality.
+4
Sources/AquaKit/Controls and Views/AquaSplitView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaSplitView: NSSplitView {
+4
Sources/AquaKit/Controls and Views/AquaSplitViewResizeHandle.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaSplitViewResizeHandle: AquaDragHandle {
+4
Sources/AquaKit/Controls and Views/AquaWindowResizeHandle.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 class AquaWindowResizeHandle: AquaDragHandle {
+4
Sources/AquaKit/Controls and Views/SplitViewResizeCoordinator.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class SplitViewResizeCoordinator: NSObject {
+4
Sources/AquaKit/Drawers/AquaDrawer.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension AquaDrawer {
+4
Sources/AquaKit/Drawers/AquaDrawerChromeView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 final class AquaDrawerChromeView: NSView {
+4
Sources/AquaKit/Drawers/AquaDrawerChromeViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 class AquaDrawerChromeViewController: NSViewController {
+4
Sources/AquaKit/Drawers/AquaDrawerFrameView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 final class AquaDrawerFrameView: NSView {
+4
Sources/AquaKit/Drawers/AquaDrawerPanel.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaDrawerPanel: NSPanel {
+4
Sources/AquaKit/General Purpose/ContainerViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class ContainerViewController: NSViewController {
+4
Sources/AquaKit/General Purpose/Geometry/NSSize+Plus.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import Foundation 2 6 3 7 extension NSSize {
+4
Sources/AquaKit/General Purpose/Geometry/ViewGeometry.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import Cocoa 2 6 3 7 public enum Axis {
+4
Sources/AquaKit/General Purpose/LayoutGuideProtocol.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 public protocol LayoutGuideProtocol {
+4
Sources/AquaKit/General Purpose/NSAppearance+DarkMode.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSAppearance {
+4
Sources/AquaKit/General Purpose/NSColor+Aqua.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSColor {
+4
Sources/AquaKit/General Purpose/NSColor+DarkMode.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSColor {
+4
Sources/AquaKit/General Purpose/NSGradient+Aqua.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSGradient {
+4
Sources/AquaKit/General Purpose/NSView+Anchoring.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSView {
+4
Sources/AquaKit/General Purpose/Split View Layout/DefaultSizedSplitViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class DefaultSizedSplitViewController: NSSplitViewController {
+4
Sources/AquaKit/General Purpose/Split View Layout/NSSplitViewController+PreferredDividerPosition.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSSplitViewController {
+4
Sources/AquaKit/General Purpose/WindowStateSentinelView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class WindowStateSentinelView: NSView {
+4
Sources/AquaKit/Scroll Views/AquaScrollCornerView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 import AquaKit 3 7
+4
Sources/AquaKit/Scroll Views/AquaScrollState.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 import Foundation 3 7
+4
Sources/AquaKit/Scroll Views/AquaScrollView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 import AquaKit 3 7
+4
Sources/AquaKit/Scroll Views/AquaScroller.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 import AquaKit 3 7
+4
Sources/AquaKit/Source Lists/NSSplitViewItem+SourceList.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 extension NSSplitViewItem {
+4
Sources/AquaKit/Source Lists/SourceListBottomBarViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class SourceListBottomBarViewController: NSSplitViewItemAccessoryViewController {
+4
Sources/AquaKit/Table Headers/AquaTableCornerView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaTableCornerView: NSView {
+4
Sources/AquaKit/Table Headers/AquaTableHeaderCell.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaTableHeaderCell: NSTableHeaderCell {
+4
Sources/AquaKit/Table Headers/AquaTableHeaderView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaTableHeaderView: NSTableHeaderView {
+4
Sources/AquaKit/Web Views/AquaWebViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 import WebKit 3 7
+4
Sources/AquaKit/Web Views/AquaWebViewScrollBridge.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import WebKit 2 6 3 7 public final class AquaWebViewScrollBridge: NSObject, WKScriptMessageHandler {
+4
Sources/AquaKit/Windows/AquaTitlebarBackgroundView.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaTitlebarBackgroundView: NSView {
+4
Sources/AquaKit/Windows/AquaToolbarToggleButton.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaToolbarToggleButton: AquaWindowControlButton {
+4
Sources/AquaKit/Windows/AquaTrafficLightButton.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 @MainActor @objc public protocol AquaWindowControlAreaEvents {
+4
Sources/AquaKit/Windows/AquaWindow.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaWindow: NSWindow {
+4
Sources/AquaKit/Windows/AquaWindowBottomBarViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaWindowBottomBarViewController: ContainerViewController {
+4
Sources/AquaKit/Windows/AquaWindowContainerViewController.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaWindowContainerViewController: ContainerViewController {
+4
Sources/AquaKit/Windows/AquaWindowControlButton.swift
··· 1 + // SPDX-FileCopyrightText: 2026 Jon Sterling 2 + // 3 + // SPDX-License-Identifier: MIT 4 + 1 5 import AppKit 2 6 3 7 open class AquaWindowControlButton: NSButton {
+4
license.sh
··· 1 + #!/bin/bash 2 + 3 + reuse annotate --recursive --license MIT --copyright "Jon Sterling" Sources 4 +