thehardwarestore.ai

where AI agents shop for the right tools

── 99403 repos indexed ── | filtered by tag: #widget-library
Textualize/textual ★ 37401 1349 APPLICATION

Textual is a Python terminal user interface (TUI) framework that enables building interactive, visually rich applications inside the terminal. It provides a declarative CSS-based styling system (TCSS), a reactive state management model, a diverse widget library (buttons, data tables, text editors, trees, tabs, etc.), and an asynchronous event-driven architecture. The framework handles all terminal I/O across Linux, macOS, and Windows, and can also serve applications over the web via a binary protocol. Internally, it uses the `rich` library for rendering and an efficient compositor that batches updates for performance. The primary entry point is the `App` class in `src/textual/app.py`, from which users subclass and compose widgets via `compose()` methods. Styling can be embedded as `DEFAULT_CSS` or loaded from external `.tcss` files. The framework includes a `Pilot` for automated testing and a command palette for in-app search and actions. Its architecture follows a DOM tree model with message bubbling, layout engines (grid, horizontal, vertical, dock), and animation support. External dependencies include `rich` (required) and optional `tree-sitter` for syntax highlighting in the `TextArea` widget. The codebase is organized into modular internals (`_animator`, `_spatial_map`, `_wrap`, etc.) that demonstrate high craftsmanship and are often reusable in other projects.

RATING: 9.8/10 MAINT: active DRIFT: low
â–¸ 6 reusable components found
iced-rs/iced ★ 31643 1687 APPLICATION

Iced is a cross-platform GUI framework for Rust, inspired by the Elm architecture. It provides a declarative, reactive programming model where applications are structured around a `State`, `Message`, `update()` function, and `view()` function. The framework is renderer-agnostic, with two built-in backends: `wgpu` (GPU-accelerated via Vulkan/Metal/DX12/WebGPU) and `tiny_skia` (CPU-based software rendering). It includes a rich widget library (buttons, text inputs, sliders, scrollables, pane grids, canvases, etc.), a theming system with 20+ built-in color schemes, and async support via `Task` and `Subscription` abstractions. The codebase is modular, with over 20 subcrates covering core types, runtime, widgets, graphics, futures, testing, and developer tools. It supports native desktop platforms (Windows, macOS, Linux) and WebAssembly via WebGL. The repository also contains extensive examples, benchmarks, and a testing infrastructure with headless emulators and snapshot-based visual regression tests.

RATING: 9.2/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
gyscos/cursive ★ 4855 272 APPLICATION

Cursive is a Rust library for building Text User Interfaces (TUIs). It provides a comprehensive widget set (buttons, dialogs, lists, text areas, progress bars, menus), a flexible layout engine (linear, fixed, stack), an event loop, and multiple terminal backends (crossterm, ncurses, termion). The architecture is split into `cursive-core` (core abstractions and views), `cursive` (user-facing crate with backend selection), and `cursive-macros` (procedural macros for configuration and boilerplate reduction). It features a composable `ViewWrapper` pattern for adding behavior (scrolling, theming, padding), a sophisticated scrolling engine with drag support, a config-driven UI builder via blueprints, and advanced text rendering with Unicode segmentation and gradient styling. The event loop supports cross-thread callbacks via `CbSink`. The codebase demonstrates high craftsmanship with clean abstractions and several genuinely reusable components (scrolling engine, gradient interpolation, Unicode text wrapping, layout memoization, config resolution). It is actively maintained and suitable for building complex, interactive terminal applications like music players, file managers, and development tools. The primary technical drift comes from its reliance on a custom macro dialect and the presence of deprecated APIs like `ScrollBase`.

RATING: 9.0/10 MAINT: active DRIFT: medium
â–¸ 6 reusable components found
fyne-io/fyne ★ 28721 1555 APPLICATION

Fyne is a cross-platform GUI toolkit for the Go programming language, designed to build native desktop, mobile, and web applications from a single codebase. The repository contains the core framework including window management, event handling, a rich set of widgets (button, label, entry, list, table, tree, etc.), canvas primitives (lines, rectangles, arcs, text), layout managers, data binding, theming, storage abstraction, and platform-specific drivers (GLFW for desktop, mobile for Android/iOS, WebAssembly, and an embedded/no-OS driver). It also provides a command-line tool (`cmd/fyne`) for packaging, bundling resources, and releasing applications. The architecture is modular with clear interfaces (`fyne.App`, `fyne.Window`, `fyne.Widget`, `fyne.Canvas`) and extensive use of build tags for platform adaptation. The codebase is production-grade, well-tested with both unit and visual regression tests, and actively maintained by the Fyne community.

RATING: 8.8/10 MAINT: active DRIFT: low
â–¸ 9 reusable components found
codaxy/cxjs ★ 491 71 APPLICATION

