@stapel/listings-react 0.25.2 → 0.25.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @stapel/listings-react
2
2
 
3
+ ## 0.25.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 119f326: `<ListingDetailPane headingLevel>` — the listing title can be the page's `h1`
8
+
9
+ The pane drew the title at `h3` unconditionally, which is right inside a page
10
+ that already carries its own `h1` and wrong on the route where the pane IS the
11
+ page: measured on a live storefront, that document had no `h1` at all and was
12
+ working around it with an offscreen heading stacked above the pane. Only the
13
+ host knows which of the two it built, so `headingLevel` (`1 | 2 | 3`, default
14
+ `3`) lets it say. Byte-compatible for every existing mount.
15
+
16
+ ## 0.25.3
17
+
18
+ ### Patch Changes
19
+
20
+ - e41fceb: `<ListingDetailPane>`: the page edge, and where the seller sits on a phone.
21
+
22
+ Two host-measured defects of the one-column arm, both about position:
23
+
24
+ - `gutter?: "own" | "shell"` — the pane painted a flat `spacing[4]` gutter
25
+ INSIDE a frame that had already placed the page edge with
26
+ `--stapel-page-gutter`, so a desktop read at 40px from the frame and a 360px
27
+ phone lost a ninth of its width to two stacked gutters. `"shell"` says the
28
+ frame owns the edge and the pane adds none; `"own"` is the default and is
29
+ byte-compatible.
30
+ - `asidePlacement?: "end" | "after-actions"` — `"column"` IS the phone
31
+ rendering of this page, and there the host's seller block sat below the
32
+ description, the spec table and the meta table: two screens of scrolling
33
+ between "message the seller" and who the seller is. `"after-actions"` puts
34
+ it directly under the actions, which is the order the split layout has read
35
+ since it shipped. `"end"` is the default and is byte-compatible.
36
+
3
37
  ## 0.25.2
4
38
 
5
39
  ### Patch Changes
@@ -93,16 +93,51 @@ export interface ListingDetailPaneProps extends ThemeModeProp, CategoryFeaturesP
93
93
  * reads the viewport.
94
94
  */
95
95
  readonly layout?: "column" | "split";
96
+ /**
97
+ * WHO OWNS THE PAGE EDGE.
98
+ *
99
+ * `"own"` (default, byte-compatible) keeps the pane's own `spacing[4]`
100
+ * gutter — right for a host that mounts the pane on a bare route with
101
+ * nothing padding it.
102
+ *
103
+ * `"shell"` says a page frame already placed that edge, so the pane adds
104
+ * none. `@stapel/shell-react` pads its content box with
105
+ * `--stapel-page-gutter` — a RESPONSIVE role, 4px on a phone and 24px on a
106
+ * desktop — and the pane then stacked a flat 16px inside it: a 40px left
107
+ * edge on a desktop, and on a 360px phone a 20px edge on each side eating
108
+ * a ninth of the screen the photos are read on. Two gutters is one gutter
109
+ * too many, and only the host knows whether it has a frame; measured on a
110
+ * live storefront, which worked around it by negatively margining the pane
111
+ * back out to the frame's edge.
112
+ */
113
+ readonly gutter?: "own" | "shell";
96
114
  /**
97
115
  * The host's seller block (a profile card, ratings, "member since" — a
98
116
  * different pair's data, so it arrives as a node). In `"split"` it renders
99
117
  * inside the sticky buy column, under the actions, where the reference
100
- * design keeps it. In `"column"` there is no buy column to live in, so it
101
- * joins the end of the reading flow directly ABOVE `footer` — the flow
102
- * position the footer already holds, so a host passing both gets seller
103
- * block then footer, in that order.
118
+ * design keeps it. In `"column"` it takes the position
119
+ * {@link asidePlacement} names.
104
120
  */
105
121
  readonly aside?: ReactNode;
