slicejs-web-framework 3.2.3 → 3.3.1

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 (124) hide show
  1. package/.opencode/opencode.json +13 -13
  2. package/LICENSE +21 -21
  3. package/README.md +97 -174
  4. package/Slice/Components/Structural/ContextManager/ContextManager.js +369 -369
  5. package/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +420 -297
  6. package/Slice/Components/Structural/Controller/Controller.js +1129 -1131
  7. package/Slice/Components/Structural/Debugger/Debugger.html +72 -72
  8. package/Slice/Components/Structural/Debugger/Debugger.js +1497 -1547
  9. package/Slice/Components/Structural/EventManager/EventManager.js +338 -338
  10. package/Slice/Components/Structural/EventManager/EventManagerDebugger.js +476 -361
  11. package/Slice/Components/Structural/Logger/Log.js +10 -10
  12. package/Slice/Components/Structural/Logger/Logger.js +145 -146
  13. package/Slice/Components/Structural/Router/Router.js +752 -721
  14. package/Slice/Components/Structural/StylesManager/StylesManager.js +78 -78
  15. package/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +84 -84
  16. package/Slice/Slice.js +530 -542
  17. package/Slice/tests/build-bundled-component-without-category.test.js +103 -103
  18. package/Slice/tests/build-js-only-visual-components.test.js +144 -144
  19. package/Slice/tests/bundle-v2-runtime-contract.test.js +728 -728
  20. package/Slice/tests/public-env-runtime-accessors.test.js +44 -44
  21. package/Slice/tests/router-loading-finally.test.js +68 -68
  22. package/api/index.js +286 -286
  23. package/api/middleware/securityMiddleware.js +252 -252
  24. package/api/tests/public-env-resolver.test.js +193 -193
  25. package/api/utils/publicEnvResolver.js +117 -117
  26. package/package.json +40 -38
  27. package/sliceConfig.schema.json +109 -109
  28. package/src/App/index.html +16 -22
  29. package/src/App/index.js +20 -23
  30. package/src/App/style.css +11 -40
  31. package/src/Components/AppComponents/AboutSection/AboutSection.css +9 -0
  32. package/src/Components/AppComponents/AboutSection/AboutSection.html +8 -0
  33. package/src/Components/AppComponents/AboutSection/AboutSection.js +12 -0
  34. package/src/Components/AppComponents/AppShell/AppShell.css +10 -0
  35. package/src/Components/AppComponents/AppShell/AppShell.html +4 -0
  36. package/src/Components/AppComponents/AppShell/AppShell.js +36 -0
  37. package/src/Components/AppComponents/HomeSection/HomeSection.css +20 -0
  38. package/src/Components/AppComponents/HomeSection/HomeSection.html +10 -0
  39. package/src/Components/AppComponents/HomeSection/HomeSection.js +19 -0
  40. package/src/Components/components.js +8 -27
  41. package/src/Styles/sliceStyles.css +34 -34
  42. package/src/Themes/Dark.css +42 -42
  43. package/src/Themes/Light.css +31 -31
  44. package/src/Themes/Slice.css +47 -47
  45. package/src/routes.js +9 -15
  46. package/src/sliceConfig.json +74 -73
  47. package/types/index.d.ts +207 -207
  48. package/Slice/Components/Structural/Debugger/Debugger.css +0 -620
  49. package/src/Components/AppComponents/HomePage/HomePage.css +0 -201
  50. package/src/Components/AppComponents/HomePage/HomePage.html +0 -37
  51. package/src/Components/AppComponents/HomePage/HomePage.js +0 -210
  52. package/src/Components/AppComponents/Playground/Playground.css +0 -12
  53. package/src/Components/AppComponents/Playground/Playground.html +0 -0
  54. package/src/Components/AppComponents/Playground/Playground.js +0 -111
  55. package/src/Components/Service/FetchManager/FetchManager.js +0 -133
  56. package/src/Components/Service/IndexedDbManager/IndexedDbManager.js +0 -141
  57. package/src/Components/Service/LocalStorageManager/LocalStorageManager.js +0 -45
  58. package/src/Components/Visual/Button/Button.css +0 -47
  59. package/src/Components/Visual/Button/Button.html +0 -5
  60. package/src/Components/Visual/Button/Button.js +0 -93
  61. package/src/Components/Visual/Card/Card.css +0 -68
  62. package/src/Components/Visual/Card/Card.html +0 -7
  63. package/src/Components/Visual/Card/Card.js +0 -107
  64. package/src/Components/Visual/Checkbox/Checkbox.css +0 -87
  65. package/src/Components/Visual/Checkbox/Checkbox.html +0 -8
  66. package/src/Components/Visual/Checkbox/Checkbox.js +0 -86
  67. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +0 -130
  68. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +0 -4
  69. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +0 -262
  70. package/src/Components/Visual/Details/Details.css +0 -70
  71. package/src/Components/Visual/Details/Details.html +0 -9
  72. package/src/Components/Visual/Details/Details.js +0 -76
  73. package/src/Components/Visual/DropDown/DropDown.css +0 -60
  74. package/src/Components/Visual/DropDown/DropDown.html +0 -5
  75. package/src/Components/Visual/DropDown/DropDown.js +0 -63
  76. package/src/Components/Visual/Grid/Grid.css +0 -7
  77. package/src/Components/Visual/Grid/Grid.html +0 -1
  78. package/src/Components/Visual/Grid/Grid.js +0 -57
  79. package/src/Components/Visual/Icon/Icon.css +0 -510
  80. package/src/Components/Visual/Icon/Icon.html +0 -1
  81. package/src/Components/Visual/Icon/Icon.js +0 -89
  82. package/src/Components/Visual/Icon/slc.eot +0 -0
  83. package/src/Components/Visual/Icon/slc.json +0 -555
  84. package/src/Components/Visual/Icon/slc.styl +0 -507
  85. package/src/Components/Visual/Icon/slc.svg +0 -1485
  86. package/src/Components/Visual/Icon/slc.symbol.svg +0 -1059
  87. package/src/Components/Visual/Icon/slc.ttf +0 -0
  88. package/src/Components/Visual/Icon/slc.woff +0 -0
  89. package/src/Components/Visual/Icon/slc.woff2 +0 -0
  90. package/src/Components/Visual/Input/Input.css +0 -91
  91. package/src/Components/Visual/Input/Input.html +0 -4
  92. package/src/Components/Visual/Input/Input.js +0 -215
  93. package/src/Components/Visual/Layout/Layout.css +0 -0
  94. package/src/Components/Visual/Layout/Layout.html +0 -0
  95. package/src/Components/Visual/Layout/Layout.js +0 -49
  96. package/src/Components/Visual/Link/Link.css +0 -8
  97. package/src/Components/Visual/Link/Link.html +0 -1
  98. package/src/Components/Visual/Link/Link.js +0 -63
  99. package/src/Components/Visual/Loading/Loading.css +0 -56
  100. package/src/Components/Visual/Loading/Loading.html +0 -83
  101. package/src/Components/Visual/Loading/Loading.js +0 -38
  102. package/src/Components/Visual/MultiRoute/MultiRoute.js +0 -93
  103. package/src/Components/Visual/Navbar/Navbar.css +0 -115
  104. package/src/Components/Visual/Navbar/Navbar.html +0 -44
  105. package/src/Components/Visual/Navbar/Navbar.js +0 -141
  106. package/src/Components/Visual/NotFound/NotFound.css +0 -117
  107. package/src/Components/Visual/NotFound/NotFound.html +0 -24
  108. package/src/Components/Visual/NotFound/NotFound.js +0 -16
  109. package/src/Components/Visual/Route/Route.js +0 -93
  110. package/src/Components/Visual/Select/Select.css +0 -84
  111. package/src/Components/Visual/Select/Select.html +0 -8
  112. package/src/Components/Visual/Select/Select.js +0 -195
  113. package/src/Components/Visual/Switch/Switch.css +0 -76
  114. package/src/Components/Visual/Switch/Switch.html +0 -8
  115. package/src/Components/Visual/Switch/Switch.js +0 -102
  116. package/src/Components/Visual/TreeItem/TreeItem.css +0 -36
  117. package/src/Components/Visual/TreeItem/TreeItem.html +0 -1
  118. package/src/Components/Visual/TreeItem/TreeItem.js +0 -126
  119. package/src/Components/Visual/TreeView/TreeView.css +0 -8
  120. package/src/Components/Visual/TreeView/TreeView.html +0 -1
  121. package/src/Components/Visual/TreeView/TreeView.js +0 -48
  122. package/src/images/Slice.js-logo.png +0 -0
  123. package/src/images/im2/Slice.js-logo.png +0 -0
  124. package/src/testing.js +0 -888
