django-spire 0.20.1__py3-none-any.whl → 0.20.3__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.
- django_spire/consts.py +1 -1
- django_spire/core/static/django_spire/css/app-background.css +200 -0
- django_spire/core/static/django_spire/css/app-text.css +132 -1
- django_spire/core/static/django_spire/css/themes/ayu/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/ayu/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/catppuccin/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/catppuccin/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/default/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/default/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/gruvbox/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/gruvbox/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/material/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/material/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/nord/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/nord/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/one-dark/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/one-dark/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/palenight/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/palenight/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/rose-pine/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/rose-pine/app-light.css +3 -0
- django_spire/core/static/django_spire/css/themes/tokyo-night/app-dark.css +3 -0
- django_spire/core/static/django_spire/css/themes/tokyo-night/app-light.css +3 -0
- django_spire/notification/email/helper.py +8 -0
- django_spire/notification/email/migrations/0003_emailnotification_attachments.py +19 -0
- django_spire/notification/email/models.py +14 -1
- django_spire/notification/email/processor.py +2 -2
- django_spire/notification/models.py +1 -1
- django_spire/theme/templates/django_spire/theme/section/color_section.html +239 -89
- django_spire/theme/templates/django_spire/theme/section/typography_section.html +87 -1
- {django_spire-0.20.1.dist-info → django_spire-0.20.3.dist-info}/METADATA +1 -1
- {django_spire-0.20.1.dist-info → django_spire-0.20.3.dist-info}/RECORD +35 -34
- {django_spire-0.20.1.dist-info → django_spire-0.20.3.dist-info}/WHEEL +0 -0
- {django_spire-0.20.1.dist-info → django_spire-0.20.3.dist-info}/licenses/LICENSE.md +0 -0
- {django_spire-0.20.1.dist-info → django_spire-0.20.3.dist-info}/top_level.txt +0 -0
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from django.conf import settings
|
|
4
4
|
from django.core.mail import EmailMessage
|
|
5
5
|
|
|
6
|
+
from django_spire.file.models import File
|
|
6
7
|
from django_spire.notification.models import Notification
|
|
7
8
|
|
|
8
9
|
|
|
@@ -27,6 +28,11 @@ class EmailHelper:
|
|
|
27
28
|
self.from_email = settings.DEFAULT_FROM_EMAIL
|
|
28
29
|
self.fail_silently = fail_silently
|
|
29
30
|
|
|
31
|
+
self.attachments = []
|
|
32
|
+
for attachment in list(email.attachments.all()):
|
|
33
|
+
with attachment.file.open('rb') as f:
|
|
34
|
+
self.attachments.append((attachment.name, f.read(), attachment.type))
|
|
35
|
+
|
|
30
36
|
|
|
31
37
|
class SendGridEmailHelper(EmailHelper):
|
|
32
38
|
def __init__(
|
|
@@ -58,7 +64,9 @@ class SendGridEmailHelper(EmailHelper):
|
|
|
58
64
|
to=self.to,
|
|
59
65
|
cc=self.cc,
|
|
60
66
|
bcc=self.bcc,
|
|
67
|
+
attachments=self.attachments
|
|
61
68
|
)
|
|
69
|
+
|
|
62
70
|
msg.template_id = self.template_id
|
|
63
71
|
msg.dynamic_template_data = self.template_data
|
|
64
72
|
msg.send(fail_silently=self.fail_silently)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated by Django 5.1.8 on 2025-11-13 20:22
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('django_spire_file', '0001_initial'),
|
|
10
|
+
('django_spire_notification_email', '0002_emailnotification_bcc_emailnotification_cc_and_more'),
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
operations = [
|
|
14
|
+
migrations.AddField(
|
|
15
|
+
model_name='emailnotification',
|
|
16
|
+
name='attachments',
|
|
17
|
+
field=models.ManyToManyField(blank=True, related_name='attachments', related_query_name='attachment', to='django_spire_file.file'),
|
|
18
|
+
),
|
|
19
|
+
]
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
|
|
3
|
-
from django_spire.
|
|
3
|
+
from django_spire.file.models import File
|
|
4
4
|
from django_spire.notification.email.querysets import EmailNotificationQuerySet
|
|
5
|
+
from django_spire.notification.models import Notification
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class EmailNotification(models.Model):
|
|
9
|
+
"""
|
|
10
|
+
It is important to note size limits for email content contained in this model. E.g., Sendgrid has a hard total email
|
|
11
|
+
limit of 30mb (and a recommended limit of 10mb for attachments): https://www.twilio.com/docs/sendgrid/ui/sending-email/attachments-with-digioh#-Limitations
|
|
12
|
+
"""
|
|
8
13
|
notification = models.OneToOneField(
|
|
9
14
|
Notification,
|
|
10
15
|
editable=False,
|
|
@@ -12,6 +17,14 @@ class EmailNotification(models.Model):
|
|
|
12
17
|
related_name='email',
|
|
13
18
|
related_query_name='email',
|
|
14
19
|
)
|
|
20
|
+
|
|
21
|
+
attachments = models.ManyToManyField(
|
|
22
|
+
File,
|
|
23
|
+
blank=True,
|
|
24
|
+
related_name='attachments',
|
|
25
|
+
related_query_name='attachment',
|
|
26
|
+
)
|
|
27
|
+
|
|
15
28
|
to_email_address = models.EmailField()
|
|
16
29
|
template_id = models.CharField(max_length=64, default='')
|
|
17
30
|
context_data = models.JSONField(default=dict)
|
|
@@ -73,7 +73,7 @@ class EmailNotificationProcessor(BaseNotificationProcessor):
|
|
|
73
73
|
email_notifications()
|
|
74
74
|
.ready_to_send()
|
|
75
75
|
.active()
|
|
76
|
-
.prefetch_related('email')
|
|
76
|
+
.prefetch_related('email', 'email__attachment')
|
|
77
77
|
)
|
|
78
78
|
|
|
79
79
|
def process_errored(self):
|
|
@@ -82,5 +82,5 @@ class EmailNotificationProcessor(BaseNotificationProcessor):
|
|
|
82
82
|
.email_notifications()
|
|
83
83
|
.errored()
|
|
84
84
|
.active()
|
|
85
|
-
.prefetch_related('email')
|
|
85
|
+
.prefetch_related('email', 'email__attachment')
|
|
86
86
|
)
|
|
@@ -8,7 +8,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey
|
|
|
8
8
|
|
|
9
9
|
from django_spire.history.mixins import HistoryModelMixin
|
|
10
10
|
from django_spire.notification.choices import (
|
|
11
|
-
NotificationTypeChoices, NotificationPriorityChoices, NotificationStatusChoices
|
|
11
|
+
NotificationTypeChoices, NotificationPriorityChoices, NotificationStatusChoices,
|
|
12
12
|
)
|
|
13
13
|
from django_spire.notification.querysets import NotificationQuerySet
|
|
14
14
|
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
<div class="mb-3 p-3 bg-app-secondary-dark">--app-secondary-dark</div>
|
|
15
15
|
</div>
|
|
16
16
|
</div>
|
|
17
|
+
|
|
17
18
|
<div class="row mb-5">
|
|
18
19
|
<div class="col-6">
|
|
19
20
|
<h5>Accent Colors</h5>
|
|
@@ -21,7 +22,6 @@
|
|
|
21
22
|
<div class="mb-3 p-3 bg-app-accent-soft">--app-accent-soft</div>
|
|
22
23
|
<div class="mb-3 p-3 bg-app-accent-dark">--app-accent-dark</div>
|
|
23
24
|
</div>
|
|
24
|
-
|
|
25
25
|
<div class="col-6">
|
|
26
26
|
<h5>Success Colors</h5>
|
|
27
27
|
<div class="mb-3 p-3 bg-app-success">--app-success</div>
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
<div class="mb-3 p-3 bg-app-success-dark">--app-success-dark</div>
|
|
30
30
|
</div>
|
|
31
31
|
</div>
|
|
32
|
+
|
|
32
33
|
<div class="row mb-5">
|
|
33
34
|
<div class="col-6">
|
|
34
35
|
<h5>Warning Colors</h5>
|
|
@@ -75,118 +76,267 @@
|
|
|
75
76
|
</div>
|
|
76
77
|
</div>
|
|
77
78
|
|
|
79
|
+
<h2 class="mb-4 mt-5">Background Opacity Classes</h2>
|
|
80
|
+
|
|
78
81
|
<div class="row mb-5">
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
<div class="p-3 d-flex align-items-center justify-content-center bg-app-primary-dark"
|
|
89
|
-
style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Primary Dark
|
|
82
|
+
<div class="col-12">
|
|
83
|
+
<h5>Primary Opacity</h5>
|
|
84
|
+
<div class="d-flex align-items-center mb-3">
|
|
85
|
+
<div class="p-3 bg-app-primary-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
86
|
+
<div class="p-3 bg-app-primary-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
87
|
+
<div class="p-3 bg-app-primary-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
88
|
+
<div class="p-3 bg-app-primary-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
89
|
+
<div class="p-3 bg-app-primary-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
90
|
+
<div class="p-3 bg-app-primary me-2" style="width: 80px; height: 60px;">100%</div>
|
|
90
91
|
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
91
94
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
<div class="row mb-5">
|
|
96
|
+
<div class="col-12">
|
|
97
|
+
<h5>Secondary Opacity</h5>
|
|
98
|
+
<div class="d-flex align-items-center mb-3">
|
|
99
|
+
<div class="p-3 bg-app-secondary-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
100
|
+
<div class="p-3 bg-app-secondary-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
101
|
+
<div class="p-3 bg-app-secondary-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
102
|
+
<div class="p-3 bg-app-secondary-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
103
|
+
<div class="p-3 bg-app-secondary-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
104
|
+
<div class="p-3 bg-app-secondary me-2" style="width: 80px; height: 60px;">100%</div>
|
|
101
105
|
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
102
108
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
<div class="row mb-5">
|
|
110
|
+
<div class="col-12">
|
|
111
|
+
<h5>Accent Opacity</h5>
|
|
112
|
+
<div class="d-flex align-items-center mb-3">
|
|
113
|
+
<div class="p-3 bg-app-accent-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
114
|
+
<div class="p-3 bg-app-accent-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
115
|
+
<div class="p-3 bg-app-accent-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
116
|
+
<div class="p-3 bg-app-accent-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
117
|
+
<div class="p-3 bg-app-accent-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
118
|
+
<div class="p-3 bg-app-accent me-2" style="width: 80px; height: 60px;">100%</div>
|
|
112
119
|
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
113
122
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
<div class="row mb-5">
|
|
124
|
+
<div class="col-12">
|
|
125
|
+
<h5>Success Opacity</h5>
|
|
126
|
+
<div class="d-flex align-items-center mb-3">
|
|
127
|
+
<div class="p-3 bg-app-success-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
128
|
+
<div class="p-3 bg-app-success-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
129
|
+
<div class="p-3 bg-app-success-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
130
|
+
<div class="p-3 bg-app-success-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
131
|
+
<div class="p-3 bg-app-success-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
132
|
+
<div class="p-3 bg-app-success me-2" style="width: 80px; height: 60px;">100%</div>
|
|
123
133
|
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
124
136
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
137
|
+
<div class="row mb-5">
|
|
138
|
+
<div class="col-12">
|
|
139
|
+
<h5>Warning Opacity</h5>
|
|
140
|
+
<div class="d-flex align-items-center mb-3">
|
|
141
|
+
<div class="p-3 bg-app-warning-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
142
|
+
<div class="p-3 bg-app-warning-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
143
|
+
<div class="p-3 bg-app-warning-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
144
|
+
<div class="p-3 bg-app-warning-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
145
|
+
<div class="p-3 bg-app-warning-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
146
|
+
<div class="p-3 bg-app-warning me-2" style="width: 80px; height: 60px;">100%</div>
|
|
134
147
|
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
135
150
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
151
|
+
<div class="row mb-5">
|
|
152
|
+
<div class="col-12">
|
|
153
|
+
<h5>Danger Opacity</h5>
|
|
154
|
+
<div class="d-flex align-items-center mb-3">
|
|
155
|
+
<div class="p-3 bg-app-danger-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
156
|
+
<div class="p-3 bg-app-danger-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
157
|
+
<div class="p-3 bg-app-danger-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
158
|
+
<div class="p-3 bg-app-danger-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
159
|
+
<div class="p-3 bg-app-danger-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
160
|
+
<div class="p-3 bg-app-danger me-2" style="width: 80px; height: 60px;">100%</div>
|
|
145
161
|
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
146
164
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
<div class="p-3 d-flex align-items-center justify-content-center bg-app-layer-four"
|
|
158
|
-
style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Layer Four
|
|
165
|
+
<div class="row mb-5">
|
|
166
|
+
<div class="col-12">
|
|
167
|
+
<h5>Layer One Opacity</h5>
|
|
168
|
+
<div class="d-flex align-items-center mb-3">
|
|
169
|
+
<div class="p-3 bg-app-layer-one-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
170
|
+
<div class="p-3 bg-app-layer-one-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
171
|
+
<div class="p-3 bg-app-layer-one-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
172
|
+
<div class="p-3 bg-app-layer-one-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
173
|
+
<div class="p-3 bg-app-layer-one-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
174
|
+
<div class="p-3 bg-app-layer-one me-2" style="width: 80px; height: 60px;">100%</div>
|
|
159
175
|
</div>
|
|
160
|
-
|
|
161
|
-
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<div class="row mb-5">
|
|
180
|
+
<div class="col-12">
|
|
181
|
+
<h5>Layer Two Opacity</h5>
|
|
182
|
+
<div class="d-flex align-items-center mb-3">
|
|
183
|
+
<div class="p-3 bg-app-layer-two-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
184
|
+
<div class="p-3 bg-app-layer-two-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
185
|
+
<div class="p-3 bg-app-layer-two-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
186
|
+
<div class="p-3 bg-app-layer-two-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
187
|
+
<div class="p-3 bg-app-layer-two-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
188
|
+
<div class="p-3 bg-app-layer-two me-2" style="width: 80px; height: 60px;">100%</div>
|
|
162
189
|
</div>
|
|
163
|
-
|
|
164
|
-
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
<div class="row mb-5">
|
|
194
|
+
<div class="col-12">
|
|
195
|
+
<h5>Layer Three Opacity</h5>
|
|
196
|
+
<div class="d-flex align-items-center mb-3">
|
|
197
|
+
<div class="p-3 bg-app-layer-three-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
198
|
+
<div class="p-3 bg-app-layer-three-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
199
|
+
<div class="p-3 bg-app-layer-three-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
200
|
+
<div class="p-3 bg-app-layer-three-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
201
|
+
<div class="p-3 bg-app-layer-three-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
202
|
+
<div class="p-3 bg-app-layer-three me-2" style="width: 80px; height: 60px;">100%</div>
|
|
165
203
|
</div>
|
|
166
|
-
|
|
167
|
-
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
<div class="row mb-5">
|
|
208
|
+
<div class="col-12">
|
|
209
|
+
<h5>Layer Four Opacity</h5>
|
|
210
|
+
<div class="d-flex align-items-center mb-3">
|
|
211
|
+
<div class="p-3 bg-app-layer-four-opacity-10 me-2" style="width: 80px; height: 60px;">10%</div>
|
|
212
|
+
<div class="p-3 bg-app-layer-four-opacity-25 me-2" style="width: 80px; height: 60px;">25%</div>
|
|
213
|
+
<div class="p-3 bg-app-layer-four-opacity-50 me-2" style="width: 80px; height: 60px;">50%</div>
|
|
214
|
+
<div class="p-3 bg-app-layer-four-opacity-75 me-2" style="width: 80px; height: 60px;">75%</div>
|
|
215
|
+
<div class="p-3 bg-app-layer-four-opacity-90 me-2" style="width: 80px; height: 60px;">90%</div>
|
|
216
|
+
<div class="p-3 bg-app-layer-four me-2" style="width: 80px; height: 60px;">100%</div>
|
|
168
217
|
</div>
|
|
169
|
-
|
|
170
|
-
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<h2 class="mb-4 mt-5">Text Opacity Classes</h2>
|
|
222
|
+
|
|
223
|
+
<div class="row mb-5">
|
|
224
|
+
<div class="col-12">
|
|
225
|
+
<h5>Primary Text Opacity</h5>
|
|
226
|
+
<div class="mb-3">
|
|
227
|
+
<span class="text-app-primary-opacity-10 me-3">10% Opacity</span>
|
|
228
|
+
<span class="text-app-primary-opacity-25 me-3">25% Opacity</span>
|
|
229
|
+
<span class="text-app-primary-opacity-50 me-3">50% Opacity</span>
|
|
230
|
+
<span class="text-app-primary-opacity-75 me-3">75% Opacity</span>
|
|
231
|
+
<span class="text-app-primary-opacity-90 me-3">90% Opacity</span>
|
|
232
|
+
<span class="text-app-primary me-3">100% Opacity</span>
|
|
171
233
|
</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
172
236
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
237
|
+
<div class="row mb-5">
|
|
238
|
+
<div class="col-12">
|
|
239
|
+
<h5>Secondary Text Opacity</h5>
|
|
240
|
+
<div class="mb-3">
|
|
241
|
+
<span class="text-app-secondary-opacity-10 me-3">10% Opacity</span>
|
|
242
|
+
<span class="text-app-secondary-opacity-25 me-3">25% Opacity</span>
|
|
243
|
+
<span class="text-app-secondary-opacity-50 me-3">50% Opacity</span>
|
|
244
|
+
<span class="text-app-secondary-opacity-75 me-3">75% Opacity</span>
|
|
245
|
+
<span class="text-app-secondary-opacity-90 me-3">90% Opacity</span>
|
|
246
|
+
<span class="text-app-secondary me-3">100% Opacity</span>
|
|
176
247
|
</div>
|
|
177
|
-
|
|
178
|
-
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
|
|
251
|
+
<div class="row mb-5">
|
|
252
|
+
<div class="col-12">
|
|
253
|
+
<h5>Accent Text Opacity</h5>
|
|
254
|
+
<div class="mb-3">
|
|
255
|
+
<span class="text-app-accent-opacity-10 me-3">10% Opacity</span>
|
|
256
|
+
<span class="text-app-accent-opacity-25 me-3">25% Opacity</span>
|
|
257
|
+
<span class="text-app-accent-opacity-50 me-3">50% Opacity</span>
|
|
258
|
+
<span class="text-app-accent-opacity-75 me-3">75% Opacity</span>
|
|
259
|
+
<span class="text-app-accent-opacity-90 me-3">90% Opacity</span>
|
|
260
|
+
<span class="text-app-accent me-3">100% Opacity</span>
|
|
179
261
|
</div>
|
|
180
|
-
|
|
181
|
-
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
<div class="row mb-5">
|
|
266
|
+
<div class="col-12">
|
|
267
|
+
<h5>Success Text Opacity</h5>
|
|
268
|
+
<div class="mb-3">
|
|
269
|
+
<span class="text-app-success-opacity-10 me-3">10% Opacity</span>
|
|
270
|
+
<span class="text-app-success-opacity-25 me-3">25% Opacity</span>
|
|
271
|
+
<span class="text-app-success-opacity-50 me-3">50% Opacity</span>
|
|
272
|
+
<span class="text-app-success-opacity-75 me-3">75% Opacity</span>
|
|
273
|
+
<span class="text-app-success-opacity-90 me-3">90% Opacity</span>
|
|
274
|
+
<span class="text-app-success me-3">100% Opacity</span>
|
|
182
275
|
</div>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
183
278
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
279
|
+
<div class="row mb-5">
|
|
280
|
+
<div class="col-12">
|
|
281
|
+
<h5>Warning Text Opacity</h5>
|
|
282
|
+
<div class="mb-3">
|
|
283
|
+
<span class="text-app-warning-opacity-10 me-3">10% Opacity</span>
|
|
284
|
+
<span class="text-app-warning-opacity-25 me-3">25% Opacity</span>
|
|
285
|
+
<span class="text-app-warning-opacity-50 me-3">50% Opacity</span>
|
|
286
|
+
<span class="text-app-warning-opacity-75 me-3">75% Opacity</span>
|
|
287
|
+
<span class="text-app-warning-opacity-90 me-3">90% Opacity</span>
|
|
288
|
+
<span class="text-app-warning me-3">100% Opacity</span>
|
|
187
289
|
</div>
|
|
188
|
-
|
|
189
|
-
|
|
290
|
+
</div>
|
|
291
|
+
</div>
|
|
292
|
+
|
|
293
|
+
<div class="row mb-5">
|
|
294
|
+
<div class="col-12">
|
|
295
|
+
<h5>Danger Text Opacity</h5>
|
|
296
|
+
<div class="mb-3">
|
|
297
|
+
<span class="text-app-danger-opacity-10 me-3">10% Opacity</span>
|
|
298
|
+
<span class="text-app-danger-opacity-25 me-3">25% Opacity</span>
|
|
299
|
+
<span class="text-app-danger-opacity-50 me-3">50% Opacity</span>
|
|
300
|
+
<span class="text-app-danger-opacity-75 me-3">75% Opacity</span>
|
|
301
|
+
<span class="text-app-danger-opacity-90 me-3">90% Opacity</span>
|
|
302
|
+
<span class="text-app-danger me-3">100% Opacity</span>
|
|
190
303
|
</div>
|
|
191
304
|
</div>
|
|
192
305
|
</div>
|
|
306
|
+
|
|
307
|
+
<div class="row mb-5">
|
|
308
|
+
<h5>Complete Color Palette</h5>
|
|
309
|
+
<div class="d-flex flex-wrap">
|
|
310
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-primary" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Primary</div>
|
|
311
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-primary-soft" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Primary Soft</div>
|
|
312
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-primary-dark" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Primary Dark</div>
|
|
313
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-secondary" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Secondary</div>
|
|
314
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-secondary-soft" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Secondary Soft</div>
|
|
315
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-secondary-dark" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Secondary Dark</div>
|
|
316
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-accent" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Accent</div>
|
|
317
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-accent-soft" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Accent Soft</div>
|
|
318
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-accent-dark" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Accent Dark</div>
|
|
319
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-success" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Success</div>
|
|
320
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-success-soft" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Success Soft</div>
|
|
321
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-success-dark" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Success Dark</div>
|
|
322
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-warning" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Warning</div>
|
|
323
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-warning-soft" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Warning Soft</div>
|
|
324
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-warning-dark" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Warning Dark</div>
|
|
325
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-danger" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Danger</div>
|
|
326
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-danger-soft" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Danger Soft</div>
|
|
327
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-danger-dark" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Danger Dark</div>
|
|
328
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-layer-one" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Layer One</div>
|
|
329
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-layer-two" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Layer Two</div>
|
|
330
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-layer-three" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Layer Three</div>
|
|
331
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-layer-four" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Layer Four</div>
|
|
332
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-alt-layer-one" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Alt Layer One</div>
|
|
333
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-alt-layer-two" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Alt Layer Two</div>
|
|
334
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-alt-layer-three" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Alt Layer Three</div>
|
|
335
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-alt-layer-four" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Alt Layer Four</div>
|
|
336
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-side-navigation text-app-side-navigation" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Side Nav</div>
|
|
337
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-top-navigation text-app-top-navigation" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Top Nav</div>
|
|
338
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-footer text-app-footer" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Footer</div>
|
|
339
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-table-row text-app-table-row" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Table Row</div>
|
|
340
|
+
<div class="p-3 d-flex align-items-center justify-content-center bg-app-table-row-alt text-app-table-row-alt" style="width: 80px; height: 80px; text-align: center; font-size: 10px;">Table Row Alt</div>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
</div>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
|
-
<div class="row">
|
|
52
|
+
<div class="row mb-4">
|
|
53
53
|
<div class="col-6">
|
|
54
54
|
<div class="text-app-warning">Text App Warning</div>
|
|
55
55
|
<div class="text-app-warning-soft">Text App Warning Soft</div>
|
|
@@ -61,3 +61,89 @@
|
|
|
61
61
|
<div class="text-app-danger-dark">Text App Danger Dark</div>
|
|
62
62
|
</div>
|
|
63
63
|
</div>
|
|
64
|
+
|
|
65
|
+
<h2 class="mb-4 mt-5">Text Color Opacity</h2>
|
|
66
|
+
|
|
67
|
+
<div class="row mb-4">
|
|
68
|
+
<div class="col-12">
|
|
69
|
+
<h5>Primary Text Opacity</h5>
|
|
70
|
+
<div class="mb-3">
|
|
71
|
+
<span class="text-app-primary-opacity-10 me-3">10%</span>
|
|
72
|
+
<span class="text-app-primary-opacity-25 me-3">25%</span>
|
|
73
|
+
<span class="text-app-primary-opacity-50 me-3">50%</span>
|
|
74
|
+
<span class="text-app-primary-opacity-75 me-3">75%</span>
|
|
75
|
+
<span class="text-app-primary-opacity-90 me-3">90%</span>
|
|
76
|
+
<span class="text-app-primary me-3">100%</span>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div class="row mb-4">
|
|
82
|
+
<div class="col-12">
|
|
83
|
+
<h5>Secondary Text Opacity</h5>
|
|
84
|
+
<div class="mb-3">
|
|
85
|
+
<span class="text-app-secondary-opacity-10 me-3">10%</span>
|
|
86
|
+
<span class="text-app-secondary-opacity-25 me-3">25%</span>
|
|
87
|
+
<span class="text-app-secondary-opacity-50 me-3">50%</span>
|
|
88
|
+
<span class="text-app-secondary-opacity-75 me-3">75%</span>
|
|
89
|
+
<span class="text-app-secondary-opacity-90 me-3">90%</span>
|
|
90
|
+
<span class="text-app-secondary me-3">100%</span>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div class="row mb-4">
|
|
96
|
+
<div class="col-12">
|
|
97
|
+
<h5>Accent Text Opacity</h5>
|
|
98
|
+
<div class="mb-3">
|
|
99
|
+
<span class="text-app-accent-opacity-10 me-3">10%</span>
|
|
100
|
+
<span class="text-app-accent-opacity-25 me-3">25%</span>
|
|
101
|
+
<span class="text-app-accent-opacity-50 me-3">50%</span>
|
|
102
|
+
<span class="text-app-accent-opacity-75 me-3">75%</span>
|
|
103
|
+
<span class="text-app-accent-opacity-90 me-3">90%</span>
|
|
104
|
+
<span class="text-app-accent me-3">100%</span>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div class="row mb-4">
|
|
110
|
+
<div class="col-12">
|
|
111
|
+
<h5>Success Text Opacity</h5>
|
|
112
|
+
<div class="mb-3">
|
|
113
|
+
<span class="text-app-success-opacity-10 me-3">10%</span>
|
|
114
|
+
<span class="text-app-success-opacity-25 me-3">25%</span>
|
|
115
|
+
<span class="text-app-success-opacity-50 me-3">50%</span>
|
|
116
|
+
<span class="text-app-success-opacity-75 me-3">75%</span>
|
|
117
|
+
<span class="text-app-success-opacity-90 me-3">90%</span>
|
|
118
|
+
<span class="text-app-success me-3">100%</span>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<div class="row mb-4">
|
|
124
|
+
<div class="col-12">
|
|
125
|
+
<h5>Warning Text Opacity</h5>
|
|
126
|
+
<div class="mb-3">
|
|
127
|
+
<span class="text-app-warning-opacity-10 me-3">10%</span>
|
|
128
|
+
<span class="text-app-warning-opacity-25 me-3">25%</span>
|
|
129
|
+
<span class="text-app-warning-opacity-50 me-3">50%</span>
|
|
130
|
+
<span class="text-app-warning-opacity-75 me-3">75%</span>
|
|
131
|
+
<span class="text-app-warning-opacity-90 me-3">90%</span>
|
|
132
|
+
<span class="text-app-warning me-3">100%</span>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<div class="row mb-4">
|
|
138
|
+
<div class="col-12">
|
|
139
|
+
<h5>Danger Text Opacity</h5>
|
|
140
|
+
<div class="mb-3">
|
|
141
|
+
<span class="text-app-danger-opacity-10 me-3">10%</span>
|
|
142
|
+
<span class="text-app-danger-opacity-25 me-3">25%</span>
|
|
143
|
+
<span class="text-app-danger-opacity-50 me-3">50%</span>
|
|
144
|
+
<span class="text-app-danger-opacity-75 me-3">75%</span>
|
|
145
|
+
<span class="text-app-danger-opacity-90 me-3">90%</span>
|
|
146
|
+
<span class="text-app-danger me-3">100%</span>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-spire
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.3
|
|
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.
|