django-unfold 0.36.0__py3-none-any.whl → 0.38.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. django_unfold-0.38.0.dist-info/METADATA +70 -0
  2. {django_unfold-0.36.0.dist-info → django_unfold-0.38.0.dist-info}/RECORD +75 -74
  3. unfold/admin.py +2 -1
  4. unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +1 -1
  5. unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +1 -1
  6. unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +1 -1
  7. unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +1 -1
  8. unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +4 -4
  9. unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +6 -6
  10. unfold/contrib/forms/widgets.py +1 -0
  11. unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +1 -1
  12. unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +1 -1
  13. unfold/contrib/guardian/templates/unfold/guardian/group_form.html +5 -5
  14. unfold/contrib/guardian/templates/unfold/guardian/user_form.html +5 -5
  15. unfold/contrib/import_export/forms.py +1 -0
  16. unfold/contrib/import_export/templates/admin/import_export/change_form.html +1 -1
  17. unfold/contrib/import_export/templates/admin/import_export/import.html +13 -13
  18. unfold/contrib/import_export/templates/admin/import_export/import_errors.html +3 -3
  19. unfold/contrib/inlines/admin.py +1 -0
  20. unfold/contrib/simple_history/templates/simple_history/object_history.html +1 -1
  21. unfold/contrib/simple_history/templates/simple_history/object_history_list.html +8 -8
  22. unfold/contrib/simple_history/templates/simple_history/submit_line.html +1 -1
  23. unfold/settings.py +26 -1
  24. unfold/static/unfold/css/styles.css +1 -1
  25. unfold/static/unfold/js/app.js +7 -1
  26. unfold/styles.css +1 -1
  27. unfold/templates/admin/app_list.html +3 -3
  28. unfold/templates/admin/auth/user/add_form.html +1 -1
  29. unfold/templates/admin/base_site.html +1 -1
  30. unfold/templates/admin/change_form.html +1 -1
  31. unfold/templates/admin/change_list.html +8 -13
  32. unfold/templates/admin/change_list_results.html +2 -2
  33. unfold/templates/admin/delete_confirmation.html +6 -6
  34. unfold/templates/admin/delete_selected_confirmation.html +5 -5
  35. unfold/templates/admin/edit_inline/stacked.html +7 -5
  36. unfold/templates/admin/edit_inline/tabular.html +3 -3
  37. unfold/templates/admin/filter.html +1 -1
  38. unfold/templates/admin/includes/fieldset.html +1 -1
  39. unfold/templates/admin/includes/object_delete_summary.html +1 -1
  40. unfold/templates/admin/login.html +2 -2
  41. unfold/templates/admin/nav_sidebar.html +1 -1
  42. unfold/templates/admin/search_form.html +1 -1
  43. unfold/templates/auth/widgets/read_only_password_hash.html +2 -2
  44. unfold/templates/registration/logged_out.html +1 -1
  45. unfold/templates/registration/password_change_done.html +3 -3
  46. unfold/templates/unfold/change_list_filter.html +31 -15
  47. unfold/templates/unfold/components/card.html +1 -1
  48. unfold/templates/unfold/components/navigation.html +1 -1
  49. unfold/templates/unfold/components/title.html +1 -1
  50. unfold/templates/unfold/helpers/actions_row.html +14 -14
  51. unfold/templates/unfold/helpers/app_list.html +8 -8
  52. unfold/templates/unfold/helpers/display_header.html +1 -1
  53. unfold/templates/unfold/helpers/fieldset_row.html +2 -2
  54. unfold/templates/unfold/helpers/fieldsets_tabs.html +4 -4
  55. unfold/templates/unfold/helpers/form_label.html +1 -1
  56. unfold/templates/unfold/helpers/label.html +13 -13
  57. unfold/templates/unfold/helpers/messages.html +12 -12
  58. unfold/templates/unfold/helpers/navigation.html +2 -2
  59. unfold/templates/unfold/helpers/search.html +1 -1
  60. unfold/templates/unfold/helpers/tab_action.html +1 -1
  61. unfold/templates/unfold/helpers/tab_list.html +2 -0
  62. unfold/templates/unfold/helpers/welcomemsg.html +3 -3
  63. unfold/templates/unfold/layouts/skeleton.html +47 -47
  64. unfold/templates/unfold/widgets/clearable_file_input.html +2 -2
  65. unfold/templates/unfold/widgets/clearable_file_input_small.html +10 -2
  66. unfold/templates/unfold/widgets/foreign_key_raw_id.html +6 -4
  67. unfold/templates/unfold/widgets/radio_option.html +3 -3
  68. unfold/templates/unfold/widgets/range.html +8 -8
  69. unfold/templates/unfold/widgets/related_widget_wrapper.html +6 -6
  70. unfold/templates/unfold/widgets/url.html +7 -0
  71. unfold/templatetags/unfold_list.py +0 -7
  72. unfold/utils.py +6 -1
  73. unfold/widgets.py +26 -6
  74. django_unfold-0.36.0.dist-info/METADATA +0 -1455
  75. {django_unfold-0.36.0.dist-info → django_unfold-0.38.0.dist-info}/LICENSE.md +0 -0
  76. {django_unfold-0.36.0.dist-info → django_unfold-0.38.0.dist-info}/WHEEL +0 -0
@@ -33,7 +33,7 @@
33
33
  {% block content %}
34
34
  {% if perms_lacking %}
35
35
  <div class="border border-gray-200 rounded-md shadow-sm dark:border-gray-800">
36
- <p class="font-semibold p-4 text-gray-900 dark:text-gray-100">
36
+ <p class="font-semibold p-4 text-font-important-light dark:text-font-important-dark">
37
37
  {% blocktranslate with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}
38
38
  </p>
39
39
 
@@ -49,7 +49,7 @@
49
49
  </div>
50
50
  {% elif protected %}
