django-cfg 1.2.29__py3-none-any.whl → 1.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/api/health/views.py +4 -2
  3. django_cfg/apps/knowbase/config/settings.py +16 -15
  4. django_cfg/apps/payments/README.md +326 -0
  5. django_cfg/apps/payments/admin/__init__.py +20 -9
  6. django_cfg/apps/payments/admin/api_keys_admin.py +521 -237
  7. django_cfg/apps/payments/admin/balance_admin.py +592 -297
  8. django_cfg/apps/payments/admin/currencies_admin.py +600 -108
  9. django_cfg/apps/payments/admin/filters.py +306 -199
  10. django_cfg/apps/payments/admin/payments_admin.py +470 -64
  11. django_cfg/apps/payments/admin/subscriptions_admin.py +578 -128
  12. django_cfg/apps/payments/admin_interface/__init__.py +18 -0
  13. django_cfg/apps/payments/admin_interface/templates/payments/base.html +162 -0
  14. django_cfg/apps/payments/admin_interface/templates/payments/components/dev_tool_card.html +38 -0
  15. django_cfg/apps/payments/admin_interface/templates/payments/components/loading_spinner.html +16 -0
  16. django_cfg/apps/payments/admin_interface/templates/payments/components/notification.html +27 -0
  17. django_cfg/apps/payments/admin_interface/templates/payments/components/provider_card.html +86 -0
  18. django_cfg/apps/payments/admin_interface/templates/payments/components/status_card.html +39 -0
  19. django_cfg/apps/payments/admin_interface/templates/payments/currency_converter.html +382 -0
  20. django_cfg/apps/payments/admin_interface/templates/payments/payment_dashboard.html +300 -0
  21. django_cfg/apps/payments/admin_interface/templates/payments/payment_form.html +303 -0
  22. django_cfg/apps/payments/admin_interface/templates/payments/payment_list.html +382 -0
  23. django_cfg/apps/payments/admin_interface/templates/payments/payment_status.html +500 -0
  24. django_cfg/apps/payments/admin_interface/templates/payments/webhook_dashboard.html +594 -0
  25. django_cfg/apps/payments/admin_interface/views/__init__.py +23 -0
  26. django_cfg/apps/payments/admin_interface/views/payment_views.py +259 -0
  27. django_cfg/apps/payments/admin_interface/views/webhook_dashboard.py +37 -0
  28. django_cfg/apps/payments/apps.py +34 -9
  29. django_cfg/apps/payments/config/__init__.py +28 -51
  30. django_cfg/apps/payments/config/constance/__init__.py +22 -0
  31. django_cfg/apps/payments/config/constance/config_service.py +123 -0
  32. django_cfg/apps/payments/config/constance/fields.py +69 -0
  33. django_cfg/apps/payments/config/constance/settings.py +160 -0
  34. django_cfg/apps/payments/config/django_cfg_integration.py +202 -0
  35. django_cfg/apps/payments/config/helpers.py +130 -0
  36. django_cfg/apps/payments/management/__init__.py +1 -3
  37. django_cfg/apps/payments/management/commands/__init__.py +1 -3
  38. django_cfg/apps/payments/management/commands/manage_currencies.py +381 -0
  39. django_cfg/apps/payments/management/commands/manage_providers.py +408 -0
  40. django_cfg/apps/payments/middleware/__init__.py +3 -1
  41. django_cfg/apps/payments/middleware/api_access.py +329 -222
  42. django_cfg/apps/payments/middleware/rate_limiting.py +343 -163
  43. django_cfg/apps/payments/middleware/usage_tracking.py +250 -238
  44. django_cfg/apps/payments/migrations/0001_initial.py +708 -536
  45. django_cfg/apps/payments/models/__init__.py +16 -20
  46. django_cfg/apps/payments/models/api_keys.py +121 -43
  47. django_cfg/apps/payments/models/balance.py +150 -115
  48. django_cfg/apps/payments/models/base.py +68 -15
  49. django_cfg/apps/payments/models/currencies.py +207 -67
  50. django_cfg/apps/payments/models/managers/__init__.py +44 -0
  51. django_cfg/apps/payments/models/managers/api_key_managers.py +329 -0
  52. django_cfg/apps/payments/models/managers/balance_managers.py +599 -0
  53. django_cfg/apps/payments/models/managers/currency_managers.py +385 -0
  54. django_cfg/apps/payments/models/managers/payment_managers.py +511 -0
  55. django_cfg/apps/payments/models/managers/subscription_managers.py +641 -0
  56. django_cfg/apps/payments/models/payments.py +235 -284
  57. django_cfg/apps/payments/models/subscriptions.py +257 -177
  58. django_cfg/apps/payments/models/tariffs.py +147 -40
  59. django_cfg/apps/payments/services/__init__.py +209 -56
  60. django_cfg/apps/payments/services/cache/__init__.py +6 -6
  61. django_cfg/apps/payments/services/cache/{simple_cache.py → cache_service.py} +112 -12
  62. django_cfg/apps/payments/services/core/__init__.py +10 -6
  63. django_cfg/apps/payments/services/core/balance_service.py +435 -360
  64. django_cfg/apps/payments/services/core/base.py +166 -0
  65. django_cfg/apps/payments/services/core/currency_service.py +478 -0
  66. django_cfg/apps/payments/services/core/payment_service.py +344 -468
  67. django_cfg/apps/payments/services/core/subscription_service.py +425 -484
  68. django_cfg/apps/payments/services/core/webhook_service.py +410 -0
  69. django_cfg/apps/payments/services/integrations/__init__.py +29 -0
  70. django_cfg/apps/payments/services/integrations/ngrok_service.py +47 -0
  71. django_cfg/apps/payments/services/integrations/providers_config.py +107 -0
  72. django_cfg/apps/payments/services/providers/__init__.py +9 -14
  73. django_cfg/apps/payments/services/providers/base.py +232 -71
  74. django_cfg/apps/payments/services/providers/nowpayments.py +404 -219
  75. django_cfg/apps/payments/services/providers/registry.py +429 -80
  76. django_cfg/apps/payments/services/types/__init__.py +78 -0
  77. django_cfg/apps/payments/services/types/data.py +177 -0
  78. django_cfg/apps/payments/services/types/requests.py +150 -0
  79. django_cfg/apps/payments/services/types/responses.py +156 -0
  80. django_cfg/apps/payments/services/types/webhooks.py +232 -0
  81. django_cfg/apps/payments/signals/__init__.py +33 -8
  82. django_cfg/apps/payments/signals/api_key_signals.py +211 -130
  83. django_cfg/apps/payments/signals/balance_signals.py +174 -0
  84. django_cfg/apps/payments/signals/payment_signals.py +129 -98
  85. django_cfg/apps/payments/signals/subscription_signals.py +195 -143
  86. django_cfg/apps/payments/static/payments/css/components.css +380 -0
  87. django_cfg/apps/payments/static/payments/css/dashboard.css +188 -0
  88. django_cfg/apps/payments/static/payments/js/components.js +545 -0
  89. django_cfg/apps/payments/static/payments/js/utils.js +412 -0
  90. django_cfg/apps/payments/templatetags/__init__.py +1 -1
  91. django_cfg/apps/payments/templatetags/payment_tags.py +466 -0
  92. django_cfg/apps/payments/urls.py +46 -47
  93. django_cfg/apps/payments/urls_admin.py +49 -0
  94. django_cfg/apps/payments/views/api/__init__.py +101 -0
  95. django_cfg/apps/payments/views/api/api_keys.py +387 -0
  96. django_cfg/apps/payments/views/api/balances.py +381 -0
  97. django_cfg/apps/payments/views/api/base.py +298 -0
  98. django_cfg/apps/payments/views/api/currencies.py +402 -0
  99. django_cfg/apps/payments/views/api/payments.py +415 -0
  100. django_cfg/apps/payments/views/api/subscriptions.py +475 -0
  101. django_cfg/apps/payments/views/api/webhooks.py +476 -0
  102. django_cfg/apps/payments/views/serializers/__init__.py +99 -0
  103. django_cfg/apps/payments/views/serializers/api_keys.py +424 -0
  104. django_cfg/apps/payments/views/serializers/balances.py +300 -0
  105. django_cfg/apps/payments/views/serializers/currencies.py +335 -0
  106. django_cfg/apps/payments/views/serializers/payments.py +387 -0
  107. django_cfg/apps/payments/views/serializers/subscriptions.py +429 -0
  108. django_cfg/apps/payments/views/serializers/webhooks.py +137 -0
  109. django_cfg/apps/tasks/urls.py +0 -2
  110. django_cfg/apps/tasks/urls_admin.py +14 -0
  111. django_cfg/apps/urls.py +4 -4
  112. django_cfg/config.py +1 -1
  113. django_cfg/core/config.py +75 -4
  114. django_cfg/core/generation.py +25 -4
  115. django_cfg/core/integration/README.md +363 -0
  116. django_cfg/core/integration/__init__.py +47 -0
  117. django_cfg/core/integration/commands_collector.py +239 -0
  118. django_cfg/core/integration/display/__init__.py +15 -0
  119. django_cfg/core/integration/display/base.py +157 -0
  120. django_cfg/core/integration/display/ngrok.py +164 -0
  121. django_cfg/core/integration/display/startup.py +815 -0
  122. django_cfg/core/integration/url_integration.py +123 -0
  123. django_cfg/core/integration/version_checker.py +160 -0
  124. django_cfg/management/commands/auto_generate.py +4 -0
  125. django_cfg/management/commands/check_settings.py +6 -0
  126. django_cfg/management/commands/clear_constance.py +5 -2
  127. django_cfg/management/commands/create_token.py +6 -0
  128. django_cfg/management/commands/list_urls.py +6 -0
  129. django_cfg/management/commands/migrate_all.py +6 -0
  130. django_cfg/management/commands/migrator.py +3 -0
  131. django_cfg/management/commands/rundramatiq.py +6 -0
  132. django_cfg/management/commands/runserver_ngrok.py +51 -29
  133. django_cfg/management/commands/script.py +6 -0
  134. django_cfg/management/commands/show_config.py +12 -2
  135. django_cfg/management/commands/show_urls.py +4 -0
  136. django_cfg/management/commands/superuser.py +6 -0
  137. django_cfg/management/commands/task_clear.py +4 -1
  138. django_cfg/management/commands/task_status.py +3 -1
  139. django_cfg/management/commands/test_email.py +3 -0
  140. django_cfg/management/commands/test_telegram.py +6 -0
  141. django_cfg/management/commands/test_twilio.py +6 -0
  142. django_cfg/management/commands/tree.py +6 -0
  143. django_cfg/management/commands/validate_config.py +155 -149
  144. django_cfg/models/constance.py +31 -11
  145. django_cfg/models/payments.py +175 -498
  146. django_cfg/modules/django_currency/__init__.py +16 -11
  147. django_cfg/modules/django_currency/clients/__init__.py +4 -4
  148. django_cfg/modules/django_currency/clients/coinpaprika_client.py +289 -0
  149. django_cfg/modules/django_currency/clients/yahoo_client.py +157 -0
  150. django_cfg/modules/django_currency/core/__init__.py +1 -7
  151. django_cfg/modules/django_currency/core/converter.py +18 -23
  152. django_cfg/modules/django_currency/core/models.py +122 -11
  153. django_cfg/modules/django_currency/database/__init__.py +4 -4
  154. django_cfg/modules/django_currency/database/database_loader.py +190 -309
  155. django_cfg/modules/django_logger.py +160 -146
  156. django_cfg/modules/django_unfold/dashboard.py +65 -12
  157. django_cfg/registry/core.py +1 -0
  158. django_cfg/template_archive/django_sample.zip +0 -0
  159. django_cfg/templates/admin/components/action_grid.html +9 -9
  160. django_cfg/templates/admin/components/metric_card.html +5 -5
  161. django_cfg/templates/admin/components/status_badge.html +2 -2
  162. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +152 -24
  163. django_cfg/templates/admin/snippets/components/quick_actions.html +3 -3
  164. django_cfg/templates/admin/snippets/components/system_health.html +1 -1
  165. django_cfg/templates/admin/snippets/tabs/overview_tab.html +49 -52
  166. django_cfg/utils/smart_defaults.py +222 -571
  167. django_cfg/utils/toolkit.py +51 -11
  168. {django_cfg-1.2.29.dist-info → django_cfg-1.3.1.dist-info}/METADATA +5 -4
  169. {django_cfg-1.2.29.dist-info → django_cfg-1.3.1.dist-info}/RECORD +172 -182
  170. django_cfg/apps/payments/__init__.py +0 -8
  171. django_cfg/apps/payments/admin/tariffs_admin.py +0 -199
  172. django_cfg/apps/payments/config/module.py +0 -70
  173. django_cfg/apps/payments/config/providers.py +0 -105
  174. django_cfg/apps/payments/config/settings.py +0 -96
  175. django_cfg/apps/payments/config/utils.py +0 -52
  176. django_cfg/apps/payments/decorators.py +0 -291
  177. django_cfg/apps/payments/management/commands/README.md +0 -178
  178. django_cfg/apps/payments/management/commands/currency_stats.py +0 -323
  179. django_cfg/apps/payments/management/commands/populate_currencies.py +0 -246
  180. django_cfg/apps/payments/management/commands/update_currencies.py +0 -336
  181. django_cfg/apps/payments/managers/__init__.py +0 -22
  182. django_cfg/apps/payments/managers/api_key_manager.py +0 -35
  183. django_cfg/apps/payments/managers/balance_manager.py +0 -361
  184. django_cfg/apps/payments/managers/currency_manager.py +0 -83
  185. django_cfg/apps/payments/managers/payment_manager.py +0 -44
  186. django_cfg/apps/payments/managers/subscription_manager.py +0 -37
  187. django_cfg/apps/payments/managers/tariff_manager.py +0 -29
  188. django_cfg/apps/payments/models/events.py +0 -73
  189. django_cfg/apps/payments/serializers/__init__.py +0 -56
  190. django_cfg/apps/payments/serializers/api_keys.py +0 -51
  191. django_cfg/apps/payments/serializers/balance.py +0 -59
  192. django_cfg/apps/payments/serializers/currencies.py +0 -55
  193. django_cfg/apps/payments/serializers/payments.py +0 -62
  194. django_cfg/apps/payments/serializers/subscriptions.py +0 -71
  195. django_cfg/apps/payments/serializers/tariffs.py +0 -56
  196. django_cfg/apps/payments/services/billing/__init__.py +0 -8
  197. django_cfg/apps/payments/services/cache/base.py +0 -30
  198. django_cfg/apps/payments/services/core/fallback_service.py +0 -432
  199. django_cfg/apps/payments/services/internal_types.py +0 -297
  200. django_cfg/apps/payments/services/middleware/__init__.py +0 -8
  201. django_cfg/apps/payments/services/monitoring/__init__.py +0 -22
  202. django_cfg/apps/payments/services/monitoring/api_schemas.py +0 -222
  203. django_cfg/apps/payments/services/monitoring/provider_health.py +0 -372
  204. django_cfg/apps/payments/services/providers/cryptapi.py +0 -273
  205. django_cfg/apps/payments/services/providers/cryptomus.py +0 -311
  206. django_cfg/apps/payments/services/security/__init__.py +0 -34
  207. django_cfg/apps/payments/services/security/error_handler.py +0 -637
  208. django_cfg/apps/payments/services/security/payment_notifications.py +0 -342
  209. django_cfg/apps/payments/services/security/webhook_validator.py +0 -475
  210. django_cfg/apps/payments/services/validators/__init__.py +0 -8
  211. django_cfg/apps/payments/static/payments/css/payments.css +0 -340
  212. django_cfg/apps/payments/static/payments/js/notifications.js +0 -202
  213. django_cfg/apps/payments/static/payments/js/payment-utils.js +0 -318
  214. django_cfg/apps/payments/static/payments/js/theme.js +0 -86
  215. django_cfg/apps/payments/tasks/__init__.py +0 -12
  216. django_cfg/apps/payments/tasks/webhook_processing.py +0 -177
  217. django_cfg/apps/payments/templates/payments/base.html +0 -182
  218. django_cfg/apps/payments/templates/payments/components/payment_card.html +0 -201
  219. django_cfg/apps/payments/templates/payments/components/payment_qr_code.html +0 -109
  220. django_cfg/apps/payments/templates/payments/components/progress_bar.html +0 -36
  221. django_cfg/apps/payments/templates/payments/components/provider_stats.html +0 -40
  222. django_cfg/apps/payments/templates/payments/components/status_badge.html +0 -27
  223. django_cfg/apps/payments/templates/payments/components/status_overview.html +0 -144
  224. django_cfg/apps/payments/templates/payments/dashboard.html +0 -346
  225. django_cfg/apps/payments/templatetags/payments_tags.py +0 -315
  226. django_cfg/apps/payments/urls_templates.py +0 -52
  227. django_cfg/apps/payments/utils/__init__.py +0 -45
  228. django_cfg/apps/payments/utils/billing_utils.py +0 -342
  229. django_cfg/apps/payments/utils/config_utils.py +0 -245
  230. django_cfg/apps/payments/utils/middleware_utils.py +0 -228
  231. django_cfg/apps/payments/utils/validation_utils.py +0 -94
  232. django_cfg/apps/payments/views/__init__.py +0 -62
  233. django_cfg/apps/payments/views/api_key_views.py +0 -164
  234. django_cfg/apps/payments/views/balance_views.py +0 -75
  235. django_cfg/apps/payments/views/currency_views.py +0 -111
  236. django_cfg/apps/payments/views/payment_views.py +0 -149
  237. django_cfg/apps/payments/views/subscription_views.py +0 -135
  238. django_cfg/apps/payments/views/tariff_views.py +0 -131
  239. django_cfg/apps/payments/views/templates/__init__.py +0 -25
  240. django_cfg/apps/payments/views/templates/ajax.py +0 -312
  241. django_cfg/apps/payments/views/templates/base.py +0 -204
  242. django_cfg/apps/payments/views/templates/dashboard.py +0 -60
  243. django_cfg/apps/payments/views/templates/payment_detail.py +0 -102
  244. django_cfg/apps/payments/views/templates/payment_management.py +0 -164
  245. django_cfg/apps/payments/views/templates/qr_code.py +0 -174
  246. django_cfg/apps/payments/views/templates/stats.py +0 -240
  247. django_cfg/apps/payments/views/templates/utils.py +0 -181
  248. django_cfg/apps/payments/views/webhook_views.py +0 -266
  249. django_cfg/apps/payments/viewsets.py +0 -65
  250. django_cfg/core/integration.py +0 -160
  251. django_cfg/modules/django_currency/clients/coingecko_client.py +0 -257
  252. django_cfg/modules/django_currency/clients/yfinance_client.py +0 -246
  253. django_cfg/template_archive/.gitignore +0 -1
  254. django_cfg/template_archive/__init__.py +0 -0
  255. django_cfg/urls.py +0 -33
  256. {django_cfg-1.2.29.dist-info → django_cfg-1.3.1.dist-info}/WHEEL +0 -0
  257. {django_cfg-1.2.29.dist-info → django_cfg-1.3.1.dist-info}/entry_points.txt +0 -0
  258. {django_cfg-1.2.29.dist-info → django_cfg-1.3.1.dist-info}/licenses/LICENSE +0 -0
