django-spire 0.19.4__py3-none-any.whl → 0.19.5__py3-none-any.whl

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 (42) hide show
  1. django_spire/consts.py +1 -1
  2. django_spire/core/static/django_spire/css/app-background.css +6 -0
  3. django_spire/core/static/django_spire/css/app-import.css +1 -0
  4. django_spire/core/static/django_spire/css/app-override.css +0 -0
  5. django_spire/core/static/django_spire/css/themes/ayu/app-dark.css +2 -0
  6. django_spire/core/static/django_spire/css/themes/ayu/app-light.css +2 -0
  7. django_spire/core/static/django_spire/css/themes/catppuccin/app-dark.css +2 -0
  8. django_spire/core/static/django_spire/css/themes/catppuccin/app-light.css +2 -0
  9. django_spire/core/static/django_spire/css/themes/default/app-dark.css +2 -0
  10. django_spire/core/static/django_spire/css/themes/default/app-light.css +2 -0
  11. django_spire/core/static/django_spire/css/themes/gruvbox/app-dark.css +2 -0
  12. django_spire/core/static/django_spire/css/themes/gruvbox/app-light.css +2 -0
  13. django_spire/core/static/django_spire/css/themes/material/app-dark.css +2 -0
  14. django_spire/core/static/django_spire/css/themes/material/app-light.css +2 -0
  15. django_spire/core/static/django_spire/css/themes/nord/app-dark.css +2 -0
  16. django_spire/core/static/django_spire/css/themes/nord/app-light.css +2 -0
  17. django_spire/core/static/django_spire/css/themes/one-dark/app-dark.css +2 -0
  18. django_spire/core/static/django_spire/css/themes/one-dark/app-light.css +2 -0
  19. django_spire/core/static/django_spire/css/themes/palenight/app-dark.css +2 -0
  20. django_spire/core/static/django_spire/css/themes/palenight/app-light.css +2 -0
  21. django_spire/core/static/django_spire/css/themes/rose-pine/app-dark.css +2 -0
  22. django_spire/core/static/django_spire/css/themes/rose-pine/app-light.css +2 -0
  23. django_spire/core/static/django_spire/css/themes/tokyo-night/app-dark.css +2 -0
  24. django_spire/core/static/django_spire/css/themes/tokyo-night/app-light.css +2 -0
  25. django_spire/theme/enums.py +0 -3
  26. django_spire/theme/models.py +0 -3
  27. django_spire/theme/tests/test_context_processor.py +6 -6
  28. django_spire/theme/tests/test_enums.py +0 -3
  29. django_spire/theme/tests/test_integration.py +2 -2
  30. django_spire/theme/tests/test_model.py +23 -24
  31. django_spire/theme/tests/test_views/test_json_views.py +4 -4
  32. {django_spire-0.19.4.dist-info → django_spire-0.19.5.dist-info}/METADATA +1 -1
  33. {django_spire-0.19.4.dist-info → django_spire-0.19.5.dist-info}/RECORD +36 -41
  34. django_spire/core/static/django_spire/css/themes/dracula/app-dark.css +0 -71
  35. django_spire/core/static/django_spire/css/themes/dracula/app-light.css +0 -66
  36. django_spire/core/static/django_spire/css/themes/oceanic-next/app-dark.css +0 -71
  37. django_spire/core/static/django_spire/css/themes/oceanic-next/app-light.css +0 -66
  38. django_spire/core/static/django_spire/css/themes/synthwave/app-dark.css +0 -71
  39. django_spire/core/static/django_spire/css/themes/synthwave/app-light.css +0 -66
  40. {django_spire-0.19.4.dist-info → django_spire-0.19.5.dist-info}/WHEEL +0 -0
  41. {django_spire-0.19.4.dist-info → django_spire-0.19.5.dist-info}/licenses/LICENSE.md +0 -0
  42. {django_spire-0.19.4.dist-info → django_spire-0.19.5.dist-info}/top_level.txt +0 -0
django_spire/consts.py CHANGED
@@ -1,4 +1,4 @@
1
- __VERSION__ = '0.19.4'
1
+ __VERSION__ = '0.19.5'
2
2
 
3
3
  MAINTENANCE_MODE_SETTINGS_NAME = 'MAINTENANCE_MODE'
4
4
 
@@ -33,6 +33,8 @@
33
33
  --app-bg-alt-layer-three: var(--app-alt-layer-three);
34
34
  --app-bg-alt-layer-four: var(--app-alt-layer-four);
35
35
 
36
+ --app-bg-card-header: var(--app-card-header);
37
+
36
38
  --app-bg-side-navigation: var(--app-side-navigation-bg-color);
37
39
 
38
40
  --app-bg-top-navigation: var(--app-top-navigation-bg-color);
@@ -151,6 +153,10 @@
151
153
  background-color: var(--app-bg-alt-layer-four) !important;
152
154
  }
153
155
 
156
+ .bg-app-card-header {
157
+ background-color: var(--app-bg-card-header) !important;
158
+ }
159
+
154
160
  .bg-app-side-navigation, .bg-app-side-navigation-hover:hover {
155
161
  background-color: var(--app-bg-side-navigation) !important;
156
162
  }
@@ -10,3 +10,4 @@
10
10
  @import url('app-side-panel.css');
11
11
  @import url('app-text.css');
12
12
  @import url('app-template.css');
13
+ @import url('app-override.css');
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #232834;
34
34
  --app-alt-layer-four: #343a46;
35
35
 
36
+ --app-card-header: #1f2430;
37
+
36
38
  --app-default-attribute-title-color: #bfbdb6;
37
39
  --app-default-button-text-color: #0f1419;
38
40
  --app-default-text-color: #bfbdb6;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #f7f8f9;
34
34
  --app-alt-layer-four: #eff1f3;
35
35
 
36
+ --app-card-header: #f0f0f0;
37
+
36
38
  --app-default-attribute-title-color: #828c99;
37
39
  --app-default-button-text-color: #fafafa;
38
40
  --app-default-text-color: #5c6773;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #393952;
34
34
  --app-alt-layer-four: #4a4b61;
35
35
 
36
+ --app-card-header: #313244;
37
+
36
38
  --app-default-attribute-title-color: #cdd6f4;
37
39
  --app-default-button-text-color: #1e1e2e;
38
40
  --app-default-text-color: #cdd6f4;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #a6adc8;
34
34
  --app-alt-layer-four: #9399b2;
35
35
 
36
+ --app-card-header: #dce0e8;
37
+
36
38
  --app-default-attribute-title-color: #6c6f85;
37
39
  --app-default-button-text-color: #eff1f5;
38
40
  --app-default-text-color: #4c4f69;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #292c2d;
34
34
  --app-alt-layer-four: #343738;
35
35
 
36
+ --app-card-header: #232526;
37
+
36
38
  --app-default-attribute-title-color: #ffffff;
37
39
  --app-default-button-text-color: #181818;
38
40
  --app-default-text-color: #ffffff;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #fcfcfc;
34
34
  --app-alt-layer-four: #f8f9fa;
35
35
 
36
+ --app-card-header: #f5f5f6;
37
+
36
38
  --app-default-attribute-title-color: #797c7d;
37
39
  --app-default-button-text-color: #ffffff;
38
40
  --app-default-text-color: #181818;
@@ -28,6 +28,8 @@
28
28
  --app-layer-three: #504945;
29
29
  --app-layer-four: #665c54;
30
30
 
31
+ --app-card-header: #3c3836;
32
+
31
33
  --app-alt-layer-one: #1d2021;
32
34
  --app-alt-layer-two: #32302f;
33
35
  --app-alt-layer-three: #45403d;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #e5d5b1;
34
34
  --app-alt-layer-four: #d0bfa5;
35
35
 
36
+ --app-card-header: #ebdbb2;
37
+
36
38
  --app-default-attribute-title-color: #665c54;
37
39
  --app-default-button-text-color: #fbf1c7;
38
40
  --app-default-text-color: #3c3836;
@@ -28,6 +28,8 @@
28
28
  --app-layer-three: #2d2d2d;
29
29
  --app-layer-four: #404040;
30
30
 
31
+ --app-card-header: #1e1e1e;
32
+
31
33
  --app-alt-layer-one: #0a0a0a;
32
34
  --app-alt-layer-two: #171717;
33
35
  --app-alt-layer-three: #262626;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #e8e8e8;
