Library of modern UI components with optional HTMX support
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 texttype: Button type (button,submit,reset)button_class: Custom CSS classesicon: Icon (supportsEmoji,Font Awesome, andUnicode)icon_type: Icon type (emoji,fa,unicode)icon_position: Icon position (left,right)icon_size: Icon sizeicon_color: Icon colordisabled: Disables the button (true)url_name: Django URL nameurl_params: Dynamic parameters for the Django URLattrs: AdditionalHTMLandHTMXattributes (_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 nameid: Field ID (default is the same asname)value: Default valueplaceholder: Placeholder textcontainer_class: CSS classes for the main containerwrapper_class: CSS classes for the input wrapperlabel_class: CSS classes for the labelinput_class: CSS classes for the inputlabel: Label textrequired: Required field (true/false)disabled: Disables the field (true/false)readonly: Read-only field (true/false)icon: Icon (supportsEmoji,Font Awesome, andUnicode)icon_type: Icon type (emoji,fa,unicode)icon_position: Icon position (left,right)icon_size: Icon sizeicon_color: Icon colorurl_name: Django URL name forHTMXmethod: HTTP method for HTMX (postby default)attrs: AdditionalHTMLandHTMXattributes
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" %}
🔐 Authentication Components Example
NexUI provides pre-built authentication components that you can easily integrate into your Django applications. Below are examples of login and registration forms built with NexUI components.
🔐 Register Form Example
Create a beautiful registration form with social authentication options:
<div class="max-w-md w-full p-6 bg-white rounded-lg shadow-md">
<h1 class="text-2xl font-bold mb-2">Create an account</h1>
<p class="text-gray-600 mb-6">Enter your email below to create your account</p>
<div class="space-y-4">
{# OAuth Buttons #}
<div class="flex gap-4 mb-4">
{% button label="GitHub" button_class="w-full border border-gray-300 bg-white hover:bg-gray-50"
icon="fa-brands fa-github fa-lg" icon_type="fa" icon_position="left" %}
{% button label="Google" button_class="w-full border border-gray-300 bg-white hover:bg-gray-50"
icon="fa-brands fa-google fa-lg" icon_type="fa" icon_position="left" %}
</div>
{# Separator #}
<div class="relative my-6">
<div class="absolute inset-0 flex items-center">
<span class="w-full border-t"></span>
</div>
<div class="relative flex justify-center text-xs uppercase">
<span class="bg-white px-2 text-gray-500">OR CONTINUE WITH</span>
</div>
</div>
{# Email Field #}
{% input_field type="email" name="register_email" label="Email"
placeholder="nexui@example.com" container_class="mb-4"
input_class="h-10" icon="fa-solid fa-envelope"
icon_type="fa" required="true" %}
{# Password Field #}
{% input_field type="password" name="register_password" label="Password"
container_class="mb-6" input_class="h-10"
icon="fa-solid fa-lock" icon_type="fa" required="true" %}
{# Submit Button #}
{% button label="Create account" type="submit"
button_class="w-full bg-gray-900 text-white hover:bg-gray-800" %}
</div>
</div>
🔐 Login Form Example
Create a matching login form with social authentication:
<div class="max-w-md w-full p-6 bg-white rounded-lg shadow-md">
<h1 class="text-2xl font-bold mb-2">Login</h1>
<p class="text-gray-600 mb-6">Welcome back! Please enter your details</p>
<div class="space-y-4">
{# OAuth Buttons #}
<div class="flex gap-4 mb-4">
{% button label="GitHub" button_class="w-full border border-gray-300 bg-white hover:bg-gray-50"
icon="fa-brands fa-github fa-lg" icon_type="fa" icon_position="left" %}
{% button label="Google" button_class="w-full border border-gray-300 bg-white hover:bg-gray-50"
icon="fa-brands fa-google fa-lg" icon_type="fa" icon_position="left" %}
</div>
{# Separator #}
<div class="relative my-6">
<div class="absolute inset-0 flex items-center">
<span class="w-full border-t"></span>
</div>
<div class="relative flex justify-center text-xs uppercase">
<span class="bg-white px-2 text-gray-500">OR CONTINUE WITH</span>
</div>
</div>
{# Email Field #}
{% input_field type="email" name="login_email" label="Email"
placeholder="nexui@example.com" container_class="mb-4"
input_class="h-10" icon="fa-solid fa-envelope"
icon_type="fa" required="true" %}
{# Password Field #}
{% input_field type="password" name="login_password" label="Password"
container_class="mb-2" input_class="h-10"
icon="fa-solid fa-lock" icon_type="fa" required="true" %}
{# Forgot Password Link #}
<div class="flex justify-end mb-6">
<a href="#" class="text-sm text-black hover:underline">Forgot password?</a>
</div>
{# Submit Button #}
{% button label="Sign in" type="submit"
button_class="w-full bg-gray-900 text-white hover:bg-gray-800" %}
</div>
</div>
Features
Both forms include:
- 🔑 Social authentication options (GitHub and Google)
- 📧 Email and password fields with icons
- 🎨 Clean, modern design with Tailwind CSS
- 📱 Responsive layout
Customization
You can customize these forms by:
Modifyingthe Tailwind CSS classesAddingorremovingsocial authentication providersCustomizingthe icons using Font Awesome classes- Adding
HTMXattributes for enhanced interactivity Adjusting the layout and spacing
💡 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:
Forkthe project 📌Testthe components and provide feedback 🛠️Createan 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
- GitHub Repository 🖥️
- Report a Bug 🐞
- Django-HTMX ⚡
- Django-Tailwind 🎨
- HTMX ⚡
- Tailwind CSS 🎨
⚖️ License
This project is licensed under the MIT license. See the LICENSE file for more details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nexui-0.2.3.tar.gz.
File metadata
- Download URL: nexui-0.2.3.tar.gz
- Upload date:
- Size: 21.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9324b43dceab4c55afc09eadd75de44f91d7028c68804ca19d7d66afcd189fda
|
|
| MD5 |
b02e5b11ecba81ef5b8a14216abd2fdc
|
|
| BLAKE2b-256 |
e502c91ed42ca9fb3aec7555a345c8823e5818b903bea2f7350228fcf8b3544f
|
File details
Details for the file nexui-0.2.3-py3-none-any.whl.
File metadata
- Download URL: nexui-0.2.3-py3-none-any.whl
- Upload date:
- Size: 24.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d4b172f80b7a9f1f6e2b221e0e46e6587516e1886601ad32c4e3c14700f2814
|
|
| MD5 |
ce538cb0c7619d8a50048cc2da4a3c99
|
|
| BLAKE2b-256 |
3ddd1fa721bd331bb86e69f2c807e8e117525d38a7bfce6c6078abd5d6213c27
|