feat(storefront): richtext descriptions + per-hostname branding over surfaces.#732
Closed
OisinKyne wants to merge 1 commit into
Closed
feat(storefront): richtext descriptions + per-hostname branding over surfaces.#732OisinKyne wants to merge 1 commit into
OisinKyne wants to merge 1 commit into
Conversation
Contributor
|
Superseded by #749 (integration/v0.13.0-rc4). This PR's commits are already on |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat(storefront): checkout-style 402 page, data-obol hooks, custom CSS
The 402 paywall page becomes a fintech-style checkout, every seller surface gains a stable styling API, and operators get a custom-CSS escape hatch — the last customization tier short of bringing your own frontend.
What's here
<details>.data-obol="…"hooks on every meaningful element across the 402, landing, SIWX, error pages and the storefront components. This is the documented styling contract — pinned byTestPaymentRequiredHTML_LayoutContract, so renaming a hook is a visible breaking change rather than silent drift.obol sell info set --css-file brand.css(per-origin via--hostname), stored on the profile/branding block, published in the catalog envelope, injected in its own<style data-obol="custom-css">element after the theme on every surface including the Next.js storefront. Contract: 64 KiB cap and rejection of</style/<script/<!--at set time, re-checked at render on both the Go and TS sides — a hostile stored stylesheet is dropped, not inlined.<div data-obol="checkout">in the 402 summary card and on landing pages, so the future in-browser wallet-checkout widget lands inside every themed/custom-styled page for free.Testing
Layout-contract test enumerating every
data-obolhook + tab markup + custom-CSS injection; breakout-payload test asserting hostile CSS never reaches the page; validator unit tests. A template-exec regression here surfaced thathtml/templateerrors fall back to JSON silently — the tests assert Content-Type on the HTML branch.🤖 Generated with Claude Code