No events scheduled for this day.
';
+ } else {
+ inner += '';
- // Day-of-week headers
['Sun','Mon','Tue','Wed','Thu','Fri','Sat'].forEach(function (d) {
html += '';
});
- // Empty leading cells
for (let i = 0; i < firstDow; i++) {
html += '
';
}
- // Day cells
for (let d = 1; d <= daysInMonth; d++) {
- const dow = new Date(viewYear, viewMonth, d).getDay();
- const isToday = (today.getFullYear() === viewYear && today.getMonth() === viewMonth && today.getDate() === d);
+ const dow = new Date(viewYear, viewMonth, d).getDay();
+ const isToday = (today.getFullYear() === viewYear && today.getMonth() === viewMonth && today.getDate() === d);
+ const isSelected = (selectedKey === viewYear + '-' + viewMonth + '-' + d);
const brunch = isBrunchDay(dow);
- const dots = getDots(viewYear, viewMonth, d);
+ const dots = getDots(viewYear, viewMonth, d);
- let cls = 'cal-cell';
- if (brunch) cls += ' cal-cell--brunch';
- if (isToday) cls += ' cal-cell--today';
+ let cls = 'cal-cell cal-cell--clickable';
+ if (brunch) cls += ' cal-cell--brunch';
+ if (isToday) cls += ' cal-cell--today';
+ if (isSelected) cls += ' cal-cell--selected';
- html += '
';
+ const vy = viewYear, vm = viewMonth, vd = d;
+ html += '
';
html += '
' + d + '';
if (dots.length > 0) {
html += '
';
@@ -269,14 +368,13 @@
html += '
';
}
- html += '
'; // .cal-grid
+ html += '
';
- // Legend
html += '
';
html += ' Trivia Night (Tue)';
html += ' Live Music (Mon & Fri)';
html += ' Board Games & Chess (2nd Thu)';
- html += ' Brunch hours (Thu–Sun)';
+ html += ' Brunch (Thu–Sun)';
html += '
';
calEl.innerHTML = html;
@@ -284,15 +382,18 @@
document.getElementById('cal-prev').addEventListener('click', function () {
viewMonth--;
if (viewMonth < 0) { viewMonth = 11; viewYear--; }
+ if (selectedKey) { selectedKey = null; detailEl.style.display = 'none'; }
render();
});
document.getElementById('cal-next').addEventListener('click', function () {
viewMonth++;
if (viewMonth > 11) { viewMonth = 0; viewYear++; }
+ if (selectedKey) { selectedKey = null; detailEl.style.display = 'none'; }
render();
});
}
+ window._calClick = showDayDetail;
render();
})();
diff --git a/style.css b/style.css
index 4d154a9..78890bd 100644
--- a/style.css
+++ b/style.css
@@ -974,3 +974,114 @@ footer span {
font-size: 0.72rem;
}
}
+
+/* ---------- Calendar Day Click ---------- */
+.cal-cell--clickable {
+ cursor: pointer;
+ transition: background 0.15s, box-shadow 0.15s;
+}
+
+.cal-cell--clickable:hover {
+ background: rgba(200, 146, 42, 0.1);
+}
+
+.cal-cell--selected {
+ background: rgba(200, 146, 42, 0.18) !important;
+ box-shadow: inset 0 0 0 2px var(--gold);
+}
+
+/* ---------- Day Detail Panel ---------- */
+.cal-day-detail {
+ background: var(--bg-card);
+ border: 1px solid var(--gold-dim);
+ border-top: 3px solid var(--gold);
+ border-radius: 4px;
+ padding: 1.5rem;
+ margin-top: 1rem;
+ animation: slideDown 0.2s ease;
+}
+
+@keyframes slideDown {
+ from { opacity: 0; transform: translateY(-8px); }
+ to { opacity: 1; transform: translateY(0); }
+}
+
+.cal-detail-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1.25rem;
+}
+
+.cal-detail-title {
+ font-family: var(--font-display);
+ font-size: 1.1rem;
+ color: var(--gold);
+ letter-spacing: 0.05em;
+}
+
+.cal-detail-close {
+ background: none;
+ border: none;
+ color: var(--text-muted);
+ font-size: 1.4rem;
+ cursor: pointer;
+ line-height: 1;
+ padding: 0 4px;
+ transition: color 0.2s;
+}
+
+.cal-detail-close:hover {
+ color: var(--text);
+}
+
+.cal-detail-list {
+ list-style: none;
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.cal-detail-item {
+ display: flex;
+ align-items: flex-start;
+ gap: 0.75rem;
+}
+
+.cal-detail-dot {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ flex-shrink: 0;
+ margin-top: 4px;
+}
+
+.cal-detail-info {
+ flex: 1;
+}
+
+.cal-detail-name {
+ font-weight: 600;
+ font-size: 0.95rem;
+ color: var(--text);
+}
+
+.cal-detail-time {
+ font-size: 0.8rem;
+ color: var(--gold);
+ margin-top: 2px;
+}
+
+.cal-detail-desc {
+ font-size: 0.8rem;
+ color: var(--text-muted);
+ margin-top: 4px;
+ line-height: 1.45;
+}
+
+.cal-detail-empty {
+ color: var(--text-muted);
+ font-size: 0.875rem;
+ text-align: center;
+ padding: 1rem 0;
+}