51
51
  <div class="border border-gray-200 rounded-md shadow-sm dark:border-gray-800">
52
- <p class="font-semibold p-4 text-gray-900 dark:text-gray-100">
52
+ <p class="font-semibold p-4 text-font-important-light dark:text-font-important-dark">
53
53
  {% blocktranslate with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktranslate %}
54
54
  </p>
55
55
 
@@ -65,19 +65,19 @@
65
65
  </div>
66
66
  {% else %}
67
67
  <div class="border border-gray-200 rounded-md shadow-sm dark:border-gray-800">
68
- <p class="font-semibold p-4 text-gray-900 dark:text-gray-100">
68
+ <p class="font-semibold p-4 text-font-important-light dark:text-font-important-dark">
69
69
  {% blocktranslate with escaped_object=object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktranslate %}
70
70
  </p>
71
71
 
72
72
  {% include "admin/includes/object_delete_summary.html" %}
73
73
 
74
74
  <div class="border-gray-200 border-t p-4 dark:border-gray-800">
75
- <h2 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">
75
+ <h2 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">
76
76
  {% translate "Objects" %}
77
77
  </h2>
78
78
 
79
79
  <ul class="leading-relaxed text-sm">
80
- {{ deleted_objects|unordered_list }}
80
+ {{ deleted_objects|unordered_list }}
81
81
  </ul>
82
82
  </div>
83
83
 
@@ -96,7 +96,7 @@
96
96
  {% endif %}
97
97
 
98
98
 
99
- <a href="#" class="border cancel-link font-medium hidden mb-3 px-3 py-2 rounded-md w-full hover:bg-gray-50 lg:block lg:mb-0 lg:mr-3 lg:w-auto dark:border-gray-700 dark:text-gray-300 dark:hover:text-gray-200 dark:hover:bg-gray-900">
99
+ <a href="#" class="border cancel-link font-medium hidden mb-3 px-3 py-2 rounded-md w-full hover:bg-gray-50 lg:block lg:mb-0 lg:mr-3 lg:w-auto dark:border-gray-700 dark:text-font-default-dark dark:hover:text-gray-200 dark:hover:bg-gray-900">
100
100
  {% translate "No, take me back" %}
101
101
  </a>
102
102
 
@@ -33,7 +33,7 @@
33
33
 
34
34
  {% block content %}
35
35
  {% if perms_lacking %}
36
- <p class="font-semibold p-4 text-gray-900 dark:text-gray-100">
36
+ <p class="font-semibold p-4 text-font-important-light dark:text-font-important-dark">
37
37
  {% blocktranslate %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktranslate %}
38
38
  </p>
39
39
 
@@ -46,7 +46,7 @@
46
46
  </div>
47
47
  {% elif protected %}
48
48
  <div class="border border-gray-200 rounded-md shadow-sm dark:border-gray-800">
49
- <p class="font-semibold p-4 text-gray-900 dark:text-gray-100">
49
+ <p class="font-semibold p-4 text-font-important-light dark:text-font-important-dark">
50
50
  {% blocktranslate %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktranslate %}
51
51
  </p>
52
52
 
@@ -60,14 +60,14 @@
60
60
  </div>
61
61
  {% else %}
62
62
  <div class="border border-gray-200 rounded-md shadow-sm dark:border-gray-800">
63
- <p class="font-semibold p-4 text-gray-900 dark:text-gray-100">
63
+ <p class="font-semibold p-4 text-font-important-light dark:text-font-important-dark">
64
64
  {% blocktranslate %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktranslate %}
65
65
  </p>
66
66
 
67
67
  {% include "admin/includes/object_delete_summary.html" %}
68
68
 
69
69
  <div class="border-t border-gray-200 p-4 dark:border-gray-800">
70
- <h2 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">
70
+ <h2 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">
71
71
  {% translate "Objects" %}
72
72
  </h2>
73
73
 
@@ -89,7 +89,7 @@
89
89
  <input type="hidden" name="action" value="delete_selected">
90
90
  <input type="hidden" name="post" value="yes">
91
91
 
92
- <a href="#" class="border cancel-link font-medium hidden mb-3 px-3 py-2 rounded-md transition-all w-full hover:bg-gray-50 lg:block lg:mb-0 lg:mr-3 lg:w-auto dark:border-gray-700 dark:text-gray-300 dark:hover:text-gray-200 dark:hover:bg-gray-900">
92
+ <a href="#" class="border cancel-link font-medium hidden mb-3 px-3 py-2 rounded-md transition-all w-full hover:bg-gray-50 lg:block lg:mb-0 lg:mr-3 lg:w-auto dark:border-gray-700 dark:text-font-default-dark dark:hover:text-gray-200 dark:hover:bg-gray-900">
93
93
  {% translate "No, take me back" %}
94
94
  </a>
95
95
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div class="js-inline-admin-formset inline-group" id="{{ inline_admin_formset.formset.prefix }}-group" data-inline-type="stacked" data-inline-formset="{{ inline_admin_formset.inline_formset_data }}" {% if inline_admin_formset.opts.tab %}x-show="activeTab == '{{ inline_admin_formset.opts.verbose_name|slugify }}'"{% else %}x-show="activeTab == 'general'"{% endif %}>
4
4
  <fieldset class="module {{ inline_admin_formset.classes }}">
5
- <h2 class="bg-gray-100 border border-transparent font-semibold mb-6 px-4 py-3 rounded-md text-gray-900 text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-gray-200 {% if inline_admin_formset.opts.tab %}hidden{% endif %}">
5
+ <h2 class="bg-gray-100 border border-transparent font-semibold mb-6 px-4 py-3 rounded-md text-font-important-light text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-font-important-dark {% if inline_admin_formset.opts.tab %}hidden{% endif %}">
6
6
  {% if inline_admin_formset.formset.max_num == 1 %}
