← back to Quadrille House Site
auto-save: 2026-06-23T16:53:06 (5 files) — public/index.html public/product.html public/styles.css scripts/build-house.js scripts/finalize.pid
82db62bfa27abb425b4dc0a1d09eebc8de9aec59 · 2026-06-23 16:53:08 -0700 · Steve Abrams
Files touched
M public/index.htmlM public/product.htmlM public/styles.cssM scripts/build-house.jsA scripts/finalize.pid
Diff
commit 82db62bfa27abb425b4dc0a1d09eebc8de9aec59
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue Jun 23 16:53:08 2026 -0700
auto-save: 2026-06-23T16:53:06 (5 files) — public/index.html public/product.html public/styles.css scripts/build-house.js scripts/finalize.pid
---
public/index.html | 2 +-
public/product.html | 9 ++++++++-
public/styles.css | 4 ++++
scripts/build-house.js | 3 ++-
scripts/finalize.pid | 1 +
5 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/public/index.html b/public/index.html
index 95d6373..59f591e 100644
--- a/public/index.html
+++ b/public/index.html
@@ -163,7 +163,7 @@ function render(){
<div class="nm">${p.display_name||p.color||p.title}</div>
<div class="meta">
<span class="col">${p.hex?`<span class="dot" style="background:${p.hex}"></span>`:''}${p.brand}</span>
- <span class="pr view">${p.cta_mode==='live'?'View →':'Request →'}</span>
+ <span class="pr view">${p.cta_mode==='live'?'View →':p.cta_mode==='sample'?('Sample $'+Number(p.sample_price||4.25).toFixed(2)+' →'):'Request →'}</span>
</div>
</div>
</div>`).join('');
diff --git a/public/product.html b/public/product.html
index e253514..697399b 100644
--- a/public/product.html
+++ b/public/product.html
@@ -63,11 +63,17 @@ let PROD=null, CFG=null;
const main=imgs[0];
const isLive = p.cta_mode==='live' && p.store_url;
+ const isSample = p.cta_mode==='sample';
+ const samplePrice = (p.sample_price!=null) ? Number(p.sample_price).toFixed(2) : '4.25';
const ctaMain = isLive
? `<a class="cta" href="${esc(p.store_url)}" target="_blank" rel="noopener">View & order on Designer Wallcoverings →</a>`
+ : isSample
+ ? `<div class="price-sample">Sample — $${samplePrice}</div><button class="cta" id="reqBtn" type="button">Order a sample — $${samplePrice} →</button>`
: `<button class="cta" id="reqBtn" type="button">Request memo sample & quote →</button>`;
const ctaGhost = isLive
? `<a class="cta ghost" href="${esc(p.store_url)}" target="_blank" rel="noopener">Order a sample</a>`
+ : isSample
+ ? `<div class="trade-note">To the trade · hand-screened to order · sample ships before you specify</div>`
: `<div class="trade-note">To the trade · hand-screened to order</div>`;
document.getElementById('pdp').innerHTML=`
@@ -101,7 +107,7 @@ let PROD=null, CFG=null;
<div class="story">
<div><h3>The pattern</h3><div>${p.body_html||'<p>'+esc(p.title)+' — a hand-screened design from '+esc(BRAND)+', part of the Quadrille house.</p>'}</div></div>
<div><h3>Specifications</h3><p>${[p.composition,p.width&&('Width '+p.width),p.repeat&&('Repeat '+p.repeat),p.match_type].filter(Boolean).map(esc).join(' · ')||'Hand-screened to order.'}</p></div>
- <div><h3>${isLive?'Order':'To the trade'}</h3><p>${isLive?'Available now at Designer Wallcoverings — order a sample before specifying.':'Hand-screened to order. Request a memo sample and trade quote — pricing is provided to the trade, not shown publicly.'}</p></div>
+ <div><h3>${isLive?'Order':isSample?'Order a sample':'To the trade'}</h3><p>${isLive?'Available now at Designer Wallcoverings — order a sample before specifying.':isSample?('Order a '+esc(BRAND)+' sample for $'+samplePrice+' to see the colorway and hand in person. Hand-screened to order; full pricing is provided to the trade.'):'Hand-screened to order. Request a memo sample and trade quote — pricing is provided to the trade, not shown publicly.'}</p></div>
</div>
<section class="pairs" id="pairs" hidden>
<h3>Pairs well with</h3>
@@ -113,6 +119,7 @@ let PROD=null, CFG=null;
brand:{"@type":"Brand",name:BRAND},category:p.product_type||'Wallcoverings',image:imgs,
description:(p.body_html||p.title||'').replace(/<[^>]+>/g,'').slice(0,300)};
if(isLive) ld.offers={"@type":"Offer",availability:"https://schema.org/InStock",url:p.store_url};
+ else if(isSample) ld.offers={"@type":"Offer",availability:"https://schema.org/InStock",price:samplePrice,priceCurrency:"USD",url:location.href,itemCondition:"https://schema.org/NewCondition",name:"Sample"};
const s=document.createElement('script');s.type='application/ld+json';s.textContent=JSON.stringify(ld);document.head.appendChild(s);
// canonical → live PDP for China Seas (complements, never competes); held items self-canonical
diff --git a/public/styles.css b/public/styles.css
index 26a7a24..6172fab 100644
--- a/public/styles.css
+++ b/public/styles.css
@@ -273,3 +273,7 @@ body[data-line="fallingstar"] .books h2::after{content:"";display:block;width:72
.qdone{text-align:center;padding:18px 0}
.qdone p{font-size:15px;line-height:1.7;color:var(--ink);margin:0 0 18px}
@media(max-width:520px){.qrow{grid-template-columns:1fr}}
+
+/* $4.25 sample price display (net-new held lines, sold as samples) */
+.price-sample{font-family:Georgia,serif;font-size:1.35rem;color:var(--gold);margin:.2rem 0 .6rem;letter-spacing:.01em}
+.price-sample::before{content:"";display:inline-block;width:18px;height:1px;background:var(--gold);vertical-align:middle;margin-right:.5rem;opacity:.6}
diff --git a/scripts/build-house.js b/scripts/build-house.js
index 48d9bd8..822a16b 100644
--- a/scripts/build-house.js
+++ b/scripts/build-house.js
@@ -101,7 +101,8 @@ async function loadNetNew() {
const handle = (r.mfr_sku || `${r.brand}-${i}`).toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
return {
brand: r.brand,
- cta_mode: 'quote', // HELD net-new: no cost → memo-sample / quote
+ cta_mode: 'sample', // net-new: sell a $4.25 sample variant (no roll price — no cost)
+ sample_price: 4.25, // flat sample price (China Seas model), cost-independent
handle,
sku: r.mfr_sku,
series: r.pattern_name || null, // pattern = the series/filter
diff --git a/scripts/finalize.pid b/scripts/finalize.pid
new file mode 100644
index 0000000..b52b7c2
--- /dev/null
+++ b/scripts/finalize.pid
@@ -0,0 +1 @@
+5704
← 0bdd1ef Auto-finalize: rebuild house.json snapshot + restart :9943 w
·
back to Quadrille House Site
·
Net-new lines sell as $4.25 samples (cta_mode=sample) — no w 0b3976e →