diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4375348..ccb9d4b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,7 @@ jobs: # Run cargo rustdoc with the same options that would be used by docs.rs, taking into account # the package.metadata.docs.rs configured in Cargo.toml. # https://github.com/dtolnay/cargo-docs-rs - - run: cargo +nightly docs-rs + - run: cargo +nightly docs-rs -p ratatui test-doc: strategy: diff --git a/Cargo.toml b/Cargo.toml index 83bceb55..27b91829 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,9 @@ -[package] -name = "ratatui" -version = "0.29.0" # crate version +[workspace] +resolver = "2" +members = ["ratatui"] + +[workspace.package] 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/" repository = "https://github.com/ratatui/ratatui" homepage = "https://ratatui.rs" @@ -21,366 +22,7 @@ exclude = [ edition = "2021" rust-version = "1.74.0" -[dependencies] -bitflags = "2.3" -cassowary = "0.3" -compact_str = "0.8.0" -crossterm = { version = "0.28.1", optional = true } -document-features = { version = "0.2.7", optional = true } -indoc = "2" -instability = "0.3.1" -itertools = "0.13" -lru = "0.12.0" -paste = "1.0.2" -palette = { version = "0.7.6", optional = true } -serde = { version = "1", optional = true, features = ["derive"] } -strum = { version = "0.26.3", features = ["derive"] } -termwiz = { version = "0.22.0", optional = true } -time = { version = "0.3.11", optional = true, features = ["local-offset"] } -unicode-segmentation = "1.10" -unicode-truncate = "1" -# See for information about why we pin unicode-width -unicode-width = "=0.2.0" - -[target.'cfg(not(windows))'.dependencies] -# termion is not supported on Windows -termion = { version = "4.0.0", optional = true } - -[dev-dependencies] -argh = "0.1.12" -color-eyre = "0.6.2" -criterion = { version = "0.5.1", features = ["html_reports"] } -crossterm = { version = "0.28.1", features = ["event-stream"] } -fakeit = "1.1" -font8x8 = "0.3.1" -futures = "0.3.30" -indoc = "2" -octocrab = "0.41.0" -pretty_assertions = "1.4.0" -rand = "0.8.5" -rand_chacha = "0.3.1" -rstest = "0.23.0" -serde_json = "1.0.109" -tokio = { version = "1.39.2", features = [ - "rt", - "macros", - "time", - "rt-multi-thread", -] } -tracing = "0.1.40" -tracing-appender = "0.2.3" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } - -[lints.rust] -unsafe_code = "forbid" - -[lints.clippy] -cargo = { level = "warn", priority = -1 } -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" - -# we often split up a module into multiple files with the main type in a file named after the -# module, so we want to allow this pattern -module_inception = "allow" - -# nursery or restricted -as_underscore = "warn" -deref_by_slicing = "warn" -else_if_without_else = "warn" -empty_line_after_doc_comments = "warn" -equatable_if_let = "warn" -fn_to_numeric_cast_any = "warn" -format_push_string = "warn" -map_err_ignore = "warn" -missing_const_for_fn = "warn" -mixed_read_write_in_expression = "warn" -mod_module_files = "warn" -needless_pass_by_ref_mut = "warn" -needless_raw_strings = "warn" -or_fun_call = "warn" -redundant_type_annotations = "warn" -rest_pat_in_fully_bound_structs = "warn" -string_lit_chars_any = "warn" -string_slice = "warn" -string_to_string = "warn" -unnecessary_self_imports = "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::CrosstermBackend) backend and adds a dependency on [`crossterm`]. -crossterm = ["dep:crossterm"] -## enables the [`TermionBackend`](backend::TermionBackend) backend and adds a dependency on [`termion`]. -termion = ["dep:termion"] -## enables the [`TermwizBackend`](backend::TermwizBackend) backend and adds a dependency on [`termwiz`]. -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 conversions from colors in the [`palette`] crate to [`Color`](crate::style::Color). -palette = ["dep:palette"] - -## Use terminal scrolling regions to make some operations less prone to -## flickering. (i.e. Terminal::insert_before). -scrolling-regions = [] - -## 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`](widgets::calendar) widget module and adds a dependency on [`time`]. -widget-calendar = ["dep:time"] - -#! The following optional features are only available for some backends: - -## enables the backend code that sets the underline color. -## Underline color is only supported by the [`CrosstermBackend`](backend::CrosstermBackend) backend, -## and is not supported on Windows 7. -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", - "unstable-backend-writer", -] - -## Enables the [`Paragraph::line_count`](widgets::Paragraph::line_count) -## [`Paragraph::line_width`](widgets::Paragraph::line_width) methods -## which are experimental and may change in the future. -## See [Issue 293](https://github.com/ratatui/ratatui/issues/293) for more details. -unstable-rendered-line-info = [] - -## Enables the [`WidgetRef`](widgets::WidgetRef) and [`StatefulWidgetRef`](widgets::StatefulWidgetRef) traits which are experimental and may change in -## the future. -unstable-widget-ref = [] - -## Enables getting access to backends' writers. -unstable-backend-writer = [] - -[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"] - # Improve benchmark consistency [profile.bench] codegen-units = 1 lto = true - -[lib] -bench = false - -[[bench]] -name = "main" -harness = false - -[[example]] -name = "async" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "barchart" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "barchart-grouped" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "block" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "calendar" -required-features = ["crossterm", "widget-calendar"] -doc-scrape-examples = true - -[[example]] -name = "canvas" -required-features = ["crossterm"] -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", "palette"] -doc-scrape-examples = true - -[[example]] -name = "constraint-explorer" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "constraints" -required-features = ["crossterm"] -doc-scrape-examples = false - -[[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", "palette", "widget-calendar"] -doc-scrape-examples = true - -[[example]] -name = "docsrs" -required-features = ["crossterm"] -doc-scrape-examples = false - -[[example]] -name = "flex" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "gauge" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "hello_world" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "inline" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "layout" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "line_gauge" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "hyperlink" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "list" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "minimal" -required-features = ["crossterm"] -# prefer to show the more featureful examples in the docs -doc-scrape-examples = false - -[[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 = "tracing" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "user_input" -required-features = ["crossterm"] -doc-scrape-examples = true - -[[example]] -name = "widget_impl" -required-features = ["crossterm", "unstable-widget-ref"] -doc-scrape-examples = true - -[[test]] -name = "state_serde" -required-features = ["serde"] diff --git a/Makefile.toml b/Makefile.toml index ec6caf9f..7caf1594 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -6,6 +6,8 @@ skip_core_tasks = true [env] # all features except the backend ones NON_BACKEND_FEATURES = "all-widgets,macros,serde" +# allow to run tasks from the workspace root +CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true [tasks.default] alias = "ci" @@ -41,6 +43,8 @@ toolchain = "nightly" command = "cargo" args = [ "rustdoc", + "-p", + "ratatui", "--all-features", "--", "-Zunstable-options", @@ -115,9 +119,10 @@ description = "Generate code coverage report" command = "cargo" args = [ "llvm-cov", + "--workspace", "--lcov", "--output-path", - "target/lcov.info", + "../target/lcov.info", "--all-features", ] diff --git a/ratatui/Cargo.toml b/ratatui/Cargo.toml new file mode 100644 index 00000000..6a3cf9d7 --- /dev/null +++ b/ratatui/Cargo.toml @@ -0,0 +1,374 @@ +[package] +name = "ratatui" +description = "A library that's all about cooking up terminal user interfaces" +version = "0.29.0" +authors.workspace = true +documentation.workspace = true +repository.workspace = true +homepage.workspace = true +keywords.workspace = true +categories.workspace = true +readme.workspace = true +license.workspace = true +exclude.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +bitflags = "2.3" +cassowary = "0.3" +compact_str = "0.8.0" +crossterm = { version = "0.28.1", optional = true } +document-features = { version = "0.2.7", optional = true } +indoc = "2" +instability = "0.3.1" +itertools = "0.13" +lru = "0.12.0" +paste = "1.0.2" +palette = { version = "0.7.6", optional = true } +serde = { version = "1", optional = true, features = ["derive"] } +strum = { version = "0.26.3", features = ["derive"] } +termwiz = { version = "0.22.0", optional = true } +time = { version = "0.3.11", optional = true, features = ["local-offset"] } +unicode-segmentation = "1.10" +unicode-truncate = "1" +# See for information about why we pin unicode-width +unicode-width = "=0.2.0" + +[target.'cfg(not(windows))'.dependencies] +# termion is not supported on Windows +termion = { version = "4.0.0", optional = true } + +[dev-dependencies] +argh = "0.1.12" +color-eyre = "0.6.2" +criterion = { version = "0.5.1", features = ["html_reports"] } +crossterm = { version = "0.28.1", features = ["event-stream"] } +fakeit = "1.1" +font8x8 = "0.3.1" +futures = "0.3.30" +indoc = "2" +octocrab = "0.41.0" +pretty_assertions = "1.4.0" +rand = "0.8.5" +rand_chacha = "0.3.1" +rstest = "0.23.0" +serde_json = "1.0.109" +tokio = { version = "1.39.2", features = [ + "rt", + "macros", + "time", + "rt-multi-thread", +] } +tracing = "0.1.40" +tracing-appender = "0.2.3" +tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } + +[lints.rust] +unsafe_code = "forbid" + +[lints.clippy] +cargo = { level = "warn", priority = -1 } +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" + +# we often split up a module into multiple files with the main type in a file named after the +# module, so we want to allow this pattern +module_inception = "allow" + +# nursery or restricted +as_underscore = "warn" +deref_by_slicing = "warn" +else_if_without_else = "warn" +empty_line_after_doc_comments = "warn" +equatable_if_let = "warn" +fn_to_numeric_cast_any = "warn" +format_push_string = "warn" +map_err_ignore = "warn" +missing_const_for_fn = "warn" +mixed_read_write_in_expression = "warn" +mod_module_files = "warn" +needless_pass_by_ref_mut = "warn" +needless_raw_strings = "warn" +or_fun_call = "warn" +redundant_type_annotations = "warn" +rest_pat_in_fully_bound_structs = "warn" +string_lit_chars_any = "warn" +string_slice = "warn" +string_to_string = "warn" +unnecessary_self_imports = "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::CrosstermBackend) backend and adds a dependency on [`crossterm`]. +crossterm = ["dep:crossterm"] +## enables the [`TermionBackend`](backend::TermionBackend) backend and adds a dependency on [`termion`]. +termion = ["dep:termion"] +## enables the [`TermwizBackend`](backend::TermwizBackend) backend and adds a dependency on [`termwiz`]. +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 conversions from colors in the [`palette`] crate to [`Color`](crate::style::Color). +palette = ["dep:palette"] + +## Use terminal scrolling regions to make some operations less prone to +## flickering. (i.e. Terminal::insert_before). +scrolling-regions = [] + +## 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`](widgets::calendar) widget module and adds a dependency on [`time`]. +widget-calendar = ["dep:time"] + +#! The following optional features are only available for some backends: + +## enables the backend code that sets the underline color. +## Underline color is only supported by the [`CrosstermBackend`](backend::CrosstermBackend) backend, +## and is not supported on Windows 7. +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", + "unstable-backend-writer", +] + +## Enables the [`Paragraph::line_count`](widgets::Paragraph::line_count) +## [`Paragraph::line_width`](widgets::Paragraph::line_width) methods +## which are experimental and may change in the future. +## See [Issue 293](https://github.com/ratatui/ratatui/issues/293) for more details. +unstable-rendered-line-info = [] + +## Enables the [`WidgetRef`](widgets::WidgetRef) and [`StatefulWidgetRef`](widgets::StatefulWidgetRef) traits which are experimental and may change in +## the future. +unstable-widget-ref = [] + +## Enables getting access to backends' writers. +unstable-backend-writer = [] + +[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"] + +[lib] +bench = false + +[[bench]] +name = "main" +harness = false + +[[example]] +name = "async" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "barchart" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "barchart-grouped" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "block" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "calendar" +required-features = ["crossterm", "widget-calendar"] +doc-scrape-examples = true + +[[example]] +name = "canvas" +required-features = ["crossterm"] +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", "palette"] +doc-scrape-examples = true + +[[example]] +name = "constraint-explorer" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "constraints" +required-features = ["crossterm"] +doc-scrape-examples = false + +[[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", "palette", "widget-calendar"] +doc-scrape-examples = true + +[[example]] +name = "docsrs" +required-features = ["crossterm"] +doc-scrape-examples = false + +[[example]] +name = "flex" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "gauge" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "hello_world" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "inline" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "layout" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "line_gauge" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "hyperlink" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "list" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "minimal" +required-features = ["crossterm"] +# prefer to show the more featureful examples in the docs +doc-scrape-examples = false + +[[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 = "tracing" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "user_input" +required-features = ["crossterm"] +doc-scrape-examples = true + +[[example]] +name = "widget_impl" +required-features = ["crossterm", "unstable-widget-ref"] +doc-scrape-examples = true + +[[test]] +name = "state_serde" +required-features = ["serde"] diff --git a/benches/main.rs b/ratatui/benches/main.rs similarity index 100% rename from benches/main.rs rename to ratatui/benches/main.rs diff --git a/benches/main/barchart.rs b/ratatui/benches/main/barchart.rs similarity index 100% rename from benches/main/barchart.rs rename to ratatui/benches/main/barchart.rs diff --git a/benches/main/block.rs b/ratatui/benches/main/block.rs similarity index 100% rename from benches/main/block.rs rename to ratatui/benches/main/block.rs diff --git a/benches/main/buffer.rs b/ratatui/benches/main/buffer.rs similarity index 100% rename from benches/main/buffer.rs rename to ratatui/benches/main/buffer.rs diff --git a/benches/main/line.rs b/ratatui/benches/main/line.rs similarity index 100% rename from benches/main/line.rs rename to ratatui/benches/main/line.rs diff --git a/benches/main/list.rs b/ratatui/benches/main/list.rs similarity index 100% rename from benches/main/list.rs rename to ratatui/benches/main/list.rs diff --git a/benches/main/paragraph.rs b/ratatui/benches/main/paragraph.rs similarity index 100% rename from benches/main/paragraph.rs rename to ratatui/benches/main/paragraph.rs diff --git a/benches/main/rect.rs b/ratatui/benches/main/rect.rs similarity index 100% rename from benches/main/rect.rs rename to ratatui/benches/main/rect.rs diff --git a/benches/main/sparkline.rs b/ratatui/benches/main/sparkline.rs similarity index 100% rename from benches/main/sparkline.rs rename to ratatui/benches/main/sparkline.rs diff --git a/benches/main/table.rs b/ratatui/benches/main/table.rs similarity index 100% rename from benches/main/table.rs rename to ratatui/benches/main/table.rs diff --git a/examples/README.md b/ratatui/examples/README.md similarity index 100% rename from examples/README.md rename to ratatui/examples/README.md diff --git a/examples/async.rs b/ratatui/examples/async.rs similarity index 100% rename from examples/async.rs rename to ratatui/examples/async.rs diff --git a/examples/barchart-grouped.rs b/ratatui/examples/barchart-grouped.rs similarity index 100% rename from examples/barchart-grouped.rs rename to ratatui/examples/barchart-grouped.rs diff --git a/examples/barchart.rs b/ratatui/examples/barchart.rs similarity index 100% rename from examples/barchart.rs rename to ratatui/examples/barchart.rs diff --git a/examples/block.rs b/ratatui/examples/block.rs similarity index 100% rename from examples/block.rs rename to ratatui/examples/block.rs diff --git a/examples/calendar.rs b/ratatui/examples/calendar.rs similarity index 100% rename from examples/calendar.rs rename to ratatui/examples/calendar.rs diff --git a/examples/canvas.rs b/ratatui/examples/canvas.rs similarity index 100% rename from examples/canvas.rs rename to ratatui/examples/canvas.rs diff --git a/examples/chart.rs b/ratatui/examples/chart.rs similarity index 100% rename from examples/chart.rs rename to ratatui/examples/chart.rs diff --git a/examples/colors.rs b/ratatui/examples/colors.rs similarity index 100% rename from examples/colors.rs rename to ratatui/examples/colors.rs diff --git a/examples/colors_rgb.rs b/ratatui/examples/colors_rgb.rs similarity index 100% rename from examples/colors_rgb.rs rename to ratatui/examples/colors_rgb.rs diff --git a/examples/constraint-explorer.rs b/ratatui/examples/constraint-explorer.rs similarity index 100% rename from examples/constraint-explorer.rs rename to ratatui/examples/constraint-explorer.rs diff --git a/examples/constraints.rs b/ratatui/examples/constraints.rs similarity index 100% rename from examples/constraints.rs rename to ratatui/examples/constraints.rs diff --git a/examples/custom_widget.rs b/ratatui/examples/custom_widget.rs similarity index 100% rename from examples/custom_widget.rs rename to ratatui/examples/custom_widget.rs diff --git a/examples/demo/app.rs b/ratatui/examples/demo/app.rs similarity index 100% rename from examples/demo/app.rs rename to ratatui/examples/demo/app.rs diff --git a/examples/demo/crossterm.rs b/ratatui/examples/demo/crossterm.rs similarity index 100% rename from examples/demo/crossterm.rs rename to ratatui/examples/demo/crossterm.rs diff --git a/examples/demo/main.rs b/ratatui/examples/demo/main.rs similarity index 100% rename from examples/demo/main.rs rename to ratatui/examples/demo/main.rs diff --git a/examples/demo/termion.rs b/ratatui/examples/demo/termion.rs similarity index 100% rename from examples/demo/termion.rs rename to ratatui/examples/demo/termion.rs diff --git a/examples/demo/termwiz.rs b/ratatui/examples/demo/termwiz.rs similarity index 100% rename from examples/demo/termwiz.rs rename to ratatui/examples/demo/termwiz.rs diff --git a/examples/demo/ui.rs b/ratatui/examples/demo/ui.rs similarity index 100% rename from examples/demo/ui.rs rename to ratatui/examples/demo/ui.rs diff --git a/examples/demo2/app.rs b/ratatui/examples/demo2/app.rs similarity index 100% rename from examples/demo2/app.rs rename to ratatui/examples/demo2/app.rs diff --git a/examples/demo2/colors.rs b/ratatui/examples/demo2/colors.rs similarity index 100% rename from examples/demo2/colors.rs rename to ratatui/examples/demo2/colors.rs diff --git a/examples/demo2/destroy.rs b/ratatui/examples/demo2/destroy.rs similarity index 100% rename from examples/demo2/destroy.rs rename to ratatui/examples/demo2/destroy.rs diff --git a/examples/demo2/main.rs b/ratatui/examples/demo2/main.rs similarity index 100% rename from examples/demo2/main.rs rename to ratatui/examples/demo2/main.rs diff --git a/examples/demo2/tabs.rs b/ratatui/examples/demo2/tabs.rs similarity index 100% rename from examples/demo2/tabs.rs rename to ratatui/examples/demo2/tabs.rs diff --git a/examples/demo2/tabs/about.rs b/ratatui/examples/demo2/tabs/about.rs similarity index 100% rename from examples/demo2/tabs/about.rs rename to ratatui/examples/demo2/tabs/about.rs diff --git a/examples/demo2/tabs/email.rs b/ratatui/examples/demo2/tabs/email.rs similarity index 100% rename from examples/demo2/tabs/email.rs rename to ratatui/examples/demo2/tabs/email.rs diff --git a/examples/demo2/tabs/recipe.rs b/ratatui/examples/demo2/tabs/recipe.rs similarity index 100% rename from examples/demo2/tabs/recipe.rs rename to ratatui/examples/demo2/tabs/recipe.rs diff --git a/examples/demo2/tabs/traceroute.rs b/ratatui/examples/demo2/tabs/traceroute.rs similarity index 100% rename from examples/demo2/tabs/traceroute.rs rename to ratatui/examples/demo2/tabs/traceroute.rs diff --git a/examples/demo2/tabs/weather.rs b/ratatui/examples/demo2/tabs/weather.rs similarity index 100% rename from examples/demo2/tabs/weather.rs rename to ratatui/examples/demo2/tabs/weather.rs diff --git a/examples/demo2/theme.rs b/ratatui/examples/demo2/theme.rs similarity index 100% rename from examples/demo2/theme.rs rename to ratatui/examples/demo2/theme.rs diff --git a/examples/docsrs.rs b/ratatui/examples/docsrs.rs similarity index 100% rename from examples/docsrs.rs rename to ratatui/examples/docsrs.rs diff --git a/examples/flex.rs b/ratatui/examples/flex.rs similarity index 100% rename from examples/flex.rs rename to ratatui/examples/flex.rs diff --git a/examples/gauge.rs b/ratatui/examples/gauge.rs similarity index 100% rename from examples/gauge.rs rename to ratatui/examples/gauge.rs diff --git a/examples/hello_world.rs b/ratatui/examples/hello_world.rs similarity index 100% rename from examples/hello_world.rs rename to ratatui/examples/hello_world.rs diff --git a/examples/hyperlink.rs b/ratatui/examples/hyperlink.rs similarity index 100% rename from examples/hyperlink.rs rename to ratatui/examples/hyperlink.rs diff --git a/examples/inline.rs b/ratatui/examples/inline.rs similarity index 100% rename from examples/inline.rs rename to ratatui/examples/inline.rs diff --git a/examples/layout.rs b/ratatui/examples/layout.rs similarity index 100% rename from examples/layout.rs rename to ratatui/examples/layout.rs diff --git a/examples/line_gauge.rs b/ratatui/examples/line_gauge.rs similarity index 100% rename from examples/line_gauge.rs rename to ratatui/examples/line_gauge.rs diff --git a/examples/list.rs b/ratatui/examples/list.rs similarity index 100% rename from examples/list.rs rename to ratatui/examples/list.rs diff --git a/examples/minimal.rs b/ratatui/examples/minimal.rs similarity index 100% rename from examples/minimal.rs rename to ratatui/examples/minimal.rs diff --git a/examples/modifiers.rs b/ratatui/examples/modifiers.rs similarity index 100% rename from examples/modifiers.rs rename to ratatui/examples/modifiers.rs diff --git a/examples/panic.rs b/ratatui/examples/panic.rs similarity index 100% rename from examples/panic.rs rename to ratatui/examples/panic.rs diff --git a/examples/paragraph.rs b/ratatui/examples/paragraph.rs similarity index 100% rename from examples/paragraph.rs rename to ratatui/examples/paragraph.rs diff --git a/examples/popup.rs b/ratatui/examples/popup.rs similarity index 100% rename from examples/popup.rs rename to ratatui/examples/popup.rs diff --git a/examples/ratatui-logo.rs b/ratatui/examples/ratatui-logo.rs similarity index 100% rename from examples/ratatui-logo.rs rename to ratatui/examples/ratatui-logo.rs diff --git a/examples/scrollbar.rs b/ratatui/examples/scrollbar.rs similarity index 100% rename from examples/scrollbar.rs rename to ratatui/examples/scrollbar.rs diff --git a/examples/sparkline.rs b/ratatui/examples/sparkline.rs similarity index 100% rename from examples/sparkline.rs rename to ratatui/examples/sparkline.rs diff --git a/examples/table.rs b/ratatui/examples/table.rs similarity index 100% rename from examples/table.rs rename to ratatui/examples/table.rs diff --git a/examples/tabs.rs b/ratatui/examples/tabs.rs similarity index 100% rename from examples/tabs.rs rename to ratatui/examples/tabs.rs diff --git a/examples/tracing.rs b/ratatui/examples/tracing.rs similarity index 100% rename from examples/tracing.rs rename to ratatui/examples/tracing.rs diff --git a/examples/user_input.rs b/ratatui/examples/user_input.rs similarity index 100% rename from examples/user_input.rs rename to ratatui/examples/user_input.rs diff --git a/examples/vhs/barchart-grouped.tape b/ratatui/examples/vhs/barchart-grouped.tape similarity index 100% rename from examples/vhs/barchart-grouped.tape rename to ratatui/examples/vhs/barchart-grouped.tape diff --git a/examples/vhs/barchart.tape b/ratatui/examples/vhs/barchart.tape similarity index 100% rename from examples/vhs/barchart.tape rename to ratatui/examples/vhs/barchart.tape diff --git a/examples/vhs/block.tape b/ratatui/examples/vhs/block.tape similarity index 100% rename from examples/vhs/block.tape rename to ratatui/examples/vhs/block.tape diff --git a/examples/vhs/calendar.tape b/ratatui/examples/vhs/calendar.tape similarity index 100% rename from examples/vhs/calendar.tape rename to ratatui/examples/vhs/calendar.tape diff --git a/examples/vhs/canvas.tape b/ratatui/examples/vhs/canvas.tape similarity index 100% rename from examples/vhs/canvas.tape rename to ratatui/examples/vhs/canvas.tape diff --git a/examples/vhs/chart.tape b/ratatui/examples/vhs/chart.tape similarity index 100% rename from examples/vhs/chart.tape rename to ratatui/examples/vhs/chart.tape diff --git a/examples/vhs/colors.tape b/ratatui/examples/vhs/colors.tape similarity index 100% rename from examples/vhs/colors.tape rename to ratatui/examples/vhs/colors.tape diff --git a/examples/vhs/colors_rgb.tape b/ratatui/examples/vhs/colors_rgb.tape similarity index 100% rename from examples/vhs/colors_rgb.tape rename to ratatui/examples/vhs/colors_rgb.tape diff --git a/examples/vhs/constraint-explorer.tape b/ratatui/examples/vhs/constraint-explorer.tape similarity index 100% rename from examples/vhs/constraint-explorer.tape rename to ratatui/examples/vhs/constraint-explorer.tape diff --git a/examples/vhs/constraints.tape b/ratatui/examples/vhs/constraints.tape similarity index 100% rename from examples/vhs/constraints.tape rename to ratatui/examples/vhs/constraints.tape diff --git a/examples/vhs/custom_widget.tape b/ratatui/examples/vhs/custom_widget.tape similarity index 100% rename from examples/vhs/custom_widget.tape rename to ratatui/examples/vhs/custom_widget.tape diff --git a/examples/vhs/demo.tape b/ratatui/examples/vhs/demo.tape similarity index 100% rename from examples/vhs/demo.tape rename to ratatui/examples/vhs/demo.tape diff --git a/examples/vhs/demo2-destroy.tape b/ratatui/examples/vhs/demo2-destroy.tape similarity index 100% rename from examples/vhs/demo2-destroy.tape rename to ratatui/examples/vhs/demo2-destroy.tape diff --git a/examples/vhs/demo2-social.tape b/ratatui/examples/vhs/demo2-social.tape similarity index 100% rename from examples/vhs/demo2-social.tape rename to ratatui/examples/vhs/demo2-social.tape diff --git a/examples/vhs/demo2.tape b/ratatui/examples/vhs/demo2.tape similarity index 100% rename from examples/vhs/demo2.tape rename to ratatui/examples/vhs/demo2.tape diff --git a/examples/vhs/docsrs.tape b/ratatui/examples/vhs/docsrs.tape similarity index 100% rename from examples/vhs/docsrs.tape rename to ratatui/examples/vhs/docsrs.tape diff --git a/examples/vhs/flex.tape b/ratatui/examples/vhs/flex.tape similarity index 100% rename from examples/vhs/flex.tape rename to ratatui/examples/vhs/flex.tape diff --git a/examples/vhs/gauge.tape b/ratatui/examples/vhs/gauge.tape similarity index 100% rename from examples/vhs/gauge.tape rename to ratatui/examples/vhs/gauge.tape diff --git a/examples/vhs/generate.bash b/ratatui/examples/vhs/generate.bash similarity index 100% rename from examples/vhs/generate.bash rename to ratatui/examples/vhs/generate.bash diff --git a/examples/vhs/hello_world.tape b/ratatui/examples/vhs/hello_world.tape similarity index 100% rename from examples/vhs/hello_world.tape rename to ratatui/examples/vhs/hello_world.tape diff --git a/examples/vhs/hyperlink.tape b/ratatui/examples/vhs/hyperlink.tape similarity index 100% rename from examples/vhs/hyperlink.tape rename to ratatui/examples/vhs/hyperlink.tape diff --git a/examples/vhs/inline.tape b/ratatui/examples/vhs/inline.tape similarity index 100% rename from examples/vhs/inline.tape rename to ratatui/examples/vhs/inline.tape diff --git a/examples/vhs/layout.tape b/ratatui/examples/vhs/layout.tape similarity index 100% rename from examples/vhs/layout.tape rename to ratatui/examples/vhs/layout.tape diff --git a/examples/vhs/line_gauge.tape b/ratatui/examples/vhs/line_gauge.tape similarity index 100% rename from examples/vhs/line_gauge.tape rename to ratatui/examples/vhs/line_gauge.tape diff --git a/examples/vhs/list.tape b/ratatui/examples/vhs/list.tape similarity index 100% rename from examples/vhs/list.tape rename to ratatui/examples/vhs/list.tape diff --git a/examples/vhs/minimal.tape b/ratatui/examples/vhs/minimal.tape similarity index 100% rename from examples/vhs/minimal.tape rename to ratatui/examples/vhs/minimal.tape diff --git a/examples/vhs/modifiers.tape b/ratatui/examples/vhs/modifiers.tape similarity index 100% rename from examples/vhs/modifiers.tape rename to ratatui/examples/vhs/modifiers.tape diff --git a/examples/vhs/panic.tape b/ratatui/examples/vhs/panic.tape similarity index 100% rename from examples/vhs/panic.tape rename to ratatui/examples/vhs/panic.tape diff --git a/examples/vhs/paragraph.tape b/ratatui/examples/vhs/paragraph.tape similarity index 100% rename from examples/vhs/paragraph.tape rename to ratatui/examples/vhs/paragraph.tape diff --git a/examples/vhs/popup.tape b/ratatui/examples/vhs/popup.tape similarity index 100% rename from examples/vhs/popup.tape rename to ratatui/examples/vhs/popup.tape diff --git a/examples/vhs/ratatui-logo.tape b/ratatui/examples/vhs/ratatui-logo.tape similarity index 100% rename from examples/vhs/ratatui-logo.tape rename to ratatui/examples/vhs/ratatui-logo.tape diff --git a/examples/vhs/scrollbar.tape b/ratatui/examples/vhs/scrollbar.tape similarity index 100% rename from examples/vhs/scrollbar.tape rename to ratatui/examples/vhs/scrollbar.tape diff --git a/examples/vhs/sparkline.tape b/ratatui/examples/vhs/sparkline.tape similarity index 100% rename from examples/vhs/sparkline.tape rename to ratatui/examples/vhs/sparkline.tape diff --git a/examples/vhs/table.tape b/ratatui/examples/vhs/table.tape similarity index 100% rename from examples/vhs/table.tape rename to ratatui/examples/vhs/table.tape diff --git a/examples/vhs/tabs.tape b/ratatui/examples/vhs/tabs.tape similarity index 100% rename from examples/vhs/tabs.tape rename to ratatui/examples/vhs/tabs.tape diff --git a/examples/vhs/tracing.tape b/ratatui/examples/vhs/tracing.tape similarity index 100% rename from examples/vhs/tracing.tape rename to ratatui/examples/vhs/tracing.tape diff --git a/examples/vhs/user_input.tape b/ratatui/examples/vhs/user_input.tape similarity index 100% rename from examples/vhs/user_input.tape rename to ratatui/examples/vhs/user_input.tape diff --git a/examples/widget_impl.rs b/ratatui/examples/widget_impl.rs similarity index 100% rename from examples/widget_impl.rs rename to ratatui/examples/widget_impl.rs diff --git a/src/backend.rs b/ratatui/src/backend.rs similarity index 100% rename from src/backend.rs rename to ratatui/src/backend.rs diff --git a/src/backend/crossterm.rs b/ratatui/src/backend/crossterm.rs similarity index 100% rename from src/backend/crossterm.rs rename to ratatui/src/backend/crossterm.rs diff --git a/src/backend/termion.rs b/ratatui/src/backend/termion.rs similarity index 100% rename from src/backend/termion.rs rename to ratatui/src/backend/termion.rs diff --git a/src/backend/termwiz.rs b/ratatui/src/backend/termwiz.rs similarity index 100% rename from src/backend/termwiz.rs rename to ratatui/src/backend/termwiz.rs diff --git a/src/backend/test.rs b/ratatui/src/backend/test.rs similarity index 100% rename from src/backend/test.rs rename to ratatui/src/backend/test.rs diff --git a/src/buffer.rs b/ratatui/src/buffer.rs similarity index 100% rename from src/buffer.rs rename to ratatui/src/buffer.rs diff --git a/src/buffer/assert.rs b/ratatui/src/buffer/assert.rs similarity index 100% rename from src/buffer/assert.rs rename to ratatui/src/buffer/assert.rs diff --git a/src/buffer/buffer.rs b/ratatui/src/buffer/buffer.rs similarity index 100% rename from src/buffer/buffer.rs rename to ratatui/src/buffer/buffer.rs diff --git a/src/buffer/cell.rs b/ratatui/src/buffer/cell.rs similarity index 100% rename from src/buffer/cell.rs rename to ratatui/src/buffer/cell.rs diff --git a/src/layout.rs b/ratatui/src/layout.rs similarity index 100% rename from src/layout.rs rename to ratatui/src/layout.rs diff --git a/src/layout/alignment.rs b/ratatui/src/layout/alignment.rs similarity index 100% rename from src/layout/alignment.rs rename to ratatui/src/layout/alignment.rs diff --git a/src/layout/constraint.rs b/ratatui/src/layout/constraint.rs similarity index 100% rename from src/layout/constraint.rs rename to ratatui/src/layout/constraint.rs diff --git a/src/layout/direction.rs b/ratatui/src/layout/direction.rs similarity index 100% rename from src/layout/direction.rs rename to ratatui/src/layout/direction.rs diff --git a/src/layout/flex.rs b/ratatui/src/layout/flex.rs similarity index 100% rename from src/layout/flex.rs rename to ratatui/src/layout/flex.rs diff --git a/src/layout/layout.rs b/ratatui/src/layout/layout.rs similarity index 100% rename from src/layout/layout.rs rename to ratatui/src/layout/layout.rs diff --git a/src/layout/margin.rs b/ratatui/src/layout/margin.rs similarity index 100% rename from src/layout/margin.rs rename to ratatui/src/layout/margin.rs diff --git a/src/layout/position.rs b/ratatui/src/layout/position.rs similarity index 100% rename from src/layout/position.rs rename to ratatui/src/layout/position.rs diff --git a/src/layout/rect.rs b/ratatui/src/layout/rect.rs similarity index 100% rename from src/layout/rect.rs rename to ratatui/src/layout/rect.rs diff --git a/src/layout/rect/iter.rs b/ratatui/src/layout/rect/iter.rs similarity index 100% rename from src/layout/rect/iter.rs rename to ratatui/src/layout/rect/iter.rs diff --git a/src/layout/size.rs b/ratatui/src/layout/size.rs similarity index 100% rename from src/layout/size.rs rename to ratatui/src/layout/size.rs diff --git a/src/lib.rs b/ratatui/src/lib.rs similarity index 100% rename from src/lib.rs rename to ratatui/src/lib.rs diff --git a/src/prelude.rs b/ratatui/src/prelude.rs similarity index 100% rename from src/prelude.rs rename to ratatui/src/prelude.rs diff --git a/src/style.rs b/ratatui/src/style.rs similarity index 100% rename from src/style.rs rename to ratatui/src/style.rs diff --git a/src/style/color.rs b/ratatui/src/style/color.rs similarity index 100% rename from src/style/color.rs rename to ratatui/src/style/color.rs diff --git a/src/style/palette.rs b/ratatui/src/style/palette.rs similarity index 100% rename from src/style/palette.rs rename to ratatui/src/style/palette.rs diff --git a/src/style/palette/material.rs b/ratatui/src/style/palette/material.rs similarity index 100% rename from src/style/palette/material.rs rename to ratatui/src/style/palette/material.rs diff --git a/src/style/palette/tailwind.rs b/ratatui/src/style/palette/tailwind.rs similarity index 100% rename from src/style/palette/tailwind.rs rename to ratatui/src/style/palette/tailwind.rs diff --git a/src/style/palette_conversion.rs b/ratatui/src/style/palette_conversion.rs similarity index 100% rename from src/style/palette_conversion.rs rename to ratatui/src/style/palette_conversion.rs diff --git a/src/style/stylize.rs b/ratatui/src/style/stylize.rs similarity index 100% rename from src/style/stylize.rs rename to ratatui/src/style/stylize.rs diff --git a/src/symbols.rs b/ratatui/src/symbols.rs similarity index 100% rename from src/symbols.rs rename to ratatui/src/symbols.rs diff --git a/src/symbols/border.rs b/ratatui/src/symbols/border.rs similarity index 100% rename from src/symbols/border.rs rename to ratatui/src/symbols/border.rs diff --git a/src/symbols/line.rs b/ratatui/src/symbols/line.rs similarity index 100% rename from src/symbols/line.rs rename to ratatui/src/symbols/line.rs diff --git a/src/terminal.rs b/ratatui/src/terminal.rs similarity index 100% rename from src/terminal.rs rename to ratatui/src/terminal.rs diff --git a/src/terminal/frame.rs b/ratatui/src/terminal/frame.rs similarity index 100% rename from src/terminal/frame.rs rename to ratatui/src/terminal/frame.rs diff --git a/src/terminal/init.rs b/ratatui/src/terminal/init.rs similarity index 100% rename from src/terminal/init.rs rename to ratatui/src/terminal/init.rs diff --git a/src/terminal/terminal.rs b/ratatui/src/terminal/terminal.rs similarity index 100% rename from src/terminal/terminal.rs rename to ratatui/src/terminal/terminal.rs diff --git a/src/terminal/viewport.rs b/ratatui/src/terminal/viewport.rs similarity index 100% rename from src/terminal/viewport.rs rename to ratatui/src/terminal/viewport.rs diff --git a/src/text.rs b/ratatui/src/text.rs similarity index 100% rename from src/text.rs rename to ratatui/src/text.rs diff --git a/src/text/grapheme.rs b/ratatui/src/text/grapheme.rs similarity index 100% rename from src/text/grapheme.rs rename to ratatui/src/text/grapheme.rs diff --git a/src/text/line.rs b/ratatui/src/text/line.rs similarity index 100% rename from src/text/line.rs rename to ratatui/src/text/line.rs diff --git a/src/text/masked.rs b/ratatui/src/text/masked.rs similarity index 100% rename from src/text/masked.rs rename to ratatui/src/text/masked.rs diff --git a/src/text/span.rs b/ratatui/src/text/span.rs similarity index 100% rename from src/text/span.rs rename to ratatui/src/text/span.rs diff --git a/src/text/text.rs b/ratatui/src/text/text.rs similarity index 100% rename from src/text/text.rs rename to ratatui/src/text/text.rs diff --git a/src/widgets.rs b/ratatui/src/widgets.rs similarity index 100% rename from src/widgets.rs rename to ratatui/src/widgets.rs diff --git a/src/widgets/barchart.rs b/ratatui/src/widgets/barchart.rs similarity index 100% rename from src/widgets/barchart.rs rename to ratatui/src/widgets/barchart.rs diff --git a/src/widgets/barchart/bar.rs b/ratatui/src/widgets/barchart/bar.rs similarity index 100% rename from src/widgets/barchart/bar.rs rename to ratatui/src/widgets/barchart/bar.rs diff --git a/src/widgets/barchart/bar_group.rs b/ratatui/src/widgets/barchart/bar_group.rs similarity index 100% rename from src/widgets/barchart/bar_group.rs rename to ratatui/src/widgets/barchart/bar_group.rs diff --git a/src/widgets/block.rs b/ratatui/src/widgets/block.rs similarity index 100% rename from src/widgets/block.rs rename to ratatui/src/widgets/block.rs diff --git a/src/widgets/block/padding.rs b/ratatui/src/widgets/block/padding.rs similarity index 100% rename from src/widgets/block/padding.rs rename to ratatui/src/widgets/block/padding.rs diff --git a/src/widgets/block/title.rs b/ratatui/src/widgets/block/title.rs similarity index 100% rename from src/widgets/block/title.rs rename to ratatui/src/widgets/block/title.rs diff --git a/src/widgets/borders.rs b/ratatui/src/widgets/borders.rs similarity index 100% rename from src/widgets/borders.rs rename to ratatui/src/widgets/borders.rs diff --git a/src/widgets/calendar.rs b/ratatui/src/widgets/calendar.rs similarity index 100% rename from src/widgets/calendar.rs rename to ratatui/src/widgets/calendar.rs diff --git a/src/widgets/canvas.rs b/ratatui/src/widgets/canvas.rs similarity index 100% rename from src/widgets/canvas.rs rename to ratatui/src/widgets/canvas.rs diff --git a/src/widgets/canvas/circle.rs b/ratatui/src/widgets/canvas/circle.rs similarity index 100% rename from src/widgets/canvas/circle.rs rename to ratatui/src/widgets/canvas/circle.rs diff --git a/src/widgets/canvas/line.rs b/ratatui/src/widgets/canvas/line.rs similarity index 100% rename from src/widgets/canvas/line.rs rename to ratatui/src/widgets/canvas/line.rs diff --git a/src/widgets/canvas/map.rs b/ratatui/src/widgets/canvas/map.rs similarity index 100% rename from src/widgets/canvas/map.rs rename to ratatui/src/widgets/canvas/map.rs diff --git a/src/widgets/canvas/points.rs b/ratatui/src/widgets/canvas/points.rs similarity index 100% rename from src/widgets/canvas/points.rs rename to ratatui/src/widgets/canvas/points.rs diff --git a/src/widgets/canvas/rectangle.rs b/ratatui/src/widgets/canvas/rectangle.rs similarity index 100% rename from src/widgets/canvas/rectangle.rs rename to ratatui/src/widgets/canvas/rectangle.rs diff --git a/src/widgets/canvas/world.rs b/ratatui/src/widgets/canvas/world.rs similarity index 100% rename from src/widgets/canvas/world.rs rename to ratatui/src/widgets/canvas/world.rs diff --git a/src/widgets/chart.rs b/ratatui/src/widgets/chart.rs similarity index 100% rename from src/widgets/chart.rs rename to ratatui/src/widgets/chart.rs diff --git a/src/widgets/clear.rs b/ratatui/src/widgets/clear.rs similarity index 100% rename from src/widgets/clear.rs rename to ratatui/src/widgets/clear.rs diff --git a/src/widgets/gauge.rs b/ratatui/src/widgets/gauge.rs similarity index 100% rename from src/widgets/gauge.rs rename to ratatui/src/widgets/gauge.rs diff --git a/src/widgets/list.rs b/ratatui/src/widgets/list.rs similarity index 100% rename from src/widgets/list.rs rename to ratatui/src/widgets/list.rs diff --git a/src/widgets/list/item.rs b/ratatui/src/widgets/list/item.rs similarity index 100% rename from src/widgets/list/item.rs rename to ratatui/src/widgets/list/item.rs diff --git a/src/widgets/list/list.rs b/ratatui/src/widgets/list/list.rs similarity index 100% rename from src/widgets/list/list.rs rename to ratatui/src/widgets/list/list.rs diff --git a/src/widgets/list/rendering.rs b/ratatui/src/widgets/list/rendering.rs similarity index 100% rename from src/widgets/list/rendering.rs rename to ratatui/src/widgets/list/rendering.rs diff --git a/src/widgets/list/state.rs b/ratatui/src/widgets/list/state.rs similarity index 100% rename from src/widgets/list/state.rs rename to ratatui/src/widgets/list/state.rs diff --git a/src/widgets/logo.rs b/ratatui/src/widgets/logo.rs similarity index 100% rename from src/widgets/logo.rs rename to ratatui/src/widgets/logo.rs diff --git a/src/widgets/paragraph.rs b/ratatui/src/widgets/paragraph.rs similarity index 100% rename from src/widgets/paragraph.rs rename to ratatui/src/widgets/paragraph.rs diff --git a/src/widgets/reflow.rs b/ratatui/src/widgets/reflow.rs similarity index 100% rename from src/widgets/reflow.rs rename to ratatui/src/widgets/reflow.rs diff --git a/src/widgets/scrollbar.rs b/ratatui/src/widgets/scrollbar.rs similarity index 100% rename from src/widgets/scrollbar.rs rename to ratatui/src/widgets/scrollbar.rs diff --git a/src/widgets/sparkline.rs b/ratatui/src/widgets/sparkline.rs similarity index 100% rename from src/widgets/sparkline.rs rename to ratatui/src/widgets/sparkline.rs diff --git a/src/widgets/table.rs b/ratatui/src/widgets/table.rs similarity index 100% rename from src/widgets/table.rs rename to ratatui/src/widgets/table.rs diff --git a/src/widgets/table/cell.rs b/ratatui/src/widgets/table/cell.rs similarity index 100% rename from src/widgets/table/cell.rs rename to ratatui/src/widgets/table/cell.rs diff --git a/src/widgets/table/highlight_spacing.rs b/ratatui/src/widgets/table/highlight_spacing.rs similarity index 100% rename from src/widgets/table/highlight_spacing.rs rename to ratatui/src/widgets/table/highlight_spacing.rs diff --git a/src/widgets/table/row.rs b/ratatui/src/widgets/table/row.rs similarity index 100% rename from src/widgets/table/row.rs rename to ratatui/src/widgets/table/row.rs diff --git a/src/widgets/table/table.rs b/ratatui/src/widgets/table/table.rs similarity index 100% rename from src/widgets/table/table.rs rename to ratatui/src/widgets/table/table.rs diff --git a/src/widgets/table/table_state.rs b/ratatui/src/widgets/table/table_state.rs similarity index 100% rename from src/widgets/table/table_state.rs rename to ratatui/src/widgets/table/table_state.rs diff --git a/src/widgets/tabs.rs b/ratatui/src/widgets/tabs.rs similarity index 100% rename from src/widgets/tabs.rs rename to ratatui/src/widgets/tabs.rs diff --git a/tests/backend_termion.rs b/ratatui/tests/backend_termion.rs similarity index 100% rename from tests/backend_termion.rs rename to ratatui/tests/backend_termion.rs diff --git a/tests/state_serde.rs b/ratatui/tests/state_serde.rs similarity index 100% rename from tests/state_serde.rs rename to ratatui/tests/state_serde.rs diff --git a/tests/stylize.rs b/ratatui/tests/stylize.rs similarity index 100% rename from tests/stylize.rs rename to ratatui/tests/stylize.rs diff --git a/tests/terminal.rs b/ratatui/tests/terminal.rs similarity index 100% rename from tests/terminal.rs rename to ratatui/tests/terminal.rs diff --git a/tests/widgets_barchart.rs b/ratatui/tests/widgets_barchart.rs similarity index 100% rename from tests/widgets_barchart.rs rename to ratatui/tests/widgets_barchart.rs diff --git a/tests/widgets_block.rs b/ratatui/tests/widgets_block.rs similarity index 100% rename from tests/widgets_block.rs rename to ratatui/tests/widgets_block.rs diff --git a/tests/widgets_calendar.rs b/ratatui/tests/widgets_calendar.rs similarity index 100% rename from tests/widgets_calendar.rs rename to ratatui/tests/widgets_calendar.rs diff --git a/tests/widgets_canvas.rs b/ratatui/tests/widgets_canvas.rs similarity index 100% rename from tests/widgets_canvas.rs rename to ratatui/tests/widgets_canvas.rs diff --git a/tests/widgets_chart.rs b/ratatui/tests/widgets_chart.rs similarity index 100% rename from tests/widgets_chart.rs rename to ratatui/tests/widgets_chart.rs diff --git a/tests/widgets_gauge.rs b/ratatui/tests/widgets_gauge.rs similarity index 100% rename from tests/widgets_gauge.rs rename to ratatui/tests/widgets_gauge.rs diff --git a/tests/widgets_list.rs b/ratatui/tests/widgets_list.rs similarity index 100% rename from tests/widgets_list.rs rename to ratatui/tests/widgets_list.rs diff --git a/tests/widgets_paragraph.rs b/ratatui/tests/widgets_paragraph.rs similarity index 100% rename from tests/widgets_paragraph.rs rename to ratatui/tests/widgets_paragraph.rs diff --git a/tests/widgets_table.rs b/ratatui/tests/widgets_table.rs similarity index 100% rename from tests/widgets_table.rs rename to ratatui/tests/widgets_table.rs diff --git a/tests/widgets_tabs.rs b/ratatui/tests/widgets_tabs.rs similarity index 100% rename from tests/widgets_tabs.rs rename to ratatui/tests/widgets_tabs.rs