Commit d763a9f
feat(network): surface payout holdback on offering listings
Federates the per-campaign holdbackDays out to the OpenPartner
Network so creators see the policy on the marketplace listing
*before* they apply, not after they're already promoting.
The Network's offering.terms is freeform jsonb so no protocol /
schema migration was needed — only the wire-shape convention. Both
sides now agree on terms.payoutHoldbackDays.
* Admin offering create form (NetworkOfferings.tsx): when the
bound Campaign has a holdbackDays value, stamp it onto
terms.payoutHoldbackDays at publish time. Single source of
truth — brand sets it once on the Campaign, every Offering
backed by that Campaign reflects it. Existing offerings stay
as-is until re-saved.
* Admin offering list: shows "pays out Nd after conversion" next
to the campaign id so the brand sees what creators will see.
* Creator-side OfferingDetail: new "Holdback: N days" chip in the
terms row alongside cookie window + payout cadence, with a
title= tooltip explaining why (refund window / trial alignment).
* Creator-side Discover: "· Nd holdback" appended to the
commission-description line so it's visible at a glance on the
grid before clicking through.
Backfill: existing published offerings won't have the field until
the brand re-saves. UI handles undefined gracefully — no chip, no
trailing text — so the experience just gradually improves as brands
edit their listings.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 4cad68b commit d763a9f
3 files changed
Lines changed: 24 additions & 3 deletions
File tree
- apps/portal/src/pages
- admin
- creator
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
| 33 | + | |
32 | 34 | | |
33 | 35 | | |
34 | 36 | | |
| |||
108 | 110 | | |
109 | 111 | | |
110 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
111 | 116 | | |
112 | 117 | | |
113 | 118 | | |
| |||
156 | 161 | | |
157 | 162 | | |
158 | 163 | | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
159 | 169 | | |
160 | 170 | | |
161 | 171 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
87 | 92 | | |
88 | 93 | | |
89 | 94 | | |
| |||
116 | 121 | | |
117 | 122 | | |
118 | 123 | | |
119 | | - | |
| 124 | + | |
120 | 125 | | |
121 | 126 | | |
122 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
147 | 148 | | |
148 | 149 | | |
149 | 150 | | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
150 | 156 | | |
151 | 157 | | |
152 | 158 | | |
| |||
0 commit comments