7
7
  {{ inline_admin_formset.opts.verbose_name|capfirst }}
8
8
  {% else %}
@@ -14,9 +14,11 @@
14
14
  {% include "unfold/helpers/messages/error.html" with errors=inline_admin_formset.formset.non_form_errors %}
15
15
 
16
16
  {% if inline_admin_formset.forms|length == 0 %}
17
- <p class="mb-6 text-sm">
18
- {% trans "No records found." %}
19
- </p>
17
+ <div>
18
+ <p class="mb-6 text-sm">
19
+ {% trans "No records found." %}
20
+ </p>
21
+ </div>
20
22
  {% else %}
21
23
  <div class="border border-gray-200 mb-6 overflow-hidden rounded-md shadow-sm w-full dark:border-gray-800">
22
24
  {% for inline_admin_form in inline_admin_formset %}
@@ -27,7 +29,7 @@
27
29
  {{ inline_admin_formset.opts.verbose_name|capfirst }}:
28
30
  </span>
29
31
 
30
- <span class="inline_label font-semibold text-gray-900 dark:text-gray-200">
32
+ <span class="inline_label font-semibold text-font-important-light dark:text-font-important-dark">
31
33
  {% if inline_admin_form.original and inline_admin_form.model_admin.show_change_link and inline_admin_form.model_admin.has_registered_model %}
32
34
  <a href="{% url inline_admin_form.model_admin.opts|admin_urlname:'change' inline_admin_form.original.pk|admin_urlquote %}" class="{% if inline_admin_formset.has_change_permission %}inlinechangelink{% else %}inlineviewlink{% endif %} font-medium text-primary-600 dark:text-primary-500">
33
35
  {{ inline_admin_form.original }}
@@ -5,7 +5,7 @@
5
5
  {{ inline_admin_formset.formset.management_form }}
6
6
 
7
7
  <fieldset class="module {{ inline_admin_formset.classes }} min-w-0">
8
- <h2 class="bg-gray-100 border border-transparent font-semibold mb-6 px-4 py-3 rounded-md text-gray-900 text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-gray-200 {% if inline_admin_formset.opts.tab %}hidden{% endif %}">
8
+ <h2 class="bg-gray-100 border border-transparent font-semibold mb-6 px-4 py-3 rounded-md text-font-important-light text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-font-important-dark {% if inline_admin_formset.opts.tab %}hidden{% endif %}">
9
9
  {% if inline_admin_formset.formset.max_num == 1 %}
10
10
  {{ inline_admin_formset.opts.verbose_name|capfirst }}
11
11
  {% else %}
@@ -27,7 +27,7 @@
27
27
  <tr>
28
28
  {% for field in inline_admin_formset.fields %}
29
29
  {% if not field.widget.is_hidden %}
30
- <th class="column-{{ field.name }}{% if field.required %} required{% endif %} align-middle border-b border-gray-200 font-medium px-3 py-2 text-left text-gray-900 text-sm whitespace-nowrap dark:text-gray-200 dark:border-gray-800">
30
+ <th class="column-{{ field.name }}{% if field.required %} required{% endif %} align-middle border-b border-gray-200 font-semibold px-3 py-2 text-left text-font-important-light text-sm whitespace-nowrap dark:text-font-important-dark dark:border-gray-800">
31
31
  <span class="flex flex-row items-center">
32
32
  {{ field.label|capfirst }}
33
33
 
@@ -40,7 +40,7 @@
40
40
  {% endfor %}
41
41
 
42
42
  {% if inline_admin_formset.formset.can_delete and inline_admin_formset.has_delete_permission %}
43
- <th class="align-middle border-b border-gray-200 font-medium px-3 py-2 text-left text-gray-900 text-sm whitespace-nowrap lg:w-px dark:border-gray-800 dark:text-gray-200">
43
+ <th class="align-middle border-b border-gray-200 font-semibold px-3 py-2 text-left text-font-important-light text-sm whitespace-nowrap lg:w-px dark:border-gray-800 dark:text-font-important-dark">
44
44
  {% translate "Delete?" %}
45
45
  </th>
46
46
  {% endif %}
@@ -1,7 +1,7 @@
1
1
  {% load i18n unfold %}
2
2
 
3
3
  <div class="mb-6">
4
- <h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">
4
+ <h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">
5
5
  {% blocktranslate with filter_title=title %} By {{ filter_title }} {% endblocktranslate %}
6
6
  </h3>
7
7
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  <fieldset class="module{% if fieldset.classes %} {{ fieldset.classes }}{% endif %}" {% if stacked != 1 %}x-show="activeTab == 'general'"{% endif %}>
4
4
  {% if fieldset.name and "tab" not in fieldset.classes %}
5
- <h2 class="bg-gray-100 border border-transparent font-semibold mb-6 px-4 py-3 rounded-md text-gray-700 text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-gray-200">
5
+ <h2 class="bg-gray-100 border border-transparent font-semibold mb-6 px-4 py-3 rounded-md text-font-important-light text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-font-important-dark">
6
6
  {{ fieldset.name }}
7
7
  </h2>
8
8
  {% endif %}
@@ -1,7 +1,7 @@
1
1
  {% load i18n %}
2
2
 
3
3
  <div class="border-gray-200 border-t p-4 dark:border-gray-800">
4
- <h2 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">
4
+ <h2 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">
5
5
  {% translate "Summary" %}
6
6
  </h2>
7
7
 
@@ -28,7 +28,7 @@
28
28
  <div class="flex flex-grow items-center justify-center mx-auto px-4 relative">
29
29
  <div class="w-full sm:w-96">
30
30
  <h1 class="font-semibold mb-10">
31
- <span class="block text-gray-700 dark:text-gray-200">{% trans 'Welcome back to' %}</span>
31
+ <span class="block text-font-important-light dark:text-font-important-dark">{% trans 'Welcome back to' %}</span>
32
32
  <span class="block text-primary-600 text-xl dark:text-primary-500">{{ site_title }}</span>
