nexui 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nexui-0.1.2/LICENSE +21 -0
- nexui-0.1.2/MANIFEST.in +5 -0
- nexui-0.1.2/PKG-INFO +176 -0
- nexui-0.1.2/README.md +155 -0
- nexui-0.1.2/nexui/__init__.py +0 -0
- nexui-0.1.2/nexui/asgi.py +16 -0
- nexui-0.1.2/nexui/settings.py +148 -0
- nexui-0.1.2/nexui/templates/base.html +11 -0
- nexui-0.1.2/nexui/templates/components/button.html +44 -0
- nexui-0.1.2/nexui/templates/components/button_old_1.html +80 -0
- nexui-0.1.2/nexui/templates/components/card.html +4 -0
- nexui-0.1.2/nexui/templates/components/modal.html +0 -0
- nexui-0.1.2/nexui/templates/components/tabs.html +0 -0
- nexui-0.1.2/nexui/templates/components/toast.html +0 -0
- nexui-0.1.2/nexui/templates/form.html +59 -0
- nexui-0.1.2/nexui/templates/index.html +90 -0
- nexui-0.1.2/nexui/templates/index_old_1.html +182 -0
- nexui-0.1.2/nexui/templates/result.html +2 -0
- nexui-0.1.2/nexui/templatetags/__init__.py +0 -0
- nexui-0.1.2/nexui/templatetags/__pycache__/__init__.cpython-313.pyc +0 -0
- nexui-0.1.2/nexui/templatetags/__pycache__/custom_filters.cpython-313.pyc +0 -0
- nexui-0.1.2/nexui/templatetags/__pycache__/custom_tags.cpython-313.pyc +0 -0
- nexui-0.1.2/nexui/templatetags/__pycache__/nexui_tags.cpython-313.pyc +0 -0
- nexui-0.1.2/nexui/templatetags/__pycache__/nexui_tags_old_1.cpython-313.pyc +0 -0
- nexui-0.1.2/nexui/templatetags/nexui_tags.py +102 -0
- nexui-0.1.2/nexui/templatetags/nexui_tags_old_1.py +58 -0
- nexui-0.1.2/nexui/urls.py +29 -0
- nexui-0.1.2/nexui/views.py +33 -0
- nexui-0.1.2/nexui/wsgi.py +16 -0
- nexui-0.1.2/nexui.egg-info/PKG-INFO +176 -0
- nexui-0.1.2/nexui.egg-info/SOURCES.txt +34 -0
- nexui-0.1.2/nexui.egg-info/dependency_links.txt +1 -0
- nexui-0.1.2/nexui.egg-info/requires.txt +5 -0
- nexui-0.1.2/nexui.egg-info/top_level.txt +1 -0
- nexui-0.1.2/pyproject.toml +36 -0
- nexui-0.1.2/setup.cfg +4 -0
nexui-0.1.2/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Hugues Codeur
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
nexui-0.1.2/MANIFEST.in
ADDED
nexui-0.1.2/PKG-INFO
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: nexui
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: BibliothĂšque de composants UI modernes avec support HTMX optionnel
|
|
5
|
+
Author-email: Hugues Codeur <huguescodeur@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: Framework :: Django
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: Django>=5.1
|
|
18
|
+
Requires-Dist: django-tailwind>=3.8.0
|
|
19
|
+
Provides-Extra: htmx
|
|
20
|
+
Requires-Dist: django-htmx>=1.17.2; extra == "htmx"
|
|
21
|
+
|
|
22
|
+
# đ NexUI
|
|
23
|
+
|
|
24
|
+
NexUI est une bibliothĂšque de composants UI pour Django, optimisĂ©e pour HTMX et basĂ©e sur Tailwind CSS. Elle permet d'ajouter facilement des Ă©lĂ©ments interactifs Ă vos applications Django tout en bĂ©nĂ©ficiant des avantages d'une intĂ©gration fluide avec HTMX pour la gestion des requĂȘtes AJAX.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## đ Installation
|
|
29
|
+
|
|
30
|
+
### Installation de base
|
|
31
|
+
```bash
|
|
32
|
+
pip install nexui
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Installation avec support HTMX
|
|
36
|
+
Si vous prévoyez d'utiliser HTMX avec vos composants :
|
|
37
|
+
```bash
|
|
38
|
+
pip install nexui[htmx]
|
|
39
|
+
```
|
|
40
|
+
Ou installez HTMX séparément plus tard :
|
|
41
|
+
```bash
|
|
42
|
+
pip install django-htmx
|
|
43
|
+
```
|
|
44
|
+
Ajoutez `nexui` à la liste des applications installées dans `settings.py` :
|
|
45
|
+
```python
|
|
46
|
+
INSTALLED_APPS = [
|
|
47
|
+
...
|
|
48
|
+
'nexui',
|
|
49
|
+
]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## đš FonctionnalitĂ©s
|
|
55
|
+
|
|
56
|
+
â
Composants UI réutilisables pour Django
|
|
57
|
+
đ„ IntĂ©gration fluide avec HTMX
|
|
58
|
+
đš BasĂ© sur Tailwind CSS pour un design moderne
|
|
59
|
+
đŠ Facile Ă installer et Ă utiliser
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## đ Utilisation
|
|
64
|
+
|
|
65
|
+
### Charger les tags NexUI dans vos templates Django
|
|
66
|
+
|
|
67
|
+
```django
|
|
68
|
+
{% load nexui_tags %}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## đ Documentation
|
|
74
|
+
|
|
75
|
+
### đ Composant Button
|
|
76
|
+
|
|
77
|
+
Le composant `button` permet de créer des boutons personnalisables avec des icÎnes et des interactions HTMX.
|
|
78
|
+
|
|
79
|
+
#### **Options disponibles :**
|
|
80
|
+
- `label` : Texte du bouton
|
|
81
|
+
- `type` : Type du bouton (`button`, `submit`, `reset`)
|
|
82
|
+
- `class` : Classes CSS personnalisées
|
|
83
|
+
- `icon` : IcĂŽne (supporte Font Awesome et Unicode)
|
|
84
|
+
- `icon_type` : Type d'icĂŽne (`fa`, `unicode`, `emoji`)
|
|
85
|
+
- `icon_position` : Position de l'icĂŽne (`left`, `right`)
|
|
86
|
+
- `icon_size` : Taille de l'icĂŽne
|
|
87
|
+
- `icon_color` : Couleur de l'icĂŽne
|
|
88
|
+
- `disabled` : Désactive le bouton (`true`)
|
|
89
|
+
- `url_name` : Nom de l'URL Django
|
|
90
|
+
- `url_params` : ParamĂštres dynamiques pour l'URL Django
|
|
91
|
+
- `attrs` : Attributs HTML et HTMX supplémentaires (_hx-_*, id, style, data-\* etc.)
|
|
92
|
+
|
|
93
|
+
### **Exemples d'utilisation :**
|
|
94
|
+
|
|
95
|
+
#### 1ïžâŁ Bouton simple
|
|
96
|
+
```django
|
|
97
|
+
{% button label="Envoyer" %}
|
|
98
|
+
```
|
|
99
|
+
#### 2ïžâŁ Bouton simple personnalisĂ©
|
|
100
|
+
```django
|
|
101
|
+
{% button label="Envoyer" type="submit" class="bg-yellow-500 text-black" %}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### 3ïžâŁ Bouton avec HTMX
|
|
105
|
+
```django
|
|
106
|
+
{% button label="Envoyer avec HTMX" type="submit" class="bg-green-500" attrs="hx-post='/submit' hx-target='#result' hx-swap='innerHTML'" %}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### 4ïžâŁ Bouton avec URL dynamique
|
|
110
|
+
```django
|
|
111
|
+
{% button label="Dynamique URL Params" type="submit" class="bg-blue-500 text-white" url_name="update-user" url_params="2, tomate" attrs="hx-confirm='Ătes-vous sĂ»r ?' hx-target='#result' hx-swap='innerHTML'" %}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### 5ïžâŁ Bouton avec URL dynamique et un seul paramĂštres
|
|
115
|
+
```django
|
|
116
|
+
{% button label="Dynamique URL Params" type="submit" class="bg-blue-500 text-white" url_name="update-user" url_params="1" attrs="hx-confirm='Ătes-vous sĂ»r ?' hx-target='#result' hx-swap='innerHTML'" %}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### 6ïžâŁ Bouton avec URL dynamique et plusieurs paramĂštres
|
|
120
|
+
```django
|
|
121
|
+
{% button label="Dynamique URL Params" type="submit" class="bg-blue-500 text-white" url_name="update-user" url_params="1, developer" attrs="hx-confirm='Ătes-vous sĂ»r ?' hx-target='#result' hx-swap='innerHTML'" %}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
#### 7ïžâŁ Bouton avec Ă©mojis
|
|
126
|
+
```django
|
|
127
|
+
{% button label="TĂ©lĂ©charger" class="bg-green-500" icon="âŹïž" icon_position="left" icon_size="lg" %}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
#### 8ïžâŁ Bouton dĂ©sactivĂ©
|
|
131
|
+
```django
|
|
132
|
+
{% button label="Disabled" disabled="true" %}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### 9ïžâŁ Bouton avec Font Awesome
|
|
136
|
+
```django
|
|
137
|
+
{% button label="Ăditer" icon="fa-solid fa-pen" icon_type="fa" %}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### đ Bouton avec code HTML
|
|
141
|
+
```django
|
|
142
|
+
{% button label="Ătoile" icon="9733" icon_type="unicode" %}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```django
|
|
146
|
+
{% button label="At Symbol" icon="@" icon_type="unicode" %}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## đĄ Contribuer
|
|
152
|
+
|
|
153
|
+
Actuellement, le projet est en phase de test initial. Nous encourageons les utilisateurs intéressés à donner leur avis sur la bibliothÚque.
|
|
154
|
+
|
|
155
|
+
Si vous souhaitez participer à l'évolution de **NexUI** ou si vous avez des suggestions :
|
|
156
|
+
|
|
157
|
+
1. **Forkez le projet** đ
|
|
158
|
+
2. **Testez les composants et apportez vos retours** đ ïž
|
|
159
|
+
3. **CrĂ©ez une issue** pour partager vos suggestions ou problĂšmes â
|
|
160
|
+
|
|
161
|
+
Nous ne pouvons pas accepter de contributions directes pour le moment, mais **vos retours sont essentiels** pour l'évolution de NexUI.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## đ Liens utiles
|
|
166
|
+
|
|
167
|
+
- [DĂ©pĂŽt GitHub](#) đ„ïž
|
|
168
|
+
- [Signaler un bug](#) đ
|
|
169
|
+
- [HTMX](https://htmx.org/) âĄ
|
|
170
|
+
- [Tailwind CSS](https://tailwindcss.com/) đš
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## âïž Licence
|
|
175
|
+
|
|
176
|
+
Ce projet est sous licence **MIT**. Voir le fichier `LICENSE` pour plus de détails.
|
nexui-0.1.2/README.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# đ NexUI
|
|
2
|
+
|
|
3
|
+
NexUI est une bibliothĂšque de composants UI pour Django, optimisĂ©e pour HTMX et basĂ©e sur Tailwind CSS. Elle permet d'ajouter facilement des Ă©lĂ©ments interactifs Ă vos applications Django tout en bĂ©nĂ©ficiant des avantages d'une intĂ©gration fluide avec HTMX pour la gestion des requĂȘtes AJAX.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## đ Installation
|
|
8
|
+
|
|
9
|
+
### Installation de base
|
|
10
|
+
```bash
|
|
11
|
+
pip install nexui
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Installation avec support HTMX
|
|
15
|
+
Si vous prévoyez d'utiliser HTMX avec vos composants :
|
|
16
|
+
```bash
|
|
17
|
+
pip install nexui[htmx]
|
|
18
|
+
```
|
|
19
|
+
Ou installez HTMX séparément plus tard :
|
|
20
|
+
```bash
|
|
21
|
+
pip install django-htmx
|
|
22
|
+
```
|
|
23
|
+
Ajoutez `nexui` à la liste des applications installées dans `settings.py` :
|
|
24
|
+
```python
|
|
25
|
+
INSTALLED_APPS = [
|
|
26
|
+
...
|
|
27
|
+
'nexui',
|
|
28
|
+
]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## đš FonctionnalitĂ©s
|
|
34
|
+
|
|
35
|
+
â
Composants UI réutilisables pour Django
|
|
36
|
+
đ„ IntĂ©gration fluide avec HTMX
|
|
37
|
+
đš BasĂ© sur Tailwind CSS pour un design moderne
|
|
38
|
+
đŠ Facile Ă installer et Ă utiliser
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## đ Utilisation
|
|
43
|
+
|
|
44
|
+
### Charger les tags NexUI dans vos templates Django
|
|
45
|
+
|
|
46
|
+
```django
|
|
47
|
+
{% load nexui_tags %}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## đ Documentation
|
|
53
|
+
|
|
54
|
+
### đ Composant Button
|
|
55
|
+
|
|
56
|
+
Le composant `button` permet de créer des boutons personnalisables avec des icÎnes et des interactions HTMX.
|
|
57
|
+
|
|
58
|
+
#### **Options disponibles :**
|
|
59
|
+
- `label` : Texte du bouton
|
|
60
|
+
- `type` : Type du bouton (`button`, `submit`, `reset`)
|
|
61
|
+
- `class` : Classes CSS personnalisées
|
|
62
|
+
- `icon` : IcĂŽne (supporte Font Awesome et Unicode)
|
|
63
|
+
- `icon_type` : Type d'icĂŽne (`fa`, `unicode`, `emoji`)
|
|
64
|
+
- `icon_position` : Position de l'icĂŽne (`left`, `right`)
|
|
65
|
+
- `icon_size` : Taille de l'icĂŽne
|
|
66
|
+
- `icon_color` : Couleur de l'icĂŽne
|
|
67
|
+
- `disabled` : Désactive le bouton (`true`)
|
|
68
|
+
- `url_name` : Nom de l'URL Django
|
|
69
|
+
- `url_params` : ParamĂštres dynamiques pour l'URL Django
|
|
70
|
+
- `attrs` : Attributs HTML et HTMX supplémentaires (_hx-_*, id, style, data-\* etc.)
|
|
71
|
+
|
|
72
|
+
### **Exemples d'utilisation :**
|
|
73
|
+
|
|
74
|
+
#### 1ïžâŁ Bouton simple
|
|
75
|
+
```django
|
|
76
|
+
{% button label="Envoyer" %}
|
|
77
|
+
```
|
|
78
|
+
#### 2ïžâŁ Bouton simple personnalisĂ©
|
|
79
|
+
```django
|
|
80
|
+
{% button label="Envoyer" type="submit" class="bg-yellow-500 text-black" %}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### 3ïžâŁ Bouton avec HTMX
|
|
84
|
+
```django
|
|
85
|
+
{% button label="Envoyer avec HTMX" type="submit" class="bg-green-500" attrs="hx-post='/submit' hx-target='#result' hx-swap='innerHTML'" %}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### 4ïžâŁ Bouton avec URL dynamique
|
|
89
|
+
```django
|
|
90
|
+
{% button label="Dynamique URL Params" type="submit" class="bg-blue-500 text-white" url_name="update-user" url_params="2, tomate" attrs="hx-confirm='Ătes-vous sĂ»r ?' hx-target='#result' hx-swap='innerHTML'" %}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### 5ïžâŁ Bouton avec URL dynamique et un seul paramĂštres
|
|
94
|
+
```django
|
|
95
|
+
{% button label="Dynamique URL Params" type="submit" class="bg-blue-500 text-white" url_name="update-user" url_params="1" attrs="hx-confirm='Ătes-vous sĂ»r ?' hx-target='#result' hx-swap='innerHTML'" %}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### 6ïžâŁ Bouton avec URL dynamique et plusieurs paramĂštres
|
|
99
|
+
```django
|
|
100
|
+
{% button label="Dynamique URL Params" type="submit" class="bg-blue-500 text-white" url_name="update-user" url_params="1, developer" attrs="hx-confirm='Ătes-vous sĂ»r ?' hx-target='#result' hx-swap='innerHTML'" %}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
#### 7ïžâŁ Bouton avec Ă©mojis
|
|
105
|
+
```django
|
|
106
|
+
{% button label="TĂ©lĂ©charger" class="bg-green-500" icon="âŹïž" icon_position="left" icon_size="lg" %}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### 8ïžâŁ Bouton dĂ©sactivĂ©
|
|
110
|
+
```django
|
|
111
|
+
{% button label="Disabled" disabled="true" %}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### 9ïžâŁ Bouton avec Font Awesome
|
|
115
|
+
```django
|
|
116
|
+
{% button label="Ăditer" icon="fa-solid fa-pen" icon_type="fa" %}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### đ Bouton avec code HTML
|
|
120
|
+
```django
|
|
121
|
+
{% button label="Ătoile" icon="9733" icon_type="unicode" %}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```django
|
|
125
|
+
{% button label="At Symbol" icon="@" icon_type="unicode" %}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## đĄ Contribuer
|
|
131
|
+
|
|
132
|
+
Actuellement, le projet est en phase de test initial. Nous encourageons les utilisateurs intéressés à donner leur avis sur la bibliothÚque.
|
|
133
|
+
|
|
134
|
+
Si vous souhaitez participer à l'évolution de **NexUI** ou si vous avez des suggestions :
|
|
135
|
+
|
|
136
|
+
1. **Forkez le projet** đ
|
|
137
|
+
2. **Testez les composants et apportez vos retours** đ ïž
|
|
138
|
+
3. **CrĂ©ez une issue** pour partager vos suggestions ou problĂšmes â
|
|
139
|
+
|
|
140
|
+
Nous ne pouvons pas accepter de contributions directes pour le moment, mais **vos retours sont essentiels** pour l'évolution de NexUI.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## đ Liens utiles
|
|
145
|
+
|
|
146
|
+
- [DĂ©pĂŽt GitHub](#) đ„ïž
|
|
147
|
+
- [Signaler un bug](#) đ
|
|
148
|
+
- [HTMX](https://htmx.org/) âĄ
|
|
149
|
+
- [Tailwind CSS](https://tailwindcss.com/) đš
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## âïž Licence
|
|
154
|
+
|
|
155
|
+
Ce projet est sous licence **MIT**. Voir le fichier `LICENSE` pour plus de détails.
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""
|
|
2
|
+
ASGI config for nexui project.
|
|
3
|
+
|
|
4
|
+
It exposes the ASGI callable as a module-level variable named ``application``.
|
|
5
|
+
|
|
6
|
+
For more information on this file, see
|
|
7
|
+
https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
from django.core.asgi import get_asgi_application
|
|
13
|
+
|
|
14
|
+
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nexui.settings')
|
|
15
|
+
|
|
16
|
+
application = get_asgi_application()
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Django settings for nexui project.
|
|
3
|
+
|
|
4
|
+
Generated by 'django-admin startproject' using Django 5.1.5.
|
|
5
|
+
|
|
6
|
+
For more information on this file, see
|
|
7
|
+
https://docs.djangoproject.com/en/5.1/topics/settings/
|
|
8
|
+
|
|
9
|
+
For the full list of settings and their values, see
|
|
10
|
+
https://docs.djangoproject.com/en/5.1/ref/settings/
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
|
17
|
+
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# Quick-start development settings - unsuitable for production
|
|
21
|
+
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
|
|
22
|
+
|
|
23
|
+
# SECURITY WARNING: keep the secret key used in production secret!
|
|
24
|
+
SECRET_KEY = 'django-insecure-p)pmps#lul61h5nv-56@bym!_v+abj*3o%%+w^)t)mcwv9&zw9'
|
|
25
|
+
|
|
26
|
+
# SECURITY WARNING: don't run with debug turned on in production!
|
|
27
|
+
DEBUG = True
|
|
28
|
+
|
|
29
|
+
ALLOWED_HOSTS = []
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# Application definition
|
|
33
|
+
|
|
34
|
+
INSTALLED_APPS = [
|
|
35
|
+
'django.contrib.admin',
|
|
36
|
+
'django.contrib.auth',
|
|
37
|
+
'django.contrib.contenttypes',
|
|
38
|
+
'django.contrib.sessions',
|
|
39
|
+
'django.contrib.messages',
|
|
40
|
+
'django.contrib.staticfiles',
|
|
41
|
+
'tailwind',
|
|
42
|
+
'theme',
|
|
43
|
+
'django_browser_reload',
|
|
44
|
+
"django_htmx",
|
|
45
|
+
'nexui',
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
# ? Tailwind configuration
|
|
49
|
+
TAILWIND_APP_NAME = 'theme'
|
|
50
|
+
|
|
51
|
+
INTERNAL_IPS = [
|
|
52
|
+
"127.0.0.1",
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
NPM_BIN_PATH = "C:/Program Files/nodejs/npm.cmd"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
MIDDLEWARE = [
|
|
60
|
+
'django.middleware.security.SecurityMiddleware',
|
|
61
|
+
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
62
|
+
'django.middleware.common.CommonMiddleware',
|
|
63
|
+
"django_browser_reload.middleware.BrowserReloadMiddleware",
|
|
64
|
+
"django_htmx.middleware.HtmxMiddleware",
|
|
65
|
+
'django.middleware.csrf.CsrfViewMiddleware',
|
|
66
|
+
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
|
67
|
+
'django.contrib.messages.middleware.MessageMiddleware',
|
|
68
|
+
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
ROOT_URLCONF = 'nexui.urls'
|
|
72
|
+
|
|
73
|
+
TEMPLATES = [
|
|
74
|
+
{
|
|
75
|
+
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
|
76
|
+
# 'DIRS': [],
|
|
77
|
+
'DIRS': [BASE_DIR / 'templates'],
|
|
78
|
+
'APP_DIRS': True,
|
|
79
|
+
'OPTIONS': {
|
|
80
|
+
'context_processors': [
|
|
81
|
+
'django.template.context_processors.debug',
|
|
82
|
+
'django.template.context_processors.request',
|
|
83
|
+
'django.contrib.auth.context_processors.auth',
|
|
84
|
+
'django.contrib.messages.context_processors.messages',
|
|
85
|
+
],
|
|
86
|
+
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
WSGI_APPLICATION = 'nexui.wsgi.application'
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
# Database
|
|
95
|
+
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases
|
|
96
|
+
|
|
97
|
+
DATABASES = {
|
|
98
|
+
'default': {
|
|
99
|
+
'ENGINE': 'django.db.backends.sqlite3',
|
|
100
|
+
'NAME': BASE_DIR / 'db.sqlite3',
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# Password validation
|
|
106
|
+
# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators
|
|
107
|
+
|
|
108
|
+
AUTH_PASSWORD_VALIDATORS = [
|
|
109
|
+
{
|
|
110
|
+
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
|
120
|
+
},
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
# Internationalization
|
|
125
|
+
# https://docs.djangoproject.com/en/5.1/topics/i18n/
|
|
126
|
+
|
|
127
|
+
LANGUAGE_CODE = 'en-us'
|
|
128
|
+
|
|
129
|
+
TIME_ZONE = 'UTC'
|
|
130
|
+
|
|
131
|
+
USE_I18N = True
|
|
132
|
+
|
|
133
|
+
USE_TZ = True
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
# Static files (CSS, JavaScript, Images)
|
|
137
|
+
# https://docs.djangoproject.com/en/5.1/howto/static-files/
|
|
138
|
+
|
|
139
|
+
STATIC_URL = 'static/'
|
|
140
|
+
# STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
|
|
141
|
+
|
|
142
|
+
STATICFILES_DIRS = [BASE_DIR / "static"]
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# Default primary key field type
|
|
146
|
+
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
|
|
147
|
+
|
|
148
|
+
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{# components/button.html #}
|
|
2
|
+
<button class="px-4 py-2 rounded bg-blue-500 text-white de hover:bg-blue-600 {{ class }}"
|
|
3
|
+
type="{{ type }}"
|
|
4
|
+
{% if disabled %}disabled{% endif %}
|
|
5
|
+
{{ attributes|safe }}
|
|
6
|
+
>
|
|
7
|
+
{% if icon %}
|
|
8
|
+
{% if icon_position == "left" %}
|
|
9
|
+
<span class="mr-2 text-{{ icon_size }}">
|
|
10
|
+
{% if icon_type == "fa" %}
|
|
11
|
+
<i class="{{ icon }}" {% if icon_color %} style="color: {{ icon_color }};"{% endif %}></i>
|
|
12
|
+
{% elif icon_type == "unicode" %}
|
|
13
|
+
{% if "&#" in icon %}
|
|
14
|
+
{{ icon|safe }}
|
|
15
|
+
{% else %}
|
|
16
|
+
&#{{ icon }};
|
|
17
|
+
{% endif %}
|
|
18
|
+
{% else %}
|
|
19
|
+
{{ icon }}
|
|
20
|
+
{% endif %}
|
|
21
|
+
</span>
|
|
22
|
+
{% endif %}
|
|
23
|
+
{% endif %}
|
|
24
|
+
|
|
25
|
+
{{ label }}
|
|
26
|
+
|
|
27
|
+
{% if icon %}
|
|
28
|
+
{% if icon_position == "right" %}
|
|
29
|
+
<span class="ml-2 text-{{ icon_size }}">
|
|
30
|
+
{% if icon_type == "fa" %}
|
|
31
|
+
<i class="{{ icon }}" {% if icon_color %}style="color: {{ icon_color }};"{% endif %}></i>
|
|
32
|
+
{% elif icon_type == "unicode" %}
|
|
33
|
+
{% if "&#" in icon %}
|
|
34
|
+
{{ icon|safe }}
|
|
35
|
+
{% else %}
|
|
36
|
+
&#{{ icon }};
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% else %}
|
|
39
|
+
{{ icon }}
|
|
40
|
+
{% endif %}
|
|
41
|
+
</span>
|
|
42
|
+
{% endif %}
|
|
43
|
+
{% endif %}
|
|
44
|
+
</button>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<button class="px-4 py-2 rounded flex items-center {{ class }}" type="{{ type }}" {% if disabled %}disabled{% endif %}>
|
|
2
|
+
{% if icon %}
|
|
3
|
+
{% if icon_position == "left" %}
|
|
4
|
+
<span class="mr-2 text-{{ icon_size }}">
|
|
5
|
+
{% if icon_type == "fa" %}
|
|
6
|
+
<i class="{{ icon }}" {% if icon_color %}style="color: {{ icon_color }};" {% endif %}></i>
|
|
7
|
+
{% elif icon_type == "unicode" %}
|
|
8
|
+
{% if "&#" in icon %}
|
|
9
|
+
{{ icon|safe }}
|
|
10
|
+
{% else %}
|
|
11
|
+
&#{{ icon }};
|
|
12
|
+
{% endif %}
|
|
13
|
+
{% else %}
|
|
14
|
+
{{ icon }}
|
|
15
|
+
{% endif %}
|
|
16
|
+
</span>
|
|
17
|
+
{% endif %}
|
|
18
|
+
{% endif %}
|
|
19
|
+
|
|
20
|
+
{{ label }}
|
|
21
|
+
|
|
22
|
+
{% if icon %}
|
|
23
|
+
{% if icon_position == "right" %}
|
|
24
|
+
<span class="ml-2 text-{{ icon_size }}">
|
|
25
|
+
{% if icon_type == "fa" %}
|
|
26
|
+
<i class="{{ icon }}" {% if icon_color %}style="color: {{ icon_color }};" {% endif %}></i>
|
|
27
|
+
{% elif icon_type == "unicode" %}
|
|
28
|
+
{% if "&#" in icon %}
|
|
29
|
+
{{ icon|safe }}
|
|
30
|
+
{% else %}
|
|
31
|
+
&#{{ icon }};
|
|
32
|
+
{% endif %}
|
|
33
|
+
{% else %}
|
|
34
|
+
{{ icon }}
|
|
35
|
+
{% endif %}
|
|
36
|
+
</span>
|
|
37
|
+
{% endif %}
|
|
38
|
+
{% endif %}
|
|
39
|
+
</button>
|
|
40
|
+
|
|
41
|
+
<button class="px-4 py-2 rounded flex items-center {{ class }}" type="{{ type }}" {% if disabled %}disabled{% endif %}
|
|
42
|
+
{{ attributes }}>
|
|
43
|
+
{% if icon %}
|
|
44
|
+
{% if icon_position == "left" %}
|
|
45
|
+
<span class="mr-2 text-{{ icon_size }}">
|
|
46
|
+
{% if icon_type == "fa" %}
|
|
47
|
+
<i class="{{ icon }}" {% if icon_color %}style="color: {{ icon_color }};" {% endif %}></i>
|
|
48
|
+
{% elif icon_type == "unicode" %}
|
|
49
|
+
{% if "&#" in icon %}
|
|
50
|
+
{{ icon|safe }}
|
|
51
|
+
{% else %}
|
|
52
|
+
&#{{ icon }};
|
|
53
|
+
{% endif %}
|
|
54
|
+
{% else %}
|
|
55
|
+
{{ icon }}
|
|
56
|
+
{% endif %}
|
|
57
|
+
</span>
|
|
58
|
+
{% endif %}
|
|
59
|
+
{% endif %}
|
|
60
|
+
|
|
61
|
+
{{ label }}
|
|
62
|
+
|
|
63
|
+
{% if icon %}
|
|
64
|
+
{% if icon_position == "right" %}
|
|
65
|
+
<span class="ml-2 text-{{ icon_size }}">
|
|
66
|
+
{% if icon_type == "fa" %}
|
|
67
|
+
<i class="{{ icon }}" {% if icon_color %}style="color: {{ icon_color }};" {% endif %}></i>
|
|
68
|
+
{% elif icon_type == "unicode" %}
|
|
69
|
+
{% if "&#" in icon %}
|
|
70
|
+
{{ icon|safe }}
|
|
71
|
+
{% else %}
|
|
72
|
+
&#{{ icon }};
|
|
73
|
+
{% endif %}
|
|
74
|
+
{% else %}
|
|
75
|
+
{{ icon }}
|
|
76
|
+
{% endif %}
|
|
77
|
+
</span>
|
|
78
|
+
{% endif %}
|
|
79
|
+
{% endif %}
|
|
80
|
+
</button>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|