nodebb-theme-flawless 1.1.0 → 1.1.2

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 +347 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-flawless",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
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;
@@ -214,21 +219,33 @@ pre,
214
219
  color: var(--ucp-text);
215
220
  }
216
221
 
217
- [component="sidebar/left"] {
222
+ [component="sidebar/left"],
223
+ .sidebar.sidebar-left {
218
224
  width: 220px;
219
225
  min-width: 220px;
220
- background: var(--ucp-sidebar) !important;
226
+ background-color: #111113 !important;
221
227
  color: var(--ucp-text-muted) !important;
222
228
  border-color: var(--ucp-border) !important;
223
229
  }
224
230
 
225
- [component="sidebar/left"]:not(.open) {
231
+ [component="sidebar/left"].bg-light,
232
+ [component="sidebar/left"].text-dark,
233
+ .sidebar.sidebar-left.bg-light,
234
+ .sidebar.sidebar-left.text-dark {
235
+ background-color: #111113 !important;
236
+ color: var(--ucp-text-muted) !important;
237
+ }
238
+
239
+ [component="sidebar/left"]:not(.open),
240
+ .sidebar.sidebar-left:not(.open) {
226
241
  width: 64px;
227
242
  min-width: 64px;
228
243
  }
229
244
 
230
245
  [component="sidebar/left"] .navigation-link,
231
246
  [component="sidebar/left"] [component="sidebar/toggle"],
247
+ .sidebar.sidebar-left .navigation-link,
248
+ .sidebar.sidebar-left [component="sidebar/toggle"],
232
249
  .bottombar-nav .nav-link {
233
250
  color: var(--ucp-text-muted) !important;
234
251
  border-radius: 8px;
@@ -238,6 +255,8 @@ pre,
238
255
 
239
256
  [component="sidebar/left"] .navigation-link:hover,
240
257
  [component="sidebar/left"] [component="sidebar/toggle"]:hover,
258
+ .sidebar.sidebar-left .navigation-link:hover,
259
+ .sidebar.sidebar-left [component="sidebar/toggle"]:hover,
241
260
  .bottombar-nav .nav-link:hover {
242
261
  background: rgba(245, 158, 11, 0.05);
243
262
  color: var(--ucp-text) !important;
@@ -245,6 +264,8 @@ pre,
245
264
 
246
265
  [component="sidebar/left"] .nav-item.active .navigation-link,
247
266
  [component="sidebar/left"] .navigation-link.active,
267
+ .sidebar.sidebar-left .nav-item.active .navigation-link,
268
+ .sidebar.sidebar-left .navigation-link.active,
248
269
  .navigation-dropdown .nav-item.active .navigation-link {
249
270
  background: rgba(245, 158, 11, 0.1);
250
271
  color: var(--ucp-accent) !important;
@@ -252,8 +273,9 @@ pre,
252
273
  }
253
274
 
254
275
  [component="sidebar/left"] .badge,
276
+ .sidebar.sidebar-left .badge,
255
277
  .bottombar-nav .badge {
256
- background: var(--ucp-accent) !important;
278
+ background-color: #f59e0b !important;
257
279
  color: #000 !important;
258
280
  }
259
281
 
@@ -317,6 +339,7 @@ pre,
317
339
  .dropdown-item:hover,
318
340
  .dropdown-item:focus,
319
341
  .dropdown-item.active,
342
+ .dropdown-item[aria-selected="true"],
320
343
  .dropdown-menu .nav-link:hover,
321
344
  .dropdown-menu .nav-link.active {
322
345
  background: rgba(245, 158, 11, 0.1);
@@ -397,12 +420,27 @@ pre,
397
420
  text-transform: uppercase;
398
421
  }
399
422
 
400
- .badge.border,
423
+ .badge.border:not([style*="background-color"]),
401
424
  .tag-list .tag,
402
- [component="topic/labels"] .badge {
403
- background: rgba(161, 161, 170, 0.1);
425
+ [component="topic/labels"] .badge:not([style*="background-color"]) {
426
+ background-color: rgba(24, 24, 27, 0.92) !important;
404
427
  border-color: rgba(113, 113, 122, 0.3) !important;
405
- color: var(--ucp-text-muted) !important;
428
+ color: #d4d4d8 !important;
429
+ }
430
+
431
+ .badge.stats,
432
+ [component="topic/stats"] .badge,
433
+ .category-header .stats {
434
+ background: rgba(24, 24, 27, 0.94) !important;
435
+ border-color: rgba(113, 113, 122, 0.38) !important;
436
+ color: #d4d4d8 !important;
437
+ }
438
+
439
+ .badge.stats .fw-bold,
440
+ .badge.stats .fw-normal,
441
+ [component="topic/stats"] .fw-bold,
442
+ [component="topic/stats"] .fw-normal {
443
+ color: inherit !important;
406
444
  }
407
445
 
408
446
  .tag-list .tag:hover,
@@ -412,6 +450,20 @@ pre,
412
450
  color: var(--ucp-accent) !important;
413
451
  }
414
452
 
453
+ [component="topic/category"].badge {
454
+ background-color: rgba(24, 24, 27, 0.96) !important;
455
+ border-color: rgba(245, 158, 11, 0.38) !important;
456
+ color: var(--ucp-accent-hover) !important;
457
+ }
458
+
459
+ .icon[style*="background-color"] {
460
+ background-color: #27272a !important;
461
+ border-color: rgba(245, 158, 11, 0.38) !important;
462
+ color: var(--ucp-accent-hover) !important;
463
+ box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.08);
464
+ text-shadow: none;
465
+ }
466
+
415
467
  .bg-primary,
416
468
  .text-bg-primary {
417
469
  background-color: var(--ucp-accent) !important;
@@ -439,7 +491,7 @@ pre,
439
491
  .bg-info,
440
492
  .text-bg-info {
441
493
  background-color: var(--ucp-info) !important;
442
- color: #fff !important;
494
+ color: #000 !important;
443
495
  }
444
496
 
445
497
  .btn {
@@ -464,6 +516,30 @@ pre,
464
516
  --bs-btn-active-bg: #d97706;
465
517
  --bs-btn-active-border-color: #d97706;
466
518
  --bs-btn-active-color: #000;
519
+ background-color: var(--bs-btn-bg);
520
+ border-color: var(--bs-btn-border-color);
521
+ color: var(--bs-btn-color) !important;
522
+ }
523
+
524
+ .btn-primary:hover,
525
+ .btn-primary:focus-visible {
526
+ background-color: var(--bs-btn-hover-bg);
527
+ border-color: var(--bs-btn-hover-border-color);
528
+ color: var(--bs-btn-hover-color) !important;
529
+ }
530
+
531
+ .btn-primary:active,
532
+ .btn-primary.active {
533
+ background-color: var(--bs-btn-active-bg);
534
+ border-color: var(--bs-btn-active-border-color);
535
+ color: var(--bs-btn-active-color) !important;
536
+ }
537
+
538
+ .btn-primary *,
539
+ .btn-warning *,
540
+ .btn-info *,
541
+ .btn-success * {
542
+ color: inherit !important;
467
543
  }
468
544
 
469
545
  .btn-secondary,
@@ -479,6 +555,42 @@ pre,
479
555
  --bs-btn-active-bg: rgba(245, 158, 11, 0.12);
480
556
  --bs-btn-active-border-color: rgba(245, 158, 11, 0.35);
481
557
  --bs-btn-active-color: var(--ucp-accent);
558
+ background-color: var(--bs-btn-bg);
559
+ border-color: var(--bs-btn-border-color);
560
+ color: var(--bs-btn-color);
561
+ }
562
+
563
+ .btn-secondary:hover,
564
+ .btn-secondary:focus-visible,
565
+ .btn-outline-secondary:hover,
566
+ .btn-outline-secondary:focus-visible,
567
+ .btn-light:hover,
568
+ .btn-light:focus-visible,
569
+ .btn-ghost:hover,
570
+ .btn-ghost:focus-visible {
571
+ background-color: var(--bs-btn-hover-bg);
572
+ border-color: var(--bs-btn-hover-border-color);
573
+ color: var(--bs-btn-hover-color);
574
+ }
575
+
576
+ .btn-secondary.active,
577
+ .btn-secondary:active,
578
+ .btn-outline-secondary.active,
579
+ .btn-outline-secondary:active,
580
+ .btn-light.active,
581
+ .btn-light:active,
582
+ .btn-ghost.active,
583
+ .btn-ghost:active {
584
+ background-color: var(--bs-btn-active-bg);
585
+ border-color: var(--bs-btn-active-border-color);
586
+ color: var(--bs-btn-active-color);
587
+ }
588
+
589
+ .btn:disabled,
590
+ .btn.disabled,
591
+ [aria-disabled="true"] {
592
+ cursor: not-allowed;
593
+ opacity: 0.55;
482
594
  }
483
595
 
484
596
  .btn-success {
@@ -488,6 +600,9 @@ pre,
488
600
  --bs-btn-hover-bg: #4ade80;
489
601
  --bs-btn-hover-border-color: #4ade80;
490
602
  --bs-btn-hover-color: #000;
603
+ background-color: var(--bs-btn-bg);
604
+ border-color: var(--bs-btn-border-color);
605
+ color: var(--bs-btn-color) !important;
491
606
  }
492
607
 
493
608
  .btn-danger {
@@ -497,6 +612,21 @@ pre,
497
612
  --bs-btn-hover-bg: #f87171;
498
613
  --bs-btn-hover-border-color: #f87171;
499
614
  --bs-btn-hover-color: #fff;
615
+ background-color: var(--bs-btn-bg);
616
+ border-color: var(--bs-btn-border-color);
617
+ color: var(--bs-btn-color) !important;
618
+ }
619
+
620
+ .btn-warning {
621
+ background-color: var(--ucp-warning);
622
+ border-color: var(--ucp-warning);
623
+ color: #000 !important;
624
+ }
625
+
626
+ .btn-info {
627
+ background-color: var(--ucp-info);
628
+ border-color: var(--ucp-info);
629
+ color: #000 !important;
500
630
  }
501
631
 
502
632
  .form-control,
@@ -539,35 +669,80 @@ input::placeholder {
539
669
  border-color: var(--ucp-accent);
540
670
  }
541
671
 
672
+ a:focus-visible,
673
+ button:focus-visible,
674
+ .btn:focus-visible,
675
+ .dropdown-item:focus-visible,
676
+ .nav-link:focus-visible,
677
+ .form-control:focus-visible,
678
+ .form-select:focus-visible,
679
+ .form-check-input:focus-visible,
680
+ [tabindex]:focus-visible {
681
+ outline: 2px solid var(--ucp-accent);
682
+ outline-offset: 2px;
683
+ box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.14);
684
+ }
685
+
542
686
  .alert {
543
687
  border-radius: 8px;
544
688
  border-width: 1px;
545
689
  }
546
690
 
547
691
  .alert-info {
548
- background: rgba(59, 130, 246, 0.1);
692
+ background: #102038;
549
693
  border-color: rgba(59, 130, 246, 0.25);
550
694
  color: #93c5fd;
551
695
  }
552
696
 
553
697
  .alert-success {
554
- background: rgba(34, 197, 94, 0.1);
698
+ background: #0f2a1a;
555
699
  border-color: rgba(34, 197, 94, 0.25);
556
700
  color: #86efac;
557
701
  }
558
702
 
559
703
  .alert-warning {
560
- background: rgba(245, 158, 11, 0.12);
704
+ background: #2f230f;
561
705
  border-color: rgba(245, 158, 11, 0.3);
562
706
  color: #fcd34d;
563
707
  }
564
708
 
565
709
  .alert-danger {
566
- background: rgba(239, 68, 68, 0.1);
710
+ background: #321316;
567
711
  border-color: rgba(239, 68, 68, 0.25);
568
712
  color: #fca5a5;
569
713
  }
570
714
 
715
+ .text-bg-warning,
716
+ .card.text-bg-warning {
717
+ background-color: var(--ucp-warning) !important;
718
+ color: #000 !important;
719
+ }
720
+
721
+ .text-bg-warning .card-header,
722
+ .card.text-bg-warning .card-header {
723
+ background: rgba(0, 0, 0, 0.06);
724
+ border-color: rgba(0, 0, 0, 0.16);
725
+ color: #000;
726
+ }
727
+
728
+ .btn-close {
729
+ color: #fff !important;
730
+ filter: invert(1) grayscale(100%) brightness(180%);
731
+ opacity: 0.72;
732
+ }
733
+
734
+ .text-bg-warning .btn-close {
735
+ color: #000 !important;
736
+ filter: none;
737
+ }
738
+
739
+ .btn-close:focus,
740
+ .btn-close:focus-visible {
741
+ outline: 2px solid var(--ucp-accent);
742
+ outline-offset: 2px;
743
+ box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.14);
744
+ }
745
+
571
746
  .breadcrumb {
572
747
  gap: 6px;
573
748
  margin-bottom: 0;
@@ -575,10 +750,15 @@ input::placeholder {
575
750
 
576
751
  .breadcrumb-item,
577
752
  .breadcrumb-item a {
578
- color: var(--ucp-text-muted);
753
+ color: var(--ucp-text-muted) !important;
579
754
  font-size: 0.82rem;
580
755
  }
581
756
 
757
+ .breadcrumb-item a *,
758
+ .breadcrumb .fw-semibold {
759
+ color: inherit !important;
760
+ }
761
+
582
762
  .breadcrumb-item.active {
583
763
  color: var(--ucp-text) !important;
584
764
  }
@@ -623,6 +803,16 @@ input::placeholder {
623
803
  line-height: 1.65;
624
804
  }
625
805
 
806
+ [component="post/content"] code,
807
+ .post-content code,
808
+ code {
809
+ padding: 0.12em 0.32em;
810
+ background: rgba(17, 17, 19, 0.96);
811
+ border: 1px solid rgba(245, 158, 11, 0.22);
812
+ border-radius: 4px;
813
+ color: var(--ucp-accent-hover);
814
+ }
815
+
626
816
  [component="post/signature"] {
627
817
  border-top: 1px solid var(--ucp-border);
628
818
  padding-top: 10px;
@@ -677,27 +867,41 @@ input::placeholder {
677
867
  .avatar,
678
868
  [component="user/picture"] {
679
869
  border: 1px solid rgba(245, 158, 11, 0.22);
870
+ background-color: #3f3f46 !important;
871
+ box-shadow:
872
+ inset 0 0 0 999px rgba(0, 0, 0, 0.08),
873
+ 0 0 0 1px rgba(0, 0, 0, 0.2);
874
+ color: #fff !important;
875
+ font-weight: 700;
876
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.65);
680
877
  }
681
878
 
682
879
  [component="user/status"].online,
683
880
  .status.online {
684
- background: var(--ucp-success) !important;
881
+ background-color: #22c55e !important;
685
882
  }
686
883
 
687
884
  [component="user/status"].away,
688
885
  .status.away {
689
- background: var(--ucp-warning) !important;
886
+ background-color: #f59e0b !important;
690
887
  }
691
888
 
692
889
  [component="user/status"].dnd,
693
890
  .status.dnd,
694
891
  [component="user/status"].offline,
695
892
  .status.offline {
696
- background: var(--ucp-danger) !important;
893
+ background-color: #ef4444 !important;
894
+ }
895
+
896
+ [component="user/status"],
897
+ .status {
898
+ color: transparent !important;
899
+ font-size: 0 !important;
900
+ line-height: 0 !important;
697
901
  }
698
902
 
699
903
  .bottombar-nav {
700
- background: var(--ucp-sidebar) !important;
904
+ background-color: #111113 !important;
701
905
  border-color: var(--ucp-border) !important;
702
906
  color: var(--ucp-text) !important;
703
907
  }
@@ -708,6 +912,102 @@ input::placeholder {
708
912
  border-color: var(--ucp-border);
709
913
  }
710
914
 
915
+ [component="sidebar/right"] {
916
+ background-color: #111113 !important;
917
+ border-color: var(--ucp-border) !important;
918
+ color: var(--ucp-text-muted);
919
+ }
920
+
921
+ [component="sidebar/right"] a:not(.btn) {
922
+ color: var(--ucp-accent);
923
+ }
924
+
925
+ .sidebar.sidebar-right,
926
+ .sidebar.sidebar-right.bg-light,
927
+ .sidebar.sidebar-right.text-dark {
928
+ background-color: #111113 !important;
929
+ border-color: var(--ucp-border) !important;
930
+ color: var(--ucp-text-muted) !important;
931
+ }
932
+
933
+ .sidebar.sidebar-right .nav-link {
934
+ color: var(--ucp-text-muted) !important;
935
+ border-radius: 8px;
936
+ }
937
+
938
+ .sidebar.sidebar-right .nav-link:hover,
939
+ .sidebar.sidebar-right .nav-link:focus-visible {
940
+ background-color: rgba(245, 158, 11, 0.08);
941
+ color: var(--ucp-text) !important;
942
+ }
943
+
944
+ html,
945
+ body,
946
+ .layout-container,
947
+ #panel,
948
+ #content,
949
+ .flex-fill,
950
+ .users,
951
+ .topic {
952
+ min-width: 0;
953
+ }
954
+
955
+ body {
956
+ overflow-x: hidden;
957
+ }
958
+
959
+ #content > .flex-fill,
960
+ .users.flex-fill,
961
+ .topic.flex-fill,
962
+ .posts-container,
963
+ body.template-topic #content > .flex-fill > .d-flex.flex-column.gap-3 {
964
+ max-width: 100%;
965
+ overflow-x: clip;
966
+ }
967
+
968
+ .topic-list-header,
969
+ .sticky-tools .card,
970
+ [component="category/controls"] {
971
+ min-width: 0;
972
+ }
973
+
974
+ .topic-list-header .card,
975
+ .sticky-tools .card {
976
+ background: var(--ucp-card);
977
+ border-color: var(--ucp-border) !important;
978
+ color: var(--ucp-text);
979
+ }
980
+
981
+ .category-children {
982
+ padding-top: 4px;
983
+ }
984
+
985
+ .category-children-item > div {
986
+ min-width: 0;
987
+ padding: 4px 6px;
988
+ border-radius: 6px;
989
+ }
990
+
991
+ .category-children-item > div:hover {
992
+ background: rgba(245, 158, 11, 0.07);
993
+ }
994
+
995
+ .category-children-item a {
996
+ color: #d4d4d8 !important;
997
+ min-width: 0;
998
+ overflow-wrap: anywhere;
999
+ }
1000
+
1001
+ .category-children-item a:hover {
1002
+ color: var(--ucp-accent-hover) !important;
1003
+ }
1004
+
1005
+ .login-block,
1006
+ .register-block {
1007
+ max-width: 28rem;
1008
+ margin-inline: auto;
1009
+ }
1010
+
711
1011
  .cmd {
712
1012
  display: inline-flex;
713
1013
  align-items: center;
@@ -765,6 +1065,35 @@ input::placeholder {
765
1065
  padding-bottom: 4.25rem;
766
1066
  }
767
1067
 
1068
+ html,
1069
+ body,
1070
+ .layout-container,
1071
+ #panel,
1072
+ #content {
1073
+ max-width: 100%;
1074
+ overflow-x: hidden;
1075
+ }
1076
+
1077
+ #panel,
1078
+ #content,
1079
+ .flex-fill,
1080
+ .topic,
1081
+ .users,
1082
+ .posts-container,
1083
+ .category,
1084
+ .recent {
1085
+ min-width: 0;
1086
+ }
1087
+
1088
+ .text-break,
1089
+ .text-wrap-pretty,
1090
+ [component="post/content"],
1091
+ [component="topic/header"],
1092
+ .topic-title,
1093
+ .category-header {
1094
+ overflow-wrap: anywhere;
1095
+ }
1096
+
768
1097
  [component="categories/category"],
769
1098
  [component="category/topic"],
770
1099
  .post-container,