33
33
  </h1>
34
34
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  {% if password_reset_url %}
68
68
  <div class="password-reset-link">
69
- <a href="{{ password_reset_url }}" class="border font-medium hidden mt-4 px-3 py-2 rounded-md text-center text-sm text-gray-500 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">
69
+ <a href="{{ password_reset_url }}" class="border font-medium hidden mt-4 px-3 py-2 rounded-md text-center text-sm text-gray-500 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">
70
70
  {% translate 'Forgotten your password or username?' %}
71
71
  </a>
72
72
  </div>
@@ -13,7 +13,7 @@
13
13
 
14
14
  <div @click="sidebarMobileOpen = !sidebarMobileOpen"
15
15
  class="fixed bottom-0 bg-gray-700 cursor-pointer flex items-center left-0 mb-2 ml-2 justify-center px-2 py-1 rounded-full shadow-sm text-xs text-white uppercase z-50 xl:hidden"
16
- :class="{'ml-72 -translate-x-1/2': sidebarMobileOpen}">
16
+ :class="{'ml-72 -translate-x-1/2': sidebarMobileOpen}">
17
17
  {% trans "Menu" %}
18
18
  </div>
19
19
 
@@ -3,7 +3,7 @@
3
3
  {% if cl.search_fields %}
4
4
  <div id="toolbar">
5
5
  <div class="bg-white border flex rounded-md overflow-hidden shadow-sm lg:w-64 focus-within:ring focus-within:ring-primary-300 focus-within:border-primary-600 dark:bg-gray-900 dark:border-gray-700 dark:focus-within:border-primary-600 dark:focus-within:ring-primary-700 dark:focus-within:ring-opacity-50">
6
- <input class="font-medium grow min-w-0 h-9 px-3 text-gray-500 text-sm focus:outline-none dark:bg-gray-900 dark:text-gray-300" type="text" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" placeholder="{% if cl.search_help_text %}{{ cl.search_help_text }}{% else %}{% trans "Type to search" %}{% endif %}" />
6
+ <input class="font-medium grow min-w-0 h-9 px-3 text-font-default-light text-sm focus:outline-none dark:bg-gray-900 dark:text-font-default-dark placeholder-shown:truncate" type="text" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" placeholder="{% if cl.search_help_text %}{{ cl.search_help_text }}{% else %}{% trans "Type to search" %}{% endif %}" />
7
7
 
8
8
  <button type="submit" class="flex items-center px-2 focus:outline-none" id="searchbar-submit">
9
9
  <span class="material-symbols-outlined md-18 text-gray-400 dark:text-gray-500">search</span>
@@ -1,8 +1,8 @@
1
1
  <div class="table table-fixed w-full">
2
- <div class="readonly bg-gray-50 border font-medium max-w-2xl px-3 py-2 rounded-md shadow-sm text-gray-500 text-sm dark:bg-gray-900 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-300{% if summary|length > 1 %} text-ellipsis overflow-hidden whitespace-nowrap w-full{% endif %}" {% include 'django/forms/widgets/attrs.html' %}>
2
+ <div class="readonly bg-gray-50 border font-medium max-w-2xl px-3 py-2 rounded-md shadow-sm dark:bg-white/[.02] dark:border-gray-700 {% if summary|length > 1 %} text-ellipsis overflow-hidden whitespace-nowrap w-full{% endif %}" {% include 'django/forms/widgets/attrs.html' %}>
3
3
  {% if summary|length > 1 %}
4
4
  {% for entry in summary %}
5
- <strong class="font-semibold text-gray-900 dark:text-gray-200">{{ entry.label }}</strong>{% if entry.value %}: {{ entry.value }}{% endif %}
5
+ <strong class="font-semibold text-font-important-light dark:text-font-important-dark">{{ entry.label }}</strong>{% if entry.value %}: {{ entry.value }}{% endif %}
6
6
  {% endfor %}
7
7
  {% else %}
8
8
  {% for entry in summary %}
@@ -12,7 +12,7 @@
12
12
  </span>
13
13
  </h1>
14
14
 
15
- <p class="mb-10 text-gray-500 dark:text-gray-300">
15
+ <p class="mb-10">
16
16
  {% translate "Thanks for spending some quality time with the web site today." %}
17
17
  </p>
18
18
 
@@ -22,8 +22,8 @@
22
22
 
23
23
  {% block content %}
24
24
  <div id="content-main">
25
- <p class="bg-primary-100 mb-8 text-primary-600 px-3 py-3 rounded-md text-sm">
26
- {% translate 'Your password was changed.' %}
27
- </p>
25
+ <p class="bg-primary-100 mb-8 text-primary-600 px-3 py-3 rounded-md text-sm">
26
+ {% translate 'Your password was changed.' %}
27
+ </p>
28
28
  </div>
29
29
  {% endblock %}
@@ -3,14 +3,30 @@
3
3
  <div id="changelist-filter" class="backdrop-blur-sm bg-opacity-80 bg-gray-900 flex fixed inset-0 z-50" x-show="filterOpen">
4
4
  <label for="show-filters" id="changelist-filter-close" class="flex-grow"></label>
5
5
 
6
- <div class="bg-white flex mr-4 my-4 overflow-hidden rounded shadow-sm w-96 dark:bg-gray-800" x-on:click.outside="filterOpen = false">
6
+ <div class="bg-white flex mx-4 my-4 overflow-hidden rounded shadow-sm w-96 dark:bg-gray-800" x-on:click.outside="filterOpen = false">
7
7
  <div class="flex-grow h-full overflow-auto relative">
