@@ -267,7 +267,8 @@ for (const proj of uncategorised) {
267267
268268<div class =" board-outer" >
269269 <div class =" mobile-toggle-wrap" >
270- <button class =" mobile-toggle-btn" aria-pressed =" false" >Full timeline</button >
270+ <button class =" mobile-toggle-btn" aria-pressed =" false" >Full timeline</button
271+ >
271272 </div >
272273 <div class =" board-scroll" >
273274 <!--
@@ -280,10 +281,13 @@ for (const proj of uncategorised) {
280281 rows 3 … = one per project
281282 Every cell has explicit grid-column + grid-row to avoid auto-placement bugs.
282283 -->
283- <div class =" board" style ={ ` --n-months: ${nMonths }; --n-quarters: ${nQuarters }; --now-pct: ${nowLeft }% ` } >
284+ <div
285+ class =" board"
286+ style ={ ` --n-months: ${nMonths }; --n-quarters: ${nQuarters }; --now-pct: ${nowLeft }% ` }
287+ >
284288 <!-- ── col 1, rows 1–2: "Project" label spans both header rows ── -->
285289 <div class =" hd-label" style =" grid-column: 1; grid-row: 1 / 3" >
286- Project
290+ Team / Project
287291 </div >
288292
289293 <!-- ── row 1: Quarter header cells (desktop: month-based spans) ── -->
@@ -429,7 +433,6 @@ for (const proj of uncategorised) {
429433 { proj .url ? (
430434 <a
431435 class = " proj-name"
432- href = { proj .url }
433436 target = " _blank"
434437 rel = " noopener noreferrer"
435438 title = { ` Open ${proj .name } in Linear ` }
@@ -702,7 +705,6 @@ for (const proj of uncategorised) {
702705
703706 a.proj-name:hover {
704707 color: var(--color-primary);
705- text-decoration: underline;
706708 }
707709
708710 .proj-icon {
@@ -993,10 +995,9 @@ for (const proj of uncategorised) {
993995 if (isNaN(nowPct)) return
994996
995997 // Label column width varies between desktop (300px) and mobile quarter view (130px).
996- const labelWidth = parseInt(
997- getComputedStyle(board).gridTemplateColumns.split(' ')[0],
998- 10
999- ) || 300
998+ const labelWidth =
999+ parseInt(getComputedStyle(board).gridTemplateColumns.split(' ')[0], 10) ||
1000+ 300
10001001 const timelineWidth = board.scrollWidth - labelWidth
10011002 const nowPxFromBoardLeft = labelWidth + (nowPct / 100) * timelineWidth
10021003
@@ -1005,19 +1006,21 @@ for (const proj of uncategorised) {
10051006 }
10061007
10071008 // Toggle between quarter view and full month view on mobile.
1008- document.querySelectorAll<HTMLButtonElement>('.mobile-toggle-btn').forEach((btn) => {
1009- btn.addEventListener('click', () => {
1010- const outer = btn.closest('.board-outer')
1011- if (!outer) return
1012- const scroll = outer.querySelector<HTMLElement>('.board-scroll')
1013- if (!scroll) return
1014- const isFull = scroll.classList.toggle('board-scroll--full')
1015- btn.textContent = isFull ? 'Quarter view' : 'Full timeline'
1016- btn.setAttribute('aria-pressed', String(isFull))
1017- // Re-centre after the grid repaints.
1018- requestAnimationFrame(centreOnNow)
1009+ document
1010+ .querySelectorAll<HTMLButtonElement>('.mobile-toggle-btn')
1011+ .forEach((btn) => {
1012+ btn.addEventListener('click', () => {
1013+ const outer = btn.closest('.board-outer')
1014+ if (!outer) return
1015+ const scroll = outer.querySelector<HTMLElement>('.board-scroll')
1016+ if (!scroll) return
1017+ const isFull = scroll.classList.toggle('board-scroll--full')
1018+ btn.textContent = isFull ? 'Quarter view' : 'Full timeline'
1019+ btn.setAttribute('aria-pressed', String(isFull))
1020+ // Re-centre after the grid repaints.
1021+ requestAnimationFrame(centreOnNow)
1022+ })
10191023 })
1020- })
10211024
10221025 // Run after the DOM (and layout) is ready.
10231026 if (document.readyState === 'loading') {
@@ -1032,13 +1035,17 @@ for (const proj of uncategorised) {
10321035 e.stopPropagation()
10331036 const isNowActive = !pin.classList.contains('ms-pin--active')
10341037 // Close any open tooltips first.
1035- document.querySelectorAll('.ms-pin--active').forEach((p) => p.classList.remove('ms-pin--active'))
1038+ document
1039+ .querySelectorAll('.ms-pin--active')
1040+ .forEach((p) => p.classList.remove('ms-pin--active'))
10361041 if (isNowActive) pin.classList.add('ms-pin--active')
10371042 })
10381043 })
10391044
10401045 // Close tooltip when tapping outside.
10411046 document.addEventListener('click', () => {
1042- document.querySelectorAll('.ms-pin--active').forEach((p) => p.classList.remove('ms-pin--active'))
1047+ document
1048+ .querySelectorAll('.ms-pin--active')
1049+ .forEach((p) => p.classList.remove('ms-pin--active'))
10431050 })
10441051</script >
0 commit comments