{"id":28863975,"url":"https://github.com/davidroman0o/vtable","last_synced_at":"2026-02-18T23:02:22.367Z","repository":{"id":294074056,"uuid":"985896353","full_name":"davidroman0O/vtable","owner":"davidroman0O","description":"Virtualized Table \u0026 List components for Bubble Tea applications in Go. Efficiently handles large datasets with minimal memory usage through virtualized rendering. Seamless integration with the Bubble Tea TUI framework.","archived":false,"fork":false,"pushed_at":"2025-06-22T19:08:30.000Z","size":20027,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-19T18:40:44.446Z","etag":null,"topics":["bubbletea","charm","charmbracelet","cli","developer-tools","go","golang","pagination","scroll","scrolling","tui","ui-components"],"latest_commit_sha":null,"homepage":"","language":"Go","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/davidroman0O.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}},"created_at":"2025-05-18T18:38:48.000Z","updated_at":"2025-10-08T21:19:09.000Z","dependencies_parsed_at":"2025-06-20T20:28:02.034Z","dependency_job_id":"91a81a66-f62c-46f7-940f-7a7046823044","html_url":"https://github.com/davidroman0O/vtable","commit_stats":null,"previous_names":["davidroman0o/vtable"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davidroman0O/vtable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidroman0O%2Fvtable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidroman0O%2Fvtable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidroman0O%2Fvtable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidroman0O%2Fvtable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidroman0O","download_url":"https://codeload.github.com/davidroman0O/vtable/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidroman0O%2Fvtable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29597853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T22:25:43.180Z","status":"ssl_error","status_checked_at":"2026-02-18T22:25:42.766Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["bubbletea","charm","charmbracelet","cli","developer-tools","go","golang","pagination","scroll","scrolling","tui","ui-components"],"created_at":"2025-06-20T08:13:51.678Z","updated_at":"2026-02-18T23:02:22.362Z","avatar_url":"https://github.com/davidroman0O.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./demo.gif?raw=true\" alt=\"VTable Demo\" width=\"800\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/davidroman0O/vtable\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/davidroman0O/vtable.svg\" alt=\"Go Reference\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/davidroman0O/vtable\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/davidroman0O/vtable\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/davidroman0O/vtable/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/davidroman0O/vtable\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/go-%3E%3D1.18-blue\" alt=\"Go Version\"\u003e\n\u003c/p\u003e\n\n# VTable\n\nA high-performance, feature-rich library of virtualized `List`, `Table`, and `Tree` components for [Bubble Tea](https://github.com/charmbracelet/bubbletea). It's designed to handle millions of items efficiently through intelligent virtualization and asynchronous, chunk-based data loading, while offering extensive customization options.\n\n## ✨ Features\n\n### 🚀 Core Engine\n- **High Performance**: Built for speed, using viewport virtualization (`Chunking`) to handle massive datasets without breaking a sweat.\n- **Asynchronous by Design**: All data operations (loading, sorting, filtering) are non-blocking and handled via `tea.Cmd`s, ensuring a perfectly responsive UI.\n- **Pure Go \u0026 Bubble Tea Native**: Implemented as standard `tea.Model`s for seamless integration into any Bubble Tea application.\n- **Stateful \u0026 Predictable**: Manages its own internal state, updated immutably through messages, making it easy to reason about.\n\n### 📦 Components\n- **`List`**: A powerful and customizable vertical list for homogenous items.\n- **`Table`**: A multi-column table with headers, borders, advanced formatters, and multiple horizontal scrolling modes.\n- **`TreeList`**: A hierarchical list for displaying tree-like data structures with node expansion and collapsing.\n\n### 🎨 Rendering \u0026 Styling\n- **Component-Based Rendering**: A highly flexible rendering pipeline. Build custom item/row layouts by assembling components like `Cursor`, `Enumerator`, `Content`, `Background`, and more.\n- **Advanced Formatters**: Full control over item/cell rendering with simple (`ItemFormatter`) or animated (`ItemFormatterAnimated`) formatters.\n- **Extensive Theming**: Easily configure `lipgloss` styles for every part of your component, from cursor and selection to borders and alternating rows.\n- **Granular Border Control**: Independently control visibility of top, bottom, and header-separator borders in tables.\n- **Advanced Horizontal Scrolling**: Sophisticated per-cell or global scrolling for tables with `character`, `word`, and `smart` modes.\n- **Active Cell Indication**: Highlight the currently active cell in a table with a background color or custom formatter logic.\n\n### 📊 Data Management\n- **Asynchronous `DataSource`**: Your data source is completely decoupled from the UI. The components request data chunks as needed via commands.\n- **Multi-Column Sorting**: Sort by multiple fields with priority.\n- **Dynamic Filtering**: Apply complex filters to your data on the fly.\n- **Selection Modes**: Supports `SelectionSingle`, `SelectionMultiple`, and `SelectionNone`.\n\n## 📦 Installation\n\n```bash\ngo get github.com/davidroman0O/vtable\n```\n\n## 🚀 Quick Start\n\n`vtable` components are `tea.Model`s. You embed one in your own model and delegate `Update` calls to it. Interaction is done by sending `tea.Msg`s, which are created by `vtable`'s command functions (e.g., `vtable.CursorUpCmd()`).\n\nFor complete working examples, see the [Getting Started Guide](docs/01-getting-started/) and [Table Component Documentation](docs/05-table-component/).\n\n## 📚 Core Concepts\n\nFor complete understanding of VTable's architecture, data management, and virtualization system, see the [Core Concepts documentation](docs/02-core-concepts/).\n\n### Key Topics Covered:\n- **DataSource Interface**: Asynchronous data loading and management\n- **Viewport Virtualization**: High-performance rendering of large datasets  \n- **Command \u0026 Message API**: Bubble Tea-native interaction patterns\n\n## 🎨 Component-Based Rendering\n\nVTable includes an advanced component-based rendering system for maximum flexibility. See the [Enhanced List Example](examples/enhanced-list/) for a complete demonstration of building custom layouts with render components.\n\n## ⌨️ API Reference\n\nComplete API documentation with all commands, messages, and configuration options is available in the source code:\n\n- **Commands \u0026 Messages**: [`core/commands.go`](core/commands.go)\n- **Configuration**: [`config/config.go`](config/config.go) and [`core/types.go`](core/types.go)\n- **Components**: Individual component documentation in the component directories\n\n## 📁 Examples \u0026 Documentation\n\n### Progressive Documentation\nComplete documentation with step-by-step examples:\n\n1. [Getting Started](docs/01-getting-started/) - Your first VTable application\n2. [Core Concepts](docs/02-core-concepts/) - Architecture and data management\n3. [Table Component](docs/05-table-component/) - Multi-column tables with rich features\n\n### Table Features (Progressive Examples)\n1. [Basic Table](docs/05-table-component/01-basic-table.md) - Simple multi-column display\n2. [Data Virtualization](docs/05-table-component/02-data-virtualization.md) - Handling large datasets\n3. [Selection](docs/05-table-component/03-selection-table.md) - Single and multi-select\n4. [Cell Constraints](docs/05-table-component/04-cell-constraints.md) - Layout and alignment control\n5. [Column Formatting](docs/05-table-component/05-column-formatting.md) - Custom cell formatters and styling\n6. [Table Styling](docs/05-table-component/06-table-styling.md) - Themes, borders, and visual customization\n\n### Live Examples\nThe [`examples/`](examples/) directory contains comprehensive working examples:\n\n- **`basic-list`**: Simple list with asynchronous data loading\n- **`basic-table`**: Complete table features demonstration  \n- **`basic-tree-list`**: Hierarchical data with TreeList component\n- **`enhanced-list`**: Advanced component-based rendering system\n\n```bash\n# Run any example\ncd examples/basic-table \u0026\u0026 go run .\n```\n\n## 📄 License\n\n[MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidroman0o%2Fvtable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidroman0o%2Fvtable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidroman0o%2Fvtable/lists"}