django-unfold 0.37.0__tar.gz → 0.38.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. django_unfold-0.38.0/PKG-INFO +70 -0
  2. django_unfold-0.38.0/README.md +45 -0
  3. {django_unfold-0.37.0 → django_unfold-0.38.0}/pyproject.toml +1 -1
  4. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/admin.py +2 -1
  5. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +1 -1
  6. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +1 -1
  7. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +1 -1
  8. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +1 -1
  9. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +4 -4
  10. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +6 -6
  11. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +5 -5
  12. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +5 -5
  13. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +1 -1
  14. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +1 -1
  15. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +1 -1
  16. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +8 -8
  17. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +1 -1
  18. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/settings.py +26 -1
  19. django_unfold-0.38.0/src/unfold/static/unfold/css/styles.css +1 -0
  20. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/styles.css +1 -1
  21. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/app_list.html +2 -2
  22. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_list.html +1 -6
  23. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_list_results.html +2 -2
  24. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/delete_confirmation.html +5 -5
  25. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/delete_selected_confirmation.html +5 -5
  26. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/edit_inline/stacked.html +2 -2
  27. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/edit_inline/tabular.html +3 -3
  28. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/filter.html +1 -1
  29. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/includes/fieldset.html +1 -1
  30. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/includes/object_delete_summary.html +1 -1
  31. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/login.html +2 -2
  32. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/search_form.html +1 -1
  33. django_unfold-0.38.0/src/unfold/templates/auth/widgets/read_only_password_hash.html +13 -0
  34. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/registration/logged_out.html +1 -1
  35. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/change_list_filter.html +19 -3
  36. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/card.html +1 -1
  37. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/navigation.html +1 -1
  38. django_unfold-0.38.0/src/unfold/templates/unfold/components/title.html +3 -0
  39. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/actions_row.html +1 -1
  40. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/app_list.html +7 -7
  41. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +2 -2
  42. django_unfold-0.38.0/src/unfold/templates/unfold/helpers/form_label.html +7 -0
  43. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages.html +1 -1
  44. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/navigation.html +1 -1
  45. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/search.html +1 -1
  46. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/tab_action.html +1 -1
  47. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +3 -3
  48. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/layouts/skeleton.html +1 -1
  49. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +2 -2
  50. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +1 -1
  51. django_unfold-0.38.0/src/unfold/templates/unfold/widgets/url.html +7 -0
  52. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templatetags/unfold_list.py +0 -7
  53. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/widgets.py +26 -6
  54. django_unfold-0.37.0/PKG-INFO +0 -1455
  55. django_unfold-0.37.0/README.md +0 -1430
  56. django_unfold-0.37.0/src/unfold/static/unfold/css/styles.css +0 -1
  57. django_unfold-0.37.0/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -13
  58. django_unfold-0.37.0/src/unfold/templates/unfold/components/title.html +0 -3
  59. django_unfold-0.37.0/src/unfold/templates/unfold/helpers/form_label.html +0 -7
  60. {django_unfold-0.37.0 → django_unfold-0.38.0}/LICENSE.md +0 -0
  61. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/__init__.py +0 -0
  62. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/apps.py +0 -0
  63. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/checks.py +0 -0
  64. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/__init__.py +0 -0
  65. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/__init__.py +0 -0
  66. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/admin.py +0 -0
  67. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/apps.py +0 -0
  68. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/forms.py +0 -0
  69. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css +0 -0
  70. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
  71. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
  72. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider.min.js +0 -0
  73. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/wNumb.min.js +0 -0
  74. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
  75. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/__init__.py +0 -0
  76. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/apps.py +0 -0
  77. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix.css +0 -0
  78. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
  79. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -0
  80. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
  81. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
  82. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/widgets.py +0 -0
  83. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/__init__.py +0 -0
  84. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/apps.py +0 -0
  85. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
  86. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
  87. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -0
  88. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +0 -0
  89. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +0 -0
  90. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/__init__.py +0 -0
  91. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/apps.py +0 -0
  92. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/forms.py +0 -0
  93. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
  94. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
  95. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
  96. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
  97. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
  98. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -0
  99. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +0 -0
  100. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
  101. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
  102. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
  103. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
  104. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
  105. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/__init__.py +0 -0
  106. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/admin.py +0 -0
  107. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/apps.py +0 -0
  108. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/checks.py +0 -0
  109. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/forms.py +0 -0
  110. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
  111. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/apps.py +0 -0
  112. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -0
  113. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/dataclasses.py +0 -0
  114. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/decorators.py +0 -0
  115. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/exceptions.py +0 -0
  116. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/fields.py +0 -0
  117. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/forms.py +0 -0
  118. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/sites.py +0 -0
  119. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/css/simplebar.css +0 -0
  120. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
  121. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
  122. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
  123. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
  124. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
  125. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
  126. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
  127. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/alpine.anchor.js +0 -0
  128. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/alpine.js +0 -0
  129. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/alpine.persist.js +0 -0
  130. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/app.js +0 -0
  131. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/chart.js +0 -0
  132. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/htmx.js +0 -0
  133. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/select2.init.js +0 -0
  134. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/simplebar.js +0 -0
  135. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/actions.html +0 -0
  136. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/app_index.html +0 -0
  137. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
  138. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/auth/user/change_password.html +0 -0
  139. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/base.html +0 -0
  140. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/base_site.html +0 -0
  141. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_form.html +0 -0
  142. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
  143. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
  144. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
  145. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/index.html +0 -0
  146. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
  147. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/object_history.html +0 -0
  148. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/pagination.html +0 -0
  149. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/admin/submit_line.html +0 -0
  150. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/registration/password_change_done.html +0 -0
  151. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/registration/password_change_form.html +0 -0
  152. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/button.html +0 -0
  153. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
  154. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
  155. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/container.html +0 -0
  156. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/flex.html +0 -0
  157. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/icon.html +0 -0
  158. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/progress.html +0 -0
  159. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/separator.html +0 -0
  160. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/table.html +0 -0
  161. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/text.html +0 -0
  162. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
  163. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
  164. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
  165. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
  166. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
  167. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
  168. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/display_header.html +0 -0
  169. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
  170. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
  171. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
  172. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -0
  173. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +0 -0
  174. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
  175. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
  176. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
  177. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
  178. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/label.html +0 -0
  179. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
  180. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
  181. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
  182. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
  183. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
  184. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
  185. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
  186. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
  187. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
  188. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/tab_list.html +0 -0
  189. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
  190. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
  191. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
  192. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
  193. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
  194. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
  195. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
  196. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/radio_option.html +0 -0
  197. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
  198. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
  199. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
  200. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
  201. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
  202. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
  203. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/textarea_expandable.html +0 -0
  204. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
  205. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templatetags/__init__.py +0 -0
  206. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/templatetags/unfold.py +0 -0
  207. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/typing.py +0 -0
  208. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/utils.py +0 -0
  209. {django_unfold-0.37.0 → django_unfold-0.38.0}/src/unfold/views.py +0 -0
