Skip to content

[MISSING] Comprehensive component set (checkbox, textarea, table, dial... #11

Description

@devwif

🚀 Implement Comprehensive Core Component Set for WebTUI


Issue Type: Enhancement / Missing Feature

Priority: High

Labels: enhancement, missing-feature, component-library, accessibility


🧩 Problem Statement

The WebTUI library currently lacks a comprehensive set of core UI components such as checkboxes, textareas, tables, dialogs, selects, tooltips, and more. This severely limits the library’s usefulness and adoption potential, as developers cannot build full-featured terminal-like interfaces without these fundamental building blocks.

Delaying the implementation risks competitors filling the gap first, and stalls WebTUI’s growth and community engagement. Our goal is to architect, develop, test, document, and integrate these essential components with a focus on accessibility, usability, and maintainability.


🔍 Technical Context

  • Repository: aldrin-labs/webtui
  • Language: Astro + TypeScript
  • Tech Stack: @biomejs/biome, Turbo, TypeScript
  • Current State: Early-stage UI library with foundational theming and basic components only.
  • Project Goal: Modular, terminal-inspired CSS UI components for building rich CLI-like web interfaces.
  • Existing Challenges:
    • Missing key UI components (checkbox, textarea, table, dialog, select, tooltip, etc.)
    • Lack of accessibility (ARIA roles, keyboard navigation)
    • Incomplete documentation and usage examples
    • Zero open-source traction due to missing features and unclear contribution guidelines

📋 Scope of Work / Implementation Steps

  1. Component Research & Design

    • Analyze popular UI libraries (e.g., Radix UI, Chakra UI, Fluent UI) for terminal-like components and accessibility best practices.
    • Define consistent design and interaction patterns fitting the terminal style.
    • Create detailed component specs (props, events, states, keyboard navigation, ARIA roles).
    • Draft component API interfaces in TypeScript for type safety and developer ergonomics.
  2. Component Architecture & Setup

    • Establish a reusable base component pattern for shared behaviors (focus management, state handling).
    • Use Astro framework capabilities for rendering and styling with modular CSS.
    • Ensure components are highly composable and themeable.
  3. Component Implementation

    • Build the following components:
      • Checkbox (with indeterminate state)
      • Textarea (auto-resize, monospace font, keyboard shortcuts)
      • Table (sortable, selectable rows, keyboard navigation)
      • Dialog (modal with focus trap, ESC to close)
      • Select (dropdown with keyboard support, multi-select)
      • Tooltip (hover and focus triggered, accessible)
    • Implement keyboard accessibility and ARIA attributes for each component.
    • Optimize for performance and minimal CSS footprint.
  4. Testing

    • Unit tests for core logic and props handling using a testing framework compatible with Astro (e.g., Vitest).
    • Integration tests covering keyboard navigation, focus management, and component interactions.
    • Visual regression testing for UI consistency.
    • Accessibility testing using tools like axe-core or pa11y.
  5. Documentation & Examples

    • Write comprehensive usage docs for each component covering props, events, accessibility notes.
    • Provide live code examples and demos in the docs site.
    • Update README to highlight new components and encourage community adoption.
  6. Code Review & Quality Assurance

    • Peer review to enforce code quality, style, and best practices.
    • Ensure all new code passes linting, formatting, and build pipelines.

⚙️ Technical Specifications

Component Key Features ARIA & Accessibility Keyboard Support Notes
Checkbox Checked, unchecked, indeterminate states role="checkbox", aria-checked Space/Enter toggles Focus ring, disabled state
Textarea Multiline input, auto-resize aria-multiline="true" Tab navigation, Ctrl+Enter submit Monospace styling
Table Sortable columns, selectable rows role="table", aria-sort Arrow keys to navigate cells Responsive layout
Dialog Modal overlay, focus trap role="dialog", aria-modal="true" ESC closes, Tab cycles focus Prevent background scroll
Select Single/multi-select dropdown role="listbox", aria-expanded Arrow keys, Enter to select Keyboard-friendly
Tooltip Hover/focus trigger role="tooltip", aria-describedby Focus triggers tooltip Delay and positioning

✅ Acceptance Criteria

  • All listed core components implemented with defined features and accessibility support.
  • Components integrate seamlessly with existing WebTUI architecture.
  • Comprehensive unit and integration tests with >90% coverage.
  • Documentation updated with usage guides, API references, and live examples for each component.
  • Accessibility audit passed with no critical issues.
  • Code passes linting, formatting, and build pipelines without errors.
  • Code reviewed and approved by at least 2 maintainers.

🧪 Testing Requirements

  • Use Vitest or equivalent for unit testing.
  • Implement keyboard interaction tests simulating user inputs.
  • Run accessibility tests using axe-core integrated into CI pipelines.
  • Perform manual exploratory testing for focus management and visual correctness.
  • Automate visual regression testing if infrastructure exists (e.g., Chromatic, Percy).

📚 Documentation Needs

  • Update the components documentation section on the WebTUI docs site: https://webtui.ironclad.sh
  • Add component usage examples with code snippets and interactive demos where possible.
  • Update README to mention the new comprehensive component set and how to contribute new components.
  • Provide accessibility notes for each component, emphasizing keyboard and screen reader support.

⚠️ Potential Challenges & Risks

  • Accessibility complexity: Ensuring full keyboard and ARIA compliance requires careful testing and iteration.
  • Performance: Avoiding heavy CSS or JS that would bloat the library, especially with complex components like tables.
  • Styling consistency: Maintaining uniform terminal-like aesthetics across components while supporting theming.
  • Integration with Astro: Astro’s framework constraints might require creative solutions for dynamic behavior and event handling.
  • Testing environment: Setting up reliable integration and accessibility tests in Astro ecosystem.

📖 Resources & References


Let's make WebTUI the ultimate terminal-inspired UI toolkit by filling this critical gap with rock-solid, accessible, and delightful components! 🚀


🛠️ Checklist

  • Research & finalize component specs
  • Architect base component abstractions
  • Implement each component with accessibility and keyboard support
  • Write unit and integration tests
  • Perform accessibility audits & fix issues
  • Update documentation and examples
  • Conduct thorough code review
  • Merge and monitor post-release feedback

Happy hacking! Let’s build the impossible terminal UI library — one component at a time. 💪✨

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions