Skip to main content

Bibliothèque de composants UI modernes avec support HTMX optionnel

Project description

🚀 NexUI

NexUI is a UI component library for Django, optimized for HTMX and based on Tailwind CSS. It allows you to easily add interactive elements to your Django applications while benefiting from seamless integration with HTMX for AJAX request handling.


📌 Installation

Basic Installation

pip install nexui

Installation with HTMX support

If you plan to use HTMX with your components:

pip install nexui[htmx]

Or install HTMX separately later:

pip install django-htmx

Add nexui to the list of installed apps in settings.py:

INSTALLED_APPS = [
    ...
    'nexui',
]

🎨 Features

✅ Reusable UI components for Django
🔥 Smooth integration with HTMX
🎨 Based on Tailwind CSS for a modern design
📦 Easy to install and use


🚀 Usage

Load NexUI tags in your Django templates

{% load nexui_tags %}

📖 Documentation

Check the full documentation here: Official Documentation

🔘 Button Component

The button component allows you to create customizable buttons with icons and HTMX interactions.

Available Options:

  • label: Button text
  • type: Button type (button, submit, reset)
  • button_class: Custom CSS classes
  • icon: Icon (supports Emoji, Font Awesome, and Unicode)
  • icon_type: Icon type (emoji, fa, unicode)
  • icon_position: Icon position (left, right)
  • icon_size: Icon size
  • icon_color: Icon color
  • disabled: Disables the button (true)
  • url_name: Django URL name
  • url_params: Dynamic parameters for the Django URL
  • attrs: Additional HTML and HTMX attributes (_hx-*, id, style, data-*, etc.)

Button Usage Examples:

1️⃣ Simple Button

{% button label="Send" %}

2️⃣ Customized Simple Button

{% button label="Send" type="submit" button_class="bg-yellow-500 text-black" %}

3️⃣ Button with HTMX

{% button label="Send with HTMX" type="submit" button_class="bg-green-500" attrs="hx-post='/submit' hx-target='#result' hx-swap='innerHTML'" %}

4️⃣ Button with Dynamic URL

{% button label="Dynamic URL Params" type="submit" button_class="bg-blue-500 text-white" url_name="update-user" url_params="2, tomato" attrs="hx-confirm='Are you sure?' hx-target='#result' hx-swap='innerHTML'" %}

5️⃣ Button with Emojis

{% button label="Download" button_class="bg-green-500" icon="⬇️" icon_position="left" icon_size="lg" %}

📝 Input Component

The input component allows you to create customizable input fields with labels, icons, and HTMX integration.

Available Options:

  • type: Input type (text, password, email, etc.)
  • name: Field name
  • id: Field ID (default is the same as name)
  • value: Default value
  • placeholder: Placeholder text
  • container_class: CSS classes for the main container
  • wrapper_class: CSS classes for the input wrapper
  • label_class: CSS classes for the label
  • input_class: CSS classes for the input
  • label: Label text
  • required: Required field (true/false)
  • disabled: Disables the field (true/false)
  • readonly: Read-only field (true/false)
  • icon: Icon (supports Emoji, Font Awesome, and Unicode)
  • icon_type: Icon type (fa, emoji)
  • icon_position: Icon position (left, right)
  • icon_size: Icon size
  • icon_color: Icon color
  • url_name: Django URL name for HTMX
  • method: HTTP method for HTMX (post by default)
  • attrs: Additional HTML and HTMX attributes

Input Usage Examples:

1️⃣ Simple Input with Label and Icon

Simple Input
{% input_field %}
Simple Input with Label
{% input_field name="email" label="Email" %}
Simple Input with Label, Icon, and Customization
{% input_field name="email" label="Email" icon="fas fa-envelope" icon_type="fa" icon_position="left" placeholder="Email" %}

2️⃣ Password Input with Emoji

{% input_field type="password" icon="🔒" %}

3️⃣ Input with HTMX and Confirmation

{% input_field name="email" label="Email" icon="fas fa-envelope" icon_type="fa" url_name="submit-form" attrs='hx-confirm="Are you okay?"' %}

4️⃣ Input with Real-Time Search

{% input_field name="search" label="Search" icon="fas fa-search" icon_type="fa" icon_position="left" url_name="search_suggestions" attrs='hx-trigger="keyup changed delay:500ms" hx-target="#suggestions"' %}

5️⃣ Custom Styled Input

{% input_field container_class="py-2 flex items-center" name="email" label="Email" label_class="ml-2 text-gray-700 font-bold" input_class="w-44 pl-10 pr-3 py-2 rounded-md border border-gray-300" icon="fas fa-envelope" icon_type="fa" icon_position="left" %}

💡 Contribute

The project is currently in its early testing phase. We encourage interested users to provide feedback on the library.

If you want to contribute to NexUI or have suggestions:

  1. Fork the project 📌
  2. Test the components and provide feedback 🛠️
  3. Create an issue to share your suggestions or report problems ✅

We cannot accept direct contributions at the moment, but your feedback is essential for NexUI's evolution.


🔗 Useful Links


⚖️ License

This project is licensed under the MIT license. See the LICENSE file for more details.

PyPI - Downloads

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

nexui-0.2.1.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

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

nexui-0.2.1-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file nexui-0.2.1.tar.gz.

File metadata

  • Download URL: nexui-0.2.1.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for nexui-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0174b550243745d58c21fea4f4ec7aedd740f8ede84cc75f247e510b990acf2f
MD5 d58fda753659ccf9c93b6e8c0f1d370c
BLAKE2b-256 6e174fe4780d2bb294a3aa08870e9d3076e63935aca85fcffca138f62855a785

See more details on using hashes here.

File details

Details for the file nexui-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: nexui-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for nexui-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8c1e0c5cd3aa4fe51503d9f7400e500e0b83efcde979afa3ef34fb6daf005ff0
MD5 62e9b4e32e9b09e4203bcb30cb3cba02
BLAKE2b-256 dbbe1f7d76997f73543479dd93ca82a5b9e62e65c8922486210b65638221b4da

See more details on using hashes here.

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