122
+ /**
123
+ * Where {@link aside} sits in the ONE-COLUMN arm (`layout="column"`);
124
+ * ignored in `"split"`, where the buy column already puts it under the
125
+ * actions.
126
+ *
127
+ * - `"end"` (default, byte-compatible) — the end of the reading flow,
128
+ * directly above `footer`.
129
+ * - `"after-actions"` — directly under the actions, before the description
130
+ * and the spec table.
131
+ *
132
+ * The phone is the whole argument. `"column"` IS the phone rendering of
133
+ * this page, and there the seller block sat below a description, a spec
134
+ * table and a meta table: measured on a live storefront, "who am I buying
135
+ * from" was two full screens of scrolling below "message the seller" — the
136
+ * two halves of one decision, separated by everything else on the page.
137
+ * The split layout already reads the other way round (price, actions,
138
+ * seller), and this is that reading order for the column.
139
+ */
140
+ readonly asidePlacement?: "end" | "after-actions";
106
141
  /**
107
142
  * THE primary action for a buyer: "message the seller", filled by the
108
143
  * container from `@stapel/chat-react`. Rendered first, before favouriting,
@@ -133,6 +168,19 @@ export interface ListingDetailPaneProps extends ThemeModeProp, CategoryFeaturesP
133
168
  * whose chrome already carries a standing sign-in door.
134
169
  */
135
170
  readonly blockedReason?: "text" | "popover";
171
+ /**
172
+ * WHICH HEADING THE TITLE IS.
173
+ *
174
+ * The listing title is the page's subject, but the pane drew it at `h3`
175
+ * unconditionally — right for a pane mounted inside a page that already has
176
+ * its own `h1`, wrong for the storefront route where this pane IS the page
177
+ * and the document then had no `h1` at all (measured on a live storefront,
178
+ * which worked around it with an offscreen heading above the pane). The
179
+ * host is the only side that knows which of the two it built, so it says.
180
+ *
181
+ * Default `3`, byte-compatible for every existing mount.
182
+ */
183
+ readonly headingLevel?: 1 | 2 | 3;
136
184
  readonly footer?: ReactNode;
137
185
  }
138
186
  export declare function ListingDetailPane(props: ListingDetailPaneProps): ReactElement;
