// Copyright 2026 Ling71671
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

///|
/// Umbrella facade re-exporting the layered packages:
/// `math` -> `color` -> `draw` -> `core` -> `widgets` -> `composite`.
/// Import this only when the whole toolkit is wanted; application code that
/// needs the bare immediate-mode runtime should import `src/core` directly.
// Foundation: geometry, color, draw commands
pub type Vec2 = @math.Vec2

///|
pub type Rect = @math.Rect

///|
pub type Color = @color.Color

///|
pub type DrawCmd = @draw.DrawCmd

///|
pub type DrawList = @draw.DrawList

// Engine runtime

///|
pub type Id = @core.Id

///|
pub type IdStack = @core.IdStack

///|
pub type RawInput = @core.RawInput

///|
pub type InputState = @core.InputState

///|
pub type Event = @core.Event

///|
pub type Key = @core.Key

///|
pub type Modifiers = @core.Modifiers

///|
pub type Response = @core.Response

///|
pub type Painter = @core.Painter

///|
pub type WidgetStyle = @core.WidgetStyle

///|
pub type Theme = @core.Theme

///|
pub type Memory = @core.Memory

///|
pub type UIContext = @core.UIContext

///|
/// Re-exported engine trait so downstream packages can implement custom
/// widgets against the facade without naming `src/core` explicitly.
pub using @core {trait Widget}

// Standard widgets (src/widgets)

///|
pub type Button = @widgets.Button

///|
pub type Slider = @widgets.Slider

///|
pub type SliderRef = @widgets.SliderRef

///|
pub type Toggle = @widgets.Toggle

///|
pub type ToggleRef = @widgets.ToggleRef

///|
pub type Checkbox = @widgets.Checkbox

///|
pub type CheckboxRef = @widgets.CheckboxRef

///|
pub type Radio = @widgets.Radio

///|
pub type Label = @widgets.Label

///|
pub type Separator = @widgets.Separator

///|
pub type Badge = @widgets.Badge

///|
pub type BadgeKind = @widgets.BadgeKind

///|
pub type ProgressBar = @widgets.ProgressBar

///|
pub type TextEdit = @widgets.TextEdit

///|
pub type TextEditRef = @widgets.TextEditRef

///|
pub type ScrollArea = @widgets.ScrollArea

///|
pub type Splitter = @widgets.Splitter

///|
pub type Window = @widgets.Window

///|
pub type Dialog = @widgets.Dialog

///|
pub type DialogKind = @widgets.DialogKind

///|
pub type DialogResult = @widgets.DialogResult

///|
pub type Toast = @widgets.Toast

///|
pub type ToastKind = @widgets.ToastKind

///|
pub type ToastAnchor = @widgets.ToastAnchor

///|
pub type ToastResponse = @widgets.ToastResponse

///|
pub type Tooltip = @widgets.Tooltip

///|
pub type Breadcrumb = @widgets.Breadcrumb

///|
pub type SegmentedControl = @widgets.SegmentedControl

///|
pub type CollapsingHeader = @widgets.CollapsingHeader

///|
pub type ComboBox = @widgets.ComboBox

///|
pub type TabBar = @widgets.TabBar

///|
pub type Stepper = @widgets.Stepper

///|
pub type StepperRef = @widgets.StepperRef

///|
pub type Rating = @widgets.Rating

///|
pub type RatingRef = @widgets.RatingRef

///|
pub type StepStatus = @widgets.StepStatus

///|
pub type StepItem = @widgets.StepItem

///|
pub type Steps = @widgets.Steps

///|
pub type StepsRef = @widgets.StepsRef

///|
pub type Pagination = @widgets.Pagination

///|
pub type PaginationRef = @widgets.PaginationRef

///|
pub type PaginationItem = @widgets.PaginationItem

// Composite components (src/composite)

///|
pub type CodeEditor = @composite.CodeEditor

///|
pub type CodeEditorRef = @composite.CodeEditorRef

///|
pub type CodeEditorStyle = @composite.CodeEditorStyle

///|
pub type RichTextResponse = @composite.RichTextResponse

///|
pub type TextSpan = @composite.TextSpan

///|
pub type TextSpanKind = @composite.TextSpanKind

///|
pub type Knob = @composite.Knob

///|
pub type KnobRef = @composite.KnobRef

///|
pub type KnobStyle = @composite.KnobStyle

///|
pub type Fader = @composite.Fader

///|
pub type FaderRef = @composite.FaderRef

///|
pub type FaderStyle = @composite.FaderStyle

///|
pub type Sparkline = @composite.Sparkline

///|
pub type Plot = @composite.Plot

///|
pub type PlotPoint = @composite.PlotPoint

///|
pub type PlotSeries = @composite.PlotSeries

///|
pub type PlotSeriesKind = @composite.PlotSeriesKind

///|
pub type PlotStyle = @composite.PlotStyle

///|
pub type BarChart = @composite.BarChart

///|
pub type Table = @composite.Table

///|
pub type TableColumn = @composite.TableColumn

///|
pub type TableResponse = @composite.TableResponse

///|
pub type TableStyle = @composite.TableStyle

///|
pub type TableSortDirection = @composite.TableSortDirection

///|
pub type TreeNode = @composite.TreeNode

///|
pub type TreeViewResponse = @composite.TreeViewResponse

///|
pub type CommandItem = @composite.CommandItem

///|
pub type CommandPaletteResponse = @composite.CommandPaletteResponse

///|
pub type DockArea = @composite.DockArea

///|
pub type DockTree = @composite.DockTree

///|
pub type DockNode = @composite.DockNode

///|
pub type DockTab = @composite.DockTab

///|
pub type DockResponse = @composite.DockResponse

///|
pub type DockSplitDirection = @composite.DockSplitDirection

///|
pub type ContextMenuItem = @composite.ContextMenuItem

///|
pub type ContextMenuResponse = @composite.ContextMenuResponse

///|
pub type NodeEditor = @composite.NodeEditor

///|
pub type NodeItem = @composite.NodeItem

///|
pub type NodePort = @composite.NodePort

///|
pub type NodePortKind = @composite.NodePortKind

///|
pub type NodeConnection = @composite.NodeConnection

///|
pub type NodeEditorStyle = @composite.NodeEditorStyle

///|
pub type NodeEditorResponse = @composite.NodeEditorResponse