django-spire 0.21.0__py3-none-any.whl → 0.21.1__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.
@@ -77,7 +77,7 @@
77
77
  ></i>
78
78
 
79
79
  <template x-if="!can_rename_chat">
80
- <div @click="$dispatch('load-chat', {chat_id: {{ recent_chat.id }}})" class="cursor-pointer flex-grow-1 text-truncate">
80
+ <div @click="$dispatch('load-chat', {chat_id: {{ recent_chat.id }}})" class="cursor-pointer flex-grow-1 text-truncate" data-closes-nav>
81
81
  <span class="px-2 fs-7" x-text="chat_name"></span>
82
82
  </div>
83
83
  </template>
@@ -21,7 +21,7 @@
21
21
 
22
22
  <div class="col-12 px-0">
23
23
  <div class="px-2 pb-3">
24
- <button @click="$dispatch('load-chat', {chat_id: 0})" class="btn btn-app-primary-outlined p-1 w-100">
24
+ <button @click="$dispatch('load-chat', {chat_id: 0})" class="btn btn-app-primary-outlined p-1 w-100" data-closes-nav>
25
25
  <i class="bi bi-plus-lg me-2"></i>New Chat
26
26
  </button>
27
27
  </div>
django_spire/consts.py CHANGED
@@ -1,4 +1,4 @@
1
- __VERSION__ = '0.21.0'
1
+ __VERSION__ = '0.21.1'
2
2
 
3
3
  MAINTENANCE_MODE_SETTINGS_NAME = 'MAINTENANCE_MODE'
4
4
 
@@ -82,14 +82,14 @@
82
82
  }
83
83
 
84
84
  .side-navigation-fade-bottom {
85
- background: linear-gradient(to top, var(--app-side-navigation-bg-color) 0%, var(--app-side-navigation-bg-color) 50%, transparent 100%);
86
- height: 100px;
85
+ background: linear-gradient(to top, var(--app-side-navigation-bg-color) 0%, transparent 100%);
86
+ height: 60px;
87
87
  pointer-events: none;
88
88
  }
89
89
 
90
90
  .side-navigation-fade-top {
91
- background: linear-gradient(to bottom, var(--app-side-navigation-bg-color) 0%, var(--app-side-navigation-bg-color) 50%, transparent 100%);
92
- height: 75px;
91
+ background: linear-gradient(to bottom, var(--app-side-navigation-bg-color) 0%, transparent 100%);
92
+ height: 60px;
93
93
  pointer-events: none;
94
94
  }
95
95
 
@@ -5,25 +5,6 @@
5
5
  top: var(--app-top-navigation-height);
6
6
  }
7
7
 
8
- .btn-close-panel {
9
- align-items: center;
10
- background: transparent;
11
- border: none;
12
- border-radius: 50%;
13
- color: var(--app-primary);
14
- cursor: pointer;
15
- display: flex;
16
- height: 28px;
17
- justify-content: center;
18
- transition: background 0.2s ease, color 0.2s ease;
19
- width: 28px;
20
- }
21
-
22
- .btn-close-panel:hover {
23
- background: var(--app-primary);
24
- color: var(--app-default-button-text-color);
25
- }
26
-
27
8
  .panel-toggle-container {
28
9
  height: 30px;
29
10
  position: fixed;
@@ -50,32 +31,6 @@
50
31
  width: 30px !important;
51
32
  }
52
33
 
