django-cfg 1.3.13__py3-none-any.whl → 1.4.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.
Files changed (438) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/accounts/admin/user_admin.py +39 -16
  3. django_cfg/apps/accounts/serializers/profile.py +1 -1
  4. django_cfg/apps/accounts/services/otp_service.py +18 -11
  5. django_cfg/apps/accounts/signals.py +15 -24
  6. django_cfg/apps/accounts/utils/notifications.py +217 -358
  7. django_cfg/apps/accounts/views/otp.py +2 -2
  8. django_cfg/apps/accounts/views/webhook.py +1 -1
  9. django_cfg/apps/agents/core/django_agent.py +1 -1
  10. django_cfg/apps/api/commands/views.py +66 -83
  11. django_cfg/apps/api/health/drf_views.py +269 -0
  12. django_cfg/apps/api/health/serializers.py +45 -0
  13. django_cfg/apps/api/health/urls.py +6 -1
  14. django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
  15. django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
  16. django_cfg/apps/knowbase/admin/document_admin.py +136 -270
  17. django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
  18. django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
  19. django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
  20. django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
  21. django_cfg/apps/knowbase/config/constance_fields.py +1 -1
  22. django_cfg/apps/knowbase/config/settings.py +2 -2
  23. django_cfg/apps/knowbase/mixins/__init__.py +19 -2
  24. django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
  25. django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
  26. django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
  27. django_cfg/apps/knowbase/mixins/creator.py +10 -10
  28. django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
  29. django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
  30. django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
  31. django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
  32. django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
  33. django_cfg/apps/knowbase/mixins/service.py +2 -2
  34. django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
  35. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
  36. django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
  37. django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
  38. django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
  39. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
  40. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
  41. django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
  42. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
  43. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
  44. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
  45. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
  46. django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
  47. django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
  48. django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
  49. django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
  50. django_cfg/apps/knowbase/services/embedding/models.py +18 -14
  51. django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
  52. django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
  53. django_cfg/apps/leads/tests.py +1 -1
  54. django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
  55. django_cfg/apps/payments/admin/balance_admin.py +1 -1
  56. django_cfg/apps/payments/admin/currencies_admin.py +1 -1
  57. django_cfg/apps/payments/admin/payments_admin.py +1 -1
  58. django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
  59. django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
  60. django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
  61. django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
  62. django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
  63. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
  64. django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
  65. django_cfg/apps/payments/admin_interface/views/base.py +29 -2
  66. django_cfg/apps/payments/apps.py +1 -1
  67. django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
  68. django_cfg/apps/payments/config/helpers.py +3 -2
  69. django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
  70. django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
  71. django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
  72. django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
  73. django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
  74. django_cfg/apps/payments/management/commands/test_providers.py +1 -1
  75. django_cfg/apps/payments/middleware/api_access.py +1 -1
  76. django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
  77. django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
  78. django_cfg/apps/payments/models/balance.py +2 -2
  79. django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
  80. django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
  81. django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
  82. django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
  83. django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
  84. django_cfg/apps/payments/models/payments.py +2 -2
  85. django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
  86. django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
  87. django_cfg/apps/payments/services/core/base.py +1 -1
  88. django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
  89. django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
  90. django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
  91. django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
  92. django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
  93. django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
  94. django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
  95. django_cfg/apps/payments/services/core/payment_service.py +124 -612
  96. django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
  97. django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
  98. django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
  99. django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
  100. django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
  101. django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
  102. django_cfg/apps/payments/services/providers/base.py +1 -1
  103. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
  104. django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
  105. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
  106. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
  107. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
  108. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
  109. django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
  110. django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
  111. django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
  112. django_cfg/apps/payments/services/providers/registry.py +1 -1
  113. django_cfg/apps/payments/services/providers/sync_service.py +1 -1
  114. django_cfg/apps/payments/signals/__init__.py +1 -1
  115. django_cfg/apps/payments/signals/api_key_signals.py +1 -1
  116. django_cfg/apps/payments/signals/balance_signals.py +1 -1
  117. django_cfg/apps/payments/signals/payment_signals.py +1 -1
  118. django_cfg/apps/payments/signals/subscription_signals.py +1 -1
  119. django_cfg/apps/payments/views/api/api_keys.py +1 -1
  120. django_cfg/apps/payments/views/api/balances.py +1 -1
  121. django_cfg/apps/payments/views/api/base.py +1 -1
  122. django_cfg/apps/payments/views/api/currencies.py +1 -1
  123. django_cfg/apps/payments/views/api/payments.py +1 -1
  124. django_cfg/apps/payments/views/api/subscriptions.py +1 -1
  125. django_cfg/apps/payments/views/api/webhooks.py +1 -1
  126. django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
  127. django_cfg/apps/payments/views/serializers/balances.py +1 -1
  128. django_cfg/apps/payments/views/serializers/currencies.py +1 -1
  129. django_cfg/apps/payments/views/serializers/payments.py +1 -1
  130. django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
  131. django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
  132. django_cfg/apps/support/admin/support_admin.py +21 -13
  133. django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
  134. django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
  135. django_cfg/apps/support/utils/support_email_service.py +1 -1
  136. django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
  137. django_cfg/apps/tasks/utils/simulator.py +1 -1
  138. django_cfg/apps/tasks/views/dashboard.py +33 -3
  139. django_cfg/apps/urls.py +5 -1
  140. django_cfg/cli/README.md +57 -471
  141. django_cfg/cli/commands/create_project.py +140 -529
  142. django_cfg/cli/main.py +13 -10
  143. django_cfg/core/__init__.py +63 -6
  144. django_cfg/core/base/__init__.py +5 -0
  145. django_cfg/core/base/config_model.py +652 -0
  146. django_cfg/core/builders/__init__.py +11 -0
  147. django_cfg/core/builders/apps_builder.py +258 -0
  148. django_cfg/core/builders/middleware_builder.py +115 -0
  149. django_cfg/core/builders/security_builder.py +96 -0
  150. django_cfg/core/config.py +20 -892
  151. django_cfg/core/constants.py +69 -0
  152. django_cfg/core/environment/__init__.py +9 -0
  153. django_cfg/core/exceptions.py +45 -298
  154. django_cfg/core/generation/__init__.py +51 -0
  155. django_cfg/core/generation/core_generators/__init__.py +0 -0
  156. django_cfg/core/generation/core_generators/settings.py +90 -0
  157. django_cfg/core/generation/core_generators/static.py +82 -0
  158. django_cfg/core/generation/core_generators/templates.py +141 -0
  159. django_cfg/core/generation/data_generators/__init__.py +15 -0
  160. django_cfg/core/generation/data_generators/cache.py +132 -0
  161. django_cfg/core/generation/data_generators/database.py +117 -0
  162. django_cfg/core/generation/generation.py +92 -0
  163. django_cfg/core/generation/integration_generators/__init__.py +21 -0
  164. django_cfg/core/generation/integration_generators/api.py +237 -0
  165. django_cfg/core/generation/integration_generators/sessions.py +65 -0
  166. django_cfg/core/generation/integration_generators/tailwind.py +54 -0
  167. django_cfg/core/generation/integration_generators/tasks.py +92 -0
  168. django_cfg/core/generation/integration_generators/third_party.py +144 -0
  169. django_cfg/core/generation/orchestrator.py +285 -0
  170. django_cfg/core/generation/protocols.py +30 -0
  171. django_cfg/core/generation/security_generators/__init__.py +0 -0
  172. django_cfg/core/generation/utility_generators/__init__.py +24 -0
  173. django_cfg/core/generation/utility_generators/email.py +58 -0
  174. django_cfg/core/generation/utility_generators/i18n.py +66 -0
  175. django_cfg/core/generation/utility_generators/limits.py +58 -0
  176. django_cfg/core/generation/utility_generators/logging.py +66 -0
  177. django_cfg/core/generation/utility_generators/security.py +101 -0
  178. django_cfg/core/generation/utils/__init__.py +0 -0
  179. django_cfg/core/generation/utils/helpers.py +32 -0
  180. django_cfg/core/integration/__init__.py +18 -25
  181. django_cfg/core/integration/display/startup.py +146 -133
  182. django_cfg/core/integration/url_integration.py +13 -2
  183. django_cfg/core/services/__init__.py +5 -0
  184. django_cfg/core/services/config_service.py +121 -0
  185. django_cfg/core/state/__init__.py +9 -0
  186. django_cfg/core/state/registry.py +84 -0
  187. django_cfg/core/types/__init__.py +15 -0
  188. django_cfg/core/types/aliases.py +15 -0
  189. django_cfg/core/types/enums.py +49 -0
  190. django_cfg/dashboard/DEBUG_README.md +105 -0
  191. django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
  192. django_cfg/dashboard/__init__.py +24 -0
  193. django_cfg/dashboard/components.py +308 -0
  194. django_cfg/dashboard/debug.py +176 -0
  195. django_cfg/dashboard/management/__init__.py +0 -0
  196. django_cfg/dashboard/management/commands/__init__.py +0 -0
  197. django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
  198. django_cfg/dashboard/sections/__init__.py +1 -0
  199. django_cfg/dashboard/sections/base.py +128 -0
  200. django_cfg/dashboard/sections/commands.py +32 -0
  201. django_cfg/dashboard/sections/overview.py +394 -0
  202. django_cfg/dashboard/sections/stats.py +48 -0
  203. django_cfg/dashboard/sections/system.py +73 -0
  204. django_cfg/management/commands/check_settings.py +6 -2
  205. django_cfg/management/commands/clear_constance.py +6 -1
  206. django_cfg/management/commands/create_token.py +5 -4
  207. django_cfg/management/commands/generate.py +5 -0
  208. django_cfg/management/commands/list_urls.py +7 -2
  209. django_cfg/management/commands/migrate_all.py +6 -2
  210. django_cfg/management/commands/migrator.py +6 -1
  211. django_cfg/management/commands/rundramatiq.py +6 -1
  212. django_cfg/management/commands/rundramatiq_simulator.py +11 -4
  213. django_cfg/management/commands/runserver_ngrok.py +9 -7
  214. django_cfg/management/commands/script.py +25 -21
  215. django_cfg/management/commands/show_config.py +6 -1
  216. django_cfg/management/commands/show_urls.py +8 -3
  217. django_cfg/management/commands/superuser.py +5 -4
  218. django_cfg/management/commands/task_clear.py +8 -3
  219. django_cfg/management/commands/task_status.py +8 -3
  220. django_cfg/management/commands/test_email.py +6 -1
  221. django_cfg/management/commands/test_telegram.py +6 -1
  222. django_cfg/management/commands/test_twilio.py +6 -1
  223. django_cfg/management/commands/tree.py +7 -4
  224. django_cfg/models/__init__.py +88 -3
  225. django_cfg/models/api/__init__.py +27 -0
  226. django_cfg/models/{api.py → api/config.py} +1 -1
  227. django_cfg/models/api/drf/__init__.py +21 -0
  228. django_cfg/models/api/drf/config.py +101 -0
  229. django_cfg/models/api/drf/redoc.py +31 -0
  230. django_cfg/models/api/drf/spectacular.py +129 -0
  231. django_cfg/models/api/drf/swagger.py +59 -0
  232. django_cfg/models/{api_keys.py → api/keys.py} +16 -6
  233. django_cfg/models/{limits.py → api/limits.py} +0 -1
  234. django_cfg/models/base/__init__.py +14 -0
  235. django_cfg/models/django/__init__.py +16 -0
  236. django_cfg/models/{constance.py → django/constance.py} +1 -1
  237. django_cfg/models/{environment.py → django/environment.py} +1 -1
  238. django_cfg/models/infrastructure/__init__.py +17 -0
  239. django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
  240. django_cfg/models/infrastructure/database/__init__.py +22 -0
  241. django_cfg/models/infrastructure/database/config.py +265 -0
  242. django_cfg/models/infrastructure/database/converters.py +91 -0
  243. django_cfg/models/infrastructure/database/parsers.py +96 -0
  244. django_cfg/models/infrastructure/database/routing.py +85 -0
  245. django_cfg/models/infrastructure/database/validators.py +170 -0
  246. django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
  247. django_cfg/models/{security.py → infrastructure/security.py} +2 -2
  248. django_cfg/models/ngrok/__init__.py +11 -0
  249. django_cfg/models/ngrok/auth.py +37 -0
  250. django_cfg/models/ngrok/config.py +77 -0
  251. django_cfg/models/ngrok/tunnel.py +35 -0
  252. django_cfg/models/payments/__init__.py +20 -0
  253. django_cfg/models/payments/api_keys.py +57 -0
  254. django_cfg/models/{payments.py → payments/config.py} +56 -154
  255. django_cfg/models/payments/providers/__init__.py +15 -0
  256. django_cfg/models/payments/providers/base.py +25 -0
  257. django_cfg/models/payments/providers/nowpayments.py +48 -0
  258. django_cfg/models/services/__init__.py +18 -0
  259. django_cfg/models/services/base.py +65 -0
  260. django_cfg/models/{email.py → services/email.py} +1 -1
  261. django_cfg/models/services/telegram.py +172 -0
  262. django_cfg/models/tasks/__init__.py +51 -0
  263. django_cfg/models/tasks/backends.py +250 -0
  264. django_cfg/models/tasks/config.py +314 -0
  265. django_cfg/models/tasks/utils.py +174 -0
  266. django_cfg/modules/base.py +18 -3
  267. django_cfg/modules/django_admin/decorators/actions.py +1 -1
  268. django_cfg/modules/django_admin/decorators/display.py +1 -1
  269. django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
  270. django_cfg/modules/django_cfg_rpc_client/README.md +346 -0
  271. django_cfg/modules/django_cfg_rpc_client/__init__.py +51 -0
  272. django_cfg/modules/django_cfg_rpc_client/client.py +540 -0
  273. django_cfg/modules/django_cfg_rpc_client/config.py +207 -0
  274. django_cfg/modules/django_cfg_rpc_client/dashboard/README.md +517 -0
  275. django_cfg/modules/django_cfg_rpc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
  276. django_cfg/modules/django_cfg_rpc_client/dashboard/__init__.py +11 -0
  277. django_cfg/modules/django_cfg_rpc_client/dashboard/apps.py +22 -0
  278. django_cfg/modules/django_cfg_rpc_client/dashboard/monitor.py +435 -0
  279. django_cfg/modules/django_cfg_rpc_client/dashboard/static/django_cfg_rpc_dashboard/js/dashboard.js +373 -0
  280. django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/base.html +76 -0
  281. django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/dashboard.html +200 -0
  282. django_cfg/modules/django_cfg_rpc_client/dashboard/urls.py +22 -0
  283. django_cfg/modules/django_cfg_rpc_client/dashboard/urls_admin.py +9 -0
  284. django_cfg/modules/django_cfg_rpc_client/dashboard/views.py +251 -0
  285. django_cfg/modules/django_cfg_rpc_client/exceptions.py +201 -0
  286. django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
  287. django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
  288. django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
  289. django_cfg/modules/django_drf_theme/README.md +207 -0
  290. django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
  291. django_cfg/modules/django_drf_theme/__init__.py +23 -0
  292. django_cfg/modules/django_drf_theme/apps.py +15 -0
  293. django_cfg/modules/django_drf_theme/renderers.py +58 -0
  294. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
  295. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
  296. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
  297. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
  298. django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
  299. django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
  300. django_cfg/modules/django_email/__init__.py +14 -0
  301. django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
  302. django_cfg/modules/django_email/utils.py +40 -0
  303. django_cfg/modules/django_health/__init__.py +9 -0
  304. django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
  305. django_cfg/modules/django_llm/llm/client.py +155 -550
  306. django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
  307. django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
  308. django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
  309. django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
  310. django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
  311. django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
  312. django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
  313. django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
  314. django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
  315. django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
  316. django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
  317. django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
  318. django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
  319. django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
  320. django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
  321. django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
  322. django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
  323. django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
  324. django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
  325. django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
  326. django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
  327. django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
  328. django_cfg/modules/django_llm/translator/translator.py +150 -603
  329. django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
  330. django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
  331. django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
  332. django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
  333. django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
  334. django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
  335. django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
  336. django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
  337. django_cfg/modules/django_logging/__init__.py +14 -0
  338. django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
  339. django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
  340. django_cfg/modules/django_ngrok/__init__.py +39 -0
  341. django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
  342. django_cfg/modules/django_rpc_old/POETRY.md +344 -0
  343. django_cfg/modules/django_rpc_old/README.md +397 -0
  344. django_cfg/modules/django_rpc_old/TESTING.md +358 -0
  345. django_cfg/modules/django_rpc_old/__init__.py +39 -0
  346. django_cfg/modules/django_rpc_old/client.py +531 -0
  347. django_cfg/modules/django_rpc_old/config.py +279 -0
  348. django_cfg/modules/django_rpc_old/exceptions.py +172 -0
  349. django_cfg/modules/django_tailwind/README.md +478 -0
  350. django_cfg/modules/django_tailwind/__init__.py +7 -0
  351. django_cfg/modules/django_tailwind/apps.py +10 -0
  352. django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
  353. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
  354. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
  355. django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
  356. django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
  357. django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
  358. django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
  359. django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
  360. django_cfg/modules/django_tasks/__init__.py +29 -0
  361. django_cfg/modules/django_tasks/factory.py +127 -0
  362. django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
  363. django_cfg/modules/django_tasks/settings.py +107 -0
  364. django_cfg/modules/django_telegram/__init__.py +29 -0
  365. django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
  366. django_cfg/modules/django_telegram/utils.py +62 -0
  367. django_cfg/modules/django_twilio/__init__.py +54 -107
  368. django_cfg/modules/django_twilio/_imports.py +30 -0
  369. django_cfg/modules/django_twilio/base.py +192 -0
  370. django_cfg/modules/django_twilio/email_otp.py +227 -0
  371. django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
  372. django_cfg/modules/django_twilio/simple_service.py +1 -2
  373. django_cfg/modules/django_twilio/sms.py +94 -0
  374. django_cfg/modules/django_twilio/twilio_service.py +2 -3
  375. django_cfg/modules/django_twilio/unified.py +310 -0
  376. django_cfg/modules/django_twilio/utils.py +190 -0
  377. django_cfg/modules/django_twilio/whatsapp.py +137 -0
  378. django_cfg/modules/django_unfold/callbacks/base.py +198 -7
  379. django_cfg/modules/django_unfold/callbacks/main.py +102 -10
  380. django_cfg/modules/django_unfold/dashboard.py +65 -43
  381. django_cfg/modules/django_unfold/models/config.py +13 -12
  382. django_cfg/modules/django_unfold/models/navigation.py +8 -3
  383. django_cfg/modules/django_unfold/models/tabs.py +2 -2
  384. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
  385. django_cfg/registry/core.py +24 -26
  386. django_cfg/registry/modules.py +5 -2
  387. django_cfg/registry/services.py +20 -3
  388. django_cfg/registry/third_party.py +8 -8
  389. django_cfg/static/admin/css/dashboard.css +260 -0
  390. django_cfg/static/admin/js/commands.js +171 -0
  391. django_cfg/static/admin/js/dashboard.js +126 -0
  392. django_cfg/templates/admin/components/management_commands.js +375 -0
  393. django_cfg/templates/admin/components/progress_bar.html +18 -23
  394. django_cfg/templates/admin/index.html +48 -20
  395. django_cfg/templates/admin/index_new.html +106 -0
  396. django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
  397. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
  398. django_cfg/templates/admin/sections/commands_section.html +626 -0
  399. django_cfg/templates/admin/sections/overview_section.html +112 -0
  400. django_cfg/templates/admin/sections/stats_section.html +35 -0
  401. django_cfg/templates/admin/sections/system_section.html +99 -0
  402. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
  403. django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
  404. django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
  405. django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
  406. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
  407. django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
  408. django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
  409. django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
  410. django_cfg/templatetags/django_cfg.py +7 -1
  411. django_cfg/utils/smart_defaults.py +4 -4
  412. django_cfg-1.4.0.dist-info/METADATA +920 -0
  413. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/RECORD +424 -195
  414. django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
  415. django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
  416. django_cfg/core/generation.py +0 -621
  417. django_cfg/management/commands/validate_config.py +0 -189
  418. django_cfg/models/database.py +0 -480
  419. django_cfg/models/drf.py +0 -272
  420. django_cfg/models/ngrok.py +0 -122
  421. django_cfg/models/services.py +0 -440
  422. django_cfg/models/tasks.py +0 -550
  423. django_cfg/modules/django_twilio/service.py +0 -942
  424. django_cfg/template_archive/django_sample.zip +0 -0
  425. django_cfg/templates/rest_framework/api.html +0 -12
  426. django_cfg/utils/toolkit.py +0 -703
  427. django_cfg-1.3.13.dist-info/METADATA +0 -1029
  428. /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
  429. /django_cfg/core/{environment.py → environment/detector.py} +0 -0
  430. /django_cfg/models/{cors.py → api/cors.py} +0 -0
  431. /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
  432. /django_cfg/models/{base.py → base/config.py} +0 -0
  433. /django_cfg/models/{cfg.py → base/module.py} +0 -0
  434. /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
  435. /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
  436. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/WHEEL +0 -0
  437. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/entry_points.txt +0 -0
  438. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -21,5 +21,5 @@ class TabConfiguration(BaseModel):
