drf-to-mkdoc 0.2.3__py3-none-any.whl → 0.3.0__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.

Potentially problematic release.


This version of drf-to-mkdoc might be problematic. Click here for more details.

Files changed (40) hide show
  1. drf_to_mkdoc/conf/defaults.py +1 -0
  2. drf_to_mkdoc/conf/settings.py +1 -0
  3. drf_to_mkdoc/management/commands/build_model_docs.py +10 -1
  4. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/field-sections-loader.js +29 -0
  5. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/query-parameters-loader.js +16 -0
  6. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/field-extractor.js +200 -0
  7. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/form-manager.js +307 -14
  8. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/main.js +39 -11
  9. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/modal.js +298 -18
  10. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/query-parameters-extractor.js +94 -0
  11. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/request-executor.js +278 -62
  12. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/response-modal.js +173 -0
  13. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/suggestions.js +59 -152
  14. drf_to_mkdoc/static/drf-to-mkdoc/javascripts/try-out/tabs.js +52 -9
  15. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/badges.css +13 -5
  16. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/theme-toggle.css +297 -25
  17. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/fab.css +204 -0
  18. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/response.css +323 -0
  19. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/try-out/variables.css +139 -0
  20. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/field-sections.css +136 -0
  21. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/form.css +539 -0
  22. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/modal.css +239 -17
  23. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/response.css +503 -43
  24. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/tabs.css +71 -19
  25. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/try-out/variables.css +71 -15
  26. drf_to_mkdoc/templates/endpoints/detail/request_body.html +2 -0
  27. drf_to_mkdoc/templates/er_diagrams/app.html +26 -0
  28. drf_to_mkdoc/templates/er_diagrams/index.html +14 -0
  29. drf_to_mkdoc/templates/er_diagrams/main.html +22 -0
  30. drf_to_mkdoc/templates/try-out/fab.html +67 -3
  31. drf_to_mkdoc/templates/try-out/form.html +221 -74
  32. drf_to_mkdoc/templates/try-out/modal.html +75 -7
  33. drf_to_mkdoc/templates/try-out/response-modal.html +138 -9
  34. drf_to_mkdoc/utils/endpoint_detail_generator.py +1 -0
  35. drf_to_mkdoc/utils/er_diagram_generator.py +230 -0
  36. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/METADATA +89 -10
  37. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/RECORD +40 -27
  38. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/WHEEL +0 -0
  39. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/licenses/LICENSE +0 -0
  40. {drf_to_mkdoc-0.2.3.dist-info → drf_to_mkdoc-0.3.0.dist-info}/top_level.txt +0 -0
@@ -1,42 +1,314 @@
1
- /* ===== THEME TOGGLE ===== */
1
+ /* Theme Toggle Base */
2
2
  .theme-toggle {
3
3
  position: fixed;
4
- top: 20px;
5
- right: 20px;
6
- background: var(--bg-secondary);
7
- border: 1px solid var(--border-color);
8
- padding: 10px 16px;
9
- border-radius: 12px;
4
+ top: var(--try-out-spacing-lg);
5
+ right: var(--try-out-spacing-lg);
6
+ background: var(--try-out-glass-bg);
7
+ backdrop-filter: blur(var(--try-out-backdrop-blur));
8
+ border: 1px solid var(--try-out-glass-border);
9
+ padding: var(--try-out-spacing-xs) var(--try-out-spacing);
10
+ border-radius: var(--try-out-border-radius-lg);
10
11
  cursor: pointer;
11
- transition: all 0.3s ease;
12
- z-index: 1000;
13
- font-size: 14px;
14
- color: var(--text-primary);
15
- box-shadow: var(--shadow);
12
+ z-index: var(--try-out-z-sticky);
13
+ font-size: var(--try-out-font-base);
14
+ color: var(--try-out-text);
15
+ box-shadow: var(--try-out-shadow-md);
16
16
  display: flex;
17
17
  align-items: center;
18
- gap: 8px;
18
+ gap: var(--try-out-spacing-sm);
19
+ transition: var(--theme-transition),
20
+ transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
19
21
  }
20
22
 
