django-cfg 1.4.9__py3-none-any.whl → 1.4.11__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_cfg/apps/agents/management/commands/create_agent.py +1 -1
- django_cfg/apps/agents/management/commands/orchestrator_status.py +3 -3
- django_cfg/apps/newsletter/serializers.py +40 -3
- django_cfg/apps/newsletter/views/campaigns.py +12 -3
- django_cfg/apps/newsletter/views/emails.py +14 -3
- django_cfg/apps/newsletter/views/subscriptions.py +12 -2
- django_cfg/apps/payments/middleware/api_access.py +6 -2
- django_cfg/apps/payments/middleware/rate_limiting.py +2 -1
- django_cfg/apps/payments/middleware/usage_tracking.py +5 -1
- django_cfg/apps/payments/models/managers/api_key_managers.py +0 -1
- django_cfg/apps/payments/models/managers/subscription_managers.py +0 -1
- django_cfg/apps/payments/services/core/balance_service.py +5 -5
- django_cfg/apps/payments/services/core/subscription_service.py +1 -2
- django_cfg/apps/payments/views/api/balances.py +8 -7
- django_cfg/apps/payments/views/api/base.py +10 -6
- django_cfg/apps/payments/views/api/currencies.py +53 -10
- django_cfg/apps/payments/views/api/payments.py +3 -1
- django_cfg/apps/payments/views/api/subscriptions.py +2 -5
- django_cfg/apps/payments/views/api/webhooks.py +72 -7
- django_cfg/apps/payments/views/overview/serializers.py +34 -1
- django_cfg/apps/payments/views/overview/views.py +2 -1
- django_cfg/apps/payments/views/serializers/payments.py +6 -6
- django_cfg/apps/urls.py +106 -45
- django_cfg/core/base/config_model.py +2 -2
- django_cfg/core/constants.py +1 -1
- django_cfg/core/generation/integration_generators/__init__.py +1 -1
- django_cfg/core/generation/integration_generators/api.py +82 -41
- django_cfg/core/integration/display/startup.py +30 -22
- django_cfg/core/integration/url_integration.py +15 -16
- django_cfg/dashboard/sections/documentation.py +391 -0
- django_cfg/management/commands/check_endpoints.py +11 -160
- django_cfg/management/commands/check_settings.py +13 -265
- django_cfg/management/commands/clear_constance.py +13 -201
- django_cfg/management/commands/create_token.py +13 -321
- django_cfg/management/commands/generate_clients.py +23 -0
- django_cfg/management/commands/list_urls.py +13 -306
- django_cfg/management/commands/migrate_all.py +13 -126
- django_cfg/management/commands/migrator.py +13 -396
- django_cfg/management/commands/rundramatiq.py +15 -247
- django_cfg/management/commands/rundramatiq_simulator.py +12 -429
- django_cfg/management/commands/runserver_ngrok.py +15 -160
- django_cfg/management/commands/script.py +12 -488
- django_cfg/management/commands/show_config.py +12 -215
- django_cfg/management/commands/show_urls.py +12 -342
- django_cfg/management/commands/superuser.py +15 -295
- django_cfg/management/commands/task_clear.py +14 -217
- django_cfg/management/commands/task_status.py +13 -248
- django_cfg/management/commands/test_email.py +15 -86
- django_cfg/management/commands/test_telegram.py +14 -61
- django_cfg/management/commands/test_twilio.py +15 -105
- django_cfg/management/commands/tree.py +13 -383
- django_cfg/management/commands/validate_openapi.py +10 -0
- django_cfg/middleware/README.md +1 -1
- django_cfg/middleware/user_activity.py +3 -3
- django_cfg/models/__init__.py +2 -2
- django_cfg/models/api/drf/spectacular.py +6 -6
- django_cfg/models/django/__init__.py +2 -2
- django_cfg/models/django/openapi.py +238 -0
- django_cfg/models/django/{revolution.py → revolution_legacy.py} +8 -0
- django_cfg/modules/django_admin/management/__init__.py +0 -0
- django_cfg/modules/django_admin/management/commands/__init__.py +0 -0
- django_cfg/modules/django_admin/management/commands/check_endpoints.py +169 -0
- django_cfg/modules/django_admin/management/commands/check_settings.py +355 -0
- django_cfg/modules/django_admin/management/commands/clear_constance.py +208 -0
- django_cfg/modules/django_admin/management/commands/create_token.py +328 -0
- django_cfg/modules/django_admin/management/commands/list_urls.py +313 -0
- django_cfg/modules/django_admin/management/commands/migrate_all.py +133 -0
- django_cfg/modules/django_admin/management/commands/migrator.py +403 -0
- django_cfg/modules/django_admin/management/commands/script.py +496 -0
- django_cfg/modules/django_admin/management/commands/show_config.py +225 -0
- django_cfg/modules/django_admin/management/commands/show_urls.py +361 -0
- django_cfg/modules/django_admin/management/commands/superuser.py +302 -0
- django_cfg/modules/django_admin/management/commands/tree.py +390 -0
- django_cfg/modules/django_client/__init__.py +20 -0
- django_cfg/modules/django_client/apps.py +35 -0
- django_cfg/modules/django_client/core/__init__.py +56 -0
- django_cfg/modules/django_client/core/archive/__init__.py +11 -0
- django_cfg/modules/django_client/core/archive/manager.py +134 -0
- django_cfg/modules/django_client/core/cli/__init__.py +12 -0
- django_cfg/modules/django_client/core/cli/main.py +235 -0
- django_cfg/modules/django_client/core/config/__init__.py +18 -0
- django_cfg/modules/django_client/core/config/config.py +188 -0
- django_cfg/modules/django_client/core/config/group.py +101 -0
- django_cfg/modules/django_client/core/config/service.py +209 -0
- django_cfg/modules/django_client/core/generator/__init__.py +115 -0
- django_cfg/modules/django_client/core/generator/base.py +767 -0
- django_cfg/modules/django_client/core/generator/python.py +751 -0
- django_cfg/modules/django_client/core/generator/templates/python/__init__.py.jinja +9 -0
- django_cfg/modules/django_client/core/generator/templates/python/api_wrapper.py.jinja +130 -0
- django_cfg/modules/django_client/core/generator/templates/python/app_init.py.jinja +6 -0
- django_cfg/modules/django_client/core/generator/templates/python/client/app_client.py.jinja +18 -0
- django_cfg/modules/django_client/core/generator/templates/python/client/flat_client.py.jinja +38 -0
- django_cfg/modules/django_client/core/generator/templates/python/client/main_client.py.jinja +50 -0
- django_cfg/modules/django_client/core/generator/templates/python/client/main_client_file.py.jinja +13 -0
- django_cfg/modules/django_client/core/generator/templates/python/client/operation_method.py.jinja +7 -0
- django_cfg/modules/django_client/core/generator/templates/python/client/sub_client.py.jinja +11 -0
- django_cfg/modules/django_client/core/generator/templates/python/client_file.py.jinja +13 -0
- django_cfg/modules/django_client/core/generator/templates/python/main_init.py.jinja +50 -0
- django_cfg/modules/django_client/core/generator/templates/python/models/app_models.py.jinja +17 -0
- django_cfg/modules/django_client/core/generator/templates/python/models/enum_class.py.jinja +15 -0
- django_cfg/modules/django_client/core/generator/templates/python/models/enums.py.jinja +8 -0
- django_cfg/modules/django_client/core/generator/templates/python/models/models.py.jinja +17 -0
- django_cfg/modules/django_client/core/generator/templates/python/models/schema_class.py.jinja +19 -0
- django_cfg/modules/django_client/core/generator/templates/python/utils/logger.py.jinja +255 -0
- django_cfg/modules/django_client/core/generator/templates/python/utils/schema.py.jinja +12 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/app_index.ts.jinja +2 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client/app_client.ts.jinja +18 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client/client.ts.jinja +327 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client/flat_client.ts.jinja +109 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client/main_client_file.ts.jinja +9 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client/operation.ts.jinja +61 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client/sub_client.ts.jinja +15 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/client_file.ts.jinja +9 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/index.ts.jinja +5 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/main_index.ts.jinja +206 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/models/app_models.ts.jinja +8 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/models/enums.ts.jinja +4 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/models/models.ts.jinja +8 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/errors.ts.jinja +114 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/http.ts.jinja +98 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/logger.ts.jinja +251 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/schema.ts.jinja +7 -0
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/storage.ts.jinja +114 -0
- django_cfg/modules/django_client/core/generator/typescript.py +872 -0
- django_cfg/modules/django_client/core/groups/__init__.py +13 -0
- django_cfg/modules/django_client/core/groups/detector.py +178 -0
- django_cfg/modules/django_client/core/groups/manager.py +314 -0
- django_cfg/modules/django_client/core/ir/__init__.py +57 -0
- django_cfg/modules/django_client/core/ir/context.py +387 -0
- django_cfg/modules/django_client/core/ir/operation.py +518 -0
- django_cfg/modules/django_client/core/ir/schema.py +353 -0
- django_cfg/modules/django_client/core/parser/__init__.py +74 -0
- django_cfg/modules/django_client/core/parser/base.py +648 -0
- django_cfg/modules/django_client/core/parser/models/__init__.py +74 -0
- django_cfg/modules/django_client/core/parser/models/base.py +212 -0
- django_cfg/modules/django_client/core/parser/models/components.py +160 -0
- django_cfg/modules/django_client/core/parser/models/openapi.py +203 -0
- django_cfg/modules/django_client/core/parser/models/operation.py +207 -0
- django_cfg/modules/django_client/core/parser/models/schema.py +266 -0
- django_cfg/modules/django_client/core/parser/openapi30.py +56 -0
- django_cfg/modules/django_client/core/parser/openapi31.py +64 -0
- django_cfg/modules/django_client/core/validation/__init__.py +22 -0
- django_cfg/modules/django_client/core/validation/checker.py +134 -0
- django_cfg/modules/django_client/core/validation/fixer.py +216 -0
- django_cfg/modules/django_client/core/validation/reporter.py +480 -0
- django_cfg/modules/django_client/core/validation/rules/__init__.py +11 -0
- django_cfg/modules/django_client/core/validation/rules/base.py +96 -0
- django_cfg/modules/django_client/core/validation/rules/type_hints.py +288 -0
- django_cfg/modules/django_client/core/validation/safety.py +266 -0
- django_cfg/modules/django_client/management/__init__.py +3 -0
- django_cfg/modules/django_client/management/commands/__init__.py +3 -0
- django_cfg/modules/django_client/management/commands/generate_client.py +422 -0
- django_cfg/modules/django_client/management/commands/validate_openapi.py +343 -0
- django_cfg/modules/django_client/spectacular/__init__.py +9 -0
- django_cfg/modules/django_client/spectacular/enum_naming.py +192 -0
- django_cfg/modules/django_client/urls.py +72 -0
- django_cfg/modules/django_email/management/__init__.py +0 -0
- django_cfg/modules/django_email/management/commands/__init__.py +0 -0
- django_cfg/modules/django_email/management/commands/test_email.py +93 -0
- django_cfg/modules/django_logging/django_logger.py +6 -6
- django_cfg/modules/django_ngrok/management/__init__.py +0 -0
- django_cfg/modules/django_ngrok/management/commands/__init__.py +0 -0
- django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py +167 -0
- django_cfg/modules/django_tasks/management/__init__.py +0 -0
- django_cfg/modules/django_tasks/management/commands/__init__.py +0 -0
- django_cfg/modules/django_tasks/management/commands/rundramatiq.py +254 -0
- django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +437 -0
- django_cfg/modules/django_tasks/management/commands/task_clear.py +226 -0
- django_cfg/modules/django_tasks/management/commands/task_status.py +257 -0
- django_cfg/modules/django_telegram/management/__init__.py +0 -0
- django_cfg/modules/django_telegram/management/commands/__init__.py +0 -0
- django_cfg/modules/django_telegram/management/commands/test_telegram.py +68 -0
- django_cfg/modules/django_twilio/management/__init__.py +0 -0
- django_cfg/modules/django_twilio/management/commands/__init__.py +0 -0
- django_cfg/modules/django_twilio/management/commands/test_twilio.py +112 -0
- django_cfg/modules/django_unfold/callbacks/main.py +16 -5
- django_cfg/modules/django_unfold/callbacks/revolution.py +41 -36
- django_cfg/modules/django_unfold/dashboard.py +1 -1
- django_cfg/pyproject.toml +2 -6
- django_cfg/registry/third_party.py +5 -7
- django_cfg/routing/callbacks.py +1 -1
- django_cfg/static/admin/css/prose-unfold.css +666 -0
- django_cfg/templates/admin/index.html +8 -0
- django_cfg/templates/admin/index_new.html +13 -0
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html +15 -3
- django_cfg/templates/admin/sections/documentation_section.html +172 -0
- django_cfg/templates/admin/snippets/tabs/documentation_tab.html +231 -0
- {django_cfg-1.4.9.dist-info → django_cfg-1.4.11.dist-info}/METADATA +2 -2
- {django_cfg-1.4.9.dist-info → django_cfg-1.4.11.dist-info}/RECORD +192 -71
- django_cfg/management/commands/generate.py +0 -107
- {django_cfg-1.4.9.dist-info → django_cfg-1.4.11.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.9.dist-info → django_cfg-1.4.11.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.9.dist-info → django_cfg-1.4.11.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,666 @@
|
|
1
|
+
/**
|
2
|
+
* Prose Unfold - Universal Markdown Styling
|
3
|
+
*
|
4
|
+
* Semantic color system for markdown content that adapts to Unfold theme
|
5
|
+
* Overrides Tailwind Typography variables with Unfold semantic colors
|
6
|
+
*
|
7
|
+
* Usage: Add class "prose-unfold" to markdown container
|
8
|
+
* Example: <div class="prose prose-unfold">{{ markdown_content|safe }}</div>
|
9
|
+
*/
|
10
|
+
|
11
|
+
/* ========================================
|
12
|
+
Base Prose Container
|
13
|
+
Override Tailwind Typography variables
|
14
|
+
======================================== */
|
15
|
+
.prose-unfold {
|
16
|
+
/* Override Tailwind Typography CSS variables with Unfold colors */
|
17
|
+
--tw-prose-body: var(--color-font-default-light);
|
18
|
+
--tw-prose-headings: var(--color-font-important-light);
|
19
|
+
--tw-prose-lead: var(--color-font-default-light);
|
20
|
+
--tw-prose-links: var(--color-primary-600);
|
21
|
+
--tw-prose-bold: var(--color-font-important-light);
|
22
|
+
--tw-prose-counters: var(--color-font-subtle-light);
|
23
|
+
--tw-prose-bullets: var(--color-font-subtle-light);
|
24
|
+
--tw-prose-hr: var(--color-base-200);
|
25
|
+
--tw-prose-quotes: var(--color-font-subtle-light);
|
26
|
+
--tw-prose-quote-borders: var(--color-base-300);
|
27
|
+
--tw-prose-captions: var(--color-font-subtle-light);
|
28
|
+
--tw-prose-kbd: var(--color-font-default-light);
|
29
|
+
--tw-prose-code: var(--color-primary-600);
|
30
|
+
--tw-prose-pre-code: var(--color-font-default-light);
|
31
|
+
--tw-prose-pre-bg: var(--color-base-100);
|
32
|
+
--tw-prose-th-borders: var(--color-base-200);
|
33
|
+
--tw-prose-td-borders: var(--color-base-200);
|
34
|
+
}
|
35
|
+
|
36
|
+
html.dark .prose-unfold {
|
37
|
+
/* Dark mode overrides */
|
38
|
+
--tw-prose-body: var(--color-font-default-dark);
|
39
|
+
--tw-prose-headings: var(--color-font-important-dark);
|
40
|
+
--tw-prose-lead: var(--color-font-default-dark);
|
41
|
+
--tw-prose-links: var(--color-primary-400);
|
42
|
+
--tw-prose-bold: var(--color-font-important-dark);
|
43
|
+
--tw-prose-counters: var(--color-font-subtle-dark);
|
44
|
+
--tw-prose-bullets: var(--color-font-subtle-dark);
|
45
|
+
--tw-prose-hr: var(--color-base-700);
|
46
|
+
--tw-prose-quotes: var(--color-font-subtle-dark);
|
47
|
+
--tw-prose-quote-borders: var(--color-base-600);
|
48
|
+
--tw-prose-captions: var(--color-font-subtle-dark);
|
49
|
+
--tw-prose-kbd: var(--color-font-default-dark);
|
50
|
+
--tw-prose-code: var(--color-primary-400);
|
51
|
+
--tw-prose-pre-code: var(--color-font-default-dark);
|
52
|
+
--tw-prose-pre-bg: var(--color-base-700);
|
53
|
+
--tw-prose-th-borders: var(--color-base-700);
|
54
|
+
--tw-prose-td-borders: var(--color-base-700);
|
55
|
+
}
|
56
|
+
|
57
|
+
/* ========================================
|
58
|
+
Headings - Semantic Typography
|
59
|
+
======================================== */
|
60
|
+
.prose-unfold h1,
|
61
|
+
.prose-unfold h2,
|
62
|
+
.prose-unfold h3,
|
63
|
+
.prose-unfold h4,
|
64
|
+
.prose-unfold h5,
|
65
|
+
.prose-unfold h6 {
|
66
|
+
scroll-margin-top: 2rem;
|
67
|
+
}
|
68
|
+
|
69
|
+
.prose-unfold h1 {
|
70
|
+
font-size: 2em;
|
71
|
+
font-weight: 700;
|
72
|
+
margin-top: 0;
|
73
|
+
margin-bottom: 1em;
|
74
|
+
padding-bottom: 0.5em;
|
75
|
+
border-bottom: 2px solid var(--color-base-200) !important;
|
76
|
+
color: var(--color-font-important-light) !important;
|
77
|
+
}
|
78
|
+
|
79
|
+
html.dark .prose-unfold h1 {
|
80
|
+
border-bottom-color: var(--color-base-700) !important;
|
81
|
+
color: var(--color-font-important-dark) !important;
|
82
|
+
}
|
83
|
+
|
84
|
+
.prose-unfold h2 {
|
85
|
+
font-size: 1.5em;
|
86
|
+
font-weight: 600;
|
87
|
+
margin-top: 2em;
|
88
|
+
margin-bottom: 1em;
|
89
|
+
color: var(--color-font-important-light);
|
90
|
+
}
|
91
|
+
|
92
|
+
html.dark .prose-unfold h2 {
|
93
|
+
color: var(--color-font-important-dark);
|
94
|
+
}
|
95
|
+
|
96
|
+
.prose-unfold h3 {
|
97
|
+
font-size: 1.25em;
|
98
|
+
font-weight: 600;
|
99
|
+
margin-top: 1.5em;
|
100
|
+
margin-bottom: 0.75em;
|
101
|
+
color: var(--color-font-default-light);
|
102
|
+
}
|
103
|
+
|
104
|
+
html.dark .prose-unfold h3 {
|
105
|
+
color: var(--color-font-default-dark);
|
106
|
+
}
|
107
|
+
|
108
|
+
.prose-unfold h4 {
|
109
|
+
font-size: 1.1em;
|
110
|
+
font-weight: 600;
|
111
|
+
margin-top: 1.25em;
|
112
|
+
margin-bottom: 0.5em;
|
113
|
+
color: var(--color-font-default-light);
|
114
|
+
}
|
115
|
+
|
116
|
+
html.dark .prose-unfold h4 {
|
117
|
+
color: var(--color-font-default-dark);
|
118
|
+
}
|
119
|
+
|
120
|
+
.prose-unfold h5 {
|
121
|
+
font-size: 1em;
|
122
|
+
font-weight: 600;
|
123
|
+
margin-top: 1em;
|
124
|
+
margin-bottom: 0.5em;
|
125
|
+
color: var(--color-font-default-light);
|
126
|
+
}
|
127
|
+
|
128
|
+
html.dark .prose-unfold h5 {
|
129
|
+
color: var(--color-font-default-dark);
|
130
|
+
}
|
131
|
+
|
132
|
+
.prose-unfold h6 {
|
133
|
+
font-size: 0.9em;
|
134
|
+
font-weight: 600;
|
135
|
+
margin-top: 1em;
|
136
|
+
margin-bottom: 0.5em;
|
137
|
+
color: var(--color-font-subtle-light);
|
138
|
+
}
|
139
|
+
|
140
|
+
html.dark .prose-unfold h6 {
|
141
|
+
color: var(--color-font-subtle-dark);
|
142
|
+
}
|
143
|
+
|
144
|
+
/* ========================================
|
145
|
+
Paragraphs and Text
|
146
|
+
======================================== */
|
147
|
+
.prose-unfold p {
|
148
|
+
margin-top: 1em;
|
149
|
+
margin-bottom: 1em;
|
150
|
+
color: var(--color-font-default-light);
|
151
|
+
}
|
152
|
+
|
153
|
+
html.dark .prose-unfold p {
|
154
|
+
color: var(--color-font-default-dark);
|
155
|
+
}
|
156
|
+
|
157
|
+
.prose-unfold strong {
|
158
|
+
font-weight: 600;
|
159
|
+
color: var(--color-font-important-light);
|
160
|
+
}
|
161
|
+
|
162
|
+
html.dark .prose-unfold strong {
|
163
|
+
color: var(--color-font-important-dark);
|
164
|
+
}
|
165
|
+
|
166
|
+
.prose-unfold em {
|
167
|
+
font-style: italic;
|
168
|
+
color: var(--color-font-default-light);
|
169
|
+
}
|
170
|
+
|
171
|
+
html.dark .prose-unfold em {
|
172
|
+
color: var(--color-font-default-dark);
|
173
|
+
}
|
174
|
+
|
175
|
+
.prose-unfold mark {
|
176
|
+
padding: 0.1em 0.2em;
|
177
|
+
border-radius: 0.25em;
|
178
|
+
background-color: rgb(254 252 232); /* yellow-100 */
|
179
|
+
color: rgb(113 63 18); /* yellow-900 */
|
180
|
+
}
|
181
|
+
|
182
|
+
html.dark .prose-unfold mark {
|
183
|
+
background-color: rgba(113 63 18 / 0.3); /* yellow-900/30 */
|
184
|
+
color: rgb(254 240 138); /* yellow-200 */
|
185
|
+
}
|
186
|
+
|
187
|
+
.prose-unfold sub,
|
188
|
+
.prose-unfold sup {
|
189
|
+
font-size: 0.75em;
|
190
|
+
}
|
191
|
+
|
192
|
+
/* ========================================
|
193
|
+
Lists
|
194
|
+
======================================== */
|
195
|
+
.prose-unfold ul,
|
196
|
+
.prose-unfold ol {
|
197
|
+
margin-top: 1em;
|
198
|
+
margin-bottom: 1em;
|
199
|
+
padding-left: 1.5em;
|
200
|
+
color: var(--color-font-default-light);
|
201
|
+
}
|
202
|
+
|
203
|
+
html.dark .prose-unfold ul,
|
204
|
+
html.dark .prose-unfold ol {
|
205
|
+
color: var(--color-font-default-dark);
|
206
|
+
}
|
207
|
+
|
208
|
+
.prose-unfold li {
|
209
|
+
margin-top: 0.5em;
|
210
|
+
margin-bottom: 0.5em;
|
211
|
+
}
|
212
|
+
|
213
|
+
.prose-unfold ul > li::marker {
|
214
|
+
color: var(--color-font-subtle-light);
|
215
|
+
}
|
216
|
+
|
217
|
+
html.dark .prose-unfold ul > li::marker {
|
218
|
+
color: var(--color-font-subtle-dark);
|
219
|
+
}
|
220
|
+
|
221
|
+
.prose-unfold ol > li::marker {
|
222
|
+
font-weight: 600;
|
223
|
+
color: var(--color-font-subtle-light);
|
224
|
+
}
|
225
|
+
|
226
|
+
html.dark .prose-unfold ol > li::marker {
|
227
|
+
color: var(--color-font-subtle-dark);
|
228
|
+
}
|
229
|
+
|
230
|
+
/* Nested lists */
|
231
|
+
.prose-unfold ul ul,
|
232
|
+
.prose-unfold ul ol,
|
233
|
+
.prose-unfold ol ul,
|
234
|
+
.prose-unfold ol ol {
|
235
|
+
margin-top: 0.5em;
|
236
|
+
margin-bottom: 0.5em;
|
237
|
+
}
|
238
|
+
|
239
|
+
/* Task lists (GitHub flavored) */
|
240
|
+
.prose-unfold input[type="checkbox"] {
|
241
|
+
margin-right: 0.5em;
|
242
|
+
accent-color: var(--color-primary-600);
|
243
|
+
}
|
244
|
+
|
245
|
+
html.dark .prose-unfold input[type="checkbox"] {
|
246
|
+
accent-color: var(--color-primary-400);
|
247
|
+
}
|
248
|
+
|
249
|
+
/* ========================================
|
250
|
+
Code - Inline and Blocks
|
251
|
+
======================================== */
|
252
|
+
.prose-unfold code {
|
253
|
+
padding: 0.2em 0.4em;
|
254
|
+
border-radius: 0.25em;
|
255
|
+
font-size: 0.875em;
|
256
|
+
font-family: 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
|
257
|
+
font-weight: 500;
|
258
|
+
background-color: var(--color-base-100);
|
259
|
+
color: var(--color-primary-600);
|
260
|
+
}
|
261
|
+
|
262
|
+
html.dark .prose-unfold code {
|
263
|
+
background-color: var(--color-base-700);
|
264
|
+
color: var(--color-primary-400);
|
265
|
+
}
|
266
|
+
|
267
|
+
/* Pre and code blocks are styled by Tailwind Typography using --tw-prose-pre-bg variable */
|
268
|
+
|
269
|
+
/* Special styling for pre blocks inside documentation card */
|
270
|
+
.documentation-card .prose-unfold {
|
271
|
+
--tw-prose-pre-bg: var(--color-base-100) !important;
|
272
|
+
--tw-prose-pre-code: var(--color-font-default-light) !important;
|
273
|
+
}
|
274
|
+
|
275
|
+
html.dark .documentation-card .prose-unfold {
|
276
|
+
--tw-prose-pre-bg: var(--color-base-900) !important;
|
277
|
+
--tw-prose-pre-code: var(--color-base-50) !important;
|
278
|
+
}
|
279
|
+
|
280
|
+
/* Direct override for pre elements */
|
281
|
+
.documentation-card .prose-unfold pre {
|
282
|
+
background-color: var(--color-base-100) !important;
|
283
|
+
}
|
284
|
+
|
285
|
+
html.dark .documentation-card .prose-unfold pre {
|
286
|
+
background-color: var(--color-base-900) !important;
|
287
|
+
}
|
288
|
+
|
289
|
+
.documentation-card .prose-unfold pre code {
|
290
|
+
color: var(--color-font-default-light) !important;
|
291
|
+
}
|
292
|
+
|
293
|
+
html.dark .documentation-card .prose-unfold pre code {
|
294
|
+
color: var(--color-base-50) !important;
|
295
|
+
}
|
296
|
+
|
297
|
+
.prose-unfold kbd {
|
298
|
+
padding: 0.2em 0.4em;
|
299
|
+
border-radius: 0.25em;
|
300
|
+
font-size: 0.875em;
|
301
|
+
font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
|
302
|
+
background-color: var(--color-base-100);
|
303
|
+
border: 1px solid var(--color-base-300);
|
304
|
+
color: var(--color-font-default-light);
|
305
|
+
}
|
306
|
+
|
307
|
+
html.dark .prose-unfold kbd {
|
308
|
+
background-color: var(--color-base-700);
|
309
|
+
border-color: var(--color-base-600);
|
310
|
+
color: var(--color-font-default-dark);
|
311
|
+
}
|
312
|
+
|
313
|
+
/* ========================================
|
314
|
+
Links
|
315
|
+
======================================== */
|
316
|
+
.prose-unfold a {
|
317
|
+
text-decoration: none;
|
318
|
+
font-weight: 500;
|
319
|
+
transition: all 0.2s ease;
|
320
|
+
color: var(--color-primary-600);
|
321
|
+
}
|
322
|
+
|
323
|
+
html.dark .prose-unfold a {
|
324
|
+
color: var(--color-primary-400);
|
325
|
+
}
|
326
|
+
|
327
|
+
.prose-unfold a:hover {
|
328
|
+
text-decoration: underline;
|
329
|
+
color: var(--color-primary-700);
|
330
|
+
}
|
331
|
+
|
332
|
+
html.dark .prose-unfold a:hover {
|
333
|
+
color: var(--color-primary-300);
|
334
|
+
}
|
335
|
+
|
336
|
+
/* External links indicator (optional) */
|
337
|
+
.prose-unfold a[href^="http"]::after {
|
338
|
+
content: " ↗";
|
339
|
+
font-size: 0.8em;
|
340
|
+
opacity: 0.6;
|
341
|
+
}
|
342
|
+
|
343
|
+
.prose-unfold a[href^="http"][href*="localhost"]::after,
|
344
|
+
.prose-unfold a[href^="http"][href*="127.0.0.1"]::after {
|
345
|
+
content: "";
|
346
|
+
}
|
347
|
+
|
348
|
+
/* ========================================
|
349
|
+
Blockquotes
|
350
|
+
======================================== */
|
351
|
+
.prose-unfold blockquote {
|
352
|
+
border-left: 4px solid var(--color-base-300);
|
353
|
+
padding-left: 1em;
|
354
|
+
font-style: italic;
|
355
|
+
margin: 1.5em 0;
|
356
|
+
color: var(--color-font-subtle-light);
|
357
|
+
}
|
358
|
+
|
359
|
+
html.dark .prose-unfold blockquote {
|
360
|
+
border-left-color: var(--color-base-600);
|
361
|
+
color: var(--color-font-subtle-dark);
|
362
|
+
}
|
363
|
+
|
364
|
+
.prose-unfold blockquote p {
|
365
|
+
margin: 0.5em 0;
|
366
|
+
}
|
367
|
+
|
368
|
+
/* ========================================
|
369
|
+
Tables
|
370
|
+
======================================== */
|
371
|
+
.prose-unfold table {
|
372
|
+
width: 100%;
|
373
|
+
border-collapse: collapse;
|
374
|
+
margin-top: 1.5em;
|
375
|
+
margin-bottom: 1.5em;
|
376
|
+
color: var(--color-font-default-light);
|
377
|
+
}
|
378
|
+
|
379
|
+
html.dark .prose-unfold table {
|
380
|
+
color: var(--color-font-default-dark);
|
381
|
+
}
|
382
|
+
|
383
|
+
.prose-unfold th,
|
384
|
+
.prose-unfold td {
|
385
|
+
padding: 0.75em 1em;
|
386
|
+
text-align: left;
|
387
|
+
border: 1px solid var(--color-base-200);
|
388
|
+
}
|
389
|
+
|
390
|
+
html.dark .prose-unfold th,
|
391
|
+
html.dark .prose-unfold td {
|
392
|
+
border-color: var(--color-base-700);
|
393
|
+
}
|
394
|
+
|
395
|
+
.prose-unfold thead {
|
396
|
+
background-color: var(--color-base-50);
|
397
|
+
}
|
398
|
+
|
399
|
+
html.dark .prose-unfold thead {
|
400
|
+
background-color: var(--color-base-800);
|
401
|
+
}
|
402
|
+
|
403
|
+
.prose-unfold th {
|
404
|
+
font-weight: 600;
|
405
|
+
color: var(--color-font-important-light);
|
406
|
+
}
|
407
|
+
|
408
|
+
html.dark .prose-unfold th {
|
409
|
+
color: var(--color-font-important-dark);
|
410
|
+
}
|
411
|
+
|
412
|
+
.prose-unfold tbody tr:hover {
|
413
|
+
background-color: var(--color-base-50);
|
414
|
+
}
|
415
|
+
|
416
|
+
html.dark .prose-unfold tbody tr:hover {
|
417
|
+
background-color: rgba(var(--color-base-800) / 0.5);
|
418
|
+
}
|
419
|
+
|
420
|
+
/* ========================================
|
421
|
+
Horizontal Rule
|
422
|
+
======================================== */
|
423
|
+
.prose-unfold hr {
|
424
|
+
border: 0;
|
425
|
+
margin: 2em 0;
|
426
|
+
border-top: 1px solid var(--color-base-200);
|
427
|
+
}
|
428
|
+
|
429
|
+
html.dark .prose-unfold hr {
|
430
|
+
border-top-color: var(--color-base-700);
|
431
|
+
}
|
432
|
+
|
433
|
+
/* ========================================
|
434
|
+
Images and Media
|
435
|
+
======================================== */
|
436
|
+
.prose-unfold img {
|
437
|
+
max-width: 100%;
|
438
|
+
height: auto;
|
439
|
+
border-radius: 0.5em;
|
440
|
+
margin: 1.5em 0;
|
441
|
+
border: 1px solid var(--color-base-200);
|
442
|
+
}
|
443
|
+
|
444
|
+
html.dark .prose-unfold img {
|
445
|
+
border-color: var(--color-base-700);
|
446
|
+
}
|
447
|
+
|
448
|
+
.prose-unfold figure {
|
449
|
+
margin: 1.5em 0;
|
450
|
+
}
|
451
|
+
|
452
|
+
.prose-unfold figcaption {
|
453
|
+
margin-top: 0.5em;
|
454
|
+
font-size: 0.875em;
|
455
|
+
text-align: center;
|
456
|
+
color: var(--color-font-subtle-light);
|
457
|
+
}
|
458
|
+
|
459
|
+
html.dark .prose-unfold figcaption {
|
460
|
+
color: var(--color-font-subtle-dark);
|
461
|
+
}
|
462
|
+
|
463
|
+
/* ========================================
|
464
|
+
Definition Lists
|
465
|
+
======================================== */
|
466
|
+
.prose-unfold dl {
|
467
|
+
margin: 1em 0;
|
468
|
+
}
|
469
|
+
|
470
|
+
.prose-unfold dt {
|
471
|
+
font-weight: 600;
|
472
|
+
margin-top: 1em;
|
473
|
+
color: var(--color-font-important-light);
|
474
|
+
}
|
475
|
+
|
476
|
+
html.dark .prose-unfold dt {
|
477
|
+
color: var(--color-font-important-dark);
|
478
|
+
}
|
479
|
+
|
480
|
+
.prose-unfold dd {
|
481
|
+
margin-left: 1.5em;
|
482
|
+
margin-top: 0.5em;
|
483
|
+
color: var(--color-font-default-light);
|
484
|
+
}
|
485
|
+
|
486
|
+
html.dark .prose-unfold dd {
|
487
|
+
color: var(--color-font-default-dark);
|
488
|
+
}
|
489
|
+
|
490
|
+
/* ========================================
|
491
|
+
Details/Summary (Collapsible)
|
492
|
+
======================================== */
|
493
|
+
.prose-unfold details {
|
494
|
+
margin: 1em 0;
|
495
|
+
padding: 1em;
|
496
|
+
border-radius: 0.5em;
|
497
|
+
background-color: var(--color-base-50);
|
498
|
+
border: 1px solid var(--color-base-200);
|
499
|
+
}
|
500
|
+
|
501
|
+
html.dark .prose-unfold details {
|
502
|
+
background-color: var(--color-base-800);
|
503
|
+
border-color: var(--color-base-700);
|
504
|
+
}
|
505
|
+
|
506
|
+
.prose-unfold summary {
|
507
|
+
cursor: pointer;
|
508
|
+
font-weight: 600;
|
509
|
+
user-select: none;
|
510
|
+
color: var(--color-font-important-light);
|
511
|
+
}
|
512
|
+
|
513
|
+
html.dark .prose-unfold summary {
|
514
|
+
color: var(--color-font-important-dark);
|
515
|
+
}
|
516
|
+
|
517
|
+
.prose-unfold summary:hover {
|
518
|
+
color: var(--color-primary-600);
|
519
|
+
}
|
520
|
+
|
521
|
+
html.dark .prose-unfold summary:hover {
|
522
|
+
color: var(--color-primary-400);
|
523
|
+
}
|
524
|
+
|
525
|
+
.prose-unfold details[open] summary {
|
526
|
+
margin-bottom: 0.5em;
|
527
|
+
}
|
528
|
+
|
529
|
+
/* ========================================
|
530
|
+
Footnotes
|
531
|
+
======================================== */
|
532
|
+
.prose-unfold .footnote {
|
533
|
+
font-size: 0.875em;
|
534
|
+
color: var(--color-font-subtle-light);
|
535
|
+
}
|
536
|
+
|
537
|
+
html.dark .prose-unfold .footnote {
|
538
|
+
color: var(--color-font-subtle-dark);
|
539
|
+
}
|
540
|
+
|
541
|
+
.prose-unfold .footnote-ref {
|
542
|
+
font-size: 0.75em;
|
543
|
+
vertical-align: super;
|
544
|
+
color: var(--color-primary-600);
|
545
|
+
}
|
546
|
+
|
547
|
+
html.dark .prose-unfold .footnote-ref {
|
548
|
+
color: var(--color-primary-400);
|
549
|
+
}
|
550
|
+
|
551
|
+
/* ========================================
|
552
|
+
Badges and Pills
|
553
|
+
======================================== */
|
554
|
+
.prose-unfold .badge {
|
555
|
+
display: inline-flex;
|
556
|
+
align-items: center;
|
557
|
+
padding: 0.25em 0.75em;
|
558
|
+
border-radius: 9999px;
|
559
|
+
font-size: 0.75em;
|
560
|
+
font-weight: 600;
|
561
|
+
background-color: var(--color-primary-100);
|
562
|
+
color: var(--color-primary-600);
|
563
|
+
}
|
564
|
+
|
565
|
+
html.dark .prose-unfold .badge {
|
566
|
+
background-color: rgba(var(--color-primary-900) / 0.2);
|
567
|
+
color: var(--color-primary-400);
|
568
|
+
}
|
569
|
+
|
570
|
+
/* ========================================
|
571
|
+
Admonitions/Alerts
|
572
|
+
======================================== */
|
573
|
+
.prose-unfold .admonition {
|
574
|
+
padding: 1em;
|
575
|
+
margin: 1em 0;
|
576
|
+
border-left: 4px solid;
|
577
|
+
border-radius: 0.5em;
|
578
|
+
}
|
579
|
+
|
580
|
+
.prose-unfold .admonition-note {
|
581
|
+
background-color: rgb(239 246 255); /* blue-50 */
|
582
|
+
border-left-color: rgb(59 130 246); /* blue-500 */
|
583
|
+
}
|
584
|
+
|
585
|
+
html.dark .prose-unfold .admonition-note {
|
586
|
+
background-color: rgba(59 130 246 / 0.1);
|
587
|
+
border-left-color: rgb(96 165 250); /* blue-400 */
|
588
|
+
}
|
589
|
+
|
590
|
+
.prose-unfold .admonition-tip {
|
591
|
+
background-color: rgb(240 253 244); /* green-50 */
|
592
|
+
border-left-color: rgb(34 197 94); /* green-500 */
|
593
|
+
}
|
594
|
+
|
595
|
+
html.dark .prose-unfold .admonition-tip {
|
596
|
+
background-color: rgba(34 197 94 / 0.1);
|
597
|
+
border-left-color: rgb(74 222 128); /* green-400 */
|
598
|
+
}
|
599
|
+
|
600
|
+
.prose-unfold .admonition-warning {
|
601
|
+
background-color: rgb(254 252 232); /* yellow-50 */
|
602
|
+
border-left-color: rgb(234 179 8); /* yellow-500 */
|
603
|
+
}
|
604
|
+
|
605
|
+
html.dark .prose-unfold .admonition-warning {
|
606
|
+
background-color: rgba(234 179 8 / 0.1);
|
607
|
+
border-left-color: rgb(250 204 21); /* yellow-400 */
|
608
|
+
}
|
609
|
+
|
610
|
+
.prose-unfold .admonition-danger {
|
611
|
+
background-color: rgb(254 242 242); /* red-50 */
|
612
|
+
border-left-color: rgb(239 68 68); /* red-500 */
|
613
|
+
}
|
614
|
+
|
615
|
+
html.dark .prose-unfold .admonition-danger {
|
616
|
+
background-color: rgba(239 68 68 / 0.1);
|
617
|
+
border-left-color: rgb(248 113 113); /* red-400 */
|
618
|
+
}
|
619
|
+
|
620
|
+
/* ========================================
|
621
|
+
Print Styles
|
622
|
+
======================================== */
|
623
|
+
@media print {
|
624
|
+
.prose-unfold {
|
625
|
+
color: #000;
|
626
|
+
}
|
627
|
+
|
628
|
+
.prose-unfold a {
|
629
|
+
color: #000;
|
630
|
+
text-decoration: underline;
|
631
|
+
}
|
632
|
+
|
633
|
+
.prose-unfold code,
|
634
|
+
.prose-unfold pre {
|
635
|
+
border: 1px solid #ddd;
|
636
|
+
}
|
637
|
+
|
638
|
+
.prose-unfold a[href^="http"]::after {
|
639
|
+
content: " (" attr(href) ")";
|
640
|
+
}
|
641
|
+
}
|
642
|
+
|
643
|
+
/* ========================================
|
644
|
+
Responsive Adjustments
|
645
|
+
======================================== */
|
646
|
+
@media (max-width: 640px) {
|
647
|
+
.prose-unfold {
|
648
|
+
font-size: 0.9rem;
|
649
|
+
}
|
650
|
+
|
651
|
+
.prose-unfold h1 {
|
652
|
+
font-size: 1.75em;
|
653
|
+
}
|
654
|
+
|
655
|
+
.prose-unfold h2 {
|
656
|
+
font-size: 1.4em;
|
657
|
+
}
|
658
|
+
|
659
|
+
.prose-unfold pre {
|
660
|
+
padding: 0.75em;
|
661
|
+
}
|
662
|
+
|
663
|
+
.prose-unfold table {
|
664
|
+
font-size: 0.875em;
|
665
|
+
}
|
666
|
+
}
|
@@ -69,4 +69,12 @@
|
|
69
69
|
{% else %}
|
70
70
|
{% include 'admin/snippets/tabs/commands_tab.html' %}
|
71
71
|
{% endif %}
|
72
|
+
{% endblock %}
|
73
|
+
|
74
|
+
{% block documentation_tab %}
|
75
|
+
{% if documentation_section %}
|
76
|
+
{{ documentation_section|safe }}
|
77
|
+
{% else %}
|
78
|
+
{% include 'admin/snippets/tabs/documentation_tab.html' %}
|
79
|
+
{% endif %}
|
72
80
|
{% endblock %}
|
@@ -31,6 +31,10 @@
|
|
31
31
|
<span class="material-icons mr-2 align-middle text-sm">terminal</span>
|
32
32
|
Commands
|
33
33
|
</button>
|
34
|
+
<button type="button" data-tab="7" class="px-4 py-3 rounded-t-lg focus:outline-none">
|
35
|
+
<span class="material-icons mr-2 align-middle text-sm">description</span>
|
36
|
+
Documentation
|
37
|
+
</button>
|
34
38
|
{% endblock %}
|
35
39
|
|
36
40
|
{% block tab_content %}
|
@@ -103,4 +107,13 @@
|
|
103
107
|
{% include 'admin/snippets/tabs/commands_tab.html' %}
|
104
108
|
{% endif %}
|
105
109
|
</div>
|
110
|
+
|
111
|
+
<!-- Documentation Tab -->
|
112
|
+
<div class="tab-content" data-tab="7">
|
113
|
+
{% if documentation_section %}
|
114
|
+
{{ documentation_section|safe }}
|
115
|
+
{% else %}
|
116
|
+
{% include 'admin/snippets/tabs/documentation_tab.html' %}
|
117
|
+
{% endif %}
|
118
|
+
</div>
|
106
119
|
{% endblock %}
|