decksmith 0.9.1__py3-none-any.whl → 0.9.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.
- decksmith/card_builder.py +66 -35
- decksmith/deck_builder.py +95 -85
- decksmith/export.py +4 -1
- decksmith/gui/app.py +25 -20
- decksmith/gui/static/css/style.css +105 -33
- decksmith/gui/static/img/decksmith.ico +0 -0
- decksmith/gui/static/js/main.js +169 -115
- decksmith/gui/templates/index.html +184 -182
- decksmith/image_ops.py +11 -0
- decksmith/main.py +7 -6
- decksmith/project.py +35 -39
- decksmith/renderers/image.py +4 -6
- decksmith/renderers/text.py +153 -127
- decksmith/validate.py +14 -2
- {decksmith-0.9.1.dist-info → decksmith-0.9.3.dist-info}/METADATA +3 -1
- decksmith-0.9.3.dist-info/RECORD +27 -0
- decksmith-0.9.1.dist-info/RECORD +0 -26
- {decksmith-0.9.1.dist-info → decksmith-0.9.3.dist-info}/WHEEL +0 -0
- {decksmith-0.9.1.dist-info → decksmith-0.9.3.dist-info}/entry_points.txt +0 -0
|
@@ -3,24 +3,27 @@
|
|
|
3
3
|
--bg-primary: #1e1e1e;
|
|
4
4
|
--bg-secondary: #252526;
|
|
5
5
|
--bg-tertiary: #333333;
|
|
6
|
-
--bg-header: #1e1e1e;
|
|
6
|
+
--bg-header: #1e1e1e;
|
|
7
|
+
/* Seamless header */
|
|
7
8
|
--bg-input: #3c3c3c;
|
|
8
9
|
--bg-hover: #2a2d2e;
|
|
9
10
|
--bg-active: #37373d;
|
|
10
|
-
|
|
11
|
+
|
|
11
12
|
--text-primary: #cccccc;
|
|
12
13
|
--text-secondary: #969696;
|
|
13
14
|
--text-muted: #6e6e6e;
|
|
14
15
|
--text-inverse: #ffffff;
|
|
15
16
|
|
|
16
|
-
--accent-color: #007fd4;
|
|
17
|
+
--accent-color: #007fd4;
|
|
18
|
+
/* VS Code Blue */
|
|
17
19
|
--accent-hover: #026ec1;
|
|
18
20
|
--danger-color: #f14c4c;
|
|
19
21
|
--danger-hover: #d43b3b;
|
|
20
22
|
--success-color: #4caf50;
|
|
21
23
|
--warning-color: #cca700;
|
|
22
24
|
|
|
23
|
-
--border-color: #3e3e42;
|
|
25
|
+
--border-color: #3e3e42;
|
|
26
|
+
/* Subtle borders */
|
|
24
27
|
--border-focus: #007fd4;
|
|
25
28
|
|
|
26
29
|
/* Spacing */
|
|
@@ -35,14 +38,15 @@
|
|
|
35
38
|
--radius-sm: 3px;
|
|
36
39
|
--radius-md: 5px;
|
|
37
40
|
--radius-lg: 8px;
|
|
38
|
-
|
|
41
|
+
|
|
39
42
|
/* Shadows */
|
|
40
43
|
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
41
44
|
--shadow-md: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
42
45
|
--shadow-lg: 0 8px 16px rgba(0, 0, 0, 0.3);
|
|
43
46
|
}
|
|
44
47
|
|
|
45
|
-
body,
|
|
48
|
+
body,
|
|
49
|
+
html {
|
|
46
50
|
margin: 0;
|
|
47
51
|
padding: 0;
|
|
48
52
|
height: 100%;
|
|
@@ -50,7 +54,8 @@ body, html {
|
|
|
50
54
|
background-color: var(--bg-primary);
|
|
51
55
|
color: var(--text-primary);
|
|
52
56
|
overflow: hidden;
|
|
53
|
-
font-size: 13px;
|
|
57
|
+
font-size: 13px;
|
|
58
|
+
/* Slightly smaller, more dense interface */
|
|
54
59
|
line-height: 1.5;
|
|
55
60
|
}
|
|
56
61
|
|
|
@@ -67,7 +72,8 @@ body, html {
|
|
|
67
72
|
::-webkit-scrollbar-thumb {
|
|
68
73
|
background: #424242;
|
|
69
74
|
border-radius: 10px;
|
|
70
|
-
border: 2px solid var(--bg-primary);
|
|
75
|
+
border: 2px solid var(--bg-primary);
|
|
76
|
+
/* Creates padding effect */
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
::-webkit-scrollbar-thumb:hover {
|
|
@@ -100,8 +106,9 @@ body, html {
|
|
|
100
106
|
font-weight: 600;
|
|
101
107
|
}
|
|
102
108
|
|
|
103
|
-
.app-
|
|
104
|
-
|
|
109
|
+
.app-logo {
|
|
110
|
+
height: 24px;
|
|
111
|
+
width: auto;
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
.project-controls {
|
|
@@ -198,7 +205,8 @@ body, html {
|
|
|
198
205
|
width: 100vw;
|
|
199
206
|
}
|
|
200
207
|
|
|
201
|
-
#left-pane,
|
|
208
|
+
#left-pane,
|
|
209
|
+
#right-pane {
|
|
202
210
|
height: 100%;
|
|
203
211
|
display: flex;
|
|
204
212
|
flex-direction: column;
|
|
@@ -212,7 +220,8 @@ body, html {
|
|
|
212
220
|
#right-pane {
|
|
213
221
|
width: 50%;
|
|
214
222
|
background: var(--bg-primary);
|
|
215
|
-
padding: 0;
|
|
223
|
+
padding: 0;
|
|
224
|
+
/* Removed padding for cleaner split */
|
|
216
225
|
}
|
|
217
226
|
|
|
218
227
|
#editors-container {
|
|
@@ -222,7 +231,8 @@ body, html {
|
|
|
222
231
|
flex-direction: column;
|
|
223
232
|
}
|
|
224
233
|
|
|
225
|
-
#yaml-pane,
|
|
234
|
+
#yaml-pane,
|
|
235
|
+
#csv-pane {
|
|
226
236
|
display: flex;
|
|
227
237
|
flex-direction: column;
|
|
228
238
|
height: 50%;
|
|
@@ -242,7 +252,8 @@ body, html {
|
|
|
242
252
|
justify-content: space-between;
|
|
243
253
|
}
|
|
244
254
|
|
|
245
|
-
#yaml-editor,
|
|
255
|
+
#yaml-editor,
|
|
256
|
+
#csv-editor {
|
|
246
257
|
flex-grow: 1;
|
|
247
258
|
width: 100%;
|
|
248
259
|
height: 100%;
|
|
@@ -281,12 +292,17 @@ body, html {
|
|
|
281
292
|
font-size: 0.95em;
|
|
282
293
|
}
|
|
283
294
|
|
|
295
|
+
.control-group.actions {
|
|
296
|
+
margin-right: 8px;
|
|
297
|
+
}
|
|
298
|
+
|
|
284
299
|
.select-wrapper {
|
|
285
300
|
position: relative;
|
|
286
301
|
}
|
|
287
302
|
|
|
288
303
|
.select-wrapper::after {
|
|
289
|
-
content: '\f078';
|
|
304
|
+
content: '\f078';
|
|
305
|
+
/* FontAwesome chevron-down */
|
|
290
306
|
font-family: 'Font Awesome 6 Free';
|
|
291
307
|
font-weight: 900;
|
|
292
308
|
position: absolute;
|
|
@@ -330,10 +346,10 @@ select:focus {
|
|
|
330
346
|
align-items: center;
|
|
331
347
|
background-color: #1a1a1a;
|
|
332
348
|
/* Checkered background for transparency */
|
|
333
|
-
background-image:
|
|
334
|
-
linear-gradient(45deg, #222 25%, transparent 25%),
|
|
335
|
-
linear-gradient(-45deg, #222 25%, transparent 25%),
|
|
336
|
-
linear-gradient(45deg, transparent 75%, #222 75%),
|
|
349
|
+
background-image:
|
|
350
|
+
linear-gradient(45deg, #222 25%, transparent 25%),
|
|
351
|
+
linear-gradient(-45deg, #222 25%, transparent 25%),
|
|
352
|
+
linear-gradient(45deg, transparent 75%, #222 75%),
|
|
337
353
|
linear-gradient(-45deg, transparent 75%, #222 75%);
|
|
338
354
|
background-size: 20px 20px;
|
|
339
355
|
background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
|
|
@@ -378,7 +394,8 @@ select:focus {
|
|
|
378
394
|
}
|
|
379
395
|
|
|
380
396
|
#placeholder-text::before {
|
|
381
|
-
content: '\f03e';
|
|
397
|
+
content: '\f03e';
|
|
398
|
+
/* FontAwesome image icon */
|
|
382
399
|
font-family: 'Font Awesome 6 Free';
|
|
383
400
|
font-weight: 900;
|
|
384
401
|
font-size: 4em;
|
|
@@ -388,7 +405,7 @@ select:focus {
|
|
|
388
405
|
/* Status Bar */
|
|
389
406
|
#status-bar {
|
|
390
407
|
padding: 4px 12px;
|
|
391
|
-
background: var(--
|
|
408
|
+
background: var(--success-color);
|
|
392
409
|
color: white;
|
|
393
410
|
font-size: 0.85em;
|
|
394
411
|
font-weight: 500;
|
|
@@ -409,6 +426,18 @@ select:focus {
|
|
|
409
426
|
background-color: var(--success-color);
|
|
410
427
|
}
|
|
411
428
|
|
|
429
|
+
#status-bar.error {
|
|
430
|
+
background-color: var(--danger-color);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
#status-text {
|
|
434
|
+
white-space: nowrap;
|
|
435
|
+
overflow: hidden;
|
|
436
|
+
text-overflow: ellipsis;
|
|
437
|
+
min-width: 0;
|
|
438
|
+
flex: 1;
|
|
439
|
+
}
|
|
440
|
+
|
|
412
441
|
.status-line {
|
|
413
442
|
height: 2px;
|
|
414
443
|
width: 100%;
|
|
@@ -416,9 +445,17 @@ select:focus {
|
|
|
416
445
|
transition: background-color 0.3s ease;
|
|
417
446
|
}
|
|
418
447
|
|
|
419
|
-
.status-line.success {
|
|
420
|
-
|
|
421
|
-
|
|
448
|
+
.status-line.success {
|
|
449
|
+
background-color: var(--success-color);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.status-line.error {
|
|
453
|
+
background-color: var(--danger-color);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
.status-line.loading {
|
|
457
|
+
background-color: var(--warning-color);
|
|
458
|
+
}
|
|
422
459
|
|
|
423
460
|
/* Toasts */
|
|
424
461
|
#toast-container {
|
|
@@ -453,9 +490,17 @@ select:focus {
|
|
|
453
490
|
transform: translateY(0);
|
|
454
491
|
}
|
|
455
492
|
|
|
456
|
-
.toast.success {
|
|
457
|
-
|
|
458
|
-
|
|
493
|
+
.toast.success {
|
|
494
|
+
border-left-color: var(--success-color);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.toast.error {
|
|
498
|
+
border-left-color: var(--danger-color);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.toast.info {
|
|
502
|
+
border-left-color: var(--accent-color);
|
|
503
|
+
}
|
|
459
504
|
|
|
460
505
|
/* Split.js gutters */
|
|
461
506
|
.gutter {
|
|
@@ -472,12 +517,14 @@ select:focus {
|
|
|
472
517
|
|
|
473
518
|
.gutter.gutter-horizontal {
|
|
474
519
|
cursor: col-resize;
|
|
475
|
-
width: 4px;
|
|
520
|
+
width: 4px;
|
|
521
|
+
/* Thinner gutter */
|
|
476
522
|
}
|
|
477
523
|
|
|
478
524
|
.gutter.gutter-vertical {
|
|
479
525
|
cursor: row-resize;
|
|
480
|
-
height: 4px;
|
|
526
|
+
height: 4px;
|
|
527
|
+
/* Thinner gutter */
|
|
481
528
|
}
|
|
482
529
|
|
|
483
530
|
/* Modals */
|
|
@@ -529,7 +576,8 @@ select:focus {
|
|
|
529
576
|
transform: scale(1);
|
|
530
577
|
}
|
|
531
578
|
|
|
532
|
-
.modal-content h3,
|
|
579
|
+
.modal-content h3,
|
|
580
|
+
.modal-content h1 {
|
|
533
581
|
margin-top: 0;
|
|
534
582
|
margin-bottom: var(--spacing-md);
|
|
535
583
|
color: var(--text-inverse);
|
|
@@ -598,12 +646,16 @@ input[type="text"]:focus {
|
|
|
598
646
|
border: 1px solid var(--border-color);
|
|
599
647
|
}
|
|
600
648
|
|
|
649
|
+
.welcome-logo {
|
|
650
|
+
width: 80px;
|
|
651
|
+
height: auto;
|
|
652
|
+
margin-bottom: 16px;
|
|
653
|
+
}
|
|
654
|
+
|
|
601
655
|
.welcome-content h1 {
|
|
602
656
|
font-size: 2.2em;
|
|
603
657
|
margin-bottom: 16px;
|
|
604
|
-
|
|
605
|
-
-webkit-background-clip: text;
|
|
606
|
-
-webkit-text-fill-color: transparent;
|
|
658
|
+
color: var(--text-inverse);
|
|
607
659
|
letter-spacing: -0.5px;
|
|
608
660
|
}
|
|
609
661
|
|
|
@@ -654,3 +706,23 @@ input[type="number"] {
|
|
|
654
706
|
input[type="number"]:focus {
|
|
655
707
|
border-color: var(--border-focus);
|
|
656
708
|
}
|
|
709
|
+
|
|
710
|
+
.header-btn {
|
|
711
|
+
display: inline-flex;
|
|
712
|
+
align-items: center;
|
|
713
|
+
line-height: 1;
|
|
714
|
+
gap: 6px;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
.header-btn i {
|
|
718
|
+
display: inline-flex;
|
|
719
|
+
align-items: center;
|
|
720
|
+
height: 100%;
|
|
721
|
+
vertical-align: middle;
|
|
722
|
+
margin-top: -1px;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
/* Input Error State */
|
|
726
|
+
.input-error {
|
|
727
|
+
border-color: var(--danger-color) !important;
|
|
728
|
+
}
|
|
Binary file
|