@@ -5,6 +5,7 @@
5
5
  {% block extrahead %}
6
6
  {{ block.super }}
7
7
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
8
+ <!-- Removed Tailwind CDN - using CSS-only solution -->
8
9
 
9
10
  <script>
10
11
  // Dashboard tabs functionality
@@ -22,12 +23,10 @@
22
23
  tabs.forEach((t, i) => {
23
24
  if (i === idx) {
24
25
  // Active tab
25
- t.classList.add('bg-primary-600', 'text-white', 'border-primary-600');
26
- t.classList.remove('bg-base-100', 'text-font-default-light', 'border-base-200', 'dark:bg-base-800', 'dark:text-font-default-dark', 'dark:border-base-700');
26
+ t.classList.add('active');
27
27
  } else {
28
- // Inactive tab
29
- t.classList.remove('bg-primary-600', 'text-white', 'border-primary-600');
30
- t.classList.add('bg-base-100', 'text-font-default-light', 'border-base-200', 'dark:bg-base-800', 'dark:text-font-default-dark', 'dark:border-base-700');
28
+ // Inactive tab
29
+ t.classList.remove('active');
31
30
  }
32
31
  });
33
32
 
@@ -92,19 +91,21 @@
92
91
  const button = event.target.closest('button');
93
92
  const originalText = button.innerHTML;
