Skip to main content

Python-first UI component library for Datastar/StarHTML applications

Project description

StarUI

Python-first UI component library for StarHTML applications

Modern, type-safe components with shadcn/ui styling and zero-configuration setup.

PyPI version Python 3.12+ Code style: ruff Type checked: pyright

✨ Features

  • 🎨 shadcn/ui components - Pixel-perfect implementations with modern design
  • Zero configuration - Works out of the box with sensible defaults
  • 🚯 StarHTML native - Built specifically for StarHTML applications
  • 📱 Responsive design - Mobile-first with Tailwind CSS v4
  • 🔒 Type-safe APIs - Excellent developer experience with pragmatic typing
  • 🚀 Modern Python - Python 3.12+ with latest language features

🚀 Quick Start

Installation

# With pip
pip install starui

# With uv (recommended)
uv add starui

Create Your First Project

# Initialize a new StarUI project
star init my-app
cd my-app

# Add some components  
star add button
star add card

# Run development server
star dev app.py

Basic Usage

from starhtml import *
from starui import *  # Gets all components automatically

# Create a StarHTML app
app, rt = star_app()

@rt("/")
def home():
    return Card(
        CardHeader(
            CardTitle("Welcome to StarUI")
        ),
        CardContent(
            Button("Get Started", variant="default"),
            Button("Learn More", variant="outline")
        )
    )

if __name__ == "__main__":
    serve()

📦 Available Components

Component Description Variants
Button Interactive buttons default, destructive, outline, secondary, ghost, link
Alert Important messages default, destructive
Badge Status indicators default, secondary, destructive, outline
Card Content containers Header, Content, Footer sections
Input Form inputs All HTML input types with validation
Label Form labels Accessible form labeling

🛠 CLI Commands

# Project initialization
star init <project-name>          # Create new StarUI project

# Component management  
star add <component>              # Add component to project
star list                         # List available components

# Development
star dev <app.py>                 # Development server with hot reload
star build                        # Build production CSS

🎯 Component API

Button Example

from starui import Button  # Or: from starui import *

# Basic usage
Button("Click me")

# With variants and props
Button(
    "Submit Form",
    variant="default",
    size="lg", 
    disabled=False,
    type="submit",
    onclick="handleSubmit()"
)

Card Example

from starui import *  # Gets Card, CardHeader, CardTitle, CardContent, Button, etc.

Card(
    CardHeader(
        CardTitle("Product Card")
    ),
    CardContent(
        P("This is the card content with detailed information."),
        Button("Learn More", variant="outline")
    ),
    class_name="max-w-md"
)

⚙️ Configuration

StarUI works with zero configuration, but you can customize it:

# starui.config.py (optional)
from starui.config import ProjectConfig
from pathlib import Path

config = ProjectConfig(
    project_root=Path.cwd(),
    css_output=Path("static/css/starui.css"),
    component_dir=Path("components/ui")
)

🔗 StarHTML Integration

StarUI is built specifically for StarHTML:

from starhtml import *
from starui import Button, Alert

app, rt = star_app(
    hdrs=(
        Link(rel="stylesheet", href="/static/css/starui.css"),
    )
)

@rt("/")
def home():
    return Div(
        Alert(
            "Welcome to your new StarUI app!",
            variant="default"
        ),
        Button("Get Started", variant="default"),
        cls="p-8 max-w-md mx-auto"
    )

💻 Development

Setup

# Clone the repository
git clone https://github.com/banditburai/starui.git
cd starui

# Install with uv (recommended)
uv sync --all-extras

# Or with pip  
pip install -e ".[dev]"

Quality Checks

# Run all quality checks
uv run ruff check                 # Linting
uv run ruff format --check        # Formatting  
uv run pyright                    # Type checking
uv run pytest tests/ -v           # Testing

Building

uv build                          # Build package
uv run star --version             # Test CLI

🤝 Contributing

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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-component)
  3. Make your changes with tests
  4. Run quality checks (uv run ruff check && uv run pyright && uv run pytest)
  5. Submit a Pull Request

🙏 Acknowledgments

  • shadcn/ui - Design system and component inspiration
  • StarHTML - The amazing Python web framework
  • Tailwind CSS - Utility-first CSS framework
  • FastHTML - Inspiration for Python-first web development

Made with ❤️ for the Python web development community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starui-0.1.2.tar.gz (24.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

starui-0.1.2-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file starui-0.1.2.tar.gz.

File metadata

  • Download URL: starui-0.1.2.tar.gz
  • Upload date:
  • Size: 24.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for starui-0.1.2.tar.gz
Algorithm Hash digest
SHA256 dd9268a00b51dca772929aa923a917020b2288fabd09539d87c7f470a32e679b
MD5 c77e7cc7b5215276e910c322031b28f7
BLAKE2b-256 acea4575a3cb5dfc55e4dce2e0aff0c3f19290917931ee8fbd93b6a776b4ee59

See more details on using hashes here.

Provenance

The following attestation bundles were made for starui-0.1.2.tar.gz:

Publisher: release.yml on banditburai/starUI

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file starui-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: starui-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for starui-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 37f7d5e68023a51a049049331008ff6f367e5a2529c5688366b81161b97d7e90
MD5 da857260e4ae5685c138d9d7708bd035
BLAKE2b-256 f015368da506bb3af68c3c14ab165aa83814a1faa09d3527edd5f04866306346

See more details on using hashes here.

Provenance

The following attestation bundles were made for starui-0.1.2-py3-none-any.whl:

Publisher: release.yml on banditburai/starUI

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page