← 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 →