[package]
edition = "2024"
rust-version = "1.85"
name = "envision"
version = "0.17.0"
build = false
exclude = [
".claude/",
"CLAUDE.md",
"tools/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A ratatui framework for collaborative TUI development with headless testing support"
documentation = "https://docs.rs/envision"
readme = "README.md"
keywords = [
"tui",
"terminal",
"ratatui",
"testing",
"headless",
]
categories = [
"command-line-interface",
"development-tools::testing",
]
license = "MIT"
repository = "https://github.com/ryanoneill/envision"
[features]
clipboard = ["dep:arboard"]
compound-components = [
"input-components",
"data-components",
"display-components",
]
data-components = []
default = [
"serialization",
"full",
]
display-components = []
full = [
"input-components",
"data-components",
"display-components",
"navigation-components",
"overlay-components",
"compound-components",
"clipboard",
"markdown",
"regex",
]
input-components = []
markdown = ["dep:pulldown-cmark"]
navigation-components = []
overlay-components = []
regex = ["dep:regex"]
serialization = [
"dep:serde",
"dep:serde_json",
"compact_str/serde",
"ratatui/serde",
]
test-utils = ["tokio/test-util"]
tracing = ["dep:tracing"]
[lib]
name = "envision"
path = "src/lib.rs"
[[example]]
name = "accordion"
path = "examples/accordion.rs"
required-features = ["navigation-components"]
[[example]]
name = "alert_panel"
path = "examples/alert_panel.rs"
required-features = ["compound-components"]
[[example]]
name = "annotations"
path = "examples/annotations.rs"
[[example]]
name = "async_counter"
path = "examples/async_counter.rs"
[[example]]
name = "beautiful_dashboard"
path = "examples/beautiful_dashboard.rs"
required-features = ["full"]
[[example]]
name = "big_text"
path = "examples/big_text.rs"
required-features = ["display-components"]
[[example]]
name = "box_plot"
path = "examples/box_plot.rs"
required-features = ["compound-components"]
[[example]]
name = "breadcrumb"
path = "examples/breadcrumb.rs"
required-features = ["navigation-components"]
[[example]]
name = "button"
path = "examples/button.rs"
required-features = ["input-components"]
[[example]]
name = "calendar"
path = "examples/calendar.rs"
required-features = ["display-components"]
[[example]]
name = "canvas"
path = "examples/canvas.rs"
required-features = ["display-components"]
[[example]]
name = "capture_backend"
path = "examples/capture_backend.rs"
[[example]]
name = "chart"
path = "examples/chart.rs"
required-features = ["compound-components"]
[[example]]
name = "chart_enhanced"
path = "examples/chart_enhanced.rs"
required-features = ["compound-components"]
[[example]]
name = "chat_client"
path = "examples/chat_client.rs"
required-features = ["full"]
[[example]]
name = "checkbox"
path = "examples/checkbox.rs"
required-features = ["input-components"]
[[example]]
name = "code_block"
path = "examples/code_block.rs"
required-features = ["display-components"]
[[example]]
name = "collapsible"
path = "examples/collapsible.rs"
required-features = ["display-components"]
[[example]]
name = "command_palette"
path = "examples/command_palette.rs"
required-features = ["navigation-components"]
[[example]]
name = "component_showcase"
path = "examples/component_showcase.rs"
required-features = ["full"]
[[example]]
name = "confirm_dialog"
path = "examples/confirm_dialog.rs"
required-features = ["overlay-components"]
[[example]]
name = "conversation_view"
path = "examples/conversation_view.rs"
required-features = ["compound-components"]
[[example]]
name = "counter_app"
path = "examples/counter_app.rs"
[[example]]
name = "dashboard_builder"
path = "examples/dashboard_builder.rs"
required-features = ["full"]
[[example]]
name = "dashboard_demo"
path = "examples/dashboard_demo.rs"
required-features = ["full"]
[[example]]
name = "data_grid"
path = "examples/data_grid.rs"
required-features = ["compound-components"]
[[example]]
name = "diagram"
path = "examples/diagram.rs"
required-features = ["compound-components"]
[[example]]
name = "dialog"
path = "examples/dialog.rs"
required-features = ["overlay-components"]
[[example]]
name = "diff_viewer"
path = "examples/diff_viewer.rs"
required-features = ["compound-components"]
[[example]]
name = "divider"
path = "examples/divider.rs"
required-features = ["display-components"]
[[example]]
name = "drilldown"
path = "examples/drilldown.rs"
required-features = [
"data-components",
"display-components",
"navigation-components",
]
[[example]]
name = "dropdown"
path = "examples/dropdown.rs"
required-features = ["input-components"]
[[example]]
name = "event_stream"
path = "examples/event_stream.rs"
required-features = ["compound-components"]
[[example]]
name = "file_browser"
path = "examples/file_browser.rs"
required-features = ["compound-components"]
[[example]]
name = "file_manager"
path = "examples/file_manager.rs"
required-features = ["full"]
[[example]]
name = "flame_graph"
path = "examples/flame_graph.rs"
required-features = ["compound-components"]
[[example]]
name = "focus_manager"
path = "examples/focus_manager.rs"
[[example]]
name = "form"
path = "examples/form.rs"
required-features = ["compound-components"]
[[example]]
name = "gauge"
path = "examples/gauge.rs"
required-features = ["display-components"]
[[example]]
name = "heatmap"
path = "examples/heatmap.rs"
required-features = ["compound-components"]
[[example]]
name = "help_panel"
path = "examples/help_panel.rs"
required-features = ["display-components"]
[[example]]
name = "histogram"
path = "examples/histogram.rs"
required-features = ["compound-components"]
[[example]]
name = "input_field"
path = "examples/input_field.rs"
required-features = ["input-components"]
[[example]]
name = "key_hints"
path = "examples/key_hints.rs"
required-features = ["display-components"]
[[example]]
name = "line_input"
path = "examples/line_input.rs"
required-features = ["input-components"]
[[example]]
name = "loading_list"
path = "examples/loading_list.rs"
required-features = ["data-components"]
[[example]]
name = "log_correlation"
path = "examples/log_correlation.rs"
required-features = ["compound-components"]
[[example]]
name = "log_explorer"
path = "examples/log_explorer.rs"
required-features = ["full"]
[[example]]
name = "log_viewer"
path = "examples/log_viewer.rs"
required-features = ["compound-components"]
[[example]]
name = "markdown_renderer"
path = "examples/markdown_renderer.rs"
required-features = ["markdown"]
[[example]]
name = "menu"
path = "examples/menu.rs"
required-features = ["navigation-components"]
[[example]]
name = "metrics_dashboard"
path = "examples/metrics_dashboard.rs"
required-features = ["compound-components"]
[[example]]
name = "multi_progress"
path = "examples/multi_progress.rs"
required-features = ["display-components"]
[[example]]
name = "number_input"
path = "examples/number_input.rs"
required-features = ["input-components"]
[[example]]
name = "paginator"
path = "examples/paginator.rs"
required-features = ["display-components"]
[[example]]
name = "pane_layout"
path = "examples/pane_layout.rs"
required-features = ["compound-components"]
[[example]]
name = "production_app"
path = "examples/production_app.rs"
required-features = ["full"]
[[example]]
name = "progress_bar"
path = "examples/progress_bar.rs"
required-features = ["display-components"]
[[example]]
name = "radio_group"
path = "examples/radio_group.rs"
required-features = ["input-components"]
[[example]]
name = "resource_gauge"
path = "examples/resource_gauge.rs"
required-features = ["display-components"]
[[example]]
name = "router"
path = "examples/router.rs"
required-features = ["navigation-components"]
[[example]]
name = "scroll_view"
path = "examples/scroll_view.rs"
required-features = ["display-components"]
[[example]]
name = "scrollable_text"
path = "examples/scrollable_text.rs"
required-features = ["display-components"]
[[example]]
name = "searchable_list"
path = "examples/searchable_list.rs"
required-features = ["compound-components"]
[[example]]
name = "select"
path = "examples/select.rs"
required-features = ["input-components"]
[[example]]
name = "selectable_list"
path = "examples/selectable_list.rs"
required-features = ["data-components"]
[[example]]
name = "slider"
path = "examples/slider.rs"
required-features = ["input-components"]
[[example]]
name = "span_tree"
path = "examples/span_tree.rs"
required-features = ["compound-components"]
[[example]]
name = "sparkline"
path = "examples/sparkline.rs"
required-features = ["display-components"]
[[example]]
name = "spinner"
path = "examples/spinner.rs"
required-features = ["display-components"]
[[example]]
name = "split_panel"
path = "examples/split_panel.rs"
required-features = ["compound-components"]
[[example]]
name = "status_bar"
path = "examples/status_bar.rs"
required-features = ["display-components"]
[[example]]
name = "status_log"
path = "examples/status_log.rs"
required-features = ["display-components"]
[[example]]
name = "step_indicator"
path = "examples/step_indicator.rs"
required-features = ["navigation-components"]
[[example]]
name = "styled_text"
path = "examples/styled_text.rs"
required-features = ["display-components"]
[[example]]
name = "styling_showcase"
path = "examples/styling_showcase.rs"
required-features = ["full"]
[[example]]
name = "switch"
path = "examples/switch.rs"
required-features = ["input-components"]
[[example]]
name = "tab_bar"
path = "examples/tab_bar.rs"
required-features = ["navigation-components"]
[[example]]
name = "table"
path = "examples/table.rs"
required-features = ["data-components"]
[[example]]
name = "tabs"
path = "examples/tabs.rs"
required-features = ["navigation-components"]
[[example]]
name = "terminal_output"
path = "examples/terminal_output.rs"
required-features = ["display-components"]
[[example]]
name = "test_harness"
path = "examples/test_harness.rs"
[[example]]
name = "text_area"
path = "examples/text_area.rs"
required-features = ["input-components"]
[[example]]
name = "themed_app"
path = "examples/themed_app.rs"
required-features = [
"input-components",
"data-components",
"display-components",
]
[[example]]
name = "timeline"
path = "examples/timeline.rs"
required-features = ["compound-components"]
[[example]]
name = "title_card"
path = "examples/title_card.rs"
required-features = ["display-components"]
[[example]]
name = "toast"
path = "examples/toast.rs"
required-features = ["display-components"]
[[example]]
name = "tooltip"
path = "examples/tooltip.rs"
required-features = ["overlay-components"]
[[example]]
name = "tree"
path = "examples/tree.rs"
required-features = ["data-components"]
[[example]]
name = "treemap"
path = "examples/treemap.rs"
required-features = ["compound-components"]
[[example]]
name = "usage_display"
path = "examples/usage_display.rs"
required-features = ["display-components"]
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "integration_async"
path = "tests/integration_async.rs"
[[test]]
name = "integration_new_components"
path = "tests/integration_new_components.rs"
[[test]]
name = "integration_new_components_2"
path = "tests/integration_new_components_2.rs"
[[test]]
name = "integration_stress"
path = "tests/integration_stress.rs"
[[test]]
name = "integration_with_args"
path = "tests/integration_with_args.rs"
[[test]]
name = "property"
path = "tests/property.rs"
[[test]]
name = "property_extended"
path = "tests/property_extended.rs"
[[test]]
name = "serialization"
path = "tests/serialization.rs"
[[test]]
name = "trybuild_compile_fail"
path = "tests/trybuild_compile_fail.rs"
[[bench]]
name = "capture_backend"
path = "benches/capture_backend.rs"
harness = false
[[bench]]
name = "component_events"
path = "benches/component_events.rs"
harness = false
required-features = [
"input-components",
"data-components",
]
[[bench]]
name = "component_view"
path = "benches/component_view.rs"
harness = false
required-features = ["data-components"]
[[bench]]
name = "memory"
path = "benches/memory.rs"
harness = false
required-features = ["data-components"]
[[bench]]
name = "runtime"
path = "benches/runtime.rs"
harness = false
[[bench]]
name = "sort_bench"
path = "benches/sort_bench.rs"
harness = false
required-features = ["data-components"]
[dependencies.arboard]
version = "3"
optional = true
[dependencies.async-stream]
version = "0.3"
[dependencies.compact_str]
version = "0.8"
[dependencies.crossterm]
version = "0.28"
features = ["event-stream"]
[dependencies.futures-util]
version = "0.3"
[dependencies.pulldown-cmark]
version = "0.12"
optional = true
default-features = false
[dependencies.ratatui]
version = "0.29"
[dependencies.regex]
version = "1"
optional = true
[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1.0"
optional = true
[dependencies.tokio]
version = "1"
features = [
"sync",
"rt",
"rt-multi-thread",
"macros",
"time",
"fs",
]
[dependencies.tokio-stream]
version = "0.1"
[dependencies.tokio-util]
version = "0.7"
[dependencies.tracing]
version = "0.1"
optional = true
[dependencies.unicode-width]
version = "0.2"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.insta]
version = "1.41"
features = ["json"]
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.proptest]
version = "~1.8"
[dev-dependencies.rand]
version = "0.9"
[dev-dependencies.tempfile]
version = "3.24.0"
[dev-dependencies.tokio]
version = "1"
features = [
"full",
"test-util",
]
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.trybuild]
version = "1"