94
93
  button.innerHTML = '<span class="material-icons text-xs mr-1">check</span>Copied';
95
- button.classList.remove('bg-base-100', 'dark:bg-base-700', 'hover:bg-base-200', 'dark:hover:bg-base-600');
94
+ button.classList.remove('bg-gray-100', 'dark:bg-gray-700', 'hover:bg-gray-200', 'dark:hover:bg-gray-600');
96
95
  button.classList.add('bg-green-600', 'hover:bg-green-700', 'dark:bg-green-500', 'dark:hover:bg-green-600', 'text-white');
97
96
 
98
97
  setTimeout(function() {
99
98
  button.innerHTML = originalText;
100
99
  button.classList.remove('bg-green-600', 'hover:bg-green-700', 'dark:bg-green-500', 'dark:hover:bg-green-600', 'text-white');
101
- button.classList.add('bg-base-100', 'dark:bg-base-700', 'hover:bg-base-200', 'dark:hover:bg-base-600');
100
+ button.classList.add('bg-gray-100', 'dark:bg-gray-700', 'hover:bg-gray-200', 'dark:hover:bg-gray-600');
102
101
  }, 2000);
103
102
  }).catch(function(err) {
104
103
  console.error('Could not copy text: ', err);
105
104
  });
106
105
  };
