Skip to content

Commit afcf20e

Browse files
V48 (impl-only): Polish settle header, full-width guide, and product copy
Two-line BTC · BTD / On-Chain subtitle, top-aligned Bitcode mark, Sell/Buy-sized settle icon, micro-blog full column width, commercial product fills residual height with with-Bitcoin and ERC-1155 Ethereum wording.
1 parent 4c9ec11 commit afcf20e

5 files changed

Lines changed: 30 additions & 23 deletions

File tree

uapi/components/bitcode/layout/BitcodePublicCopy/bitcode-public-copy.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,12 @@ export const BITCODE_PUBLIC_COPY = {
6666
rail: ['sell', 'buy', 'settle'],
6767
},
6868
// Marketing presents the commercial product as production — no testnet language.
69+
// AssetPacks + BTD are ERC-1155 on Ethereum; purchase/settlement money is Bitcoin.
6970
testnetLaunch: {
7071
badge: 'Commercial Product',
71-
title: 'Sell and buy AssetPacks on Bitcoin.',
72+
title: 'Sell and buy AssetPacks with Bitcoin.',
7273
meaning:
73-
'Measurements, quotes, settlement order, BTD rights, and delivery are live protocol state—trade AssetPacks with BTC.',
74+
'Measurements, quotes, settlement order, BTD rights, and delivery are live protocol state—AssetPacks and BTD are ERC-1155 on Ethereum; purchase with Bitcoin.',
7475
flow: [
7576
{
7677
step: '01',
@@ -84,7 +85,7 @@ export const BITCODE_PUBLIC_COPY = {
8485
label: 'Buy (Read)',
8586
href: '/reads',
8687
detail:
87-
'Write a Need, review fit measurements and the quote, then SettleAssetPack in BTC.',
88+
'Write a Need, review fit measurements and the quote, then SettleAssetPack with Bitcoin.',
8889
},
8990
{
9091
step: '03',
@@ -97,7 +98,7 @@ export const BITCODE_PUBLIC_COPY = {
9798
trust:
9899
'Trust the proof: protocol law and proof readback decide state; the product surfaces explain it.',
99100
sourceSafety:
100-
'Source-safe trade: buyers see measurements before pay; protected source stays withheld until BTC finality and BTD rights transfer.',
101+
'Source-safe trade: buyers see measurements before pay; protected source stays withheld until Bitcoin finality and BTD rights transfer.',
101102
},
102103
operatorFrame: {
103104
title: 'AssetPack market',

uapi/components/marketing/MarketingLandingGuideCard/MarketingLandingGuideCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export const MarketingLandingGuideCard = memo(function MarketingLandingGuideCard
5959
initial={{ opacity: 0, y: 18 }}
6060
animate={{ opacity: 1, y: 0 }}
6161
transition={{ duration: 0.8, delay: 0.3, ease: entranceEase }}
62-
className="relative mt-6 max-w-xl overflow-visible rounded-none border border-emerald-300/12 bg-black/25 p-4 pt-5 shadow-[0_20px_60px_rgba(0,0,0,0.32)] backdrop-blur-xl phone:mt-7 phone:pt-6"
62+
className="relative mt-6 w-full max-w-none overflow-visible rounded-none border border-emerald-300/12 bg-black/25 p-4 pt-5 shadow-[0_20px_60px_rgba(0,0,0,0.32)] backdrop-blur-xl phone:mt-7 phone:pt-6"
6363
style={animatedMotionStyle}
6464
>
6565
<div className="absolute left-0 top-0 flex -translate-y-1/2 flex-wrap items-center gap-2">

uapi/components/marketing/MarketingLandingPillarCard/MarketingLandingPillarCard.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -220,21 +220,23 @@ export function MarketingLandingPillarCard({
220220
<div className="absolute inset-x-5 top-0 h-px bg-gradient-to-r from-transparent via-orange-100/70 to-transparent" />
221221
<div className="absolute inset-0 bg-[radial-gradient(circle_at_top_right,rgba(251,146,60,0.24),transparent_34%),radial-gradient(circle_at_bottom_left,rgba(251,191,36,0.08),transparent_30%)]" />
222222
<div className="relative flex min-h-0 flex-1 flex-col">
223-
<div className="relative pr-16 text-orange-100 phone:pr-20">
224-
<div className="flex items-start gap-2">
225-
<Icon className="h-5 w-5 text-orange-300" />
223+
<div className="relative pr-14 text-orange-100 phone:pr-16">
224+
{/* Logo top-aligned with Settle title; icon size matches Sell/Buy title row. */}
225+
<div className="absolute right-0 top-0">
226+
<BitcodeSoftwareSvgLogo width="36px" softwareClassName="hidden" className="opacity-90" />
227+
</div>
228+
<div className="flex min-w-0 items-start gap-2">
229+
<Icon className="mt-0.5 h-4 w-4 shrink-0 text-orange-300" />
226230
<div className="min-w-0">
227231
<p className="bg-gradient-to-r from-white via-orange-100 to-white/80 bg-clip-text text-[11px] font-semibold uppercase tracking-[0.18em] text-transparent">
228232
{title}
229233
</p>
230-
<p className="mt-1 max-w-[20ch] text-[9px] uppercase leading-snug tracking-[0.14em] text-orange-100/52 phone:text-[10px]">
231-
<span className="block whitespace-nowrap">BTC · BTD · On-Chain</span>
234+
<p className="mt-1 max-w-[16ch] text-[9px] uppercase leading-snug tracking-[0.16em] text-orange-100/52 phone:text-[10px]">
235+
<span className="block whitespace-nowrap">BTC · BTD</span>
236+
<span className="block whitespace-nowrap">On-Chain</span>
232237
</p>
233238
</div>
234239
</div>
235-
<div className="absolute right-0 top-0">
236-
<BitcodeSoftwareSvgLogo width="44px" softwareClassName="hidden" className="opacity-90" />
237-
</div>
238240
</div>
239241
<p className="mt-1.5 min-h-[4.5rem] text-[11px] leading-4 text-orange-50/88 phone:min-h-[5rem] phone:text-[13px] phone:leading-5">
240242
{hasBtdInDescription ? (

uapi/components/marketing/MarketingLandingTestnetSection/MarketingLandingTestnetSection.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,24 @@ export function MarketingLandingTestnetSection() {
1818
<section
1919
data-testid="landing-testnet-launch"
2020
aria-label="Commercial product launch readiness"
21-
className="relative mt-4 w-full"
21+
className="relative mt-4 flex min-h-0 w-full flex-1 flex-col"
2222
>
23-
<div className="rounded-none border border-emerald-300/16 bg-emerald-300/[0.045] px-3.5 py-3.5 backdrop-blur-sm phone:px-4 phone:py-4">
23+
<div className="flex min-h-0 flex-1 flex-col rounded-none border border-emerald-300/16 bg-emerald-300/[0.045] px-4 py-4 backdrop-blur-sm phone:px-5 phone:py-5">
2424
<div className="flex flex-wrap items-center gap-2">
2525
<span className="rounded-none border border-emerald-300/35 bg-emerald-300/12 px-2.5 py-1 text-[0.62rem] font-medium uppercase tracking-[0.18em] text-emerald-100">
2626
{copy.badge}
2727
</span>
2828
</div>
29-
<h2 className="mt-2.5 text-base font-semibold leading-snug text-white phone:text-lg">
29+
<h2 className="mt-3 text-lg font-semibold leading-snug text-white phone:text-xl">
3030
{copy.title}
3131
</h2>
32-
<p className="mt-2 text-[12px] leading-5 text-neutral-300 phone:text-[13px]">{copy.meaning}</p>
33-
<ol className="mt-3 grid grid-cols-1 gap-2" aria-label="Core product flow">
32+
<p className="mt-2 text-[13px] leading-5 text-neutral-300 phone:text-[14px]">{copy.meaning}</p>
33+
<ol className="mt-3 grid min-h-0 flex-1 grid-cols-1 gap-2.5" aria-label="Core product flow">
3434
{copy.flow.map((entry) => (
35-
<li key={entry.step}>
35+
<li key={entry.step} className="min-h-0">
3636
<Link
3737
href={entry.href}
38-
className="block rounded-none border border-white/10 bg-black/25 px-3 py-2.5 transition hover:border-emerald-300/35 hover:bg-emerald-300/[0.07]"
38+
className="block h-full rounded-none border border-white/10 bg-black/25 px-3 py-3 transition hover:border-emerald-300/35 hover:bg-emerald-300/[0.07]"
3939
>
4040
<span className="inline-flex items-baseline gap-2">
4141
<span className="text-[0.62rem] font-medium uppercase tracking-[0.18em] text-emerald-200/85">
@@ -48,7 +48,7 @@ export function MarketingLandingTestnetSection() {
4848
</li>
4949
))}
5050
</ol>
51-
<div className="mt-2.5 grid gap-1.5 border-t border-white/8 pt-2.5 text-[11px] leading-4 text-neutral-400">
51+
<div className="mt-3 grid gap-1.5 border-t border-white/8 pt-3 text-[11px] leading-5 text-neutral-400">
5252
<p>{copy.trust}</p>
5353
<p>{copy.sourceSafety}</p>
5454
</div>

uapi/tests/marketingLandingPage.test.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,11 @@ describe('MarketingLandingPage', () => {
139139
const section = screen.getByTestId('landing-testnet-launch');
140140
expect(section).toBeInTheDocument();
141141
expect(screen.getByText('Commercial Product')).toBeInTheDocument();
142-
expect(screen.getByText('Sell and buy AssetPacks on Bitcoin.')).toBeInTheDocument();
142+
expect(screen.getByText('Sell and buy AssetPacks with Bitcoin.')).toBeInTheDocument();
143+
expect(screen.getByText(/ERC-1155 on Ethereum/i)).toBeInTheDocument();
143144
expect(screen.getByText(/measurements, quotes, settlement order/iu)).toBeInTheDocument();
144145
expect(screen.queryByText(/testnet/i)).toBeNull();
146+
expect(screen.queryByText(/on Bitcoin/i)).toBeNull();
145147
expect(screen.getByRole('link', { name: /01\s*Sell \(Deposit\)/u })).toHaveAttribute(
146148
'href',
147149
'/deposits',
@@ -158,7 +160,9 @@ describe('MarketingLandingPage', () => {
158160
screen.getByText(/protocol law and proof readback decide state/u),
159161
).toBeInTheDocument();
160162
expect(
161-
screen.getByText(/protected source stays withheld until BTC finality and BTD rights transfer/u),
163+
screen.getByText(
164+
/protected source stays withheld until Bitcoin finality and BTD rights transfer/u,
165+
),
162166
).toBeInTheDocument();
163167
expect(screen.getByText('Public Measures')).toBeInTheDocument();
164168
expect(screen.getByText('Private Source')).toBeInTheDocument();

0 commit comments

Comments
 (0)