drf-to-mkdoc 0.1.6__py3-none-any.whl → 0.1.9__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 (31) hide show
  1. drf_to_mkdoc/__init__.py +1 -1
  2. drf_to_mkdoc/apps.py +6 -2
  3. drf_to_mkdoc/conf/defaults.py +2 -1
  4. drf_to_mkdoc/conf/settings.py +11 -5
  5. drf_to_mkdoc/management/commands/build_docs.py +61 -19
  6. drf_to_mkdoc/management/commands/generate_docs.py +5 -5
  7. drf_to_mkdoc/management/commands/generate_model_docs.py +1 -0
  8. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/base.css +69 -0
  9. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/endpoint-content.css +117 -0
  10. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/endpoints-grid.css +119 -0
  11. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/responsive.css +57 -50
  12. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/theme-toggle.css +12 -0
  13. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/endpoints/variables.css +64 -21
  14. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/animations.css +25 -0
  15. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/base.css +83 -0
  16. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/model-cards.css +126 -0
  17. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/model-tables.css +57 -0
  18. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/responsive.css +51 -0
  19. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/models/variables.css +46 -0
  20. drf_to_mkdoc/utils/common.py +39 -32
  21. drf_to_mkdoc/utils/{endpoint_generator.py → endpoint_detail_generator.py} +214 -384
  22. drf_to_mkdoc/utils/endpoint_list_generator.py +234 -0
  23. drf_to_mkdoc/utils/extractors/query_parameter_extractors.py +12 -17
  24. drf_to_mkdoc/utils/{model_generator.py → model_detail_generator.py} +20 -51
  25. drf_to_mkdoc/utils/model_list_generator.py +67 -0
  26. {drf_to_mkdoc-0.1.6.dist-info → drf_to_mkdoc-0.1.9.dist-info}/METADATA +3 -25
  27. {drf_to_mkdoc-0.1.6.dist-info → drf_to_mkdoc-0.1.9.dist-info}/RECORD +30 -23
  28. drf_to_mkdoc/static/drf-to-mkdoc/stylesheets/extra.css +0 -358
  29. {drf_to_mkdoc-0.1.6.dist-info → drf_to_mkdoc-0.1.9.dist-info}/WHEEL +0 -0
  30. {drf_to_mkdoc-0.1.6.dist-info → drf_to_mkdoc-0.1.9.dist-info}/licenses/LICENSE +0 -0
  31. {drf_to_mkdoc-0.1.6.dist-info → drf_to_mkdoc-0.1.9.dist-info}/top_level.txt +0 -0
@@ -1,89 +1,96 @@
1
1
  /* ===== RESPONSIVE DESIGN ===== */