8
- <h3 class="border-b flex font-semibold mb-6 px-6 py-4 text-gray-900 text-sm dark:text-gray-100 dark:border-gray-700">
9
- {% trans "Filter results" %}
8
+ <h3 class="border-b flex font-semibold mb-6 px-6 py-4 text-font-important-light text-sm dark:text-font-important-dark dark:border-gray-700">
9
+ {% trans "Filter" %}
10
+
11
+ {% if cl.is_facets_optional %}
12
+ <span id="changelist-filter-extra-actions" class="font-normal ml-3 text-primary-600 text-sm dark:text-primary-500">
13
+ {% if cl.is_facets_optional %}
14
+ {% if cl.add_facets %}
15
+ <a href="{{ cl.remove_facet_link }}" class="hidelink">
16
+ {% trans "Hide counts" %}
17
+ </a>
18
+ {% else %}
19
+ <a href="{{ cl.add_facet_link }}" class="viewlink">
20
+ {% trans "Show counts" %}
21
+ </a>
22
+ {% endif %}
23
+ {% endif %}
24
+ </span>
25
+ {% endif %}
10
26
 
11
27
  {% if cl.has_active_filters %}
12
28
  <a href="{{ cl.clear_all_filters_qs }}" class="font-normal ml-3 text-sm text-red-600 dark:text-red-500">
13
- {% translate "Clear all filters" %}
29
+ {% trans "Clear all filters" %}
14
30
  </a>
15
31
  {% endif %}
16
32
 
@@ -23,13 +39,13 @@
23
39
  {% if cl.model_admin.list_filter_submit %}
24
40
  <form id="filter-form" method="get">
25
41
 
26
- {% if request.GET.q %}
27
- <input type="hidden" name="q" value="{{ request.GET.q }}">
28
- {% endif %}
42
+ {% if request.GET.q %}
43
+ <input type="hidden" name="q" value="{{ request.GET.q }}">
44
+ {% endif %}
29
45
 
30
- {% if request.GET.o %}
31
- <input type="hidden" name="o" value="{{ request.GET.o }}">
32
- {% endif %}
46
+ {% if request.GET.o %}
47
+ <input type="hidden" name="o" value="{{ request.GET.o }}">
48
+ {% endif %}
33
49
  {% endif %}
34
50
 
35
51
 
@@ -38,11 +54,11 @@
38
54
  {% endfor %}
39
55
 
40
56
  {% if cl.model_admin.list_filter_submit %}
41
- <div class="bg-gray-50 border-gray-200 border-t bottom-4 fixed px-6 py-3 right-4 rounded-b w-96 dark:bg-gray-700 dark:border-gray-600">
42
- <button type="submit" class="bg-primary-600 block border border-transparent font-medium px-3 py-2 rounded-md self-end text-sm text-white w-full">
43
- {% trans "Apply Filters" %}
44
- </button>
45
- </div>
57
+ <div class="bg-gray-50 border-gray-200 border-t bottom-4 fixed px-6 py-3 right-4 rounded-b w-96 dark:bg-gray-700 dark:border-gray-600">
58
+ <button type="submit" class="bg-primary-600 block border border-transparent font-medium px-3 py-2 rounded-md self-end text-sm text-white w-full">
59
+ {% trans "Apply Filters" %}
60
+ </button>
61
+ </div>
46
62
  </form>
47
63
  {% endif %}
48
64
  </div>
@@ -1,6 +1,6 @@
1
1
  <div class="border flex flex-col flex-grow overflow-hidden p-6 relative rounded-md shadow-sm dark:border-gray-800{% if class %} {{ class }}{% endif %}">
2
2
  {% if title %}
3
- <h2 class="border-b font-semibold mb-6 -mt-2 -mx-6 pb-4 px-6 text-sm text-gray-700 dark:text-gray-200 dark:border-gray-800">
3
+ <h2 class="border-b font-semibold mb-6 -mt-2 -mx-6 pb-4 px-6 text-font-important-light dark:text-font-important-dark dark:border-gray-800">
4
4
  {{ title }}
5
5
  </h2>
6
6
  {% endif %}
@@ -1,7 +1,7 @@
1
1
  {% if items %}
2
2
  <nav class="bg-gray-100 flex gap-2 mb-8 p-1 rounded text-sm dark:bg-white/[.04]{% if class %} {{ class }}{% endif %}">
3
3
  {% for item in items %}
4
- <a href="{{ item.link }}" class="flex flex-row font-medium items-center px-2.5 py-1 rounded {% if item.active %} bg-white shadow-sm text-gray-700 hover:bg-white dark:bg-gray-900 dark:hover:bg-gray-900 dark:text-white{% else %} text-gray-400 hover:bg-gray-700/[.04] hover:text-gray-700 dark:hover:bg-white/[.04] dark:hover:text-white{% endif %}">
4
+ <a href="{{ item.link }}" class="flex flex-row font-medium items-center px-2.5 py-1 rounded {% if item.active %} bg-white shadow-sm text-font-important-light hover:bg-white dark:bg-gray-900 dark:hover:bg-gray-900 dark:text-font-important-dark{% else %}text-font-subtle-light dark:text-font-subtle-dark hover:bg-gray-700/[.04] dark:hover:bg-white/[.04]{% endif %}">
5
5
  {% if item.icon %}
6
6
  <span class="material-symbols-outlined{% if item.title %} mr-2{% endif %}">{{ item.icon }}</span>
7
7
  {% endif %}
@@ -1,3 +1,3 @@
1
- <div class="font-medium text-2xl text-gray-900 dark:text-gray-100{% if class %} {{ class }}{% endif %}">
1
+ <div class="font-semibold text-2xl text-font-important-light tracking-tight dark:text-font-important-dark{% if class %} {{ class }}{% endif %}">
2
2
  {{ children }}
3
3
  </div>
@@ -2,20 +2,20 @@
2
2
 
3
3
  {% if actions %}
