@okjavis/nodebb-theme-javis 1.5.0 → 1.5.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.
- package/package.json +1 -1
- package/scss/_base.scss +9 -1
- package/scss/_buttons.scss +12 -32
- package/scss/_cards.scss +98 -54
- package/scss/_categories.scss +26 -11
- package/scss/_feed.scss +82 -43
- package/scss/_forms.scss +65 -27
- package/scss/_sidebar.scss +74 -20
- package/scss/_variables.scss +47 -12
package/scss/_sidebar.scss
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
font-size: $jv-font-size-sm;
|
|
76
76
|
font-weight: 500;
|
|
77
77
|
border-radius: $jv-radius-sm;
|
|
78
|
-
transition:
|
|
78
|
+
transition: background-color $jv-transition-fast, color $jv-transition-fast; // Modern transitions
|
|
79
79
|
|
|
80
80
|
i {
|
|
81
81
|
width: 18px;
|
|
@@ -93,6 +93,12 @@
|
|
|
93
93
|
color: $jv-primary;
|
|
94
94
|
font-weight: 600;
|
|
95
95
|
}
|
|
96
|
+
|
|
97
|
+
// Focus state for accessibility
|
|
98
|
+
&:focus-visible {
|
|
99
|
+
outline: none;
|
|
100
|
+
box-shadow: $jv-focus-ring;
|
|
101
|
+
}
|
|
96
102
|
}
|
|
97
103
|
|
|
98
104
|
// Sidebar section headers
|
|
@@ -118,10 +124,16 @@
|
|
|
118
124
|
color: $jv-text-main;
|
|
119
125
|
font-size: $jv-font-size-sm;
|
|
120
126
|
border-radius: $jv-radius-sm;
|
|
121
|
-
transition: background-color
|
|
127
|
+
transition: background-color $jv-transition-fast; // Modern transition
|
|
122
128
|
|
|
123
129
|
&:hover {
|
|
124
|
-
background:
|
|
130
|
+
background: $jv-hover-bg; // Consistent hover state
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Focus state for accessibility
|
|
134
|
+
&:focus-within {
|
|
135
|
+
outline: none;
|
|
136
|
+
background: $jv-hover-bg;
|
|
125
137
|
}
|
|
126
138
|
|
|
127
139
|
.category-icon {
|
|
@@ -153,10 +165,16 @@ div[data-widget-area] {
|
|
|
153
165
|
border: 1px solid $jv-border-subtle;
|
|
154
166
|
border-radius: $jv-radius-lg;
|
|
155
167
|
padding: $jv-space-8;
|
|
156
|
-
transition:
|
|
168
|
+
transition: $jv-transition-shadow; // Modern transition
|
|
157
169
|
|
|
158
170
|
&:hover {
|
|
159
|
-
box-shadow: $jv-shadow-
|
|
171
|
+
box-shadow: $jv-shadow-sm; // shadcn subtle shadow
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Focus state for accessibility
|
|
175
|
+
&:focus-within {
|
|
176
|
+
outline: none;
|
|
177
|
+
box-shadow: $jv-shadow-md, $jv-focus-ring;
|
|
160
178
|
}
|
|
161
179
|
}
|
|
162
180
|
|
|
@@ -192,11 +210,17 @@ div[data-widget-area="right"] h8 {
|
|
|
192
210
|
flex-direction: column;
|
|
193
211
|
gap: 2px;
|
|
194
212
|
cursor: pointer;
|
|
195
|
-
transition: border-color
|
|
213
|
+
transition: border-color $jv-transition-fast, background-color $jv-transition-fast; // Modern transitions
|
|
196
214
|
|
|
197
215
|
&:hover {
|
|
198
|
-
border-color:
|
|
199
|
-
background:
|
|
216
|
+
border-color: $jv-border-strong; // Consistent border
|
|
217
|
+
background: $jv-hover-bg; // Consistent hover state
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Focus state for accessibility
|
|
221
|
+
&:focus-visible {
|
|
222
|
+
outline: none;
|
|
223
|
+
box-shadow: $jv-focus-ring;
|
|
200
224
|
}
|
|
201
225
|
|
|
202
226
|
small {
|
|
@@ -224,11 +248,17 @@ div[data-widget-area="right"] h8 {
|
|
|
224
248
|
display: flex;
|
|
225
249
|
flex-direction: column;
|
|
226
250
|
gap: $jv-space-4;
|
|
227
|
-
transition:
|
|
251
|
+
transition: $jv-transition-shadow, border-color $jv-transition-fast; // Modern transitions
|
|
228
252
|
|
|
229
253
|
&:hover {
|
|
230
|
-
border-color:
|
|
231
|
-
box-shadow: $jv-shadow-
|
|
254
|
+
border-color: $jv-border-strong; // Consistent border
|
|
255
|
+
box-shadow: $jv-shadow-sm; // shadcn subtle shadow
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Focus state for accessibility
|
|
259
|
+
&:focus-within {
|
|
260
|
+
outline: none;
|
|
261
|
+
box-shadow: $jv-shadow-md, $jv-focus-ring;
|
|
232
262
|
}
|
|
233
263
|
|
|
234
264
|
// Meta info
|
|
@@ -304,12 +334,18 @@ div[data-widget-area="right"] h8 {
|
|
|
304
334
|
border-radius: 50%;
|
|
305
335
|
object-fit: cover;
|
|
306
336
|
border: 2px solid $jv-surface;
|
|
307
|
-
transition: transform
|
|
337
|
+
transition: transform $jv-transition-fast; // Modern transition
|
|
308
338
|
|
|
309
339
|
&:hover {
|
|
310
340
|
transform: scale(1.1);
|
|
311
341
|
z-index: 10;
|
|
312
342
|
}
|
|
343
|
+
|
|
344
|
+
// Focus state for accessibility
|
|
345
|
+
&:focus {
|
|
346
|
+
outline: none;
|
|
347
|
+
box-shadow: $jv-focus-ring;
|
|
348
|
+
}
|
|
313
349
|
}
|
|
314
350
|
|
|
315
351
|
.avatar-stack {
|
|
@@ -337,20 +373,26 @@ div[data-widget-area="right"] h8 {
|
|
|
337
373
|
gap: $jv-space-4;
|
|
338
374
|
padding: $jv-space-4 0;
|
|
339
375
|
border-bottom: 1px solid $jv-border-subtle;
|
|
340
|
-
transition: background-color
|
|
376
|
+
transition: background-color $jv-transition-fast; // Modern transition
|
|
341
377
|
|
|
342
378
|
&:last-child {
|
|
343
379
|
border-bottom: none;
|
|
344
380
|
}
|
|
345
381
|
|
|
346
382
|
&:hover {
|
|
347
|
-
background:
|
|
383
|
+
background: $jv-hover-bg; // Consistent hover state
|
|
348
384
|
margin: 0 (-$jv-space-4);
|
|
349
385
|
padding-left: $jv-space-4;
|
|
350
386
|
padding-right: $jv-space-4;
|
|
351
387
|
border-radius: $jv-radius-sm;
|
|
352
388
|
}
|
|
353
389
|
|
|
390
|
+
// Focus state for accessibility
|
|
391
|
+
&:focus-within {
|
|
392
|
+
outline: none;
|
|
393
|
+
background: $jv-hover-bg;
|
|
394
|
+
}
|
|
395
|
+
|
|
354
396
|
.category-icon {
|
|
355
397
|
width: 24px;
|
|
356
398
|
height: 24px;
|
|
@@ -565,8 +607,8 @@ div[data-widget-area="right"] h8 {
|
|
|
565
607
|
width: 280px;
|
|
566
608
|
z-index: 1050;
|
|
567
609
|
transform: translateX(-100%);
|
|
568
|
-
transition: transform
|
|
569
|
-
box-shadow:
|
|
610
|
+
transition: transform $jv-transition-slow; // Modern transition
|
|
611
|
+
box-shadow: $jv-shadow-lg; // shadcn drawer shadow
|
|
570
612
|
|
|
571
613
|
&.open {
|
|
572
614
|
transform: translateX(0);
|
|
@@ -583,7 +625,7 @@ div[data-widget-area="right"] h8 {
|
|
|
583
625
|
z-index: 1040;
|
|
584
626
|
opacity: 0;
|
|
585
627
|
visibility: hidden;
|
|
586
|
-
transition: opacity
|
|
628
|
+
transition: opacity $jv-transition-slow, visibility $jv-transition-slow; // Modern transitions
|
|
587
629
|
|
|
588
630
|
&.show {
|
|
589
631
|
opacity: 1;
|
|
@@ -651,7 +693,7 @@ div[data-widget-area="sidebar"] {
|
|
|
651
693
|
font-size: 14px;
|
|
652
694
|
font-weight: 500;
|
|
653
695
|
text-decoration: none;
|
|
654
|
-
transition: background-color
|
|
696
|
+
transition: background-color $jv-transition-fast, color $jv-transition-fast; // Modern transitions
|
|
655
697
|
cursor: pointer;
|
|
656
698
|
|
|
657
699
|
&:hover {
|
|
@@ -659,6 +701,12 @@ div[data-widget-area="sidebar"] {
|
|
|
659
701
|
color: $jv-primary;
|
|
660
702
|
}
|
|
661
703
|
|
|
704
|
+
// Focus state for accessibility
|
|
705
|
+
&:focus-visible {
|
|
706
|
+
outline: none;
|
|
707
|
+
box-shadow: $jv-focus-ring;
|
|
708
|
+
}
|
|
709
|
+
|
|
662
710
|
// Topic count
|
|
663
711
|
small,
|
|
664
712
|
.count,
|
|
@@ -686,14 +734,20 @@ div[data-widget-area="sidebar"] {
|
|
|
686
734
|
li {
|
|
687
735
|
padding: $jv-space-4 $jv-space-6;
|
|
688
736
|
border-bottom: 1px solid $jv-border-subtle;
|
|
689
|
-
transition: background-color
|
|
737
|
+
transition: background-color $jv-transition-fast; // Modern transition
|
|
690
738
|
|
|
691
739
|
&:last-child {
|
|
692
740
|
border-bottom: none;
|
|
693
741
|
}
|
|
694
742
|
|
|
695
743
|
&:hover {
|
|
696
|
-
background:
|
|
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;
|
|
697
751
|
}
|
|
698
752
|
|
|
699
753
|
// Post header with avatar
|
package/scss/_variables.scss
CHANGED
|
@@ -10,8 +10,8 @@ $jv-primary-soft: rgba(0, 81, 255, 0.12);
|
|
|
10
10
|
// Neutrals
|
|
11
11
|
$jv-bg: #f5f6f8; // app background
|
|
12
12
|
$jv-surface: #ffffff; // cards, panels
|
|
13
|
-
$jv-border-subtle: rgba(0,0,0,0.06)
|
|
14
|
-
$jv-border-strong: rgba(0,0,0,0.12)
|
|
13
|
+
$jv-border-subtle: rgba(0,0,0,0.1); // More visible than Material (was 0.06) - shadcn style
|
|
14
|
+
$jv-border-strong: rgba(0,0,0,0.15); // Stronger borders (was 0.12)
|
|
15
15
|
|
|
16
16
|
// Text
|
|
17
17
|
$jv-text-main: #111111;
|
|
@@ -25,19 +25,39 @@ $jv-radius-md: 12px;
|
|
|
25
25
|
$jv-radius-lg: 16px;
|
|
26
26
|
$jv-radius-pill: 999px;
|
|
27
27
|
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
$jv-shadow-
|
|
28
|
+
// shadcn-Style Shadow System (Compact, Grounded, Notion/Linear-like)
|
|
29
|
+
// Subtle shadows that let borders do the heavy lifting
|
|
30
|
+
$jv-shadow-none: none;
|
|
31
|
+
$jv-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05); // Barely visible
|
|
32
|
+
$jv-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1); // Card resting - SUBTLE
|
|
33
|
+
$jv-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); // Card hover
|
|
34
|
+
$jv-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); // Modals/Dropdowns
|
|
35
|
+
$jv-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); // Popovers
|
|
36
|
+
|
|
37
|
+
// Legacy compatibility - map old names to new system
|
|
38
|
+
$jv-shadow-soft: $jv-shadow-sm;
|
|
39
|
+
$jv-shadow-card: $jv-shadow-sm;
|
|
40
|
+
$jv-elevation-0: $jv-shadow-none;
|
|
41
|
+
$jv-elevation-1: $jv-shadow-sm;
|
|
42
|
+
$jv-elevation-2: $jv-shadow-sm;
|
|
43
|
+
$jv-elevation-4: $jv-shadow-md;
|
|
44
|
+
$jv-elevation-6: $jv-shadow-md;
|
|
45
|
+
$jv-elevation-8: $jv-shadow-md;
|
|
46
|
+
|
|
47
|
+
// Button shadows (keep branded)
|
|
31
48
|
$jv-shadow-button: 0 4px 12px rgba(0, 81, 255, 0.25);
|
|
32
49
|
$jv-shadow-button-hover: 0 6px 16px rgba(0, 81, 255, 0.35);
|
|
33
50
|
|
|
34
|
-
// Spacing (
|
|
35
|
-
$jv-space-
|
|
36
|
-
$jv-space-
|
|
37
|
-
$jv-space-
|
|
38
|
-
$jv-space-
|
|
39
|
-
$jv-space-
|
|
40
|
-
$jv-space-
|
|
51
|
+
// Spacing (8dp baseline grid - shadcn/Tailwind compatible)
|
|
52
|
+
$jv-space-1: 4px; // 4dp
|
|
53
|
+
$jv-space-2: 8px; // 8dp (1 unit)
|
|
54
|
+
$jv-space-3: 12px; // 12dp (1.5 units)
|
|
55
|
+
$jv-space-4: 16px; // 16dp (2 units)
|
|
56
|
+
$jv-space-5: 20px; // 20dp (2.5 units)
|
|
57
|
+
$jv-space-6: 24px; // 24dp (3 units)
|
|
58
|
+
$jv-space-8: 32px; // 32dp (4 units)
|
|
59
|
+
$jv-space-10: 40px; // 40dp (5 units)
|
|
60
|
+
$jv-space-12: 48px; // 48dp (6 units)
|
|
41
61
|
|
|
42
62
|
// Typography
|
|
43
63
|
$jv-font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Helvetica Neue", Arial, sans-serif;
|
|
@@ -52,3 +72,18 @@ $jv-font-size-xxl: 32px;
|
|
|
52
72
|
$jv-line-height-base: 1.52;
|
|
53
73
|
$jv-line-height-tight: 1.4;
|
|
54
74
|
$jv-line-height-relaxed: 1.6;
|
|
75
|
+
|
|
76
|
+
// Modern Polish - Transitions & Interactions (2025 standard)
|
|
77
|
+
$jv-transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
78
|
+
$jv-transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
79
|
+
$jv-transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
80
|
+
$jv-transition-shadow: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
81
|
+
|
|
82
|
+
// Focus States (Accessibility + Modern Look)
|
|
83
|
+
$jv-focus-ring: 0 0 0 3px rgba(0, 81, 255, 0.12);
|
|
84
|
+
$jv-focus-ring-offset: 0 0 0 2px $jv-surface, 0 0 0 4px $jv-primary;
|
|
85
|
+
|
|
86
|
+
// Interactive States
|
|
87
|
+
$jv-hover-bg: rgba(0, 0, 0, 0.04);
|
|
88
|
+
$jv-active-bg: rgba(0, 0, 0, 0.08);
|
|
89
|
+
$jv-selected-bg: rgba(0, 81, 255, 0.08);
|