django-spire 0.16.0__py3-none-any.whl → 0.16.2__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 (46) hide show
  1. django_spire/ai/chat/intelligence/__init__.py +0 -0
  2. django_spire/ai/chat/intelligence/maps/__init__.py +0 -0
  3. django_spire/ai/chat/intelligence/maps/intent_llm_map.py +7 -0
  4. django_spire/ai/chat/intelligence/prompts.py +17 -0
  5. django_spire/ai/chat/intelligence/workflows/__init__.py +0 -0
  6. django_spire/ai/chat/intelligence/workflows/chat_workflow.py +76 -0
  7. django_spire/ai/chat/templates/django_spire/ai/chat/message/loading_response_message.html +5 -1
  8. django_spire/ai/chat/templates/django_spire/ai/chat/message/message.html +39 -26
  9. django_spire/ai/chat/templates/django_spire/ai/chat/widget/dialog_widget.html +33 -30
  10. django_spire/ai/sms/intelligence/__init__.py +0 -0
  11. django_spire/ai/sms/intelligence/workflows/__init__.py +0 -0
  12. django_spire/ai/sms/intelligence/workflows/sms_conversation_workflow.py +27 -0
  13. django_spire/consts.py +1 -1
  14. django_spire/core/static/django_spire/css/themes/ayu/app-dark.css +0 -7
  15. django_spire/core/static/django_spire/css/themes/ayu/app-light.css +0 -7
  16. django_spire/core/static/django_spire/css/themes/catppuccin/app-dark.css +0 -7
  17. django_spire/core/static/django_spire/css/themes/catppuccin/app-light.css +0 -7
  18. django_spire/core/static/django_spire/css/themes/default/app-dark.css +0 -7
  19. django_spire/core/static/django_spire/css/themes/default/app-light.css +0 -7
  20. django_spire/core/static/django_spire/css/themes/dracula/app-dark.css +0 -7
  21. django_spire/core/static/django_spire/css/themes/dracula/app-light.css +0 -7
  22. django_spire/core/static/django_spire/css/themes/gruvbox/app-dark.css +0 -7
  23. django_spire/core/static/django_spire/css/themes/gruvbox/app-light.css +0 -7
  24. django_spire/core/static/django_spire/css/themes/material/app-dark.css +0 -7
  25. django_spire/core/static/django_spire/css/themes/material/app-light.css +0 -7
  26. django_spire/core/static/django_spire/css/themes/nord/app-dark.css +0 -7
  27. django_spire/core/static/django_spire/css/themes/nord/app-light.css +0 -7
  28. django_spire/core/static/django_spire/css/themes/oceanic-next/app-dark.css +0 -7
  29. django_spire/core/static/django_spire/css/themes/oceanic-next/app-light.css +0 -7
  30. django_spire/core/static/django_spire/css/themes/one-dark/app-dark.css +0 -7
  31. django_spire/core/static/django_spire/css/themes/one-dark/app-light.css +0 -7
  32. django_spire/core/static/django_spire/css/themes/palenight/app-dark.css +0 -7
  33. django_spire/core/static/django_spire/css/themes/palenight/app-light.css +0 -7
  34. django_spire/core/static/django_spire/css/themes/rose-pine/app-dark.css +0 -7
  35. django_spire/core/static/django_spire/css/themes/rose-pine/app-light.css +0 -7
  36. django_spire/core/static/django_spire/css/themes/synthwave/app-dark.css +0 -7
  37. django_spire/core/static/django_spire/css/themes/synthwave/app-light.css +0 -7
  38. django_spire/core/static/django_spire/css/themes/tokyo-night/app-dark.css +0 -7
  39. django_spire/core/static/django_spire/css/themes/tokyo-night/app-light.css +0 -7
  40. django_spire/knowledge/intelligence/workflows/knowledge_workflow.py +25 -36
  41. django_spire/settings.py +9 -0
  42. {django_spire-0.16.0.dist-info → django_spire-0.16.2.dist-info}/METADATA +1 -1
  43. {django_spire-0.16.0.dist-info → django_spire-0.16.2.dist-info}/RECORD +46 -37
  44. {django_spire-0.16.0.dist-info → django_spire-0.16.2.dist-info}/WHEEL +0 -0
  45. {django_spire-0.16.0.dist-info → django_spire-0.16.2.dist-info}/licenses/LICENSE.md +0 -0
  46. {django_spire-0.16.0.dist-info → django_spire-0.16.2.dist-info}/top_level.txt +0 -0
