AdvancedKanban's first release — a premium, fully customizable Kanban board component for SwiftUI on iOS, iPadOS, and macOS.
Highlights
- Protocol-driven, no wrapper types. Conform your existing card/column model types to
KanbanCard/KanbanColumnand handKanbanBoardaBinding<[Column]>— no separate board model to keep in sync. - Full input parity. Pointer drag (with edge autoscroll), a complete keyboard move-mode (Space to pick up, arrows to move, Return to commit, Escape to cancel and restore), and VoiceOver rotor actions (Move Up / Move Down / Move to Column) all route through the same move-resolution logic — no divergent behavior per input method.
- WIP limits —
.warnOnlyor.preventDrop, enforced identically across pointer, keyboard, and VoiceOver. - Column collapse, backed by your own model state.
- Theming via
KanbanThemeand.kanbanTheme(_:)— the package owns chrome (backgrounds, borders, corner radii, spacing, drop animation); yourcardContent/columnHeaderview builders own everything inside. - Native macOS pointer support — hover feedback, a grab/grabbing cursor (macOS 15+), and a drag-activation threshold tuned for precise pointers, not just ported from touch.
- Optional
AdvancedKanbanSwiftDataadapter — ready-made@Modeltypes and aKanbanStorethat applies a move to aModelContextin one call. Not linked unless you ask for it.
What's included
AdvancedKanban— the core library (zero third-party dependencies).AdvancedKanbanSwiftData— optional persistence adapter.- 31 passing unit tests covering the pure drag/reorder engine.
- A runnable example app (
Example/) demonstrating every feature, with per-view SwiftUI previews and checked-in Xcode schemes for both macOS and iOS.
Requirements
iOS 17+ / iPadOS 17+ / macOS 14+, Swift 5.9+.
Installation
.package(url: "https://github.com/NerdSnipe-Inc/AdvancedKanban.git", from: "1.0.0")