skill_web/store/mod.rs
1//! Yewdux state management stores
2//!
3//! Global state management using Redux-like patterns.
4//!
5//! ## Available Stores
6//!
7//! - **SkillsStore**: Installed skills, filtering, sorting, selected skill
8//! - **ExecutionsStore**: Execution history, active execution, streaming output
9//! - **SettingsStore**: User preferences, persisted to localStorage
10//! - **UiStore**: Transient UI state (sidebar, notifications, modals)
11//!
12//! ## Usage
13//!
14//! ```ignore
15//! use yewdux::prelude::*;
16//! use crate::store::{SkillsStore, SkillsAction};
17//!
18//! #[function_component(MyComponent)]
19//! fn my_component() -> Html {
20//! let (skills, dispatch) = use_store::<SkillsStore>();
21//!
22//! let on_search = {
23//! let dispatch = dispatch.clone();
24//! Callback::from(move |query: String| {
25//! dispatch.apply(SkillsAction::SetSearchQuery(query));
26//! })
27//! };
28//!
29//! html! {
30//! // ...
31//! }
32//! }
33//! ```
34
35pub mod executions;
36pub mod settings;
37pub mod skills;
38pub mod ui;
39
40// Re-export stores
41pub use executions::{
42 ActiveExecution, ExecutionEntry, ExecutionStatus, ExecutionsAction, ExecutionsStore,
43};
44pub use settings::{
45 ApiSettings, EmbeddingProvider, OutputFormat, SearchSettings, SettingsAction, SettingsStore,
46 Theme, VectorBackend,
47};
48pub use skills::{
49 InstanceInfo, ParameterInfo, SkillDetail, SkillRuntime, SkillSortBy, SkillStatus, SkillSummary,
50 SkillsAction, SkillsStore, ToolInfo,
51};
52pub use ui::{
53 CommandPaletteState, ModalState, ModalType, Notification, NotificationLevel, UiAction, UiStore,
54};