File without changes
File without changes
@@ -0,0 +1,7 @@
1
+ from dandy.llm import BaseLlmMap
2
+ from dandy.map import Map
3
+
4
+
5
+ class IntentLlmMap(BaseLlmMap):
6
+ map_keys_description = 'The user\'s chat intent'
7
+ map = Map({})
@@ -0,0 +1,17 @@
1
+ from dandy.llm import Prompt
2
+
3
+ from django_spire.conf import settings
4
+
5
+
6
+ def organization_prompt():
7
+ return (
8
+ Prompt()
9
+ .text(f'You are a chat assistant for a company called "{settings.ORGANIZATION_NAME}".')
10
+ .line_break()
11
+ .text(f'Organization Description: "{settings.ORGANIZATION_DESCRIPTION}"')
12
+ .line_break()
13
+ .text('Make sure to follow the rules below')
14
+ .list([
15
+ 'Do not talk about being an AI at all to maintain the illusion of being a human assistant.',
16
+ ])
17
+ )
@@ -0,0 +1,76 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Type
4
+
5
+ from dandy.map import Map
6
+ from dandy.recorder import recorder_to_html_file
7
+ from dandy.workflow import BaseWorkflow
8
+ from dandy.llm import LlmBot, MessageHistory, Prompt
9
+ from django.core.handlers.wsgi import WSGIRequest
10
+
11
+ from django_spire.ai.chat.intelligence.maps.intent_llm_map import IntentLlmMap
12
+ from django_spire.ai.chat.intelligence.prompts import organization_prompt
13
+ from django_spire.ai.chat.message_intel import DefaultMessageIntel
14
+ from django_spire.auth.controller.controller import AppAuthController
15
+ from django_spire.knowledge.intelligence.workflows.knowledge_workflow import \
16
+ KnowledgeWorkflow
17
+
18
+
19
+ if TYPE_CHECKING:
20
+ from django_spire.ai.chat.message_intel import BaseMessageIntel
21
+
22
+
23
+ class SpireChatWorkflow(BaseWorkflow):
24
+ @classmethod
25
+ def _generate_intent_map(cls, request: WSGIRequest) -> Type[IntentLlmMap]:
26
+ intent_dict = {}
27
+
28
+ if AppAuthController(app_name='knowledge', request=request).can_view():
29
+ intent_message = (
30
+ 'The user is looking for information or knowledge on something.'
31
+ )
32
+ intent_dict[intent_message] = KnowledgeWorkflow
33
+
34
+ intent_dict['None of the above choices match the user\'s intent'] = None
35
+
36
+ IntentLlmMap.map = Map(intent_dict)
37
+ IntentLlmMap._map_enum = IntentLlmMap.map.as_enum()
38
+ return IntentLlmMap
39
+
40
+ @classmethod
41
+ @recorder_to_html_file('spire_chat_workflow')
42
+ def process(
43
+ cls,
44
+ request: WSGIRequest,
45
+ user_input: str,
46
+ message_history: MessageHistory | None = None
47
+ ) -> BaseMessageIntel:
48
+ intent_map = cls._generate_intent_map(request)
49
+ intents = intent_map.process(user_input, max_return_values=1)
50
+
51
+ if intents[0] is None:
52
+ response = LlmBot.process(
53
+ prompt=user_input,
54
+ message_history=message_history,
55
+ postfix_system_prompt=organization_prompt()
56
+ )
57
+
58
+ return DefaultMessageIntel(text=response.text)
59
+
60
+ response = LlmBot.process(
61
+ prompt=(
62
+ Prompt()
63
+ .text(f'User Input: {user_input}')
64
+ .line_break()
65
+ .text(
66
+ 'Use the following information to the answer the user\'s question '
67
+ 'or concern.'
68
+ )
69
+ .line_break()
70
+ .text(intents[0].process(user_input))
71
+ ),
72
+ message_history=message_history,
73
+ postfix_system_prompt=organization_prompt()
74
+ )
75
+
76
+ return DefaultMessageIntel(text=response.text)
@@ -1,3 +1,6 @@
1
+ {% load spire_core_tags %}
2
+
3
+ {% generate_id as response_message_intel_id %}
1
4
  <div