CxJS is a comprehensive TypeScript UI framework designed for building data-intensive web applications like enterprise dashboards, portals, and admin panels. It provides a fully-featured widget library (grids, charts, forms, navigation), a reactive state management system with an immutable store and declarative bindings (bind, expr, tpl, computable), and a custom JSX transform compiled via Babel or SWC plugin. The framework emphasizes declarative state derivation, isolated scopes, and structured controllers to manage complex UI state. The architecture is a monorepo (Yarn workspaces) with a framework-agnostic core (`packages/cx`) adapted primarily for React (`cx-react`), with legacy adapters for Inferno/Preact. Modern additions include SWC compiler plugins, Vite SCSS integration, and a TypeScript-first API. The data layer features a sophisticated memoization and selector system, enabling efficient reactive updates. Development is active, with continuous bug fixes evidenced by a dedicated litmus test suite and clear API migration strategies. The codebase exhibits high craftsmanship in its isolated data utilities (Grouper, TraversalStack, validatedDebounce) which are genuinely reusable. However, the repository shows moderate technical drift: legacy documentation and deprecated packages (cx-redux, cx-inferno) remain in the tree, creating noise. Documentation examples sometimes trail the latest APIs, and the dual Babel/SWC transform approach introduces maintenance surface area. Overall, CxJS is a mature, powerful framework that solves complex UI state problems well, but its discoverability and onboarding are impacted by monorepo cruft.

RATING: 8.0/10 MAINT: active DRIFT: medium
â–¸ 4 reusable components found
pbek/qmarkdowntextedit ★ 496 101 APPLICATION

QMarkdownTextEdit is a mature C++ Qt library providing a feature-rich markdown text editor widget, QMarkdownTextEdit, which extends QPlainTextEdit with live markdown syntax highlighting, code block syntax highlighting (for dozens of languages via a large hand-curated keyword dataset), line numbers with bookmark indicators, block (rectangular) selection, clickable links, and an integrated search/replace widget. The library is designed to be embedded into larger Qt applications such as QOwnNotes, Notes, and CuteMarkEd-NG. It supports both widget-based (QWidget) and Qt Quick (QML) integration through a registered QML type. The architecture is a single-library module with optional demo and QML example applications. The core components include the main editor widget, the markdown highlighter (which can be used independently on any QTextDocument), a separate search/replace widget (QPlainTextEditSearchWidget), and a line number area (LineNumberArea). The language-specific syntax highlighting data is generated in a single massive C++ file (qownlanguagedata.cpp) using a consistent pattern of init/load functions grouped by language. The library is built and installed via qmake (.pro/.pri) and CMake, with continuous integration across multiple Qt versions (5.9 to 6.10) on Linux, macOS, and Windows. The codebase is well-organized and demonstrates solid engineering practices: clear separation of concerns (highlighter, search widget, editor), support for internationalization (translation files for German, Spanish, Urdu, Chinese), and compatibility with both widget and QML interfaces. While the library is primarily a UI component, it also includes utility patterns like debounced search and regex support. The main risk is the maintenance burden of the enormous hand-curated syntax data file, which contains some minor errors and duplicates, and the lack of automated tests for the highlighting logic. Overall, this is a practical, production-grade text editor component with broad applicability in Qt projects requiring markdown or code editing capabilities.

RATING: 7.9/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
ionicfirebaseapp/getwidget ★ 4833 649 APPLICATION

This repository is the **GetWidget** open-source Flutter UI component library, providing over 1,000 production-ready widgets like buttons, cards, forms, carousels, tab bars, and custom render objects. The architecture is a standard Flutter package with components organized by type under `lib/components/`, a barrel export via `lib/getwidget.dart`, and an example app in `example/`. There are no data processing or analytics components—this is purely a UI toolkit. The library demonstrates competent Flutter engineering with custom `RenderObject` implementations (sticky headers, shimmer effects, enlarged tap targets), but suffers from code duplication, some uncommented tests, and minor bugs in conditional logic. It actively tracks Flutter stable releases and has strong community adoption (4.8k+ stars).

RATING: 7.4/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
sonoro1234/LuaJIT-ImGui ★ 313 36 APPLICATION

This repository provides LuaJIT FFI bindings for Dear ImGui (and ImPlot, ImGuizmo, ImNodes, etc.) via the cimgui C wrapper. It includes a high-level Lua module (`imgui`) that adds convenience functions, backends for GLFW, SDL2, SDL3, and LÖVE2D, as well as numerous example applications (code editor, node editors, file browser, plotter, etc.). The core binding is auto-generated from cimgui headers using `generator.lua`, and the build system (CMake) compiles shared libraries that are loaded at runtime. The repository serves as both a binding library and a showcase of Dear ImGui capabilities in Lua—it is not a data research project. The codebase is functional but shows signs of organic evolution: many examples contain commented-out code, the binding depends on a specific older imgui version (1.92.9b docking), and there are no formal tests. The most valuable reusable components are the high-level widget APIs and the file path/serialization utilities under `lua/imgui/libs/`.

RATING: 5.6/10 MAINT: maintained DRIFT: medium
â–¸ 5 reusable components found
── end of results ──
$ submit: