nodebb-theme-flawless 0.1.0 → 1.1.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 (2) hide show
  1. package/package.json +1 -1
  2. package/scss/flawless.scss +308 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-flawless",
3
- "version": "0.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "A dark Flawless Roleplay child theme for NodeBB v4 and Harmony.",
5
5
  "main": "lib/theme.js",
6
6
  "keywords": [
@@ -133,6 +133,7 @@ body {
133
133
  -moz-osx-font-smoothing: grayscale;
134
134
  }
135
135
 
136
+ body.theme-flawless,
136
137
  body.flawless-theme {
137
138
  background:
138
139
  linear-gradient(180deg, rgba(245, 158, 11, 0.03), transparent 22rem),
@@ -164,6 +165,10 @@ hr,
164
165
  color: var(--ucp-text-muted) !important;
165
166
  }
166
167
 
168
+ .text-primary {
169
+ color: var(--ucp-accent) !important;
170
+ }
171
+
167
172
  .text-body,
168
173
  .text-reset {
169
174
  color: var(--ucp-text) !important;
@@ -218,10 +223,17 @@ pre,
218
223
  width: 220px;
219
224
  min-width: 220px;
220
225
  background: var(--ucp-sidebar) !important;
226
+ background-color: var(--ucp-sidebar) !important;
221
227
  color: var(--ucp-text-muted) !important;
222
228
  border-color: var(--ucp-border) !important;
223
229
  }
224
230
 
231
+ [component="sidebar/left"].bg-light,
232
+ [component="sidebar/left"].text-dark {
233
+ background-color: var(--ucp-sidebar) !important;
234
+ color: var(--ucp-text-muted) !important;
235
+ }
236
+
225
237
  [component="sidebar/left"]:not(.open) {
226
238
  width: 64px;
227
239
  min-width: 64px;
@@ -317,6 +329,7 @@ pre,
317
329
  .dropdown-item:hover,
318
330
  .dropdown-item:focus,
319
331
  .dropdown-item.active,
332
+ .dropdown-item[aria-selected="true"],
320
333
  .dropdown-menu .nav-link:hover,
321
334
  .dropdown-menu .nav-link.active {
322
335
  background: rgba(245, 158, 11, 0.1);
@@ -397,12 +410,27 @@ pre,
397
410
  text-transform: uppercase;
398
411
  }
399
412
 
400
- .badge.border,
413
+ .badge.border:not([style*="background-color"]),
401
414
  .tag-list .tag,
402
- [component="topic/labels"] .badge {
403
- background: rgba(161, 161, 170, 0.1);
415
+ [component="topic/labels"] .badge:not([style*="background-color"]) {
416
+ background-color: rgba(24, 24, 27, 0.92) !important;
404
417
  border-color: rgba(113, 113, 122, 0.3) !important;
405
- color: var(--ucp-text-muted) !important;
418
+ color: #d4d4d8 !important;
419
+ }
420
+
421
+ .badge.stats,
422
+ [component="topic/stats"] .badge,
423
+ .category-header .stats {
424
+ background: rgba(24, 24, 27, 0.94) !important;
425
+ border-color: rgba(113, 113, 122, 0.38) !important;
426
+ color: #d4d4d8 !important;
427
+ }
428
+
429
+ .badge.stats .fw-bold,
430
+ .badge.stats .fw-normal,
431
+ [component="topic/stats"] .fw-bold,
432
+ [component="topic/stats"] .fw-normal {
433
+ color: inherit !important;
406
434
  }
407
435
 
408
436
  .tag-list .tag:hover,
@@ -412,6 +440,20 @@ pre,
412
440
  color: var(--ucp-accent) !important;
413
441
  }
414
442
 
443
+ [component="topic/category"].badge {
444
+ background-color: rgba(24, 24, 27, 0.96) !important;
445
+ border-color: rgba(245, 158, 11, 0.38) !important;
446
+ color: var(--ucp-accent-hover) !important;
447
+ }
448
+
449
+ .icon[style*="background-color"] {
450
+ background-color: #27272a !important;
451
+ border-color: rgba(245, 158, 11, 0.38) !important;
452
+ color: var(--ucp-accent-hover) !important;
453
+ box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.08);
454
+ text-shadow: none;
455
+ }
456
+
415
457
  .bg-primary,
416
458
  .text-bg-primary {
417
459
  background-color: var(--ucp-accent) !important;
@@ -439,7 +481,7 @@ pre,
439
481
  .bg-info,
440
482
  .text-bg-info {
441
483
  background-color: var(--ucp-info) !important;
442
- color: #fff !important;
484
+ color: #000 !important;
443
485
  }
444
486
 
445
487
  .btn {
@@ -464,6 +506,30 @@ pre,
464
506
  --bs-btn-active-bg: #d97706;
465
507
  --bs-btn-active-border-color: #d97706;
466
508
  --bs-btn-active-color: #000;
509
+ background-color: var(--bs-btn-bg);
510
+ border-color: var(--bs-btn-border-color);
511
+ color: var(--bs-btn-color) !important;
512
+ }
513
+
514
+ .btn-primary:hover,
515
+ .btn-primary:focus-visible {
516
+ background-color: var(--bs-btn-hover-bg);
517
+ border-color: var(--bs-btn-hover-border-color);
518
+ color: var(--bs-btn-hover-color) !important;
519
+ }
520
+
521
+ .btn-primary:active,
522
+ .btn-primary.active {
523
+ background-color: var(--bs-btn-active-bg);
524
+ border-color: var(--bs-btn-active-border-color);
525
+ color: var(--bs-btn-active-color) !important;
526
+ }
527
+
528
+ .btn-primary *,
529
+ .btn-warning *,
530
+ .btn-info *,
531
+ .btn-success * {
532
+ color: inherit !important;
467
533
  }
468
534
 
469
535
  .btn-secondary,
@@ -479,6 +545,42 @@ pre,
479
545
  --bs-btn-active-bg: rgba(245, 158, 11, 0.12);
480
546
  --bs-btn-active-border-color: rgba(245, 158, 11, 0.35);
481
547
  --bs-btn-active-color: var(--ucp-accent);
548
+ background-color: var(--bs-btn-bg);
549
+ border-color: var(--bs-btn-border-color);
550
+ color: var(--bs-btn-color);
551
+ }
552
+
553
+ .btn-secondary:hover,
554
+ .btn-secondary:focus-visible,
555
+ .btn-outline-secondary:hover,
556
+ .btn-outline-secondary:focus-visible,
557
+ .btn-light:hover,
558
+ .btn-light:focus-visible,
559
+ .btn-ghost:hover,
560
+ .btn-ghost:focus-visible {
561
+ background-color: var(--bs-btn-hover-bg);
562
+ border-color: var(--bs-btn-hover-border-color);
563
+ color: var(--bs-btn-hover-color);
564
+ }
565
+
566
+ .btn-secondary.active,
567
+ .btn-secondary:active,
568
+ .btn-outline-secondary.active,
569
+ .btn-outline-secondary:active,
570
+ .btn-light.active,
571
+ .btn-light:active,
572
+ .btn-ghost.active,
573
+ .btn-ghost:active {
574
+ background-color: var(--bs-btn-active-bg);
575
+ border-color: var(--bs-btn-active-border-color);
576
+ color: var(--bs-btn-active-color);
577
+ }
578
+
579
+ .btn:disabled,
580
+ .btn.disabled,
581
+ [aria-disabled="true"] {
582
+ cursor: not-allowed;
583
+ opacity: 0.55;
482
584
  }
483
585
 
484
586
  .btn-success {
@@ -488,6 +590,9 @@ pre,
488
590
  --bs-btn-hover-bg: #4ade80;
489
591
  --bs-btn-hover-border-color: #4ade80;
490
592
  --bs-btn-hover-color: #000;
593
+ background-color: var(--bs-btn-bg);
594
+ border-color: var(--bs-btn-border-color);
595
+ color: var(--bs-btn-color) !important;
491
596
  }
492
597
 
493
598
  .btn-danger {
@@ -497,6 +602,21 @@ pre,
497
602
  --bs-btn-hover-bg: #f87171;
498
603
  --bs-btn-hover-border-color: #f87171;
499
604
  --bs-btn-hover-color: #fff;
605
+ background-color: var(--bs-btn-bg);
606
+ border-color: var(--bs-btn-border-color);
607
+ color: var(--bs-btn-color) !important;
608
+ }
609
+
610
+ .btn-warning {
611
+ background-color: var(--ucp-warning);
612
+ border-color: var(--ucp-warning);
613
+ color: #000 !important;
614
+ }
615
+
616
+ .btn-info {
617
+ background-color: var(--ucp-info);
618
+ border-color: var(--ucp-info);
619
+ color: #000 !important;
500
620
  }
501
621
 
502
622
  .form-control,
@@ -539,35 +659,80 @@ input::placeholder {
539
659
  border-color: var(--ucp-accent);
540
660
  }
541
661
 
662
+ a:focus-visible,
663
+ button:focus-visible,
664
+ .btn:focus-visible,
665
+ .dropdown-item:focus-visible,
666
+ .nav-link:focus-visible,
667
+ .form-control:focus-visible,
668
+ .form-select:focus-visible,
669
+ .form-check-input:focus-visible,
670
+ [tabindex]:focus-visible {
671
+ outline: 2px solid var(--ucp-accent);
672
+ outline-offset: 2px;
673
+ box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.14);
674
+ }
675
+
542
676
  .alert {
543
677
  border-radius: 8px;
544
678
  border-width: 1px;
545
679
  }
