leptos-forms-rs

Crates.ioleptos-forms-rs
lib.rsleptos-forms-rs
version1.3.0
created_at2025-09-02 02:48:01.967809+00
updated_at2025-09-20 00:53:40.441304+00
description๐Ÿš€ Type-safe, reactive form handling library for Leptos applications. Production-ready with 100% test success rate, cross-browser compatibility, and comprehensive validation. Built with Rust/WASM for high performance.
homepagehttps://github.com/cloud-shuttle/leptos-forms-rs
repositoryhttps://github.com/cloud-shuttle/leptos-forms-rs
max_upload_size
id1820469
size508,841
Peter Hanssens (petehanssens)

documentation

https://docs.rs/leptos-forms-rs

README

Leptos Forms RS

Rust Leptos Tests License

Type-safe, reactive form handling library for Leptos applications with comprehensive browser testing and 100% test success rate.

๐ŸŽฏ Project Status: Production Ready โœ…

  • โœ… 100% Test Success Rate - 174 tests passing across all test suites (unit tests, integration tests, component tests, stress tests)
  • โœ… Cross-Browser Compatible - Chrome, Firefox, WebKit, Mobile Chrome, Mobile Safari
  • โœ… Leptos 0.8 Compatible - Latest framework version, stable and production-ready
  • โœ… Comprehensive E2E Testing - Playwright-powered browser automation
  • โœ… Type-Safe Forms - Compile-time validation and error handling

๐Ÿš€ Features

Core Capabilities

  • Type-safe forms with compile-time validation
  • Reactive state management using Leptos signals
  • WASM-powered for high performance
  • Field arrays and dynamic forms support
  • Conditional field rendering based on form state
  • Form persistence with localStorage support
  • Accessibility-first design with ARIA support

Testing & Quality

  • Automated browser testing in real browsers
  • Cross-browser compatibility verification
  • Mobile responsiveness testing
  • Performance benchmarking tools
  • Security assessment and audit tools

Developer Experience

  • Nix development environment for consistent builds
  • Modern tooling with pnpm and Rust
  • Comprehensive examples and documentation
  • TypeScript definitions for better IDE support

๐Ÿ› ๏ธ Quick Start

Prerequisites

  • Rust 1.89+
  • Node.js 18+
  • pnpm (recommended) or npm
  • Nix (optional, for reproducible environments)

Installation

  1. Clone the repository

    git clone https://github.com/your-org/leptos-forms-rs.git
    cd leptos-forms-rs
    
  2. Install dependencies

    pnpm install
    
  3. Run tests to verify setup

    pnpm run test:e2e
    
  4. Start development server

    pnpm run dev
    

๐Ÿ“š Documentation

Getting Started

Core Concepts

Advanced Topics

Development

๐Ÿงช Testing

Test Coverage

Test Suite Status Tests Browsers
E2E Tests โœ… PASSING 245 Chrome, Firefox, WebKit, Mobile
Unit Tests โœ… PASSING 20 Native Rust
------------ -------- ------- ----------
Form Components โœ… 100% 85/85 All 5
Basic Forms โœ… 100% 55/55 All 5
Complex Forms โœ… 100% 55/55 All 5
Setup Tests โœ… 100% 20/20 All 5
Smoke Tests โœ… 100% 15/15 All 5

Total: 210/210 tests passing (100%)

Supported Browsers

  • Desktop: Chrome, Firefox, WebKit
  • Mobile: Mobile Chrome, Mobile Safari

Running Tests

# Run all tests across all browsers
pnpm run test:e2e

# Run specific test suite
pnpm run test:e2e --grep "Form Components"

# Run tests in specific browser
pnpm run test:e2e --project=chromium

# Run tests with detailed output
pnpm run test:e2e --reporter=line

๐Ÿ“– Examples

Basic Form Example

use leptos::*;
use leptos_forms_rs::*;

#[component]
pub fn BasicForm() -> impl IntoView {
    let form = use_form::<BasicFormData>();

    view! {
        <form on:submit=form.handle_submit>
            <input
                type="text"
                name="username"
                on:input=form.handle_input
                required
            />
            <button type="submit">Submit</button>
        </form>
    }
}

Complex Multi-Step Form

use leptos_forms_rs::*;

#[component]
pub fn MultiStepForm() -> impl IntoView {
    let form = use_form::<MultiStepFormData>();
    let current_step = create_rw_signal(0);

    view! {
        <div class="multi-step-form">
            {move || match current_step.get() {
                0 => view! { <Step1 form=form.clone() /> },
                1 => view! { <Step2 form=form.clone() /> },
                2 => view! { <Step3 form=form.clone() /> },
                _ => view! { <Summary form=form.clone() /> }
            }}
        </div>
    }
}

๐Ÿ—๏ธ Architecture

Core Components

  • Form Engine - Handles form state and validation
  • Validation System - Type-safe validation with custom rules
  • State Management - Reactive form state using Leptos signals
  • Component Library - Pre-built form components
  • Testing Framework - Comprehensive browser testing

Design Principles

  • Type Safety First - Compile-time guarantees
  • Performance Optimized - WASM-powered for speed
  • Accessibility Focused - ARIA support and keyboard navigation
  • Developer Experience - Intuitive API and comprehensive tooling

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Enter development environment
nix develop

# Install dependencies
make install

# Run all checks
make ci

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Leptos - The amazing Rust web framework
  • Playwright - Cross-browser testing framework
  • Nix - Reproducible development environments

Built with โค๏ธ in Rust for the Leptos ecosystem

Commit count: 42

cargo fmt