django-cfg 1.2.31__py3-none-any.whl → 1.3.3__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 (264) 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 -10
  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 +526 -222
  9. django_cfg/apps/payments/admin/filters.py +306 -199
  10. django_cfg/apps/payments/admin/payments_admin.py +465 -70
  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/cleanup_expired_data.py +419 -0
  39. django_cfg/apps/payments/management/commands/currency_stats.py +297 -225
  40. django_cfg/apps/payments/management/commands/manage_currencies.py +303 -151
  41. django_cfg/apps/payments/management/commands/manage_providers.py +333 -160
  42. django_cfg/apps/payments/management/commands/process_pending_payments.py +357 -0
  43. django_cfg/apps/payments/management/commands/test_providers.py +434 -0
  44. django_cfg/apps/payments/middleware/__init__.py +3 -1
  45. django_cfg/apps/payments/middleware/api_access.py +329 -222
  46. django_cfg/apps/payments/middleware/rate_limiting.py +342 -152
  47. django_cfg/apps/payments/middleware/usage_tracking.py +249 -240
  48. django_cfg/apps/payments/migrations/0001_initial.py +708 -536
  49. django_cfg/apps/payments/models/__init__.py +13 -18
  50. django_cfg/apps/payments/models/api_keys.py +121 -43
  51. django_cfg/apps/payments/models/balance.py +153 -115
  52. django_cfg/apps/payments/models/base.py +68 -15
  53. django_cfg/apps/payments/models/currencies.py +172 -148
  54. django_cfg/apps/payments/models/managers/__init__.py +44 -0
  55. django_cfg/apps/payments/models/managers/api_key_managers.py +329 -0
  56. django_cfg/apps/payments/models/managers/balance_managers.py +599 -0
  57. django_cfg/apps/payments/models/managers/currency_managers.py +385 -0
  58. django_cfg/apps/payments/models/managers/payment_managers.py +511 -0
  59. django_cfg/apps/payments/models/managers/subscription_managers.py +641 -0
  60. django_cfg/apps/payments/models/payments.py +235 -285
  61. django_cfg/apps/payments/models/subscriptions.py +257 -177
  62. django_cfg/apps/payments/models/tariffs.py +147 -40
  63. django_cfg/apps/payments/services/__init__.py +209 -56
  64. django_cfg/apps/payments/services/cache/__init__.py +6 -6
  65. django_cfg/apps/payments/services/cache_service/__init__.py +143 -0
  66. django_cfg/apps/payments/services/cache_service/api_key_cache.py +37 -0
  67. django_cfg/apps/payments/services/{cache/base.py → cache_service/interfaces.py} +3 -1
  68. django_cfg/apps/payments/services/cache_service/keys.py +49 -0
  69. django_cfg/apps/payments/services/cache_service/rate_limit_cache.py +47 -0
  70. django_cfg/apps/payments/services/cache_service/simple_cache.py +101 -0
  71. django_cfg/apps/payments/services/core/__init__.py +10 -6
  72. django_cfg/apps/payments/services/core/balance_service.py +435 -360
  73. django_cfg/apps/payments/services/core/base.py +166 -0
  74. django_cfg/apps/payments/services/core/currency_service.py +478 -0
  75. django_cfg/apps/payments/services/core/payment_service.py +371 -465
  76. django_cfg/apps/payments/services/core/subscription_service.py +425 -481
  77. django_cfg/apps/payments/services/core/webhook_service.py +410 -0
  78. django_cfg/apps/payments/services/integrations/__init__.py +29 -0
  79. django_cfg/apps/payments/services/integrations/ngrok_service.py +47 -0
  80. django_cfg/apps/payments/services/integrations/providers_config.py +107 -0
  81. django_cfg/apps/payments/services/providers/__init__.py +9 -14
  82. django_cfg/apps/payments/services/providers/base.py +234 -174
  83. django_cfg/apps/payments/services/providers/nowpayments.py +478 -0
  84. django_cfg/apps/payments/services/providers/registry.py +367 -301
  85. django_cfg/apps/payments/services/types/__init__.py +78 -0
  86. django_cfg/apps/payments/services/types/data.py +177 -0
  87. django_cfg/apps/payments/services/types/requests.py +150 -0
  88. django_cfg/apps/payments/services/types/responses.py +156 -0
  89. django_cfg/apps/payments/services/types/webhooks.py +232 -0
  90. django_cfg/apps/payments/signals/__init__.py +33 -8
  91. django_cfg/apps/payments/signals/api_key_signals.py +210 -129
  92. django_cfg/apps/payments/signals/balance_signals.py +174 -0
  93. django_cfg/apps/payments/signals/payment_signals.py +128 -103
  94. django_cfg/apps/payments/signals/subscription_signals.py +194 -142
  95. django_cfg/apps/payments/static/payments/css/components.css +380 -0
  96. django_cfg/apps/payments/static/payments/css/dashboard.css +188 -0
  97. django_cfg/apps/payments/static/payments/js/components.js +545 -0
  98. django_cfg/apps/payments/static/payments/js/utils.js +412 -0
  99. django_cfg/apps/payments/templatetags/__init__.py +1 -1
  100. django_cfg/apps/payments/templatetags/payment_tags.py +466 -0
  101. django_cfg/apps/payments/urls.py +45 -48
  102. django_cfg/apps/payments/urls_admin.py +33 -42
  103. django_cfg/apps/payments/views/api/__init__.py +101 -0
  104. django_cfg/apps/payments/views/api/api_keys.py +387 -0
  105. django_cfg/apps/payments/views/api/balances.py +381 -0
  106. django_cfg/apps/payments/views/api/base.py +298 -0
  107. django_cfg/apps/payments/views/api/currencies.py +402 -0
  108. django_cfg/apps/payments/views/api/payments.py +415 -0
  109. django_cfg/apps/payments/views/api/subscriptions.py +475 -0
  110. django_cfg/apps/payments/views/api/webhooks.py +476 -0
  111. django_cfg/apps/payments/views/serializers/__init__.py +99 -0
  112. django_cfg/apps/payments/views/serializers/api_keys.py +424 -0
  113. django_cfg/apps/payments/views/serializers/balances.py +300 -0
  114. django_cfg/apps/payments/views/serializers/currencies.py +335 -0
  115. django_cfg/apps/payments/views/serializers/payments.py +387 -0
  116. django_cfg/apps/payments/views/serializers/subscriptions.py +429 -0
  117. django_cfg/apps/payments/views/serializers/webhooks.py +137 -0
  118. django_cfg/config.py +1 -1
  119. django_cfg/core/config.py +40 -4
  120. django_cfg/core/generation.py +25 -4
  121. django_cfg/core/integration/README.md +363 -0
  122. django_cfg/core/integration/__init__.py +47 -0
  123. django_cfg/core/integration/commands_collector.py +239 -0
  124. django_cfg/core/integration/display/__init__.py +15 -0
  125. django_cfg/core/integration/display/base.py +157 -0
  126. django_cfg/core/integration/display/ngrok.py +164 -0
  127. django_cfg/core/integration/display/startup.py +815 -0
  128. django_cfg/core/integration/url_integration.py +123 -0
  129. django_cfg/core/integration/version_checker.py +160 -0
  130. django_cfg/management/commands/auto_generate.py +4 -0
  131. django_cfg/management/commands/check_settings.py +6 -0
  132. django_cfg/management/commands/clear_constance.py +5 -2
  133. django_cfg/management/commands/create_token.py +6 -0
  134. django_cfg/management/commands/list_urls.py +6 -0
  135. django_cfg/management/commands/migrate_all.py +6 -0
  136. django_cfg/management/commands/migrator.py +3 -0
  137. django_cfg/management/commands/rundramatiq.py +6 -0
  138. django_cfg/management/commands/runserver_ngrok.py +51 -29
  139. django_cfg/management/commands/script.py +6 -0
  140. django_cfg/management/commands/show_config.py +12 -2
  141. django_cfg/management/commands/show_urls.py +4 -0
  142. django_cfg/management/commands/superuser.py +6 -0
  143. django_cfg/management/commands/task_clear.py +4 -1
  144. django_cfg/management/commands/task_status.py +3 -1
  145. django_cfg/management/commands/test_email.py +3 -0
  146. django_cfg/management/commands/test_telegram.py +6 -0
  147. django_cfg/management/commands/test_twilio.py +6 -0
  148. django_cfg/management/commands/tree.py +6 -0
  149. django_cfg/management/commands/validate_config.py +155 -149
  150. django_cfg/models/constance.py +31 -11
  151. django_cfg/models/payments.py +175 -492
  152. django_cfg/modules/django_logger.py +160 -146
  153. django_cfg/modules/django_unfold/dashboard.py +64 -16
  154. django_cfg/registry/core.py +1 -0
  155. django_cfg/template_archive/django_sample.zip +0 -0
  156. django_cfg/utils/smart_defaults.py +227 -570
  157. django_cfg/utils/toolkit.py +51 -11
  158. {django_cfg-1.2.31.dist-info → django_cfg-1.3.3.dist-info}/METADATA +4 -1
  159. {django_cfg-1.2.31.dist-info → django_cfg-1.3.3.dist-info}/RECORD +162 -185
  160. django_cfg/apps/payments/__init__.py +0 -8
  161. django_cfg/apps/payments/admin/tariffs_admin.py +0 -199
  162. django_cfg/apps/payments/config/module.py +0 -70
  163. django_cfg/apps/payments/config/providers.py +0 -105
  164. django_cfg/apps/payments/config/settings.py +0 -96
  165. django_cfg/apps/payments/config/utils.py +0 -52
  166. django_cfg/apps/payments/decorators.py +0 -291
  167. django_cfg/apps/payments/management/commands/README.md +0 -146
  168. django_cfg/apps/payments/managers/__init__.py +0 -23
  169. django_cfg/apps/payments/managers/api_key_manager.py +0 -35
  170. django_cfg/apps/payments/managers/balance_manager.py +0 -361
  171. django_cfg/apps/payments/managers/currency_manager.py +0 -306
  172. django_cfg/apps/payments/managers/payment_manager.py +0 -192
  173. django_cfg/apps/payments/managers/subscription_manager.py +0 -37
  174. django_cfg/apps/payments/managers/tariff_manager.py +0 -29
  175. django_cfg/apps/payments/migrations/0002_network_providercurrency_and_more.py +0 -241
  176. django_cfg/apps/payments/migrations/0003_add_usd_rate_cache.py +0 -30
  177. django_cfg/apps/payments/models/events.py +0 -73
  178. django_cfg/apps/payments/serializers/__init__.py +0 -57
  179. django_cfg/apps/payments/serializers/api_keys.py +0 -51
  180. django_cfg/apps/payments/serializers/balance.py +0 -59
  181. django_cfg/apps/payments/serializers/currencies.py +0 -63
  182. django_cfg/apps/payments/serializers/payments.py +0 -62
  183. django_cfg/apps/payments/serializers/subscriptions.py +0 -71
  184. django_cfg/apps/payments/serializers/tariffs.py +0 -56
  185. django_cfg/apps/payments/services/billing/__init__.py +0 -8
  186. django_cfg/apps/payments/services/cache/simple_cache.py +0 -135
  187. django_cfg/apps/payments/services/core/fallback_service.py +0 -432
  188. django_cfg/apps/payments/services/internal_types.py +0 -461
  189. django_cfg/apps/payments/services/middleware/__init__.py +0 -8
  190. django_cfg/apps/payments/services/monitoring/__init__.py +0 -22
  191. django_cfg/apps/payments/services/monitoring/api_schemas.py +0 -76
  192. django_cfg/apps/payments/services/monitoring/provider_health.py +0 -372
  193. django_cfg/apps/payments/services/providers/cryptapi/__init__.py +0 -4
  194. django_cfg/apps/payments/services/providers/cryptapi/config.py +0 -8
  195. django_cfg/apps/payments/services/providers/cryptapi/models.py +0 -192
  196. django_cfg/apps/payments/services/providers/cryptapi/provider.py +0 -439
  197. django_cfg/apps/payments/services/providers/cryptomus/__init__.py +0 -4
  198. django_cfg/apps/payments/services/providers/cryptomus/models.py +0 -176
  199. django_cfg/apps/payments/services/providers/cryptomus/provider.py +0 -429
  200. django_cfg/apps/payments/services/providers/cryptomus/provider_v2.py +0 -564
  201. django_cfg/apps/payments/services/providers/models/__init__.py +0 -34
  202. django_cfg/apps/payments/services/providers/models/currencies.py +0 -190
  203. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +0 -4
  204. django_cfg/apps/payments/services/providers/nowpayments/models.py +0 -196
  205. django_cfg/apps/payments/services/providers/nowpayments/provider.py +0 -380
  206. django_cfg/apps/payments/services/providers/stripe/__init__.py +0 -4
  207. django_cfg/apps/payments/services/providers/stripe/models.py +0 -184
  208. django_cfg/apps/payments/services/providers/stripe/provider.py +0 -109
  209. django_cfg/apps/payments/services/security/__init__.py +0 -34
  210. django_cfg/apps/payments/services/security/error_handler.py +0 -635
  211. django_cfg/apps/payments/services/security/payment_notifications.py +0 -342
  212. django_cfg/apps/payments/services/security/webhook_validator.py +0 -474
  213. django_cfg/apps/payments/static/payments/css/payments.css +0 -340
  214. django_cfg/apps/payments/static/payments/js/notifications.js +0 -202
  215. django_cfg/apps/payments/static/payments/js/payment-utils.js +0 -318
  216. django_cfg/apps/payments/static/payments/js/theme.js +0 -86
  217. django_cfg/apps/payments/tasks/__init__.py +0 -12
  218. django_cfg/apps/payments/tasks/webhook_processing.py +0 -177
  219. django_cfg/apps/payments/templates/admin/payments/currency/change_list.html +0 -50
  220. django_cfg/apps/payments/templates/payments/base.html +0 -182
  221. django_cfg/apps/payments/templates/payments/components/payment_card.html +0 -201
  222. django_cfg/apps/payments/templates/payments/components/payment_qr_code.html +0 -109
  223. django_cfg/apps/payments/templates/payments/components/progress_bar.html +0 -43
  224. django_cfg/apps/payments/templates/payments/components/provider_stats.html +0 -40
  225. django_cfg/apps/payments/templates/payments/components/status_badge.html +0 -34
  226. django_cfg/apps/payments/templates/payments/components/status_overview.html +0 -148
  227. django_cfg/apps/payments/templates/payments/dashboard.html +0 -258
  228. django_cfg/apps/payments/templates/payments/dashboard_simple_test.html +0 -35
  229. django_cfg/apps/payments/templates/payments/payment_create.html +0 -579
  230. django_cfg/apps/payments/templates/payments/payment_detail.html +0 -373
  231. django_cfg/apps/payments/templates/payments/payment_list.html +0 -354
  232. django_cfg/apps/payments/templates/payments/stats.html +0 -261
  233. django_cfg/apps/payments/templates/payments/test.html +0 -213
  234. django_cfg/apps/payments/templatetags/payments_tags.py +0 -315
  235. django_cfg/apps/payments/utils/__init__.py +0 -43
  236. django_cfg/apps/payments/utils/billing_utils.py +0 -342
  237. django_cfg/apps/payments/utils/config_utils.py +0 -239
  238. django_cfg/apps/payments/utils/middleware_utils.py +0 -228
  239. django_cfg/apps/payments/utils/validation_utils.py +0 -94
  240. django_cfg/apps/payments/views/__init__.py +0 -63
  241. django_cfg/apps/payments/views/api_key_views.py +0 -164
  242. django_cfg/apps/payments/views/balance_views.py +0 -75
  243. django_cfg/apps/payments/views/currency_views.py +0 -122
  244. django_cfg/apps/payments/views/payment_views.py +0 -149
  245. django_cfg/apps/payments/views/subscription_views.py +0 -135
  246. django_cfg/apps/payments/views/tariff_views.py +0 -131
  247. django_cfg/apps/payments/views/templates/__init__.py +0 -25
  248. django_cfg/apps/payments/views/templates/ajax.py +0 -451
  249. django_cfg/apps/payments/views/templates/base.py +0 -212
  250. django_cfg/apps/payments/views/templates/dashboard.py +0 -60
  251. django_cfg/apps/payments/views/templates/payment_detail.py +0 -102
  252. django_cfg/apps/payments/views/templates/payment_management.py +0 -158
  253. django_cfg/apps/payments/views/templates/qr_code.py +0 -174
  254. django_cfg/apps/payments/views/templates/stats.py +0 -244
  255. django_cfg/apps/payments/views/templates/utils.py +0 -181
  256. django_cfg/apps/payments/views/webhook_views.py +0 -266
  257. django_cfg/apps/payments/viewsets.py +0 -66
  258. django_cfg/core/integration.py +0 -160
  259. django_cfg/template_archive/.gitignore +0 -1
  260. django_cfg/template_archive/__init__.py +0 -0
  261. django_cfg/urls.py +0 -33
  262. {django_cfg-1.2.31.dist-info → django_cfg-1.3.3.dist-info}/WHEEL +0 -0
  263. {django_cfg-1.2.31.dist-info → django_cfg-1.3.3.dist-info}/entry_points.txt +0 -0
  264. {django_cfg-1.2.31.dist-info → django_cfg-1.3.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,340 +0,0 @@
1
- /* Payment System Styles */
2
-
3
- /* Payment Status Colors */
4
- .payment-status-pending { @apply bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200; }
5
- .payment-status-confirming { @apply bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200; }
6
- .payment-status-confirmed { @apply bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200; }
7
- .payment-status-completed { @apply bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200; }
8
- .payment-status-failed { @apply bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200; }
9
- .payment-status-expired { @apply bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-200; }
10
- .payment-status-cancelled { @apply bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-200; }
11
- .payment-status-refunded { @apply bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200; }
12
-
13
- /* Payment Card Animations */
14
- .payment-card {
15
- @apply transition-all duration-200 hover:shadow-lg hover:-translate-y-1;
16
- }
17
-
18
- .payment-card:hover {
19
- @apply ring-2 ring-blue-500 ring-opacity-50;
20
- }
21
-
22
- .payment-card.compact {
23
- @apply p-4;
24
- }
25
-
26
- /* Progress Bar Styles */
27
- .progress-bar {
28
- @apply w-full bg-gray-200 rounded-full h-2 dark:bg-gray-700 overflow-hidden;
29
- }
30
-
31
- .progress-fill {
32
- @apply bg-blue-600 h-2 rounded-full transition-all duration-500 ease-out;
33
- }
34
-
35
- .progress-fill.success {
36
- @apply bg-green-600;
37
- }
38
-
39
- .progress-fill.warning {
40
- @apply bg-yellow-600;
41
- }
42
-
43
- .progress-fill.danger {
44
- @apply bg-red-600;
45
- }
46
-
47
- /* Progress Steps */
48
- .progress-steps {
49
- @apply flex justify-between items-center mb-4;
50
- }
51
-
52
- .progress-step {
53
- @apply flex flex-col items-center text-center;
54
- }
55
-
56
- .progress-step.completed .step-icon {
57
- @apply text-green-500;
58
- }
59
-
60
- .progress-step.active .step-icon {
61
- @apply text-blue-500;
62
- }
63
-
64
- .step-label {
65
- @apply text-xs text-gray-500 dark:text-gray-400 mt-1;
66
- }
67
-
68
- .step-icon {
69
- @apply w-8 h-8 flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-600 mb-2;
70
- }
71
-
72
- .step-icon.completed {
73
- @apply border-green-500 bg-green-500 text-white;
74
- }
75
-
76
- .step-icon.active {
77
- @apply border-blue-500 bg-blue-500 text-white;
78
- }
79
-
80
- /* Real-time indicators */
81
- .payment-live-indicator {
82
- @apply inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800;
83
- }
84
-
85
- .payment-live-indicator::before {
86
- content: '';
87
- @apply w-2 h-2 bg-green-500 rounded-full mr-2 animate-pulse;
88
- }
89
-
90
- /* Status Overview Cards */
91
- .status-overview {
92
- @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8;
93
- }
94
-
95
- .status-card {
96
- @apply bg-white dark:bg-gray-800 rounded-xl shadow-sm border border-gray-200 dark:border-gray-700 p-6 transition-all duration-200 hover:shadow-md;
97
- }
98
-
99
- .status-card:hover {
100
- @apply transform scale-105;
101
- }
102
-
103
- /* Payment Table Styles */
104
- .payments-table {
105
- @apply min-w-full divide-y divide-gray-200 dark:divide-gray-700;
106
- }
107
-
108
- .payments-table th {
109
- @apply px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider;
110
- }
111
-
112
- .payments-table td {
113
- @apply px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-white;
114
- }
115
-
116
- .payments-table tr:hover {
117
- @apply bg-gray-50 dark:bg-gray-800;
118
- }
119
-
120
- /* Provider Icons */
121
- .provider-icon {
122
- @apply w-6 h-6 rounded;
123
- }
124
-
125
- .provider-icon.nowpayments {
126
- @apply bg-orange-500;
127
- }
128
-
129
- .provider-icon.cryptapi {
130
- @apply bg-blue-500;
131
- }
132
-
133
- .provider-icon.cryptomus {
134
- @apply bg-purple-500;
135
- }
136
-
137
- .provider-icon.stripe {
138
- @apply bg-indigo-500;
139
- }
140
-
141
- .provider-icon.internal {
142
- @apply bg-gray-500;
143
- }
144
-
145
- /* QR Code Styles */
146
- .qr-code-container {
147
- @apply flex flex-col items-center space-y-2 p-4 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700;
148
- }
149
-
150
- .qr-code {
151
- @apply w-32 h-32 bg-gray-100 dark:bg-gray-700 rounded flex items-center justify-center;
152
- }
153
-
154
- /* Filter Styles */
155
- .payment-filters {
156
- @apply bg-white dark:bg-gray-800 rounded-xl shadow-sm border border-gray-200 dark:border-gray-700 p-6 mb-6;
157
- }
158
-
159
- .filter-group {
160
- @apply flex flex-wrap gap-4 items-center;
161
- }
162
-
163
- .filter-input {
164
- @apply min-w-0 flex-1 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-white;
165
- }
166
-
167
- .filter-select {
168
- @apply px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-white;
169
- }
170
-
171
- /* Button Styles */
172
- .btn {
173
- @apply inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md transition-colors duration-200;
174
- }
175
-
176
- .btn-primary {
177
- @apply bg-blue-600 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2;
178
- }
179
-
180
- .btn-secondary {
181
- @apply bg-gray-600 text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2;
182
- }
183
-
184
- .btn-success {
185
- @apply bg-green-600 text-white hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2;
186
- }
187
-
188
- .btn-danger {
189
- @apply bg-red-600 text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2;
190
- }
191
-
192
- .btn-outline {
193
- @apply border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600;
194
- }
195
-
196
- .btn-sm {
197
- @apply px-3 py-1.5 text-xs;
198
- }
199
-
200
- .btn-lg {
201
- @apply px-6 py-3 text-base;
202
- }
203
-
204
- /* Modal Styles */
205
- .modal-overlay {
206
- @apply fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50;
207
- }
208
-
209
- .modal-content {
210
- @apply bg-white dark:bg-gray-800 rounded-lg shadow-xl max-w-md w-full mx-4 max-h-screen overflow-y-auto;
211
- }
212
-
213
- .modal-header {
214
- @apply px-6 py-4 border-b border-gray-200 dark:border-gray-700;
215
- }
216
-
217
- .modal-body {
218
- @apply px-6 py-4;
219
- }
220
-
221
- .modal-footer {
222
- @apply px-6 py-4 border-t border-gray-200 dark:border-gray-700 flex justify-end space-x-3;
223
- }
224
-
225
- /* Notification Styles */
226
- .notification {
227
- @apply max-w-sm w-full bg-white dark:bg-gray-800 shadow-lg rounded-lg pointer-events-auto ring-1 ring-black ring-opacity-5 overflow-hidden;
228
- }
229
-
230
- .notification.success {
231
- @apply border-l-4 border-green-500;
232
- }
233
-
234
- .notification.error {
235
- @apply border-l-4 border-red-500;
236
- }
237
-
238
- .notification.warning {
239
- @apply border-l-4 border-yellow-500;
240
- }
241
-
242
- .notification.info {
243
- @apply border-l-4 border-blue-500;
244
- }
245
-
246
- /* Responsive improvements */
247
- @media (max-width: 768px) {
248
- .payment-card {
249
- @apply p-4;
250
- }
251
-
252
- .status-overview {
253
- @apply grid-cols-2 gap-4;
254
- }
255
-
256
- .progress-steps {
257
- @apply hidden;
258
- }
259
-
260
- .filter-group {
261
- @apply flex-col items-stretch;
262
- }
263
-
264
- .payments-table {
265
- @apply text-xs;
266
- }
267
-
268
- .payments-table th,
269
- .payments-table td {
270
- @apply px-3 py-2;
271
- }
272
- }
273
-
274
- @media (max-width: 480px) {
275
- .status-overview {
276
- @apply grid-cols-1;
277
- }
278
- }
279
-
280
- /* Loading animations */
281
- .skeleton {
282
- @apply animate-pulse bg-gray-200 dark:bg-gray-700 rounded;
283
- }
284
-
285
- .skeleton-text {
286
- @apply h-4 bg-gray-200 dark:bg-gray-700 rounded;
287
- }
288
-
289
- .skeleton-text.w-1/4 {
290
- @apply w-1/4;
291
- }
292
-
293
- .skeleton-text.w-1/2 {
294
- @apply w-1/2;
295
- }
296
-
297
- .skeleton-text.w-3/4 {
298
- @apply w-3/4;
299
- }
300
-
301
- /* Chart styles */
302
- .chart-container {
303
- @apply bg-white dark:bg-gray-800 rounded-xl shadow-sm border border-gray-200 dark:border-gray-700 p-6;
304
- }
305
-
306
- .chart-legend {
307
- @apply flex justify-center space-x-6 mt-4;
308
- }
309
-
310
- .chart-legend-item {
311
- @apply flex items-center space-x-2;
312
- }
313
-
314
- .chart-legend-color {
315
- @apply w-3 h-3 rounded-full;
316
- }
317
-
318
- /* Dark mode adjustments */
319
- @media (prefers-color-scheme: dark) {
320
- .material-icons {
321
- color: inherit;
322
- }
323
- }
324
-
325
- /* Custom scrollbar */
326
- .custom-scrollbar::-webkit-scrollbar {
327
- width: 6px;
328
- }
329
-
330
- .custom-scrollbar::-webkit-scrollbar-track {
331
- @apply bg-gray-100 dark:bg-gray-800;
332
- }
333
-
334
- .custom-scrollbar::-webkit-scrollbar-thumb {
335
- @apply bg-gray-400 dark:bg-gray-600 rounded-full;
336
- }
337
-
338
- .custom-scrollbar::-webkit-scrollbar-thumb:hover {
339
- @apply bg-gray-500 dark:bg-gray-500;
340
- }
@@ -1,202 +0,0 @@
1
- /**
2
- * Notification System for Payment Dashboard
3
- * Handles toast notifications with auto-dismiss and styling
4
- */
5
-
6
- class NotificationManager {
7
- constructor() {
8
- this.container = this.getOrCreateContainer();
9
- this.notifications = new Map();
10
- this.defaultDuration = 5000; // 5 seconds
11
- }
12
-
13
- getOrCreateContainer() {
14
- let container = document.getElementById('notification-container');
15
- if (!container) {
16
- container = document.createElement('div');
17
- container.id = 'notification-container';
18
- container.className = 'fixed top-4 left-1/2 transform -translate-x-1/2 z-50 space-y-2';
19
- document.body.appendChild(container);
20
- }
21
- return container;
22
- }
23
-
24
- show(message, type = 'info', options = {}) {
25
- const id = this.generateId();
26
- const duration = options.duration || this.defaultDuration;
27
- const persistent = options.persistent || false;
28
-
29
- const notification = this.createNotificationElement(id, message, type, persistent);
30
- this.container.appendChild(notification);
31
- this.notifications.set(id, notification);
32
-
33
- // Animate in
34
- requestAnimationFrame(() => {
35
- notification.classList.add('animate-in');
36
- });
37
-
38
- // Auto-dismiss if not persistent
39
- if (!persistent) {
40
- setTimeout(() => {
41
- this.dismiss(id);
42
- }, duration);
43
- }
44
-
45
- return id;
46
- }
47
-
48
- createNotificationElement(id, message, type, persistent) {
49
- const notification = document.createElement('div');
50
- notification.id = `notification-${id}`;
51
- notification.className = `notification ${type} transform transition-all duration-300 translate-y-2 opacity-0`;
52
-
53
- const typeIcons = {
54
- success: 'check_circle',
55
- error: 'error',
56
- warning: 'warning',
57
- info: 'info'
58
- };
59
-
60
- const typeColors = {
61
- success: 'text-green-600',
62
- error: 'text-red-600',
63
- warning: 'text-yellow-600',
64
- info: 'text-blue-600'
65
- };
66
-
67
- notification.innerHTML = `
68
- <div class="p-4">
69
- <div class="flex">
70
- <div class="flex-shrink-0">
71
- <span class="material-icons ${typeColors[type]}">${typeIcons[type]}</span>
72
- </div>
73
- <div class="ml-3 w-0 flex-1">
74
- <p class="text-sm font-medium text-gray-900 dark:text-white">
75
- ${this.escapeHtml(message)}
76
- </p>
77
- </div>
78
- ${!persistent ? `
79
- <div class="ml-4 flex-shrink-0 flex">
80
- <button class="dismiss-btn bg-white dark:bg-gray-800 rounded-md inline-flex text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" onclick="window.notificationManager.dismiss('${id}')">
81
- <span class="sr-only">Close</span>
82
- <span class="material-icons text-sm">close</span>
83
- </button>
84
- </div>
85
- ` : ''}
86
- </div>
87
- </div>
88
- `;
89
-
90
- // Add CSS class for animation
91
- notification.style.setProperty('--tw-translate-y', '0.5rem');
92
-
93
- return notification;
94
- }
95
-
96
- dismiss(id) {
97
- const notification = this.notifications.get(id);
98
- if (!notification) return;
99
-
100
- // Animate out
101
- notification.classList.add('animate-out');
102
- notification.style.setProperty('--tw-translate-y', '-0.5rem');
103
- notification.style.opacity = '0';
104
-
105
- setTimeout(() => {
106
- if (notification.parentNode) {
107
- notification.parentNode.removeChild(notification);
108
- }
109
- this.notifications.delete(id);
110
- }, 300);
111
- }
112
-
113
- dismissAll() {
114
- this.notifications.forEach((notification, id) => {
115
- this.dismiss(id);
116
- });
117
- }
118
-
119
- // Convenience methods
120
- success(message, options = {}) {
121
- return this.show(message, 'success', options);
122
- }
123
-
124
- error(message, options = {}) {
125
- return this.show(message, 'error', options);
126
- }
127
-
128
- warning(message, options = {}) {
129
- return this.show(message, 'warning', options);
130
- }
131
-
132
- info(message, options = {}) {
133
- return this.show(message, 'info', options);
134
- }
135
-
136
- // Payment-specific notifications
137
- paymentCreated(paymentId) {
138
- return this.success(`Payment #${paymentId} created successfully`);
139
- }
140
-
141
- paymentCompleted(paymentId) {
142
- return this.success(`Payment #${paymentId} completed!`);
143
- }
144
-
145
- paymentFailed(paymentId, reason = '') {
146
- const message = `Payment #${paymentId} failed${reason ? ': ' + reason : ''}`;
147
- return this.error(message);
148
- }
149
-
150
- paymentCancelled(paymentId) {
151
- return this.warning(`Payment #${paymentId} cancelled`);
152
- }
153
-
154
- connectionStatus(connected) {
155
- if (connected) {
156
- return this.success('Connected to payment system', { duration: 3000 });
157
- } else {
158
- return this.error('Connection lost', { persistent: true });
159
- }
160
- }
161
-
162
- // Utility methods
163
- generateId() {
164
- return Math.random().toString(36).substr(2, 9);
165
- }
166
-
167
- escapeHtml(text) {
168
- const map = {
169
- '&': '&amp;',
170
- '<': '&lt;',
171
- '>': '&gt;',
172
- '"': '&quot;',
173
- "'": '&#039;'
174
- };
175
- return text.replace(/[&<>"']/g, (m) => map[m]);
176
- }
177
- }
178
-
179
- // Add CSS animations dynamically
180
- const style = document.createElement('style');
181
- style.textContent = `
182
- .notification.animate-in {
183
- transform: translateY(0);
184
- opacity: 1;
185
- }
186
-
187
- .notification.animate-out {
188
- transform: translateY(-0.5rem);
189
- opacity: 0;
190
- }
191
- `;
192
- document.head.appendChild(style);
193
-
194
- // Initialize notification manager when DOM is loaded
195
- document.addEventListener('DOMContentLoaded', () => {
196
- window.notificationManager = new NotificationManager();
197
- });
198
-
199
- // Export for use in other modules
200
- if (typeof module !== 'undefined' && module.exports) {
201
- module.exports = NotificationManager;
202
- }