2
5
  x-data="{
3
6
  show_loading: false,
@@ -14,7 +17,7 @@
14
17
  response_message: new ViewGlue(
15
18
  '{% url "django_spire:ai:chat:message:response:new" %}',
16
19
  {
17
- message_body: '{{ message_intel.text }}',
20
+ message_body: JSON.parse(document.getElementById('{{ response_message_intel_id }}').textContent),
18
21
  chat_id: '{{ chat_id }}',
19
22
  synthesis_speech: '{{ synthesis_speech }}' === 'True'
20
23
  }
@@ -23,6 +26,7 @@
23
26
  x-show="show_loading"
24
27
  x-cloak
25
28
  >
29
+ {{ message_intel.text|json_script:response_message_intel_id }}
26
30
  <div x-ref="loading_response_message" class="row mt-2 pb-3">
27
31
  <div class="col-auto align-self-center">
28
32
  <div class="row align-items-center">
@@ -1,37 +1,50 @@
1
+ {% load spire_core_tags %}
2
+
1
3
  {% block message %}
2
- <div x-data="{
4
+ {% generate_id as message_intel_id %}
5
+ <div
6
+ class="col-auto mb-1 {{ message_class }}"
7
+ @mouseover="show_message_menu = true"
8
+ @mouseleave="show_message_menu = false"
9
+ x-data="{
3
10
  show_message_menu: false,
4
- speech_synthesis_text: '',
11
+ message_intel_str: '',
5
12
  init() {
6
- this.speech_synthesis_text = '{{ message_intel.content_to_str|escapejs }}'
7
- {% if synthesis_speech %}this.start_speaking(this.speech_synthesis_text){% endif %}
13
+ this.message_intel_str = JSON.parse(document.getElementById('{{ message_intel_id }}').textContent)
14
+ {% if synthesis_speech %}this.start_speaking(this.message_intel_str){% endif %}
8
15
  $el.scrollIntoView({behavior: 'smooth'})
9
16
  }
10
- }" class="col-auto mb-3 {{ message_class }}">
11
- <div class="row">
12
- <div class="col fs--1 {{ sender_class }}">
13
- {% block message_sender %}
14
- {{ sender }}
15
- {% endblock %}
16
- </div>
17
- </div>
18
- <div class="row">
19
- <div @click="show_message_menu = !show_message_menu"
20
- class="col px-3 py-2 rounded-3 shadow-sm {{ content_class|default:'border' }}">
21
- {% block message_content %}
22
- {{ message_intel.content_to_str|linebreaksbr }}
23
- {% endblock %}
17
+ }"
18
+ >
19
+ <div class="container-fluid">
20
+ {{ message_intel.content_to_str|json_script:message_intel_id }}
21
+ <div class="row">
22
+ <div class="col fs--1 {{ sender_class }}">
23
+ {% block message_sender %}
24
+ {{ sender }}
25
+ {% endblock %}
26
+ </div>
24
27
  </div>
25
- </div>
26
- <div x-show="show_message_menu" class="row">
27
- <div class="col-auto">
28
- <div @click="start_speaking(speech_synthesis_text)" class="py-1 px-2 cursor-pointer">
29
- <i class="bi bi-soundwave"></i>
28
+ <div class="row">
29
+ <div class="col-12 px-3 py-2 rounded-3 shadow-sm {{ content_class|default:'border' }}">
30
+ {% block message_content %}
31
+ {{ message_intel.content_to_str|linebreaksbr }}
32
+ {% endblock %}
30
33
  </div>
31
34
  </div>
32
- <div class="col-auto">
33
- <div @click="send_chat(message_body = '{{ message_intel.content_to_str }}')" class="py-1 px-2 cursor-pointer">
34
- <i class="bi bi-repeat"></i>
35
+ <div
36
+ class="row justify-content-end"
37
+ :class="show_message_menu ? 'opacity-100' : 'opacity-0'"
38
+ >
39
+ <div class="col-auto px-0">
40
+ <div @click="start_speaking(message_intel_str)" class="py-1 px-2 cursor-pointer">
41
+ <i class="bi bi-soundwave"></i>
42
+ </div>
43
+ </div>
44
+ <div class="col-auto pe-0 ps-1">
45
+ <div @click="send_chat({message_body: message_intel_str})" class="py-1 px-2 cursor-pointer">
46
+ <i class="bi bi-repeat"></i>
47
+ </div>
35
48
  </div>