4
4
  <td data-label="{% trans "More actions" %}" class="field-actions_holder align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left text-sm before:block before:capitalize before:content-[attr(data-label)] before:mr-auto before:text-gray-500 dark:before:text-gray-300 lg:before:hidden lg:py-3 lg:table-cell dark:border-gray-800 lg:w-px">
5
- {% with action_id=instance_pk|cut:"-" %}
6
- <div class="group leading-none relative" x-data="{ openActionsId{{ action_id }}: false }">
7
- <span x-ref="rowDropdown{{ action_id }}" class="cursor-pointer flex h-7 material-symbols-outlined md-18 -my-1 !leading-7 rounded text-center text-gray-400 w-7 group-hover:bg-gray-100 group-hover:text-gray-700 dark:text-gray-300 group-hover:dark:bg-gray-800 group-hover:dark:text-white" @click="openActionsId{{ action_id }} = !openActionsId{{ action_id }}">
8
- more_horiz
9
- </span>
5
+ {% with action_id=instance_pk|cut:"-" %}
6
+ <div class="group leading-none relative" x-data="{ openActionsId{{ action_id }}: false }">
7
+ <span x-ref="rowDropdown{{ action_id }}" class="cursor-pointer flex h-7 material-symbols-outlined md-18 -my-1 !leading-7 rounded text-center text-gray-400 w-7 group-hover:bg-gray-100 group-hover:text-gray-700 dark:text-font-default-dark group-hover:dark:bg-gray-800 group-hover:dark:text-white" @click="openActionsId{{ action_id }} = !openActionsId{{ action_id }}">
8
+ more_horiz
9
+ </span>
10
10
 
11
- <nav x-anchor.offset.4="$refs.rowDropdown{{ action_id }}" class="bg-white border flex flex-col leading-none py-1 rounded-md shadow-lg text-sm top-7 z-50 w-48 dark:bg-gray-800 dark:border-gray-700" x-cloak x-show="openActionsId{{ action_id }}" @click.outside="openActionsId{{ action_id }} = false">
12
- {% for action in actions %}
13
- <a href="{% url action.raw_path instance_pk %}" class="mx-1 px-3 py-2 rounded-md truncate hover:bg-gray-100 dark:hover:bg-gray-700 dark:hover:text-gray-200"{% for attr_name, attr_value in action.attrs.items %} {{ attr_name }}="{{ attr_value }}"{% endfor %}>
14
- {{ action.title }}
15
- </a>
16
- {% endfor %}
17
- </nav>
18
- </div>
19
- {% endwith %}
11
+ <nav x-anchor.offset.4="$refs.rowDropdown{{ action_id }}" class="bg-white border flex flex-col leading-none py-1 rounded-md shadow-lg text-sm top-7 z-50 w-48 dark:bg-gray-800 dark:border-gray-700" x-cloak x-show="openActionsId{{ action_id }}" @click.outside="openActionsId{{ action_id }} = false">
12
+ {% for action in actions %}
13
+ <a href="{% url action.raw_path instance_pk %}" class="mx-1 px-3 py-2 rounded-md truncate hover:bg-gray-100 dark:hover:bg-gray-700 dark:hover:text-gray-200"{% for attr_name, attr_value in action.attrs.items %} {{ attr_name }}="{{ attr_value }}"{% endfor %}>
14
+ {{ action.title }}
15
+ </a>
16
+ {% endfor %}
17
+ </nav>
18
+ </div>
19
+ {% endwith %}
20
20
  </td>
21
21
  {% endif %}
@@ -6,13 +6,13 @@
6
6
  {% if group.items %}
7
7
  {% has_nav_item_active group.items as has_active %}
8
8
 
9
- <div class="mb-3" {% if group.collapsible %}x-data="{navigationOpen: {% if has_active %}true{% else %}false{% endif %}}"{% endif %}>
9
+ <div class="hidden mb-3 has-[ol]:has-[li]:block" {% if group.collapsible %}x-data="{navigationOpen: {% if has_active %}true{% else %}false{% endif %}}"{% endif %}>
10
10
  {% if group.separator %}
11
11
  <hr class="border-t border-gray-200 mx-6 my-2 dark:border-gray-800" />
12
12
  {% endif %}
13
13
 
14
14
  {% if group.title %}
15
- <h2 class="font-semibold flex flex-row items-center mb-1 mx-3 py-1.5 px-3 select-none text-gray-900 text-sm dark:text-gray-100 {% if group.collapsible %}cursor-pointer{% endif %}" {% if group.collapsible %}x-on:click="navigationOpen = !navigationOpen"{% endif %}>
15
+ <h2 class="font-semibold flex flex-row items-center mb-1 mx-3 py-1.5 px-3 select-none text-font-important-light text-sm dark:text-font-important-dark {% if group.collapsible %}cursor-pointer{% endif %}" {% if group.collapsible %}x-on:click="navigationOpen = !navigationOpen"{% endif %}>
16
16
  {{ group.title }}
17
17
 
18
18
  {% if group.collapsible %}
@@ -27,7 +27,7 @@
27
27
  {% for item in group.items %}
28
28
  {% if item.has_permission %}
29
29
  <li>
30
- <a href="{% if item.link_callback %}{{ item.link_callback }}{% else %}{{ item.link }}{% endif %}" class="flex h-11 items-center -mx-3 px-3 py-2 rounded-md {% if item.active %}bg-gray-100 font-semibold text-primary-600 dark:bg-white/[.06] dark:text-primary-500{% else %} hover:text-gray-700 hover:dark:text-gray-200{% endif %}">
30
+ <a href="{% if item.link_callback %}{{ item.link_callback }}{% else %}{{ item.link }}{% endif %}" class="flex h-11 items-center -mx-3 px-3 py-2 rounded-md {% if item.active %}bg-gray-100 font-semibold text-primary-600 dark:bg-white/[.06] dark:text-primary-500{% endif %}">
31
31
  {% if item.icon %}
32
32
  <span class="material-symbols-outlined md-18 mr-3 w-4.5">