107
106
 
107
+ // No JS needed - using pure CSS solution
108
+
108
109
  window.executeCommand = function(commandName) {
109
110
  const modal = document.getElementById('commandModal');
110
111
  const commandNameEl = document.getElementById('commandName');
@@ -118,7 +119,7 @@
118
119
 
119
120
  commandNameEl.textContent = commandName;
120
121
  commandOutput.textContent = '';
121
- commandStatus.innerHTML = '<div class="w-3 h-3 bg-yellow-500 rounded-full mr-2 animate-pulse"></div><span class="text-sm font-medium text-font-default-light dark:text-font-default-dark">Executing...</span>';
122
+ commandStatus.innerHTML = '<div class="w-3 h-3 bg-yellow-500 rounded-full mr-2 animate-pulse"></div><span class="text-sm font-medium text-gray-700 dark:text-gray-300">Executing...</span>';
122
123
  modal.classList.remove('hidden');
123
124
 
124
125
  fetch('/cfg/commands/execute/', {
@@ -185,7 +186,7 @@
185
186
  addLogLine(output, `🚀 Starting command: ${data.command}`, 'info');
186
187
  addLogLine(output, `📝 Arguments: ${data.args.join(' ')}`, 'info');
187
188
  addLogLine(output, '', 'spacer');
188
- status.innerHTML = '<div class="w-3 h-3 bg-yellow-500 rounded-full mr-2 animate-pulse"></div><span class="text-sm font-medium text-font-default-light dark:text-font-default-dark">Executing...</span>';
189
+ status.innerHTML = '<div class="w-3 h-3 bg-yellow-500 rounded-full mr-2 animate-pulse"></div><span class="text-sm font-medium text-gray-700 dark:text-gray-300">Executing...</span>';
189
190
  break;
190
191
  case 'output':
191
192
  addLogLine(output, data.line, 'output');
@@ -232,7 +233,7 @@
232
233
  line.className += ' h-2';
233
234
  break;
234
235
  default:
235
- line.className += ' text-font-default-light dark:text-font-default-dark';
236
+ line.className += ' text-gray-700 dark:text-gray-300';
236
237
  }
237
238
 
238
239
  // Set content
@@ -296,6 +297,133 @@
296
297
  from { opacity: 0; transform: translateY(10px); }
297
298
  to { opacity: 1; transform: translateY(0); }
298
299
  }
300
+
301
+ /* 🎨 Theme classes - cross-theme compatible cards */
302
+ .theme-card {
303
+ background-color: rgba(255, 255, 255, 0.2) !important;
304
+ backdrop-filter: blur(10px) !important;
305
+ color: #111827 !important;
306
+ border-color: rgba(229, 231, 235, 0.6) !important;
307
+ border-radius: 10px !important;
308
+ transition: all 0.2s ease;
309
+ }
310
+
311
+ html.dark .theme-card {
312
+ background-color: rgba(31, 41, 55, 0.2) !important;
313
+ backdrop-filter: blur(10px) !important;
314
+ color: white !important;
315
+ border-color: rgba(55, 65, 81, 0.6) !important;
316
+ border-radius: 10px !important;
317
+ }
318
+
319
+ .theme-text {
320
+ color: #111827 !important;
321
+ }
322
+
323
+ html.dark .theme-text {
324
+ color: white !important;
325
+ }
326
+
327
+ .theme-border {
328
+ border-color: rgba(229, 231, 235, 0.6) !important;
329
+ }
330
+
331
+ html.dark .theme-border {
332
+ border-color: rgba(55, 65, 81, 0.6) !important;
333
+ }
334
+
335
+ /* Fix grid layout */
336
+ .overview-grid {
337
+ display: grid !important;
338
+ grid-template-columns: 1fr !important;
339
+ }
340
+
341
+ @media (min-width: 1280px) {
342
+ .overview-grid {
343
+ grid-template-columns: 2fr 1fr !important;
344
+ }
345
+ }
346
+
347
+ /* 🎯 Tab styling */
348
+ #dashboard-tabs {
349
+ border-bottom: 2px solid #e5e7eb !important;
350
+ }
351
+
352
+ html.dark #dashboard-tabs {
353
+ border-bottom-color: #374151 !important;
354
+ }
355
+
356
+ #dashboard-tabs button {
357
+ background-color: #f3f4f6 !important;
358
+ color: #6b7280 !important;
359
+ border-bottom: 2px solid transparent !important;
360
+ transition: all 0.2s ease !important;
361
+ }
362
+
363
+ html.dark #dashboard-tabs button {
364
+ background-color: #374151 !important;
365
+ color: #9ca3af !important;
366
+ }
367
+
368
+ #dashboard-tabs button:hover {
369
+ background-color: #e5e7eb !important;
370
+ color: #374151 !important;
371
+ }
372
+
373
+ html.dark #dashboard-tabs button:hover {
374
+ background-color: #4b5563 !important;
375
+ color: #d1d5db !important;
376
+ }
377
+
378
+ /* Active tab */
379
+ #dashboard-tabs button.active,
380
+ #dashboard-tabs button[class*="bg-blue"] {
381
+ background-color: #2563eb !important;
382
+ color: white !important;
383
+ border-bottom-color: #2563eb !important;
384
+ }
385
+
386
+ html.dark #dashboard-tabs button.active,
387
+ html.dark #dashboard-tabs button[class*="bg-blue"] {
388
+ background-color: #3b82f6 !important;
389
+ color: white !important;
390
+ border-bottom-color: #3b82f6 !important;
391
+ }
392
+
393
+ /* 🎯 Universal card borders - transparent cross-theme */
394
+ .card-border,
395
+ .border-base-200,
396
+ [class*="border-base-200"],
397
+ [class*="dark:border-base-700"] {
398
+ border-color: rgba(229, 231, 235, 0.6) !important;
399
+ }
400
+
401
+ html.dark .card-border,
402
+ html.dark .border-base-200,
403
+ html.dark [class*="border-base-200"],
404
+ html.dark [class*="dark:border-base-700"] {
405
+ border-color: rgba(55, 65, 81, 0.6) !important;
406
+ }
407
+
408
+ /* 🎯 Icon spacing defaults - more specific targeting */
409
+ .theme-card .material-icons:not(.no-margin) {
410
+ margin-right: 0.75rem !important; /* 12px default spacing */
411
+ }
412
+
413
+ /* Override for specific contexts */
414
+ .theme-card .flex.items-center .material-icons {
415
+ margin-right: 0.75rem !important;
416
+ }
417
+
418
+ .theme-card .status-badge .material-icons {
419
+ margin-right: 0.25rem !important; /* 4px for badges */
420
+ }
421
+
422
+ /* Fix for buttons and interactive elements */
423
+ .theme-card button .material-icons,
424
+ .theme-card a .material-icons {
425
+ margin-right: 0.5rem !important;
426
+ }
299
427
  </style>
