[package] name = "ratatui" version = "0.26.1" # crate version authors = ["Florian Dehau ", "The Ratatui Developers"] description = "A library that's all about cooking up terminal user interfaces" documentation = "https://docs.rs/ratatui/latest/ratatui/" keywords = ["tui", "terminal", "dashboard"] repository = "https://github.com/ratatui-org/ratatui" readme = "README.md" license = "MIT" exclude = [ "assets/*", ".github", "Makefile.toml", "CONTRIBUTING.md", "*.log", "tags", ] autoexamples = true edition = "2021" rust-version = "1.74.0" [badges] [dependencies] crossterm = { version = "0.27", optional = true } termion = { version = "3.0", optional = true } termwiz = { version = "0.22.0", optional = true } serde = { version = "1", optional = true, features = ["derive"] } bitflags = "2.3" cassowary = "0.3" indoc = "2.0" itertools = "0.12" paste = "1.0.2" strum = { version = "0.26", features = ["derive"] } time = { version = "0.3.11", optional = true, features = ["local-offset"] } unicode-segmentation = "1.10" unicode-width = "0.1" document-features = { version = "0.2.7", optional = true } lru = "0.12.0" stability = "0.1.1" compact_str = "0.7.1" [dev-dependencies] anyhow = "1.0.71" argh = "0.1.12" better-panic = "0.3.0" cargo-husky = { version = "1.5.0", default-features = false, features = [ "user-hooks", ] } color-eyre = "0.6.2" criterion = { version = "0.5.1", features = ["html_reports"] } derive_builder = "0.20.0" fakeit = "1.1" font8x8 = "0.3.1" palette = "0.7.3" pretty_assertions = "1.4.0" rand = "0.8.5" rand_chacha = "0.3.1" rstest = "0.18.2" serde_json = "1.0.109" [lints.rust] unsafe_code = "forbid" [lints.clippy] pedantic = { level = "warn", priority = -1 } cast_possible_truncation = "allow" cast_possible_wrap = "allow" cast_precision_loss = "allow" cast_sign_loss = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow" module_name_repetitions = "allow" must_use_candidate = "allow" should_panic_without_expect = "allow" wildcard_imports = "allow" # nursery or restricted deref_by_slicing = "warn" empty_line_after_doc_comments = "warn" equatable_if_let = "warn" missing_const_for_fn = "warn" use_self = "warn" [features] #! The crate provides a set of optional features that can be enabled in your `cargo.toml` file. #! ## By default, we enable the crossterm backend as this is a reasonable choice for most applications ## as it is supported on Linux/Mac/Windows systems. We also enable the `underline-color` feature ## which allows you to set the underline color of text. default = ["crossterm", "underline-color"] #! Generally an application will only use one backend, so you should only enable one of the following features: ## enables the [`CrosstermBackend`] backend and adds a dependency on the [Crossterm crate]. crossterm = ["dep:crossterm"] ## enables the [`TermionBackend`] backend and adds a dependency on the [Termion crate]. termion = ["dep:termion"] ## enables the [`TermwizBackend`] backend and adds a dependency on the [Termwiz crate]. termwiz = ["dep:termwiz"] #! The following optional features are available for all backends: ## enables serialization and deserialization of style and color types using the [Serde crate]. ## This is useful if you want to save themes to a file. serde = ["dep:serde", "bitflags/serde", "compact_str/serde"] ## enables the [`border!`] macro. macros = [] ## enables all widgets. all-widgets = ["widget-calendar"] #! Widgets that add dependencies are gated behind feature flags to prevent unused transitive #! dependencies. The available features are: ## enables the [`calendar`] widget module and adds a dependency on the [Time crate]. widget-calendar = ["dep:time"] #! Underline color is only supported by the [`CrosstermBackend`] backend, and is not supported #! on Windows 7. ## enables the backend code that sets the underline color. underline-color = ["dep:crossterm"] #! The following features are unstable and may change in the future: ## Enable all unstable features. unstable = ["unstable-rendered-line-info", "unstable-widget-ref"] ## Enables the [`Paragraph::line_count`](crate::widgets::Paragraph::line_count) ## [`Paragraph::line_width`](crate::widgets::Paragraph::line_width) methods ## which are experimental and may change in the future. ## See [Issue 293](https://github.com/ratatui-org/ratatui/issues/293) for more details. unstable-rendered-line-info = [] ## Enables the `WidgetRef` and `StatefulWidgetRef` traits which are experimental and may change in ## the future. unstable-widget-ref = [] [package.metadata.docs.rs] all-features = true # see https://doc.rust-lang.org/nightly/rustdoc/scraped-examples.html cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"] rustdoc-args = ["--cfg", "docsrs"] [[bench]] name = "barchart" harness = false [[bench]] name = "block" harness = false [[bench]] name = "list" harness = false [lib] bench = false [[bench]] name = "paragraph" harness = false [[bench]] name = "sparkline" harness = false [[example]] name = "barchart" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "block" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "canvas" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "calendar" required-features = ["crossterm", "widget-calendar"] doc-scrape-examples = true [[example]] name = "chart" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "colors" required-features = ["crossterm"] # this example is a bit verbose, so we don't want to include it in the docs doc-scrape-examples = false [[example]] name = "colors_rgb" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "custom_widget" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "demo" # this runs for all of the terminal backends, so it can't be built using --all-features or scraped doc-scrape-examples = false [[example]] name = "demo2" required-features = ["crossterm", "widget-calendar"] doc-scrape-examples = true [[example]] name = "docsrs" required-features = ["crossterm"] doc-scrape-examples = false [[example]] name = "gauge" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "hello_world" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "layout" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "constraints" required-features = ["crossterm"] doc-scrape-examples = false [[example]] name = "flex" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "constraint-explorer" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "list" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "modifiers" required-features = ["crossterm"] # this example is a bit verbose, so we don't want to include it in the docs doc-scrape-examples = false [[example]] name = "panic" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "paragraph" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "popup" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "ratatui-logo" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "scrollbar" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "sparkline" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "table" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "tabs" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "user_input" required-features = ["crossterm"] doc-scrape-examples = true [[example]] name = "inline" required-features = ["crossterm"] doc-scrape-examples = true [[test]] name = "state_serde" required-features = ["serde"]