21
21
  """Tab configuration for admin models."""
22
22
  model_config = ConfigDict(validate_assignment=True, extra="forbid")
23
23
 
24
- models: List[str] = Field(..., min_items=1, description="Model names for tab")
25
- items: List[TabItem] = Field(..., min_items=1, description="Tab items")
24
+ models: List[str] = Field(..., min_length=1, description="Model names for tab")
25
+ items: List[TabItem] = Field(..., min_length=1, description="Tab items")
@@ -0,0 +1,102 @@
1
+ {% load i18n unfold %}
2
+
3
+ {% if sidebar_navigation %}
4
+ <div class="h-0 grow overflow-auto" data-simplebar>
5
+ {% for group in sidebar_navigation %}
6
+ {% if group.items %}
7
+ {% has_nav_item_active group.items as has_active %}
8
+
9
+ <div class="hidden mb-2 has-[ol]:has-[li]:block" {% if group.collapsible %}x-data="{navigationOpen: {% if group.open %}true{% elif has_active %}true{% else %}false{% endif %}}"{% endif %}>
10
+ {% if group.separator %}
11
+ <hr class="border-t border-base-200 mx-6 my-2 dark:border-base-800" />
12
+ {% endif %}
13
+
14
+ {% if group.title %}
15
+ <h2 class="font-semibold flex flex-row group items-center mb-1 mx-3 py-1.5 px-3 select-none text-font-important-light text-sm dark:text-font-important-dark {% if group.collapsible %}cursor-pointer hover:text-primary-600 dark:hover:text-primary-500{% endif %}" {% if group.collapsible %}x-on:click="navigationOpen = !navigationOpen"{% endif %}>
16
+ {{ group.title }}
17
+
18
+ {% if group.collapsible %}
19
+ <span class="material-symbols-outlined ml-auto transition-all group-hover:text-primary-600 dark:group-hover:text-primary-500" x-bind:class="{'rotate-90': navigationOpen}">
20
+ chevron_right
21
+ </span>
22
+ {% endif %}
23
+ </h2>
24
+ {% endif %}
25
+
26
+ <ol class="flex flex-col gap-1 px-6" {% if group.collapsible %}x-show="navigationOpen"{% endif %}>
27
+ {% for item in group.items %}
28
+ {% if item.has_permission %}
29
+ <li>
30
+ <a href="{% if item.link_callback %}{{ item.link_callback }}{% else %}{{ item.link }}{% endif %}" class="flex h-[38px] items-center -mx-3 px-3 rounded-default hover:text-primary-600 dark:hover:text-primary-500 {% if item.active %}bg-base-100 font-semibold text-primary-600 dark:bg-white/[.06] dark:text-primary-500{% endif %}">
31
+ {% if item.icon %}
32
+ <span class="material-symbols-outlined md-18 mr-3 w-[18px]">
33
+ {{ item.icon }}
34
+ </span>
35
+ {% endif %}
36
+
37
+ <span class="text-sm">
38
+ {{ item.title|safe }}
39
+ </span>
40
+
41
+ {% if item.badge %}
42
+ <span class="bg-red-600 font-semibold ml-2 px-1 relative rounded-xs text-xs text-white">
43
+ {% if item.badge_callback %}
44
+ {{ item.badge_callback }}
45
+ {% else %}
46
+ {{ item.badge }}
47
+ {% endif %}
48
+ </span>
49
+ {% endif %}
50
+ </a>
51
+ </li>
52
+ {% endif %}
53
+ {% endfor %}
54
+ </ol>
55
+ </div>
56
+ {% endif %}
57
+ {% endfor %}
58
+ </div>
59
+
60
+ {% if sidebar_show_all_applications and app_list|length > 0 %}
61
+ <div class="mt-auto" x-data="{ openAllApplications: false }">
62
+ <a class="cursor-pointer flex items-center h-[64px] px-6 py-3 text-sm dark:text-font-default-dark hover:text-primary-600 dark:hover:text-primary-500" x-on:click="openAllApplications = !openAllApplications">
63
+ <span class="material-symbols-outlined md-18 mr-3">
64
+ apps
65
+ </span>
66
+
67
+ <span>
68
+ {% trans "All applications" %}
69
+ </span>
70
+ </a>
71
+
72
+ <div class="absolute bottom-0 left-0 right-0 top-0 z-50 md:left-72" x-cloak x-show="openAllApplications">
73
+ <div class="absolute bg-base-900/80 backdrop-blur-xs bottom-0 left-0 right-0 top-0 z-10 w-screen"></div>
74
+
75
+ <div class="bg-white flex flex-col h-full overflow-x-hidden overflow-y-auto py-5 px-8 relative text-sm w-80 z-20 dark:bg-base-900 dark:border-r dark:border-base-800" x-on:click.outside="openAllApplications = false" x-on:keydown.escape.window="openAllApplications = false" data-simplebar>
76
+ {% for app in app_list %}
77
+ <div class="mb-6 last:mb-0">
78
+ <h2 class="mb-4 font-semibold text-font-important-light truncate dark:text-font-important-dark">
79
+ {{ app.name }}
80
+ </h2>
81
+
82
+ <ul>
83
+ {% for model in app.models %}
84
+ <li class="block mb-4 last:mb-0">
85
+ <a href="{{ model.admin_url }}" class="block truncate hover:text-primary-600 dark:hover:text-primary-500">
86
+ {{ model.name }}
87
+ </a>
88
+ </li>
89
+ {% endfor %}
90
+ </ul>
91
+ </div>
92
+ {% endfor %}
93
+ </div>
94
+ </div>
95
+ </div>
96
+ {% endif %}
97
+ {% else %}
98
+ <p>
99
+ {% trans "You don’t have permission to view or edit anything." as error_message %}
100
+ {% include "unfold/helpers/messages/error.html" with error=error_message %}
101
+ </p>
102
+ {% endif %}
@@ -18,38 +18,38 @@ CORE_REGISTRY = {
18
18
  "DjangoIntegration": ("django_cfg.core.integration", "DjangoIntegration"),
19
19
 
20
20
  # Database models
21
- "DatabaseConfig": ("django_cfg.models.database", "DatabaseConfig"),
22
-
23
- # Cache models
24
- "CacheConfig": ("django_cfg.models.cache", "CacheConfig"),
25
-
21
+ "DatabaseConfig": ("django_cfg.models.infrastructure.database", "DatabaseConfig"),
22
+
23
+ # Cache models
24
+ "CacheConfig": ("django_cfg.models.infrastructure.cache", "CacheConfig"),
25
+
26
26
  # Security models
27
- "SecuritySettings": ("django_cfg.models.security", "SecuritySettings"),
28
-
27
+ "SecurityConfig": ("django_cfg.models.infrastructure.security", "SecurityConfig"),
28
+
29
29
  # Logging models
30
- "LoggingConfig": ("django_cfg.models.logging", "LoggingConfig"),
31
-
30
+ "LoggingConfig": ("django_cfg.models.infrastructure.logging", "LoggingConfig"),
31
+
32
32
  # Environment models
33
- "EnvironmentConfig": ("django_cfg.models.environment", "EnvironmentConfig"),
34
-
33
+ "EnvironmentConfig": ("django_cfg.models.django.environment", "EnvironmentConfig"),
34
+
35
35
  # Limits models
36
- "LimitsConfig": ("django_cfg.models.limits", "LimitsConfig"),
37
-
36
+ "LimitsConfig": ("django_cfg.models.api.limits", "LimitsConfig"),
37
+
38
38
  # API Keys models
39
- "ApiKeys": ("django_cfg.models.api_keys", "ApiKeys"),
40
-
39
+ "ApiKeys": ("django_cfg.models.api.keys", "ApiKeys"),
40
+
41
41
  # JWT models
42
- "JWTConfig": ("django_cfg.models.jwt", "JWTConfig"),
42
+ "JWTConfig": ("django_cfg.models.api.jwt", "JWTConfig"),
43
43
 
44
44
  # Task and queue models
45
- "TaskConfig": ("django_cfg.models.tasks", "TaskConfig"),
46
- "DramatiqConfig": ("django_cfg.models.tasks", "DramatiqConfig"),
47
-
45
+ "TaskConfig": ("django_cfg.models.tasks.config", "TaskConfig"),
46
+ "DramatiqConfig": ("django_cfg.models.tasks.config", "DramatiqConfig"),
47
+
48
48
  # Payment system models (BaseCfgAutoModule)
49
- "PaymentsConfig": ("django_cfg.models.payments", "PaymentsConfig"),
50
- "ProviderAPIKeysConfig": ("django_cfg.models.payments", "ProviderAPIKeysConfig"),
51
- "BaseProviderConfig": ("django_cfg.models.payments", "BaseProviderConfig"),
52
- "NowPaymentsProviderConfig": ("django_cfg.models.payments", "NowPaymentsProviderConfig"),
49
+ "PaymentsConfig": ("django_cfg.models.payments.config", "PaymentsConfig"),
50
+ "ProviderAPIKeysConfig": ("django_cfg.models.payments.api_keys", "ProviderAPIKeysConfig"),
51
+ "BaseProviderConfig": ("django_cfg.models.payments.providers", "BaseProviderConfig"),
52
+ "NowPaymentsProviderConfig": ("django_cfg.models.payments.providers", "NowPaymentsProviderConfig"),
53
53
 
54
54
  # Pagination classes
55
55
  "DefaultPagination": ("django_cfg.middleware.pagination", "DefaultPagination"),
@@ -60,9 +60,7 @@ CORE_REGISTRY = {
60
60
 
61
61
  # Utils
62
62
  "version_check": ("django_cfg.utils.version_check", "version_check"),
63
- "toolkit": ("django_cfg.utils.toolkit", "toolkit"),
64
- "ConfigToolkit": ("django_cfg.utils.toolkit", "ConfigToolkit"),
65
-
63
+
66
64
  # Routing
67
65
  "DynamicRouter": ("django_cfg.routing.routers", "DynamicRouter"),
68
66
  "health_callback": ("django_cfg.routing.callbacks", "health_callback"),
@@ -6,10 +6,13 @@ MODULES_REGISTRY = {
6
6
  # URL integration
7
7
  "add_django_cfg_urls": ("django_cfg.core.integration", "add_django_cfg_urls"),
8
8
  "get_django_cfg_urls_info": ("django_cfg.core.integration", "get_django_cfg_urls_info"),
9
-
9
+
10
10
  # Configuration utilities
11
11
  "set_current_config": ("django_cfg.core.config", "set_current_config"),
12
-
12
+
13
+ # RPC Client module
14
+ "DjangoCfgRPCConfig": ("django_cfg.modules.django_cfg_rpc_client.config", "DjangoCfgRPCConfig"),
15
+
13
16
  # Import/Export integration (simple re-exports)
14
17
  "ImportForm": ("django_cfg.modules.django_import_export", "ImportForm"),
15
18
  "ExportForm": ("django_cfg.modules.django_import_export", "ExportForm"),
@@ -19,8 +19,25 @@ SERVICES_REGISTRY = {
19
19
  "TwilioConfig": ("django_cfg.modules.django_twilio.models", "TwilioConfig"),
20
20
  "TwilioVerifyConfig": ("django_cfg.modules.django_twilio.models", "TwilioVerifyConfig"),
21
21
  "TwilioChannelType": ("django_cfg.modules.django_twilio.models", "TwilioChannelType"),
22
-
22
+
23
+ # Ngrok services (simplified flat config)
24
+ "NgrokConfig": ("django_cfg.models.ngrok", "NgrokConfig"),
25
+ "DjangoNgrok": ("django_cfg.modules.django_ngrok", "DjangoNgrok"),
26
+ "NgrokManager": ("django_cfg.modules.django_ngrok", "NgrokManager"),
27
+ "NgrokError": ("django_cfg.modules.django_ngrok", "NgrokError"),
28
+ "get_ngrok_service": ("django_cfg.modules.django_ngrok", "get_ngrok_service"),
29
+ "start_tunnel": ("django_cfg.modules.django_ngrok", "start_tunnel"),
30
+ "stop_tunnel": ("django_cfg.modules.django_ngrok", "stop_tunnel"),
31
+ "get_tunnel_url": ("django_cfg.modules.django_ngrok", "get_tunnel_url"),
32
+ "get_webhook_url": ("django_cfg.modules.django_ngrok", "get_webhook_url"),
33
+ "get_api_url": ("django_cfg.modules.django_ngrok", "get_api_url"),
34
+ "get_tunnel_url_from_env": ("django_cfg.modules.django_ngrok", "get_tunnel_url_from_env"),
35
+ "get_ngrok_host_from_env": ("django_cfg.modules.django_ngrok", "get_ngrok_host_from_env"),
36
+ "is_ngrok_available_from_env": ("django_cfg.modules.django_ngrok", "is_ngrok_available_from_env"),
37
+ "is_tunnel_active": ("django_cfg.modules.django_ngrok", "is_tunnel_active"),
38
+ "get_effective_tunnel_url": ("django_cfg.modules.django_ngrok", "get_effective_tunnel_url"),
39
+
23
40
  # Logging services
24
- "DjangoLogger": ("django_cfg.modules.django_logger", "DjangoLogger"),
25
- "get_logger": ("django_cfg.modules.django_logger", "get_logger"),
41
+ "DjangoLogger": ("django_cfg.modules.django_logging", "DjangoLogger"),
42
+ "get_logger": ("django_cfg.modules.django_logging", "get_logger"),
26
43
  }
@@ -4,7 +4,7 @@ Third-party integrations registry.
4
4
 
5
5
  THIRD_PARTY_REGISTRY = {
6
6
  # Django Revolution
7
- "RevolutionConfig": ("django_cfg.models.revolution", "RevolutionConfig"),
7
+ "RevolutionConfig": ("django_cfg.models.django.revolution", "RevolutionConfig"),
8
8
  "APIZone": ("django_revolution.config", "ZoneModel"),
9
9
  "ZoneModel": ("django_revolution.config", "ZoneModel"),
10
10
  "ZoneConfig": ("django_revolution.app_config", "ZoneConfig"),
@@ -32,14 +32,14 @@ THIRD_PARTY_REGISTRY = {
32
32
  "TabItem": ("django_cfg.modules.django_unfold.models.tabs", "TabItem"),
33
33
 
34
34
  # Django REST Framework
35
- "DRFConfig": ("django_cfg.models.drf", "DRFConfig"),
36
- "SpectacularConfig": ("django_cfg.models.drf", "SpectacularConfig"),
37
- "SwaggerUISettings": ("django_cfg.models.drf", "SwaggerUISettings"),
38
- "RedocUISettings": ("django_cfg.models.drf", "RedocUISettings"),
39
-
35
+ "DRFConfig": ("django_cfg.models.api.drf", "DRFConfig"),
36
+ "SpectacularConfig": ("django_cfg.models.api.drf", "SpectacularConfig"),
37
+ "SwaggerUISettings": ("django_cfg.models.api.drf", "SwaggerUISettings"),
38
+ "RedocUISettings": ("django_cfg.models.api.drf", "RedocUISettings"),
39
+
40
40
  # Constance
41
- "ConstanceConfig": ("django_cfg.models.constance", "ConstanceConfig"),
42
- "ConstanceField": ("django_cfg.models.constance", "ConstanceField"),
41
+ "ConstanceConfig": ("django_cfg.models.django.constance", "ConstanceConfig"),
42
+ "ConstanceField": ("django_cfg.models.django.constance", "ConstanceField"),
43
43
 
44
44
  # Ngrok
45
45
  "NgrokConfig": ("django_cfg.models.ngrok", "NgrokConfig"),
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Django CFG Dashboard Styles
3
+ *
4
+ * Theme-aware styling for dashboard components
5
+ */
6
+
7
+ /* =============================================================================
8
+ Dashboard Tab Styles
9
+ ============================================================================= */
10
+
11
+ .tab-content {
12
+ display: none;
13
+ animation: fadeIn 0.3s ease-in-out;
14
+ }
15
+
16
+ .tab-content.active {
17
+ display: block;
18
+ }
19
+
20
+ #dashboard-tabs button {
21
+ cursor: pointer;
22
+ transition: all 0.2s ease-in-out;
23
+ }
24
+
25
+ @keyframes fadeIn {
26
+ from {
27
+ opacity: 0;
28
+ transform: translateY(10px);
29
+ }
30
+ to {
31
+ opacity: 1;
32
+ transform: translateY(0);
33
+ }
34
+ }
35
+
36
+ /* =============================================================================
37
+ Theme Cards - Cross-theme Compatible
38
+ ============================================================================= */
39
+
40
+ .theme-card {
41
+ background-color: rgba(255, 255, 255, 0.2) !important;
42
+ backdrop-filter: blur(10px) !important;
43
+ color: #111827 !important;
44
+ border-color: rgba(229, 231, 235, 0.6) !important;
45
+ border-radius: 10px !important;
46
+ transition: all 0.2s ease;
47
+ }
48
+
49
+ html.dark .theme-card {
50
+ background-color: rgba(31, 41, 55, 0.2) !important;
51
+ backdrop-filter: blur(10px) !important;
52
+ color: white !important;
53
+ border-color: rgba(55, 65, 81, 0.6) !important;
54
+ border-radius: 10px !important;
55
+ }
56
+
57
+ .theme-text {
58
+ color: #111827 !important;
59
+ }
60
+
61
+ html.dark .theme-text {
62
+ color: white !important;
63
+ }
64
+
65
+ .theme-border {
66
+ border-color: rgba(229, 231, 235, 0.6) !important;
67
+ }
68
+
69
+ html.dark .theme-border {
70
+ border-color: rgba(55, 65, 81, 0.6) !important;
71
+ }
72
+
73
+ /* =============================================================================
74
+ Grid Layout
75
+ ============================================================================= */
76
+
77
+ .overview-grid {
78
+ display: grid !important;
79
+ grid-template-columns: 1fr !important;
80
+ }
81
+
82
+ @media (min-width: 1280px) {
83
+ .overview-grid {
84
+ grid-template-columns: 2fr 1fr !important;
85
+ }
86
+ }
87
+
88
+ /* =============================================================================
89
+ Tab Navigation Styling
90
+ ============================================================================= */
91
+
92
+ #dashboard-tabs {
93
+ border-bottom: 2px solid #e5e7eb !important;
94
+ }
95
+
96
+ html.dark #dashboard-tabs {
97
+ border-bottom-color: #374151 !important;
98
+ }
99
+
100
+ #dashboard-tabs button {
101
+ background-color: #f3f4f6 !important;
102
+ color: #6b7280 !important;
103
+ border-bottom: 2px solid transparent !important;
104
+ transition: all 0.2s ease !important;
105
+ }
106
+
107
+ html.dark #dashboard-tabs button {
108
+ background-color: #374151 !important;
109
+ color: #9ca3af !important;
110
+ }
111
+
112
+ #dashboard-tabs button:hover {
113
+ background-color: #e5e7eb !important;
114
+ color: #374151 !important;
115
+ }
116
+
117
+ html.dark #dashboard-tabs button:hover {
118
+ background-color: #4b5563 !important;
119
+ color: #d1d5db !important;
120
+ }
121
+
122
+ /* Active tab */
123
+ #dashboard-tabs button.active,
124
+ #dashboard-tabs button[class*="bg-blue"] {
125
+ background-color: #2563eb !important;
126
+ color: white !important;
127
+ border-bottom-color: #2563eb !important;
128
+ }
129
+
130
+ html.dark #dashboard-tabs button.active,
131
+ html.dark #dashboard-tabs button[class*="bg-blue"] {
132
+ background-color: #3b82f6 !important;
133
+ color: white !important;
134
+ border-bottom-color: #3b82f6 !important;
135
+ }
136
+
137
+ /* =============================================================================
138
+ Universal Card Borders - Transparent Cross-theme
139
+ ============================================================================= */
140
+
141
+ .card-border,
142
+ .border-base-200,
143
+ [class*="border-base-200"],
144
+ [class*="dark:border-base-700"] {
145
+ border-color: rgba(229, 231, 235, 0.6) !important;
146
+ }
147
+
148
+ html.dark .card-border,
149
+ html.dark .border-base-200,
150
+ html.dark [class*="border-base-200"],
151
+ html.dark [class*="dark:border-base-700"] {
152
+ border-color: rgba(55, 65, 81, 0.6) !important;
153
+ }
154
+
155
+ /* =============================================================================
156
+ Icon Spacing Defaults
157
+ ============================================================================= */
158
+
159
+ .theme-card .material-icons:not(.no-margin) {
160
+ margin-right: 0.75rem !important; /* 12px default spacing */
161
+ }
162
+
163
+ .theme-card .flex.items-center .material-icons {
164
+ margin-right: 0.75rem !important;
165
+ }
166
+
167
+ .theme-card .status-badge .material-icons {
168
+ margin-right: 0.25rem !important; /* 4px for badges */
169
+ }
170
+
171
+ .theme-card button .material-icons,
172
+ .theme-card a .material-icons {
173
+ margin-right: 0.5rem !important;
174
+ }
175
+
176
+ /* =============================================================================
177
+ Section Specific Styles
178
+ ============================================================================= */
179
+
180
+ .section-header {
181
+ display: flex;
182
+ align-items: center;
183
+ justify-content: space-between;
184
+ margin-bottom: 1.5rem;
185
+ }
186
+
187
+ .section-title {
188
+ font-size: 1.5rem;
189
+ font-weight: 600;
190
+ }
191
+
192
+ .section-subtitle {
193
+ color: #6b7280;
194
+ margin-top: 0.5rem;
195
+ }
196
+
197
+ html.dark .section-subtitle {
198
+ color: #9ca3af;
199
+ }
200
+
201
+ /* =============================================================================
202
+ Component Styles
203
+ ============================================================================= */
204
+
205
+ .metric-card {
206
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
207
+ }
208
+
209
+ .metric-card:hover {
210
+ transform: translateY(-2px);
211
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
212
+ }
213
+
214
+ .stat-item {
215
+ display: flex;
216
+ align-items: center;
217
+ padding: 1rem;
218
+ border-radius: 0.5rem;
219
+ transition: background-color 0.2s ease;
220
+ }
221
+
222
+ .stat-item:hover {
223
+ background-color: rgba(0, 0, 0, 0.02);
224
+ }
225
+
226
+ html.dark .stat-item:hover {
227
+ background-color: rgba(255, 255, 255, 0.05);
228
+ }
229
+
230
+ /* =============================================================================
231
+ Utilities
232
+ ============================================================================= */
233
+
234
+ .status-indicator {
235
+ display: inline-flex;
236
+ align-items: center;
237
+ gap: 0.5rem;
238
+ }
239
+
240
+ .status-dot {
241
+ width: 0.5rem;
242
+ height: 0.5rem;
243
+ border-radius: 9999px;
244
+ }
245
+
246
+ .status-dot.success {
247
+ background-color: #10b981;
248
+ }
249
+
250
+ .status-dot.warning {
251
+ background-color: #f59e0b;
252
+ }
253
+
254
+ .status-dot.error {
255
+ background-color: #ef4444;
256
+ }
257
+
258
+ .status-dot.info {
259
+ background-color: #3b82f6;
260
+ }