300
428
  {% endblock %}
301
429
 
@@ -315,10 +443,10 @@
315
443
  {% block content %}
316
444
  <!-- Dashboard Header -->
317
445
  <div class="mb-8">
318
- <h1 class="text-3xl font-bold text-font-important-light dark:text-font-important-dark">
446
+ <h1 class="text-3xl font-bold text-gray-900 dark:text-white">
319
447
  {{ dashboard_title|default:"Dashboard" }}
320
448
  </h1>
321
- <p class="mt-2 text-font-default-light dark:text-font-default-dark">
449
+ <p class="mt-2 text-gray-700 dark:text-gray-300">
322
450
  Welcome to the administration dashboard
323
451
  </p>
324
452
  </div>
@@ -335,11 +463,11 @@
335
463
  </div>
336
464
 
337
465
  <!-- Tabs Navigation -->
338
- <div class="flex gap-1 mb-6 border-b border-base-200 dark:border-base-700" id="dashboard-tabs">
466
+ <div class="flex gap-1 mb-6" id="dashboard-tabs">
339
467
  <button
340
468
  type="button"
341
469
  data-tab="0"
342
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none font-semibold border-b-2 bg-primary-600 text-white border-primary-600"
470
+ class="px-4 py-3 rounded-t-lg focus:outline-none font-semibold active"
343
471
  >
