zcatgui/src/widgets/widgets.zig
R.Eugenio 3af97f6174 feat: IdleCompanion widget (v0.25.0)
Mascota animada reutilizable que aparece tras inactividad:
- Se asoma por bordes de paneles aleatorios
- Clipping correcto (respeta límites del panel)
- Ojos que miran izq/der, salto de pánico
- Estados: hidden → peeking → watching → hiding
- Diseño gato: orejas puntiagudas, pupilas verticales, mejillas

Uso:
  const IdleCompanion = zcatgui.widgets.idle_companion;
  var state: IdleCompanion.State = .{};
  IdleCompanion.draw(ctx, &panels, &state, last_activity, color);

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:01:44 +01:00

454 lines
15 KiB
Zig

//! Widgets - All widget modules
//!
//! This module re-exports all widgets for convenient access.
const std = @import("std");
// =============================================================================
// Widget modules
// =============================================================================
pub const label = @import("label.zig");
pub const button = @import("button.zig");
pub const text_input = @import("text_input.zig");
pub const checkbox = @import("checkbox.zig");
pub const select = @import("select.zig");
pub const list = @import("list.zig");
pub const table = @import("table/table.zig");
pub const split = @import("split.zig");
pub const panel = @import("panel.zig");
pub const modal = @import("modal.zig");
pub const autocomplete = @import("autocomplete/autocomplete.zig");
pub const slider = @import("slider.zig");
pub const scroll = @import("scroll.zig");
pub const menu = @import("menu.zig");
pub const tabs = @import("tabs.zig");
pub const radio = @import("radio.zig");
pub const progress = @import("progress/progress.zig");
pub const tooltip = @import("tooltip.zig");
pub const toast = @import("toast.zig");
pub const textarea = @import("textarea/textarea.zig");
pub const tree = @import("tree.zig");
pub const badge = @import("badge.zig");
pub const img = @import("image.zig");
pub const reorderable = @import("reorderable.zig");
pub const colorpicker = @import("colorpicker.zig");
pub const datepicker = @import("datepicker.zig");
pub const numberentry = @import("numberentry.zig");
pub const richtext = @import("richtext.zig");
pub const breadcrumb = @import("breadcrumb.zig");
pub const canvas = @import("canvas.zig");
pub const chart = @import("chart.zig");
pub const icon = @import("icon/icon.zig");
pub const virtual_scroll = @import("virtual_scroll.zig");
pub const virtual_advanced_table = @import("virtual_advanced_table/virtual_advanced_table.zig");
// Gio parity widgets (Phase 1)
pub const switch_widget = @import("switch.zig");
pub const iconbutton = @import("iconbutton.zig");
pub const divider = @import("divider.zig");
pub const loader = @import("loader.zig");
// Gio parity widgets (Phase 2)
pub const surface = @import("surface.zig");
pub const grid = @import("grid.zig");
pub const resize = @import("resize.zig");
// Gio parity widgets (Phase 3)
pub const appbar = @import("appbar.zig");
pub const navdrawer = @import("navdrawer.zig");
pub const sheet = @import("sheet.zig");
// Gio parity widgets (Phase 4)
pub const discloser = @import("discloser.zig");
pub const selectable = @import("selectable.zig");
// Core table utilities (shared between AdvancedTable and VirtualAdvancedTable)
pub const table_core = @import("table_core/table_core.zig");
// Advanced widgets
pub const advanced_table = @import("advanced_table/advanced_table.zig");
// Idle companion (mascot that appears when user is idle)
pub const idle_companion = @import("idle_companion.zig");
// =============================================================================
// Re-exports for convenience
// =============================================================================
// Label
pub const Label = label;
pub const Alignment = label.Alignment;
pub const LabelConfig = label.LabelConfig;
// Button
pub const Button = button;
pub const ButtonConfig = button.ButtonConfig;
pub const Importance = button.Importance;
// TextInput
pub const TextInput = text_input;
pub const TextInputState = text_input.TextInputState;
pub const TextInputConfig = text_input.TextInputConfig;
pub const TextInputResult = text_input.TextInputResult;
// Checkbox
pub const Checkbox = checkbox;
pub const CheckboxConfig = checkbox.CheckboxConfig;
// Select
pub const Select = select;
pub const SelectState = select.SelectState;
pub const SelectConfig = select.SelectConfig;
pub const SelectResult = select.SelectResult;
// List
pub const List = list;
pub const ListState = list.ListState;
pub const ListConfig = list.ListConfig;
pub const ListResult = list.ListResult;
// Table
pub const Table = table;
pub const TableState = table.TableState;
pub const TableConfig = table.TableConfig;
pub const TableColors = table.TableColors;
pub const TableResult = table.TableResult;
pub const Column = table.Column;
pub const ColumnType = table.ColumnType;
pub const RowState = table.RowState;
pub const SortDirection = table.SortDirection;
pub const ValidationResult = table.ValidationResult;
pub const CellValidateFn = table.CellValidateFn;
// Split
pub const Split = split;
pub const SplitState = split.SplitState;
pub const SplitConfig = split.SplitConfig;
pub const SplitResult = split.SplitResult;
pub const SplitDirection = split.Direction;
// Panel
pub const Panel = panel;
pub const PanelState = panel.PanelState;
pub const PanelConfig = panel.PanelConfig;
pub const PanelColors = panel.PanelColors;
pub const PanelResult = panel.PanelResult;
// Modal
pub const Modal = modal;
pub const ModalState = modal.ModalState;
pub const ModalConfig = modal.ModalConfig;
pub const ModalColors = modal.ModalColors;
pub const ModalResult = modal.ModalResult;
pub const ModalButton = modal.ModalButton;
pub const ButtonSet = modal.ButtonSet;
// AutoComplete
pub const AutoComplete = autocomplete;
pub const AutoCompleteState = autocomplete.AutoCompleteState;
pub const AutoCompleteConfig = autocomplete.AutoCompleteConfig;
pub const AutoCompleteColors = autocomplete.AutoCompleteColors;
pub const AutoCompleteResult = autocomplete.AutoCompleteResult;
pub const MatchMode = autocomplete.MatchMode;
// Slider
pub const Slider = slider;
pub const SliderState = slider.SliderState;
pub const SliderConfig = slider.SliderConfig;
pub const SliderColors = slider.SliderColors;
pub const SliderResult = slider.SliderResult;
pub const SliderOrientation = slider.Orientation;
// Scroll
pub const Scroll = scroll;
pub const ScrollbarState = scroll.ScrollbarState;
pub const ScrollbarConfig = scroll.ScrollbarConfig;
pub const ScrollbarColors = scroll.ScrollbarColors;
pub const ScrollbarResult = scroll.ScrollbarResult;
pub const ScrollAreaState = scroll.ScrollAreaState;
pub const ScrollAreaConfig = scroll.ScrollAreaConfig;
pub const ScrollAreaColors = scroll.ScrollAreaColors;
pub const ScrollAreaResult = scroll.ScrollAreaResult;
pub const ScrollOrientation = scroll.Orientation;
// Menu
pub const Menu = menu;
pub const MenuState = menu.MenuState;
pub const MenuBarState = menu.MenuBarState;
pub const MenuItem = menu.MenuItem;
pub const MenuItemType = menu.MenuItemType;
pub const MenuDef = menu.MenuDef;
pub const MenuConfig = menu.MenuConfig;
pub const MenuColors = menu.MenuColors;
pub const MenuResult = menu.MenuResult;
pub const MenuBarResult = menu.MenuBarResult;
// Tabs
pub const Tabs = tabs;
pub const TabsState = tabs.TabsState;
pub const Tab = tabs.Tab;
pub const TabsConfig = tabs.TabsConfig;
pub const TabsColors = tabs.TabsColors;
pub const TabsResult = tabs.TabsResult;
pub const TabPosition = tabs.TabPosition;
// Radio
pub const Radio = radio;
pub const RadioOption = radio.RadioOption;
pub const RadioState = radio.RadioState;
pub const RadioConfig = radio.RadioConfig;
pub const RadioColors = radio.RadioColors;
pub const RadioResult = radio.RadioResult;
pub const RadioDirection = radio.Direction;
// Progress
pub const Progress = progress;
pub const ProgressBarConfig = progress.BarConfig;
pub const ProgressBarStyle = progress.BarStyle;
pub const ProgressBarResult = progress.BarResult;
pub const ProgressCircleConfig = progress.CircleConfig;
pub const ProgressCircleResult = progress.CircleResult;
pub const SpinnerConfig = progress.SpinnerConfig;
pub const SpinnerStyle = progress.SpinnerStyle;
pub const SpinnerState = progress.SpinnerState;
pub const SpinnerResult = progress.SpinnerResult;
// Tooltip
pub const Tooltip = tooltip;
pub const TooltipState = tooltip.State;
pub const TooltipConfig = tooltip.Config;
pub const TooltipColors = tooltip.Colors;
pub const TooltipResult = tooltip.Result;
pub const TooltipPosition = tooltip.Position;
// Toast
pub const Toast = toast;
pub const ToastManager = toast.Manager;
pub const ToastType = toast.ToastType;
pub const ToastConfig = toast.Config;
pub const ToastColors = toast.Colors;
pub const ToastPosition = toast.Position;
pub const ToastResult = toast.ToastResult;
// TextArea
pub const TextArea = textarea;
pub const TextAreaState = textarea.TextAreaState;
pub const TextAreaConfig = textarea.TextAreaConfig;
pub const TextAreaColors = textarea.TextAreaColors;
pub const TextAreaResult = textarea.TextAreaResult;
// Tree
pub const Tree = tree;
pub const TreeNode = tree.TreeNode;
pub const TreeState = tree.TreeState;
pub const TreeConfig = tree.TreeConfig;
pub const TreeColors = tree.TreeColors;
pub const TreeResult = tree.TreeResult;
pub const NodeId = tree.NodeId;
// Badge
pub const Badge = badge;
pub const BadgeVariant = badge.Variant;
pub const BadgeSize = badge.Size;
pub const BadgeConfig = badge.Config;
pub const BadgeColors = badge.Colors;
pub const BadgeResult = badge.Result;
pub const Tag = badge.Tag;
pub const TagGroupConfig = badge.TagGroupConfig;
pub const TagGroupResult = badge.TagGroupResult;
// Image
pub const Image = img;
pub const ImageData = img.ImageData;
pub const ImageFormat = img.Format;
pub const ImageFit = img.Fit;
pub const ImageAlignment = img.Alignment;
pub const ImageConfig = img.Config;
pub const ImageResult = img.Result;
pub const ImageCache = img.ImageCache;
pub const CachedImage = img.CachedImage;
// Reorderable
pub const Reorderable = reorderable;
pub const ReorderableState = reorderable.State;
pub const ReorderableConfig = reorderable.Config;
pub const ReorderableColors = reorderable.Colors;
pub const ReorderableResult = reorderable.Result;
// ColorPicker
pub const ColorPicker = colorpicker;
pub const ColorPickerState = colorpicker.State;
pub const ColorPickerMode = colorpicker.Mode;
pub const ColorPickerConfig = colorpicker.Config;
pub const ColorPickerColors = colorpicker.Colors;
pub const ColorPickerResult = colorpicker.Result;
// DatePicker
pub const DatePicker = datepicker;
pub const Date = datepicker.Date;
pub const DatePickerState = datepicker.State;
pub const DatePickerConfig = datepicker.Config;
pub const DatePickerColors = datepicker.Colors;
pub const DatePickerResult = datepicker.Result;
// NumberEntry
pub const NumberEntry = numberentry;
pub const NumberEntryState = numberentry.State;
pub const NumberType = numberentry.NumberType;
pub const NumberEntryConfig = numberentry.Config;
pub const NumberEntryColors = numberentry.Colors;
pub const NumberEntryResult = numberentry.Result;
// RichText
pub const RichText = richtext;
pub const TextStyle = richtext.TextStyle;
pub const TextSpan = richtext.TextSpan;
pub const RichTextConfig = richtext.Config;
pub const RichTextColors = richtext.Colors;
pub const RichTextResult = richtext.Result;
pub const TextAlignment = richtext.Alignment;
// Breadcrumb
pub const Breadcrumb = breadcrumb;
pub const BreadcrumbItem = breadcrumb.Item;
pub const BreadcrumbConfig = breadcrumb.Config;
pub const BreadcrumbColors = breadcrumb.Colors;
pub const BreadcrumbResult = breadcrumb.Result;
// Canvas
pub const Canvas = canvas.Canvas;
pub const CanvasPoint = canvas.Point;
// Chart
pub const Chart = chart;
pub const DataPoint = chart.DataPoint;
pub const DataSeries = chart.DataSeries;
pub const LineChartConfig = chart.LineChartConfig;
pub const LineChartColors = chart.LineChartColors;
pub const BarChartConfig = chart.BarChartConfig;
pub const BarChartColors = chart.BarChartColors;
pub const PieChartConfig = chart.PieChartConfig;
pub const PieChartColors = chart.PieChartColors;
// Icon
pub const Icon = icon;
pub const IconType = icon.IconType;
pub const IconSize = icon.Size;
pub const IconConfig = icon.Config;
pub const IconColors = icon.Colors;
// VirtualScroll
pub const VirtualScroll = virtual_scroll;
pub const VirtualScrollState = virtual_scroll.VirtualScrollState;
pub const VirtualScrollConfig = virtual_scroll.VirtualScrollConfig;
pub const VirtualScrollColors = virtual_scroll.VirtualScrollColors;
pub const VirtualScrollResult = virtual_scroll.VirtualScrollResult;
// Switch
pub const Switch = switch_widget;
pub const SwitchState = switch_widget.State;
pub const SwitchConfig = switch_widget.Config;
pub const SwitchColors = switch_widget.Colors;
pub const SwitchResult = switch_widget.Result;
// IconButton
pub const IconButton = iconbutton;
pub const IconButtonStyle = iconbutton.ButtonStyle;
pub const IconButtonSize = iconbutton.Size;
pub const IconButtonConfig = iconbutton.Config;
pub const IconButtonColors = iconbutton.Colors;
pub const IconButtonResult = iconbutton.Result;
// Divider
pub const Divider = divider;
pub const DividerOrientation = divider.Orientation;
pub const DividerConfig = divider.Config;
pub const DividerColors = divider.Colors;
// Loader
pub const Loader = loader;
pub const LoaderStyle = loader.LoaderStyle;
pub const LoaderSize = loader.Size;
pub const LoaderState = loader.State;
pub const LoaderConfig = loader.Config;
pub const LoaderColors = loader.Colors;
// Surface
pub const Surface = surface;
pub const SurfaceElevation = surface.Elevation;
pub const SurfaceConfig = surface.Config;
pub const SurfaceColors = surface.Colors;
pub const SurfaceResult = surface.Result;
// Grid
pub const Grid = grid;
pub const GridState = grid.State;
pub const GridConfig = grid.Config;
pub const GridColors = grid.Colors;
pub const GridCellInfo = grid.CellInfo;
pub const GridResult = grid.Result;
// Resize
pub const Resize = resize;
pub const ResizeDirection = resize.Direction;
pub const ResizeState = resize.State;
pub const ResizeConfig = resize.Config;
pub const ResizeColors = resize.Colors;
pub const ResizeResult = resize.Result;
// AppBar
pub const AppBar = appbar;
pub const AppBarPosition = appbar.Position;
pub const AppBarAction = appbar.Action;
pub const AppBarConfig = appbar.Config;
pub const AppBarColors = appbar.Colors;
pub const AppBarResult = appbar.Result;
// NavDrawer
pub const NavDrawer = navdrawer;
pub const NavItem = navdrawer.NavItem;
pub const NavDrawerHeader = navdrawer.Header;
pub const NavDrawerState = navdrawer.State;
pub const NavDrawerConfig = navdrawer.Config;
pub const NavDrawerColors = navdrawer.Colors;
pub const NavDrawerResult = navdrawer.Result;
// Sheet
pub const Sheet = sheet;
pub const SheetSide = sheet.Side;
pub const SheetState = sheet.State;
pub const SheetConfig = sheet.Config;
pub const SheetColors = sheet.Colors;
pub const SheetResult = sheet.Result;
// Discloser
pub const Discloser = discloser;
pub const DiscloserIconStyle = discloser.IconStyle;
pub const DiscloserState = discloser.State;
pub const DiscloserConfig = discloser.Config;
pub const DiscloserColors = discloser.Colors;
pub const DiscloserResult = discloser.Result;
// Selectable
pub const Selectable = selectable;
pub const SelectionMode = selectable.SelectionMode;
pub const SelectableState = selectable.State;
pub const SelectableConfig = selectable.Config;
pub const SelectableColors = selectable.Colors;
pub const SelectableResult = selectable.Result;
pub const SelectionGroup = selectable.SelectionGroup;
// IdleCompanion (Zcat mascot)
pub const IdleCompanion = idle_companion;
pub const IdleCompanionState = idle_companion.State;
pub const IdleCompanionAnimState = idle_companion.AnimState;
pub const IdleCompanionRect = idle_companion.Rect;
// =============================================================================
// Tests
// =============================================================================
test {
std.testing.refAllDecls(@This());
}