mirror of
https://github.com/phranck/TUIkit.git
synced 2026-05-21 09:50:35 +00:00
5ad97132b8
- Replace custom Observable protocol and @Published with Apple's @Observable macro - Add withObservationTracking in renderToBuffer for automatic per-property dependency tracking - Add type-based @Environment(Type.self) and .environment(object) for observable objects - Add ObjectEnvironmentModifier for injecting observable objects into the environment - Add needsCacheClear flag to AppState for thread-safe cache invalidation - Add cross-platform test script (scripts/test-linux.sh) for Docker-based Linux verification - Add DemoAppHeader with system info display (OS, version, architecture) - Consolidate Example App: extract ImageDemoHelpers, KeyboardHelpSection, ValueDisplayRow - Add pre-push verification rule to CLAUDE.md - Verified on both macOS and Linux (swift:6.0 container), 1155 tests passing
37 lines
892 B
Swift
37 lines
892 B
Swift
// 🖥️ TUIKit — Terminal UI Kit for Swift
|
||
// SpinnersPage.swift
|
||
//
|
||
// Created by LAYERED.work
|
||
// License: MIT
|
||
|
||
import TUIkit
|
||
|
||
/// A demo page showing all Spinner styles.
|
||
struct SpinnersPage: View {
|
||
var body: some View {
|
||
VStack(alignment: .leading, spacing: 1) {
|
||
|
||
DemoSection("Dots (Braille Rotation)") {
|
||
Spinner("Loading data...")
|
||
}
|
||
|
||
DemoSection("Line (ASCII Rotation)") {
|
||
Spinner("Compiling...", style: .line)
|
||
}
|
||
|
||
DemoSection("Bouncing (Knight Rider)") {
|
||
Spinner("Processing...", style: .bouncing)
|
||
}
|
||
|
||
DemoSection("Custom Color") {
|
||
Spinner("Installing...", style: .bouncing, color: .palette.success)
|
||
}
|
||
|
||
Spacer()
|
||
}
|
||
.appHeader {
|
||
DemoAppHeader("Spinners")
|
||
}
|
||
}
|
||
}
|