36
49
  </div>
37
50
  </div>
@@ -1,36 +1,40 @@
1
1
  {% extends 'django_spire/speech/speech_recognition.html' %}
2
2
 
3
3
  {% block speech_recognition_content %}
4
+ <div
5
+ class="row"
6
+ x-data="{
7
+ request_message_view: new ViewGlue('{% url "django_spire:ai:chat:message:request:new" %}'),
8
+ load_messages_view: new ViewGlue('{% url "django_spire:ai:chat:message:load_chat" chat_id=chat.id %}'),
9
+ chat_id: '{{ chat.id }}',
10
+ message_body: '',
4
11
 
5
- <div x-data="{
6
- request_message_view: new ViewGlue('{% url "django_spire:ai:chat:message:request:new" %}'),
7
- load_messages_view: new ViewGlue('{% url "django_spire:ai:chat:message:load_chat" chat_id=chat.id %}'),
8
- chat_id: '{{ chat.id }}',
9
- message_body: '',
10
- async send_chat(synthesis_speech_for_response = false, message_body = '') {
11
- if(this.message_body !== '') {
12
- await this.request_message_view.render_insert_adjacent(this.$refs.target_div, {
13
- message_body: this.message_body.trim(),
14
- chat_id: this.chat_id,
15
- synthesis_speech: synthesis_speech_for_response
16
- })
17
- this.message_body = ''
18
- }
19
- },
20
- load_messages() {
21
- this.load_messages_view.render_insert_adjacent(this.$refs.target_div, {})
22
- },
23
- init() {
24
- setTimeout(() => this.$refs.target_div.scrollTop = this.$refs.target_div.scrollHeight, 1500)
25
-
12
+ init() {
13
+ setTimeout(() => this.$refs.target_div.scrollTop = this.$refs.target_div.scrollHeight, 1500)
26
14
 
27
- this.speech_recognition.onresult = () => {
28
- this.message_body = this.speech_transcript
29
- this.send_chat(true)
15
+ this.speech_recognition.onresult = () => {
16
+ this.message_body = this.speech_transcript
17
+ this.send_chat({message_body: this.message_body, synthesis_speech_for_response: true})
18
+ }
19
+ },
20
+ load_messages() {
21
+ this.load_messages_view.render_insert_adjacent(this.$refs.target_div, {})
22
+ },
23
+ async send_chat({message_body = '', synthesis_speech_for_response = false}) {
24
+ if (message_body !== '') {
25
+ await this.request_message_view.render_insert_adjacent(
26
+ this.$refs.target_div,
27
+ {
28
+ message_body: message_body,
29
+ chat_id: this.chat_id,
30
+ synthesis_speech: synthesis_speech_for_response
31
+ }
32
+ )
33
+ this.message_body = ''
34
+ }
30
35
  }
31
-
32
- }
33
- }" class="row">
36
+ }"
37
+ >
34
38
  <div class="col-12">
35
39
  <div class="row px-0 border-bottom">
36
40
  <div class="col-auto ps-2 pe-0 h-100 d-block d-md-none text-app-primary"
@@ -45,7 +49,6 @@
45
49
  <div class="row mb-3">
46
50
  <div x-init="load_messages()" x-ref="target_div" class="col-12 overflow-auto p-4"
47
51
  style="height: calc(100vh - 90px - var(--app-top-navigation-height));">
48
-
49
52
  </div>
50
53
  </div>
51
54
 
@@ -59,11 +62,11 @@
59
62
  </button>
60
63
  </div>
61
64
  <div class="col text-center px-1">
62
- <input type="text" x-init="$el.focus()" x-model="message_body" @keyup.enter="send_chat()"
65
+ <input type="text" x-init="$el.focus()" x-model="message_body" @keyup.enter="send_chat({message_body: message_body})"
63
66
  class="form-control" autocomplete="off" name="request_message">
64
67
  </div>
65
68
  <div class="col-auto text-center ps-1 pe-2">