53
- .side-panel-transition-enter {
54
- transition: opacity 0.3s ease;
55
- }
56
-
57
- .side-panel-transition-enter-start-left,
58
- .side-panel-transition-enter-start-right {
59
- opacity: 0;
60
- }
61
-
62
- .side-panel-transition-enter-end {
63
- opacity: 1;
64
- }
65
-
66
- .side-panel-transition-leave {
67
- transition: opacity 0.3s ease;
68
- }
69
-
70
- .side-panel-transition-leave-start {
71
- opacity: 1;
72
- }
73
-
74
- .side-panel-transition-leave-end-left,
75
- .side-panel-transition-leave-end-right {
76
- opacity: 0;
77
- }
78
-
79
34
  @media (min-width: 992px) {
80
35
  .panel-toggle-container-left {
81
36
  left: var(--app-side-navigation-width);
@@ -37,49 +37,53 @@
37
37
  </div>
38
38
  {% endblock %}
39
39
 
40
- {% block notification_icon %}
41
- <div>
42
- {% include 'django_spire/notification/app/element/notification_bell.html' %}
43
- </div>
44
- {% endblock %}
40
+ {% if request.user.is_authenticated %}
41
+ {% block notification_icon %}
42
+ <div>
43
+ {% include 'django_spire/notification/app/element/notification_bell.html' %}
44
+ </div>
45
+ {% endblock %}
46
+ {% endif %}
45
47
 
46
- <div class="dropdown">
47
- <i
48
- class="bi bi-person-circle fs-2 mx-2 cursor-pointer"
49
- id="dropdownMenuButton1"
50
- data-bs-toggle="dropdown"
51
- aria-expanded="false"
52
- >
53
- </i>
54
- <ul class="dropdown-menu py-0 bg-app-layer-one" aria-labelledby="dropdownMenuButton1">
55
- {% if request.user.is_superuser %}
56
- <li class="py-0 ">
57
- <a class="dropdown-item fs--1 bg-app-layer-three-hover"
58
- href="{% url 'admin:index' %}" target="_blank">
59
- Admin Panel
48
+ {% if request.user.is_authenticated %}
49
+ <div class="dropdown">
50
+ <i
51
+ class="bi bi-person-circle fs-2 mx-2 cursor-pointer"
52
+ id="dropdownMenuButton1"
53
+ data-bs-toggle="dropdown"
54
+ aria-expanded="false"
55
+ >
56
+ </i>
57
+ <ul class="dropdown-menu py-0 bg-app-layer-one" aria-labelledby="dropdownMenuButton1">
58
+ {% if request.user.is_superuser %}
59
+ <li class="py-0">
60
+ <a class="dropdown-item fs--1 bg-app-layer-three-hover"
61
+ href="{% url 'admin:index' %}" target="_blank">
62
+ Admin Panel
63
+ </a>
64
+ </li>
65
+ <li class="py-0">
66
+ <a class="dropdown-item fs--1 bg-app-layer-three-hover"
67
+ href="{% url 'django_spire:theme:page:dashboard' %}" target="_blank">
68
+ Theme Dashboard
69
+ </a>
70
+ </li>
71
+ {% endif %}
72
+ <li class="py-0">
73
+ <a href="{% url 'django_spire:auth:admin:password_change' %}"
74
+ class="dropdown-item fs--1 bg-app-layer-three-hover">
75
+ Change Password
60
76
  </a>
61
77
  </li>
62
- <li class="py-0 ">
63
- <a class="dropdown-item fs--1 bg-app-layer-three-hover"
64
- href="{% url 'django_spire:theme:page:dashboard' %}" target="_blank">
65
- Theme Dashboard
78
+ <li class="py-0">
79
+ <a href="{% url 'django_spire:auth:redirect:logout' %}"
80
+ class="dropdown-item fs--1 bg-app-layer-three-hover">
81
+ Logout
66
82
  </a>
67
83
  </li>
68
- {% endif %}
69
- <li class="py-0">
70
- <a href="{% url 'django_spire:auth:admin:password_change' %}"
71
- class="dropdown-item fs--1 bg-app-layer-three-hover">
72
- Change Password
73
- </a>
74
- </li>
75
- <li class="py-0">
76
- <a href="{% url 'django_spire:auth:redirect:logout' %}"
77
- class="dropdown-item fs--1 bg-app-layer-three-hover">
78
- Logout
79
- </a>
80
- </li>
81
- </ul>
82
- </div>
84
+ </ul>
85
+ </div>
86
+ {% endif %}
83
87
 
84
88
  <div class="col-auto d-lg-none">
85
89
  {% include 'django_spire/navigation/mobile_navigation.html' %}
@@ -25,7 +25,8 @@
25
25
  info_nav_max_width: 600,
26
26
  info_nav_min_width: 200,
27
27
  info_nav_width: 400,
28
- is_mobile: window.innerWidth < 992,
28
+ is_mobile: false,
29
+ is_narrow_viewport: false,
29
30
  is_resizing_info: false,
30
31
  is_resizing_sub: false,
31
32
  resize_start_width: 0,
@@ -37,7 +38,36 @@
37
38
  sub_nav_min_width: 300,
38
39
  sub_nav_width: 300,
39
40
 
41
+ is_touch_device() {
42
+ return window.matchMedia('(pointer: coarse)').matches || 'ontouchstart' in window;
43
+ },
44
+
45
+ update_viewport_state() {
46
+ const was_narrow = this.is_narrow_viewport;
47
+ const is_now_narrow = window.innerWidth < 992;
48
+ this.is_narrow_viewport = is_now_narrow;
49
+
50
+ if (!was_narrow && is_now_narrow) {
51
+ this.show_sub_nav = false;
52
+ this.show_info_nav = false;
53
+ }
54
+
55
+ if (was_narrow && !is_now_narrow) {
56
+ this.$nextTick(() => {
57
+ this.show_sub_nav = false;
58
+ this.show_info_nav = false;
59
+ });
60
+ }
61
+
62
+ if (!this.is_narrow_viewport) {
63
+ this.show_info_nav = false;
64
+ }
65
+ },
66
+
40
67
  init() {
68
+ this.is_mobile = this.is_touch_device();
69
+ this.update_viewport_state();
70
+
41
71
  const urlParams = new URLSearchParams(window.location.search);
42
72
 
43
73
  if (urlParams.has('show_sub_nav')) {
@@ -46,12 +76,12 @@
46
76
  this.show_sub_nav = window.innerWidth >= 992
47
77
  }
48
78
 
79
+ if (window.innerWidth < 992) {
80
+ this.show_info_nav = false;
81
+ }
82
+
49
83
  window.addEventListener('resize', () => {
50
- this.is_mobile = window.innerWidth < 992
51
- if (this.is_mobile) {
52
- this.show_sub_nav = false
53
- this.show_info_nav = false
54
- }
84
+ this.update_viewport_state();
55
85
  })
56
86
  },
57
87
 
@@ -74,10 +104,18 @@
74
104
  }
75
105
  },