33
33
  {{ item.icon }}
@@ -52,14 +52,14 @@
52
52
  {% endif %}
53
53
  {% endfor %}
54
54
  </ol>
55
- {% endif %}
56
- </div>
55
+ </div>
56
+ {% endif %}
57
57
  {% endfor %}
58
58
  </div>
59
59
 
60
60
  {% if sidebar_show_all_applications %}
61
61
  <div class="mt-auto" x-data="{ openAllApplications: false }">
62
- <a class="cursor-pointer flex items-center px-6 py-3 text-sm hover:text-gray-700 dark:text-gray-300 hover:dark:text-gray-200" x-on:click="openAllApplications = !openAllApplications">
62
+ <a class="cursor-pointer flex items-center px-6 py-3 text-sm dark:text-font-default-dark" x-on:click="openAllApplications = !openAllApplications">
63
63
  <span class="material-symbols-outlined md-18 mr-3">
64
64
  apps
65
65
  </span>
@@ -75,14 +75,14 @@
75
75
  <div class="bg-white flex flex-col h-full overflow-x-hidden overflow-y-auto py-5 px-8 relative text-sm w-80 z-20 dark:bg-gray-900 dark:border-r dark:border-gray-800" x-on:click.outside="openAllApplications = false" x-on:keydown.escape.window="openAllApplications = false">
76
76
  {% for app in app_list %}
77
77
  <div class="mb-6 last:mb-0">
78
- <h2 class="mb-4 font-semibold text-gray-900 truncate dark:text-gray-100">
78
+ <h2 class="mb-4 font-semibold text-font-important-light truncate dark:text-font-important-dark">
79
79
  {{ app.name }}
80
80
  </h2>
81
81
 
82
82
  <ul>
83
83
  {% for model in app.models %}
84
84
  <li class="block mb-4 last:mb-0">
85
- <a href="{{ model.admin_url }}" class="block truncate hover:text-gray-700 dark:hover:text-gray-200">
85
+ <a href="{{ model.admin_url }}" class="block truncate">
86
86
  {{ model.name }}
87
87
  </a>
88
88
  </li>
@@ -3,7 +3,7 @@
3
3
  <span class="flex gap-4 items-center">
4
4
  {% if value.3 and value.3.path %}
5
5
  <span class="bg-center bg-cover bg-white flex font-medium justify-center overflow-hidden dark:bg-gray-900 dark:border-gray-700 {% if value.3.squared %}rounded-sm{% else %}rounded-full{% endif %}{% if not value.3.borderless %} border{% endif %}{% if not value.3.width or not value.3.height %} h-8 max-w-8 min-w-8{% endif %}">
6
- <img loading="lazy" src="{{ value.3.path }}" class="object-cover" {% if value.3.width %}width="{{ value.3.width }}"{% endif %} {% if value.3.height %}height="{{ value.3.height }}"{% endif %} alt="{% trans "Record picture" %}" />
6
+ <img loading="lazy" src="{{ value.3.path }}" class="max-w-none object-cover" {% if value.3.width %}width="{{ value.3.width }}"{% endif %} {% if value.3.height %}height="{{ value.3.height }}"{% endif %} alt="{% trans "Record picture" %}" />
7
7
  </span>
8
8
  {% elif value.2 %}
9
9
  <span class="bg-white border flex font-medium h-8 justify-center items-center rounded-full text-xs uppercase w-8 dark:bg-gray-900 dark:border-gray-700">
@@ -21,7 +21,7 @@
21
21
  {% include "unfold/helpers/help_text.html" with help_text=field.field.help_text %}
22
22
  </div>
23
23
  {% endif %}
24
- </div>
24
+ </div>
25
25
 
26
26
  {% if field.errors %}
27
27
  <div class="mt-1 text-red-600 text-sm dark:text-red-500">
@@ -52,7 +52,7 @@
52
52
  </div>
53
53
  {% endif %}
54
54
  {% else %}
55
- <div class="{% if adminform.model_admin.compressed_fields %} min-w-48 lg:mt-2 w-48{% endif %}">
55
+ <div class="{% if adminform.model_admin.compressed_fields %}lg:min-w-48 lg:mt-2 lg:w-48{% endif %}">
56
56
  {{ field.label_tag }}
57
57
  </div>
58
58
 
@@ -3,12 +3,12 @@
3
3
  {% with tabs=adminform|tabs %}
4
4
  {% if tabs %}
5
5
  <div x-data="{openTab: null}" x-show="activeTab == 'general'">
6
- <ul class="bg-gray-100 border border-transparent flex gap-10 mb-6 px-4 py-3 rounded-md text-gray-500 text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-gray-300">
6
+ <ul class="bg-gray-100 border border-transparent flex gap-10 mb-6 px-4 py-3 rounded-md text-font-default-light text-sm lg:-mx-4 dark:bg-white/[.02] dark:border dark:border-gray-800 dark:text-font-default-dark">
7
7
  {% for fieldset in tabs %}
8
8
  <li>
9
9
  <a class="cursor-pointer font-semibold hover:text-gray-700 dark:hover:text-white"
10
- x-on:click="openTab = '{{ forloop.counter0 }}-{{ fieldset.name|slugify }}'"
11
- x-bind:class="openTab == '{{ forloop.counter0 }}-{{ fieldset.name|slugify }}'{% if forloop.first %} || openTab == null{% endif %} ? 'text-gray-700 dark:text-white' : ''">
10
+ x-on:click="openTab = '{{ forloop.counter0 }}-{{ fieldset.name|slugify }}'"
11
+ x-bind:class="openTab == '{{ forloop.counter0 }}-{{ fieldset.name|slugify }}'{% if forloop.first %} || openTab == null{% endif %} ? 'text-font-important-light dark:text-font-important-dark' : ''">
12
12
  {{ fieldset.name }}
