@okjavis/nodebb-theme-javis 1.5.1 → 1.6.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@okjavis/nodebb-theme-javis",
3
- "version": "1.5.1",
3
+ "version": "1.6.0",
4
4
  "description": "Modern, premium NodeBB theme for JAVIS Community - Extends Harmony with custom styling",
5
5
  "main": "theme.js",
6
6
  "scripts": {
package/scss/_base.scss CHANGED
@@ -30,6 +30,7 @@ nav[component="sidebar/left"] {
30
30
  // Sidebar toggle container - push to bottom
31
31
  .sidebar-toggle-container {
32
32
  margin-top: auto !important; // Push to bottom
33
+ width: 100% !important;
33
34
  }
34
35
  }
35
36
 
package/scss/_feed.scss CHANGED
@@ -3,6 +3,24 @@
3
3
  // Styles for nodebb-plugin-feed (/feed route)
4
4
  // ===========================================================
5
5
 
6
+ // ===========================================================
7
+ // HIDE NEW TOPIC BUTTON AND ALL CATEGORIES ROW
8
+ // ===========================================================
9
+ // Hide New Topic button
10
+ // #new_topic,
11
+ // .btn[href*="/compose"],
12
+ // button[data-action="newTopic"],
13
+ // a[href*="/compose"] {
14
+ // display: none !important;
15
+ // }
16
+
17
+ // // Hide All categories row
18
+ // .category-selector-container,
19
+ // [component="category/dropdown"],
20
+ // .d-flex.justify-content-between.py-2.mb-2 {
21
+ // display: none !important;
22
+ // }
23
+
6
24
  // ===========================================================
7
25
  // FEED CONTAINER
8
26
  // ===========================================================
@@ -10,12 +28,12 @@
10
28
  // No max-width - let Bootstrap grid handle width
11
29
  // Already inside col-lg-9 which provides proper constraints
12
30
 
13
- // Header controls row
31
+ // Header controls row (keeping for reference, but hidden above)
14
32
  .d-flex.justify-content-between.py-2.mb-2 {
15
33
  padding: $jv-space-4 0 !important;
16
34
  margin-bottom: $jv-space-6 !important;
17
35
 
18
- // New Topic button
36
+ // New Topic button (hidden above)
19
37
  #new_topic,
20
38
  .btn-primary {
21
39
  font-weight: 600;
@@ -156,7 +156,6 @@
156
156
  div[data-widget-area] {
157
157
  display: flex;
158
158
  flex-direction: column;
159
- gap: $jv-space-6;
160
159
  }
161
160
 
162
161
  // Individual widget card
@@ -637,11 +636,35 @@ div[data-widget-area="right"] h8 {
637
636
  // ===========================================================
638
637
  // RIGHT SIDEBAR WIDGET AREA (Reddit-style)
639
638
  // ===========================================================
640
- div[data-widget-area="sidebar"],
641
- .col-lg-3[data-widget-area="sidebar"] {
639
+ div[data-widget-area="right"],
640
+ .col-lg-3.col-sm-12 {
642
641
  display: flex;
643
642
  flex-direction: column;
644
- gap: $jv-space-6;
643
+
644
+ // Sticky positioning - stays visible when scrolling
645
+ position: sticky;
646
+ top: 80px; // Adjust based on your header height
647
+ align-self: flex-start;
648
+ max-height: calc(100vh - 100px); // Account for header + padding
649
+ overflow-y: auto; // Allow scrolling if content is too tall
650
+
651
+ // Smooth scrollbar styling (webkit browsers)
652
+ &::-webkit-scrollbar {
653
+ width: 6px;
654
+ }
655
+
656
+ &::-webkit-scrollbar-track {
657
+ background: transparent;
658
+ }
659
+
660
+ &::-webkit-scrollbar-thumb {
661
+ background: rgba(0, 0, 0, 0.15);
662
+ border-radius: 3px;
663
+
664
+ &:hover {
665
+ background: rgba(0, 0, 0, 0.25);
666
+ }
667
+ }
645
668
 
646
669
  // Widget card container
647
670
  > div {
@@ -651,219 +674,155 @@ div[data-widget-area="sidebar"],
651
674
  overflow: hidden;
652
675
  }
653
676
 
654
- // Widget header/title
677
+ // Widget header/title - clean and simple
655
678
  h5, h6, .widget-title {
656
- font-size: 12px !important;
679
+ font-size: 11px !important;
657
680
  font-weight: 700 !important;
658
681
  text-transform: uppercase;
659
682
  letter-spacing: 0.5px;
660
683
  color: $jv-text-soft;
661
- padding: $jv-space-6 $jv-space-6 $jv-space-4;
662
- margin: 0 !important;
684
+ padding: $jv-space-4 $jv-space-4;
685
+ margin: 0 0 $jv-space-4 0 !important;
663
686
  border-bottom: 1px solid $jv-border-subtle;
664
- background: rgba(0, 0, 0, 0.015);
687
+ }
688
+
689
+ // Add spacing between widgets
690
+ > div + div {
691
+ margin-top: $jv-space-4;
665
692
  }
666
693
  }
667
694
 
668
695
  // ===========================================================
669
- // POPULAR TAGS WIDGET (Sidebar)
696
+ // POPULAR TAGS WIDGET (Sidebar) - Reddit-style vertical list
670
697
  // ===========================================================
671
- div[data-widget-area="sidebar"] {
672
- .popular-tags,
673
- [class*="tag"] {
674
- padding: $jv-space-4;
675
-
676
- // Tag items grid
677
- .tag-list,
678
- > div {
679
- display: flex;
680
- flex-direction: column;
681
- gap: $jv-space-2;
698
+ div[data-widget-area="right"] {
699
+ .popular-tags {
700
+ width: 100% !important;
701
+ }
682
702
 
683
- > div,
684
- > a {
685
- display: flex;
686
- align-items: center;
687
- justify-content: space-between;
688
- padding: $jv-space-4 $jv-space-4;
689
- background: transparent;
690
- border: none;
691
- border-radius: $jv-radius-sm;
692
- color: $jv-text-main;
693
- font-size: 14px;
694
- font-weight: 500;
695
- text-decoration: none;
696
- transition: background-color $jv-transition-fast, color $jv-transition-fast; // Modern transitions
697
- cursor: pointer;
703
+ .tag-list {
704
+ padding: 0 !important;
705
+ margin: 0 !important;
706
+ width: 100% !important;
707
+
708
+ // Override Bootstrap grid classes to force vertical layout
709
+ display: flex !important;
710
+ flex-direction: column !important;
711
+
712
+ // Remove any grid/row styling
713
+ &.row {
714
+ --bs-gutter-x: 0 !important;
715
+ --bs-gutter-y: 0 !important;
716
+ margin: 0 !important;
717
+ }
718
+
719
+ // Force each tag to be full width (override col classes)
720
+ > * {
721
+ width: 100% !important;
722
+ max-width: 100% !important;
723
+ flex: 0 0 100% !important;
724
+ padding: 0 !important;
725
+ }
726
+
727
+ .btn-ghost,
728
+ a.btn-ghost {
729
+ display: flex !important;
730
+ flex-direction: column !important;
731
+ align-items: flex-start !important;
732
+ background: transparent !important;
733
+ border: none !important;
734
+ border-radius: 0 !important;
735
+ padding: $jv-space-3 $jv-space-4 !important;
736
+ transition: background-color $jv-transition-fast !important;
737
+ text-align: left !important;
738
+ width: 100% !important;
739
+ margin: 0 !important;
698
740
 
699
- &:hover {
700
- background: rgba(0, 81, 255, 0.06);
701
- color: $jv-primary;
702
- }
741
+ &:hover {
742
+ background: $jv-hover-bg !important;
743
+ }
703
744
 
704
- // Focus state for accessibility
705
- &:focus-visible {
706
- outline: none;
707
- box-shadow: $jv-focus-ring;
708
- }
745
+ .tag-item {
746
+ font-size: 14px !important;
747
+ font-weight: 600 !important;
748
+ color: $jv-text-main !important;
749
+ margin-bottom: $jv-space-1 !important;
750
+ }
709
751
 
710
- // Topic count
711
- small,
712
- .count,
713
- span:last-child {
714
- font-size: 12px;
715
- color: $jv-text-soft;
716
- font-weight: 400;
717
- }
752
+ .tag-topic-count {
753
+ font-size: 12px !important;
754
+ font-weight: 400 !important;
755
+ color: $jv-text-soft !important;
718
756
  }
719
757
  }
720
758
  }
759
+
721
760
  }
722
761
 
723
762
  // ===========================================================
724
- // RECENT/TRENDING POSTS WIDGET (Sidebar)
763
+ // RECENT/TRENDING POSTS WIDGET (Sidebar) - Widget Essentials Specific
725
764
  // ===========================================================
726
- div[data-widget-area="sidebar"] {
765
+ div[data-widget-area="right"] {
766
+ // Recent posts container with scrolling
727
767
  #recent_posts,
728
- .recent-posts,
729
- ul {
730
- list-style: none;
768
+ ul[id*="recent"] {
769
+ max-height: 400px;
770
+ overflow-y: auto;
731
771
  padding: 0;
732
772
  margin: 0;
733
773
 
734
- li {
735
- padding: $jv-space-4 $jv-space-6;
736
- border-bottom: 1px solid $jv-border-subtle;
737
- transition: background-color $jv-transition-fast; // Modern transition
738
-
739
- &:last-child {
740
- border-bottom: none;
741
- }
742
-
743
- &:hover {
744
- background: $jv-hover-bg; // Consistent hover state
745
- }
746
-
747
- // Focus state for accessibility
748
- &:focus-within {
749
- outline: none;
750
- background: $jv-hover-bg;
751
- }
752
-
753
- // Post header with avatar
754
- .d-flex {
755
- display: flex;
756
- align-items: center;
757
- gap: $jv-space-2;
758
- margin-bottom: $jv-space-2;
759
-
760
- // Avatar
761
- .avatar,
762
- img[class*="avatar"] {
763
- width: 20px !important;
764
- height: 20px !important;
765
- border-radius: 50%;
766
- flex-shrink: 0;
767
- }
774
+ // Smooth scrollbar
775
+ &::-webkit-scrollbar {
776
+ width: 4px;
777
+ }
768
778
 
769
- // Username
770
- a:first-of-type {
771
- font-size: 12px;
772
- font-weight: 600;
773
- color: $jv-text-main;
774
- text-decoration: none;
779
+ &::-webkit-scrollbar-track {
780
+ background: transparent;
781
+ }
775
782
 
776
- &:hover {
777
- color: $jv-primary;
778
- }
779
- }
783
+ &::-webkit-scrollbar-thumb {
784
+ background: rgba(0, 0, 0, 0.15);
785
+ border-radius: 2px;
780
786
 
781
- // Timeago
782
- .timeago {
783
- font-size: 11px;
784
- color: $jv-text-soft;
785
- }
787
+ &:hover {
788
+ background: rgba(0, 0, 0, 0.25);
786
789
  }
790
+ }
791
+ }
787
792
 
788
- // Post title/content
789
- > a,
790
- .post-content a,
791
- p {
792
- display: block;
793
- font-size: 13px;
794
- font-weight: 500;
795
- color: $jv-text-main;
796
- text-decoration: none;
797
- line-height: 1.4;
798
- margin-bottom: $jv-space-2;
799
-
800
- // Line clamp
801
- display: -webkit-box;
802
- -webkit-line-clamp: 2;
803
- -webkit-box-orient: vertical;
804
- overflow: hidden;
793
+ // Style the actual widget-posts items
794
+ .widget-posts {
795
+ padding: $jv-space-3 $jv-space-4 !important;
796
+ transition: background-color $jv-transition-fast !important;
797
+ border-bottom: 1px solid $jv-border-subtle !important;
805
798
 
806
- &:hover {
807
- color: $jv-primary;
808
- }
809
- }
810
-
811
- // Content preview text
812
- .post-content,
813
- .content,
814
- .text-xs {
815
- font-size: 12px;
816
- color: $jv-text-muted;
817
- line-height: 1.45;
818
- display: -webkit-box;
819
- -webkit-line-clamp: 2;
820
- -webkit-box-orient: vertical;
821
- overflow: hidden;
822
- }
799
+ &:last-child {
800
+ border-bottom: none !important;
801
+ }
823
802
 
824
- // Read more link
825
- a.stretched-link,
826
- .read-more {
827
- font-size: 12px;
828
- font-weight: 600;
829
- color: $jv-primary;
830
- text-decoration: none;
831
- margin-top: $jv-space-2;
832
- display: inline-block;
803
+ &:hover {
804
+ background: $jv-hover-bg !important;
805
+ }
833
806
 
834
- &:hover {
835
- text-decoration: underline;
836
- }
837
- }
807
+ .post-author a {
808
+ font-size: 12px !important;
809
+ font-weight: 500 !important;
810
+ color: $jv-text-main !important;
838
811
  }
839
- }
840
- }
841
812
 
842
- // ===========================================================
843
- // WIDGET HEADER ICONS
844
- // ===========================================================
845
- div[data-widget-area="sidebar"] {
846
- h5, h6, .widget-title {
847
- display: flex;
848
- align-items: center;
849
- gap: $jv-space-2;
813
+ .line-clamp-6 {
814
+ font-size: 13px !important;
815
+ font-weight: 400 !important;
816
+ color: $jv-text-main !important;
817
+ line-height: 1.5 !important;
818
+ }
850
819
 
851
- i {
852
- font-size: 14px;
853
- color: $jv-text-soft;
820
+ .post-preview-footer a {
821
+ font-size: 12px !important;
822
+ font-weight: 500 !important;
823
+ color: $jv-primary !important;
824
+ text-decoration: none !important;
854
825
  }
855
826
  }
856
827
  }
857
828
 
858
- // ===========================================================
859
- // EMPTY STATE
860
- // ===========================================================
861
- div[data-widget-area="sidebar"] {
862
- .empty,
863
- .no-content {
864
- padding: $jv-space-8;
865
- text-align: center;
866
- color: $jv-text-soft;
867
- font-size: $jv-font-size-sm;
868
- }
869
- }