@@ -1,620 +0,0 @@
1
- #debugger-container {
2
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
3
- display: none;
4
- position: fixed;
5
- top: 20px;
6
- right: 20px;
7
- width: 420px;
8
- height: 85vh;
9
- max-height: 85vh;
10
- background: var(--primary-background-color);
11
- border: 1px solid var(--medium-color);
12
- border-radius: 12px;
13
- box-shadow: 0 20px 40px rgba(var(--primary-color-rgb), 0.15), 0 4px 12px rgba(0, 0, 0, 0.1);
14
- z-index: 10000;
15
- overflow: hidden;
16
- backdrop-filter: blur(10px);
17
- }
18
-
19
- #debugger-container.active {
20
- display: flex;
21
- flex-direction: column;
22
- }
23
-
24
- .debugger-header {
25
- background: linear-gradient(135deg, var(--primary-color), var(--primary-color-shade));
26
- color: var(--primary-color-contrast);
27
- padding: 12px 16px;
28
- border-radius: 12px 12px 0 0;
29
- user-select: none;
30
- cursor: grab;
31
- }
32
-
33
- .debugger-header:active {
34
- cursor: grabbing;
35
- }
36
-
37
- .header-content {
38
- display: flex;
39
- justify-content: space-between;
40
- align-items: center;
41
- }
42
-
43
- .component-info {
44
- display: flex;
45
- align-items: center;
46
- gap: 10px;
47
- }
48
-
49
- .component-icon {
50
- font-size: 20px;
51
- opacity: 0.9;
52
- }
53
-
54
- .component-name {
55
- font-size: 14px;
56
- font-weight: 600;
57
- margin-bottom: 2px;
58
- }
59
-
60
- .component-id {
61
- font-size: 11px;
62
- opacity: 0.8;
63
- }
64
-
65
- .header-actions {
66
- display: flex;
67
- gap: 8px;
68
- }
69
-
70
- .minimize-btn, #close-debugger {
71
- background: rgba(255, 255, 255, 0.2);
72
- border: none;
73
- color: var(--primary-color-contrast);
74
- width: 28px;
75
- height: 28px;
76
- border-radius: 6px;
77
- cursor: pointer;
78
- display: flex;
79
- align-items: center;
80
- justify-content: center;
81
- font-size: 16px;
82
- font-weight: bold;
83
- transition: background 0.2s ease;
84
- }
85
-
86
- .minimize-btn:hover, #close-debugger:hover {
87
- background: rgba(255, 255, 255, 0.3);
88
- }
89
-
90
- .debugger-content {
91
- flex: 1;
92
- display: flex;
93
- flex-direction: column;
94
- overflow: hidden;
95
- }
96
-
97
- .tabs-container {
98
- border-bottom: 1px solid var(--medium-color);
99
- }
100
-
101
- .tab-nav {
102
- display: flex;
103
- background: var(--tertiary-background-color);
104
- }
105
-
106
- .tab-btn {
107
- flex: 1;
108
- padding: 10px 14px;
109
- border: none;
110
- background: transparent;
111
- color: var(--font-secondary-color);
112
- font-size: 12px;
113
- font-weight: 500;
114
- cursor: pointer;
115
- transition: all 0.2s ease;
116
- border-bottom: 2px solid transparent;
117
- }
118
-
119
- .tab-btn:hover {
120
- background: var(--secondary-background-color);
121
- color: var(--font-primary-color);
122
- }
123
-
124
- .tab-btn.active {
125
- background: var(--primary-background-color);
126
- color: var(--primary-color);
127
- border-bottom-color: var(--primary-color);
128
- font-weight: 600;
129
- }
130
-
131
- .tab-content {
132
- flex: 1;
133
- overflow: hidden;
134
- height: calc(85vh - 100px);
135
- }
136
-
137
- .tab-pane {
138
- display: none;
139
- height: 100%;
140
- overflow-y: auto;
141
- overflow-x: hidden;
142
- padding: 16px;
143
- }
144
-
145
- .tab-pane.active {
146
- display: block;
147
- }
148
-
149
- .tab-pane::-webkit-scrollbar {
150
- width: 4px;
151
- }
152
-
153
- .tab-pane::-webkit-scrollbar-track {
154
- background: var(--tertiary-background-color);
155
- border-radius: 2px;
156
- }
157
-
158
- .tab-pane::-webkit-scrollbar-thumb {
159
- background: var(--medium-color);
160
- border-radius: 2px;
161
- }
162
-
163
- .tab-pane::-webkit-scrollbar-thumb:hover {
164
- background: var(--primary-color);
165
- }
166
-
167
- .props-container {
168
- display: flex;
169
- flex-direction: column;
170
- gap: 12px;
171
- margin-bottom: 16px;
172
- }
173
-
174
- .props-actions {
175
- border-top: 1px solid var(--medium-color);
176
- padding-top: 16px;
177
- margin-top: 8px;
178
- }
179
-
180
- .actions-note {
181
- margin-top: 12px;
182
- padding: 8px 12px;
183
- background: var(--tertiary-background-color);
184
- border-radius: 6px;
185
- border: 1px solid var(--medium-color);
186
- }
187
-
188
- .actions-note small {
189
- color: var(--font-secondary-color);
190
- font-size: 11px;
191
- display: flex;
192
- align-items: center;
193
- gap: 6px;
194
- }
195
-
196
- .props-section {
197
- background: var(--tertiary-background-color);
198
- border: 1px solid var(--medium-color);
199
- border-radius: 8px;
200
- padding: 12px;
201
- }
202
-
203
- .section-title {
204
- font-size: 12px;
205
- font-weight: 600;
206
- color: var(--font-primary-color);
207
- margin-bottom: 12px;
208
- display: flex;
209
- align-items: center;
210
- gap: 6px;
211
- }
212
-
213
- .prop-item {
214
- display: flex;
215
- flex-direction: column;
216
- gap: 6px;
217
- padding: 12px;
218
- background: var(--primary-background-color);
219
- border: 1px solid var(--medium-color);
220
- border-radius: 6px;
221
- margin-bottom: 8px;
222
- transition: border-color 0.2s ease;
223
- }
224
-
225
- .prop-item:hover {
226
- border-color: var(--primary-color);
227
- }
228
-
229
- .prop-header {
230
- display: flex;
231
- justify-content: space-between;
232
- align-items: center;
233
- }
234
-
235
- .prop-name {
236
- font-size: 13px;
237
- font-weight: 600;
238
- color: var(--font-primary-color);
239
- }
240
-
241
- .prop-name.required::after {
242
- content: " *";
243
- color: var(--danger-color);
244
- }
245
-
246
- .prop-meta {
247
- display: flex;
248
- align-items: center;
249
- gap: 8px;
250
- }
251
-
252
- .prop-type {
253
- font-size: 11px;
254
- padding: 2px 6px;
255
- background: var(--secondary-color);
256
- color: var(--secondary-color-contrast);
257
- border-radius: 4px;
258
- font-family: monospace;
259
- font-weight: 500;
260
- }
261
-
262
- .prop-status {
263
- font-size: 12px;
264
- font-weight: 500;
265
- }
266
-
267
- .status-used {
268
- color: var(--success-color);
269
- }
270
-
271
- .status-missing {
272
- color: var(--danger-color);
273
- }
274
-
275
- .status-optional {
276
- color: var(--medium-color);
277
- }
278
-
279
- .prop-input {
280
- margin-top: 8px;
281
- }
282
-
283
- .input-group {
284
- position: relative;
285
- }
286
-
287
- .prop-control {
288
- width: 100%;
289
- padding: 8px 32px 8px 10px;
290
- border: 1px solid var(--medium-color);
291
- border-radius: 6px;
292
- background: var(--primary-background-color);
293
- color: var(--font-primary-color);
294
- font-size: 13px;
295
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
296
- font-family: monospace;
297
- }
298
-
299
- .prop-control:focus {
300
- outline: none;
301
- border-color: var(--primary-color);
302
- box-shadow: 0 0 0 3px rgba(var(--primary-color-rgb), 0.1);
303
- }
304
-
305
- .prop-control:disabled {
306
- background: var(--disabled-color);
307
- color: var(--font-secondary-color);
308
- cursor: not-allowed;
309
- }
310
-
311
- .prop-control[readonly] {
312
- background: var(--tertiary-background-color);
313
- cursor: pointer;
314
- }
315
-
316
- .prop-control[readonly]:focus {
317
- border-color: var(--accent-color);
318
- box-shadow: 0 0 0 3px rgba(var(--accent-color), 0.1);
319
- }
320
-
321
- /* Estilos específicos para checkboxes */
322
- .prop-control[type="checkbox"] {
323
- width: auto;
324
- padding: 0;
325
- margin: 0;
326
- cursor: pointer;
327
- }
328
-
329
- .edit-btn {
330
- position: absolute;
331
- right: 4px;
332
- top: 50%;
333
- transform: translateY(-50%);
334
- background: var(--accent-color);
335
- border: none;
336
- color: white;
337
- width: 24px;
338
- height: 24px;
339
- border-radius: 4px;
340
- cursor: pointer;
341
- font-size: 12px;
342
- display: flex;
343
- align-items: center;
344
- justify-content: center;
345
- transition: background 0.2s ease;
346
- }
347
-
348
- .edit-btn:hover {
349
- background: var(--primary-color);
350
- }
351
-
352
- .default-value {
353
- font-size: 11px;
354
- color: var(--font-secondary-color);
355
- font-style: italic;
356
- margin-top: 4px;
357
- }
358
-
359
- .info-list {
360
- display: flex;
361
- flex-direction: column;
362
- gap: 12px;
363
- }
364
-
365
- .info-item {
366
- display: flex;
367
- justify-content: space-between;
368
- padding: 12px;
369
- background: var(--tertiary-background-color);
370
- border-radius: 6px;
371
- border: 1px solid var(--medium-color);
372
- }
373
-
374
- .info-label {
375
- font-weight: 600;
376
- color: var(--font-primary-color);
377
- font-size: 13px;
378
- }
379
-
380
- .info-value {
381
- color: var(--font-secondary-color);
382
- font-family: monospace;
383
- font-size: 12px;
384
- }
385
-
386
- .actions-container {
387
- display: flex;
388
- flex-direction: column;
389
- gap: 16px;
390
- }
391
-
392
- .action-buttons {
393
- display: flex;
394
- flex-direction: column;
395
- gap: 8px;
396
- }
397
-
398
- .action-btn {
399
- padding: 12px 16px;
400
- border: none;
401
- border-radius: 6px;
402
- font-size: 13px;
403
- font-weight: 500;
404
- cursor: pointer;
405
- transition: all 0.2s ease;
406
- display: flex;
407
- align-items: center;
408
- justify-content: center;
409
- gap: 8px;
410
- }
411
-
412
- .action-btn.primary {
413
- background: var(--primary-color);
414
- color: var(--primary-color-contrast);
415
- }
416
-
417
- .action-btn.primary:hover {
418
- background: var(--primary-color-shade);
419
- }
420
-
421
- .action-btn.secondary {
422
- background: var(--secondary-color);
423
- color: var(--secondary-color-contrast);
424
- }
425
-
426
- .action-btn.secondary:hover {
427
- opacity: 0.9;
428
- }
429
-
430
- .action-btn.tertiary {
431
- background: var(--tertiary-background-color);
432
- color: var(--font-primary-color);
433
- border: 1px solid var(--medium-color);
434
- }
435
-
436
- .action-btn.tertiary:hover {
437
- background: var(--secondary-background-color);
438
- }
439
-
440
- /* Modal Styles */
441
- .editor-modal {
442
- display: none;
443
- position: fixed;
444
- top: 0;
445
- left: 0;
446
- width: 100%;
447
- height: 100%;
448
- background: rgba(0, 0, 0, 0.6);
449
- z-index: 20000;
450
- backdrop-filter: blur(4px);
451
- }
452
-
453
- .editor-modal.active {
454
- display: flex;
455
- align-items: center;
456
- justify-content: center;
457
- }
458
-
459
- .modal-content {
460
- background: var(--primary-background-color);
461
- border-radius: 12px;
462
- width: 90%;
463
- max-width: 600px;
464
- max-height: 80%;
465
- display: flex;
466
- flex-direction: column;
467
- box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
468
- border: 1px solid var(--medium-color);
469
- }
470
-
471
- .modal-header {
472
- padding: 16px 20px;
473
- background: var(--tertiary-background-color);
474
- border-radius: 12px 12px 0 0;
475
- border-bottom: 1px solid var(--medium-color);
476
- display: flex;
477
- justify-content: space-between;
478
- align-items: center;
479
- }
480
-
481
- .modal-header h3 {
482
- margin: 0;
483
- font-size: 16px;
484
- font-weight: 600;
485
- color: var(--font-primary-color);
486
- }
487
-
488
- .modal-close {
489
- background: none;
490
- border: none;
491
- font-size: 20px;
492
- color: var(--font-secondary-color);
493
- cursor: pointer;
494
- width: 32px;
495
- height: 32px;
496
- border-radius: 6px;
497
- display: flex;
498
- align-items: center;
499
- justify-content: center;
500
- transition: background 0.2s ease;
501
- }
502
-
503
- .modal-close:hover {
504
- background: var(--secondary-background-color);
505
- }
506
-
507
- .modal-body {
508
- flex: 1;
509
- padding: 20px;
510
- display: flex;
511
- flex-direction: column;
512
- gap: 16px;
513
- overflow: hidden;
514
- }
515
-
516
- .editor-type-selector {
517
- display: flex;
518
- gap: 4px;
519
- background: var(--tertiary-background-color);
520
- padding: 4px;
521
- border-radius: 6px;
522
- }
523
-
524
- .type-btn {
525
- flex: 1;
526
- padding: 8px 12px;
527
- border: none;
528
- background: transparent;
529
- color: var(--font-secondary-color);
530
- font-size: 12px;
531
- font-weight: 500;
532
- cursor: pointer;
533
- border-radius: 4px;
534
- transition: all 0.2s ease;
535
- }
536
-
537
- .type-btn.active {
538
- background: var(--primary-color);
539
- color: var(--primary-color-contrast);
540
- }
541
-
542
- .editor-container {
543
- flex: 1;
544
- position: relative;
545
- min-height: 200px;
546
- }
547
-
548
- #property-editor {
549
- width: 100%;
550
- height: 100%;
551
- border: 1px solid var(--medium-color);
552
- border-radius: 6px;
553
- padding: 12px;
554
- background: var(--primary-background-color);
555
- color: var(--font-primary-color);
556
- font-family: 'Monaco', 'Consolas', monospace;
557
- font-size: 13px;
558
- line-height: 1.5;
559
- resize: none;
560
- outline: none;
561
- min-height: 200px;
562
- }
563
-
564
- #property-editor:focus {
565
- border-color: var(--primary-color);
566
- box-shadow: 0 0 0 3px rgba(var(--primary-color-rgb), 0.1);
567
- }
568
-
569
- .validation-message {
570
- font-size: 12px;
571
- color: var(--danger-color);
572
- min-height: 18px;
573
- display: flex;
574
- align-items: center;
575
- gap: 6px;
576
- }
577
-
578
- .modal-actions {
579
- padding: 16px 20px;
580
- background: var(--tertiary-background-color);
581
- border-radius: 0 0 12px 12px;
582
- border-top: 1px solid var(--medium-color);
583
- display: flex;
584
- gap: 12px;
585
- justify-content: flex-end;
586
- }
587
-
588
- .modal-btn {
589
- padding: 10px 20px;
590
- border: none;
591
- border-radius: 6px;
592
- font-size: 13px;
593
- font-weight: 500;
594
- cursor: pointer;
595
- transition: all 0.2s ease;
596
- }
597
-
598
- .modal-btn.cancel {
599
- background: var(--tertiary-background-color);
600
- color: var(--font-primary-color);
601
- border: 1px solid var(--medium-color);
602
- }
603
-
604
- .modal-btn.cancel:hover {
605
- background: var(--secondary-background-color);
606
- }
607
-
608
- .modal-btn.save {
609
- background: var(--success-color);
610
- color: var(--success-contrast);
611
- }
612
-
613
- .modal-btn.save:hover {
614
- opacity: 0.9;
615
- }
616
-
617
- .modal-btn.save:disabled {
618
- background: var(--disabled-color);
619
- cursor: not-allowed;
620
- }