2
- @media (max-width: 1024px) {
3
- .filter-grid {
4
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
5
- }
6
-
7
- .main-content {
8
- padding: 20px 16px 40px;
2
+ @media (max-width: 1200px) {
3
+ .endpoints-grid {
4
+ grid-template-columns: 1fr;
9
5
  }
10
6
  }
11
7
 
12
8
  @media (max-width: 768px) {
13
- .main-content {
14
- padding: 70px 16px 40px;
9
+ .endpoints-grid {
10
+ grid-template-columns: 1fr;
11
+ gap: 12px;
15
12
  }
16
13
 
17
- .page-title {
18
- font-size: 32px;
14
+ .endpoint-card {
15
+ padding: 16px;
16
+ flex-direction: column;
17
+ align-items: flex-start;
18
+ gap: 12px;
19
19
  }
20
20
 
21
- .endpoints-grid {
22
- grid-template-columns: 1fr;
21
+ .endpoint-path {
22
+ font-size: 14px;
23
+ padding: 8px;
23
24
  }
24
25
 
25
- .filter-grid {
26
- grid-template-columns: 1fr;
26
+ .method-badge {
27
+ align-self: flex-start;
27
28
  }
29
+ }
28
30
 
29
- .filter-header {
30
- flex-direction: column;
31
- align-items: stretch;
32
- gap: 16px;
31
+ @media (max-width: 480px) {
32
+ .endpoint-card {
33
+ padding: 12px;
33
34
  }
34
35
 
35
- .filter-title {
36
- text-align: center;
36
+ .endpoint-path {
37
+ font-size: 13px;
38
+ padding: 6px;
37
39
  }
38
40
 
39
- .theme-toggle {
40
- top: 16px;
41
- right: 16px;
42
- padding: 8px 12px;
43
- font-size: 12px;
41
+ .method-badge {
42
+ font-size: 10px;
43
+ padding: 4px 6px;
44
+ min-width: 50px;
44
45
  }
46
+ }
45
47
 
46
- .filter-actions {
47
- flex-direction: column;
48
- gap: 8px;
48
+ /* Responsive design improvements */
49
+ @media screen and (max-width: 768px) {
50
+ .field-grid, .method-grid {
51
+ grid-template-columns: 1fr;
49
52
  }
50
53
 
51
- .endpoint-card {
54
+ .endpoint-header {
52
55
  flex-direction: column;
53
56
  align-items: flex-start;
54
- gap: 12px;
55
- }
56
-
57
- .method-badge {
58
- align-self: flex-start;
59
57
  }
60
58
 
61
59
  .endpoint-path {
62
- word-break: break-word;
63
- overflow-wrap: break-word;
60
+ margin-left: 0;
61
+ margin-top: 0.5rem;
64
62
  }
65
63
  }
66
64
 
67
- @media (max-width: 480px) {
68
- .main-content {
69
- padding: 70px 12px 40px;
65
+ /* Responsive adjustments for model cards */
66
+ @media screen and (max-width: 768px) {
67
+ .model-cards {
68
+ grid-template-columns: 1fr;
69
+ gap: 1rem;
70
70
  }
71
71
 
72
- .filter-section {
73
- padding: 16px;
74
- margin-bottom: 24px;
72
+ .model-card {
73
+ padding: 1rem;
75
74
  }
76
75
 
77
- .page-title {
78
- font-size: 28px;
76
+ .model-header h3 {
77
+ font-size: 1.1rem;
79
78
  }
80
79
 
81
- .filter-apply,
82
- .filter-clear {
83
- padding: 12px 16px;
80
+ .model-badge {
81
+ font-size: 0.7rem;
82
+ padding: 0.2rem 0.6rem;
84
83
  }
84
+ }
85
85
 
86
- .endpoint-card {
87
- padding: 16px;
86
+ @media screen and (max-width: 480px) {
87
+ .model-header {
88
+ flex-direction: column;
89
+ align-items: flex-start;
90
+ gap: 0.5rem;
91
+ }
92
+
93
+ .model-badge {
94
+ align-self: flex-start;
88
95
  }
89
96
  }
@@ -28,3 +28,15 @@
28
28
  outline: 2px solid var(--accent-primary);
29
29
  outline-offset: 2px;
30
30
  }
31
+
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);
37
+ }
38
+
39
+ [data-md-color-scheme="slate"] table th {
40
+ background-color: var(--md-primary-fg-color);
41
+ color: var(--md-primary-bg-color);
42
+ }
@@ -1,30 +1,73 @@
1
- /* ===== BASE VARIABLES ===== */
1
+ /* ===== CSS VARIABLES ===== */
2
2
  :root {
3
- --bg-primary: #f8fafc;
4
- --bg-secondary: #ffffff;
5
- --text-primary: #1e293b;
6
- --text-secondary: #64748b;
3
+ /* Colors */
4
+ --bg-primary: #ffffff;
5
+ --bg-secondary: #f8fafc;
6
+ --bg-tertiary: #f1f5f9;
7
+
8
+ --text-primary: #0f172a;
9
+ --text-secondary: #475569;
10
+ --text-muted: #64748b;
11
+
7
12
  --border-color: #e2e8f0;
8
- --shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
9
- --shadow-hover: 0 12px 40px rgba(0, 0, 0, 0.15);
13
+ --border-hover: #cbd5e1;
14
+
10
15
  --accent-primary: #3b82f6;
11
- --accent-secondary: #1e40af;
12
- --success: #10b981;
13
- --warning: #f59e0b;
14
- --error: #ef4444;
15
- --info: #06b6d4;
16
+ --accent-secondary: #1d4ed8;
17
+ --accent-hover: #2563eb;
18
+
19
+ /* Shadows */
20
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
21
+ --shadow-hover: 0 4px 6px rgba(0, 0, 0, 0.1);
22
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
23
+
24
+ /* Transitions */
25
+ --transition-fast: 0.15s ease;
26
+ --transition-normal: 0.3s ease;
27
+ --transition-slow: 0.5s ease;
16
28
  }
17
29
 
18
- /* Dark Mode Variables */
19
- [data-theme="dark"],
30
+ /* Dark mode */
20
31
  [data-md-color-scheme="slate"] {
21
- --bg-primary: #0f172a;
22
- --bg-secondary: #1e293b;
23
- --text-primary: #f1f5f9;
24
- --text-secondary: #94a3b8;
25
- --border-color: #334155;
26
- --shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
27
- --shadow-hover: 0 12px 40px rgba(0, 0, 0, 0.4);
32
+ --bg-primary: #1a1a1a;
33
+ --bg-secondary: #2d2d2d;
34
+ --bg-tertiary: #404040;
35
+
36
+ --text-primary: #ffffff;
37
+ --text-secondary: #e5e5e5;
38
+ --text-muted: #cccccc;
39
+
40
+ --border-color: #404040;
41
+ --border-hover: #555555;
42
+
28
43
  --accent-primary: #60a5fa;
29
44
  --accent-secondary: #3b82f6;
45
+ --accent-hover: #93c5fd;
46
+ }
47
+
48
+ /* Dark mode adjustments */
49
+ [data-md-color-scheme="slate"] .field-item,
50
+ [data-md-color-scheme="slate"] .method-item {
51
+ background-color: var(--md-code-bg-color);
52
+ border-color: var(--md-default-fg-color--lightest);
53
+ }
54
+
55
+ [data-md-color-scheme="slate"] table th {
56
+ background-color: var(--md-primary-fg-color);
57
+ color: var(--md-primary-bg-color);
58
+ }
59
+
60
+ [data-md-color-scheme="slate"] .model-card {
61
+ background: var(--md-code-bg-color);
62
+ border-color: var(--md-default-fg-color--lightest);
63
+ }
64
+
65
+ [data-md-color-scheme="slate"] .model-card:hover {
66
+ border-color: var(--md-primary-fg-color);
67
+ box-shadow: 0 8px 16px rgba(255, 255, 255, 0.1);
68
+ }
69
+
70
+ [data-md-color-scheme="slate"] .app-description {
71
+ color: var(--md-default-fg-color--light);
72
+ border-color: var(--md-default-fg-color--lightest);
30
73
  }
@@ -0,0 +1,25 @@
1
+ /* ===== ANIMATIONS FOR MODELS ===== */
2
+
3
+ /* Animation for cards appearing */
4
+ @keyframes fadeInUp {
5
+ from {
6
+ opacity: 0;
7
+ transform: translateY(20px);
8
+ }
9
+ to {
10
+ opacity: 1;
11
+ transform: translateY(0);
12
+ }
13
+ }
14
+
15
+ .model-card {
16
+ animation: fadeInUp 0.6s ease-out;
17
+ }
18
+
19
+ /* Stagger animation for multiple cards */
20
+ .model-card:nth-child(1) { animation-delay: 0.1s; }
21
+ .model-card:nth-child(2) { animation-delay: 0.2s; }
22
+ .model-card:nth-child(3) { animation-delay: 0.3s; }
23
+ .model-card:nth-child(4) { animation-delay: 0.4s; }
24
+ .model-card:nth-child(5) { animation-delay: 0.5s; }
25
+ .model-card:nth-child(6) { animation-delay: 0.6s; }
@@ -0,0 +1,83 @@
1
+ /* ===== BASE STYLES FOR MODELS ===== */
2
+ * {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ body {
7
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
8
+ background: var(--bg-primary);
9
+ color: var(--text-primary);
10
+ line-height: 1.6;
11
+ transition: background-color 0.3s ease, color 0.3s ease;
12
+ margin: 0;
13
+ padding: 0;
14
+ min-height: 100vh;
15
+ }
16
+
17
+ /* Enhanced code blocks */
18
+ .highlight pre {
19
+ border-left: 4px solid var(--md-primary-fg-color);
20
+ background-color: var(--md-code-bg-color);
21
+ padding: 1rem;
22
+ border-radius: 0.2rem;
23
+ }
24
+
25
+ /* Navigation enhancements */
26
+ .md-nav__item--active > .md-nav__link {
27
+ font-weight: 600;
28
+ }
29
+
30
+ /* Admonition customizations */
31
+ .admonition.note {
32
+ border-left-color: var(--md-primary-fg-color);
33
+ }
34
+
35
+ .admonition.tip {
36
+ border-left-color: #00c853;
37
+ }
38
+
39
+ .admonition.warning {
40
+ border-left-color: #ff9800;
41
+ }
42
+
43
+ .admonition.danger {
44
+ border-left-color: #f44336;
45
+ }
46
+
47
+ /* Search result enhancements */
48
+ .md-search-result__meta {
49
+ color: var(--md-default-fg-color--light);
50
+ }
51
+
52
+ /* Code syntax highlighting enhancements */
53
+ .codehilite .k { color: #0066cc; } /* Keywords */
54
+ .codehilite .s { color: #009900; } /* Strings */
55
+ .codehilite .c { color: #999999; } /* Comments */
56
+ .codehilite .n { color: #333333; } /* Names */
57
+ .codehilite .o { color: #666666; } /* Operators */
58
+
59
+ /* Custom icons for different sections */
60
+ .md-nav__item[data-md-level="1"] > .md-nav__link[href*="models"] {
61
+ position: relative;
62
+ }
63
+
64
+ .md-nav__item[data-md-level="1"] > .md-nav__link[href*="models"]::before {
65
+ content: "🗃️";
66
+ margin-right: 0.5rem;
67
+ }
68
+
69
+ /* Print styles */
70
+ @media print {
71
+ .md-header, .md-sidebar, .md-footer {
72
+ display: none;
73
+ }
74
+
75
+ .md-content {
76
+ margin: 0;
77
+ }
78
+
79
+ .highlight pre {
80
+ border: 1px solid #ccc;
81
+ page-break-inside: avoid;
82
+ }
83
+ }
@@ -0,0 +1,126 @@
1
+ /* ===== DJANGO MODELS CARD LAYOUT ===== */
2
+
3
+ /* Models container */
4
+ .models-container {
5
+ max-width: 100%;
6
+ margin: 0 auto;
7
+ }
8
+
9
+ /* App header styling */
10
+ .app-header {
11
+ font-size: 1.5rem;
12
+ font-weight: 700;
13
+ color: var(--text-primary);
14
+ margin: 2rem 0 1rem 0;
15
+ padding: 0.5rem 0;
16
+ border-bottom: 2px solid var(--accent-primary);
17
+ }
18
+
19
+ /* App description styling */
20
+ .app-description {
21
+ font-size: 1rem;
22
+ color: var(--text-secondary);
23
+ margin-bottom: 1.5rem;
24
+ padding: 0.5rem 0;
25
+ border-bottom: 1px solid var(--border-color);
26
+ }
27
+
28
+ /* Model cards grid */
29
+ .model-cards {
30
+ display: grid;
31
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
32
+ gap: 1.5rem;
33
+ margin-bottom: 3rem;
34
+ }
35
+
36
+ /* Individual model card */
37
+ .model-card {
38
+ background: var(--bg-primary);
39
+ border: 1px solid var(--border-color);
40
+ border-radius: 8px;
41
+ padding: 1.5rem;
42
+ transition: all 0.3s ease;
43
+ box-shadow: var(--shadow);
44
+ position: relative;
45
+ overflow: hidden;
46
+ text-decoration: none;
47
+ color: var(--text-primary);
48
+ display: block;
49
+ }
50
+
51
+ .model-card:hover {
52
+ transform: translateY(-4px);
53
+ box-shadow: var(--shadow-hover);
54
+ border-color: var(--accent-primary);
55
+ text-decoration: none;
56
+ color: var(--text-primary);
57
+ }
58
+
59
+ .model-card::before {
60
+ content: '';
61
+ position: absolute;
62
+ top: 0;
63
+ left: 0;
64
+ right: 0;
65
+ height: 4px;
66
+ background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));
67
+ opacity: 0;
68
+ transition: opacity 0.3s ease;
69
+ }
70
+
71
+ .model-card:hover::before {
72
+ opacity: 1;
73
+ }
74
+
75
+ /* Model header */
76
+ .model-header {
77
+ display: flex;
78
+ justify-content: space-between;
79
+ align-items: center;
80
+ margin-bottom: 0.5rem;
81
+ }
82
+
83
+ .model-header h3 {
84
+ margin: 0;
85
+ font-size: 1.25rem;
86
+ font-weight: 600;
87
+ }
88
+
89
+ .model-header h3 a {
90
+ color: var(--text-primary);
91
+ text-decoration: none;
92
+ transition: color 0.3s ease;
93
+ }
94
+
95
+ .model-header h3 a:hover {
96
+ color: var(--accent-primary);
97
+ }
98
+
99
+ /* Model badge */
100
+ .model-badge {
101
+ display: inline-block;
102
+ padding: 0.25rem 0.75rem;
103
+ background: var(--accent-primary);
104
+ color: var(--bg-primary);
105
+ border-radius: 20px;
106
+ font-size: 0.75rem;
107
+ font-weight: 600;
108
+ text-transform: uppercase;
109
+ letter-spacing: 0.5px;
110
+ }
111
+
112
+ /* Dark mode adjustments for model cards */
113
+ [data-md-color-scheme="slate"] .model-card {
114
+ background: var(--md-code-bg-color);
115
+ border-color: var(--md-default-fg-color--lightest);
116
+ }
117
+
118
+ [data-md-color-scheme="slate"] .model-card:hover {
119
+ border-color: var(--md-primary-fg-color);
120
+ box-shadow: 0 8px 16px rgba(255, 255, 255, 0.1);
121
+ }
122
+
123
+ [data-md-color-scheme="slate"] .app-description {
124
+ color: var(--md-default-fg-color--light);
125
+ border-color: var(--md-default-fg-color--lightest);
126
+ }
@@ -0,0 +1,57 @@
1
+ /* ===== MODEL TABLES AND FIELD GRIDS ===== */
2
+
3
+ /* Model field tables */
4
+ table {
5
+ border-collapse: collapse;
6
+ width: 100%;
7
+ margin: 1rem 0;
8
+ }
9
+
10
+ table th {
11
+ background-color: var(--md-primary-fg-color--light);
12
+ color: var(--md-primary-bg-color);
13
+ padding: 0.75rem;
14
+ text-align: left;
15
+ font-weight: 600;
16
+ }
17
+
18
+ table td {
19
+ padding: 0.75rem;
20
+ border-bottom: 1px solid var(--md-default-fg-color--lightest);
21
+ }
22
+
23
+ table tr:hover {
24
+ background-color: var(--md-accent-fg-color--transparent);
25
+ }
26
+
27
+ /* Field and method grids */
28
+ .field-grid, .method-grid {
29
+ display: grid;
30
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
31
+ gap: 1rem;
32
+ margin: 1rem 0;
33
+ }
34
+
35
+ .field-item, .method-item {
36
+ background-color: var(--md-default-bg-color);
37
+ border: 1px solid var(--md-default-fg-color--lightest);
38
+ border-radius: 0.2rem;
39
+ padding: 1rem;
40
+ }
41
+
42
+ .field-item h4, .method-item h4 {
43
+ margin-top: 0;
44
+ color: var(--md-primary-fg-color);
45
+ }
46
+
47
+ /* Dark mode adjustments for tables and grids */
48
+ [data-md-color-scheme="slate"] .field-item,
49
+ [data-md-color-scheme="slate"] .method-item {
50
+ background-color: var(--md-code-bg-color);
51
+ border-color: var(--md-default-fg-color--lightest);
52
+ }
53
+
54
+ [data-md-color-scheme="slate"] table th {
55
+ background-color: var(--md-primary-fg-color);
56
+ color: var(--md-primary-bg-color);
57
+ }
@@ -0,0 +1,51 @@
1
+ /* ===== RESPONSIVE DESIGN FOR MODELS ===== */
2
+
3
+ /* Responsive design improvements */
4
+ @media screen and (max-width: 768px) {
5
+ .field-grid, .method-grid {
6
+ grid-template-columns: 1fr;
7
+ }
8
+
9
+ .endpoint-header {
10
+ flex-direction: column;
11
+ align-items: flex-start;
12
+ }
13
+
14
+ .endpoint-path {
15
+ margin-left: 0;
16
+ margin-top: 0.5rem;
17
+ }
18
+ }
19
+
20
+ /* Responsive adjustments for model cards */
21
+ @media screen and (max-width: 768px) {
22
+ .model-cards {
23
+ grid-template-columns: 1fr;
24
+ gap: 1rem;
25
+ }
26
+
27
+ .model-card {
28
+ padding: 1rem;
29
+ }
30
+
31
+ .model-header h3 {
32
+ font-size: 1.1rem;
33
+ }
34
+
35
+ .model-badge {
36
+ font-size: 0.7rem;
37
+ padding: 0.2rem 0.6rem;
38
+ }
39
+ }
40
+
41
+ @media screen and (max-width: 480px) {
42
+ .model-header {
43
+ flex-direction: column;
44
+ align-items: flex-start;
45
+ gap: 0.5rem;
46
+ }
47
+
48
+ .model-badge {
49
+ align-self: flex-start;
50
+ }
51
+ }
@@ -0,0 +1,46 @@
1
+ /* ===== CSS VARIABLES FOR MODELS ===== */
2
+ :root {
3
+ /* Colors */
4
+ --bg-primary: #ffffff;
5
+ --bg-secondary: #f8fafc;
6
+ --bg-tertiary: #f1f5f9;
7
+
8
+ --text-primary: #0f172a;
9
+ --text-secondary: #475569;
10
+ --text-muted: #64748b;
11
+
12
+ --border-color: #e2e8f0;
13
+ --border-hover: #cbd5e1;
14
+
15
+ --accent-primary: #3b82f6;
16
+ --accent-secondary: #1d4ed8;
17
+ --accent-hover: #2563eb;
18
+
19
+ /* Shadows */
20
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
21
+ --shadow-hover: 0 4px 6px rgba(0, 0, 0, 0.1);
22
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
23
+
24
+ /* Transitions */
25
+ --transition-fast: 0.15s ease;
26
+ --transition-normal: 0.3s ease;
27
+ --transition-slow: 0.5s ease;
28
+ }
29
+
30
+ /* Dark mode */
31
+ [data-md-color-scheme="slate"] {
32
+ --bg-primary: #1a1a1a;
33
+ --bg-secondary: #2d2d2d;
34
+ --bg-tertiary: #404040;
35
+
36
+ --text-primary: #ffffff;
37
+ --text-secondary: #e5e5e5;
38
+ --text-muted: #cccccc;
39
+
40
+ --border-color: #404040;
41
+ --border-hover: #555555;
42
+
43
+ --accent-primary: #60a5fa;
44
+ --accent-secondary: #3b82f6;
45
+ --accent-hover: #93c5fd;
46
+ }