@@ -1 +1 @@
1
- {"version":3,"file":"ListingDetailPane.d.ts","sourceRoot":"","sources":["../../src/default/ListingDetailPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAe9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtE;;oBAEoB;AACpB,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C;;;;iCAIiC;AACjC,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,WAAW,sBACf,SAAQ,aAAa,EACnB,oBAAoB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;6BAEyB;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC;6EACyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;sDAEkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA+gB7E"}
1
+ {"version":3,"file":"ListingDetailPane.d.ts","sourceRoot":"","sources":["../../src/default/ListingDetailPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAe9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtE;;oBAEoB;AACpB,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C;;;;iCAIiC;AACjC,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,WAAW,sBACf,SAAQ,aAAa,EACnB,oBAAoB;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;6BAEyB;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC;IAClD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC;6EACyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;sDAEkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAyhB7E"}
@@ -69,7 +69,9 @@ export function ListingDetailPane(props) {
69
69
  const heartIcon = (_jsx(HeartIcon, { filled: bag.isFavorited, ...(bag.isFavorited ? { color: token.colorPrimary } : {}) }));
70
70
  return (_jsx(SkinTheme, { surface: "base", style: {
71
71
  maxWidth: split ? DETAIL_SPLIT_MEASURE : DETAIL_MEASURE,
72
- padding: spacing[4],
72
+ // See `gutter`: a frame that already placed the page edge does not get
73
+ // a second one stacked inside it.
74
+ padding: props.gutter === "shell" ? 0 : spacing[4],
73
75
  }, ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsxs(Flex, { vertical: true, gap: spacing[4], "data-testid": "listings-detail", children: [bag.removed ? (_jsx(ErrorAlert, { testId: "listings-detail-removed", message: t(LISTINGS_I18N_KEYS.detailRemoved) })) : null, matchLoad(bag.state, {
74
76
  loading: () => (_jsx("div", { role: "status", "aria-busy": "true", "aria-label": t(LISTINGS_I18N_KEYS.detailLoading), "data-testid": "listings-detail-loading", "data-stapel-load-state": "loading" })),
75
77
  // The failed arm, most specific sentence first: removed (the banner
@@ -96,7 +98,7 @@ export function ListingDetailPane(props) {
96
98
  index: index + 1,
97
99
  total: bag.images.length,
98
100
  }) }, ref)))) }));
99
- const heading = (_jsxs(_Fragment, { children: [_jsx(Typography.Title, { level: 3, "data-testid": "listings-detail-title", children: listing.title ?? "" }), bag.titleFeatures.length > 0 ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "listings-detail-title-features", children: bag.titleFeatures
101
+ const heading = (_jsxs(_Fragment, { children: [_jsx(Typography.Title, { level: props.headingLevel ?? 3, "data-testid": "listings-detail-title", children: listing.title ?? "" }), bag.titleFeatures.length > 0 ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "listings-detail-title-features", children: bag.titleFeatures
100
102
  // A hidden value is never part of a title: the server
101
103
  // keeps one out of `features_title` entirely, and
102
104
  // `formatFeatureValue` refuses a stub besides (it carries
@@ -158,9 +160,12 @@ export function ListingDetailPane(props) {
158
160
  const meta = !hasStock && !hasPlace ? null : (_jsxs(Descriptions, { size: "small", column: 1, children: [hasStock ? (_jsx(Descriptions.Item, { label: t(LISTINGS_I18N_KEYS.detailStock), children: _jsx("span", { "data-testid": "listings-detail-stock", children: listing.stock_quantity }) })) : null, hasPlace ? (_jsx(Descriptions.Item, { label: t(LISTINGS_I18N_KEYS.composeLocationLabel), children: listing.location_label })) : null] }));
159
161
  const aside = props.aside !== undefined ? (_jsx("div", { "data-testid": "listings-detail-aside", children: props.aside })) : null;
160
162
  if (!split) {
161
- // The single column, in the order it has always read — the
162
- // host's aside joins where the footer's flow already is.
163
- return (_jsxs(_Fragment, { children: [statusBlocks, gallery, heading, price, buyBox, actionError, _jsx(Divider, {}), description, specsSection, meta, aside, props.footer] }));
163
+ // The single column. `"end"` is the order it has always read —
164
+ // the host's aside joins where the footer's flow already is;
165
+ // `"after-actions"` puts the seller beside the decision to
166
+ // contact them, which is where the split layout already has it.
167
+ const asideAfterActions = props.asidePlacement === "after-actions";
168
+ return (_jsxs(_Fragment, { children: [statusBlocks, gallery, heading, price, buyBox, actionError, asideAfterActions ? aside : null, _jsx(Divider, {}), description, specsSection, meta, asideAfterActions ? null : aside, props.footer] }));
164
169
  }
165
170
  return (_jsxs(_Fragment, { children: [statusBlocks, _jsxs("div", { "data-testid": "listings-detail-split", style: {
166
171
  display: "grid",
@@ -1 +1 @@
1
- {"version":3,"file":"ListingDetailPane.js","sourceRoot":"","sources":["../../src/default/ListingDetailPane.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListingDetailPane.js","sourceRoot":"","sources":["../../src/default/ListingDetailPane.tsx"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # @stapel/listings-react 0.25.2
1
+ # @stapel/listings-react 0.25.4
2
2
 
3
3
  Headless React flow pair for stapel-listings (contract >=0.21 <0.22) — business + state, zero visual opinion.
4
4
  Built on @stapel/core: typed client + StapelApiError envelope, auth token refresh,
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-manifest.mjs — do not edit; drift-gated (pnpm gen:manifest:check)",
3
3
  "package": "@stapel/listings-react",
4
- "version": "0.25.2",
4
+ "version": "0.25.4",
5
5
  "backend": {
6
6
  "module": "stapel-listings",
7
7
  "contract": ">=0.21 <0.22"
package/nav-manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@stapel/listings-react",
3
- "version": "0.25.2",
3
+ "version": "0.25.4",
4
4
  "entries": [
5
5
  {
6
6
  "id": "listings.detail",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stapel/listings-react",
3
- "version": "0.25.2",
3
+ "version": "0.25.4",
4
4
  "description": "Headless React pair for stapel-listings: a typed client over the draft twin, the composer that turns a category schema into a submittable listing, and the owner's dashboard. Two independent axes are rendered as two — lifecycle `status` decides visibility and `moderation_status` decides nothing about it, so an edit to a live listing stays live and says 'under review' instead of vanishing. Feature values are drawn and mirrored by @stapel/attributes-react; photos arrive as an injected upload bag whose `refs` ARE `images_draft` and whose `settled` gates the submit; a publish refusal is routed onto the control that caused it by slug. Zero visual opinion in the main entry; an opt-in /default subpath ships the antd skin.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -103,12 +103,12 @@
103
103
  "typescript": "^5.8.3",
104
104
  "vitest": "^3.2.4",
105
105
  "@stapel/attributes-react": "^0.16.1",
106
- "@stapel/core": "^0.25.2",
106
+ "@stapel/core": "^0.25.4",
107
107
  "@stapel/currencies-react": "^0.4.0",
108
108
  "@stapel/image": "^0.4.2",
109
109
  "@stapel/showcase": "^0.3.0",
110
110
  "@stapel/tokens": "^0.8.0",
111
- "@stapel/tokens-antd": "^0.17.1"
111
+ "@stapel/tokens-antd": "^0.17.2"
112
112
  },
113
113
  "engines": {
114
114
  "node": ">=22"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-events.mjs — do not edit; drift-gated (pnpm gen:events:check)",
3
3
  "package": "@stapel/listings-react",
4
- "version": "0.25.2",
4
+ "version": "0.25.4",
5
5
  "defined": [],
6
6
  "flows": []
7
7
  }
@@ -130,16 +130,51 @@ export interface ListingDetailPaneProps
130
130
  * reads the viewport.
131
131
  */
132
132
  readonly layout?: "column" | "split";
133
+ /**
134
+ * WHO OWNS THE PAGE EDGE.
135
+ *
136
+ * `"own"` (default, byte-compatible) keeps the pane's own `spacing[4]`
137
+ * gutter — right for a host that mounts the pane on a bare route with
138
+ * nothing padding it.
139
+ *
140
+ * `"shell"` says a page frame already placed that edge, so the pane adds
141
+ * none. `@stapel/shell-react` pads its content box with
142
+ * `--stapel-page-gutter` — a RESPONSIVE role, 4px on a phone and 24px on a
143
+ * desktop — and the pane then stacked a flat 16px inside it: a 40px left
144
+ * edge on a desktop, and on a 360px phone a 20px edge on each side eating
145
+ * a ninth of the screen the photos are read on. Two gutters is one gutter
146
+ * too many, and only the host knows whether it has a frame; measured on a
147
+ * live storefront, which worked around it by negatively margining the pane
148
+ * back out to the frame's edge.
149
+ */
150
+ readonly gutter?: "own" | "shell";
133
151
  /**
134
152
  * The host's seller block (a profile card, ratings, "member since" — a
135
153
  * different pair's data, so it arrives as a node). In `"split"` it renders
136
154
  * inside the sticky buy column, under the actions, where the reference
137
- * design keeps it. In `"column"` there is no buy column to live in, so it
138
- * joins the end of the reading flow directly ABOVE `footer` — the flow
139
- * position the footer already holds, so a host passing both gets seller
140
- * block then footer, in that order.
155
+ * design keeps it. In `"column"` it takes the position
156
+ * {@link asidePlacement} names.
141
157
  */
142
158
  readonly aside?: ReactNode;
159
+ /**
160
+ * Where {@link aside} sits in the ONE-COLUMN arm (`layout="column"`);
161
+ * ignored in `"split"`, where the buy column already puts it under the
162
+ * actions.
163
+ *
164
+ * - `"end"` (default, byte-compatible) — the end of the reading flow,
165
+ * directly above `footer`.
166
+ * - `"after-actions"` — directly under the actions, before the description
167
+ * and the spec table.
168
+ *
169
+ * The phone is the whole argument. `"column"` IS the phone rendering of
170
+ * this page, and there the seller block sat below a description, a spec
171
+ * table and a meta table: measured on a live storefront, "who am I buying
172
+ * from" was two full screens of scrolling below "message the seller" — the
173
+ * two halves of one decision, separated by everything else on the page.
174
+ * The split layout already reads the other way round (price, actions,
175
+ * seller), and this is that reading order for the column.
176
+ */
177
+ readonly asidePlacement?: "end" | "after-actions";
143
178
  /**
144
179
  * THE primary action for a buyer: "message the seller", filled by the
145
180
  * container from `@stapel/chat-react`. Rendered first, before favouriting,
@@ -170,6 +205,19 @@ export interface ListingDetailPaneProps
170
205
  * whose chrome already carries a standing sign-in door.
171
206
  */
172
207
  readonly blockedReason?: "text" | "popover";
208
+ /**
209
+ * WHICH HEADING THE TITLE IS.
210
+ *
211
+ * The listing title is the page's subject, but the pane drew it at `h3`
212
+ * unconditionally — right for a pane mounted inside a page that already has
213
+ * its own `h1`, wrong for the storefront route where this pane IS the page
214
+ * and the document then had no `h1` at all (measured on a live storefront,
215
+ * which worked around it with an offscreen heading above the pane). The
216
+ * host is the only side that knows which of the two it built, so it says.
217
+ *
218
+ * Default `3`, byte-compatible for every existing mount.
219
+ */
220
+ readonly headingLevel?: 1 | 2 | 3;
173
221
  readonly footer?: ReactNode;
174
222
  }
175
223
 
@@ -211,7 +259,9 @@ export function ListingDetailPane(props: ListingDetailPaneProps): ReactElement {
211
259
  surface="base"
212
260
  style={{
213
261
  maxWidth: split ? DETAIL_SPLIT_MEASURE : DETAIL_MEASURE,
214
- padding: spacing[4],
262
+ // See `gutter`: a frame that already placed the page edge does not get
263
+ // a second one stacked inside it.
264
+ padding: props.gutter === "shell" ? 0 : spacing[4],
215
265
  }}
216
266
  {...(props.mode !== undefined ? { mode: props.mode } : {})}
217
267
  >
@@ -321,7 +371,10 @@ export function ListingDetailPane(props: ListingDetailPaneProps): ReactElement {
321
371
 
322
372
  const heading = (
323
373
  <>
324
- <Typography.Title level={3} data-testid="listings-detail-title">
374
+ <Typography.Title
375
+ level={props.headingLevel ?? 3}
376
+ data-testid="listings-detail-title"
377
+ >
325
378
  {listing.title ?? ""}
326
379
  </Typography.Title>
327
380
 
@@ -627,8 +680,12 @@ export function ListingDetailPane(props: ListingDetailPaneProps): ReactElement {
627
680
  ) : null;
628
681
 
629
682
  if (!split) {
630
- // The single column, in the order it has always read — the
631
- // host's aside joins where the footer's flow already is.
683
+ // The single column. `"end"` is the order it has always read —
684
+ // the host's aside joins where the footer's flow already is;
685
+ // `"after-actions"` puts the seller beside the decision to
686
+ // contact them, which is where the split layout already has it.
687
+ const asideAfterActions =
688
+ props.asidePlacement === "after-actions";
632
689
  return (
633
690
  <>
634
691
  {statusBlocks}
@@ -637,11 +694,12 @@ export function ListingDetailPane(props: ListingDetailPaneProps): ReactElement {
637
694
  {price}
638
695
  {buyBox}
639
696
  {actionError}
697
+ {asideAfterActions ? aside : null}
640
698
  <Divider />
641
699
  {description}
642
700
  {specsSection}
643
701
  {meta}
644
- {aside}
702
+ {asideAfterActions ? null : aside}
645
703
  {props.footer}
646
704
  </>
647
705
  );