344
472
  <span class="material-icons mr-2 align-middle text-sm">dashboard</span>
345
473
  Overview
@@ -347,7 +475,7 @@
347
475
  <button
348
476
  type="button"
349
477
  data-tab="1"
350
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none bg-base-100 text-font-default-light border-b-2 border-base-200 dark:bg-base-800 dark:text-font-default-dark dark:border-base-700"
478
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
351
479
  >
352
480
  <span class="material-icons mr-2 align-middle text-sm">public</span>
353
481
  API Zones
@@ -355,7 +483,7 @@
355
483
  <button
356
484
  type="button"
357
485
  data-tab="2"
358
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none bg-base-100 text-font-default-light border-b-2 border-base-200 dark:bg-base-800 dark:text-font-default-dark dark:border-base-700"
486
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
359
487
  >
360
488
  <span class="material-icons mr-2 align-middle text-sm">people</span>
361
489
  Users
@@ -363,7 +491,7 @@
363
491
  <button
364
492
  type="button"
365
493
  data-tab="3"
366
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none bg-base-100 text-font-default-light border-b-2 border-base-200 dark:bg-base-800 dark:text-font-default-dark dark:border-base-700"
494
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
367
495
  >
368
496
  <span class="material-icons mr-2 align-middle text-sm">settings</span>
369
497
  System
@@ -371,7 +499,7 @@
371
499
  <button
372
500
  type="button"
373
501
  data-tab="4"
374
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none bg-base-100 text-font-default-light border-b-2 border-base-200 dark:bg-base-800 dark:text-font-default-dark dark:border-base-700"
502
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
375
503
  >