13
13
  </a>
14
14
  </li>
@@ -17,7 +17,7 @@
17
17
 
18
18
  {% for fieldset in tabs %}
19
19
  <div class="tab-wrapper{% if fieldset.name %} fieldset-{{ fieldset.name|slugify }} fieldset-{{ forloop.counter0 }}-{{ fieldset.name|slugify }}{% endif %}"
20
- x-show="openTab == '{{ forloop.counter0 }}-{{ fieldset.name|slugify }}'{% if forloop.first %} || openTab == null{% endif %}">
20
+ x-show="openTab == '{{ forloop.counter0 }}-{{ fieldset.name|slugify }}'{% if forloop.first %} || openTab == null{% endif %}">
21
21
  {% include 'admin/includes/fieldset.html' %}
22
22
  </div>
23
23
  {% endfor %}
@@ -1,4 +1,4 @@
1
- <label for="{{ field.id_for_label }}" class="block text-gray-900 text-sm dark:text-gray-200{% if field.field.widget.input_type == "checkbox" %}{% else %} font-medium mb-2{% endif %}">
1
+ <label for="{{ field.id_for_label }}" class="block text-font-important-light dark:text-font-important-dark{% if field.field.widget.input_type == "checkbox" %}{% else %} font-medium mb-2{% endif %}">
2
2
  {{ field.label }}
3
3
 
4
4
  {% if field.field.required %}
@@ -1,16 +1,16 @@
1
1
  <span class="inline-block font-semibold leading-normal px-2 py-1 rounded text-xxs uppercase whitespace-nowrap
2
- {% if type == 'info' %}
3
- bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400
4
- {% elif type == 'danger' %}
5
- bg-red-100 text-red-700 dark:bg-red-500/20 dark:text-red-400
6
- {% elif type == 'warning' %}
7
- bg-orange-100 text-orange-700 dark:bg-orange-500/20 dark:text-orange-400
8
- {% elif type == 'success' %}
9
- bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-400
10
- {% elif type == 'primary' %}
11
- bg-primary-100 text-primary-700 dark:bg-primary-500/20 dark:text-primary-400
12
- {% else %}
13
- bg-gray-100 text-gray-700 dark:bg-gray-500/20 dark:text-gray-400
14
- {% endif %}">
2
+ {% if type == 'info' %}
3
+ bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400
4
+ {% elif type == 'danger' %}
5
+ bg-red-100 text-red-700 dark:bg-red-500/20 dark:text-red-400
6
+ {% elif type == 'warning' %}
7
+ bg-orange-100 text-orange-700 dark:bg-orange-500/20 dark:text-orange-400
8
+ {% elif type == 'success' %}
9
+ bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-400
10
+ {% elif type == 'primary' %}
11
+ bg-primary-100 text-primary-700 dark:bg-primary-500/20 dark:text-primary-400
12
+ {% else %}
13
+ bg-gray-100 text-gray-700 dark:bg-gray-500/20 dark:text-gray-400
14
+ {% endif %}">
15
15
  {{ text }}
16
16
  </span>
@@ -1,18 +1,18 @@
1
1
  {% if messages %}
2
2
  <ul>
3
3
  {% for message in messages %}
4
- <li class="mb-3 px-3 py-3 rounded-md text-sm last:mb-8
5
- {% if message.tags == 'success' %}
6
- bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-400
7
- {% elif message.tags == 'warning' %}
8
- bg-orange-100 text-orange-700 dark:bg-orange-500/20 dark:text-orange-400
9
- {% elif message.tags == 'error' %}
10
- bg-red-100 text-red-700 dark:bg-red-500/20 dark:text-red-400
11
- {% elif message.tags == 'info' %}
12
- bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400
13
- {% else %}
14
- bg-gray-100 text-gray-700 dark:bg-gray-500/20 dark:text-gray-400
15
- {% endif %}">
4
+ <li class="{{ message.tags }} mb-3 px-3 py-3 rounded-md text-sm last:mb-8
5
+ {% if message.tags == 'success' %}
6
+ bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-400
7
+ {% elif message.tags == 'warning' %}
8
+ bg-orange-100 text-orange-700 dark:bg-orange-500/20 dark:text-orange-400
9
+ {% elif message.tags == 'error' %}
10
+ bg-red-100 text-red-700 dark:bg-red-500/20 dark:text-red-400
11
+ {% elif message.tags == 'info' %}
12
+ bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400
13
+ {% else %}
14
+ bg-gray-100 text-gray-700 dark:bg-gray-500/20 dark:text-gray-400
15
+ {% endif %}">
16
16
  {{ message|capfirst }}
17
17
  </li>
18
18
  {% endfor %}
@@ -1,10 +1,10 @@
1
1
  {% load i18n %}
2
2
 
3
3
  <div class="relative min-w-sidebar transition-width w-sidebar z-30">
4
- <nav id="nav-sidebar" class="bg-gray-50 border-r border-gray-200 fixed max-h-screen transition-width w-sidebar dark:bg-gray-900 dark:border-gray-800">
4
+ <nav id="nav-sidebar" class="bg-gray-50 border-r border-gray-200 bottom-0 fixed max-h-screen top-0 transition-width w-sidebar dark:bg-gray-900 dark:border-gray-800">
5
5
  <div class="flex flex-col min-h-screen min-w-sidebar dark:bg-gray-950/20">
6
6
  <div class="border-b border-gray-200 mb-5 py-3 dark:border-gray-800">
7
- <div class="flex font-medium h-10 items-center px-6 text-gray-900 tracking-tight dark:text-gray-100 xl:text-base">
7
+ <div class="flex font-semibold h-10 items-center px-6 text-font-important-light tracking-tight dark:text-font-important-dark xl:text-base">
8
8
  {% if site_logo %}
9
9
  {% include "unfold/helpers/site_logo.html" %}
10
10
  {% elif branding %}