@rhavenside/baseline-ui 1.0.20 → 1.0.21

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.
@@ -52,8 +52,30 @@
52
52
  box-shadow: var(--glass-shadow-lg);
53
53
  transform: translateX(-100%);
54
54
  transition: transform var(--transition-duration-slow) var(--transition-ease-out);
55
- overflow-y: auto;
56
- overflow-x: hidden;
55
+ overflow: hidden; // Let .bl-sidebar-nav handle scrolling
56
+
57
+ // Custom Scrollbar for sidebar container (fallback)
58
+ &::-webkit-scrollbar {
59
+ width: 6px;
60
+ }
61
+
62
+ &::-webkit-scrollbar-track {
63
+ background: transparent;
64
+ }
65
+
66
+ &::-webkit-scrollbar-thumb {
67
+ background: var(--glass-bg-medium);
68
+ border-radius: 3px;
69
+ border: 1px solid var(--glass-border-light);
70
+
71
+ &:hover {
72
+ background: var(--glass-bg-heavy);
73
+ border-color: var(--glass-border-medium);
74
+ }
75
+ }
76
+
77
+ scrollbar-width: thin;
78
+ scrollbar-color: var(--glass-bg-medium) transparent;
57
79
 
58
80
  // Desktop: Always visible, collapsible
59
81
  @media (min-width: 768px) {
@@ -76,11 +98,21 @@
76
98
  width: 64px;
77
99
 
78
100
  .bl-sidebar-header h3,
79
- .bl-sidebar-nav .bl-nav-link span:not(.bl-icon) {
101
+ .bl-sidebar-nav .bl-nav-link span:not(.bl-icon),
102
+ .bl-nav-group-header {
80
103
  opacity: 0;
81
104
  width: 0;
82
105
  overflow: hidden;
83
106
  }
107
+
108
+ .bl-sidebar-nav .bl-nav-link {
109
+ justify-content: center;
110
+ padding: var(--spacing-sm);
111
+
112
+ .bl-icon {
113
+ margin: 0;
114
+ }
115
+ }
84
116
  }
85
117
  }
86
118
 
@@ -162,19 +194,29 @@
162
194
  display: flex;
163
195
  align-items: center;
164
196
  justify-content: space-between;
165
- padding: var(--spacing-md);
166
- border-bottom: 1px solid var(--glass-border-light);
197
+ padding: var(--spacing-lg) var(--spacing-md);
198
+ border-bottom: 1px solid var(--glass-border-medium);
167
199
  background: var(--glass-bg-light);
168
200
  backdrop-filter: blur(var(--glass-blur-sm));
169
201
  -webkit-backdrop-filter: blur(var(--glass-blur-sm));
202
+ flex-shrink: 0; // Prevent header from shrinking
170
203
 
171
204
  h3 {
172
205
  margin: 0;
173
- font-size: var(--font-size-lg);
174
- font-weight: var(--font-weight-semibold);
206
+ font-size: var(--font-size-xl);
207
+ font-weight: var(--font-weight-bold);
175
208
  color: var(--color-text);
209
+ line-height: var(--line-height-tight);
176
210
  transition: var(--transition-base);
177
211
  }
212
+
213
+ // Version info styling (if present)
214
+ .bl-sidebar-version {
215
+ font-size: var(--font-size-xs);
216
+ color: var(--color-text-muted);
217
+ font-weight: var(--font-weight-normal);
218
+ margin-top: var(--spacing-xs);
219
+ }
178
220
  }
179
221
 
180
222
  // Sidebar Close Button
@@ -217,10 +259,39 @@
217
259
  // Sidebar Navigation
