[object Object]

← back to Rentv

directory: add density slider (card-grid --cols, localStorage) to the flagship CRE Directory per the every-grid-gets-density rule; sort left for a usre server-side ordering task (registry ignores ?sort, client sort would mislead a 34k paginated set)

1ba53ee1cfaf61b754213d2b917f4adad83a385a · 2026-08-05 16:49:55 -0700 · Steve

Files touched

Diff

commit 1ba53ee1cfaf61b754213d2b917f4adad83a385a
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Aug 5 16:49:55 2026 -0700

    directory: add density slider (card-grid --cols, localStorage) to the flagship CRE Directory per the every-grid-gets-density rule; sort left for a usre server-side ordering task (registry ignores ?sort, client sort would mislead a 34k paginated set)
---
 public/directory.html | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/public/directory.html b/public/directory.html
index 512e229e..e480c57c 100644
--- a/public/directory.html
+++ b/public/directory.html
@@ -42,8 +42,13 @@
   .sbox input{width:100%;font:600 16px 'Inter';padding:14px 16px 14px 46px;border:2px solid var(--line);border-radius:11px;outline:0;background:#fff}
   .sbox input:focus{border-color:var(--red)}
   .meta{color:var(--sub);font-size:12.5px;font-weight:600;min-height:18px;margin:8px 2px}
-  .rows{padding:4px 0 8px}
-  .row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:13px 2px;border-bottom:1px solid var(--line)}
+  .ctlbar{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin:4px 2px 2px;flex-wrap:wrap}
+  .ctl{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--sub)}
+  .ctl input[type=range]{width:104px;accent-color:var(--red);cursor:pointer}
+  .rows{display:grid;grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));gap:12px;padding:6px 0 8px}
+  .row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:13px 15px;border:1px solid var(--line);border-radius:11px;background:#fff}
+  .row:hover{border-color:#cfd4d9;box-shadow:0 2px 12px rgba(6,9,12,.05)}
+  @media(max-width:560px){.rows{grid-template-columns:1fr!important}}
   .row .nm{font:700 15.5px 'Inter'}
   .row .sub{color:var(--sub);font-size:12.5px;margin-top:2px}
   .row .r{text-align:right;white-space:nowrap}
@@ -54,7 +59,7 @@
   .more{display:block;width:100%;margin:14px 0 60px;padding:13px;border:1.5px solid var(--line);border-radius:10px;background:#fff;font:800 13px 'Inter';color:var(--ink);cursor:pointer}
   .more:hover{border-color:var(--red);color:var(--red)}
   .more[disabled]{opacity:.5;cursor:default}
-  .empty{padding:44px 0;text-align:center;color:var(--sub)}
+  .empty{grid-column:1/-1;padding:44px 0;text-align:center;color:var(--sub)}
   .empty h3{font-family:'Playfair Display',serif;font-size:23px;color:var(--ink);margin-bottom:6px}
   .spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--red);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:6px}@keyframes sp{to{transform:rotate(360deg)}}
 </style></head><body>
@@ -99,6 +104,13 @@
     <input id="q" type="search" autocomplete="off" placeholder="Search firms by name or city…">
   </div>
   <div class="meta" id="meta"></div>
+  <!-- Density slider per Steve's "every grid gets sort + density" rule. Sort is intentionally
+       omitted here: /api/firms + /api/brokers proxy to the usre registry (34k firms / 382k brokers,
+       server-paginated) which ignores a ?sort param — a client-side sort would only reorder the
+       loaded page and mislead. A real Sort control needs usre to support server-side ordering. -->
+  <div class="ctlbar">
+    <label class="ctl">Density <input id="dens" type="range" min="1" max="4" step="1" value="2" aria-label="Directory grid density (columns)"></label>
+  </div>
   <section class="rows" id="rows"></section>
   <button class="more" id="more" style="display:none">Load more</button>
 </main>
@@ -114,6 +126,8 @@ $('dx').onclick=close;scrim.onclick=close;document.addEventListener('keydown',e=
 
 const PAGE=25;
 let tab='firms', q='', offset=0, total=0, seq=0;
+let dens=localStorage.getItem('rentv.directory.dens')||'2';
+function applyDens(){ $('rows').style.setProperty('--cols',dens); }
 
 const p=new URLSearchParams(location.search);
 if(p.get('tab')==='brokers')tab='brokers';
@@ -150,6 +164,8 @@ $('more').onclick=()=>{ $('more').disabled=true; $('more').textContent='Loading
 
 $('tabFirms').classList.toggle('on',tab==='firms'); $('tabBrokers').classList.toggle('on',tab==='brokers');
 $('q').placeholder=tab==='firms'?'Search firms by name or city…':'Search brokers by name, city or firm…';
+$('dens').value=dens; applyDens();
+$('dens').oninput=e=>{dens=e.target.value;localStorage.setItem('rentv.directory.dens',dens);applyDens();};
 load(true);
 </script>
 </body></html>

← 07989393 auto-save: 2026-08-05T16:43:55 (7 files) — data/deals-regist  ·  back to Rentv  ·  directory density: Cody gate fixes — hide slider on mobile ( 214a147e →