adminlte-django 0.1.0__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.
Files changed (342) hide show
  1. adminlte_django-0.1.0/.gitignore +37 -0
  2. adminlte_django-0.1.0/CHANGELOG.md +169 -0
  3. adminlte_django-0.1.0/CLAUDE.md +74 -0
  4. adminlte_django-0.1.0/LICENSE +21 -0
  5. adminlte_django-0.1.0/MANIFEST.in +7 -0
  6. adminlte_django-0.1.0/PKG-INFO +576 -0
  7. adminlte_django-0.1.0/README.md +516 -0
  8. adminlte_django-0.1.0/ROADMAP.md +84 -0
  9. adminlte_django-0.1.0/demo/.env.example +13 -0
  10. adminlte_django-0.1.0/demo/accounts/__init__.py +0 -0
  11. adminlte_django-0.1.0/demo/accounts/apps.py +6 -0
  12. adminlte_django-0.1.0/demo/accounts/templates/accounts/login.html +74 -0
  13. adminlte_django-0.1.0/demo/accounts/tests.py +50 -0
  14. adminlte_django-0.1.0/demo/accounts/urls.py +28 -0
  15. adminlte_django-0.1.0/demo/accounts/views.py +19 -0
  16. adminlte_django-0.1.0/demo/assets/app.js +201 -0
  17. adminlte_django-0.1.0/demo/assets/app.scss +43 -0
  18. adminlte_django-0.1.0/demo/config/__init__.py +0 -0
  19. adminlte_django-0.1.0/demo/config/menu.py +218 -0
  20. adminlte_django-0.1.0/demo/config/settings.py +229 -0
  21. adminlte_django-0.1.0/demo/config/urls.py +18 -0
  22. adminlte_django-0.1.0/demo/config/wsgi.py +7 -0
  23. adminlte_django-0.1.0/demo/crud/__init__.py +0 -0
  24. adminlte_django-0.1.0/demo/crud/admin.py +57 -0
  25. adminlte_django-0.1.0/demo/crud/apps.py +6 -0
  26. adminlte_django-0.1.0/demo/crud/filters.py +43 -0
  27. adminlte_django-0.1.0/demo/crud/forms.py +36 -0
  28. adminlte_django-0.1.0/demo/crud/management/__init__.py +0 -0
  29. adminlte_django-0.1.0/demo/crud/management/commands/__init__.py +0 -0
  30. adminlte_django-0.1.0/demo/crud/management/commands/seed_demo.py +142 -0
  31. adminlte_django-0.1.0/demo/crud/migrations/0001_initial.py +28 -0
  32. adminlte_django-0.1.0/demo/crud/migrations/0002_company_tag_contact_company_project_task.py +78 -0
  33. adminlte_django-0.1.0/demo/crud/migrations/__init__.py +0 -0
  34. adminlte_django-0.1.0/demo/crud/models.py +114 -0
  35. adminlte_django-0.1.0/demo/crud/tables.py +52 -0
  36. adminlte_django-0.1.0/demo/crud/templates/crud/_actions_column.html +5 -0
  37. adminlte_django-0.1.0/demo/crud/templates/crud/contact_confirm_delete.html +25 -0
  38. adminlte_django-0.1.0/demo/crud/templates/crud/contact_form.html +21 -0
  39. adminlte_django-0.1.0/demo/crud/templates/crud/contact_list.html +23 -0
  40. adminlte_django-0.1.0/demo/crud/templates/crud/project_detail.html +74 -0
  41. adminlte_django-0.1.0/demo/crud/templates/crud/project_list.html +23 -0
  42. adminlte_django-0.1.0/demo/crud/tests.py +115 -0
  43. adminlte_django-0.1.0/demo/crud/urls.py +16 -0
  44. adminlte_django-0.1.0/demo/crud/views.py +84 -0
  45. adminlte_django-0.1.0/demo/dashboard/__init__.py +0 -0
  46. adminlte_django-0.1.0/demo/dashboard/apps.py +6 -0
  47. adminlte_django-0.1.0/demo/dashboard/registry.py +76 -0
  48. adminlte_django-0.1.0/demo/dashboard/templates/showcase/UI/general.html +1215 -0
  49. adminlte_django-0.1.0/demo/dashboard/templates/showcase/UI/icons.html +38 -0
  50. adminlte_django-0.1.0/demo/dashboard/templates/showcase/UI/timeline.html +124 -0
  51. adminlte_django-0.1.0/demo/dashboard/templates/showcase/_standalone.html +17 -0
  52. adminlte_django-0.1.0/demo/dashboard/templates/showcase/components.html +118 -0
  53. adminlte_django-0.1.0/demo/dashboard/templates/showcase/examples/lockscreen.html +50 -0
  54. adminlte_django-0.1.0/demo/dashboard/templates/showcase/examples/login-v2.html +82 -0
  55. adminlte_django-0.1.0/demo/dashboard/templates/showcase/examples/login.html +72 -0
  56. adminlte_django-0.1.0/demo/dashboard/templates/showcase/examples/register-v2.html +91 -0
  57. adminlte_django-0.1.0/demo/dashboard/templates/showcase/examples/register.html +77 -0
  58. adminlte_django-0.1.0/demo/dashboard/templates/showcase/forms/elements.html +337 -0
  59. adminlte_django-0.1.0/demo/dashboard/templates/showcase/forms/layout.html +199 -0
  60. adminlte_django-0.1.0/demo/dashboard/templates/showcase/forms/validation.html +210 -0
  61. adminlte_django-0.1.0/demo/dashboard/templates/showcase/forms/wizard.html +285 -0
  62. adminlte_django-0.1.0/demo/dashboard/templates/showcase/generate/theme.html +885 -0
  63. adminlte_django-0.1.0/demo/dashboard/templates/showcase/index.html +617 -0
  64. adminlte_django-0.1.0/demo/dashboard/templates/showcase/index2.html +1184 -0
  65. adminlte_django-0.1.0/demo/dashboard/templates/showcase/index3.html +439 -0
  66. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/collapsed-sidebar-without-hover.html +51 -0
  67. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/collapsed-sidebar.html +51 -0
  68. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/fixed-complete.html +51 -0
  69. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/fixed-footer.html +51 -0
  70. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/fixed-header.html +51 -0
  71. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/fixed-sidebar.html +51 -0
  72. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/layout-custom-area.html +90 -0
  73. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/layout-rtl.html +51 -0
  74. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/logo-switch.html +51 -0
  75. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/sidebar-mini.html +51 -0
  76. adminlte_django-0.1.0/demo/dashboard/templates/showcase/layout/unfixed-sidebar.html +51 -0
  77. adminlte_django-0.1.0/demo/dashboard/templates/showcase/mailbox/compose.html +83 -0
  78. adminlte_django-0.1.0/demo/dashboard/templates/showcase/mailbox/inbox.html +433 -0
  79. adminlte_django-0.1.0/demo/dashboard/templates/showcase/mailbox/read.html +134 -0
  80. adminlte_django-0.1.0/demo/dashboard/templates/showcase/native/form.html +46 -0
  81. adminlte_django-0.1.0/demo/dashboard/templates/showcase/native/messages-pagination.html +53 -0
  82. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/404.html +42 -0
  83. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/500.html +30 -0
  84. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/calendar.html +195 -0
  85. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/chat.html +358 -0
  86. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/faq.html +315 -0
  87. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/file-manager.html +770 -0
  88. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/invoice.html +131 -0
  89. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/kanban.html +368 -0
  90. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/maintenance.html +33 -0
  91. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/pricing.html +211 -0
  92. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/profile.html +314 -0
  93. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/projects.html +576 -0
  94. adminlte_django-0.1.0/demo/dashboard/templates/showcase/pages/settings.html +319 -0
  95. adminlte_django-0.1.0/demo/dashboard/templates/showcase/tables/data.html +247 -0
  96. adminlte_django-0.1.0/demo/dashboard/templates/showcase/tables/simple.html +347 -0
  97. adminlte_django-0.1.0/demo/dashboard/templates/showcase/widgets/cards.html +268 -0
  98. adminlte_django-0.1.0/demo/dashboard/templates/showcase/widgets/info-box.html +341 -0
  99. adminlte_django-0.1.0/demo/dashboard/templates/showcase/widgets/small-box.html +137 -0
  100. adminlte_django-0.1.0/demo/dashboard/tests.py +18 -0
  101. adminlte_django-0.1.0/demo/dashboard/urls.py +16 -0
  102. adminlte_django-0.1.0/demo/dashboard/views.py +148 -0
  103. adminlte_django-0.1.0/demo/manage.py +21 -0
  104. adminlte_django-0.1.0/demo/package-lock.json +1900 -0
  105. adminlte_django-0.1.0/demo/package.json +30 -0
  106. adminlte_django-0.1.0/demo/requirements.txt +14 -0
  107. adminlte_django-0.1.0/demo/static/adminlte/img/AdminLTEFullLogo.png +0 -0
  108. adminlte_django-0.1.0/demo/static/adminlte/img/avatar.png +0 -0
  109. adminlte_django-0.1.0/demo/static/adminlte/img/avatar2.png +0 -0
  110. adminlte_django-0.1.0/demo/static/adminlte/img/avatar3.png +0 -0
  111. adminlte_django-0.1.0/demo/static/adminlte/img/avatar4.png +0 -0
  112. adminlte_django-0.1.0/demo/static/adminlte/img/avatar5.png +0 -0
  113. adminlte_django-0.1.0/demo/static/adminlte/img/boxed-bg.jpg +0 -0
  114. adminlte_django-0.1.0/demo/static/adminlte/img/boxed-bg.png +0 -0
  115. adminlte_django-0.1.0/demo/static/adminlte/img/credit/american-express.png +0 -0
  116. adminlte_django-0.1.0/demo/static/adminlte/img/credit/cirrus.png +0 -0
  117. adminlte_django-0.1.0/demo/static/adminlte/img/credit/mastercard.png +0 -0
  118. adminlte_django-0.1.0/demo/static/adminlte/img/credit/paypal.png +0 -0
  119. adminlte_django-0.1.0/demo/static/adminlte/img/credit/paypal2.png +0 -0
  120. adminlte_django-0.1.0/demo/static/adminlte/img/credit/visa.png +0 -0
  121. adminlte_django-0.1.0/demo/static/adminlte/img/default-150x150.png +0 -0
  122. adminlte_django-0.1.0/demo/static/adminlte/img/icons.png +0 -0
  123. adminlte_django-0.1.0/demo/static/adminlte/img/photo1.png +0 -0
  124. adminlte_django-0.1.0/demo/static/adminlte/img/photo2.png +0 -0
  125. adminlte_django-0.1.0/demo/static/adminlte/img/photo3.jpg +0 -0
  126. adminlte_django-0.1.0/demo/static/adminlte/img/photo4.jpg +0 -0
  127. adminlte_django-0.1.0/demo/static/adminlte/img/prod-1.jpg +0 -0
  128. adminlte_django-0.1.0/demo/static/adminlte/img/prod-2.jpg +0 -0
  129. adminlte_django-0.1.0/demo/static/adminlte/img/prod-3.jpg +0 -0
  130. adminlte_django-0.1.0/demo/static/adminlte/img/prod-4.jpg +0 -0
  131. adminlte_django-0.1.0/demo/static/adminlte/img/prod-5.jpg +0 -0
  132. adminlte_django-0.1.0/demo/static/adminlte/img/user2-160x160.jpg +0 -0
  133. adminlte_django-0.1.0/demo/static/adminlte/img/user3-128x128.jpg +0 -0
  134. adminlte_django-0.1.0/demo/static/adminlte/img/user4-128x128.jpg +0 -0
  135. adminlte_django-0.1.0/demo/static/adminlte/img/user5-128x128.jpg +0 -0
  136. adminlte_django-0.1.0/demo/static/adminlte/img/user6-128x128.jpg +0 -0
  137. adminlte_django-0.1.0/demo/static/adminlte/img/user7-128x128.jpg +0 -0
  138. adminlte_django-0.1.0/demo/static/adminlte/img/user8-128x128.jpg +0 -0
  139. adminlte_django-0.1.0/demo/vite.config.js +18 -0
  140. adminlte_django-0.1.0/django_adminlte4/__init__.py +13 -0
  141. adminlte_django-0.1.0/django_adminlte4/admin_menu.py +64 -0
  142. adminlte_django-0.1.0/django_adminlte4/apps.py +26 -0
  143. adminlte_django-0.1.0/django_adminlte4/checks.py +135 -0
  144. adminlte_django-0.1.0/django_adminlte4/component_utils.py +105 -0
  145. adminlte_django-0.1.0/django_adminlte4/components/__init__.py +0 -0
  146. adminlte_django-0.1.0/django_adminlte4/components/form/__init__.py +0 -0
  147. adminlte_django-0.1.0/django_adminlte4/components/form/button.html +3 -0
  148. adminlte_django-0.1.0/django_adminlte4/components/form/button.py +35 -0
  149. adminlte_django-0.1.0/django_adminlte4/components/form/input-color.html +5 -0
  150. adminlte_django-0.1.0/django_adminlte4/components/form/input-file.html +5 -0
  151. adminlte_django-0.1.0/django_adminlte4/components/form/input-switch.html +8 -0
  152. adminlte_django-0.1.0/django_adminlte4/components/form/input.html +15 -0
  153. adminlte_django-0.1.0/django_adminlte4/components/form/input.py +38 -0
  154. adminlte_django-0.1.0/django_adminlte4/components/form/input_color.py +30 -0
  155. adminlte_django-0.1.0/django_adminlte4/components/form/input_file.py +33 -0
  156. adminlte_django-0.1.0/django_adminlte4/components/form/input_switch.py +35 -0
  157. adminlte_django-0.1.0/django_adminlte4/components/form/select.html +7 -0
  158. adminlte_django-0.1.0/django_adminlte4/components/form/select.py +34 -0
  159. adminlte_django-0.1.0/django_adminlte4/components/form/textarea.html +5 -0
  160. adminlte_django-0.1.0/django_adminlte4/components/form/textarea.py +29 -0
  161. adminlte_django-0.1.0/django_adminlte4/components/tool/__init__.py +0 -0
  162. adminlte_django-0.1.0/django_adminlte4/components/tool/chart.html +1 -0
  163. adminlte_django-0.1.0/django_adminlte4/components/tool/chart.py +49 -0
  164. adminlte_django-0.1.0/django_adminlte4/components/tool/datatable.html +1 -0
  165. adminlte_django-0.1.0/django_adminlte4/components/tool/datatable.py +42 -0
  166. adminlte_django-0.1.0/django_adminlte4/components/tool/editor.html +7 -0
  167. adminlte_django-0.1.0/django_adminlte4/components/tool/editor.py +36 -0
  168. adminlte_django-0.1.0/django_adminlte4/components/tool/modal.html +17 -0
  169. adminlte_django-0.1.0/django_adminlte4/components/tool/modal.py +38 -0
  170. adminlte_django-0.1.0/django_adminlte4/components/tool/sortable.html +3 -0
  171. adminlte_django-0.1.0/django_adminlte4/components/tool/sortable.py +35 -0
  172. adminlte_django-0.1.0/django_adminlte4/components/tool/vector-map.html +1 -0
  173. adminlte_django-0.1.0/django_adminlte4/components/tool/vector_map.py +42 -0
  174. adminlte_django-0.1.0/django_adminlte4/components/widget/__init__.py +0 -0
  175. adminlte_django-0.1.0/django_adminlte4/components/widget/accordion.html +17 -0
  176. adminlte_django-0.1.0/django_adminlte4/components/widget/accordion.py +38 -0
  177. adminlte_django-0.1.0/django_adminlte4/components/widget/alert.html +5 -0
  178. adminlte_django-0.1.0/django_adminlte4/components/widget/alert.py +28 -0
  179. adminlte_django-0.1.0/django_adminlte4/components/widget/breadcrumb.html +10 -0
  180. adminlte_django-0.1.0/django_adminlte4/components/widget/breadcrumb.py +19 -0
  181. adminlte_django-0.1.0/django_adminlte4/components/widget/callout.html +4 -0
  182. adminlte_django-0.1.0/django_adminlte4/components/widget/callout.py +18 -0
  183. adminlte_django-0.1.0/django_adminlte4/components/widget/card.html +40 -0
  184. adminlte_django-0.1.0/django_adminlte4/components/widget/card.py +48 -0
  185. adminlte_django-0.1.0/django_adminlte4/components/widget/description-block.html +12 -0
  186. adminlte_django-0.1.0/django_adminlte4/components/widget/description_block.py +28 -0
  187. adminlte_django-0.1.0/django_adminlte4/components/widget/direct-chat.html +37 -0
  188. adminlte_django-0.1.0/django_adminlte4/components/widget/direct_chat.py +30 -0
  189. adminlte_django-0.1.0/django_adminlte4/components/widget/info-box.html +16 -0
  190. adminlte_django-0.1.0/django_adminlte4/components/widget/info_box.py +32 -0
  191. adminlte_django-0.1.0/django_adminlte4/components/widget/nav-messages.html +28 -0
  192. adminlte_django-0.1.0/django_adminlte4/components/widget/nav-notifications.html +18 -0
  193. adminlte_django-0.1.0/django_adminlte4/components/widget/nav_messages.py +24 -0
  194. adminlte_django-0.1.0/django_adminlte4/components/widget/nav_notifications.py +25 -0
  195. adminlte_django-0.1.0/django_adminlte4/components/widget/profile-card.html +21 -0
  196. adminlte_django-0.1.0/django_adminlte4/components/widget/profile_card.py +30 -0
  197. adminlte_django-0.1.0/django_adminlte4/components/widget/progress-group.html +9 -0
  198. adminlte_django-0.1.0/django_adminlte4/components/widget/progress.html +5 -0
  199. adminlte_django-0.1.0/django_adminlte4/components/widget/progress.py +35 -0
  200. adminlte_django-0.1.0/django_adminlte4/components/widget/progress_group.py +26 -0
  201. adminlte_django-0.1.0/django_adminlte4/components/widget/ratings.html +3 -0
  202. adminlte_django-0.1.0/django_adminlte4/components/widget/ratings.py +32 -0
  203. adminlte_django-0.1.0/django_adminlte4/components/widget/small-box.html +13 -0
  204. adminlte_django-0.1.0/django_adminlte4/components/widget/small_box.py +25 -0
  205. adminlte_django-0.1.0/django_adminlte4/components/widget/tabs.html +20 -0
  206. adminlte_django-0.1.0/django_adminlte4/components/widget/tabs.py +40 -0
  207. adminlte_django-0.1.0/django_adminlte4/components/widget/timeline.html +20 -0
  208. adminlte_django-0.1.0/django_adminlte4/components/widget/timeline.py +25 -0
  209. adminlte_django-0.1.0/django_adminlte4/components/widget/toast.html +10 -0
  210. adminlte_django-0.1.0/django_adminlte4/components/widget/toast.py +30 -0
  211. adminlte_django-0.1.0/django_adminlte4/conf.py +163 -0
  212. adminlte_django-0.1.0/django_adminlte4/context_processors.py +71 -0
  213. adminlte_django-0.1.0/django_adminlte4/forms.py +51 -0
  214. adminlte_django-0.1.0/django_adminlte4/frontend/adminlte-plugins.js.stub +81 -0
  215. adminlte_django-0.1.0/django_adminlte4/frontend/app.js.stub +29 -0
  216. adminlte_django-0.1.0/django_adminlte4/frontend/app.scss.stub +12 -0
  217. adminlte_django-0.1.0/django_adminlte4/frontend/package.json.stub +21 -0
  218. adminlte_django-0.1.0/django_adminlte4/frontend/vite.config.stub.js +20 -0
  219. adminlte_django-0.1.0/django_adminlte4/locale/es/LC_MESSAGES/django.mo +0 -0
  220. adminlte_django-0.1.0/django_adminlte4/locale/es/LC_MESSAGES/django.po +330 -0
  221. adminlte_django-0.1.0/django_adminlte4/management/__init__.py +0 -0
  222. adminlte_django-0.1.0/django_adminlte4/management/commands/__init__.py +0 -0
  223. adminlte_django-0.1.0/django_adminlte4/management/commands/adminlte_install.py +82 -0
  224. adminlte_django-0.1.0/django_adminlte4/management/commands/adminlte_make_auth.py +95 -0
  225. adminlte_django-0.1.0/django_adminlte4/management/commands/adminlte_scaffold.py +153 -0
  226. adminlte_django-0.1.0/django_adminlte4/management/commands/adminlte_status.py +69 -0
  227. adminlte_django-0.1.0/django_adminlte4/menu/__init__.py +3 -0
  228. adminlte_django-0.1.0/django_adminlte4/menu/builder.py +84 -0
  229. adminlte_django-0.1.0/django_adminlte4/menu/filters.py +221 -0
  230. adminlte_django-0.1.0/django_adminlte4/menu/helpers.py +49 -0
  231. adminlte_django-0.1.0/django_adminlte4/py.typed +0 -0
  232. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/adminlte-admin.css +41 -0
  233. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/adminlte.min.css +6 -0
  234. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/adminlte.overrides.css +33 -0
  235. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/adminlte.rtl.min.css +6 -0
  236. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/bootstrap-icons.min.css +5 -0
  237. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/fonts/bootstrap-icons.woff +0 -0
  238. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/fonts/bootstrap-icons.woff2 +0 -0
  239. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/css/overlayscrollbars.min.css +9 -0
  240. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/js/adminlte.init.js +74 -0
  241. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/js/adminlte.min.js +6 -0
  242. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/js/bootstrap.bundle.min.js +6 -0
  243. adminlte_django-0.1.0/django_adminlte4/static/adminlte/dist/js/overlayscrollbars.browser.es6.min.js +10 -0
  244. adminlte_django-0.1.0/django_adminlte4/static/adminlte/img/AdminLTELogo.png +0 -0
  245. adminlte_django-0.1.0/django_adminlte4/static/adminlte/img/user1-128x128.jpg +0 -0
  246. adminlte_django-0.1.0/django_adminlte4/templates/admin/base.html +170 -0
  247. adminlte_django-0.1.0/django_adminlte4/templates/admin/base_site.html +6 -0
  248. adminlte_django-0.1.0/django_adminlte4/templates/admin/login.html +64 -0
  249. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/auth/_form.html +17 -0
  250. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/auth/auth-master.html +31 -0
  251. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/auth/lockscreen.html +23 -0
  252. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/auth/login.html +55 -0
  253. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/auth/register.html +40 -0
  254. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/forms/_help_and_errors.html +6 -0
  255. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/forms/div.html +20 -0
  256. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/forms/field.html +23 -0
  257. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/master.html +51 -0
  258. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/page.html +21 -0
  259. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/_assets_prebuilt.html +16 -0
  260. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/_assets_vite.html +9 -0
  261. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/_breadcrumb_items.html +8 -0
  262. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/color-mode.html +30 -0
  263. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/footer.html +7 -0
  264. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/language-menu.html +30 -0
  265. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/menu-item.html +41 -0
  266. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/messages.html +15 -0
  267. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/navbar-messages.html +28 -0
  268. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/navbar-notifications.html +19 -0
  269. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/navbar.html +61 -0
  270. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/pagination.html +31 -0
  271. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/preloader.html +6 -0
  272. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/sidebar.html +41 -0
  273. adminlte_django-0.1.0/django_adminlte4/templates/adminlte/partials/usermenu.html +56 -0
  274. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/alert.html +4 -0
  275. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/button.html +11 -0
  276. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/field.html +20 -0
  277. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/fields.html +23 -0
  278. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/form.html +9 -0
  279. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/h1.html +1 -0
  280. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/h2.html +1 -0
  281. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/hr.html +1 -0
  282. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/p.html +1 -0
  283. adminlte_django-0.1.0/django_adminlte4/templates/allauth/elements/panel.html +8 -0
  284. adminlte_django-0.1.0/django_adminlte4/templates/allauth/layouts/base.html +17 -0
  285. adminlte_django-0.1.0/django_adminlte4/templates/allauth/layouts/entrance.html +16 -0
  286. adminlte_django-0.1.0/django_adminlte4/templates/allauth/layouts/manage.html +16 -0
  287. adminlte_django-0.1.0/django_adminlte4/templates/django_tables2/adminlte.html +17 -0
  288. adminlte_django-0.1.0/django_adminlte4/templates/registration/logged_out.html +6 -0
  289. adminlte_django-0.1.0/django_adminlte4/templates/registration/login.html +2 -0
  290. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_change_done.html +6 -0
  291. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_change_form.html +9 -0
  292. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_reset_complete.html +6 -0
  293. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_reset_confirm.html +14 -0
  294. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_reset_done.html +6 -0
  295. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_reset_email.html +10 -0
  296. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_reset_form.html +10 -0
  297. adminlte_django-0.1.0/django_adminlte4/templates/registration/password_reset_subject.txt +1 -0
  298. adminlte_django-0.1.0/django_adminlte4/templatetags/__init__.py +0 -0
  299. adminlte_django-0.1.0/django_adminlte4/templatetags/adminlte.py +171 -0
  300. adminlte_django-0.1.0/docs/admin.md +46 -0
  301. adminlte_django-0.1.0/docs/assets.md +58 -0
  302. adminlte_django-0.1.0/docs/auth.md +48 -0
  303. adminlte_django-0.1.0/docs/changelog.md +3 -0
  304. adminlte_django-0.1.0/docs/commands.md +32 -0
  305. adminlte_django-0.1.0/docs/components.md +88 -0
  306. adminlte_django-0.1.0/docs/configuration.md +149 -0
  307. adminlte_django-0.1.0/docs/demo.md +54 -0
  308. adminlte_django-0.1.0/docs/deployment.md +44 -0
  309. adminlte_django-0.1.0/docs/extras.md +45 -0
  310. adminlte_django-0.1.0/docs/forms.md +84 -0
  311. adminlte_django-0.1.0/docs/i18n.md +45 -0
  312. adminlte_django-0.1.0/docs/index.md +71 -0
  313. adminlte_django-0.1.0/docs/installation.md +123 -0
  314. adminlte_django-0.1.0/docs/layout.md +70 -0
  315. adminlte_django-0.1.0/docs/menu.md +96 -0
  316. adminlte_django-0.1.0/docs/screenshots/dashboard-dark.png +0 -0
  317. adminlte_django-0.1.0/docs/screenshots/dashboard-light.png +0 -0
  318. adminlte_django-0.1.0/docs/screenshots/dashboardpack/admindek.png +0 -0
  319. adminlte_django-0.1.0/docs/screenshots/dashboardpack/apex.png +0 -0
  320. adminlte_django-0.1.0/docs/screenshots/dashboardpack/haze.png +0 -0
  321. adminlte_django-0.1.0/docs/screenshots/dashboardpack/svelteforge.png +0 -0
  322. adminlte_django-0.1.0/docs/screenshots/dashboardpack/tailpanel.png +0 -0
  323. adminlte_django-0.1.0/docs/screenshots/dashboardpack/zenith.png +0 -0
  324. adminlte_django-0.1.0/docs/tables.md +68 -0
  325. adminlte_django-0.1.0/mkdocs.yml +82 -0
  326. adminlte_django-0.1.0/pyproject.toml +68 -0
  327. adminlte_django-0.1.0/tests/__init__.py +0 -0
  328. adminlte_django-0.1.0/tests/settings.py +84 -0
  329. adminlte_django-0.1.0/tests/test_admin_theme.py +87 -0
  330. adminlte_django-0.1.0/tests/test_breadcrumb.py +31 -0
  331. adminlte_django-0.1.0/tests/test_checks.py +56 -0
  332. adminlte_django-0.1.0/tests/test_commands.py +46 -0
  333. adminlte_django-0.1.0/tests/test_components.py +63 -0
  334. adminlte_django-0.1.0/tests/test_components_v2.py +80 -0
  335. adminlte_django-0.1.0/tests/test_conf.py +29 -0
  336. adminlte_django-0.1.0/tests/test_context_processor.py +24 -0
  337. adminlte_django-0.1.0/tests/test_forms_renderer.py +62 -0
  338. adminlte_django-0.1.0/tests/test_i18n.py +24 -0
  339. adminlte_django-0.1.0/tests/test_menu.py +143 -0
  340. adminlte_django-0.1.0/tests/test_native.py +57 -0
  341. adminlte_django-0.1.0/tests/test_navbar.py +78 -0
  342. adminlte_django-0.1.0/tests/urls.py +10 -0
