Skip to content

Commit 998c98b

Browse files
committed
Updated UI 2.3
Signed-off-by: Someshdiwan <[email protected]>
1 parent fa20086 commit 998c98b

File tree

2 files changed

+93
-27
lines changed

2 files changed

+93
-27
lines changed

site/_layouts/default.html

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,14 +213,14 @@
213213
let tapCount = 0;
214214
let tapTimer = null;
215215
const TAP_TIMEOUT = 300; // ms for double-tap detection
216+
const SCROLL_THRESHOLD = 100; // px to hide theme/time container
216217

217218
// Sidebar toggle
218219
function toggleSidebar(isHidden) {
219220
const sidebar = document.getElementById('sidebar');
220221
const toggleBtn = document.querySelector('.toggle-btn');
221222
sidebar.classList.toggle('hidden', isHidden);
222223
localStorage.setItem('sidebar-hidden', isHidden);
223-
// Show/hide toggle button based on sidebar state (desktop)
224224
if (window.innerWidth > 768) {
225225
toggleBtn.style.display = isHidden ? 'block' : 'none';
226226
}
@@ -229,31 +229,28 @@
229229
// Handle tap/click events
230230
function handleTap(event) {
231231
const sidebar = document.getElementById('sidebar');
232-
const toggleBtn = document.querySelector('.toggle-btn');
233232
const target = event.target;
234233

235-
// Ignore taps on interactive elements
236234
if (
237235
target.closest('a') ||
238236
target.closest('button') ||
239237
target.closest('#sidebar') ||
240-
target.closest('#theme-time-container')
238+
target.closest('#theme-time-container') ||
239+
target.closest('.tooltip')
241240
) {
242241
return;
243242
}
244243

245244
tapCount++;
246245
if (tapCount === 1) {
247246
tapTimer = setTimeout(() => {
248-
// Single tap: hide sidebar if visible
249247
if (!sidebar.classList.contains('hidden')) {
250248
toggleSidebar(true);
251249
}
252250
tapCount = 0;
253251
}, TAP_TIMEOUT);
254252
} else if (tapCount === 2) {
255253
clearTimeout(tapTimer);
256-
// Double tap: show sidebar if hidden
257254
if (sidebar.classList.contains('hidden')) {
258255
toggleSidebar(false);
259256
}
@@ -298,6 +295,16 @@
298295
`Time (${currentZone}): ${h}:${m}:${s} ${ampm}`;
299296
}
300297

298+
// Handle scroll for theme/time container
299+
function handleScroll() {
300+
const themeTimeContainer = document.getElementById('theme-time-container');
301+
if (window.scrollY > SCROLL_THRESHOLD) {
302+
themeTimeContainer.classList.add('hidden');
303+
} else {
304+
themeTimeContainer.classList.remove('hidden');
305+
}
306+
}
307+
301308
// On load: init dark mode, sidebar state, listeners, time, SW
302309
window.onload = () => {
303310
// Initialize dark mode
@@ -316,12 +323,25 @@
316323
if (window.innerWidth > 768) {
317324
toggleBtn.style.display = isSidebarHidden ? 'block' : 'none';
318325
} else {
319-
toggleBtn.style.display = 'block'; // Always show on mobile
326+
toggleBtn.style.display = 'block';
320327
}
321328

322-
// Add tap/click listeners
329+
// Add tap/click and scroll listeners
323330
document.addEventListener('click', handleTap);
324331
document.addEventListener('touchstart', handleTap, { passive: true });
332+
window.addEventListener('scroll', handleScroll, { passive: true });
333+
334+
// Show tooltip on first visit
335+
if (!localStorage.getItem('tooltip-shown')) {
336+
setTimeout(() => {
337+
const tooltip = document.getElementById('tooltip');
338+
tooltip.classList.add('visible');
339+
setTimeout(() => {
340+
tooltip.classList.remove('visible');
341+
localStorage.setItem('tooltip-shown', 'true');
342+
}, 5000);
343+
}, 1000);
344+
}
325345

326346
updateLiveTime();
327347
setInterval(updateLiveTime, 1000);
@@ -348,6 +368,11 @@
348368
</div>
349369
</div>
350370

371+
<!-- Onboarding Tooltip -->
372+
<div id="tooltip" class="tooltip">
373+
Single tap to hide sidebar, double tap to show
374+
</div>
375+
351376
<!-- Collapsible Sidebar -->
352377
<div id="sidebar" class="sidebar">
353378
<a href="{{ site.baseurl }}/" class="sidebar-link active">

site/assets/style.css

Lines changed: 60 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,18 @@ body {
259259
--button-text: #ffffff;
260260
}
261261

262+
/* Dark mode override */
263+
.dark-mode {
264+
--bg-color: #121212;
265+
--text-color: #e0e0e0;
266+
--sidebar-bg: #1f1f1f;
267+
--button-text: #ffffff;
268+
--card-bg: #2b2b2b;
269+
--card-shadow: rgba(0, 0, 0, 0.5);
270+
--primary-color: #4da8ff; /* Lighter blue for better contrast */
271+
--active-color: #a1d6ff; /* Lighter active color */
272+
}
273+
262274
/* 2. Global Styles */
263275
body {
264276
margin: 0;
@@ -281,17 +293,12 @@ body {
281293
border-radius: 8px;
282294
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
283295
z-index: 1002;
284-
transition: background-color 0.3s, color 0.3s;
296+
transition: opacity 0.3s ease, transform 0.3s ease;
285297
}
286298

287-
/* Dark mode override */
288-
.dark-mode {
289-
--bg-color: #121212;
290-
--text-color: #e0e0e0;
291-
--sidebar-bg: #1f1f1f;
292-
--button-text: #ffffff;
293-
--card-bg: #2b2b2b;
294-
--card-shadow: rgba(0, 0, 0, 0.5);
299+
#theme-time-container.hidden {
300+
opacity: 0;
301+
transform: translateY(-20px);
295302
}
296303

297304
/* 4. Dark Mode and Timezone Toggle */
@@ -318,7 +325,29 @@ body {
318325
font-size: 0.9rem;
319326
}
320327

321-
/* 6. Sidebar */
328+
/* 6. Tooltip */
329+
.tooltip {
330+
position: fixed;
331+
bottom: 1rem;
332+
left: 50%;
333+
transform: translateX(-50%);
334+
background-color: var(--primary-color);
335+
color: var(--button-text);
336+
padding: 0.5rem 1rem;
337+
border-radius: 6px;
338+
font-size: 0.9rem;
339+
opacity: 0;
340+
visibility: hidden;
341+
transition: opacity 0.3s ease, visibility 0.3s ease;
342+
z-index: 1003;
343+
}
344+
345+
.tooltip.visible {
346+
opacity: 1;
347+
visibility: visible;
348+
}
349+
350+
/* 7. Sidebar */
322351
.sidebar {
323352
width: 200px;
324353
height: 100vh;
@@ -337,7 +366,7 @@ body {
337366
transform: translateX(-100%);
338367
}
339368

340-
/* 7. Sidebar Links */
369+
/* 8. Sidebar Links */
341370
.sidebar-link {
342371
display: flex;
343372
align-items: center;
@@ -364,30 +393,30 @@ body {
364393
text-decoration: underline;
365394
}
366395

367-
/* 8. Toggle Button (Fallback) */
396+
/* 9. Toggle Button (Fallback) */
368397
.toggle-btn {
369398
position: fixed;
370399
top: 1rem;
371400
left: 1rem;
372401
background-color: var(--primary-color);
373402
color: var(--button-text);
374403
border: none;
375-
padding: 0.4rem 0.8rem; /* Smaller padding */
376-
font-size: 0.9rem; /* Smaller icon */
404+
padding: 0.4rem 0.8rem;
405+
font-size: 0.9rem;
377406
border-radius: 4px;
378407
cursor: pointer;
379408
z-index: 1001;
380409
display: none;
381410
transition: background-color 0.3s;
382-
opacity: 0.7; /* Less prominent */
411+
opacity: 0.7;
383412
}
384413

385414
.toggle-btn:hover {
386415
background-color: var(--active-color);
387416
opacity: 1;
388417
}
389418

390-
/* 9. Content Area */
419+
/* 10. Content Area */
391420
.wrapper {
392421
display: flex;
393422
}
@@ -403,15 +432,15 @@ body {
403432
margin-left: 0;
404433
}
405434

406-
/* 10. Card-style Container inside Content */
435+
/* 11. Card-style Container inside Content */
407436
.fade-in {
408437
background-color: var(--card-bg);
409438
padding: 1.5rem;
410439
border-radius: 10px;
411440
box-shadow: 0 4px 20px var(--card-shadow);
412441
}
413442

414-
/* 11. Fade-in Keyframes */
443+
/* 12. Fade-in Keyframes */
415444
@keyframes fadeIn {
416445
from {
417446
opacity: 0;
@@ -423,7 +452,19 @@ body {
423452
}
424453
}
425454

426-
/* 12. Responsive Behavior */
455+
/* 13. Reduced Motion */
456+
@media (prefers-reduced-motion: reduce) {
457+
.sidebar,
458+
#theme-time-container,
459+
.tooltip {
460+
transition: none;
461+
}
462+
.fade-in {
463+
animation: none;
464+
}
465+
}
466+
467+
/* 14. Responsive Behavior */
427468
@media (max-width: 768px) {
428469
.sidebar {
429470
width: 100%;

0 commit comments

Comments
 (0)