[object Object]

← back to Wallco Ai

wallco.ai · /me/saved 'Build proposal PDF →' button restyled to match /compare gold pattern (was DW-default btn-primary, now var(--gold)+var(--accent) like Export-as-Brief on /compare) — same target=_blank rel=noopener · adds Brief-options details panel with project + client name inputs (saved-brief-project, saved-brief-client) that builds /brief?ids=…&project=…&client=… and opens in new tab via window.open(_,_,'noopener') · only renders when designs.length > 0 (no-op for empty saved list) · verified by signing in as smoke@example.com, saving design #72 via POST /api/saved → /me/saved returns href=/brief?ids=72 + 7 brief-related element refs

528112c3e8192d01112a5732731e47b51986316e · 2026-05-12 09:17:19 -0700 · SteveStudio2

Files touched

Diff

commit 528112c3e8192d01112a5732731e47b51986316e
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Tue May 12 09:17:19 2026 -0700

    wallco.ai · /me/saved 'Build proposal PDF →' button restyled to match /compare gold pattern (was DW-default btn-primary, now var(--gold)+var(--accent) like Export-as-Brief on /compare) — same target=_blank rel=noopener · adds Brief-options details panel with project + client name inputs (saved-brief-project, saved-brief-client) that builds /brief?ids=…&project=…&client=… and opens in new tab via window.open(_,_,'noopener') · only renders when designs.length > 0 (no-op for empty saved list) · verified by signing in as smoke@example.com, saving design #72 via POST /api/saved → /me/saved returns href=/brief?ids=72 + 7 brief-related element refs
---
 server.js | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/server.js b/server.js
index 6b0d22f..9a779e9 100644
--- a/server.js
+++ b/server.js
@@ -1023,10 +1023,33 @@ ${htmlHeader('/me/saved')}
         · <a href="/trade/logout" style="color:var(--ink-soft,#555)">Sign out</a>
       </div>
     </div>
-    <div style="display:flex;gap:10px;flex-wrap:wrap">
-      ${designs.length ? `<a href="${proposalHref}" class="btn-primary" style="padding:10px 18px;font:13px var(--sans);text-decoration:none">Build proposal PDF →</a>` : ''}
+    <div style="display:flex;gap:10px;flex-wrap:wrap;align-items:center">
+      ${designs.length ? `<a href="${proposalHref}" target="_blank" rel="noopener noreferrer" id="saved-brief" style="padding:10px 18px;font:13px var(--sans);background:var(--gold,#c9a14b);color:var(--accent,#0d0d0d);text-decoration:none;border:0;border-radius:4px;font-weight:500" title="Export all saved designs as a printable multi-design proposal PDF">Build proposal PDF →</a>` : ''}
       <a href="/designs" class="btn-outline" style="padding:10px 18px;font:13px var(--sans);text-decoration:none">Browse catalog</a>
+      ${designs.length ? `<details style="font:12px var(--sans,system-ui);color:var(--ink-soft,#555)">
+        <summary style="cursor:pointer;padding:6px 10px;border:1px solid var(--line,#ddd);border-radius:4px;list-style:none">Brief options ▾</summary>
+        <div style="margin-top:8px;padding:12px;background:var(--card-bg,#faf8f3);border:1px solid var(--line,#ebe5d6);border-radius:6px;display:grid;gap:8px;min-width:280px;position:absolute;z-index:20">
+          <label>Project name<br><input id="saved-brief-project" type="text" placeholder="e.g. Living Room" style="margin-top:4px;width:100%;padding:6px 8px;font:13px var(--sans);border:1px solid var(--line,#ddd);border-radius:4px"></label>
+          <label>Client name<br><input id="saved-brief-client" type="text" placeholder="e.g. Smith Residence" style="margin-top:4px;width:100%;padding:6px 8px;font:13px var(--sans);border:1px solid var(--line,#ddd);border-radius:4px"></label>
+          <button type="button" id="saved-brief-go" style="padding:8px 14px;background:var(--ink,#111);color:var(--bg,#fff);border:0;border-radius:4px;cursor:pointer;font:13px var(--sans)">Open Brief →</button>
+        </div>
+      </details>` : ''}
     </div>
+    <script>
+    (function(){
+      var go = document.getElementById('saved-brief-go');
+      if (!go) return;
+      var ids = ${JSON.stringify(designs.map(d => d.id))};
+      go.addEventListener('click', function(){
+        var p = (document.getElementById('saved-brief-project').value || '').trim();
+        var c = (document.getElementById('saved-brief-client').value || '').trim();
+        var qs = ['ids=' + ids.join(',')];
+        if (p) qs.push('project=' + encodeURIComponent(p));
+        if (c) qs.push('client=' + encodeURIComponent(c));
+        window.open('/brief?' + qs.join('&'), '_blank', 'noopener');
+      });
+    })();
+    </script>
   </div>
   ${designs.length
     ? `<div class="design-grid catalog-grid" id="saved-grid">${cards}</div>`

← cdb0765 wallco.ai · /compare gets 'Export as Brief →' gold button +  ·  back to Wallco Ai  ·  wallco.ai · /sitemap.xml now includes /compare (priority 0.5 b425604 →