66
- <button class="btn btn-app-primary-outlined" @click="send_chat()">
69
+ <button class="btn btn-app-primary-outlined" @click="send_chat({message_body: message_body})">
67
70
  <i class="bi bi-send"></i>
68
71
  </button>
69
72
  </div>
File without changes
File without changes
@@ -0,0 +1,27 @@
1
+ from dandy.recorder import recorder_to_html_file
2
+ from dandy.workflow import BaseWorkflow
3
+ from dandy.llm import MessageHistory
4
+ from django.core.handlers.wsgi import WSGIRequest
5
+
6
+ from django_spire.ai.chat.intelligence.workflows.chat_workflow import SpireChatWorkflow
7
+ from django_spire.ai.sms.intel import SmsIntel
8
+
9
+
10
+ class SpireSmsConversationWorkflow(BaseWorkflow):
11
+ @classmethod
12
+ @recorder_to_html_file('sms_workflow')
13
+ def process(
14
+ cls,
15
+ request: WSGIRequest,
16
+ user_input: str,
17
+ message_history: MessageHistory | None = None
18
+ ) -> SmsIntel:
19
+ return SmsIntel(
20
+ body=str(
21
+ SpireChatWorkflow.process(
22
+ request,
23
+ user_input=user_input,
24
+ message_history=message_history,
25
+ )
26
+ )
27
+ )
django_spire/consts.py CHANGED
@@ -1,4 +1,4 @@
1
- __VERSION__ = '0.16.0'
1
+ __VERSION__ = '0.16.2'
2
2
 
3
3
 
4
4
  AI_CHAT_WORKFLOW_SENDER_SETTINGS_NAME = 'AI_CHAT_WORKFLOW_NAME'