23
+ /* Hover and Focus States */
21
24
  .theme-toggle:hover {
22
25
  transform: translateY(-2px);
23
- box-shadow: var(--shadow-hover);
24
- border-color: var(--accent-primary);
26
+ box-shadow: var(--try-out-shadow-lg);
27
+ border-color: var(--try-out-primary);
25
28
  }
26
29
 
27
- .theme-toggle:focus {
28
- outline: 2px solid var(--accent-primary);
30
+ .theme-toggle:focus-visible {
31
+ outline: 2px solid var(--try-out-primary);
29
32
  outline-offset: 2px;
30
33
  }
31
34
 
32
- /* Dark mode adjustments */
33
- [data-md-color-scheme="slate"] .field-item,
34
- [data-md-color-scheme="slate"] .method-item {
35
- background-color: var(--md-code-bg-color);
36
- border-color: var(--md-default-fg-color--lightest);
35
+ /* Dark Mode Adjustments */
36
+ [data-md-color-scheme="slate"] {
37
+ /* Form Elements */
38
+ --input-bg: var(--try-out-surface);
39
+ --input-border: var(--try-out-border);
40
+ --input-text: var(--try-out-text);
41
+ --input-placeholder: var(--try-out-text-lighter);
42
+
43
+ /* Code and Pre Elements */
44
+ --code-bg: var(--try-out-surface-raised);
45
+ --code-text: var(--try-out-text-light);
46
+ --code-border: var(--try-out-border);
47
+
48
+ /* Interactive Elements */
49
+ --button-hover-bg: var(--try-out-surface-raised);
50
+ --button-active-bg: var(--try-out-surface);
37
51
  }
38
52
 
39
- [data-md-color-scheme="slate"] table th {
40
- background-color: var(--md-primary-fg-color);
41
- color: var(--md-primary-bg-color);
53
+ /* Dark Mode Component Overrides */
54
+ [data-md-color-scheme="slate"] {
55
+ /* Input Fields */
56
+ .modern-input,
57
+ .floating-input,
58
+ .name-input,
59
+ .value-input,
60
+ textarea {
61
+ background-color: var(--try-out-surface);
62
+ border-color: var(--try-out-border);
63
+ color: var(--try-out-text);
64
+ }
65
+
66
+ .modern-input::placeholder,
67
+ .floating-input::placeholder {
68
+ color: var(--try-out-text-lighter);
69
+ }
70
+
71
+ /* Floating Labels */
72
+ .floating-label {
73
+ background-color: var(--try-out-surface);
74
+ color: var(--try-out-text-light);
75
+ }
76
+
77
+ .floating-input:focus + .floating-label,
78
+ .floating-input:not(:placeholder-shown) + .floating-label {
79
+ color: var(--try-out-primary);
80
+ }
81
+
82
+ /* Code Blocks and Monospace */
83
+ pre, code, .path-display, .response-content {
84
+ background-color: var(--try-out-surface);
85
+ color: var(--try-out-text);
86
+ border-color: var(--try-out-border);
87
+ }
88
+
89
+ /* Cards and Containers */
90
+ .parameter-card,
91
+ .parameter-container,
92
+ .response-viewer,
93
+ .modal-content,
94
+ .url-preview {
95
+ background-color: var(--try-out-surface);
96
+ border-color: var(--try-out-border);
97
+ }
98
+
99
+ /* Buttons */
100
+ .secondary-btn,
101
+ .secondary-button,
102
+ .copy-btn,
103
+ .remove-btn,
104
+ .tool-btn {
105
+ background-color: transparent;
106
+ border-color: var(--try-out-border);
107
+ color: var(--try-out-text);
108
+ }
109
+
110
+ .secondary-btn:hover,
111
+ .secondary-button:hover,
112
+ .copy-btn:hover,
113
+ .tool-btn:hover {
114
+ background-color: var(--try-out-surface-raised);
115
+ border-color: var(--try-out-primary);
116
+ color: var(--try-out-primary);
117
+ }
118
+
119
+ .remove-btn:hover {
120
+ background-color: var(--try-out-danger);
121
+ border-color: var(--try-out-danger);
122
+ color: white;
123
+ }
124
+
125
+ /* Modal Overlays */
126
+ .modal-overlay {
127
+ background-color: rgba(0, 0, 0, 0.8);
128
+ }
129
+
130
+ .try-out-modal .modal-overlay,
131
+ .response-modal .modal-overlay {
132
+ background-color: rgba(0, 0, 0, 0.8);
133
+ }
134
+
135
+ /* Status Badges */
136
+ .status-badge {
137
+ border: 1px solid var(--try-out-border);
138
+ }
139
+
140
+ /* Search and Filter Elements */
141
+ .filter-input {
142
+ background-color: var(--try-out-surface);
143
+ border-color: var(--try-out-border);
144
+ color: var(--try-out-text);
145
+ }
146
+
147
+ /* Tabs */
148
+ .tab:not(.active) {
149
+ color: var(--try-out-text-light);
150
+ }
151
+
152
+ .tab:hover:not(.active) {
153
+ background-color: var(--try-out-surface-raised);
154
+ color: var(--try-out-text);
155
+ }
156
+
157
+ .tab.active {
158
+ background-color: var(--try-out-primary);
159
+ color: white;
160
+ }
161
+
162
+ /* Badges in tabs */
163
+ .tab:not(.active) .badge {
164
+ background-color: var(--try-out-primary-light);
165
+ color: var(--try-out-primary);
166
+ }
167
+
168
+ /* Tooltips */
169
+ .tooltip::after,
170
+ .action-btn::after,
171
+ .tool-btn::after {
172
+ background-color: var(--try-out-text);
173
+ color: var(--try-out-bg);
174
+ border: 1px solid var(--try-out-border);
175
+ }
176
+
177
+ /* Required badges */
178
+ .required-badge {
179
+ background-color: var(--try-out-primary-light);
180
+ color: var(--try-out-primary);
181
+ }
182
+
183
+ /* Parameter toolbar */
184
+ .parameter-toolbar {
185
+ background-color: var(--try-out-surface-raised);
186
+ border-color: var(--try-out-border);
187
+ }
188
+
189
+ /* Header toolbar */
190
+ .header-toolbar {
191
+ background-color: var(--try-out-surface-raised);
192
+ border-color: var(--try-out-border);
193
+ }
194
+
195
+ /* Headers list */
196
+ .header-item {
197
+ border-color: var(--try-out-border);
198
+ }
199
+
200
+ .header-name {
201
+ color: var(--try-out-text);
202
+ }
203
+
204
+ .header-value {
205
+ color: var(--try-out-text-light);
206
+ }
207
+
208
+ /* Detail values */
209
+ .detail-value {
210
+ background-color: var(--try-out-surface);
211
+ border-color: var(--try-out-border);
212
+ color: var(--try-out-text-light);
213
+ }
214
+
215
+ /* Response stats */
216
+ .response-stats {
217
+ background-color: var(--try-out-surface);
218
+ border-color: var(--try-out-border);
219
+ }
220
+
221
+ .stat-value {
222
+ color: var(--try-out-text);
223
+ }
224
+
225
+ /* Response toolbar */
226
+ .response-toolbar {
227
+ background-color: var(--try-out-surface);
228
+ border-color: var(--try-out-border);
229
+ }
230
+
231
+ /* Modal sections */
232
+ .request-section {
233
+ background-color: var(--try-out-bg);
234
+ border-color: var(--try-out-border);
235
+ }
236
+
237
+ .response-section {
238
+ background-color: var(--try-out-surface);
239
+ border-color: var(--try-out-border);
240
+ }
241
+
242
+ .modal-footer {
243
+ background-color: var(--try-out-surface);
244
+ border-color: var(--try-out-border);
245
+ }
246
+
247
+ /* Action bar */
248
+ .action-bar {
249
+ border-color: var(--try-out-border);
250
+ }
251
+
252
+ /* Format/validate buttons */
253
+ .format-btn,
254
+ .validate-btn {
255
+ background-color: transparent;
256
+ border-color: var(--try-out-border);
257
+ color: var(--try-out-text-light);
258
+ }
259
+
260
+ .format-btn:hover,
261
+ .validate-btn:hover {
262
+ background-color: var(--try-out-primary);
263
+ border-color: var(--try-out-primary);
264
+ color: white;
265
+ }
266
+
267
+ /* Code editor */
268
+ .code-editor {
269
+ background-color: var(--try-out-surface);
270
+ border-color: var(--try-out-border);
271
+ color: var(--try-out-text);
272
+ }
273
+
274
+ .code-editor:focus {
275
+ border-color: var(--try-out-primary);
276
+ }
277
+
278
+ /* Validation status */
279
+ .validation-status.valid {
280
+ color: var(--try-out-success);
281
+ }
282
+
283
+ .validation-status.invalid {
284
+ color: var(--try-out-danger);
285
+ }
286
+
287
+ /* Toast notifications */
288
+ .toast.toast-error {
289
+ background-color: var(--try-out-danger);
290
+ }
291
+
292
+ .toast.toast-warning {
293
+ background-color: var(--try-out-warning);
294
+ }
295
+
296
+ .toast.toast-info {
297
+ background-color: var(--try-out-info);
298
+ }
42
299
  }
300
+
301
+ /* Smooth Theme Transition */
302
+ body {
303
+ transition: var(--theme-transition);
304
+ }
305
+
306
+ /* Mobile Adjustments */
307
+ @media screen and (max-width: 768px) {
308
+ .theme-toggle {
309
+ top: var(--try-out-spacing);
310
+ right: var(--try-out-spacing);
311
+ padding: var(--try-out-spacing-2xs) var(--try-out-spacing-xs);
312
+ font-size: var(--try-out-font-sm);
313
+ }
314
+ }
@@ -0,0 +1,204 @@
1
+ /* Try Out Floating Action Button Container */
2
+ .try-out-fab-container {
3
+ position: fixed;
4
+ bottom: var(--try-out-spacing-xl);
5
+ right: var(--try-out-spacing-xl);
6
+ z-index: var(--try-out-z-fab);
7
+ }
8
+
9
+ /* Main FAB Button */
10
+ .try-out-fab {
11
+ position: relative;
12
+ min-width: 3rem;
13
+ height: 3rem;
14
+ border-radius: 1.5rem;
15
+ background: var(--try-out-gradient-primary);
16
+ color: white;
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ cursor: pointer;
21
+ border: none;
22
+ padding: 0 var(--try-out-spacing);
23
+ overflow: hidden;
24
+
25
+ /* Modern Shadow */
26
+ box-shadow: var(--try-out-shadow-lg),
27
+ 0 0 0 0 rgba(var(--try-out-primary-rgb), 0.2);
28
+
29
+ /* Smooth Transitions */
30
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1),
31
+ width 0.3s cubic-bezier(0.4, 0, 0.2, 1),
32
+ box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);
33
+ }
34
+
35
+ /* FAB Content Layout */
36
+ .fab-content {
37
+ position: relative;
38
+ display: flex;
39
+ align-items: center;
40
+ gap: var(--try-out-spacing-sm);
41
+ white-space: nowrap;
42
+ }
43
+
44
+ .fab-icon {
45
+ font-size: 1.2rem;
46
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
47
+ }
48
+
49
+ .fab-text {
50
+ font-size: var(--try-out-font-base);
51
+ font-weight: 500;
52
+ opacity: 0;
53
+ transform: translateX(-10px);
54
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
55
+ }
56
+
57
+ /* Hover State */
58
+ .try-out-fab:hover {
59
+ width: auto;
60
+ padding-right: var(--try-out-spacing-lg);
61
+ transform: translateY(-2px);
62
+ box-shadow: var(--try-out-shadow-xl),
63
+ 0 0 0 0 rgba(var(--try-out-primary-rgb), 0);
64
+ }
65
+
66
+ .try-out-fab:hover .fab-text {
67
+ opacity: 1;
68
+ transform: translateX(0);
69
+ }
70
+
71
+ .try-out-fab:hover .fab-icon {
72
+ transform: rotate(360deg);
73
+ }
74
+
75
+ /* Active State */
76
+ .try-out-fab:active {
77
+ transform: translateY(1px);
78
+ box-shadow: var(--try-out-shadow-md);
79
+ }
80
+
81
+ /* Keyboard Trigger Animation */
82
+ .try-out-fab.keyboard-triggered {
83
+ animation: pulse 0.2s cubic-bezier(0.4, 0, 0.2, 1);
84
+ }
85
+
86
+ /* Ripple Effect */
87
+ .ripple-container {
88
+ position: absolute;
89
+ top: 0;
90
+ left: 0;
91
+ right: 0;
92
+ bottom: 0;
93
+ overflow: hidden;
94
+ border-radius: inherit;
95
+ }
96
+
97
+ .ripple {
98
+ position: absolute;
99
+ background: rgba(255, 255, 255, 0.7);
100
+ border-radius: 50%;
101
+ transform: scale(0);
102
+ animation: ripple 0.6s linear;
103
+ pointer-events: none;
104
+ }
105
+
106
+ /* Pulse Animation */
107
+ .pulse-ring {
108
+ position: absolute;
109
+ top: 0;
110
+ left: 0;
111
+ right: 0;
112
+ bottom: 0;
113
+ border-radius: inherit;
114
+ animation: pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
115
+ }
116
+
117
+ /* Keyboard Shortcut Hint */
118
+ .shortcut-hint {
119
+ position: absolute;
120
+ bottom: 100%;
121
+ right: 0;
122
+ margin-bottom: var(--try-out-spacing-sm);
123
+ padding: var(--try-out-spacing-xs) var(--try-out-spacing-sm);
124
+ background: var(--try-out-glass-bg);
125
+ backdrop-filter: blur(var(--try-out-backdrop-blur));
126
+ border: 1px solid var(--try-out-glass-border);
127
+ border-radius: var(--try-out-border-radius);
128
+ font-size: var(--try-out-font-sm);
129
+ color: var(--try-out-text);
130
+ white-space: nowrap;
131
+ opacity: 0;
132
+ transform: translateY(10px);
133
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
134
+ pointer-events: none;
135
+ }
136
+
137
+ .shortcut-hint.visible {
138
+ opacity: 1;
139
+ transform: translateY(0);
140
+ }
141
+
142
+ kbd {
143
+ display: inline-block;
144
+ padding: 2px 4px;
145
+ background: var(--try-out-surface);
146
+ border: 1px solid var(--try-out-border);
147
+ border-radius: 3px;
148
+ font-family: monospace;
149
+ font-size: 0.9em;
150
+ line-height: 1;
151
+ }
152
+
153
+ /* Animations */
154
+ @keyframes ripple {
155
+ to {
156
+ transform: scale(4);
157
+ opacity: 0;
158
+ }
159
+ }
160
+
161
+ @keyframes pulse-ring {
162
+ 0% {
163
+ box-shadow: 0 0 0 0 rgba(var(--try-out-primary-rgb), 0.7);
164
+ }
165
+ 70% {
166
+ box-shadow: 0 0 0 10px rgba(var(--try-out-primary-rgb), 0);
167
+ }
168
+ 100% {
169
+ box-shadow: 0 0 0 0 rgba(var(--try-out-primary-rgb), 0);
170
+ }
171
+ }
172
+
173
+ @keyframes pulse {
174
+ 0% { transform: scale(1); }
175
+ 50% { transform: scale(0.95); }
176
+ 100% { transform: scale(1); }
177
+ }
178
+
179
+ /* Mobile Adjustments */
180
+ @media screen and (max-width: 768px) {
181
+ .try-out-fab-container {
182
+ bottom: var(--try-out-spacing-lg);
183
+ right: var(--try-out-spacing-lg);
184
+ }
185
+
186
+ .try-out-fab {
187
+ min-width: 3.5rem;
188
+ height: 3.5rem;
189
+ padding: 0;
190
+ }
191
+
192
+ .try-out-fab:hover {
193
+ width: 3.5rem;
194
+ padding: 0;
195
+ }
196
+
197
+ .fab-text {
198
+ display: none;
199
+ }
200
+
201
+ .shortcut-hint {
202
+ display: none;
203
+ }
204
+ }