@@ -0,0 +1,37 @@
1
+ # Python (anchored to repo root: the package intentionally ships
2
+ # django_adminlte4/static/adminlte/dist/, which must NOT be ignored)
3
+ __pycache__/
4
+ *.py[cod]
5
+ *.egg-info/
6
+ .eggs/
7
+ /build/
8
+ /dist/
9
+ .venv/
10
+ venv/
11
+
12
+ # Django
13
+ *.sqlite3
14
+ staticfiles/
15
+ db.sqlite3
16
+
17
+ # Secrets / local env (.env.example is committed)
18
+ .env
19
+
20
+ # Node / Vite
21
+ node_modules/
22
+ **/assets/dist/
23
+ .vite/
24
+
25
+ # OS / editors
26
+ .DS_Store
27
+ *.map
28
+ .idea/
29
+ .vscode/
30
+
31
+ # Test / coverage
32
+ .pytest_cache/
33
+ .coverage
34
+ htmlcov/
35
+
36
+ # MkDocs build output
37
+ site/
@@ -0,0 +1,169 @@
1
+ # Changelog
2
+
3
+ All notable changes to `django-adminlte4` are documented here. The format is
4
+ based on [Keep a Changelog](https://keepachangelog.com/).
5
+
6
+ ## [Unreleased]
7
+
8
+ ### Added — performance & Django-native rendering
9
+
10
+ - `AdminLTEFormRenderer` — set
11
+ `FORM_RENDERER = "django_adminlte4.forms.AdminLTEFormRenderer"` and plain
12
+ `{{ form }}` renders AdminLTE/Bootstrap 5 markup project-wide: per-widget-type
13
+ classes (`form-control` / `form-select` / `form-check-input` / `form-range`),
14
+ `is-invalid` + `invalid-feedback` validation states, `form-text` help text and
15
+ non-field errors as an alert. Widget templates fall back to Django's built-in
16
+ form engine, so `django.forms` is **not** required in `INSTALLED_APPS`.
17
+ - Django **system checks** replacing the startup warning: `adminlte.W001`
18
+ (unknown config key), `adminlte.E002` (django-components loader missing — the
19
+ `APP_DIRS=True` footgun, now with an actionable hint), `adminlte.W003`
20
+ (malformed or misspelled menu items), `adminlte.W004` (context processor not
21
+ configured).
22
+ - `ADMINLTE["language_switcher"]` — topbar dropdown posting to Django's
23
+ `set_language` view.
24
+ - `py.typed` marker — the package's type annotations are now visible to
25
+ mypy/pyright.
26
+ - `GateFilter` recurses into submenus: unauthorized children are pruned, and a
27
+ parent left with no children (and no link of its own) is dropped.
28
+ - `ActiveFilter` derives auto-active patterns from the resolved `href`, so
29
+ `route:`-based items get active detection too.
30
+
31
+ ### Changed — performance
32
+
33
+ - The merged `ADMINLTE` config is computed once per process (invalidated via
34
+ `setting_changed`); the default footer copyright year is evaluated lazily at
35
+ render time instead of import time.
36
+ - Menus are built lazily (`SimpleLazyObject`) — pages that never render a
37
+ sidebar/navbar skip the build entirely — and the filter pipeline is split:
38
+ request-independent filters (`HrefFilter`, `SearchFilter`) run once per
39
+ process (per active language), so `reverse()` no longer re-runs per request.
40
+ Custom filters keep per-request semantics via `per_request = True` (default).
41
+ - Wildcard active-state patterns are compiled once (`lru_cache`) instead of per
42
+ item per request.
43
+ - The demo front-end is code-split: ApexCharts, jsVectorMap, Tabulator, Quill,
44
+ SortableJS and FullCalendar load on demand via `adminlteUse()` dynamic
45
+ imports; the always-loaded core drops to ~46 kB gzipped. The chart-refit
46
+ `setTimeout` hack was replaced by a width-guarded `ResizeObserver`.
47
+ - Demo-only sample images (~2.9 MB) moved out of the pip package into
48
+ `demo/static/`.
49
+
50
+ ### Changed — demo
51
+
52
+ - Dashboard v1 is data-driven: ORM-fed small boxes linking to the CRUD views
53
+ and themed admin, plus an activity chart fetching six months of aggregates
54
+ from `/api/dashboard/activity.json`.
55
+ - The sidebar menu uses named routes (`route:`) for all internal items, and a
56
+ **STAFF ONLY** section showcases `GateFilter` (callable + permission-string
57
+ gating) — log in with the pre-filled credentials to see it appear.
58
+ - New `/native/form` page demonstrating the form renderer; the language
59
+ switcher is enabled with an English/Español `LANGUAGES` list.
60
+ - `seed_demo` spreads project start dates across ~5 months so the dashboard
61
+ chart has a curve.
62
+
63
+ ### Added — v1 (core)
64
+
65
+ - AdminLTE 4 base layout (`adminlte/master.html`, `adminlte/page.html`) with
66
+ navbar, sidebar, footer, color-mode toggle and user menu partials.
67
+ - Config-driven sidebar/topnav menu via `settings.ADMINLTE["menu"]` with a
68
+ per-request filter pipeline (`GateFilter`, `HrefFilter`, `ActiveFilter`,
69
+ `SearchFilter`) — a faithful port of the Laravel package's menu system.
70
+ - Settings surface (`settings.ADMINLTE`) mirroring `config/adminlte.php`, merged
71
+ over defaults by `django_adminlte4.conf`.
72
+ - Context processor exposing config + per-request menus; `adminlte_body_classes`
73
+ and `adminlte_title` template tags; an `add_class` form-field filter.
74
+ - Form components: `adminlte_input`, `adminlte_textarea`, `adminlte_select`,
75
+ `adminlte_input_switch`, `adminlte_input_color`, `adminlte_input_file`,
76
+ `adminlte_button` — with bound-field validation feedback + value repopulation.
77
+ - Widget components: `adminlte_card`, `adminlte_small_box`, `adminlte_info_box`,
78
+ `adminlte_alert`, `adminlte_callout`, `adminlte_progress`,
79
+ `adminlte_progress_group`, `adminlte_timeline`, `adminlte_description_block`,
80
+ `adminlte_profile_card`, `adminlte_ratings`, `adminlte_breadcrumb`.
81
+ - Auth templates (login/register/lockscreen) wired to Django's auth views.
82
+ - Rich, data-driven topbar: Messages and Notifications dropdowns plus a full
83
+ user card, configured via `ADMINLTE["navbar_messages"]`,
84
+ `["navbar_notifications"]` and `["usermenu"]` (each optional). Falls back to a
85
+ Django-user-driven menu when `usermenu` is omitted. Added `logo_alt_text` and
86
+ `navbar_search` config keys.
87
+ - Vite front-end pipeline (django-vite) with `npm`-installed `admin-lte`.
88
+ - Management commands: `adminlte_install`, `adminlte_status`,
89
+ `adminlte_make_auth`, `adminlte_scaffold`.
90
+ - Demo project showcasing the layout, menu, components and auth flow.
91
+
92
+ ### Added — v2 (interactive + plugin-backed components)
93
+
94
+ - Bootstrap components: `adminlte_modal`, `adminlte_toast`, `adminlte_tabs`,
95
+ `adminlte_accordion`, `adminlte_direct_chat`, `adminlte_nav_messages`,
96
+ `adminlte_nav_notifications`.
97
+ - Plugin-backed Tool components emitting `data-*` + JSON-config containers:
98
+ `adminlte_chart` (ApexCharts), `adminlte_vector_map` (jsVectorMap),
99
+ `adminlte_datatable` (Tabulator), `adminlte_editor` (Quill),
100
+ `adminlte_sortable` (SortableJS).
101
+ - Plugin initializer (`frontend/adminlte-plugins.js.stub`, installed to
102
+ `assets/adminlte-plugins.js`) that lazily imports each library only when a
103
+ matching element is present. Wired into `app.js.stub` and the demo bundle.
104
+ - Demo "Components (v2)" showcase page exercising all of the above.
105
+
106
+ ### Added — Django-native integration
107
+
108
+ - **Themed Django admin**: `django.contrib.admin` skinned with the AdminLTE
109
+ shell; the sidebar is auto-built from the registered apps/models through the
110
+ same menu builder + filter pipeline (honours per-user view permissions +
111
+ active state). Configurable via `ADMINLTE["admin_brand"]` / `["admin_menu"]`.
112
+ - **Node-optional assets**: a pre-built bundle ships in `static/adminlte/dist/`;
113
+ `ADMINLTE["assets_mode"]="static"` serves it with no Vite/npm (django-vite is
114
+ only imported in `"vite"` mode).
115
+ - **Messages → alerts**: `partials/messages.html` renders the messages framework
116
+ as dismissible AdminLTE alerts (level → class + icon, error → danger).
117
+ - **Pagination**: reusable `partials/pagination.html` from a `Paginator`
118
+ `page_obj`, preserving the current query string.
119
+ - **Built-in auth**: AdminLTE-themed `registration/` templates (login, logout,
120
+ password change + the full password-reset flow) on the auth shell.
121
+ - **django-tables2 / django-filter** (`[tables]` extra): a
122
+ `django_tables2/adminlte.html` theme (card wrapper + footer pagination) plus a
123
+ demo `crud` app proving list/filter/create/update/delete end to end.
124
+ - **crispy-forms** (`[crispy]` extra): one-line `{% crispy form %}` whole-form
125
+ rendering via the crispy-bootstrap5 pack.
126
+ - **django-allauth** (`[allauth]` extra): AdminLTE-themed allauth layouts
127
+ (`base` / `entrance` / `manage`) and elements (fields, field, form, button,
128
+ alert, h1/h2, p, hr, panel).
129
+ - **Auto-breadcrumbs**: `{% adminlte_breadcrumb %}` derives crumbs from
130
+ `request.path`; the default content of `page.html`'s breadcrumb block.
131
+ - **i18n**: a package message catalog with a fully-translated Spanish (`es`)
132
+ locale (compiled `.mo`), shipped via `MANIFEST.in`.
133
+ - **Self-hosted demo**: every front-end plugin (ApexCharts, jsVectorMap,
134
+ Tabulator, SortableJS, FullCalendar) loads from the Vite bundle — no CDN.
135
+
136
+ ### Added — production starter (demo)
137
+
138
+ - Twelve-factor settings via `django-environ`: `SECRET_KEY`, `DEBUG`,
139
+ `ALLOWED_HOSTS`, `DATABASE_URL`, `EMAIL_URL`, `CSRF_TRUSTED_ORIGINS` from the
140
+ environment, with a git-ignored `.env` (see `.env.example`).
141
+ - SQLite by default, **PostgreSQL-ready** via `DATABASE_URL`; console email by
142
+ default, SMTP via `EMAIL_URL`.
143
+ - **WhiteNoise** compressed + manifest static storage in production (plain
144
+ storage in dev); production security hardening (HSTS, SSL redirect, secure
145
+ cookies, nosniff) auto-enabled when `DEBUG=False`.
146
+ - `demo/requirements.txt` (package + extras + `django-environ`/`whitenoise`/
147
+ `gunicorn`) and a deployment section in the README.
148
+ - Stripped `sourceMappingURL` comments from the shipped `static/adminlte/dist`
149
+ bundle so `collectstatic` with manifest storage succeeds without `.map` files.
150
+
151
+ ### Added — relational demo data
152
+
153
+ - A small relational schema in the demo `crud` app: `Company`, `Contact` (now
154
+ linked to a Company), `Tag`, `Project` (FK company + lead, M2M team + tags)
155
+ and `Task` (FK project + assignee) — exercising FK, reverse-FK and M2M.
156
+ - Themed admin registrations with an inline (Tasks on Project), autocomplete
157
+ fields and list filters, so the relational model is fully manageable in the
158
+ AdminLTE-skinned admin.
159
+ - `seed_demo` management command — deterministic, idempotent sample data (6
160
+ companies, 24 contacts, 6 tags, 10 projects, 40 tasks) plus an optional demo
161
+ superuser (`admin` / `adminpass`).
162
+ - Front-end **Projects** list (django-tables2 + filter) and a detail page
163
+ rendering the related company, lead, team, tags and tasks.
164
+
165
+ ### Still deferred
166
+
167
+ - Additional locales beyond English + Spanish (the extraction structure ships;
168
+ run `makemessages` to add more).
169
+ - The form Wizard as a dedicated component (the 1:1 demo page covers it).
@@ -0,0 +1,74 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## What this is
6
+
7
+ `django-adminlte4` — the official AdminLTE 4 (Bootstrap 5.3, vanilla JS) integration for Django 6+/Python 3.12+, by Colorlib. It is a deliberate port of ColorlibHQ's **Laravel AdminLTE package**: `conf.py` mirrors `config/adminlte.php`, and the menu filter pipeline mirrors the Laravel `filters` array. When designing new features, parity with the Laravel package is the reference point.
8
+
9
+ Three top-level pieces:
10
+
11
+ - `django_adminlte4/` — the installable package (published as `django-adminlte4`)
12
+ - `demo/` — a full Django project showcasing the package; deployed live at django.adminlte.io
13
+ - `docs/` — MkDocs Material documentation site, served at django.adminlte.io/docs
14
+
15
+ ## Commands
16
+
17
+ A virtualenv exists at `.venv/` (repo root). Pytest config lives in `pyproject.toml` (`DJANGO_SETTINGS_MODULE = "tests.settings"`).
18
+
19
+ ```bash
20
+ # Tests (run from repo root)
21
+ .venv/bin/python -m pytest # all (~160 tests)
22
+ .venv/bin/python -m pytest tests/test_menu.py # one file
23
+ .venv/bin/python -m pytest tests/test_menu.py -k active # by keyword
24
+
25
+ # Demo (from demo/)
26
+ python manage.py runserver
27
+ python manage.py seed_demo # seed CRUD demo data
28
+ npm run build # Vite build → demo/assets/dist (required before runserver if dist is missing)
29
+ npm run dev # Vite dev server on :5173 (django-vite HMR)
30
+
31
+ # Docs (from repo root)
32
+ pip install -e .[docs]
33
+ mkdocs serve # http://127.0.0.1:8000
34
+
35
+ # Install for development
36
+ pip install -e .[test] # package + pytest
37
+ cd demo && pip install -r requirements.txt # demo: installs -e ..[tables,crispy,allauth] + env/whitenoise/gunicorn
38
+ ```
39
+
40
+ ## Architecture
41
+
42
+ ### Configuration → context processor → templates
43
+
44
+ Downstream projects configure everything through a single `ADMINLTE = {...}` dict in Django settings. `django_adminlte4/conf.py` shallow-merges it over `DEFAULTS` (`menu` and `plugins` replaced wholesale). `context_processors.adminlte` runs **once per request**: it builds the menu via `MenuBuilder` and exposes `adminlte` (merged config), `adminlte_menu_sidebar`, `adminlte_menu_navbar_left/right` to every template.
45
+
46
+ ### Menu filter pipeline (the core Django feature)
47
+
48
+ `django_adminlte4/menu/builder.py` deep-copies each raw menu item and threads it through an ordered filter chain (`menu/filters.py`): **Gate → Href → Active → Search**. Any filter returning `None` drops the item. Filters receive the request, which is why the builder is per-request, not a singleton. `admin_menu.py` converts `django.contrib.admin`'s app/model registry into menu-item dicts and feeds them through the *same* pipeline, so the themed admin sidebar gets href resolution and active-state for free. Projects can add custom filters via `ADMINLTE["filters"]`.
49
+
50
+ ### Components
51
+
52
+ ~33 [django-components](https://github.com/django-components/django-components) in three families under `django_adminlte4/components/`: `form/` (input, select, button…), `widget/` (card, small-box, timeline…), `tool/` (chart, datatable, modal… — mostly v2 scope). Each component is a `.py` + `.html` pair. The shared pattern lives in `component_utils.py` (intentionally *outside* `components/` so autodiscovery doesn't import it as a component): `extract_props()` splits kwargs into declared props vs. pass-through HTML attributes (the equivalent of Blade's `$attributes->merge()`), with `data_*`/`aria_*` normalized to hyphenated names. Follow this pattern for any new component.
53
+
54
+ ### Templates
55
+
56
+ `django_adminlte4/templates/` overrides, in order of interest: `adminlte/` (the `master.html`/`page.html` base layout + partials), `admin/` (themed django.contrib.admin), `registration/` (Django auth views), `allauth/` (layouts + elements for django-allauth), `django_tables2/adminlte.html` (set as `DJANGO_TABLES2_TEMPLATE`). Optional integrations are extras in `pyproject.toml`: `[tables]`, `[crispy]`, `[allauth]`.
57
+
58
+ ### Frontend assets
59
+
60
+ The package ships a prebuilt bundle in `django_adminlte4/static/adminlte/dist/` — this is **committed on purpose** (see the anchored `.gitignore` rules; only `/assets/dist/` in project roots is ignored). For Vite-based projects, `management/commands/adminlte_install.py` copies the `frontend/*.stub` files (app.js, app.scss, vite.config) into the user's project; the demo's `demo/assets/` + `demo/vite.config.js` is the worked example (build output → `demo/assets/dist`, picked up via `STATICFILES_DIRS` + django-vite manifest). Other commands: `adminlte_status`, `adminlte_scaffold` (CRUD app), `adminlte_make_auth` (auth app).
61
+
62
+ ### Critical settings gotcha
63
+
64
+ `TEMPLATES[0]["APP_DIRS"]` **must be `False`** with an explicit `loaders` list including `django_components.template_loader.Loader` (django-components requirement). `tests/settings.py` and `demo/config/settings.py` are the canonical examples — keep them, the README snippet, and `docs/installation.md` in sync when settings requirements change.
65
+
66
+ ### Demo project layout
67
+
68
+ `demo/config/menu.py` defines the sidebar 1:1 with the upstream AdminLTE HTML demo. Apps: `dashboard/` (showcase pages + `registry.py`), `crud/` (Contacts/Projects — django-tables2 + django-filter + crispy forms, the "Django-native" exhibits), `accounts/` (auth pages). The demo starts logged out with pre-filled login credentials.
69
+
70
+ ## Conventions
71
+
72
+ - v1 scope is layout, menu, auth, Form + Widget components; Tool/plugin components (datatable, charts, calendar, …) are v2 — see `ROADMAP.md` before adding features.
73
+ - Docstrings frequently cite the Laravel counterpart being ported; keep doing this for new ports.
74
+ - Update `CHANGELOG.md` and the relevant `docs/*.md` page alongside feature changes; `docs/changelog.md` mirrors the root changelog.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2014-2026 ColorlibHQ
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.
@@ -0,0 +1,7 @@
1
+ include LICENSE README.md CHANGELOG.md
2
+ recursive-include django_adminlte4/templates *
3
+ recursive-include django_adminlte4/components *.html
4
+ recursive-include django_adminlte4/static *
5
+ recursive-include django_adminlte4/frontend *
6
+ recursive-include django_adminlte4/locale *
7
+ global-exclude __pycache__ *.py[cod]