34
34
  --app-alt-layer-four: #d8d8d8;
35
35
 
36
+ --app-card-header: #f5f5f5;
37
+
36
38
  --app-default-attribute-title-color: #607d8b;
37
39
  --app-default-button-text-color: #ffffff;
38
40
  --app-default-text-color: #212121;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #3e4758;
34
34
  --app-alt-layer-four: #475164;
35
35
 
36
+ --app-card-header: #3b4252;
37
+
36
38
  --app-default-attribute-title-color: #eceff4;
37
39
  --app-default-button-text-color: #2e3440;
38
40
  --app-default-text-color: #eceff4;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #dfe5ef;
34
34
  --app-alt-layer-four: #c8d0df;
35
35
 
36
+ --app-card-header: #d8dee9;
37
+
36
38
  --app-default-attribute-title-color: #4c566a;
37
39
  --app-default-button-text-color: #eceff4;
38
40
  --app-default-text-color: #2e3440;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #333841;
34
34
  --app-alt-layer-four: #424855;
35
35
 
36
+ --app-card-header: #2c313c;
37
+
36
38
  --app-default-attribute-title-color: #abb2bf;
37
39
  --app-default-button-text-color: #21252b;
38
40
  --app-default-text-color: #abb2bf;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #eeeeef;
34
34
  --app-alt-layer-four: #e0e0e2;
35
35
 
36
+ --app-card-header: #e5e5e6;
37
+
36
38
  --app-default-attribute-title-color: #6c6f93;
37
39
  --app-default-button-text-color: #fafafa;
38
40
  --app-default-text-color: #383a42;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #3e4267;
34
34
  --app-alt-layer-four: #575c7c;
35
35
 
36
+ --app-card-header: #444267;
37
+
36
38
  --app-default-attribute-title-color: #a6accd;
37
39
  --app-default-button-text-color: #292d3e;
38
40
  --app-default-text-color: #a6accd;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #f8f9fc;
34
34
  --app-alt-layer-four: #f0f1f5;
35
35
 
36
+ --app-card-header: #e9eaef;
37
+
36
38
  --app-default-attribute-title-color: #8087a2;
37
39
  --app-default-button-text-color: #fafafa;
38
40
  --app-default-text-color: #4e5579;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #393748;
34
34
  --app-alt-layer-four: #524f67;
35
35
 
36
+ --app-card-header: #26233a;
37
+
36
38
  --app-default-attribute-title-color: #e0def4;
37
39
  --app-default-button-text-color: #191724;
38
40
  --app-default-text-color: #e0def4;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #e9dfd8;
34
34
  --app-alt-layer-four: #d6d2d5;
35
35
 
36
+ --app-card-header: #e6ddd6;
37
+
36
38
  --app-default-attribute-title-color: #797593;
37
39
  --app-default-button-text-color: #faf4ed;
38
40
  --app-default-text-color: #575279;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #292e42;
34
34
  --app-alt-layer-four: #3b4261;
35
35
 
36
+ --app-card-header: #24283b;
37
+
36
38
  --app-default-attribute-title-color: #c0caf5;
37
39
  --app-default-button-text-color: #1a1b26;
38
40
  --app-default-text-color: #c0caf5;
@@ -33,6 +33,8 @@
33
33
  --app-alt-layer-three: #f7f7f8;
34
34
  --app-alt-layer-four: #d6d6d8;
35
35
 
36
+ --app-card-header: #dfe0e5;
37
+
36
38
  --app-default-attribute-title-color: #6f7bb6;
37
39
  --app-default-button-text-color: #d5d6db;
38
40
  --app-default-text-color: #343b58;
@@ -7,15 +7,12 @@ class ThemeFamily(StrEnum):
7
7
  AYU = 'ayu'
8
8
  CATPPUCCIN = 'catppuccin'
9
9
  DEFAULT = 'default'
10
- DRACULA = 'dracula'
11
10
  GRUVBOX = 'gruvbox'
12
11
  MATERIAL = 'material'
13
12
  NORD = 'nord'
14
- OCEANIC_NEXT = 'oceanic-next'
15
13
  ONE_DARK = 'one-dark'
16
14
  PALENIGHT = 'palenight'
17
15
  ROSE_PINE = 'rose-pine'
18
- SYNTHWAVE = 'synthwave'
19
16
  TOKYO_NIGHT = 'tokyo-night'
20
17
 
21
18
 
@@ -19,15 +19,12 @@ class Theme:
19
19
  ThemeFamily.AYU: 'Ayu',
20
20
  ThemeFamily.CATPPUCCIN: 'Catppuccin',
21
21
  ThemeFamily.DEFAULT: 'Default',
22
- ThemeFamily.DRACULA: 'Dracula',
23
22
  ThemeFamily.GRUVBOX: 'Gruvbox',
24
23
  ThemeFamily.MATERIAL: 'Material',
25
24
  ThemeFamily.NORD: 'Nord',
26
- ThemeFamily.OCEANIC_NEXT: 'Oceanic Next',
27
25
  ThemeFamily.ONE_DARK: 'One Dark Pro',
28
26
  ThemeFamily.PALENIGHT: 'Palenight',
29
27
  ThemeFamily.ROSE_PINE: 'Rose Pine',
30
- ThemeFamily.SYNTHWAVE: 'Synthwave',
31
28
  ThemeFamily.TOKYO_NIGHT: 'Tokyo Night',
32
29
  }
33
30
 
@@ -18,14 +18,14 @@ class ThemeContextProcessorTests(TestCase):
18
18
  request = self.factory.get('/')
19
19
  request.COOKIES = {}
20
20
 
21
- with patch('django_spire.conf.settings.DJANGO_SPIRE_DEFAULT_THEME', 'dracula-dark'):
21
+ with patch('django_spire.conf.settings.DJANGO_SPIRE_DEFAULT_THEME', 'gruvbox-dark'):
22
22
  context = theme_context(request)
23
23
 
24
- self.assertEqual(context['DJANGO_SPIRE_DEFAULT_THEME'], 'dracula-dark')
24
+ self.assertEqual(context['DJANGO_SPIRE_DEFAULT_THEME'], 'gruvbox-dark')
25
25
  self.assertIn('theme', context)
26
26
 
27
27
  data = context['theme']
28
- self.assertEqual(data['family'], 'dracula')
28
+ self.assertEqual(data['family'], 'gruvbox')
29
29
  self.assertEqual(data['mode'], 'dark')
30
30
 
31
31
  def test_theme_context_with_cookie(self) -> None:
@@ -45,11 +45,11 @@ class ThemeContextProcessorTests(TestCase):
45
45
  cookie_name = get_theme_cookie_name()
46
46
  request.COOKIES = {cookie_name: 'invalid-theme'}
47
47
 
48
- with patch('django_spire.conf.settings.DJANGO_SPIRE_DEFAULT_THEME', 'dracula-dark'):
48
+ with patch('django_spire.conf.settings.DJANGO_SPIRE_DEFAULT_THEME', 'gruvbox-dark'):
49
49
  context = theme_context(request)
50
50
 
51
51
  data = context['theme']
52
- self.assertEqual(data['family'], 'dracula')
52
+ self.assertEqual(data['family'], 'gruvbox')
53
53
  self.assertEqual(data['mode'], 'dark')
54
54
 
55
55
  def test_theme_context_path_setting(self) -> None:
@@ -70,7 +70,7 @@ class ThemeContextProcessorIntegrationTests(BaseTestCase):
70
70
 
71
71
  def test_theme_context_with_authenticated_client(self) -> None:
72
72
  cookie_name = get_theme_cookie_name()
73
- self.client.cookies[cookie_name] = 'dracula-dark'
73
+ self.client.cookies[cookie_name] = 'gruvbox-dark'
74
74
  response = self.client.get('/')
75
75
  self.assertEqual(response.status_code, 200)
76
76
 
@@ -11,15 +11,12 @@ class ThemeEnumTests(TestCase):
11
11
  'ayu',
12
12
  'catppuccin',
13
13
  'default',
14
- 'dracula',
15
14
  'gruvbox',
16
15
  'material',
17
16
  'nord',
18
- 'oceanic-next',
19
17
  'one-dark',
20
18
  'palenight',
21
19
  'rose-pine',
22
- 'synthwave',
23
20
  'tokyo-night'
24
21
  }
25
22
 
@@ -40,9 +40,9 @@ class ThemeIntegrationTests(BaseTestCase):
40
40
  self.assertEqual(response.status_code, 200)