376
504
  <span class="material-icons mr-2 align-middle text-sm">analytics</span>
377
505
  Statistics
@@ -379,7 +507,7 @@
379
507
  <button
380
508
  type="button"
381
509
  data-tab="5"
382
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none bg-base-100 text-font-default-light border-b-2 border-base-200 dark:bg-base-800 dark:text-font-default-dark dark:border-base-700"
510
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
383
511
  >
384
512
  <span class="material-icons mr-2 align-middle text-sm">apps</span>
385
513
  App Stats
@@ -387,7 +515,7 @@
387
515
  <button
388
516
  type="button"
389
517
  data-tab="6"
390
- class="px-4 py-3 transition-all rounded-t-lg focus:outline-none bg-base-100 text-font-default-light border-b-2 border-base-200 dark:bg-base-800 dark:text-font-default-dark dark:border-base-700"
518
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
391
519
  >
392
520
  <span class="material-icons mr-2 align-middle text-sm">terminal</span>
393
521
  Commands
@@ -427,14 +555,14 @@
427
555
  </div>
428
556
 
429
557
  <!-- Footer Section -->
430
- <div class="text-center py-8 border-t border-base-200 dark:border-base-700 mt-5">
431
- <p class="text-sm text-font-subtle-light dark:text-font-subtle-dark">
558
+ <div class="text-center py-8 border-t theme-border mt-5">
559
+ <p class="text-sm text-gray-500 dark:text-gray-400">
432
560
  {% load django_cfg %}
433
- <a href="{% lib_site_url %}" class="text-primary-600 hover:text-primary-700 font-medium">
561
+ <a href="{% lib_site_url %}" class="text-blue-600 hover:text-blue-700 font-medium">
434
562
  {% lib_name %}
435
563
  </a>
436
564
  <span class="mx-2">•</span>
437
- <a href="{% lib_health_url %}" class="text-primary-600 hover:text-primary-700">
565
+ <a href="{% lib_health_url %}" class="text-blue-600 hover:text-blue-700">
438
566
  System Health
439
567
  </a>
440
568
  </p>
@@ -12,7 +12,7 @@
12
12
  <div class="mt-8 grid grid-cols-1 lg:grid-cols-3 gap-6">
13
13
  {% if admin_actions %}
14
14
  <div class="bg-base-50 dark:bg-base-800 rounded-lg p-6 border border-base-200 dark:border-base-700">
15
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark mb-4 flex items-center">
15
+ <h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-4 flex items-center">
16
16
  <span class="material-icons text-primary-600 mr-2">admin_panel_settings</span>
17
17
  Admin Actions
18
18
  </h3>
@@ -29,7 +29,7 @@
29
29
 
30
30
  {% if user_actions %}
31
31
  <div class="bg-base-50 dark:bg-base-800 rounded-lg p-6 border border-base-200 dark:border-base-700">
32
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark mb-4 flex items-center">
32
+ <h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-4 flex items-center">
33
33
  <span class="material-icons text-green-600 dark:text-green-400 mr-2">people</span>
34
34
  User Management
35
35
  </h3>
@@ -46,7 +46,7 @@
46
46
 
47
47
  {% if system_actions %}
48
48
  <div class="bg-base-50 dark:bg-base-800 rounded-lg p-6 border border-base-200 dark:border-base-700">
49
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark mb-4 flex items-center">
49
+ <h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-4 flex items-center">
50
50
  <span class="material-icons text-amber-600 dark:text-amber-400 mr-2">settings</span>
51
51
  System Tools
52
52
  </h3>
@@ -4,7 +4,7 @@
4
4
  <div class="mt-8 w-full">
5
5
  {% include 'admin/components/section_header.html' with title='System Health' icon='health_and_safety' icon_color='green' %}
6
6
 
7
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 w-full">
7
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 w-full">
8
8
  {% for key, value in system_health.items %}
9
9
  {% if key == "database_status" %}
10
10
  {% include 'admin/components/metric_card.html' with title='Database' description='Connection & queries' icon='storage' status=value|yesno:'healthy,error' status_text=value|title %}
@@ -6,12 +6,12 @@
6
6
  <div>
7
7
  <div class="flex items-center justify-between mb-6">
8
8
  <div>
9
- <h1 class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">System Overview</h1>
10
- <p class="text-font-default-light dark:text-font-default-dark mt-2">
9
+ <h1 class="text-2xl font-bold theme-text">System Overview</h1>
10
+ <p class="text-gray-600 dark:text-gray-300 mt-2">
11
11
  Real-time monitoring and key performance indicators
12
12
  </p>
13
13
  </div>
14
- <div class="flex items-center space-x-2 text-sm text-font-subtle-light dark:text-font-subtle-dark">
14
+ <div class="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
15
15
  <span class="material-icons text-green-500">fiber_manual_record</span>
16
16
  <span>Live data</span>
17
17
  </div>
@@ -21,60 +21,57 @@
21
21
  {% include 'admin/snippets/components/stats_cards.html' %}
22
22
  </div>
23
23
 
