vanta-admin 0.9.0__tar.gz → 0.10.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 (58) hide show
  1. {vanta_admin-0.9.0/vanta_admin.egg-info → vanta_admin-0.10.0}/PKG-INFO +3 -1
  2. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/README.md +2 -0
  3. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/pyproject.toml +1 -1
  4. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.admin.css +23 -6
  5. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.base.css +4 -0
  6. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.tokens.css +9 -0
  7. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/js/vanta-theme.js +34 -0
  8. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/nav_sidebar.html +18 -0
  9. {vanta_admin-0.9.0 → vanta_admin-0.10.0/vanta_admin.egg-info}/PKG-INFO +3 -1
  10. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/LICENSE +0 -0
  11. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/MANIFEST.in +0 -0
  12. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/setup.cfg +0 -0
  13. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/__init__.py +0 -0
  14. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/apps.py +0 -0
  15. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.css +0 -0
  16. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.fonts.css +0 -0
  17. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.login.css +0 -0
  18. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/theme.responsive.css +0 -0
  19. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/css/two_factor.css +0 -0
  20. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/OFL-Fira-Code.txt +0 -0
  21. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/OFL-Inter.txt +0 -0
  22. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/OFL-JetBrains-Mono.txt +0 -0
  23. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/fira-code-variable.woff2 +0 -0
  24. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/inter-italic-variable.woff2 +0 -0
  25. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/inter-variable.woff2 +0 -0
  26. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/jetbrains-mono-italic-variable.woff2 +0 -0
  27. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/fonts/jetbrains-mono-variable.woff2 +0 -0
  28. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/img/favicon.png +0 -0
  29. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/img/icon-no.svg +0 -0
  30. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/img/icon-unknown.svg +0 -0
  31. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/img/icon-yes.svg +0 -0
  32. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/js/changelist.js +0 -0
  33. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/js/forms.js +0 -0
  34. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/js/messages.js +0 -0
  35. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/static/admin/js/sidebar.js +0 -0
  36. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/app_index.html +0 -0
  37. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/base.html +0 -0
  38. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/base_site.html +0 -0
  39. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/change_form.html +0 -0
  40. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/change_list.html +0 -0
  41. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/filter.html +0 -0
  42. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/includes/breadcrumbs.html +0 -0
  43. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/index.html +0 -0
  44. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/login.html +0 -0
  45. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/admin/pagination.html +0 -0
  46. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/_base.html +0 -0
  47. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/_base_focus.html +0 -0
  48. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/_wizard_actions.html +0 -0
  49. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/core/login.html +0 -0
  50. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/core/setup_complete.html +0 -0
  51. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/profile/disable.html +0 -0
  52. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templates/two_factor/profile/profile.html +0 -0
  53. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templatetags/__init__.py +0 -0
  54. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin/templatetags/admin_theme.py +0 -0
  55. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin.egg-info/SOURCES.txt +0 -0
  56. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin.egg-info/dependency_links.txt +0 -0
  57. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin.egg-info/requires.txt +0 -0
  58. {vanta_admin-0.9.0 → vanta_admin-0.10.0}/vanta_admin.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vanta-admin
3
- Version: 0.9.0
3
+ Version: 0.10.0
4
4
  Summary: A sharp, dark, and portable Django admin theme forged for builders who want the admin to feel less default.
5
5
  Author: oli-dev0
6
6
  License-Expression: MIT
@@ -64,6 +64,8 @@ feels more deliberate in everyday use.
64
64
  access, 2FA settings, logout, and a Vanta support link.
65
65
  - A 12-hour and 24-hour time-format preference for changelist date/time values,
66
66
  stored in the browser for each admin user.
67
+ - A small, normal, and large font-size preference for the admin interface, stored
68
+ in the browser for each admin user.
67
69
  - Shorter changelist date formatting that makes date-heavy tables easier to
68
70
  scan.
69
71
  - Simpler breadcrumbs on edit pages, so the page path feels less cluttered.
@@ -39,6 +39,8 @@ feels more deliberate in everyday use.
39
39
  access, 2FA settings, logout, and a Vanta support link.
40
40
  - A 12-hour and 24-hour time-format preference for changelist date/time values,
41
41
  stored in the browser for each admin user.
42
+ - A small, normal, and large font-size preference for the admin interface, stored
43
+ in the browser for each admin user.
42
44
  - Shorter changelist date formatting that makes date-heavy tables easier to
43
45
  scan.
44
46
  - Simpler breadcrumbs on edit pages, so the page path feels less cluttered.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vanta-admin"
7
- version = "0.9.0"
7
+ version = "0.10.0"
8
8
  description = "A sharp, dark, and portable Django admin theme forged for builders who want the admin to feel less default."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -563,18 +563,29 @@ html[data-theme="light"] .admin-sidebar__account-summary {
563
563
  }
564
564
 
565
565
  .admin-sidebar__theme-controls,