41
41
 
42
42
  def test_theme_media_integration(self) -> None:
43
- theme = Theme(family=ThemeFamily.DRACULA, mode='dark')
43
+ theme = Theme(family=ThemeFamily.GRUVBOX, mode='dark')
44
44
  stylesheet = theme.stylesheet
45
45
 
46
46
  self.assertIn('django_spire/css/themes/', stylesheet)
47
- self.assertIn('dracula', stylesheet)
47
+ self.assertIn('gruvbox', stylesheet)
48
48
  self.assertIn('app-dark.css', stylesheet)
@@ -27,13 +27,13 @@ class ThemeModelTests(TestCase):
27
27
  self.assertIn(family, Theme.FAMILY_DISPLAY_NAMES)
28
28
 
29
29
  def test_theme_initialization_with_enums(self) -> None:
30
- theme = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
31
- self.assertEqual(theme.family, ThemeFamily.DRACULA)
30
+ theme = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
31
+ self.assertEqual(theme.family, ThemeFamily.GRUVBOX)
32
32
  self.assertEqual(theme.mode, ThemeMode.DARK)
33
33
 
34
34
  def test_theme_initialization_with_strings(self) -> None:
35
- theme = Theme(family='dracula', mode='dark')
36
- self.assertEqual(theme.family, ThemeFamily.DRACULA)
35
+ theme = Theme(family='gruvbox', mode='dark')
36
+ self.assertEqual(theme.family, ThemeFamily.GRUVBOX)
37
37
  self.assertEqual(theme.mode, ThemeMode.DARK)
38
38
 
39
39
  def test_theme_initialization_invalid_family(self) -> None:
@@ -43,16 +43,15 @@ class ThemeModelTests(TestCase):
43
43
 
44
44
  def test_theme_initialization_invalid_mode(self) -> None:
45
45
  with pytest.raises(ValueError) as ctx:
46
- Theme(family='dracula', mode='invalid-mode')
46
+ Theme(family='gruvbox', mode='invalid-mode')
47
47
  self.assertIn('Invalid theme mode', str(ctx.value))
48
48
 
49
49
  def test_from_string_valid(self) -> None:
50
50
  cases = [
51
51
  ('default-light', ThemeFamily.DEFAULT, ThemeMode.LIGHT),
52
- ('dracula-dark', ThemeFamily.DRACULA, ThemeMode.DARK),
52
+ ('gruvbox-dark', ThemeFamily.GRUVBOX, ThemeMode.DARK),
53
53
  ('one-dark-light', ThemeFamily.ONE_DARK, ThemeMode.LIGHT),
54
54
  ('tokyo-night-dark', ThemeFamily.TOKYO_NIGHT, ThemeMode.DARK),
55
- ('oceanic-next-light', ThemeFamily.OCEANIC_NEXT, ThemeMode.LIGHT),
56
55
  ]
57
56
 
58
57
  for string, family, mode in cases:
@@ -62,7 +61,7 @@ class ThemeModelTests(TestCase):
62
61
  self.assertEqual(theme.mode, mode)
63
62
 
64
63
  def test_from_string_empty_with_default(self) -> None:
65
- default = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
64
+ default = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
66
65
  theme = Theme.from_string('', default=default)
67
66
  self.assertEqual(theme, default)
68
67
 
@@ -72,7 +71,7 @@ class ThemeModelTests(TestCase):
72
71
  self.assertEqual(theme.mode, Theme.DEFAULT_MODE)
73
72
 
74
73
  def test_from_string_invalid_with_default(self) -> None:
75
- default = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
74
+ default = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
76
75
  theme = Theme.from_string('invalid', default=default)
77
76
  self.assertEqual(theme, default)
78
77
 
@@ -97,27 +96,27 @@ class ThemeModelTests(TestCase):
97
96
  self.assertEqual(default.mode, Theme.DEFAULT_MODE)
98
97
 
99
98
  def test_display_property(self) -> None:
100
- theme = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
101
- self.assertEqual(theme.display, 'Dracula - Dark')
99
+ theme = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
100
+ self.assertEqual(theme.display, 'Gruvbox - Dark')
102
101
 
103
102
  theme = Theme(family=ThemeFamily.ONE_DARK, mode=ThemeMode.LIGHT)
104
103
  self.assertEqual(theme.display, 'One Dark Pro - Light')
105
104
 
106
105
  def test_family_display_property(self) -> None:
107
- theme = Theme(family=ThemeFamily.OCEANIC_NEXT, mode=ThemeMode.DARK)
108
- self.assertEqual(theme.family_display, 'Oceanic Next')
106
+ theme = Theme(family=ThemeFamily.ONE_DARK, mode=ThemeMode.DARK)
107
+ self.assertEqual(theme.family_display, 'One Dark Pro')
109
108
 
110
109
  def test_is_dark_property(self) -> None:
111
- dark = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
110
+ dark = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
112
111
  self.assertTrue(dark.is_dark)
113
112
 
114
- light = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.LIGHT)
113
+ light = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.LIGHT)
115
114
  self.assertFalse(light.is_dark)
116
115
 
117
116
  def test_stylesheet_property(self) -> None:
118
117
  cases = [
119
118
  (ThemeFamily.DEFAULT, ThemeMode.LIGHT, 'django_spire/css/themes/default/app-light.css'),
120
- (ThemeFamily.DRACULA, ThemeMode.DARK, 'django_spire/css/themes/dracula/app-dark.css'),
119
+ (ThemeFamily.GRUVBOX, ThemeMode.DARK, 'django_spire/css/themes/gruvbox/app-dark.css'),
121
120
  (ThemeFamily.ONE_DARK, ThemeMode.LIGHT, 'django_spire/css/themes/one-dark/app-light.css'),
122
121
  (ThemeFamily.TOKYO_NIGHT, ThemeMode.DARK, 'django_spire/css/themes/tokyo-night/app-dark.css'),
123
122
  ]
@@ -130,7 +129,7 @@ class ThemeModelTests(TestCase):
130
129
  def test_value_property(self) -> None:
131
130
  cases = [
132
131
  (ThemeFamily.DEFAULT, ThemeMode.LIGHT, 'default-light'),
133
- (ThemeFamily.DRACULA, ThemeMode.DARK, 'dracula-dark'),
132
+ (ThemeFamily.GRUVBOX, ThemeMode.DARK, 'gruvbox-dark'),
134
133
  (ThemeFamily.ONE_DARK, ThemeMode.LIGHT, 'one-dark-light'),
135
134
  (ThemeFamily.TOKYO_NIGHT, ThemeMode.DARK, 'tokyo-night-dark'),
136
135
  ]
@@ -141,7 +140,7 @@ class ThemeModelTests(TestCase):
141
140
  self.assertEqual(theme.value, value)
142
141
 
143
142
  def test_to_dict(self) -> None:
144
- theme = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
143
+ theme = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
145
144
  result = theme.to_dict()
146
145
 