218
260
  .bl-sidebar-nav {
219
261
  flex: 1;
220
- padding: var(--spacing-sm);
262
+ padding: var(--spacing-md);
221
263
  overflow-y: auto;
222
264
  overflow-x: hidden;
223
265
 
266
+ // Better touch targets on mobile
267
+ @media (max-width: 767.98px) {
268
+ padding: var(--spacing-sm);
269
+ }
270
+
271
+ // Custom Scrollbar (Webkit)
272
+ &::-webkit-scrollbar {
273
+ width: 6px;
274
+ }
275
+
276
+ &::-webkit-scrollbar-track {
277
+ background: transparent;
278
+ }
279
+
280
+ &::-webkit-scrollbar-thumb {
281
+ background: var(--glass-bg-medium);
282
+ border-radius: 3px;
283
+ border: 1px solid var(--glass-border-light);
284
+
285
+ &:hover {
286
+ background: var(--glass-bg-heavy);
287
+ border-color: var(--glass-border-medium);
288
+ }
289
+ }
290
+
291
+ // Firefox Scrollbar
292
+ scrollbar-width: thin;
293
+ scrollbar-color: var(--glass-bg-medium) transparent;
294
+
224
295
  .bl-nav {
225
296
  background: transparent;
226
297
  border: none;
@@ -230,30 +301,127 @@
230
301
  .bl-nav-link {
231
302
  display: flex;
232
303
  align-items: center;
233
- gap: var(--spacing-sm);
304
+ gap: var(--spacing-md);
234
305
  padding: var(--spacing-sm) var(--spacing-md);
306
+ margin-bottom: var(--spacing-xs);
235
307
  border-radius: var(--tech-border-radius-sm);
236
308
  transition: var(--transition-base);
309
+ position: relative;
310
+ font-size: var(--font-size-base);
311
+ line-height: var(--line-height-base);
312
+ color: var(--color-text);
313
+ text-decoration: none;
314
+ min-height: 40px; // Better touch target
315
+
316
+ @media (max-width: 767.98px) {
317
+ padding: var(--spacing-md);
318
+ min-height: 44px; // iOS touch target recommendation
319
+ }
237
320
 
238
321
  span:not(.bl-icon) {
239
322
  transition: var(--transition-base);
323
+ flex: 1;
240
324
  }
241
325
 
242
326
  .bl-icon {
243
327
  flex-shrink: 0;
244
- width: 20px;
245
- height: 20px;
328
+ width: 18px;
329
+ height: 18px;
330
+ color: var(--color-text-muted);
331
+ transition: var(--transition-base);
332
+ }
333
+
334
+ &:hover {
335
+ background: var(--glass-bg-light);
336
+ color: var(--color-text);
337
+ transform: translateX(2px); // Subtle slide animation
338
+
339
+ .bl-icon {
340
+ color: var(--color-text);
341
+ }
342
+ }
343
+
344
+ &:active {
345
+ transform: translateX(1px);
346
+ }
347
+
348
+ &.bl-active {
349
+ background: var(--glass-bg-medium);
350
+ color: var(--color-text);
351
+ font-weight: var(--font-weight-medium);
352
+ padding-left: calc(var(--spacing-md) - 3px);
353
+ transform: translateX(0);
354
+
355
+ &::before {
356
+ content: '';
357
+ position: absolute;
358
+ left: 0;
359
+ top: 0;
360
+ bottom: 0;
361
+ width: 3px;
362
+ background: var(--color-accent);
363
+ border-radius: 0 var(--tech-border-radius-sm) var(--tech-border-radius-sm) 0;
364
+ }
365
+
366
+ .bl-icon {
367
+ color: var(--color-accent);
368
+ }
369
+
370
+ &:hover {
371
+ background: var(--glass-bg-heavy);
372
+ transform: translateX(0); // No slide when active
373
+ }
374
+ }
375
+
376
+ &:focus {
377
+ outline: 1px solid var(--color-border-focus);
378
+ outline-offset: -2px;
246
379
  }
247
380
  }
248
381
  }
249
382
 
383
+ // Navigation Groups (Categories)
384
+ .bl-nav-group {
385
+ margin-bottom: var(--spacing-xl);
386
+
387
+ &:last-child {
388
+ margin-bottom: 0;
389
+ }
390
+
391
+ &:first-child {
392
+ margin-top: 0;
393
+ }
394
+
395
+ // Visual separator between groups (optional)
396
+ + .bl-nav-group {
397
+ padding-top: var(--spacing-md);
398
+ border-top: 1px solid var(--glass-border-light);
399
+ margin-top: var(--spacing-lg);
400
+ }
401
+ }
402
+
403
+ .bl-nav-group-header {
404
+ padding: var(--spacing-sm) var(--spacing-md);
405
+ margin-bottom: var(--spacing-sm);
406
+ margin-top: 0;
407
+ font-size: var(--font-size-xs);
408
+ font-weight: var(--font-weight-semibold);
409
+ color: var(--color-text-muted);
410
+ text-transform: uppercase;
411
+ letter-spacing: var(--letter-spacing-wide);
412
+ line-height: var(--line-height-tight);
413
+ opacity: 0.8; // Subtle appearance
414
+ }
415
+
250
416
  // Sidebar Footer (optional)
251
417
  .bl-sidebar-footer {
252
418
  padding: var(--spacing-md);
253
- border-top: 1px solid var(--glass-border-light);
419
+ border-top: 1px solid var(--glass-border-medium);
254
420
  background: var(--glass-bg-light);
255
421
  backdrop-filter: blur(var(--glass-blur-sm));
256
422
  -webkit-backdrop-filter: blur(var(--glass-blur-sm));
423
+ flex-shrink: 0; // Prevent footer from shrinking
424
+ margin-top: auto; // Push footer to bottom
257
425
  }
258
426
 
259
427
  // Body Scroll Lock (when sidebar is open on mobile)