@@ -0,0 +1,70 @@
1
+ Metadata-Version: 2.1
2
+ Name: django-unfold
3
+ Version: 0.38.0
4
+ Summary: Modern Django admin theme for seamless interface development
5
+ Home-page: https://unfoldadmin.com
6
+ License: MIT
7
+ Keywords: django,admin,tailwind,theme
8
+ Requires-Python: >=3.8
9
+ Classifier: Environment :: Web Environment
10
+ Classifier: Framework :: Django
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Requires-Dist: django (>=3.2)
22
+ Project-URL: Repository, https://github.com/unfoldadmin/django-unfold
23
+ Description-Content-Type: text/markdown
24
+
25
+ [![screenshot-light](https://github.com/unfoldadmin/django-unfold/assets/10785882/291e69c9-abdd-4f7e-a0d6-2af210a9013a#gh-light-mode-only)](https://github.com/unfoldadmin/django-unfold/assets/10785882/291e69c9-abdd-4f7e-a0d6-2af210a9013a#gh-light-mode-only)
26
+
27
+ [![screenshot-dark](https://github.com/unfoldadmin/django-unfold/assets/10785882/94a2e90f-924a-4aaf-b6d9-cb1592000c55#gh-dark-mode-only)](https://github.com/unfoldadmin/django-unfold/assets/10785882/94a2e90f-924a-4aaf-b6d9-cb1592000c55#gh-dark-mode-only)
28
+
29
+ ## Unfold Django Admin Theme
30
+
31
+ [![Build](https://img.shields.io/github/actions/workflow/status/unfoldadmin/django-unfold/release.yml?style=for-the-badge)](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
32
+ [![PyPI - Version](https://img.shields.io/pypi/v/django-unfold.svg?style=for-the-badge)](https://pypi.org/project/django-unfold/)
33
+ ![Code Style - Ruff](https://img.shields.io/badge/code%20style-ruff-30173D.svg?style=for-the-badge)
34
+ ![Pre Commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge)
35
+
36
+ Unfold is a theme for Django admin incorporating most common practices for building full-fledged admin areas. It is designed to work on top of default administration provided by Django.
37
+
38
+ - **Documentation:** full docs are available at [unfoldadmin.com/docs](https://unfoldadmin.com/docs?utm_medium=github&utm_source=unfold)
39
+ - **Unfold:** demo site is available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold)
40
+ - **Formula:** repository with demo implementation at [github.com/unfoldadmin/formula](https://github.com/unfoldadmin/formula)
41
+ - **Turbo:** Django & Next.js boilerplate implementing Unfold at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo)
42
+
43
+ ## Are you using Unfold and need a help?
44
+
45
+ Did you decide to start using Unfold but you don't have time to make the switch from native Django admin? [Get in touch with us](https://unfoldadmin.com/?utm_medium=github&utm_source=unfold) and let's supercharge development by using our know-how.
46
+
47
+ ## Features
48
+
49
+ - **Visual**: provides a new user interface based on Tailwind CSS framework
50
+ - **Sidebar:** simplifies definition of custom sidebar navigation with icons
51
+ - **Dark mode:** supports both light and dark mode versions
52
+ - **Configuration:** most of the basic options can be changed in settings.py
53
+ - **Dependencies:** completely based only on `django.contrib.admin`
54
+ - **Actions:** multiple ways how to define actions within different parts of admin
55
+ - **WYSIWYG:** built-in support for WYSIWYG (Trix)
56
+ - **Array widget:** built-in widget for `django.contrib.postgres.fields.ArrayField`
57
+ - **Filters:** custom dropdown, numeric, datetime, and text fields
58
+ - **Dashboard:** custom components for rapid dashboard development
59
+ - **Inline tabs:** group inlines into tab navigation in the change form
60
+ - **Model tabs:** define custom tab navigations for models
61
+ - **Fieldset tabs:** merge several fieldsets into tabs in the change form
62
+ - **Colors:** possibility to override the default color scheme
63
+ - **Changeform modes:** display fields in the change form in compressed mode
64
+ - **Third party packages:** default support for multiple popular applications
65
+ - **Environment label**: distinguish between environments by displaying a label
66
+ - **Nonrelated inlines**: displays nonrelated model as inline in changeform
67
+ - **Parallel admin**: support for default admin in parallel with Unfold. [Admin migration guide](https://unfoldadmin.com/blog/migrating-django-admin-unfold/?utm_medium=github&utm_source=unfold)
68
+ - **Favicons**: built-in support for configuring various site favicons
69
+ - **VS Code**: project configuration and development container is included
70
+
@@ -0,0 +1,45 @@
1
+ [![screenshot-light](https://github.com/unfoldadmin/django-unfold/assets/10785882/291e69c9-abdd-4f7e-a0d6-2af210a9013a#gh-light-mode-only)](https://github.com/unfoldadmin/django-unfold/assets/10785882/291e69c9-abdd-4f7e-a0d6-2af210a9013a#gh-light-mode-only)
2
+
3
+ [![screenshot-dark](https://github.com/unfoldadmin/django-unfold/assets/10785882/94a2e90f-924a-4aaf-b6d9-cb1592000c55#gh-dark-mode-only)](https://github.com/unfoldadmin/django-unfold/assets/10785882/94a2e90f-924a-4aaf-b6d9-cb1592000c55#gh-dark-mode-only)
4
+
5
+ ## Unfold Django Admin Theme
6
+
7
+ [![Build](https://img.shields.io/github/actions/workflow/status/unfoldadmin/django-unfold/release.yml?style=for-the-badge)](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
8
+ [![PyPI - Version](https://img.shields.io/pypi/v/django-unfold.svg?style=for-the-badge)](https://pypi.org/project/django-unfold/)
9
+ ![Code Style - Ruff](https://img.shields.io/badge/code%20style-ruff-30173D.svg?style=for-the-badge)
10
+ ![Pre Commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge)
11
+
12
+ Unfold is a theme for Django admin incorporating most common practices for building full-fledged admin areas. It is designed to work on top of default administration provided by Django.
13
+
14
+ - **Documentation:** full docs are available at [unfoldadmin.com/docs](https://unfoldadmin.com/docs?utm_medium=github&utm_source=unfold)
15
+ - **Unfold:** demo site is available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold)
16
+ - **Formula:** repository with demo implementation at [github.com/unfoldadmin/formula](https://github.com/unfoldadmin/formula)
17
+ - **Turbo:** Django & Next.js boilerplate implementing Unfold at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo)
18
+
19
+ ## Are you using Unfold and need a help?
20
+
21
+ Did you decide to start using Unfold but you don't have time to make the switch from native Django admin? [Get in touch with us](https://unfoldadmin.com/?utm_medium=github&utm_source=unfold) and let's supercharge development by using our know-how.
22
+
23
+ ## Features
24
+
25
+ - **Visual**: provides a new user interface based on Tailwind CSS framework
26
+ - **Sidebar:** simplifies definition of custom sidebar navigation with icons
27
+ - **Dark mode:** supports both light and dark mode versions
28
+ - **Configuration:** most of the basic options can be changed in settings.py
29
+ - **Dependencies:** completely based only on `django.contrib.admin`
30
+ - **Actions:** multiple ways how to define actions within different parts of admin
31
+ - **WYSIWYG:** built-in support for WYSIWYG (Trix)
32
+ - **Array widget:** built-in widget for `django.contrib.postgres.fields.ArrayField`
33
+ - **Filters:** custom dropdown, numeric, datetime, and text fields
34
+ - **Dashboard:** custom components for rapid dashboard development
35
+ - **Inline tabs:** group inlines into tab navigation in the change form
36
+ - **Model tabs:** define custom tab navigations for models
37
+ - **Fieldset tabs:** merge several fieldsets into tabs in the change form
38
+ - **Colors:** possibility to override the default color scheme
39
+ - **Changeform modes:** display fields in the change form in compressed mode
40
+ - **Third party packages:** default support for multiple popular applications
41
+ - **Environment label**: distinguish between environments by displaying a label
42
+ - **Nonrelated inlines**: displays nonrelated model as inline in changeform
43
+ - **Parallel admin**: support for default admin in parallel with Unfold. [Admin migration guide](https://unfoldadmin.com/blog/migrating-django-admin-unfold/?utm_medium=github&utm_source=unfold)
44
+ - **Favicons**: built-in support for configuring various site favicons
45
+ - **VS Code**: project configuration and development container is included
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-unfold"
3
- version = "0.37.0"
3
+ version = "0.38.0"
4
4
  description = "Modern Django admin theme for seamless interface development"
5
5
  license = "MIT"
6
6
  readme = "README.md"
@@ -49,6 +49,7 @@ from .widgets import (
49
49
  UnfoldAdminSplitDateTimeWidget,
50
50
  UnfoldAdminTextareaWidget,
51
51
  UnfoldAdminTextInputWidget,
52
+ UnfoldAdminURLInputWidget,
52
53
  UnfoldAdminUUIDInputWidget,
53
54
  UnfoldBooleanSwitchWidget,
54
55
  UnfoldBooleanWidget,
@@ -79,7 +80,7 @@ FORMFIELD_OVERRIDES = {
79
80
  models.TimeField: {"widget": UnfoldAdminSingleTimeWidget},
80
81
  models.EmailField: {"widget": UnfoldAdminEmailInputWidget},
81
82
  models.CharField: {"widget": UnfoldAdminTextInputWidget},
82
- models.URLField: {"widget": UnfoldAdminTextInputWidget},
83
+ models.URLField: {"widget": UnfoldAdminURLInputWidget},
83
84
  models.GenericIPAddressField: {"widget": UnfoldAdminTextInputWidget},
84
85
  models.UUIDField: {"widget": UnfoldAdminUUIDInputWidget},
85
86
  models.TextField: {"widget": UnfoldAdminTextareaWidget},
@@ -2,7 +2,7 @@
2
2
 
3
3
  {% with choices.0 as choice %}
4
4
  <div class="flex flex-col mb-6">
5
- <h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
5
+ <h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
6
6
 
7
7
  <div class="flex flex-col space-y-4">
8
8
  {% for field in choice.form %}
@@ -2,7 +2,7 @@
2
2
 
3
3
  {% with choices.0 as choice %}
4
4
  <div class="flex flex-col mb-6">
5
- <h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
5
+ <h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
6
6
 
7
7
  <div class="flex flex-col space-y-4">
8
8
  {% for field in choice.form %}
@@ -2,7 +2,7 @@
2
2
 
3
3
  {% with choices.0 as choice %}
4
4
  <div class="flex flex-col mb-6">
5
- <h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
5
+ <h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
6
6
 
7
7
  <div class="flex flex-row gap-4">
8
8
  {% for field in choice.form %}
@@ -2,7 +2,7 @@
2
2
 
3
3
  {% with choices.0 as choice %}
4
4
  <div class="flex flex-col mb-6">
5
- <h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
5
+ <h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
6
6
 
7
7
  {% for field in choice.form %}
8
8
  <div class="flex flex-row flex-wrap group relative{% if field.errors %} errors{% endif %}">
@@ -3,17 +3,17 @@
3
3
 
4
4
  {% with choices.0 as choice %}
5
5
  <div class="admin-numeric-filter-wrapper mb-6">
6
- <h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">
6
+ <h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">
7
7
  {% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}
8
8
  </h3>
9
9
 
10
10
  {% if choice.min is not None and choice.max is not None and choice.step %}
11
11
  <div class="admin-numeric-filter-slider-tooltips">
12
- <span class="admin-numeric-filter-slider-tooltip-from border cursor-not-allowed flex flex-grow flex-row items-center mr-auto rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
12
+ <span class="admin-numeric-filter-slider-tooltip-from border cursor-not-allowed flex flex-grow flex-row items-center mr-auto rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
13
13
  {{ choice.value_from }}
14
14
  </span>
15
15
 
16
- <span class="admin-numeric-filter-slider-tooltip-to border cursor-not-allowed flex flex-grow flex-row items-center rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
16
+ <span class="admin-numeric-filter-slider-tooltip-to border cursor-not-allowed flex flex-grow flex-row items-center rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
17
17
  {{ choice.value_to }}
18
18
  </span>
19
19
  </div>
@@ -25,7 +25,7 @@
25
25
  {{ choice.form.as_p }}
26
26
  </div>
27
27
  {% else %}
28
- <div class="admin-numeric-filter-slider-error dark:text-gray-300">
28
+ <div class="admin-numeric-filter-slider-error dark:text-font-default-dark">
29
29
  <p>
30
30
  {% trans 'Not enough data.' %}
31
31
  </p>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <template id="trix-toolbar">
4
4
  <div class="bg-gray-50 flex flex-row flex-wrap border group-[.errors]:border-t-red-600 gap-4 group-[.errors]:border-x-red-600 px-3 py-2 relative rounded-t-md shadow-sm w-full dark:bg-white/[.02] dark:border-gray-700 dark:group-[.errors]:border-t-red-500 dark:group-[.errors]:border-x-red-500">
5
- <div data-trix-button-group="text-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm shrink-0 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
5
+ <div data-trix-button-group="text-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm shrink-0 dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
6
6
  {% spaceless %}
7
7
  <button type="button" data-trix-attribute="p" data-trix-key="p" title="{% trans "Paragraph" %}" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
8
8
  <span class="material-symbols-outlined">format_paragraph</span>
@@ -30,7 +30,7 @@
30
30
  {% endspaceless %}
31
31
  </div>
32
32
 
33
- <div data-trix-button-group="block-headings" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
33
+ <div data-trix-button-group="block-headings" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
34
34
  {% spaceless %}
35
35
  <button type="button" data-trix-attribute="heading1" title="{% trans "Heading" %} 1" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
36
36
  <span class="material-symbols-outlined">format_h1</span>
@@ -50,7 +50,7 @@
50
50
  {% endspaceless %}
51
51
  </div>
52
52
 
53
- <div data-trix-button-group="block-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
53
+ <div data-trix-button-group="block-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
54
54
  {% spaceless %}
55
55
  <button type="button" data-trix-attribute="quote" title="{% trans "Quote" %}" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
56
56
  <span class="material-symbols-outlined">format_quote</span>
@@ -79,7 +79,7 @@
79
79
  </div>
80
80
 
81
81
  <div class="lg:ml-auto">
82
- <div data-trix-button-group="history-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
82
+ <div data-trix-button-group="history-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
83
83
  <button type="button" data-trix-action="undo" data-trix-key="z" title="{% trans "Undo" %}" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
84
84
  <span class="material-symbols-outlined">undo</span>
85
85
  </button>
@@ -92,9 +92,9 @@
92
92
  <div data-trix-dialogs>
93
93
  <div class="absolute bg-white border-b -bottom-px left-0 px-4 py-2 right-0 shadow-sm translate-y-full dark:bg-gray-900 dark:border-gray-700" data-trix-dialog="href" data-trix-dialog-attribute="href">
94
94
  <div class="flex flex-row">
95
- <input type="url" name="href" class="border bg-white font-medium px-3 rounded-md shadow-sm text-gray-500 text-sm focus:ring focus:ring-primary-300 focus:border-primary-600 focus:outline-none group-[.errors]:border-red-600 group-[.errors]:focus:ring-red-200 dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300 dark:focus:ring-primary-600/30 dark:group-[.errors]:border-red-500 dark:group-[.errors]:focus:ring-red-600/40" placeholder="{% trans "Enter an URL" %}" required data-trix-input>
95
+ <input type="url" name="href" class="border bg-white font-medium px-3 rounded-md shadow-sm text-gray-500 text-sm focus:ring focus:ring-primary-300 focus:border-primary-600 focus:outline-none group-[.errors]:border-red-600 group-[.errors]:focus:ring-red-200 dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark dark:focus:ring-primary-600/30 dark:group-[.errors]:border-red-500 dark:group-[.errors]:focus:ring-red-600/40" placeholder="{% trans "Enter an URL" %}" required data-trix-input>
96
96
 
97
- <div class="bg-white border border-md flex flex-row ml-4 rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-gray-300">
97
+ <div class="bg-white border border-md flex flex-row ml-4 rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
98
98
  <button type="button" data-trix-method="setAttribute" title="{% trans "Link" %}" class="border-r cursor-pointer flex items-center h-8 justify-center text-gray-400 transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
99
99
  <span class="material-symbols-outlined">link</span>
100
100
  </button>
@@ -3,25 +3,25 @@
3
3
  <form method="post">
4
4
  {% csrf_token %}
5
5
 
6
- <h2 class="font-semibold mb-3 text-gray-900 dark:text-gray-100">
6
+ <h2 class="font-semibold mb-3 text-font-important-light dark:text-font-important-dark">
7
7
  {% trans "Group permissions" %}
8
8
  </h2>
9
9
 
10
10
  {% if groups_perms.items %}
11
11
  <table id="group-permissions" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
12
- <thead class="hidden lg:table-header-group text-gray-900 dark:text-gray-100">
12
+ <thead class="hidden lg:table-header-group text-font-important-light dark:text-font-important-dark">
13
13
  <tr>
14
- <th class="align-middle font-medium px-3 py-2 text-left">
14
+ <th class="align-middle font-semibold px-3 py-2 text-left">
15
15
  {% trans "Group" %}
16
16
  </th>
17
17
 
18
18
  {% for perm in model_perms %}
19
- <th class="align-middle font-medium px-3 py-2 text-left">
19
+ <th class="align-middle font-semibold px-3 py-2 text-left">
20
20
  {{ perm.name }}
21
21
  </th>
22
22
  {% endfor %}
23
23
 
24
- <th class="align-middle font-medium px-3 py-2 text-right">
24
+ <th class="align-middle font-semibold px-3 py-2 text-right">
25
25
  {% trans "Action" %}
26
26
  </th>
27
27
  </tr>
@@ -3,25 +3,25 @@
3
3
  <form method="post">
4
4
  {% csrf_token %}
5
5
 
6
- <h2 class="font-medium mb-3 text-gray-700 dark:text-gray-200">
6
+ <h2 class="font-semibold mb-3 text-font-important-light dark:text-font-important-dark">
7
7
  {% trans "User permissions" %}
8
8
  </h2>
9
9
 
10
10
  {% if users_perms.items %}
11
11
  <table id="user-permissions" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
12
- <thead class="hidden lg:table-header-group text-gray-900 dark:text-gray-100">
12
+ <thead class="hidden lg:table-header-group text-font-important-light dark:text-font-important-dark">
13
13
  <tr>
14
- <th class="align-middle font-medium px-3 py-2 text-left">
14
+ <th class="align-middle font-semibold px-3 py-2 text-left">
15
15
  {% trans "User" %}
16
16
  </th>
17
17
 
18
18
  {% for perm in model_perms %}
19
- <th class="align-middle font-medium px-3 py-2 text-left">
19
+ <th class="align-middle font-semibold px-3 py-2 text-left">
20
20
  {{ perm.name }}
21
21
  </th>
22
22
  {% endfor %}
23
23
 
24
- <th class="align-middle font-medium px-3 py-2 text-right">
24
+ <th class="align-middle font-semibold px-3 py-2 text-right">
25
25
  {% trans "Action" %}
26
26
  </th>
27
27
  </tr>
@@ -5,6 +5,6 @@
5
5
  {{ block.super }}
6
6
 
7
7
  {% if show_change_form_export %}
8
- <input type="submit" value="{% translate 'Export' %}" name="_export-item" class="bg-white text-gray-500 border cursor-pointer flex font-medium items-center px-3 py-2 mr-3 rounded-md shadow-sm text-sm dark:bg-gray-900 dark:border dark:border-gray-700 dark:text-gray-300">
8
+ <input type="submit" value="{% translate 'Export' %}" name="_export-item" class="bg-white text-gray-500 border cursor-pointer flex font-medium items-center px-3 py-2 mr-3 rounded-md shadow-sm text-sm dark:bg-gray-900 dark:border dark:border-gray-700 dark:text-font-default-dark">
9
9
  {% endif %}
10
10
  {% endblock %}
@@ -26,7 +26,7 @@
26
26
  </div>
27
27
  </div>
28
28
 
29
- <div class="block border leading-relaxed mb-4 rounded p-4 traceback dark:border-gray-800 dark:text-gray-300 " x-show="open">
29
+ <div class="block border leading-relaxed mb-4 rounded p-4 traceback dark:border-gray-800 dark:text-font-default-dark " x-show="open">
30
30
  {{ error.traceback|linebreaks }}
31
31
  </div>
32
32
  </li>
@@ -4,7 +4,7 @@
4
4
 
5
5
  {% block content %}
6
6
  {% if not revert_disabled %}
7
- <p class="px-3 py-3 rounded-md text-sm last:mb-8 er-amber-600/10 bg-blue-50 mb-8 text-blue-500 dark:bg-blue-500/20 dark:border-blue-500/10">
7
+ <p class="px-3 py-3 rounded-md text-sm last:mb-8 mb-8 bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400">
8
8
  {% blocktrans %}Choose a date from the list below to revert to a previous version of this object.{% endblocktrans %}
9
9
  </p>
10
10
  {% endif %}
@@ -4,35 +4,35 @@
4
4
  {% load getattribute from getattributes %}
5
5
 
6
6
  <table id="change-history" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
7
- <thead class="hidden text-gray-900 lg:table-header-group dark:text-gray-100">
7
+ <thead class="hidden text-font-important-light lg:table-header-group dark:text-font-important-dark">
8
8
  <tr>
9
- <th class="align-middle font-medium px-3 py-2 text-left ">
9
+ <th class="align-middle font-semibold px-3 py-2 text-left ">
10
10
  {% trans 'Object' %}
11
11
  </th>
12
12
 
13
13
  {% for column in history_list_display %}
14
- <th class="align-middle font-medium px-3 py-2 text-left ">
14
+ <th class="align-middle font-semibold px-3 py-2 text-left ">
15
15
  {% trans column %}
16
16
  </th>
17
17
  {% endfor %}
18
18
 
19
- <th class="align-middle font-medium px-3 py-2 text-left">
19
+ <th class="align-middle font-semibold px-3 py-2 text-left">
20
20
  {% trans 'Date/time' %}
21
21
  </th>
22
22
 
23
- <th class="align-middle font-medium px-3 py-2 text-left">
23
+ <th class="align-middle font-semibold px-3 py-2 text-left">
24
24
  {% trans 'Comment' %}
25
25
  </th>
26
26
 
27
- <th class="align-middle font-medium px-3 py-2 text-left">
27
+ <th class="align-middle font-semibold px-3 py-2 text-left">
28
28
  {% trans 'Changed by' %}
29
29
  </th>
30
30
 
31
- <th class="align-middle font-medium px-3 py-2 text-left">
31
+ <th class="align-middle font-semibold px-3 py-2 text-left">
32
32
  {% trans 'Change reason' %}
33
33
  </th>
34
34
 
35
- <th class="align-middle font-medium px-3 py-2 text-left">
35
+ <th class="align-middle font-semibold px-3 py-2 text-left">
36
36
  {% trans 'Changes' %}
37
37
  </th>
38
38
  </tr>
@@ -16,7 +16,7 @@
16
16
  </button>
17
17
  {% endif %}
18
18
 
19
- <a href="{{ history_url }}" class="border font-medium mr-auto px-3 py-2 rounded-md text-sm text-gray-500 text-center transition-all w-full hover:bg-gray-50 lg:block lg:w-auto dark:border-gray-700 dark:text-gray-300 dark:hover:text-gray-200 dark:hover:bg-gray-900">
19
+ <a href="{{ history_url }}" class="border font-medium mr-auto px-3 py-2 rounded-md text-sm text-gray-500 text-center transition-all w-full hover:bg-gray-50 lg:block lg:w-auto dark:border-gray-700 dark:text-font-default-dark dark:hover:text-gray-200 dark:hover:bg-gray-900">
20
20
  {% trans 'Close' %}
21
21
  </a>
22
22
  </div>
@@ -1,3 +1,5 @@
1
+ from typing import Any, Dict
2
+
1
3
  from django.conf import settings
2
4
 
3
5
  CONFIG_DEFAULTS = {
@@ -11,6 +13,14 @@ CONFIG_DEFAULTS = {
11
13
  "SHOW_HISTORY": True,
12
14
  "SHOW_VIEW_ON_SITE": True,
13
15
  "COLORS": {
16
+ "font": {
17
+ "subtle-light": "107 114 128", # text-gray-500
18
+ "subtle-dark": "156 163 175", # text-gray-400
19
+ "default-light": "75 85 99", # text-gray-600
20
+ "default-dark": "209 213 219", # text-gray-300
21
+ "important-light": "17 24 39", # text-gray-900
22
+ "important-dark": "243 244 246", # text-gray-100
23
+ },
14
24
  "primary": {
15
25
  "50": "250 245 255",
16
26
  "100": "243 232 255",
@@ -47,4 +57,19 @@ def get_config(settings_name=None):
47
57
  if settings_name is None:
48
58
  settings_name = "UNFOLD"
49
59
 
50
- return {**CONFIG_DEFAULTS, **getattr(settings, settings_name, {})}
60
+ def merge_dicts(dict1: Dict[str, Any], dict2: Dict[str, Any]) -> Dict[str, Any]:
61
+ result = dict1.copy()
62
+
63
+ for key, value in dict2.items():
64
+ if (
65
+ key in result
66
+ and isinstance(result[key], dict)
67
+ and isinstance(value, dict)
68
+ ):
69
+ result[key] = merge_dicts(result[key], value)
70
+ else:
71
+ result[key] = value
72
+
73
+ return result
74
+
75
+ return merge_dicts(CONFIG_DEFAULTS, getattr(settings, settings_name, {}))