24
- <!-- Primary Dashboard Row -->
25
- <div class="grid grid-cols-1 xl:grid-cols-3" style="gap: 2rem;">
26
- <!-- Main Content Area -->
27
- <div class="xl:col-span-2 space-y-8">
28
- <!-- Charts Section -->
29
- {% include 'admin/snippets/components/charts_section.html' %}
30
-
31
- <!-- Recent Activity Stream -->
32
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 shadow-xs">
33
- <div class="p-6 border-b border-base-200 dark:border-base-700">
34
- <div class="flex items-center justify-between">
35
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark flex items-center">
36
- <span class="material-icons text-primary-600 mr-2">timeline</span>
37
- Recent Activity
38
- </h3>
39
- <a
40
- href="#"
41
- class="text-sm text-primary-600 hover:text-primary-700 flex items-center"
42
- >
43
- View all
44
- <span class="material-icons text-xs ml-1">arrow_forward</span>
45
- </a>
46
- </div>
47
- </div>
48
- <div class="p-6">
49
- {% include 'admin/snippets/components/recent_activity.html' %}
50
- </div>
24
+ <!-- System Health & Quick Actions - Full Width Row -->
25
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8">
26
+ <!-- System Health Card -->
27
+ <div class="theme-card rounded-lg shadow-sm border">
28
+ <div class="p-6">
29
+ {% include 'admin/snippets/components/system_health.html' %}
51
30
  </div>
52
31
  </div>
53
32
 
54
- <!-- Sidebar Content -->
55
- <div class="space-y-8">
56
- <!-- System Health Card -->
57
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 shadow-xs">
58
- <div class="p-6">
59
- {% include 'admin/snippets/components/system_health.html' %}
60
- </div>
33
+ <!-- Quick Actions Card -->
34
+ <div class="theme-card rounded-lg border theme-border shadow-sm">
35
+ <div class="p-6">
36
+ {% include 'admin/snippets/components/quick_actions.html' %}
61
37
  </div>
38
+ </div>
39
+ </div>
40
+
41
+ <!-- Charts & Recent Activity - Full Width -->
42
+ <div class="space-y-8">
43
+ <!-- Charts Section -->
44
+ {% include 'admin/snippets/components/charts_section.html' %}
62
45
 
63
- <!-- Quick Actions Card -->
64
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 shadow-xs">
65
- <div class="p-6">
66
- {% include 'admin/snippets/components/quick_actions.html' %}
46
+ <!-- Recent Activity Stream -->
47
+ <div class="theme-card rounded-lg shadow-sm border">
48
+ <div class="p-6 border-b theme-border">
49
+ <div class="flex items-center justify-between">
50
+ <h3 class="text-lg font-semibold theme-text flex items-center">
51
+ <span class="material-icons text-blue-600 mr-2">timeline</span>
52
+ Recent Activity
53
+ </h3>
54
+ <a
55
+ href="#"
56
+ class="text-sm text-blue-600 hover:text-blue-700 flex items-center"
57
+ >
58
+ View all
59
+ <span class="material-icons text-xs ml-1">arrow_forward</span>
60
+ </a>
67
61
  </div>
68
62
  </div>
63
+ <div class="p-6">
64
+ {% include 'admin/snippets/components/recent_activity.html' %}
65
+ </div>
69
66
  </div>
70
67
  </div>
71
68
 
72
69
  <!-- Secondary Metrics Row -->
73
- <div class="grid grid-cols-1 lg:grid-cols-2 ье" style="gap: 2rem;">
70
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
74
71
  <!-- System Metrics -->
75
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 shadow-xs">
76
- <div class="p-6 border-b border-base-200 dark:border-base-700">
77
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark flex items-center">
72
+ <div class="theme-card rounded-lg border theme-border shadow-sm">
73
+ <div class="p-6 border-b theme-border">
74
+ <h3 class="text-lg font-semibold theme-text flex items-center">
78
75
  <span class="material-icons text-blue-500 mr-2">memory</span>
79
76
  System Metrics
80
77
  </h3>
@@ -85,10 +82,10 @@
85
82
  </div>
86
83
 
87
84
  <!-- Activity Tracker -->
88
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 shadow-xs">
89
- <div class="p-6 border-b border-base-200 dark:border-base-700">
90
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark flex items-center">
91
- <span class="material-icons text-primary-600 mr-2">track_changes</span>
85
+ <div class="theme-card rounded-lg border theme-border shadow-sm">
86
+ <div class="p-6 border-b theme-border">
87
+ <h3 class="text-lg font-semibold theme-text flex items-center">
88
+ <span class="material-icons text-blue-600 mr-2">track_changes</span>
92
89
  Activity Tracker
93
90
  </h3>
94
91
  </div>
@@ -100,14 +97,14 @@
100
97
 
101
98
  <!-- Application Statistics (if available) -->
102
99
  {% if stats_groups %}
103
- <div class="bg-base-50 dark:bg-base-800 rounded-xl p-8 border border-base-200 dark:border-base-700">
100
+ <div class="bg-gray-50 dark:bg-gray-800 rounded-xl p-8 border theme-border">
104
101
  <div class="flex items-center mb-6">
105
102
  <span class="material-icons text-green-500 mr-3">apps</span>
106
103
  <div>
107
- <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark">
104
+ <h2 class="text-xl font-semibold theme-text">
108
105
  Application Statistics
109
106
  </h2>
110
- <p class="text-font-default-light dark:text-font-default-dark text-sm mt-1">
107
+ <p class="text-gray-600 dark:text-gray-300 text-sm mt-1">
111
108
  Detailed metrics for each application module
112
109
  </p>
113
110
  </div>