546
680
 
547
681
  .alert-info {
548
- background: rgba(59, 130, 246, 0.1);
682
+ background: #102038;
549
683
  border-color: rgba(59, 130, 246, 0.25);
550
684
  color: #93c5fd;
551
685
  }
552
686
 
553
687
  .alert-success {
554
- background: rgba(34, 197, 94, 0.1);
688
+ background: #0f2a1a;
555
689
  border-color: rgba(34, 197, 94, 0.25);
556
690
  color: #86efac;
557
691
  }
558
692
 
559
693
  .alert-warning {
560
- background: rgba(245, 158, 11, 0.12);
694
+ background: #2f230f;
561
695
  border-color: rgba(245, 158, 11, 0.3);
562
696
  color: #fcd34d;
563
697
  }
564
698
 
565
699
  .alert-danger {
566
- background: rgba(239, 68, 68, 0.1);
700
+ background: #321316;
567
701
  border-color: rgba(239, 68, 68, 0.25);
568
702
  color: #fca5a5;
569
703
  }
570
704
 
705
+ .text-bg-warning,
706
+ .card.text-bg-warning {
707
+ background-color: var(--ucp-warning) !important;
708
+ color: #000 !important;
709
+ }
710
+
711
+ .text-bg-warning .card-header,
712
+ .card.text-bg-warning .card-header {
713
+ background: rgba(0, 0, 0, 0.06);
714
+ border-color: rgba(0, 0, 0, 0.16);
715
+ color: #000;
716
+ }
717
+
718
+ .btn-close {
719
+ color: #fff !important;
720
+ filter: invert(1) grayscale(100%) brightness(180%);
721
+ opacity: 0.72;
722
+ }
723
+
724
+ .text-bg-warning .btn-close {
725
+ color: #000 !important;
726
+ filter: none;
727
+ }
728
+
729
+ .btn-close:focus,
730
+ .btn-close:focus-visible {
731
+ outline: 2px solid var(--ucp-accent);
732
+ outline-offset: 2px;
733
+ box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.14);
734
+ }
735
+
571
736
  .breadcrumb {
572
737
  gap: 6px;
573
738
  margin-bottom: 0;
@@ -575,10 +740,15 @@ input::placeholder {
575
740
 
576
741
  .breadcrumb-item,
577
742
  .breadcrumb-item a {
578
- color: var(--ucp-text-muted);
743
+ color: var(--ucp-text-muted) !important;
579
744
  font-size: 0.82rem;
580
745
  }
581
746
 
747
+ .breadcrumb-item a *,
748
+ .breadcrumb .fw-semibold {
749
+ color: inherit !important;
750
+ }
751
+
582
752
  .breadcrumb-item.active {
583
753
  color: var(--ucp-text) !important;
584
754
  }
@@ -623,6 +793,16 @@ input::placeholder {
623
793
  line-height: 1.65;
624
794
  }
625
795
 
796
+ [component="post/content"] code,
797
+ .post-content code,
798
+ code {
799
+ padding: 0.12em 0.32em;
800
+ background: rgba(17, 17, 19, 0.96);
801
+ border: 1px solid rgba(245, 158, 11, 0.22);
802
+ border-radius: 4px;
803
+ color: var(--ucp-accent-hover);
804
+ }
805
+
626
806
  [component="post/signature"] {
627
807
  border-top: 1px solid var(--ucp-border);
628
808
  padding-top: 10px;
@@ -677,6 +857,13 @@ input::placeholder {
677
857
  .avatar,
678
858
  [component="user/picture"] {
679
859
  border: 1px solid rgba(245, 158, 11, 0.22);
860
+ background-color: #3f3f46 !important;
861
+ box-shadow:
862
+ inset 0 0 0 999px rgba(0, 0, 0, 0.08),
863
+ 0 0 0 1px rgba(0, 0, 0, 0.2);
864
+ color: #fff !important;
865
+ font-weight: 700;
866
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.65);
680
867
  }
681
868
 
682
869
  [component="user/status"].online,
@@ -696,6 +883,13 @@ input::placeholder {
696
883
  background: var(--ucp-danger) !important;
697
884
  }
698
885
 
886
+ [component="user/status"],
887
+ .status {
888
+ color: transparent !important;
889
+ font-size: 0 !important;
890
+ line-height: 0 !important;
891
+ }
892
+
699
893
  .bottombar-nav {
700
894
  background: var(--ucp-sidebar) !important;
701
895
  border-color: var(--ucp-border) !important;
@@ -708,6 +902,81 @@ input::placeholder {
708
902
  border-color: var(--ucp-border);
709
903
  }
710
904
 
905
+ [component="sidebar/right"] {
906
+ color: var(--ucp-text-muted);
907
+ }
908
+
909
+ [component="sidebar/right"] a:not(.btn) {
910
+ color: var(--ucp-accent);
911
+ }
912
+
913
+ html,
914
+ body,
915
+ .layout-container,
916
+ #panel,
917
+ #content,
918
+ .flex-fill,
919
+ .users,
920
+ .topic {
921
+ min-width: 0;
922
+ }
923
+
924
+ body {
925
+ overflow-x: hidden;
926
+ }
927
+
928
+ #content > .flex-fill,
929
+ .users.flex-fill,
930
+ .topic.flex-fill,
931
+ .posts-container,
932
+ body.template-topic #content > .flex-fill > .d-flex.flex-column.gap-3 {
933
+ max-width: 100%;
934
+ overflow-x: clip;
935
+ }
936
+
937
+ .topic-list-header,
938
+ .sticky-tools .card,
939
+ [component="category/controls"] {
940
+ min-width: 0;
941
+ }
942
+
943
+ .topic-list-header .card,
944
+ .sticky-tools .card {
945
+ background: var(--ucp-card);
946
+ border-color: var(--ucp-border) !important;
947
+ color: var(--ucp-text);
948
+ }
949
+
950
+ .category-children {
951
+ padding-top: 4px;
952
+ }
953
+
954
+ .category-children-item > div {
955
+ min-width: 0;
956
+ padding: 4px 6px;
957
+ border-radius: 6px;
958
+ }
959
+
960
+ .category-children-item > div:hover {
961
+ background: rgba(245, 158, 11, 0.07);
962
+ }
963
+
964
+ .category-children-item a {
965
+ color: #d4d4d8 !important;
966
+ min-width: 0;
967
+ overflow-wrap: anywhere;
968
+ }
969
+
970
+ .category-children-item a:hover {
971
+ color: var(--ucp-accent-hover) !important;
972
+ }
973
+
974
+ .login-block,
975
+ .register-block {
976
+ max-width: 28rem;
977
+ margin-inline: auto;
978
+ }
979
+
711
980
  .cmd {
712
981
  display: inline-flex;
713
982
  align-items: center;
@@ -765,6 +1034,35 @@ input::placeholder {
765
1034
  padding-bottom: 4.25rem;
766
1035
  }
767
1036
 
1037
+ html,
1038
+ body,
1039
+ .layout-container,
1040
+ #panel,
1041
+ #content {
1042
+ max-width: 100%;
1043
+ overflow-x: hidden;
1044
+ }
1045
+
1046
+ #panel,
1047
+ #content,
1048
+ .flex-fill,
1049
+ .topic,
1050
+ .users,
1051
+ .posts-container,
1052
+ .category,
1053
+ .recent {
1054
+ min-width: 0;
1055
+ }
1056
+
1057
+ .text-break,
1058
+ .text-wrap-pretty,
1059
+ [component="post/content"],
1060
+ [component="topic/header"],
1061
+ .topic-title,
1062
+ .category-header {
1063
+ overflow-wrap: anywhere;
1064
+ }
1065
+
768
1066
  [component="categories/category"],
769
1067
  [component="category/topic"],
770
1068
  .post-container,