76
106
 
107
+ close_info() {
108
+ this.show_info_nav = false
109
+ },
110
+
111
+ close_sub() {
112
+ this.show_sub_nav = false
113
+ },
114
+
77
115
  toggle_info() {
78
116
  this.show_info_nav = !this.show_info_nav
79
117
 
80
- if (this.is_mobile) {
118
+ if (this.is_mobile && this.is_narrow_viewport) {
81
119
  this.show_sub_nav = false
82
120
  }
83
121
  },
@@ -85,7 +123,7 @@
85
123
  toggle_sub() {
86
124
  this.show_sub_nav = !this.show_sub_nav
87
125
 
88
- if (this.is_mobile) {
126
+ if (this.is_mobile && this.is_narrow_viewport) {
89
127
  this.show_info_nav = false
90
128
  }
91
129
  }
@@ -108,27 +146,20 @@
108
146
 
109
147
  <div class="row">
110
148
  <div
111
- :class="is_mobile ? '' : 'position-relative col-auto'"
112
- :style="is_mobile ? 'position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; z-index: 1040;' : (sub_nav_has_been_resized ? `width: ${sub_nav_width}px; min-width: ${sub_nav_width}px; max-width: ${sub_nav_width}px;` : `min-width: ${sub_nav_min_width}px;`)"
149
+ :class="(is_mobile && is_narrow_viewport) ? '' : 'position-relative col-auto'"
150
+ :style="(is_mobile && is_narrow_viewport) ? 'position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; z-index: 1040;' : (sub_nav_has_been_resized ? `width: ${sub_nav_width}px; min-width: ${sub_nav_width}px; max-width: ${sub_nav_width}px;` : `min-width: ${sub_nav_min_width}px;`)"
113
151
  x-ref="sub_nav_container"
114
152
  x-show="has_content($refs.full_page_sub_navigation) && show_sub_nav"
115
- x-transition:enter="side-panel-transition-enter"
116
- x-transition:enter-end="side-panel-transition-enter-end"
117
- x-transition:enter-start="side-panel-transition-enter-start-left"
118
- x-transition:leave="side-panel-transition-leave"
119
- x-transition:leave-end="side-panel-transition-leave-end-left"
120
- x-transition:leave-start="side-panel-transition-leave-start"
153
+ x-transition
121
154
  >
122
155
  <div
123
- :style="is_mobile ? 'height: 100vh;' : ''"
156
+ :style="(is_mobile && is_narrow_viewport) ? 'height: 100vh;' : ''"
124
157
  class="row sticky-top border-end border-app-primary side-panel overflow-y-auto"
125
158
  >
126
159
  <div class="col">
127
160
  <div class="row pb-2 align-items-center">
128
161
  <div class="col-auto px-1" style="visibility: hidden;">
129
- <button class="btn-close-panel" type="button">
130
- <i class="bi bi-x-lg f5"></i>
131
- </button>
162
+ {% include 'django_spire/button/primary_button.html' with button_icon='bi bi-x-lg' %}
132
163
  </div>
133
164
  <div class="col h5 text-app-primary text-center text-nowrap overflow-hidden text-truncate mb-0" style="min-width: 0;">
134
165
  {% block full_page_sub_navigation_title %}
@@ -139,18 +170,16 @@
139
170
  {% endblock %}
140
171
  </div>
141
172
  <div class="col-auto px-1">
142
- <button
143
- @click="show_sub_nav = false"
144
- class="btn-close-panel"
145
- type="button"
146
- >
147
- <i class="bi bi-x-lg f5"></i>
148
- </button>
173
+ {% include 'django_spire/button/primary_button.html' with button_icon='bi bi-x-lg' x_button_click='close_sub()' %}
149
174
  </div>
150
175
  </div>
151
176
 
152
177
  <div class="row">
153
- <div class="col" x-ref="full_page_sub_navigation">
178
+ <div
179
+ @click.capture="if (is_narrow_viewport && $event.target.closest('[data-closes-nav]')) { $nextTick(() => { show_sub_nav = false }) }"
180
+ class="col"
181
+ x-ref="full_page_sub_navigation"
182
+ >
154
183
  {% block full_page_sub_navigation %}
155
184
  {% endblock %}
156
185
  </div>
@@ -168,7 +197,7 @@
168
197
 
169
198
  <div
170
199
  class="panel-toggle-container panel-toggle-container-left"
171
- x-show="has_content($refs.full_page_sub_navigation) && !show_sub_nav && !(is_mobile && show_info_nav)"
200
+ x-show="has_content($refs.full_page_sub_navigation) && !show_sub_nav && !((is_mobile && is_narrow_viewport) && show_info_nav)"
172
201
  >
173
202
  {% include 'django_spire/button/primary_button.html' with button_icon='bi bi-chevron-right' x_button_click='toggle_sub()' %}
174
203
  </div>
@@ -183,24 +212,19 @@
183
212
 
184
213
  <div
185
214
  class="col-auto panel-toggle-container panel-toggle-container-right"
186
- x-show="has_content($refs.full_page_info_navigation) && !show_info_nav && !(is_mobile && show_sub_nav)"
215
+ x-show="has_content($refs.full_page_info_navigation) && !show_info_nav && !((is_mobile && is_narrow_viewport) && show_sub_nav)"
187
216
  >
188
217
  {% include 'django_spire/button/primary_button.html' with button_icon='bi bi-chevron-left' x_button_click='toggle_info()' %}
189
218
  </div>
190
219
 
191
220
  <div
192
- :class="is_mobile ? '' : 'position-relative col-auto'"
193
- :style="is_mobile ? 'position: fixed; width: 100vw; height: 100vh; right: 0; top: 0; z-index: 1040;' : `width: ${info_nav_width}px; min-width: ${info_nav_width}px; max-width: ${info_nav_width}px; margin-left: -${info_nav_width}px; z-index: 1040;`"
221
+ :class="(is_mobile && is_narrow_viewport) ? '' : 'position-relative col-auto'"
222
+ :style="(is_mobile && is_narrow_viewport) ? 'position: fixed; width: 100vw; height: 100vh; right: 0; top: 0; z-index: 1040;' : (show_info_nav ? `width: ${info_nav_width}px; min-width: ${info_nav_width}px; max-width: ${info_nav_width}px; margin-left: -${info_nav_width}px; z-index: 1040;` : 'margin-left: 0px; z-index: 1040;')"
194
223
  x-show="has_content($refs.full_page_info_navigation) && show_info_nav"
195
- x-transition:enter="side-panel-transition-enter"
196
- x-transition:enter-end="side-panel-transition-enter-end"
197
- x-transition:enter-start="side-panel-transition-enter-start-right"
198
- x-transition:leave="side-panel-transition-leave"
199
- x-transition:leave-end="side-panel-transition-leave-end-right"
200
- x-transition:leave-start="side-panel-transition-leave-start"
224
+ x-transition
201
225
  >
202
226
  <div
203
- :style="is_mobile ? 'height: 100vh;' : ''"
227
+ :style="(is_mobile && is_narrow_viewport) ? 'height: 100vh;' : ''"
204
228
  class="row sticky-top border-start border-app-primary side-panel overflow-y-auto bg-app-layer-one"
205
229
  >
206
230
  <div class="col">
@@ -216,18 +240,16 @@
216
240
  </div>
217
241
 
218
242
  <div class="col-auto px-1">
219
- <button
220
- @click="show_info_nav = false"
221
- class="btn-close-panel"
222
- type="button"
223
- >
224
- <i class="bi bi-x-lg"></i>
225
- </button>
243
+ {% include 'django_spire/button/primary_button.html' with button_icon='bi bi-x-lg' x_button_click="close_info()" %}
226
244
  </div>
227
245
  </div>
228
246
 
229
247
  <div class="row">
230
- <div class="col" x-ref="full_page_info_navigation">
248
+ <div
249
+ x-on:click.capture="if (is_narrow_viewport) { $nextTick(() => { show_info_nav = false }) }"
250
+ class="col"
251
+ x-ref="full_page_info_navigation"
252
+ >
231
253
  {% block full_page_info_navigation %}
232
254
  {% endblock %}
233
255
  </div>
@@ -7,6 +7,7 @@
7
7
  {% if AuthController.knowledge.can_view %}
8
8
  :href="'{% url "django_spire:knowledge:entry:version:page:editor" pk=0 %}'.replace(0, entry.version_id)"
9
9
  {% endif %}
10
+ data-closes-nav
10
11
  >
11
12
  <i class="bi bi-file-earmark-text flex-shrink-0"></i>
12
13
  <span class="text-truncate ms-1" x-text="entry.name"></span>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-spire
3
- Version: 0.21.0
3
+ Version: 0.21.1
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=TCG9nz1swPo3cWfSwE1_lA2D8L4Wz4xH63GGZ32jB7M,171
3
+ django_spire/consts.py,sha256=8Fe05Utjk0aOGITBGS1hnpxPylEe0jr6D-RLI-y7jPw,171
4
4
  django_spire/exceptions.py,sha256=L5ndRO5ftMmh0pHkO2z_NG3LSGZviJ-dDHNT73SzTNw,48
5
5
  django_spire/settings.py,sha256=g6GVznY_k9vuBnOdJfcI0yDEMBzg9FKiSllSwXrgGM4,972
6
6
  django_spire/urls.py,sha256=mKeZszb5U4iIGqddMb5Tt5fRC72U2wABEOi6mvOfEBU,656
@@ -36,7 +36,7 @@ django_spire/ai/chat/migrations/0004_chatmessage_response_type_chatmessage_sende
36
36
  django_spire/ai/chat/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  django_spire/ai/chat/templates/django_spire/ai/chat/card/chat_card.html,sha256=65wbyinYxqOlAqISkgLoykcwv_dD2X4z0K-r9RQnP0g,309
38
38
  django_spire/ai/chat/templates/django_spire/ai/chat/dropdown/ellipsis_dropdown.html,sha256=fiWuRkqcf8_oOVt5mRvsyKHhevAKM0hzbjhCdrZHZUU,736
39
- django_spire/ai/chat/templates/django_spire/ai/chat/element/recent_chat_select_element.html,sha256=NgKGSjbcoCVezdDvvd3aTnpLPgE7oCEsRkHXGxTLn9c,4838
39
+ django_spire/ai/chat/templates/django_spire/ai/chat/element/recent_chat_select_element.html,sha256=7P6rYxkTsiOv9y409Up62Ct3ab8nwycckMkXR_sKDKM,4854
40
40
  django_spire/ai/chat/templates/django_spire/ai/chat/message/default_message.html,sha256=6MT6O9jpkl8DCNKywZYa3YpRvxgQWhlmVJAu4NO70aU,143
41
41
  django_spire/ai/chat/templates/django_spire/ai/chat/message/loading_response_message.html,sha256=m3vcYC_tl7OYzbsguJWs8C6jPiJBKVsojginN4cSBkc,1845
42
42
  django_spire/ai/chat/templates/django_spire/ai/chat/message/message.html,sha256=vgl3DykmUHzwDaRt18qhuLHP0X_AIRd5n0Dc5T0FQP0,1936
@@ -46,7 +46,7 @@ django_spire/ai/chat/templates/django_spire/ai/chat/page/chat_page.html,sha256=a
46
46
  django_spire/ai/chat/templates/django_spire/ai/chat/section/confirm_delete_section.html,sha256=yJr-zmu4CV7REGnHa2uA_MqgqiftSz-r2bb7U0_5CIY,720
47
47
  django_spire/ai/chat/templates/django_spire/ai/chat/widget/dialog_widget.html,sha256=-TwiNUfwh81JHjSLPmE-WLM8FR0FxPM9jeL0IZwztlI,5306
48
48
  django_spire/ai/chat/templates/django_spire/ai/chat/widget/recent_chat_list_widget.html,sha256=pbn8yyVL2i0ugyS84cmNX-nrr1K-oOAQiHnsjlQ_wYc,132
49
- django_spire/ai/chat/templates/django_spire/ai/chat/widget/selection_widget.html,sha256=Fa5Ja2i7J4rL5hU53b90RKPjFFyDpGujqOp5LpnyfCU,1617
49
+ django_spire/ai/chat/templates/django_spire/ai/chat/widget/selection_widget.html,sha256=TTYHwPpa6gyZA7zNAwrzpUd5JdSOOH76L3GpEes9UQA,1633
50
50
  django_spire/ai/chat/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  django_spire/ai/chat/tests/test_router/test_base_chat_router.py,sha256=SgC4S7Ijm_1Mq2lb8r6gO3BUssc1V7mE6wCGuVxrFYQ,3624
52
52
  django_spire/ai/chat/tests/test_router/test_chat_workflow.py,sha256=DWKcNhoWMYZ3vrsOcOfS_KjCTXbTxBQmuJ0jRggQCGU,4297
@@ -512,11 +512,11 @@ django_spire/core/static/django_spire/css/app-button.css,sha256=iUPOFgXp2v_gsNBe
512
512
  django_spire/core/static/django_spire/css/app-default.css,sha256=RLVP_vLlkNx_UpNmMmgO73R3UUB_h3sVHt8I2z_iPVk,315
513
513
  django_spire/core/static/django_spire/css/app-import.css,sha256=HMoCBzxpPXvOqxj_BOo_yqtYvODFouRbKqs4Wgg_rOU,418
514
514
  django_spire/core/static/django_spire/css/app-layout.css,sha256=Wwnbf3tJ3khvTAC2DgzXPtgfR3rWyfMzQ1wljCNsOLo,458
515
- django_spire/core/static/django_spire/css/app-navigation.css,sha256=_yQ7JCIOoHyOhfpTkj8Q07ma0dFvOMHXTHetnT8-27I,2587
515
+ django_spire/core/static/django_spire/css/app-navigation.css,sha256=G4P2FR2PU3DDI4oEtvS7TQPbDwRAJdCevwPEvoyVx3c,2504
516
516
  django_spire/core/static/django_spire/css/app-offcanvas.css,sha256=SxDsONE1eqERJ1gDAP8chjoJ0aD0Q1VHBPqRWJi8-Mw,178
517
517
  django_spire/core/static/django_spire/css/app-override.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
518
518
  django_spire/core/static/django_spire/css/app-page.css,sha256=pB-sSZc9NEUkkMcCfzzrCfeiggGmhONn8Eid5HLs8c0,363
519
- django_spire/core/static/django_spire/css/app-side-panel.css,sha256=ltggQkEc9tswJ9g2M0qzmWprdzycvizrS0YgY2We2U0,1954
519
+ django_spire/core/static/django_spire/css/app-side-panel.css,sha256=tZUwmC_yK9ZNnoF-I1y6Nx-EtL445K8-CqBbWUcAi1M,1083
520
520
  django_spire/core/static/django_spire/css/app-template.css,sha256=D5ORspwfokNqRW0HwyCbzjBp2Kf_2XtWKa6FSQuSXOg,485
521
521
  django_spire/core/static/django_spire/css/app-text.css,sha256=YQYhTsXux7vVuZhzsyHV5TuPCpKam8F14GiOnMcGOyk,10141
522
522
  django_spire/core/static/django_spire/css/app-theme.css,sha256=6vxu-tNDS4i1wWwLxdkCuiucN_ZKzGqwZmqZ8Vcwzk0,421
@@ -672,7 +672,7 @@ django_spire/core/templates/django_spire/modal/element/model_close_element.html,
672
672
  django_spire/core/templates/django_spire/navigation/mobile_navigation.html,sha256=btXoeLihu3jd_7XzKrZiwaBgffDiLoDorMSxhYrnhc4,997
673
673
  django_spire/core/templates/django_spire/navigation/navigation_links.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
674
674
  django_spire/core/templates/django_spire/navigation/side_navigation.html,sha256=qiI4LMRx45JhCco22jYdXAvDy4L8BQcaXj56FgeRYOk,2285
675
- django_spire/core/templates/django_spire/navigation/top_navigation.html,sha256=A_wYyv6Nlx4PGztppZnp7Y6a-5zvpPC2gHYV-OmHL4Q,3786
675
+ django_spire/core/templates/django_spire/navigation/top_navigation.html,sha256=TzIBqa-1McH2HWIi7Yp8hEvT8MmznnbWZoEigXVUBwQ,4116
676
676
  django_spire/core/templates/django_spire/navigation/accordion/nav_accordion.html,sha256=etJNDg2Hal_16A7qBrqRjuQ3KKtfeGY_KpjFOyUubcQ,1246
677
677
  django_spire/core/templates/django_spire/navigation/accordion/settings_nav_accordion.html,sha256=5jy4VBU199bG_-WPmWVhe5bZYWsm03bzZC6XqGK2XFM,794
678
678
  django_spire/core/templates/django_spire/navigation/elements/nav_link.html,sha256=HwDO3oTgsW1W9w0l0LWgIbT1ulPd96croKpLEvrGPpA,153
@@ -684,7 +684,7 @@ django_spire/core/templates/django_spire/page/center_card_page.html,sha256=CqUtX
684
684
  django_spire/core/templates/django_spire/page/delete_confirmation_form_page.html,sha256=kmAA2eeD-5s3oAdS-HdFwbqHnzPlqihqh5JwxMJIP_o,168
685
685
  django_spire/core/templates/django_spire/page/delete_form_page.html,sha256=0ZYlWgl3eVq2OTbu_C0UiHVfSIbj2gg_iJ7xeafHVu4,240
686
686
  django_spire/core/templates/django_spire/page/form_full_page.html,sha256=5yp3EfOC2LlcTc0PYQ5MLuQvuw1QFPsMtnPvRdP0A2g,299
687
- django_spire/core/templates/django_spire/page/full_page.html,sha256=s2N2wIs_w5_mh0_t-gMP-qgZQJL1rhJEHRB3vdgrj3o,11646
687
+ django_spire/core/templates/django_spire/page/full_page.html,sha256=HijZKeAlEwXVA2andd8A6RMpSTvaZ3aC6FVGDwSTJyc,12182
688
688
  django_spire/core/templates/django_spire/page/page.html,sha256=D6qoyoo3E0_Qu8qov6c2YaYbJQ-LnZnCLKHb5bN0sOs,397
689
689
  django_spire/core/templates/django_spire/speech/speech_recognition.html,sha256=0SiRq9L4wFPFl_c8WnwflsYFfQ2wVUPi7aklEPdZPjQ,805
690
690
  django_spire/core/templates/django_spire/speech/speech_synthesis.html,sha256=25HetXDLzVWxC8hBnIuVbNXfvGxfaYvtZUPPtN0fkQY,805
@@ -998,7 +998,7 @@ django_spire/knowledge/templates/django_spire/knowledge/page/home_page.html,sha2
998
998
  django_spire/knowledge/templates/django_spire/knowledge/sub_navigation/element/collection_sub_navigation_ellipsis_dropdown.html,sha256=DeM7yRcjRN25eRvdOK-3Ae0kbYaMWvk7Ufbc8AZphgk,1023
999
999
  django_spire/knowledge/templates/django_spire/knowledge/sub_navigation/element/entry_sub_navigation_ellipsis_dropdown.html,sha256=SiwlFdvIbmcWyexxNMBO4b-mbOwqAAtPHLv8Fqr8UIs,757
1000
1000
  django_spire/knowledge/templates/django_spire/knowledge/sub_navigation/item/collection_sub_navigation_item.html,sha256=zfuT2vx5kTEDqIAN4QroBR7BWL5ifc4KRQU7dmAQmKc,1181
1001
- django_spire/knowledge/templates/django_spire/knowledge/sub_navigation/item/entry_sub_navigation_item.html,sha256=t9YnXZT101IFF0SXyHvdIc__OclrqO17eFZDt75lnAw,856
1001
+ django_spire/knowledge/templates/django_spire/knowledge/sub_navigation/item/entry_sub_navigation_item.html,sha256=piZwe5YmWQMn9675YSzTfXEdkWdqNwTvGTvdSsIdpVE,880
1002
1002
  django_spire/knowledge/templates/django_spire/knowledge/sub_navigation/widget/collection_entry_sub_navigation_widget.html,sha256=m9dzz9rxVCb_T5dKeo1spYWKRGogTZ07snKIfau0njA,6121
1003
1003
  django_spire/knowledge/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1004
1004
  django_spire/knowledge/templatetags/spire_knowledge_tags.py,sha256=n3eHc8QZplOi9ovD8qbfzp66F91tdm6q8z1YPcnmVOM,622
@@ -1151,8 +1151,8 @@ django_spire/theme/urls/page_urls.py,sha256=S8nkKkgbhG3XHI3uMUL-piOjXIrRkuY2UlM_
1151
1151
  django_spire/theme/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1152
1152
  django_spire/theme/views/json_views.py,sha256=W1khC2K_EMbEzAFmMxC_P76_MFnkRH4-eVdodrRfAhw,1904
1153
1153
  django_spire/theme/views/page_views.py,sha256=pHr8iekjtR99xs7w1taj35HEo133Svq1dvDD0y0VL1c,3933
1154
- django_spire-0.21.0.dist-info/licenses/LICENSE.md,sha256=tlTbOtgKoy-xAQpUk9gPeh9O4oRXCOzoWdW3jJz0wnA,1091
1155
- django_spire-0.21.0.dist-info/METADATA,sha256=KmPh1hAMWgthYDDBTqPUl1hvK7BfCigChQRl6eWX8cQ,4967
1156
- django_spire-0.21.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1157
- django_spire-0.21.0.dist-info/top_level.txt,sha256=xf3QV1e--ONkVpgMDQE9iqjQ1Vg4--_6C8wmO-KxPHQ,13
1158
- django_spire-0.21.0.dist-info/RECORD,,
1154
+ django_spire-0.21.1.dist-info/licenses/LICENSE.md,sha256=tlTbOtgKoy-xAQpUk9gPeh9O4oRXCOzoWdW3jJz0wnA,1091
1155
+ django_spire-0.21.1.dist-info/METADATA,sha256=-_tFjGSVFeNqfse3Q_9dP4vkDsWPxZo3OLXF84qf-Aw,4967
1156
+ django_spire-0.21.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1157
+ django_spire-0.21.1.dist-info/top_level.txt,sha256=xf3QV1e--ONkVpgMDQE9iqjQ1Vg4--_6C8wmO-KxPHQ,13
1158
+ django_spire-0.21.1.dist-info/RECORD,,