- Rename data_manager.zig to change_notifier.zig - Update exports in panels.zig - Clarifies that ChangeNotifier is for panel communication, not application data management (which apps implement separately) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
81 lines
3.4 KiB
Zig
81 lines
3.4 KiB
Zig
//! Panels - Lego-style composable panel system
|
|
//!
|
|
//! This module provides:
|
|
//! - AutonomousPanel: Self-contained UI component
|
|
//! - Composite patterns: Vertical, Horizontal, Split, Tab, Grid
|
|
//! - ChangeNotifier: Observer pattern for panel communication
|
|
//! - Detail: Components for detail/edit panels (state machine, semaphore, buttons)
|
|
//!
|
|
//! Architecture based on Simifactu's Lego Panels system:
|
|
//! - Panels are autonomous (own state, UI, logic)
|
|
//! - Panels are reusable across windows
|
|
//! - Windows compose panels (not inheritance)
|
|
//! - Communication via ChangeNotifier (observer pattern)
|
|
|
|
const std = @import("std");
|
|
|
|
// =============================================================================
|
|
// Module imports
|
|
// =============================================================================
|
|
|
|
pub const panel = @import("panel.zig");
|
|
pub const composite = @import("composite.zig");
|
|
pub const change_notifier = @import("change_notifier.zig");
|
|
pub const detail = @import("detail/detail.zig");
|
|
|
|
// =============================================================================
|
|
// Panel types
|
|
// =============================================================================
|
|
|
|
pub const AutonomousPanel = panel.AutonomousPanel;
|
|
pub const PanelType = panel.PanelType;
|
|
pub const PanelState = panel.PanelState;
|
|
pub const BuildFn = panel.BuildFn;
|
|
pub const RefreshFn = panel.RefreshFn;
|
|
pub const DestroyFn = panel.DestroyFn;
|
|
pub const DataChangeFn = panel.DataChangeFn;
|
|
pub const createPanel = panel.createPanel;
|
|
|
|
// =============================================================================
|
|
// Composite types
|
|
// =============================================================================
|
|
|
|
pub const VerticalComposite = composite.VerticalComposite;
|
|
pub const HorizontalComposite = composite.HorizontalComposite;
|
|
pub const SplitComposite = composite.SplitComposite;
|
|
pub const SplitState = composite.SplitState;
|
|
pub const TabComposite = composite.TabComposite;
|
|
pub const TabState = composite.TabState;
|
|
pub const GridComposite = composite.GridComposite;
|
|
|
|
// =============================================================================
|
|
// ChangeNotifier types (for panel-to-panel communication)
|
|
// =============================================================================
|
|
|
|
pub const ChangeNotifier = change_notifier.ChangeNotifier;
|
|
pub const DataChange = change_notifier.DataChange;
|
|
pub const ChangeType = change_notifier.ChangeType;
|
|
pub const Observer = change_notifier.Observer;
|
|
pub const ObserverCallback = change_notifier.ObserverCallback;
|
|
pub const getChangeNotifier = change_notifier.getChangeNotifier;
|
|
pub const setChangeNotifier = change_notifier.setChangeNotifier;
|
|
|
|
// =============================================================================
|
|
// Detail Panel types (for edit/detail panels)
|
|
// =============================================================================
|
|
|
|
pub const DetailPanelState = detail.DetailPanelState;
|
|
pub const DetailPanelBase = detail.DetailPanelBase;
|
|
pub const EscapeResult = detail.EscapeResult;
|
|
pub const ActionButtonsResult = detail.ActionButtonsResult;
|
|
pub const NavButtonsResult = detail.NavButtonsResult;
|
|
pub const ActionButtonsOpts = detail.ActionButtonsOpts;
|
|
pub const NavButtonsOpts = detail.NavButtonsOpts;
|
|
|
|
// =============================================================================
|
|
// Tests
|
|
// =============================================================================
|
|
|
|
test {
|
|
std.testing.refAllDecls(@This());
|
|
}
|