147
146
  keys = {
@@ -156,16 +155,16 @@ class ThemeModelTests(TestCase):
156
155
 
157
156
  self.assertEqual(set(result.keys()), keys)
158
157
 
159
- self.assertEqual(result['display'], 'Dracula - Dark')
160
- self.assertEqual(result['family'], 'dracula')
161
- self.assertEqual(result['family_display'], 'Dracula')
162
- self.assertEqual(result['full'], 'dracula-dark')
158
+ self.assertEqual(result['display'], 'Gruvbox - Dark')
159
+ self.assertEqual(result['family'], 'gruvbox')
160
+ self.assertEqual(result['family_display'], 'Gruvbox')
161
+ self.assertEqual(result['full'], 'gruvbox-dark')
163
162
  self.assertTrue(result['is_dark'])
164
163
  self.assertEqual(result['mode'], 'dark')
165
- self.assertEqual(result['stylesheet'], 'django_spire/css/themes/dracula/app-dark.css')
164
+ self.assertEqual(result['stylesheet'], 'django_spire/css/themes/gruvbox/app-dark.css')
166
165
 
167
166
  def test_theme_immutability(self) -> None:
168
- theme = Theme(family=ThemeFamily.DRACULA, mode=ThemeMode.DARK)
167
+ theme = Theme(family=ThemeFamily.GRUVBOX, mode=ThemeMode.DARK)
169
168
 
170
169
  with pytest.raises(AttributeError):
171
170
  theme.family = ThemeFamily.DEFAULT
@@ -50,7 +50,7 @@ class ThemeViewTests(TestCase):
50
50
  def test_set_theme_success(self) -> None:
51
51
  request = self.factory.post(
52
52
  '/django_spire/theme/json/set_theme/',
53
- data=json.dumps({'theme': 'dracula-dark'}),
53
+ data=json.dumps({'theme': 'gruvbox-dark'}),
54
54
  content_type='application/json'
55
55
  )
56
56
  response = json_views.set_theme(request)
@@ -63,12 +63,12 @@ class ThemeViewTests(TestCase):
63
63
  self.assertIn('theme', data)
64
64
 
65
65
  data = data['theme']
66
- self.assertEqual(data['family'], 'dracula')
66
+ self.assertEqual(data['family'], 'gruvbox')
67
67
  self.assertEqual(data['mode'], 'dark')
68
68
 
69
69
  cookie_name = get_theme_cookie_name()
70
70
  self.assertIn(cookie_name, response.cookies)
71
- self.assertEqual(response.cookies[cookie_name].value, 'dracula-dark')
71
+ self.assertEqual(response.cookies[cookie_name].value, 'gruvbox-dark')
72
72
 
73
73
  def test_set_theme_missing_theme(self) -> None:
74
74
  request = self.factory.post(
@@ -103,7 +103,7 @@ class ThemeViewIntegrationTests(BaseTestCase):
103
103
  def test_set_theme_with_authenticated_client(self) -> None:
104
104
  response = self.client.post(
105
105
  '/django_spire/theme/json/set_theme/',
106
- data=json.dumps({'theme': 'dracula-dark'}),
106
+ data=json.dumps({'theme': 'gruvbox-dark'}),
107
107
  content_type='application/json'
108
108
  )
109
109
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-spire
3
- Version: 0.19.4
3
+ Version: 0.19.5
4
4
  Summary: A project for Django Spire
5
5
  Author-email: Brayden Carlson <braydenc@stratusadv.com>, Nathan Johnson <nathanj@stratusadv.com>
6
6
  License: Copyright (c) 2024 Stratus Advanced Technologies and Contributors.
@@ -1,6 +1,6 @@
1
1
  django_spire/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  django_spire/conf.py,sha256=c5Hs-7lk9T15254tOasiQ2ZTFLQIVJof9_QJDfm1PAI,933
3
- django_spire/consts.py,sha256=MtDZv4mhMaz4wgBAinDZk6VFo5x5VSTHfVNEwz0GQDE,171
3
+ django_spire/consts.py,sha256=SU73G0g9_xGmc_PGmEkqx21_G17v-uZ6ZIFBRnr0nZQ,171
4
4
  django_spire/exceptions.py,sha256=L5ndRO5ftMmh0pHkO2z_NG3LSGZviJ-dDHNT73SzTNw,48
5
5
  django_spire/settings.py,sha256=_bM5uUqJXq3sW-NZBNAzt4egZwmvLq_jA8DaQGHqVoE,661
6
6
  django_spire/urls.py,sha256=mKeZszb5U4iIGqddMb5Tt5fRC72U2wABEOi6mvOfEBU,656
@@ -497,14 +497,15 @@ django_spire/core/middleware/maintenance.py,sha256=jJtmz69UXJBBgPkq5SNspWuER1bGf
497
497
  django_spire/core/redirect/__init__.py,sha256=ubAsz_h3ufwgNNkdtqiJQDgXc6DodE2LTUyBwi9dgkE,71
498
498
  django_spire/core/redirect/generic_redirect.py,sha256=bfpA2GSRbkf5Y_zqTiTGzakQauLumm3JbaYMzmsDhjA,1245
499
499
  django_spire/core/redirect/safe_redirect.py,sha256=deGLqiR1wWwqlJ8BYp76qDUDHnfRrxL-1Vns3nozSG0,2901
500
- django_spire/core/static/django_spire/css/app-background.css,sha256=xxy0pvHJrGqrBHu_ERg2wfEFOlnRm-IeCsGzxFXO354,5664
500
+ django_spire/core/static/django_spire/css/app-background.css,sha256=h0hnTe-hQCor-8K4i9EMdYpni2Y_Rs5eN897hqHDeJ8,5800
501
501
  django_spire/core/static/django_spire/css/app-border.css,sha256=z_DT3sB5tNQFu4Y7gSqYFn_bpOmEgEgJCrNmAnmSGDI,3439
502
502
  django_spire/core/static/django_spire/css/app-button.css,sha256=iUPOFgXp2v_gsNBeX8-CoDEWg_oIBAF1khNue2bdq40,8095
503
503
  django_spire/core/static/django_spire/css/app-default.css,sha256=RLVP_vLlkNx_UpNmMmgO73R3UUB_h3sVHt8I2z_iPVk,315
504
- django_spire/core/static/django_spire/css/app-import.css,sha256=5jCOcsnTYJsz_pcopA9ssl4nTsBvysjNIH6RVdz1qhU,385
504
+ django_spire/core/static/django_spire/css/app-import.css,sha256=HMoCBzxpPXvOqxj_BOo_yqtYvODFouRbKqs4Wgg_rOU,418
505
505
  django_spire/core/static/django_spire/css/app-layout.css,sha256=Wwnbf3tJ3khvTAC2DgzXPtgfR3rWyfMzQ1wljCNsOLo,458
506
506
  django_spire/core/static/django_spire/css/app-navigation.css,sha256=_yQ7JCIOoHyOhfpTkj8Q07ma0dFvOMHXTHetnT8-27I,2587
507
507
  django_spire/core/static/django_spire/css/app-offcanvas.css,sha256=SxDsONE1eqERJ1gDAP8chjoJ0aD0Q1VHBPqRWJi8-Mw,178
508
+ django_spire/core/static/django_spire/css/app-override.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
508
509
  django_spire/core/static/django_spire/css/app-page.css,sha256=pB-sSZc9NEUkkMcCfzzrCfeiggGmhONn8Eid5HLs8c0,363
509
510
  django_spire/core/static/django_spire/css/app-side-panel.css,sha256=ltggQkEc9tswJ9g2M0qzmWprdzycvizrS0YgY2We2U0,1954
510
511
  django_spire/core/static/django_spire/css/app-template.css,sha256=D5ORspwfokNqRW0HwyCbzjBp2Kf_2XtWKa6FSQuSXOg,485
@@ -515,32 +516,26 @@ django_spire/core/static/django_spire/css/bootstrap-override.css,sha256=3hOf1Tww
515
516
  django_spire/core/static/django_spire/css/bootstrap.css,sha256=GEgESnyGv91X48AEz35ovTv1fF8JPaB_VZB-JXJjdb0,155840
516
517
  django_spire/core/static/django_spire/css/flatpickr.min.css,sha256=RXPAyxHVyMLxb0TYCM2OW5R4GWkcDe02jdYgyZp41OU,16081
517
518
  django_spire/core/static/django_spire/css/themes/input.css,sha256=dHY08qEODw-L1xbelx2q-5zu7g9hznVw3Ii3INKlQKU,738
518
- django_spire/core/static/django_spire/css/themes/ayu/app-dark.css,sha256=qJhCfNrtbUGmCOCeGWSaokhOxI8bS04W7q1AUBx9tP8,2110
519
- django_spire/core/static/django_spire/css/themes/ayu/app-light.css,sha256=wPjL41knsu9rE8yI7ihUgCad_jkieT0r_H7NW0rmvs0,1917
520
- django_spire/core/static/django_spire/css/themes/catppuccin/app-dark.css,sha256=IOVvlmGZfigehehfBVkggUV7BSOh-NMS1YWyjt138II,2112
521
- django_spire/core/static/django_spire/css/themes/catppuccin/app-light.css,sha256=DmJbiMHdPIYZv-PJOw0_55V3BQXoTjWKFuw8szXfkrU,1918
522
- django_spire/core/static/django_spire/css/themes/default/app-dark.css,sha256=rg51-iDlle0UJTO_-9iODAKpqe1Yp7i1Tc-8pgFkF2k,2109
523
- django_spire/core/static/django_spire/css/themes/default/app-light.css,sha256=Wtr7SVyxMs7hHsn3VvVy0Pz2h9L6TO21xewpf67Y8wI,2114
524
- django_spire/core/static/django_spire/css/themes/dracula/app-dark.css,sha256=U5eR3CRtzgsPvnMM-1IG578h_Sign3vfmkmRoJ54GN0,2114
525
- django_spire/core/static/django_spire/css/themes/dracula/app-light.css,sha256=M5SWV3nEpaOxA3jx-n7KJ6oWjltYXgHqomzH8opDx3Y,1919
526
- django_spire/core/static/django_spire/css/themes/gruvbox/app-dark.css,sha256=BuMgwNrHhljXJd54w0aD-7yJWrGONy7nxRRFbW3BClA,2111
527
- django_spire/core/static/django_spire/css/themes/gruvbox/app-light.css,sha256=AjEoA5MPl9WoIkovDaPwn2gKdKiP9BbkzngzU0y8wN4,1918
528
- django_spire/core/static/django_spire/css/themes/material/app-dark.css,sha256=wmc5alidEjLakzJ0JkLG1dedkEI9csUqJKdTx048-aw,2111
529
- django_spire/core/static/django_spire/css/themes/material/app-light.css,sha256=AR7g-TUaV6Msgl6TEG4qtVYrREnxxPX-4t8pDeI8pAE,1918
530
- django_spire/core/static/django_spire/css/themes/nord/app-dark.css,sha256=Ksm-bjKr8hohZaBh1f2RTrn4t6XjbcAiiao4qVpUk6I,2112
531
- django_spire/core/static/django_spire/css/themes/nord/app-light.css,sha256=zK3hwUg6UKfHA1n7EW4Tr2NiR7nCFqXrNDkIxFdL-N0,1918
532
- django_spire/core/static/django_spire/css/themes/oceanic-next/app-dark.css,sha256=VsVZCzgDFlZKnRZm6ZpdLFODj0qZKgDiQC5H4jAqo0M,2114
533
- django_spire/core/static/django_spire/css/themes/oceanic-next/app-light.css,sha256=E08RGaExttL70qLjAU-zRYbFkI3WyBpNBBCFuDwd2sU,1917
534
- django_spire/core/static/django_spire/css/themes/one-dark/app-dark.css,sha256=rh30Hhs60zjkXnNbMkToUNfuRfq2cNn7HNPCgATaivY,2110
535
- django_spire/core/static/django_spire/css/themes/one-dark/app-light.css,sha256=_KW6K2cJJZmgkBztdiWKoZ0WqGpHJzjK11cvj6b-R5s,1918
536
- django_spire/core/static/django_spire/css/themes/palenight/app-dark.css,sha256=0-Jn7VC4sk_0bVSbJNglSAuPB8kqs6gTB1aHT0olI8E,2114
537
- django_spire/core/static/django_spire/css/themes/palenight/app-light.css,sha256=llU06NyEh9PPBa4HpQpIWbBdSTtHs1qQLVuRqgTTc14,1918
538
- django_spire/core/static/django_spire/css/themes/rose-pine/app-dark.css,sha256=aDkhNehNz6mhH26lNtIPHBpTrFMbuxfosMQFgit33Kc,2114
539
- django_spire/core/static/django_spire/css/themes/rose-pine/app-light.css,sha256=HcCEZ2LmVFUz2xIOUIvzow_1598RKtXCoF5LgviRqx8,1919
540
- django_spire/core/static/django_spire/css/themes/synthwave/app-dark.css,sha256=qSGLjjNqtMj7DVpxfE_-AHcIzgM0xVM_uu_CQ8WfIa0,2114
541
- django_spire/core/static/django_spire/css/themes/synthwave/app-light.css,sha256=2HIuWeKdR7UDttqitwAVq0r4GrShoxRX_LywUdZ8qXU,1918
542
- django_spire/core/static/django_spire/css/themes/tokyo-night/app-dark.css,sha256=8eLeCmioMxzMlIr3FGQIRXZWH4bdxxhYwJWVld92-K8,2111
543
- django_spire/core/static/django_spire/css/themes/tokyo-night/app-light.css,sha256=J5l4aNkG6IgvlB3BySygzT4vXpCGQZn8L-FNb6cvNrs,1917
519
+ django_spire/core/static/django_spire/css/themes/ayu/app-dark.css,sha256=8DY444f-7AMuq7UANiJ4CMBCpQ-TmdUBPBFuFQ4pa5o,2143
520
+ django_spire/core/static/django_spire/css/themes/ayu/app-light.css,sha256=izJOXZcP4fwLEjcCzNQ3X2ikeIYyBcu1N5_7dGFPj-k,1950
521
+ django_spire/core/static/django_spire/css/themes/catppuccin/app-dark.css,sha256=RxU1OmFNzC9Jd60l7BxB0b7qIuqSzE-YJ6FFVE3oRvU,2145
522
+ django_spire/core/static/django_spire/css/themes/catppuccin/app-light.css,sha256=LR_OcKsQiuJ2qjVW_lV39Ij8ugqrzu-geyHMkOihohI,1951
523
+ django_spire/core/static/django_spire/css/themes/default/app-dark.css,sha256=m7mPujtS0FV2lQkfqoAFvsioYskAOgQf7jCIYI-Dqq4,2142
524
+ django_spire/core/static/django_spire/css/themes/default/app-light.css,sha256=xnhfywDu4hVscAczhZeqU5v-cmAmsCfTzUEx1_g2oLc,2147
525
+ django_spire/core/static/django_spire/css/themes/gruvbox/app-dark.css,sha256=smHykEiCMGNX-ZV-d7gAoMMuIUFT1S9_phRFjlLqEgg,2144
526
+ django_spire/core/static/django_spire/css/themes/gruvbox/app-light.css,sha256=qhSTvzWMiN01hq7B4pLlWy8wCz9HDO-ajTpkuFLDj0c,1951
527
+ django_spire/core/static/django_spire/css/themes/material/app-dark.css,sha256=CD4rx9a2n0LtqY82EO9ISkYH7R84UHszVlksdNCbY1k,2144
528
+ django_spire/core/static/django_spire/css/themes/material/app-light.css,sha256=BvsGJWnGSokBlQNSMYM9l2clLun7MyHIPc3Hh8JFmkE,1951
529
+ django_spire/core/static/django_spire/css/themes/nord/app-dark.css,sha256=28Pcz7R5J3uLRvlZR_4yt2RLo4UdAiRi6TumQh2WbTo,2145
530
+ django_spire/core/static/django_spire/css/themes/nord/app-light.css,sha256=LtX4ne1-EQqV1t5kf0H-nOYYaV7Yvfq0ljrovn9ndf4,1951
531
+ django_spire/core/static/django_spire/css/themes/one-dark/app-dark.css,sha256=kiAEwhttJHWrgerx30ibzqhJRu2wmAfLwzQabg1EfbU,2143
532
+ django_spire/core/static/django_spire/css/themes/one-dark/app-light.css,sha256=a0TDzX4uJays_pLMyPMPXDKqMSWVCp69S615ZG32PAc,1951
533
+ django_spire/core/static/django_spire/css/themes/palenight/app-dark.css,sha256=1aJ1f3Z-9zDS0VLiC0I2I9hKiQsKJjSBS0CeCgQvWzs,2147
534
+ django_spire/core/static/django_spire/css/themes/palenight/app-light.css,sha256=JQHcIZJhRis8m2MZV8LhdQtyR5UB3YjbZNeRck-Weko,1951
535
+ django_spire/core/static/django_spire/css/themes/rose-pine/app-dark.css,sha256=2eK4CBnuFICHpWRDfF3jclKv-tzseMXemGwhrZ2UV0o,2147
536
+ django_spire/core/static/django_spire/css/themes/rose-pine/app-light.css,sha256=fMq7AWYfPAsZ9p_YRXinqtZ5OKYtg4J9sqc-mZWCU0M,1952
537
+ django_spire/core/static/django_spire/css/themes/tokyo-night/app-dark.css,sha256=lAbcZObB7_fGhcYmVzhxjf3wz2bwD410MpvAnpZoOtU,2144
538
+ django_spire/core/static/django_spire/css/themes/tokyo-night/app-light.css,sha256=NFBfcs-bGUTKPT400JTAHzK5PGPLXVy8Ly1PYAhIPlQ,1950
544
539
  django_spire/core/static/django_spire/favicons/android-chrome-192x192.png,sha256=mxm1sntXHgMJsjErEIE9AK3um0vJCvSkkUAVk0WIyi8,33238
545
540
  django_spire/core/static/django_spire/favicons/android-chrome-256x256.png,sha256=cUUqhCaT_Di-oExGdS2ru_U-rKmJ-ab7lgUoZACz1Ng,47140
546
541
  django_spire/core/static/django_spire/favicons/apple-touch-icon.png,sha256=CrN3tdR4ZsKh1EY0p03-0y65UeNuRN2nWU60QEChSYo,19109
@@ -1078,8 +1073,8 @@ django_spire/profiling/middleware/profiling.py,sha256=Vl8WHCEYoUl1P50uFog2Gp6hK2
1078
1073
  django_spire/profiling/templates/panel.html,sha256=YNK5ypTpUezWCtT0CE-awIpKPo4pKOPo9wbD4fkzgwc,6684
1079
1074
  django_spire/theme/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1080
1075
  django_spire/theme/apps.py,sha256=yol2S7ooTuplc8JKETEg6oAu9hpeHUpJ6wt1Bo3dQ3E,479
1081
- django_spire/theme/enums.py,sha256=I0Sa5GzAntAPL8d7BJykhzuftA7ZweqZZtFIcH_g6kA,495
1082
- django_spire/theme/models.py,sha256=Q9QQ_BmY79AtWA0_MwHt9gVk0AA7yaGAseJDmVP1wxA,4247
1076
+ django_spire/theme/enums.py,sha256=Pe5snW7q_fws50vAnfx1JvRCW5G9WeWxsAiU3s6lWpE,409
1077
+ django_spire/theme/models.py,sha256=tVUOpXauLq1m-tDknHggF2EKpky9PmiB9gOPm24SRCs,4113
1083
1078
  django_spire/theme/utils.py,sha256=Ka3CfK7BzBDOJWTw6XO097cqpdkXothWxPvUwFpjdv8,377
1084
1079
  django_spire/theme/templates/django_spire/theme/card/badges_preview_card.html,sha256=0fNfmL4IyQRrK5Kry95j6APQk3sAJv2XqjodPzOxwWg,1429
1085
1080
  django_spire/theme/templates/django_spire/theme/card/base_preview_card.html,sha256=2aKpoNTh6jHE9TT_enKJ9ZChFol9LgPq-y88um_vpZo,658
@@ -1119,21 +1114,21 @@ django_spire/theme/templates/django_spire/theme/section/color_section_card.html,
1119
1114
  django_spire/theme/templates/django_spire/theme/section/typography_section.html,sha256=tyg4zUulg9bBcFr1T2hxORGPlD4-k5vxXIabCbuG1jk,2274
1120
1115
  django_spire/theme/templates/django_spire/theme/section/typography_section_card.html,sha256=cgshyWYzFF__fcAXTxxxMd2jAb6TGAjTIL-GZI4dsHs,155
1121
1116
  django_spire/theme/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1122
- django_spire/theme/tests/test_context_processor.py,sha256=JHo7nUdpDKcE1Mvd5CXhPGgqaZFWpMJO-hI-PoDm9dI,3026
1123
- django_spire/theme/tests/test_enums.py,sha256=38KaKRdJwpUPialpSHU_BFeX98kTsS93sI_kl3MjFTA,841
1117
+ django_spire/theme/tests/test_context_processor.py,sha256=2MdQWZrjStOFSynGm9sfPdEWGV5pdwTtngPEaVCA6bY,3026
1118
+ django_spire/theme/tests/test_enums.py,sha256=-s4zUD8F08dzoVfBkjwjpfzmX6X4h8hZ4x9k8EGsmvo,765
1124
1119
  django_spire/theme/tests/test_filesystem.py,sha256=o18Hqkf7iUE1XYP2GfN-upnTFYM3nhzuU9e0Jq3RmZQ,6629
1125
- django_spire/theme/tests/test_integration.py,sha256=yzA4PIUhw6n79fcKr-7SmKPNJT7IIqy6RH_zfWbhZjc,1869
1126
- django_spire/theme/tests/test_model.py,sha256=l-_e0z0f6SXKGmLGLI2JzA3GpDAgwV6876C5Efy6K6M,7023
1120
+ django_spire/theme/tests/test_integration.py,sha256=QTRHxQWy-c8Uz2K_P8aipxRDOSuEvWVRHsib6fQGNPs,1869
1121
+ django_spire/theme/tests/test_model.py,sha256=-VY82o0d3-9fNJjZEaYf9UKW2obsVBr2iVQeGdAsXLs,6940
1127
1122
  django_spire/theme/tests/test_views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1128
- django_spire/theme/tests/test_views/test_json_views.py,sha256=CNcVyz-Q4zUsarKpvSKNZ31gxhWd9seVnFsHX2K77ww,4428
1123
+ django_spire/theme/tests/test_views/test_json_views.py,sha256=Hws7ZZIZPzUN-RIWtL1_2LVY9ugqxswxZT4VEy0I_gk,4428
1129
1124
  django_spire/theme/urls/__init__.py,sha256=0AGqZ-kWrE50HwlFRH_t19qO7CH1OqGLtPrf6PDhjF8,249
1130
1125
  django_spire/theme/urls/json_urls.py,sha256=CHqKcicKQpKI3OrlxTOQKgdYvzHWZDgScqpCDu9r7oU,247
1131
1126
  django_spire/theme/urls/page_urls.py,sha256=S8nkKkgbhG3XHI3uMUL-piOjXIrRkuY2UlM_JNX4L3Q,641
1132
1127
  django_spire/theme/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1133
1128
  django_spire/theme/views/json_views.py,sha256=W1khC2K_EMbEzAFmMxC_P76_MFnkRH4-eVdodrRfAhw,1904
1134
1129
  django_spire/theme/views/page_views.py,sha256=pHr8iekjtR99xs7w1taj35HEo133Svq1dvDD0y0VL1c,3933
1135
- django_spire-0.19.4.dist-info/licenses/LICENSE.md,sha256=tlTbOtgKoy-xAQpUk9gPeh9O4oRXCOzoWdW3jJz0wnA,1091
1136
- django_spire-0.19.4.dist-info/METADATA,sha256=1iX3c8liLNuaCp4euBri5oacEIyo1u4Jl44cn6aYh_E,4967
1137
- django_spire-0.19.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1138
- django_spire-0.19.4.dist-info/top_level.txt,sha256=xf3QV1e--ONkVpgMDQE9iqjQ1Vg4--_6C8wmO-KxPHQ,13
1139
- django_spire-0.19.4.dist-info/RECORD,,
1130
+ django_spire-0.19.5.dist-info/licenses/LICENSE.md,sha256=tlTbOtgKoy-xAQpUk9gPeh9O4oRXCOzoWdW3jJz0wnA,1091
1131
+ django_spire-0.19.5.dist-info/METADATA,sha256=jzU9HqJVRDWzw6SjQAToWERibaqyr-NGGS7Njq0Xo-c,4967
1132
+ django_spire-0.19.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1133
+ django_spire-0.19.5.dist-info/top_level.txt,sha256=xf3QV1e--ONkVpgMDQE9iqjQ1Vg4--_6C8wmO-KxPHQ,13
1134
+ django_spire-0.19.5.dist-info/RECORD,,
@@ -1,71 +0,0 @@
1
- [data-theme="dark"] {
2
- --app-primary: #bd93f9;
3
- --app-primary-soft: #2a1f35;
4
- --app-primary-dark: #9580d4;
5
-
6
- --app-secondary: #6272a4;
7
- --app-secondary-soft: #323547;
8
- --app-secondary-dark: #4b5b8c;
9
-
10
- --app-accent: #ff79c6;
11
- --app-accent-soft: #3d1f2f;
12
- --app-accent-dark: #e056a2;
13
-
14
- --app-success: #50fa7b;
15
- --app-success-soft: #1a2e21;
16
- --app-success-dark: #3dcc58;
17
-
18
- --app-warning: #f1fa8c;
19
- --app-warning-soft: #3d3d23;
20
- --app-warning-dark: #e6f06f;
21
-
22
- --app-danger: #ff5555;
23
- --app-danger-soft: #3d1f1f;
24
- --app-danger-dark: #e63946;
25
-
26
- --app-layer-one: #282a36;
27
- --app-layer-two: #44475a;
28
- --app-layer-three: #6272a4;
29
- --app-layer-four: #7882b4;
30
-
31
- --app-alt-layer-one: #21222c;
32
- --app-alt-layer-two: #373a4e;
33
- --app-alt-layer-three: #555a7a;
34
- --app-alt-layer-four: #6e76a8;
35
-
36
- --app-default-attribute-title-color: #f8f8f2;
37
- --app-default-button-text-color: #282a36;
38
- --app-default-text-color: #f8f8f2;
39
- --app-default-alt-text-color: #e8e8e2;
40
- --app-default-link-color: #bd93f9;
41
- --app-default-link-hover-color: #ff79c6;
42
-
43
- --app-side-navigation-bg-color: #282a36;
44
- --app-side-navigation-text-color: #f8f8f2;
45
- --app-side-navigation-link-color: #f8f8f2;
46
- --app-side-navigation-link-hover-color: #bd93f9;
47
-
48
- --app-top-navigation-bg-color: #282a36;
49
- --app-top-navigation-text-color: #f8f8f2;
50
- --app-top-navigation-link-color: #bd93f9;
51
- --app-top-navigation-link-hover-color: #ff79c6;
52
-
53
- --app-footer-bg-color: #282a36;
54
- --app-footer-text-color: #f8f8f2;
55
- --app-footer-link-color: #bd93f9;
56
- --app-footer-link-hover-color: #ff79c6;
57
-
58
- --app-table-row-color: #282a36;
59
- --app-table-row-alt-color: #44475a;
60
- --app-table-row-hover-color: #6272a4;
61
-
62
- --bs-border-color: #7882b4;
63
-
64
- --app-shadow-light: rgba(0, 0, 0, 0.3);
65
- --app-shadow-medium: rgba(0, 0, 0, 0.5);
66
- --app-shadow-heavy: rgba(0, 0, 0, 0.7);
67
- --app-shadow-navigation: rgba(0, 0, 0, 0.9);
68
-
69
- --app-border-translucent-light: rgba(120, 130, 180, 0.3);
70
- --app-focus-ring-primary: rgba(189, 147, 249, 0.25);
71
- }
@@ -1,66 +0,0 @@
1
- :root {
2
- --app-primary: #bd93f9;
3
- --app-primary-soft: #f0ebfd;
4
- --app-primary-dark: #9580d4;
5
-
6
- --app-secondary: #6272a4;
7
- --app-secondary-soft: #e6e8f0;
8
- --app-secondary-dark: #4b5b8c;
9
-
10
- --app-accent: #ff79c6;
11
- --app-accent-soft: #ffe5f4;
12
- --app-accent-dark: #e056a2;
13
-
14
- --app-success: #50fa7b;
15
- --app-success-soft: #e5fee9;
16
- --app-success-dark: #3dcc58;
17
-
18
- --app-warning: #f1fa8c;
19
- --app-warning-soft: #fdfee5;
20
- --app-warning-dark: #e6f06f;
21
-
22
- --app-danger: #ff5555;
23
- --app-danger-soft: #ffe5e5;
24
- --app-danger-dark: #e63946;
25
-
26
- --app-layer-one: #f8f8f2;
27
- --app-layer-two: #f0f0ea;
28
- --app-layer-three: #e8e8e2;
29
- --app-layer-four: #d0d0ca;
30
-
31
- --app-alt-layer-one: #ffffff;
32
- --app-alt-layer-two: #f5f5f0;
33
- --app-alt-layer-three: #e0e0da;
34
- --app-alt-layer-four: #c8c8c2;
35
-
36
- --app-default-attribute-title-color: #6272a4;
37
- --app-default-button-text-color: #f8f8f2;
38
- --app-default-text-color: #44475a;
39
- --app-default-alt-text-color: #6272a4;
40
- --app-default-link-color: #bd93f9;
41
- --app-default-link-hover-color: #ff79c6;
42
-
43
- --app-side-navigation-bg-color: #6272a4;
44
- --app-side-navigation-text-color: #f8f8f2;
45
- --app-side-navigation-link-color: #f8f8f2;
46
- --app-side-navigation-link-hover-color: #bd93f9;
47
-
48
- --app-top-navigation-bg-color: #f8f8f2;
49
- --app-top-navigation-text-color: #44475a;
50
- --app-top-navigation-link-color: #bd93f9;
51
- --app-top-navigation-link-hover-color: #ff79c6;
52
-
53
- --app-footer-bg-color: #f0f0ea;
54
- --app-footer-text-color: #44475a;
55
- --app-footer-link-color: #bd93f9;
56
- --app-footer-link-hover-color: #ff79c6;
57
-
58
- --app-table-row-color: #f8f8f2;
59
- --app-table-row-alt-color: #f0f0ea;
60
- --app-table-row-hover-color: #e8e8e2;
61
-
62
- --bs-border-color: #e8e8e2;
63
-
64
- --app-border-translucent-light: rgba(208, 208, 202, 0.175);
65
- --app-focus-ring-primary: rgba(189, 147, 249, 0.25);
66
- }
@@ -1,71 +0,0 @@
1
- [data-theme="dark"] {
2
- --app-primary: #6699cc;
3
- --app-primary-soft: #1a262f;
4
- --app-primary-dark: #4f8cc9;
5
-
6
- --app-secondary: #65737e;
7
- --app-secondary-soft: #2d3640;
8
- --app-secondary-dark: #556873;
9
-
10
- --app-accent: #f99157;
11
- --app-accent-soft: #3d2515;
12
- --app-accent-dark: #ec7940;
13
-
14
- --app-success: #99c794;
15
- --app-success-soft: #202e24;
16
- --app-success-dark: #7cb668;
17
-
18
- --app-warning: #fac863;
19
- --app-warning-soft: #3d3319;
20
- --app-warning-dark: #f5b942;
21
-
22
- --app-danger: #ec5f67;
23
- --app-danger-soft: #3d1f22;
24
- --app-danger-dark: #e74c3c;
25
-
26
- --app-layer-one: #1b2b34;
27
- --app-layer-two: #343d46;
28
- --app-layer-three: #4f5b66;
29
- --app-layer-four: #65737e;
30
-
31
- --app-alt-layer-one: #152028;
32
- --app-alt-layer-two: #2b3b42;
33
- --app-alt-layer-three: #3a4750;
34
- --app-alt-layer-four: #4a5861;
35
-
36
- --app-default-attribute-title-color: #c0c5ce;
37
- --app-default-button-text-color: #1b2b34;
38
- --app-default-text-color: #c0c5ce;
39
- --app-default-alt-text-color: #a7adba;
40
- --app-default-link-color: #6699cc;
41
- --app-default-link-hover-color: #5fb3b3;
42
-
43
- --app-side-navigation-bg-color: #152028;
44
- --app-side-navigation-text-color: #c0c5ce;
45
- --app-side-navigation-link-color: #c0c5ce;
46
- --app-side-navigation-link-hover-color: #6699cc;
47
-
48
- --app-top-navigation-bg-color: #152028;
49
- --app-top-navigation-text-color: #c0c5ce;
50
- --app-top-navigation-link-color: #6699cc;
51
- --app-top-navigation-link-hover-color: #5fb3b3;
52
-
53
- --app-footer-bg-color: #152028;
54
- --app-footer-text-color: #c0c5ce;
55
- --app-footer-link-color: #6699cc;
56
- --app-footer-link-hover-color: #5fb3b3;
57
-
58
- --app-table-row-color: #1b2b34;
59
- --app-table-row-alt-color: #343d46;
60
- --app-table-row-hover-color: #4f5b66;
61
-
62
- --bs-border-color: #65737e;
63
-
64
- --app-shadow-light: rgba(0, 0, 0, 0.3);
65
- --app-shadow-medium: rgba(0, 0, 0, 0.5);
66
- --app-shadow-heavy: rgba(0, 0, 0, 0.7);
67
- --app-shadow-navigation: rgba(0, 0, 0, 0.9);
68
-
69
- --app-border-translucent-light: rgba(101, 115, 126, 0.3);
70
- --app-focus-ring-primary: rgba(102, 153, 204, 0.25);
71
- }
@@ -1,66 +0,0 @@
1
- :root {
2
- --app-primary: #0277bd;
3
- --app-primary-soft: #e3f2fd;
4
- --app-primary-dark: #01579b;
5
-
6
- --app-secondary: #607d8b;
7
- --app-secondary-soft: #eceff1;
8
- --app-secondary-dark: #455a64;
9
-
10
- --app-accent: #ff7043;
11
- --app-accent-soft: #fbe9e7;
12
- --app-accent-dark: #d84315;
13
-
14
- --app-success: #4caf50;
15
- --app-success-soft: #e8f5e8;
16
- --app-success-dark: #2e7d32;
17
-
18
- --app-warning: #ff9800;
19
- --app-warning-soft: #fff3e0;
20
- --app-warning-dark: #ef6c00;
21
-
22
- --app-danger: #f44336;
23
- --app-danger-soft: #ffebee;
24
- --app-danger-dark: #c62828;
25
-
26
- --app-layer-one: #ffffff;
27
- --app-layer-two: #fafafa;
28
- --app-layer-three: #f5f5f5;
29
- --app-layer-four: #e0e0e0;
30
-
31
- --app-alt-layer-one: #ffffff;
32
- --app-alt-layer-two: #fcfcfc;
33
- --app-alt-layer-three: #f8f8f8;
34
- --app-alt-layer-four: #f0f0f0;
35
-
36
- --app-default-attribute-title-color: #607d8b;
37
- --app-default-button-text-color: #ffffff;
38
- --app-default-text-color: #263238;
39
- --app-default-alt-text-color: #37474f;
40
- --app-default-link-color: #0277bd;
41
- --app-default-link-hover-color: #00acc1;
42
-
43
- --app-side-navigation-bg-color: #263238;
44
- --app-side-navigation-text-color: #ffffff;
45
- --app-side-navigation-link-color: #ffffff;
46
- --app-side-navigation-link-hover-color: #4fc3f7;
47
-
48
- --app-top-navigation-bg-color: #ffffff;
49
- --app-top-navigation-text-color: #263238;
50
- --app-top-navigation-link-color: #0277bd;
51
- --app-top-navigation-link-hover-color: #00acc1;
52
-
53
- --app-footer-bg-color: #fafafa;
54
- --app-footer-text-color: #263238;
55
- --app-footer-link-color: #0277bd;
56
- --app-footer-link-hover-color: #00acc1;
57
-
58
- --app-table-row-color: #ffffff;
59
- --app-table-row-alt-color: #fafafa;
60
- --app-table-row-hover-color: #f5f5f5;
61
-
62
- --bs-border-color: #f5f5f5;
63
-
64
- --app-border-translucent-light: rgba(224, 224, 224, 0.175);
65
- --app-focus-ring-primary: rgba(2, 119, 189, 0.25);
66
- }
@@ -1,71 +0,0 @@
1
- [data-theme="dark"] {
2
- --app-primary: #ff7edb;
3
- --app-primary-soft: #301a2e;
4
- --app-primary-dark: #e967c8;
5
-
6
- --app-secondary: #848bbd;
7
- --app-secondary-soft: #3a3649;
8
- --app-secondary-dark: #6b7394;
9
-
10
- --app-accent: #f97e72;
11
- --app-accent-soft: #3d1f1f;
12
- --app-accent-dark: #f36c60;
13
-
14
- --app-success: #72f1b8;
15
- --app-success-soft: #1a2e28;
16
- --app-success-dark: #36f9aa;
17
-
18
- --app-warning: #fede5d;
19
- --app-warning-soft: #3d3d1a;
20
- --app-warning-dark: #fed83d;
21
-
22
- --app-danger: #ff8a80;
23
- --app-danger-soft: #3d2626;
24
- --app-danger-dark: #ff7a6b;
25
-
26
- --app-layer-one: #241b2f;
27
- --app-layer-two: #34294f;
28
- --app-layer-three: #495361;
29
- --app-layer-four: #6b7394;
30
-
31
- --app-alt-layer-one: #1e1529;
32
- --app-alt-layer-two: #2d2142;
33
- --app-alt-layer-three: #3d3454;
34
- --app-alt-layer-four: #4d4464;
35
-
36
- --app-default-attribute-title-color: #f92aad;
37
- --app-default-button-text-color: #2a2139;
38
- --app-default-text-color: #f92aad;
39
- --app-default-alt-text-color: #d084ac;
40
- --app-default-link-color: #ff7edb;
41
- --app-default-link-hover-color: #36f9aa;
42
-
43
- --app-side-navigation-bg-color: #241b2f;
44
- --app-side-navigation-text-color: #f92aad;
45
- --app-side-navigation-link-color: #f92aad;
46
- --app-side-navigation-link-hover-color: #ff7edb;
47
-
48
- --app-top-navigation-bg-color: #241b2f;
49
- --app-top-navigation-text-color: #f92aad;
50
- --app-top-navigation-link-color: #ff7edb;
51
- --app-top-navigation-link-hover-color: #36f9aa;
52
-
53
- --app-footer-bg-color: #241b2f;
54
- --app-footer-text-color: #f92aad;
55
- --app-footer-link-color: #ff7edb;
56
- --app-footer-link-hover-color: #36f9aa;
57
-
58
- --app-table-row-color: #2a2139;
59
- --app-table-row-alt-color: #34294f;
60
- --app-table-row-hover-color: #495361;
61
-
62
- --bs-border-color: #6b7394;
63
-
64
- --app-shadow-light: rgba(0, 0, 0, 0.3);
65
- --app-shadow-medium: rgba(0, 0, 0, 0.5);
66
- --app-shadow-heavy: rgba(0, 0, 0, 0.7);
67
- --app-shadow-navigation: rgba(0, 0, 0, 0.9);
68
-
69
- --app-border-translucent-light: rgba(107, 115, 148, 0.3);
70
- --app-focus-ring-primary: rgba(255, 126, 219, 0.25);
71
- }
@@ -1,66 +0,0 @@
1
- :root {
2
- --app-primary: #d946ef;
3
- --app-primary-soft: #faf5ff;
4
- --app-primary-dark: #c026d3;
5
-
6
- --app-secondary: #6366f1;
7
- --app-secondary-soft: #f0f0ff;
8
- --app-secondary-dark: #4338ca;
9
-
10
- --app-accent: #f43f5e;
11
- --app-accent-soft: #fdf2f8;
12
- --app-accent-dark: #e11d48;
13
-
14
- --app-success: #10d9c4;
15
- --app-success-soft: #f0fdfa;
16
- --app-success-dark: #0891b2;
17
-
18
- --app-warning: #f59e0b;
19
- --app-warning-soft: #fffbeb;
20
- --app-warning-dark: #d97706;
21
-
22
- --app-danger: #f43f5e;
23
- --app-danger-soft: #fdf2f8;
24
- --app-danger-dark: #e11d48;
25
-
26
- --app-layer-one: #fdf7fd;
27
- --app-layer-two: #f5f3ff;
28
- --app-layer-three: #ede9fe;
29
- --app-layer-four: #c4b5fd;
30
-
31
- --app-alt-layer-one: #ffffff;
32
- --app-alt-layer-two: #fefbff;
33
- --app-alt-layer-three: #f8f4ff;
34
- --app-alt-layer-four: #f0ebff;
35
-
36
- --app-default-attribute-title-color: #6366f1;
37
- --app-default-button-text-color: #fdf7fd;
38
- --app-default-text-color: #4a3c5e;
39
- --app-default-alt-text-color: #64748b;
40
- --app-default-link-color: #d946ef;
41
- --app-default-link-hover-color: #f43f5e;
42
-
43
- --app-side-navigation-bg-color: #4a3c5e;
44
- --app-side-navigation-text-color: #fdf7fd;
45
- --app-side-navigation-link-color: #fdf7fd;
46
- --app-side-navigation-link-hover-color: #d946ef;
47
-
48
- --app-top-navigation-bg-color: #fdf7fd;
49
- --app-top-navigation-text-color: #4a3c5e;
50
- --app-top-navigation-link-color: #d946ef;
51
- --app-top-navigation-link-hover-color: #f43f5e;
52
-
53
- --app-footer-bg-color: #f5f3ff;
54
- --app-footer-text-color: #4a3c5e;
55
- --app-footer-link-color: #d946ef;
56
- --app-footer-link-hover-color: #f43f5e;
57
-
58
- --app-table-row-color: #fdf7fd;
59
- --app-table-row-alt-color: #f5f3ff;
60
- --app-table-row-hover-color: #ede9fe;
61
-
62
- --bs-border-color: #ede9fe;
63
-
64
- --app-border-translucent-light: rgba(196, 181, 253, 0.175);
65
- --app-focus-ring-primary: rgba(217, 70, 239, 0.25);
66
- }