@@ -1,7 +1,4 @@
1
1
  [data-theme="dark"] {
2
- --app-dark: #0f1419;
3
- --app-light: #bfbdb6;
4
-
5
2
  --app-primary: #59c2ff;
6
3
  --app-primary-soft: #1f2430;
7
4
  --app-primary-dark: #39bae6;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #1f2430;
31
28
  --app-layer-three: #272d38;
32
29
  --app-layer-four: #3e4b59;
33
- --app-layer-five: #5c6773;
34
30
 
35
31
  --app-alt-layer-one: #0a0e14;
36
32
  --app-alt-layer-two: #1a1f29;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #0f1419;
42
38
  --app-default-text-color: #bfbdb6;
43
39
  --app-default-alt-text-color: #acaaa2;
44
- --app-default-bg-color: #0f1419;
45
40
  --app-default-link-color: #59c2ff;
46
41
  --app-default-link-hover-color: #ffd580;
47
- --app-default-link-active-color: #95e6cb;
48
42
 
49
43
  --app-side-navigation-bg-color: #0d1017;
50
44
  --app-side-navigation-text-color: #bfbdb6;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #59c2ff;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #0f1419;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #0d1017;
@@ -1,7 +1,4 @@
1
1
  :root {
2
- --app-dark: #5c6773;
3
- --app-light: #fafafa;
4
-
5
2
  --app-primary: #0066cc;
6
3
  --app-primary-soft: #f0f6ff;
7
4
  --app-primary-dark: #0052a3;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #f3f4f5;
31
28
  --app-layer-three: #edeff1;
32
29
  --app-layer-four: #d9dce0;
33
- --app-layer-five: #828c99;
34
30
 
35
31
  --app-alt-layer-one: #ffffff;
36
32
  --app-alt-layer-two: #fcfcfc;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #fafafa;
42
38
  --app-default-text-color: #5c6773;
43
39
  --app-default-alt-text-color: #6b7280;
44
- --app-default-bg-color: #fafafa;
45
40
  --app-default-link-color: #0066cc;
46
41
  --app-default-link-hover-color: #ff6a00;
47
- --app-default-link-active-color: #86b300;
48
42
 
49
43
  --app-side-navigation-bg-color: #5c6773;
50
44
  --app-side-navigation-text-color: #fafafa;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #59c2ff;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #6b7280;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #fafafa;
@@ -1,7 +1,4 @@
1
1
  [data-theme="dark"] {
2
- --app-dark: #1e1e2e;
3
- --app-light: #cdd6f4;
4
-
5
2
  --app-primary: #cba6f7;
6
3
  --app-primary-soft: #313244;
7
4
  --app-primary-dark: #a385d8;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #313244;
31
28
  --app-layer-three: #45475a;
32
29
  --app-layer-four: #585b70;
33
- --app-layer-five: #6c7086;
34
30
 
35
31
  --app-alt-layer-one: #11111b;
36
32
  --app-alt-layer-two: #1e1e2e;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #1e1e2e;
42
38
  --app-default-text-color: #cdd6f4;
43
39
  --app-default-alt-text-color: #bac2de;
44
- --app-default-bg-color: #1e1e2e;
45
40
  --app-default-link-color: #cba6f7;
46
41
  --app-default-link-hover-color: #f38ba8;
47
- --app-default-link-active-color: #a6e3a1;
48
42
 
49
43
  --app-side-navigation-bg-color: #181825;
50
44
  --app-side-navigation-text-color: #cdd6f4;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #cba6f7;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #1e1e2e;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #181825;
@@ -1,7 +1,4 @@
1
1
  :root {
2
- --app-dark: #4c4f69;
3
- --app-light: #eff1f5;
4
-
5
2
  --app-primary: #8839ef;
6
3
  --app-primary-soft: #ede2f3;
7
4
  --app-primary-dark: #6c2fb3;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #e6e9ef;
31
28
  --app-layer-three: #dce0e8;
32
29
  --app-layer-four: #bcc0cc;
33
- --app-layer-five: #9ca0b0;
34
30
 
35
31
  --app-alt-layer-one: #cdd6f4;
36
32
  --app-alt-layer-two: #bac2de;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #eff1f5;
42
38
  --app-default-text-color: #4c4f69;
43
39
  --app-default-alt-text-color: #5c5f77;
44
- --app-default-bg-color: #eff1f5;
45
40
  --app-default-link-color: #8839ef;
46
41
  --app-default-link-hover-color: #d20f39;
47
- --app-default-link-active-color: #40a02b;
48
42
 
49
43
  --app-side-navigation-bg-color: #4c4f69;
50
44
  --app-side-navigation-text-color: #eff1f5;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #cba6f7;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #5c5f77;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #eff1f5;
@@ -1,7 +1,4 @@
1
1
  [data-theme="dark"] {
2
- --app-dark: #181818;
3
- --app-light: #ffffff;
4
-
5
2
  --app-primary: #0097c9;
6
3
  --app-primary-soft: #1a2a2f;
7
4
  --app-primary-dark: #00b8e6;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #232526;
31
28
  --app-layer-three: #2d3031;
32
29
  --app-layer-four: #3a3d3e;
33
- --app-layer-five: #797c7d;
34
30
 
35
31
  --app-alt-layer-one: #0f0f0f;
36
32
  --app-alt-layer-two: #1f2122;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #181818;
42
38
  --app-default-text-color: #ffffff;
43
39
  --app-default-alt-text-color: #d1d5db;
44
- --app-default-bg-color: #181818;
45
40
  --app-default-link-color: #0097c9;
46
41
  --app-default-link-hover-color: #00b8e6;
47
- --app-default-link-active-color: #10b981;
48
42
 
49
43
  --app-side-navigation-bg-color: #0f0f0f;
50
44
  --app-side-navigation-text-color: #ffffff;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #0097c9;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #181818;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #0f0f0f;
@@ -1,7 +1,4 @@
1
1
  :root {
2
- --app-dark: #181818;
3
- --app-light: #ffffff;
4
-
5
2
  --app-primary: #0097c9;
6
3
  --app-primary-soft: #e6f7fd;
7
4
  --app-primary-dark: #007ba3;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #fafafa;
31
28
  --app-layer-three: #f5f5f6;
32
29
  --app-layer-four: #ededee;
33
- --app-layer-five: #797c7d;
34
30
 
35
31
  --app-alt-layer-one: #ffffff;
36
32
  --app-alt-layer-two: #fefefe;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #ffffff;
42
38
  --app-default-text-color: #181818;
43
39
  --app-default-alt-text-color: #5c5f60;
44
- --app-default-bg-color: #ffffff;
45
40
  --app-default-link-color: #0097c9;
46
41
  --app-default-link-hover-color: #007ba3;
47
- --app-default-link-active-color: #059669;
48
42
 
49
43
  --app-side-navigation-bg-color: #181818;
50
44
  --app-side-navigation-text-color: #ffffff;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #0097c9;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #5c5f60;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #ffffff;
@@ -1,7 +1,4 @@
1
1
  [data-theme="dark"] {
2
- --app-dark: #282a36;
3
- --app-light: #f8f8f2;
4
-
5
2
  --app-primary: #bd93f9;
6
3
  --app-primary-soft: #44475a;
7
4
  --app-primary-dark: #9580d4;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #44475a;
31
28
  --app-layer-three: #6272a4;
32
29
  --app-layer-four: #7882b4;
33
- --app-layer-five: #8e92c4;
34
30
 
35
31
  --app-alt-layer-one: #21222c;
36
32
  --app-alt-layer-two: #373a4e;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #282a36;
42
38
  --app-default-text-color: #f8f8f2;
43
39
  --app-default-alt-text-color: #e8e8e2;
44
- --app-default-bg-color: #282a36;
45
40
  --app-default-link-color: #bd93f9;
46
41
  --app-default-link-hover-color: #ff79c6;
47
- --app-default-link-active-color: #50fa7b;
48
42
 
49
43
  --app-side-navigation-bg-color: #282a36;
50
44
  --app-side-navigation-text-color: #f8f8f2;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #bd93f9;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #282a36;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #282a36;
@@ -1,7 +1,4 @@
1
1
  :root {
2
- --app-dark: #6272a4;
3
- --app-light: #f8f8f2;
4
-
5
2
  --app-primary: #bd93f9;
6
3
  --app-primary-soft: #f0ebfd;
7
4
  --app-primary-dark: #9580d4;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #f0f0ea;
31
28
  --app-layer-three: #e8e8e2;
32
29
  --app-layer-four: #d0d0ca;
33
- --app-layer-five: #b8b8b2;
34
30
 
35
31
  --app-alt-layer-one: #ffffff;
36
32
  --app-alt-layer-two: #f5f5f0;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #f8f8f2;
42
38
  --app-default-text-color: #44475a;
43
39
  --app-default-alt-text-color: #6272a4;
44
- --app-default-bg-color: #f8f8f2;
45
40
  --app-default-link-color: #bd93f9;
46
41
  --app-default-link-hover-color: #ff79c6;
47
- --app-default-link-active-color: #50fa7b;
48
42
 
49
43
  --app-side-navigation-bg-color: #6272a4;
50
44
  --app-side-navigation-text-color: #f8f8f2;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #bd93f9;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #44475a;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #f8f8f2;
@@ -1,7 +1,4 @@
1
1
  [data-theme="dark"] {
2
- --app-dark: #282828;
3
- --app-light: #ebdbb2;
4
-
5
2
  --app-primary: #fabd2f;
6
3
  --app-primary-soft: #3c3836;
7
4
  --app-primary-dark: #d79921;
@@ -30,7 +27,6 @@
30
27
  --app-layer-two: #3c3836;
31
28
  --app-layer-three: #504945;
32
29
  --app-layer-four: #665c54;
33
- --app-layer-five: #7c6f64;
34
30
 
35
31
  --app-alt-layer-one: #1d2021;
36
32
  --app-alt-layer-two: #32302f;
@@ -41,10 +37,8 @@
41
37
  --app-default-button-text-color: #282828;
42
38
  --app-default-text-color: #ebdbb2;
43
39
  --app-default-alt-text-color: #d5c4a1;
44
- --app-default-bg-color: #282828;
45
40
  --app-default-link-color: #fabd2f;
46
41
  --app-default-link-hover-color: #fe8019;
47
- --app-default-link-active-color: #b8bb26;
48
42
 
49
43
  --app-side-navigation-bg-color: #1d2021;
50
44
  --app-side-navigation-text-color: #ebdbb2;
@@ -52,7 +46,6 @@
52
46
  --app-side-navigation-link-hover-color: #fabd2f;
53
47
  --app-side-navigation-width: 200px;
54
48
 
55
- --app-mobile-navigation-bg-color: #282828;
56
49
  --app-mobile-navigation-width: 200px;
57
50
 
58
51
  --app-top-navigation-bg-color: #1d2021;