566
- .admin-sidebar__time-controls {
566
+ .admin-sidebar__time-controls,
567
+ .admin-sidebar__font-size-controls {
567
568
  display: grid;
568
- grid-template-columns: 1fr 1fr;
569
569
  gap: 0.18rem;
570
570
  padding: 0.14rem;
571
- width: 4.18rem;
572
571
  border-radius: 0.3rem;
573
572
  background: var(--surface-muted);
574
573
  }
575
574
 
575
+ .admin-sidebar__theme-controls,
576
+ .admin-sidebar__time-controls {
577
+ grid-template-columns: 1fr 1fr;
578
+ width: 4.18rem;
579
+ }
580
+
581
+ .admin-sidebar__font-size-controls {
582
+ grid-template-columns: repeat(3, 1fr);
583
+ width: 4.18rem;
584
+ }
585
+
576
586
  .admin-sidebar__theme-button,
577
- .admin-sidebar__time-button {
587
+ .admin-sidebar__time-button,
588
+ .admin-sidebar__font-size-button {
578
589
  display: inline-flex;
579
590
  align-items: center;
580
591
  justify-content: center;
@@ -595,6 +606,10 @@ html[data-theme="light"] .admin-sidebar__account-summary {
595
606
  letter-spacing: 0;
596
607
  }
597
608
 
609
+ .admin-sidebar__font-size-button {
610
+ letter-spacing: 0;
611
+ }
612
+
598
613
  .admin-sidebar__theme-button svg {
599
614
  width: 0.78rem;
600
615
  height: 0.78rem;
@@ -602,7 +617,8 @@ html[data-theme="light"] .admin-sidebar__account-summary {
602
617
 
603
618
  html[data-theme="dark"] .admin-sidebar__theme-button--dark,
604
619
  html[data-theme="light"] .admin-sidebar__theme-button--light,
605
- .admin-sidebar__time-button[aria-pressed="true"] {
620
+ .admin-sidebar__time-button[aria-pressed="true"],
621
+ .admin-sidebar__font-size-button[aria-pressed="true"] {
606
622
  color: var(--accent-strong);
607
623
  background: var(--accent-soft);
608
624
  }
@@ -611,7 +627,8 @@ html[data-theme="light"] .admin-sidebar__theme-button--light {
611
627
  background: var(--accent-softer);
612
628
  }
613
629
 
614
- html[data-theme="light"] .admin-sidebar__time-button[aria-pressed="true"] {
630
+ html[data-theme="light"] .admin-sidebar__time-button[aria-pressed="true"],
631
+ html[data-theme="light"] .admin-sidebar__font-size-button[aria-pressed="true"] {
615
632
  background: var(--accent-softer);
616
633
  }
617
634
 
@@ -5,6 +5,10 @@ body {
5
5
  min-height: 100%;
6
6
  }
7
7
 
8
+ html {
9
+ font-size: var(--admin-font-size);
10
+ }
11
+
8
12
  body {
9
13
  margin: 0;
10
14
  color: var(--admin-text);
@@ -17,12 +17,21 @@
17
17
  --admin-radius-xl: var(--radius-xl);
18
18
  --admin-transition: 160ms ease;
19
19
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
20
+ --admin-font-size: 100%;
20
21
  --site-font-body: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
21
22
  --site-font-mono: "JetBrains Mono", "Fira Code", Consolas, monospace;
22
23
  --admin-font-family: var(--site-font-body);
23
24
  --admin-error-font: Arial, "Helvetica Neue", Helvetica, sans-serif;
24
25
  }
25
26
 
27
+ html[data-admin-font-size="small"] {
28
+ --admin-font-size: 94%;
29
+ }
30
+
31
+ html[data-admin-font-size="large"] {
32
+ --admin-font-size: 108%;
33
+ }
34
+
26
35
  :root,
27
36
  html[data-theme="dark"],
28
37
  body[data-theme="dark"],
@@ -3,10 +3,13 @@
3
3
  {
4
4
  const validThemeValues = new Set(['light', 'dark']);
5
5
  const validTimeFormatValues = new Set(['12', '24']);
6
+ const validFontSizeValues = new Set(['small', 'normal', 'large']);
6
7
  const timeFormatStorageKey = 'django.admin.theme.timeFormat';
8
+ const fontSizeStorageKey = 'django.admin.theme.fontSize';
7
9
  const root = document.documentElement;
8
10
  const themeButtons = document.querySelectorAll('[data-admin-theme-value]');
9
11
  const timeFormatButtons = document.querySelectorAll('[data-admin-time-format-value]');
12
+ const fontSizeButtons = document.querySelectorAll('[data-admin-font-size-value]');
10
13
 
11
14
  function updateThemeButtons(theme) {
12
15
  themeButtons.forEach((button) => {
@@ -30,6 +33,27 @@
30
33
  });
31
34
  }
32
35
 
36
+ function updateFontSizeButtons(fontSize) {
37
+ fontSizeButtons.forEach((button) => {
38
+ button.setAttribute('aria-pressed', String(button.dataset.adminFontSizeValue === fontSize));
39
+ });
40
+ }
41
+
42
+ function applyFontSize(fontSize) {
43
+ if (!validFontSizeValues.has(fontSize)) {
44
+ return;
45
+ }
46
+
47
+ if (fontSize === 'normal') {
48
+ delete root.dataset.adminFontSize;
49
+ } else {
50
+ root.dataset.adminFontSize = fontSize;
51
+ }
52
+
53
+ localStorage.setItem(fontSizeStorageKey, fontSize);
54
+ updateFontSizeButtons(fontSize);
55
+ }
56
+
33
57
  function formatHour(hour, meridiem) {
34
58
  let formattedHour = Number(hour);
35
59
 
@@ -150,4 +174,14 @@
150
174
  applyTimeFormat(button.dataset.adminTimeFormatValue);
151
175
  });
152
176
  });
177
+
178
+ const storedFontSize = localStorage.getItem(fontSizeStorageKey);
179
+ const initialFontSize = validFontSizeValues.has(storedFontSize) ? storedFontSize : 'normal';
180
+ applyFontSize(initialFontSize);
181
+
182
+ fontSizeButtons.forEach((button) => {
183
+ button.addEventListener('click', () => {
184
+ applyFontSize(button.dataset.adminFontSizeValue);
185
+ });
186
+ });
153
187
  }
@@ -18,6 +18,7 @@
18
18
  <symbol id="admin-icon-alert-triangle" viewBox="0 0 24 24"><path d="M10.3 4.3 2.8 17.2A2 2 0 0 0 4.5 20h15a2 2 0 0 0 1.7-2.8L13.7 4.3a2 2 0 0 0-3.4 0Z" /><path d="M12 9v4" /><path d="M12 17h.01" /></symbol>
19
19
  <symbol id="admin-icon-heart" viewBox="0 0 24 24"><path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.6l-1-1a5.5 5.5 0 0 0-7.8 7.8l1 1L12 21l7.8-7.6 1-1a5.5 5.5 0 0 0 0-7.8Z" transform="translate(12 12) scale(.82) translate(-12 -12)" fill="currentColor" stroke="none" /></symbol>
20
20
  <symbol id="admin-icon-clock" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9" /><path d="M12 7v6l4 2" /></symbol>
21
+ <symbol id="admin-icon-font-size" viewBox="0 0 24 24"><path d="M4 19 9 5h2l5 14" /><path d="M6.4 13h7.2" /><path d="M15 11h5" /><path d="M17.5 8.5v5" /></symbol>
21
22
  <symbol id="admin-icon-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="4" /><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" /></symbol>
22
23
  <symbol id="admin-icon-moon" viewBox="0 0 24 24"><path d="M21 12.8A8.5 8.5 0 1 1 11.2 3 6.7 6.7 0 0 0 21 12.8Z" /></symbol>
23
24
  <symbol id="admin-icon-options" viewBox="0 0 512 512">
@@ -171,6 +172,23 @@
171
172
  </button>
172
173
  </span>
173
174
  </div>
175
+ <div class="admin-sidebar__display-row">
176
+ <span class="admin-sidebar__display-label">
177
+ <svg aria-hidden="true"><use href="#admin-icon-font-size"></use></svg>
178
+ <span>Font size</span>
179
+ </span>
180
+ <span class="admin-sidebar__font-size-controls" aria-label="Font size controls">
181
+ <button class="admin-sidebar__font-size-button" type="button" data-admin-font-size-value="small">
182
+ <span>S</span>
183
+ </button>
184
+ <button class="admin-sidebar__font-size-button" type="button" data-admin-font-size-value="normal">
185
+ <span>M</span>
186
+ </button>
187
+ <button class="admin-sidebar__font-size-button" type="button" data-admin-font-size-value="large">
188
+ <span>L</span>
189
+ </button>
190
+ </span>
191
+ </div>
174
192
  </div>
175
193
 
176
194
  <div class="admin-sidebar__account-section admin-sidebar__account-links">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vanta-admin
3
- Version: 0.9.0
3
+ Version: 0.10.0
4
4
  Summary: A sharp, dark, and portable Django admin theme forged for builders who want the admin to feel less default.
5
5
  Author: oli-dev0
6
6
  License-Expression: MIT
@@ -64,6 +64,8 @@ feels more deliberate in everyday use.
64
64
  access, 2FA settings, logout, and a Vanta support link.
65
65
  - A 12-hour and 24-hour time-format preference for changelist date/time values,
66
66
  stored in the browser for each admin user.
67
+ - A small, normal, and large font-size preference for the admin interface, stored
68
+ in the browser for each admin user.
67
69
  - Shorter changelist date formatting that makes date-heavy tables easier to
68
70
  scan.
69
71
  - Simpler breadcrumbs on edit pages, so the page path feels less cluttered.
File without changes
File without changes
File without changes