{"id":46064245,"url":"https://github.com/forattini-dev/tuiuiu.rs","last_synced_at":"2026-03-01T12:03:35.104Z","repository":{"id":330386987,"uuid":"1122586336","full_name":"forattini-dev/tuiuiu.rs","owner":"forattini-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-25T04:45:39.000Z","size":91,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T18:32:38.188Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/forattini-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-25T04:28:27.000Z","updated_at":"2025-12-25T04:45:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/forattini-dev/tuiuiu.rs","commit_stats":null,"previous_names":["forattini-dev/tuiuiu.rs"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/forattini-dev/tuiuiu.rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forattini-dev%2Ftuiuiu.rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forattini-dev%2Ftuiuiu.rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forattini-dev%2Ftuiuiu.rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forattini-dev%2Ftuiuiu.rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forattini-dev","download_url":"https://codeload.github.com/forattini-dev/tuiuiu.rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forattini-dev%2Ftuiuiu.rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29969243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T11:43:06.159Z","status":"ssl_error","status_checked_at":"2026-03-01T11:43:03.887Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-01T12:03:34.374Z","updated_at":"2026-03-01T12:03:35.091Z","avatar_url":"https://github.com/forattini-dev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🐦 Tuiuiu.rs\n\n### Terminal UI Framework — Rust Edition\n\nBuild beautiful, reactive terminal apps with blazing-fast performance.\n\u003cbr\u003e\n**Zero dependencies** • **Signal-based** • **Flexbox layout** • **Native speed** • **Memory safe**\n\u003cbr\u003e\n50+ components. Pure Rust. No unsafe chaos. Maximum performance.\n\n[![Crates.io](https://img.shields.io/crates/v/tuiuiu.svg?style=flat-square\u0026color=F5A623)](https://crates.io/crates/tuiuiu)\n[![Downloads](https://img.shields.io/crates/d/tuiuiu.svg?style=flat-square\u0026color=34C759)](https://crates.io/crates/tuiuiu)\n[![Rust](https://img.shields.io/badge/Rust-1.85+-DEA584?style=flat-square\u0026logo=rust\u0026logoColor=white)](https://www.rust-lang.org/)\n[![License](https://img.shields.io/crates/l/tuiuiu.svg?style=flat-square\u0026color=007AFF)](LICENSE)\n[![Zero Deps](https://img.shields.io/badge/dependencies-0*-success?style=flat-square)](https://crates.io/crates/tuiuiu)\n\n[📖 Documentation](https://github.com/forattini-dev/tuiuiu.js) · [🚀 Quick Start](#quick-start) · [🦀 Rust API](#rust-api) · [⚡ Performance](#performance)\n\n\u003csub\u003e* Only `libc` for raw terminal mode\u003c/sub\u003e\n\n\u003c/div\u003e\n\n---\n\n\u003e **📚 Full Documentation**: This is the Rust port of [tuiuiu.js](https://github.com/forattini-dev/tuiuiu.js). For detailed concepts, architecture, component API, and design philosophy, see the **[JavaScript documentation](https://github.com/forattini-dev/tuiuiu.js#readme)** — the APIs are intentionally similar.\n\n---\n\n## Quick Start\n\n```toml\n# Cargo.toml\n[dependencies]\ntuiuiu = \"0.1\"\n```\n\n```rust\nuse tuiuiu::prelude::*;\n\nfn main() {\n    let app = render(counter);\n    app.wait_until_exit();\n}\n\nfn counter() -\u003e impl Component {\n    let (count, set_count) = create_signal(0);\n\n    use_input(move |key| match key {\n        Key::Up =\u003e set_count.update(|c| *c += 1),\n        Key::Down =\u003e set_count.update(|c| *c -= 1),\n        Key::Escape =\u003e app::exit(),\n        _ =\u003e {}\n    });\n\n    Box::new()\n        .border(BorderStyle::Round)\n        .padding(1)\n        .children([\n            Text::new(\"🐦 Tuiuiu Counter\").color(Color::Cyan).bold(true),\n            Text::new(move || format!(\"Count: {}\", count.get())),\n            Text::new(\"↑/↓: change • Esc: exit\").color(Color::Gray).dim(true),\n        ])\n}\n```\n\n```bash\ncargo run\n```\n\n## What's Inside\n\n| Category | Components |\n|:---------|:-----------|\n| **Core** | Signals, Flexbox layout, Focus management, Event system |\n| **Primitives** | `Box`, `Text`, `Spacer`, `Newline`, `Fragment`, `Divider`, `Canvas` |\n| **Atoms** | `Button`, `TextInput`, `Switch`, `Slider`, `Spinner`, `ProgressBar` |\n| **Molecules** | `Select`, `MultiSelect`, `RadioGroup`, `Autocomplete`, `Table`, `Tabs`, `Tree`, `Calendar`, `CodeBlock`, `Markdown` |\n| **Organisms** | `Modal`, `CommandPalette`, `DataTable`, `FileManager`, `SplitPanel` |\n| **Templates** | `AppShell`, `Page`, `Header`, `StatusBar`, `VStack`, `HStack` |\n| **Data Viz** | `BarChart`, `LineChart`, `Sparkline`, `Heatmap`, `Gauge` |\n\n## Rust API\n\n### ⚡ Signals\n\nFine-grained reactivity — only what changes gets updated.\n\n```rust\nuse tuiuiu::prelude::*;\n\nlet (count, set_count) = create_signal(0);\nlet doubled = create_memo(move || count.get() * 2);\n\ncreate_effect(move || {\n    println!(\"Count: {}, Doubled: {}\", count.get(), doubled.get());\n});\n\nset_count.set(5);  // → \"Count: 5, Doubled: 10\"\n\n// Batch multiple updates\nbatch(|| {\n    set_count.set(1);\n    set_count.set(2);\n    set_count.set(3);\n}); // Only one render!\n```\n\n### 📦 Flexbox Layout\n\nCSS Flexbox model for terminals.\n\n```rust\nBox::new()\n    .flex_direction(FlexDirection::Row)\n    .justify_content(JustifyContent::SpaceBetween)\n    .align_items(AlignItems::Center)\n    .gap(2)\n    .padding(1)\n    .border(BorderStyle::Round)\n    .children([\n        Text::new(\"Left\").color(Color::Blue),\n        Text::new(\"Center\"),\n        Text::new(\"Right\").color(Color::Red),\n    ])\n```\n\n### 🎨 Components\n\n```rust\nuse tuiuiu::molecules::*;\n\n// Select dropdown\nSelect::new()\n    .items([\"Option A\", \"Option B\", \"Option C\"])\n    .selected(0)\n    .build()\n\n// Table with columns\nTable::new()\n    .columns([\n        Column::new(\"Name\").width(20),\n        Column::new(\"Age\").width(10).align(Align::Right),\n    ])\n    .rows([\n        vec![\"Alice\".into(), \"30\".into()],\n        vec![\"Bob\".into(), \"25\".into()],\n    ])\n    .build()\n\n// Tree view\nTree::new()\n    .nodes([\n        TreeNode::folder(\"src\").expanded(true).children([\n            TreeNode::file(\"main.rs\"),\n            TreeNode::file(\"lib.rs\"),\n        ]),\n    ])\n    .build()\n\n// Calendar\nCalendar::new()\n    .date(2025, 1)\n    .selected(24)\n    .today(2025, 1, 24)\n    .build()\n\n// Charts\nSparkline::new().data([1.0, 4.0, 2.0, 8.0, 5.0]).build()\nGauge::new().value(75.0).max(100.0).label(\"CPU\").build()\n```\n\n### ⌨️ Input Handling\n\n```rust\n// Keyboard\nuse_input(|key| match key {\n    Key::Char('q') =\u003e app::exit(),\n    Key::Up =\u003e { /* ... */ },\n    Key::Enter =\u003e { /* ... */ },\n    _ =\u003e {}\n});\n\n// With modifiers\nuse_hotkeys(|key, mods| {\n    if mods.ctrl \u0026\u0026 key == Key::Char('c') {\n        app::exit();\n    }\n});\n\n// Mouse\nuse_mouse(|event| match event.kind {\n    MouseEventKind::Click(MouseButton::Left) =\u003e {\n        println!(\"Click at ({}, {})\", event.x, event.y);\n    },\n    _ =\u003e {}\n});\n```\n\n## Feature Flags\n\nPick what you need — unused code is not compiled.\n\n```toml\n# Full (default)\ntuiuiu = \"0.1\"\n\n# Minimal core only\ntuiuiu = { version = \"0.1\", default-features = false, features = [\"core\"] }\n\n# Just what you need\ntuiuiu = { version = \"0.1\", default-features = false, features = [\"molecules\"] }\n```\n\n| Feature | Contents | Includes |\n|:--------|:---------|:---------|\n| `full` | Everything | atoms, molecules, organisms, templates, themes |\n| `core` | Signals, layout, renderer | — |\n| `primitives` | Box, Text, Spacer, etc. | core |\n| `atoms` | Button, Input, Spinner, etc. | primitives |\n| `molecules` | Select, Table, Tabs, etc. | atoms |\n| `organisms` | Modal, DataTable, etc. | molecules |\n| `templates` | AppShell, Page, etc. | organisms |\n| `themes` | Dark, Light, Monokai, etc. | — |\n\n## Performance\n\nWhy Rust?\n\n| Metric | tuiuiu.rs | tuiuiu.js |\n|:-------|----------:|----------:|\n| Startup time | ~1ms | ~50ms |\n| Memory usage | ~2MB | ~30MB |\n| Binary size | ~500KB | N/A |\n| Dependencies | 0* | 0 |\n| Type safety | Compile-time | Runtime |\n\n\u003csub\u003e* Only `libc` for raw terminal mode\u003c/sub\u003e\n\n## Examples\n\n```bash\n# Clone the repo\ngit clone https://github.com/forattini-dev/tuiuiu.rs\ncd tuiuiu.rs\n\n# Run examples\ncargo run --example counter      # Simple counter\ncargo run --example dashboard    # Full dashboard\ncargo run --example 03_molecules # Component showcase\n```\n\n## Comparison\n\n| Feature | tuiuiu.rs | tuiuiu.js | Ratatui |\n|:--------|:---------:|:---------:|:-------:|\n| Signal reactivity | ✅ | ✅ | ❌ |\n| Flexbox layout | ✅ | ✅ | ❌ |\n| 50+ components | ✅ | ✅ | ❌ |\n| Zero deps | ✅* | ✅ | ❌ |\n| Mouse support | ✅ | ✅ | ✅ |\n| Native binary | ✅ | ❌ | ✅ |\n| Memory safe | ✅ | ✅ | ✅ |\n\n## Documentation\n\n\u003e 📖 **For full documentation, concepts, and detailed API reference, see [tuiuiu.js](https://github.com/forattini-dev/tuiuiu.js#readme)** — the authoritative source.\n\n| Topic | Description |\n|:------|:------------|\n| [Quick Start](https://github.com/forattini-dev/tuiuiu.js#quick-start) | Get up and running |\n| [Signals](https://github.com/forattini-dev/tuiuiu.js#-signal-based-reactivity) | Reactive state management |\n| [Layout](https://github.com/forattini-dev/tuiuiu.js#-flexbox-layout) | Flexbox for terminals |\n| [Components](https://github.com/forattini-dev/tuiuiu.js#-50-ready-to-use-components) | All 50+ components |\n| [Mouse](https://github.com/forattini-dev/tuiuiu.js#%EF%B8%8F-full-mouse-support) | Click, hover, scroll |\n| [Charts](https://github.com/forattini-dev/tuiuiu.js#-data-visualization) | Data visualization |\n\n## Numbers\n\n| Metric | Value |\n|:-------|------:|\n| Components | 50+ |\n| Dependencies | 0* |\n| Hooks | 10 |\n| Border styles | 9 |\n| Named colors | 18 |\n| Feature flags | 8 |\n| Binary size | ~500KB |\n\n## Why \"Tuiuiu\"?\n\nThe [Tuiuiu](https://en.wikipedia.org/wiki/Jabiru) (Jabiru mycteria) is a majestic Brazilian bird — the tallest flying bird in South America. Just like this bird stands out in its environment, Tuiuiu stands out in the terminal UI landscape: elegant, powerful, and distinctly Brazilian.\n\n🇧🇷 Made with ❤️ in Brazil\n\n## License\n\nMIT © [Tetis](https://tetis.io)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**[tuiuiu.js](https://github.com/forattini-dev/tuiuiu.js)** — JavaScript/TypeScript version\n•\n**tuiuiu.rs** — Rust version (you are here)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforattini-dev%2Ftuiuiu.rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforattini-dev%2Ftuiuiu.rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforattini-dev%2Ftuiuiu.rs/lists"}