[object Object]

← back to Rentv 2026

market-pulse: pin full site nav into the persistent left rail (always shown) above the collapsed data categories

83c2c24c9817045b052670f57284cddf8e8c1e8c · 2026-07-25 00:07:12 -0700 · Steve

Files touched

Diff

commit 83c2c24c9817045b052670f57284cddf8e8c1e8c
Author: Steve <steve@designerwallcoverings.com>
Date:   Sat Jul 25 00:07:12 2026 -0700

    market-pulse: pin full site nav into the persistent left rail (always shown) above the collapsed data categories
---
 data/markets.json        |  2 +-
 data/news.json           |  2 +-
 data/ticker.json         |  2 +-
 public/market-pulse.html | 40 ++++++++++++++++++++++++++++++++++------
 4 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/data/markets.json b/data/markets.json
index 27426343..2ded2388 100644
--- a/data/markets.json
+++ b/data/markets.json
@@ -1,5 +1,5 @@
 {
-  "fetched_at": "2026-07-25T06:47:02.458Z",
+  "fetched_at": "2026-07-25T07:07:05.242Z",
   "source": "Yahoo Finance — live (CBOE Treasury yields, Dow Jones/MSCI REIT indices)",
   "curve": [
     {
diff --git a/data/news.json b/data/news.json
index ed8f8be5..109c1c9d 100644
--- a/data/news.json
+++ b/data/news.json
@@ -1,6 +1,6 @@
 {
  "source": "rentv.com — live",
- "fetched_at": "2026-07-25T06:47:02.252Z",
+ "fetched_at": "2026-07-25T07:07:04.995Z",
  "count": 23,
  "items": [
   {
diff --git a/data/ticker.json b/data/ticker.json
index 2dc6a8fd..9634d215 100644
--- a/data/ticker.json
+++ b/data/ticker.json
@@ -1,5 +1,5 @@
 {
-  "fetched_at": "2026-07-25T06:47:02.424Z",
+  "fetched_at": "2026-07-25T07:07:05.213Z",
   "la_office_vac": {
     "label": "LA OFFICE VAC",
     "value": "23.1%",
diff --git a/public/market-pulse.html b/public/market-pulse.html
index 380c31c1..6b6e3f5b 100644
--- a/public/market-pulse.html
+++ b/public/market-pulse.html
@@ -227,6 +227,12 @@
   .mp-row .rv{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums}
   .mp-row .rv.up{color:var(--up)}.mp-row .rv.down{color:var(--down)}.mp-row .rv.flat{color:var(--ink)}
   .mp-rail .rail-foot{padding:12px 8px 0;font-size:10px;letter-spacing:.3px;color:var(--ink-faint)}
+  .rail-nav{margin-bottom:10px}
+  .rail-nav .rn-grp{padding:6px 0 4px}
+  .rail-nav .rn-gt{font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:#6b747d;padding:0 10px 5px}
+  .rail-nav a{display:block;padding:6px 10px;border-radius:7px;color:var(--ink-dim);font-size:12.5px;border-left:2px solid transparent}
+  .rail-nav a:hover{background:var(--panel-2);color:var(--ink);border-left-color:#c8102e}
+  .rail-nav a.active{background:var(--panel-2);color:var(--ink);border-left-color:var(--accent);font-weight:700}
   @media (max-width:900px){
     .mp-layout{flex-direction:column}
     .mp-rail{position:static;width:auto;height:auto;border-right:0;border-bottom:1px solid var(--line)}
@@ -263,7 +269,29 @@
 </aside>
 
 <div class="mp-layout">
-<aside class="mp-rail" id="mpRail"></aside>
+<aside class="mp-rail" id="mpRail">
+  <div class="rail-h">Navigate</div>
+  <div class="rail-nav">
+    <div class="rn-grp"><div class="rn-gt">Discover</div>
+      <a href="/search">🔎 Search</a>
+      <a href="/market-pulse" class="active">📈 Rates &amp; Capital Markets</a>
+      <a href="/pulse">📊 Market Pulse (Deal Flow)</a>
+      <a href="/markets">🏙️ Markets</a>
+    </div>
+    <div class="rn-grp"><div class="rn-gt">Sections</div>
+      <a href="/sales">Sales</a><a href="/leases">Leases</a><a href="/financing">Financing</a><a href="/development">Development</a><a href="/multifamily">Multifamily</a><a href="/industrial">Industrial</a><a href="/retail">Retail</a>
+    </div>
+    <div class="rn-grp"><div class="rn-gt">Intelligence</div>
+      <a href="/deals">Deals</a><a href="/la-commercial">LA Commercial</a><a href="/desk">Broker &amp; Owner Desk</a><a href="/review">The REview</a><a href="/cre-talk">CRE Talk</a><a href="/conferences">Conferences</a><a href="/blog">Blog</a>
+    </div>
+    <div class="rn-grp"><div class="rn-gt">Company</div>
+      <a href="/about">About</a><a href="/advertise">Advertise</a><a href="/subscribe">Subscribe / Newsletters</a>
+    </div>
+  </div>
+  <div class="rail-h">Market Data</div>
+  <div id="mpRailData"></div>
+  <div class="rail-foot">All items shown · click a category to expand</div>
+</aside>
 <div class="wrap">
 
   <div class="pulse-band">
@@ -554,22 +582,22 @@ function tick(){
      so a live update never blanks the panel or re-collapses what you opened. ---------- */
 const esc = s => String(s == null ? '' : s).replace(/[&<>"]/g, c => ({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;'}[c]));
 function renderRail(){
-  const rail = $('#mpRail');
-  if(!rail) return;
-  const openSet = new Set([...rail.querySelectorAll('.mp-cat[open]')].map(d => d.dataset.cat));
+  const host = $('#mpRailData');
+  if(!host) return;
+  const openSet = new Set([...host.querySelectorAll('.mp-cat[open]')].map(d => d.dataset.cat));
   const cats = [
     {key:'curve',   name:'Yield Curve',         rows: marketData.curve.map(c => ({l:c.label + ' UST', v:c.value, d:c.dir}))},
     {key:'spreads', name:'Curve Spreads',       rows: marketData.spreads.map(s => ({l:s.label, v:s.value, d:s.dir}))},
     {key:'reits',   name:'REIT Performance',    rows: marketData.reits.map(r => ({l:r.label, v:r.value, d:r.dir}))},
     {key:'funds',   name:'Market Fundamentals', rows: marketData.fundamentals.map(f => ({l:f.label, v:f.value, d:'flat'}))}
   ];
-  rail.innerHTML = '<div class="rail-h">Market Data</div>' + cats.map(c => `
+  host.innerHTML = cats.map(c => `
     <details class="mp-cat" data-cat="${c.key}"${openSet.has(c.key) ? ' open' : ''}>
       <summary>${esc(c.name)}<span class="badge">${c.rows.length}</span><span class="chev">▶</span></summary>
       <div class="mp-rows">${c.rows.map(r =>
         `<div class="mp-row"><span class="rl">${esc(r.l)}</span><span class="rv ${r.d}">${esc(r.v)}</span></div>`
       ).join('')}</div>
-    </details>`).join('') + '<div class="rail-foot">All fields shown · click a category to expand</div>';
+    </details>`).join('');
 }
 
 /* ---------- render everything from the current marketData ---------- */

← ce438f64 auto-save: 2026-07-25T00:01:48 (4 files) — data/markets.json  ·  back to Rentv 2026  ·  market-pulse: consolidate all nav into the single hamburger; 2a251feb →