@stapel/listings-react 0.29.1 → 0.30.1

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/dist/default/CardBadges.d.ts +32 -0
  3. package/dist/default/CardBadges.d.ts.map +1 -1
  4. package/dist/default/CardBadges.js +41 -3
  5. package/dist/default/CardBadges.js.map +1 -1
  6. package/dist/default/ListingDetailPane.d.ts +115 -8
  7. package/dist/default/ListingDetailPane.d.ts.map +1 -1
  8. package/dist/default/ListingDetailPane.js +366 -177
  9. package/dist/default/ListingDetailPane.js.map +1 -1
  10. package/dist/default/ListingRelated.d.ts +88 -0
  11. package/dist/default/ListingRelated.d.ts.map +1 -0
  12. package/dist/default/ListingRelated.js +41 -0
  13. package/dist/default/ListingRelated.js.map +1 -0
  14. package/dist/default/ListingSpecList.d.ts +29 -34
  15. package/dist/default/ListingSpecList.d.ts.map +1 -1
  16. package/dist/default/ListingSpecList.js +67 -12
  17. package/dist/default/ListingSpecList.js.map +1 -1
  18. package/dist/default/condensedBar.d.ts +17 -0
  19. package/dist/default/condensedBar.d.ts.map +1 -0
  20. package/dist/default/condensedBar.js +73 -0
  21. package/dist/default/condensedBar.js.map +1 -0
  22. package/dist/default/detailGallery.d.ts +40 -40
  23. package/dist/default/detailGallery.d.ts.map +1 -1
  24. package/dist/default/detailGallery.js +129 -0
  25. package/dist/default/detailGallery.js.map +1 -1
  26. package/dist/default/detailRhythm.d.ts +90 -0
  27. package/dist/default/detailRhythm.d.ts.map +1 -0
  28. package/dist/default/detailRhythm.js +51 -0
  29. package/dist/default/detailRhythm.js.map +1 -0
  30. package/dist/default/icons.d.ts +13 -0
  31. package/dist/default/icons.d.ts.map +1 -1
  32. package/dist/default/icons.js +15 -0
  33. package/dist/default/icons.js.map +1 -1
  34. package/dist/default/index.d.ts +9 -5
  35. package/dist/default/index.d.ts.map +1 -1
  36. package/dist/default/index.js +13 -4
  37. package/dist/default/index.js.map +1 -1
  38. package/dist/i18n/es.d.ts.map +1 -1
  39. package/dist/i18n/es.js +9 -0
  40. package/dist/i18n/es.js.map +1 -1
  41. package/dist/i18n/keys.d.ts +23 -0
  42. package/dist/i18n/keys.d.ts.map +1 -1
  43. package/dist/i18n/keys.js +32 -0
  44. package/dist/i18n/keys.js.map +1 -1
  45. package/dist/i18n/ru.d.ts.map +1 -1
  46. package/dist/i18n/ru.js +9 -0
  47. package/dist/i18n/ru.js.map +1 -1
  48. package/llms.txt +3 -2
  49. package/manifest.json +28 -1
  50. package/nav-manifest.json +1 -1
  51. package/package.json +4 -4
  52. package/src/analytics/generated/events.json +1 -1
  53. package/src/default/CardBadges.tsx +65 -4
  54. package/src/default/ListingDetailPane.tsx +501 -55
  55. package/src/default/ListingRelated.tsx +154 -0
  56. package/src/default/ListingSpecList.tsx +64 -1
  57. package/src/default/condensedBar.ts +74 -0
  58. package/src/default/detailGallery.ts +141 -0
  59. package/src/default/detailRhythm.ts +107 -0
  60. package/src/default/icons.tsx +32 -0
  61. package/src/default/index.ts +46 -2
  62. package/src/i18n/es.ts +9 -0
  63. package/src/i18n/keys.ts +32 -0
  64. package/src/i18n/ru.ts +9 -0
@@ -1,43 +1,3 @@
1
- /**
2
- * HOW THE LISTING PAGE LAYS OUT ITS PHOTOGRAPHS — and why the answer is a
3
- * class and a prop rather than an inline `display`.
4
- *
5
- * ── The defect a container was carrying ───────────────────────────────────
6
- *
7
- * The gallery is an element-width grid (`repeat(auto-fit, minmax(14rem,
8
- * 1fr))`), which on a 390px phone resolves to ONE column: a listing with three
9
- * pictures pushes its own title and price nearly three screens down, and the
10
- * first thing a person sees after tapping a search result is a photograph with
11
- * nothing beside it. A phone lays photographs out as a snap-scrolling STRIP —
12
- * one visible with the next peeking, title and price directly under it.
13
- *
14
- * That is layout, and layout is the container's to decide. But the pane wrote
15
- * `display: grid` INLINE, and an inline declaration is beaten by nothing that
16
- * is not `!important` — so a live storefront carried
17
- * `[data-testid="listings-detail-gallery"] { display: flex !important }`
18
- * against a pair's own geometry, named by a test id, to say a thing the pair
19
- * offered no way to say (a client storefront's own stylesheet, §2).
20
- *
21
- * ── The seam ──────────────────────────────────────────────────────────────
22
- *
23
- * Two halves, and both matter:
24
- *
25
- * 1. `<ListingDetailPane galleryLayout>` — the pane ships BOTH layouts and
26
- * the host names one, exactly as it already names `layout="split"` and
27
- * `gutter`. The host is the side that knows the viewport it granted;
28
- * a media query guessed in a leaf is the thing this package does not do.
29
- * 2. `display` and the track are no longer inline. They live on this
30
- * stylesheet, at one class plus one attribute, so a host that wants
31
- * something neither arm offers can still write CSS for it at its own
32
- * breakpoints — and needs no `!important` to be heard, only a selector of
33
- * its own (`[data-testid="listings-detail-gallery"][data-gallery-layout]`
34
- * ties; add any third condition and it wins).
35
- *
36
- * What stays inline is what nobody overrides and what a stylesheet would make
37
- * worse: the `gap` (the page's own responsive gutter token, D418 — a var, so
38
- * a resize reflows it) and `position: relative`, which is the containing block
39
- * the `actionsPlacement="gallery"` overlay is pinned to.
40
- */
41
1
  /**
42
2
  * The narrowest a gallery tile may get before the grid drops a column. A
43
3
  * measure rather than a pixel: the tiles then fill whatever the ELEMENT is,
@@ -56,6 +16,19 @@ export type ListingGalleryLayout = "grid" | "strip";
56
16
  export declare const LISTINGS_GALLERY_CLASS = "stapel-listings-detail-gallery";
57
17
  /** The `href` the hoisted gallery stylesheet is deduplicated by. */
58
18
  export declare const LISTINGS_GALLERY_STYLE_HREF = "stapel-listings-detail-gallery";
19
+ /** The class the strip's "3 of 16" pill carries. */
20
+ export declare const LISTINGS_GALLERY_COUNTER_CLASS = "stapel-listings-detail-count";
21
+ /**
22
+ * The class on the box that HOLDS the strip and its counter.
23
+ *
24
+ * A frame rather than the gallery itself, and the reason is mechanical: in the
25
+ * strip arm the gallery element IS the scroll container, and an absolutely
26
+ * positioned child of a scroller is laid out against its padding box — it
27
+ * scrolls away with the third photograph. It also cannot be a child of the
28
+ * strip at all, because `> *` makes every child a slide. So the counter is a
29
+ * sibling of the strip inside a box that does not scroll.
30
+ */
31
+ export declare const LISTINGS_GALLERY_FRAME_CLASS = "stapel-listings-detail-gallery-frame";
59
32
  /**
60
33
  * How much of the strip's width ONE photograph takes.
61
34
  *
@@ -65,6 +38,33 @@ export declare const LISTINGS_GALLERY_STYLE_HREF = "stapel-listings-detail-galle
65
38
  * of a screenshot.
66
39
  */
67
40
  export declare const LISTINGS_GALLERY_STRIP_BASIS = "86%";
41
+ /**
42
+ * The index of the child whose leading edge is nearest the box's.
43
+ *
44
+ * Exported because it is the whole claim of {@link useGalleryPosition} and a
45
+ * test can put rectangles in front of it without a layout engine.
46
+ */
47
+ export declare function nearestPhotoIndex(box: HTMLElement): number;
48
+ /** What the gallery box is handed back — see {@link useGalleryPosition}. */
49
+ export interface GalleryPosition {
50
+ /** The photograph on screen, 0-based. */
51
+ readonly active: number;
52
+ /** Attach to the scrolling box. */
53
+ readonly ref: (node: HTMLElement | null) => (() => void) | undefined;
54
+ }
55
+ /**
56
+ * WHICH PHOTOGRAPH THE STRIP IS SHOWING — read off the strip itself.
57
+ *
58
+ * `enabled` is false for the grid arm and for a single photograph: a grid does
59
+ * not scroll horizontally and a lone picture has no position, so neither pays
60
+ * for a listener. The ref then attaches nothing at all.
61
+ *
62
+ * The measurement is throttled to one per animation frame, because a momentum
63
+ * scroll fires dozens of `scroll` events per frame and each measurement is a
64
+ * layout flush. The state write is guarded on a CHANGE, so a scroll across one
65
+ * photograph costs one render rather than sixty.
66
+ */
67
+ export declare function useGalleryPosition(enabled: boolean): GalleryPosition;
68
68
  /**
69
69
  * The gallery's layout rules, for the hoisted `<style>`.
70
70
  *
@@ -1 +1 @@
1
- {"version":3,"file":"detailGallery.d.ts","sourceRoot":"","sources":["../../src/default/detailGallery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD,yCAAyC;AACzC,eAAO,MAAM,sBAAsB,mCAAmC,CAAC;AAEvE,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAE5E;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAgBzC"}
1
+ {"version":3,"file":"detailGallery.d.ts","sourceRoot":"","sources":["../../src/default/detailGallery.ts"],"names":[],"mappings":"AA+DA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD,yCAAyC;AACzC,eAAO,MAAM,sBAAsB,mCAAmC,CAAC;AAEvE,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAE5E,oDAAoD;AACpD,eAAO,MAAM,8BAA8B,iCAAiC,CAAC;AAE7E;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;AAEnF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAc1D;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAyCpE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAkCzC"}
@@ -37,7 +37,29 @@
37
37
  * worse: the `gap` (the page's own responsive gutter token, D418 — a var, so
38
38
  * a resize reflows it) and `position: relative`, which is the containing block
39
39
  * the `actionsPlacement="gallery"` overlay is pinned to.
40
+ *
41
+ * ── WHERE THE STRIP IS, and why a tap could not answer it ─────────────────
42
+ *
43
+ * The strip arm is a native scroll container: a finger moves it, a fling
44
+ * settles it on a snap point, and neither of those is an event this package
45
+ * fires. So the page carried a strip that scrolled correctly and a "1 of 7"
46
+ * that did not move — measured on the reference walk (§20b: `scrollLeft`
47
+ * driven a full slide, the indicator still reading the first photograph).
48
+ * Anything keyed off a TAP is the wrong instrument here, because the gesture
49
+ * that changes the photograph is not a tap.
50
+ *
51
+ * {@link useGalleryPosition} is the answer, and it is the strip's own
52
+ * `scroll` event throttled to one measurement per animation frame — the same
53
+ * shape `SkinCarousel` already uses for the card's dots, written here because
54
+ * the detail gallery is this package's own element and mounts no carousel.
55
+ * `scrollend` is deliberately NOT the trigger: Safari has no such event, and
56
+ * an indicator that only settles is an indicator that lies for the length of
57
+ * a fling. The index is read from live rectangles rather than from
58
+ * `scrollLeft / slideWidth`, for the reason `nearestSlideIndex` gives: the
59
+ * arithmetic version has to know the gap, the peek and the writing direction.
40
60
  */
61
+ import { useCallback, useEffect, useRef, useState } from "react";
62
+ import { fontSize, radii, spacing } from "@stapel/tokens";
41
63
  /**
42
64
  * The narrowest a gallery tile may get before the grid drops a column. A
43
65
  * measure rather than a pixel: the tiles then fill whatever the ELEMENT is,
@@ -54,6 +76,19 @@ export const DETAIL_PHOTO_MIN = "14rem";
54
76
  export const LISTINGS_GALLERY_CLASS = "stapel-listings-detail-gallery";
55
77
  /** The `href` the hoisted gallery stylesheet is deduplicated by. */
56
78
  export const LISTINGS_GALLERY_STYLE_HREF = "stapel-listings-detail-gallery";
79
+ /** The class the strip's "3 of 16" pill carries. */
80
+ export const LISTINGS_GALLERY_COUNTER_CLASS = "stapel-listings-detail-count";
81
+ /**
82
+ * The class on the box that HOLDS the strip and its counter.
83
+ *
84
+ * A frame rather than the gallery itself, and the reason is mechanical: in the
85
+ * strip arm the gallery element IS the scroll container, and an absolutely
86
+ * positioned child of a scroller is laid out against its padding box — it
87
+ * scrolls away with the third photograph. It also cannot be a child of the
88
+ * strip at all, because `> *` makes every child a slide. So the counter is a
89
+ * sibling of the strip inside a box that does not scroll.
90
+ */
91
+ export const LISTINGS_GALLERY_FRAME_CLASS = "stapel-listings-detail-gallery-frame";
57
92
  /**
58
93
  * How much of the strip's width ONE photograph takes.
59
94
  *
@@ -63,6 +98,82 @@ export const LISTINGS_GALLERY_STYLE_HREF = "stapel-listings-detail-gallery";
63
98
  * of a screenshot.
64
99
  */
65
100
  export const LISTINGS_GALLERY_STRIP_BASIS = "86%";
101
+ /**
102
+ * The index of the child whose leading edge is nearest the box's.
103
+ *
104
+ * Exported because it is the whole claim of {@link useGalleryPosition} and a
105
+ * test can put rectangles in front of it without a layout engine.
106
+ */
107
+ export function nearestPhotoIndex(box) {
108
+ const origin = box.getBoundingClientRect().left;
109
+ let best = 0;
110
+ let bestDistance = Number.POSITIVE_INFINITY;
111
+ for (let i = 0; i < box.children.length; i += 1) {
112
+ const child = box.children.item(i);
113
+ if (child === null)
114
+ continue;
115
+ const distance = Math.abs(child.getBoundingClientRect().left - origin);
116
+ if (distance < bestDistance) {
117
+ bestDistance = distance;
118
+ best = i;
119
+ }
120
+ }
121
+ return best;
122
+ }
123
+ /**
124
+ * WHICH PHOTOGRAPH THE STRIP IS SHOWING — read off the strip itself.
125
+ *
126
+ * `enabled` is false for the grid arm and for a single photograph: a grid does
127
+ * not scroll horizontally and a lone picture has no position, so neither pays
128
+ * for a listener. The ref then attaches nothing at all.
129
+ *
130
+ * The measurement is throttled to one per animation frame, because a momentum
131
+ * scroll fires dozens of `scroll` events per frame and each measurement is a
132
+ * layout flush. The state write is guarded on a CHANGE, so a scroll across one
133
+ * photograph costs one render rather than sixty.
134
+ */
135
+ export function useGalleryPosition(enabled) {
136
+ const [active, setActive] = useState(0);
137
+ const frame = useRef(null);
138
+ // Reset when the arm goes away, so a host toggling `galleryLayout` does not
139
+ // keep a stale index for a grid nobody can scroll back.
140
+ useEffect(() => {
141
+ if (!enabled)
142
+ setActive(0);
143
+ }, [enabled]);
144
+ const ref = useCallback((node) => {
145
+ if (node === null || !enabled)
146
+ return undefined;
147
+ const read = () => {
148
+ frame.current = null;
149
+ setActive(nearestPhotoIndex(node));
150
+ };
151
+ const onScroll = () => {
152
+ if (frame.current !== null)
153
+ return;
154
+ // No rAF (an old jsdom, a server-side shim): measure straight away.
155
+ // A throttle that cannot be scheduled is not a reason to stop
156
+ // reporting where the strip is.
157
+ if (typeof requestAnimationFrame !== "function") {
158
+ read();
159
+ return;
160
+ }
161
+ frame.current = requestAnimationFrame(read);
162
+ };
163
+ // A strip can mount already scrolled (a restored position), so the
164
+ // indicator opens truthful rather than at 1.
165
+ read();
166
+ node.addEventListener("scroll", onScroll, { passive: true });
167
+ return () => {
168
+ node.removeEventListener("scroll", onScroll);
169
+ if (frame.current !== null && typeof cancelAnimationFrame === "function") {
170
+ cancelAnimationFrame(frame.current);
171
+ }
172
+ frame.current = null;
173
+ };
174
+ }, [enabled]);
175
+ return { active, ref };
176
+ }
66
177
  /**
67
178
  * The gallery's layout rules, for the hoisted `<style>`.
68
179
  *
@@ -86,6 +197,24 @@ export function detailGalleryCss() {
86
197
  flex: 0 0 ${LISTINGS_GALLERY_STRIP_BASIS};
87
198
  scroll-snap-align: start;
88
199
  }
200
+ .${LISTINGS_GALLERY_FRAME_CLASS} {
201
+ position: relative;
202
+ min-inline-size: 0;
203
+ }
204
+ .${LISTINGS_GALLERY_COUNTER_CLASS} {
205
+ position: absolute;
206
+ inset-block-end: ${String(spacing[2])}px;
207
+ inset-inline-end: ${String(spacing[2])}px;
208
+ z-index: 1;
209
+ pointer-events: none;
210
+ padding: ${String(spacing[1] / 2)}px ${String(spacing[2])}px;
211
+ border-radius: ${String(radii.full)}px;
212
+ background: rgba(0, 0, 0, 0.55);
213
+ color: #fff;
214
+ font-size: ${String(fontSize.xs.fontSize)}px;
215
+ line-height: ${String(fontSize.xs.lineHeight)}px;
216
+ font-variant-numeric: tabular-nums;
217
+ }
89
218
  `.trim();
90
219
  }
91
220
  //# sourceMappingURL=detailGallery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detailGallery.js","sourceRoot":"","sources":["../../src/default/detailGallery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAKxC,yCAAyC;AACzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAEvE,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;GACN,sBAAsB;;mDAE0B,gBAAgB;;GAEhE,sBAAsB;;;;;GAKtB,sBAAsB;cACX,4BAA4B;;;CAGzC,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"detailGallery.js","sourceRoot":"","sources":["../../src/default/detailGallery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAKxC,yCAAyC;AACzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAEvE,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AAE5E,oDAAoD;AACpD,MAAM,CAAC,MAAM,8BAA8B,GAAG,8BAA8B,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sCAAsC,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;IAChD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;QACvE,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;YAC5B,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAUD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAC1C,4EAA4E;IAC5E,wDAAwD;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,IAAwB,EAA4B,EAAE;QACrD,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAChD,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO;YACnC,oEAAoE;YACpE,8DAA8D;YAC9D,gCAAgC;YAChC,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE,CAAC;gBAChD,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,mEAAmE;QACnE,6CAA6C;QAC7C,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;gBACzE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;GACN,sBAAsB;;mDAE0B,gBAAgB;;GAEhE,sBAAsB;;;;;GAKtB,sBAAsB;cACX,4BAA4B;;;GAGvC,4BAA4B;;;;GAI5B,8BAA8B;;qBAEZ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;sBACjB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;;aAG3B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;mBACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;;;eAGtB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;iBAC1B,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC;;;CAG9C,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * ONE GAP BETWEEN THE LISTING PAGE'S BLOCKS, AND THE PANE IS THE ONE WHO SAYS
3
+ * IT.
4
+ *
5
+ * ── What was on screen ────────────────────────────────────────────────────
6
+ *
7
+ * `<ListingDetailPane>` stacks its blocks in a `<Flex vertical gap>` and
8
+ * declares 16px (12px in the buy column). Measured on the stand by the
9
+ * tidiness probe at 1440 and 390, the gaps INSIDE that flex were 111.05,
10
+ * 53.59, 42.39, 29 and 27 pixels. Five distances, none of them 16, none of
11
+ * them chosen by anybody.
12
+ *
13
+ * The cause is not the gap. It is that a flex `gap` governs only the space a
14
+ * container puts BETWEEN its children, and half the children here are antd
15
+ * components carrying outer margins of their own:
16
+ *
17
+ * `<Divider>` 24px above and 24px below, from antd's own sheet, so
18
+ * one horizontal rule inside a 16px column costs 40 +
19
+ * 40;
20
+ * `<Typography.Title>` a margin-block-start proportional to its level, which
21
+ * is right for prose in a document flow and is a second
22
+ * opinion inside a container that already spaces its
23
+ * children;
24
+ * `<Typography.Paragraph>` a bottom margin of about one line.
25
+ *
26
+ * A margin and a gap ADD. So the page's rhythm was the sum of two systems,
27
+ * and reading either one of them told you nothing about what was drawn.
28
+ *
29
+ * ── The rule ──────────────────────────────────────────────────────────────
30
+ *
31
+ * `margin-block: 0` on every direct child of the pane's block columns —
32
+ * the same three-line answer `@stapel/categories-react`'s `blockRhythm.ts`
33
+ * gives for a catalogue page, and deliberately spelled the same way: a block's
34
+ * own outer margin is a second opinion about a distance the container already
35
+ * decided.
36
+ *
37
+ * It is a SHEET and not an inline style for the reason every other rule in
38
+ * this package is: it addresses CHILDREN this component renders but does not
39
+ * own, and an inline style cannot reach one.
40
+ *
41
+ * ── The divider keeps a spacing, because it is not a block ────────────────
42
+ *
43
+ * A horizontal rule is a SECTION BREAK: it needs more air than the space
44
+ * between two blocks, or it reads as another row in the stack. So it is not
45
+ * zeroed with the rest — it gets {@link DETAIL_RULE_CLASS}, one token step on
46
+ * each side, which lands the break at `gap + step` and makes the number a
47
+ * decision instead of whatever antd's 24 happened to sum to. The class beats
48
+ * the reset on specificity (`.col > .rule` over `.col > *`) without an
49
+ * `!important`, and a host can out-specify it with one more condition.
50
+ */
51
+ import type { CSSProperties } from "react";
52
+ /** The class the pane's block columns carry. */
53
+ export declare const DETAIL_RHYTHM_CLASS = "stapel-listings-detail-column";
54
+ /** The class the pane's horizontal rule carries. */
55
+ export declare const DETAIL_RULE_CLASS = "stapel-listings-detail-rule";
56
+ /** The `href` the hoisted rhythm sheet is deduplicated by. */
57
+ export declare const DETAIL_RHYTHM_STYLE_HREF = "stapel-listings-detail-rhythm";
58
+ /**
59
+ * ONE TOKEN STEP of extra air on each side of the section rule — see the file
60
+ * header. Exported so a test reads the decision rather than a literal, and so
61
+ * a container laying out beside the rule measures against the same number.
62
+ */
63
+ export declare const DETAIL_RULE_SPACE: number;
64
+ /**
65
+ * THE ONE BLOCK THE SHEET CANNOT REACH: A HEADING.
66
+ *
67
+ * `${column}>*` is one class and no element — specificity (0,1,0). antd writes
68
+ * its heading margins as `h2.ant-typography` — one class AND one element,
69
+ * (0,1,1) — so a `<Typography.Title>` keeps its own `margin-block` no matter
70
+ * what the column's reset says, and it is the only child of the pane that
71
+ * does. Measured on the stand with the reset already live: 29px between the
72
+ * price and the actions at 1440 and 27 at 390 where the buy column declares
73
+ * 12, and 42.4 / 53.6 where the reading column declares 16. Five distances,
74
+ * none of them the gap, all of them a heading's margin added to it.
75
+ *
76
+ * Raising the sheet's specificity would mean naming antd's class in this
77
+ * package's stylesheet or doubling the column's own class to out-rank it —
78
+ * a selector that says nothing about the decision. An INLINE declaration is
79
+ * beaten by nothing short of `!important`, it travels with the heading it
80
+ * belongs to, and it says the same thing the sheet says: the container owns
81
+ * the distance between its blocks.
82
+ *
83
+ * Both ends, because both are the same second opinion — a heading after a
84
+ * paragraph takes antd's `margin-top` as well, which is what made the reading
85
+ * column's two distances differ from each other.
86
+ */
87
+ export declare const DETAIL_TITLE_RESET: CSSProperties;
88
+ /** The rhythm's two rules. */
89
+ export declare function detailRhythmCss(): string;
90
+ //# sourceMappingURL=detailRhythm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detailRhythm.d.ts","sourceRoot":"","sources":["../../src/default/detailRhythm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,gDAAgD;AAChD,eAAO,MAAM,mBAAmB,kCAAkC,CAAC;AAEnE,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,gCAAgC,CAAC;AAE/D,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,kCAAkC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAGhC,CAAC;AAEF,8BAA8B;AAC9B,wBAAgB,eAAe,IAAI,MAAM,CAQxC"}
@@ -0,0 +1,51 @@
1
+ import { spacing } from "@stapel/tokens";
2
+ /** The class the pane's block columns carry. */
3
+ export const DETAIL_RHYTHM_CLASS = "stapel-listings-detail-column";
4
+ /** The class the pane's horizontal rule carries. */
5
+ export const DETAIL_RULE_CLASS = "stapel-listings-detail-rule";
6
+ /** The `href` the hoisted rhythm sheet is deduplicated by. */
7
+ export const DETAIL_RHYTHM_STYLE_HREF = "stapel-listings-detail-rhythm";
8
+ /**
9
+ * ONE TOKEN STEP of extra air on each side of the section rule — see the file
10
+ * header. Exported so a test reads the decision rather than a literal, and so
11
+ * a container laying out beside the rule measures against the same number.
12
+ */
13
+ export const DETAIL_RULE_SPACE = spacing[2];
14
+ /**
15
+ * THE ONE BLOCK THE SHEET CANNOT REACH: A HEADING.
16
+ *
17
+ * `${column}>*` is one class and no element — specificity (0,1,0). antd writes
18
+ * its heading margins as `h2.ant-typography` — one class AND one element,
19
+ * (0,1,1) — so a `<Typography.Title>` keeps its own `margin-block` no matter
20
+ * what the column's reset says, and it is the only child of the pane that
21
+ * does. Measured on the stand with the reset already live: 29px between the
22
+ * price and the actions at 1440 and 27 at 390 where the buy column declares
23
+ * 12, and 42.4 / 53.6 where the reading column declares 16. Five distances,
24
+ * none of them the gap, all of them a heading's margin added to it.
25
+ *
26
+ * Raising the sheet's specificity would mean naming antd's class in this
27
+ * package's stylesheet or doubling the column's own class to out-rank it —
28
+ * a selector that says nothing about the decision. An INLINE declaration is
29
+ * beaten by nothing short of `!important`, it travels with the heading it
30
+ * belongs to, and it says the same thing the sheet says: the container owns
31
+ * the distance between its blocks.
32
+ *
33
+ * Both ends, because both are the same second opinion — a heading after a
34
+ * paragraph takes antd's `margin-top` as well, which is what made the reading
35
+ * column's two distances differ from each other.
36
+ */
37
+ export const DETAIL_TITLE_RESET = {
38
+ marginBlockStart: 0,
39
+ marginBlockEnd: 0,
40
+ };
41
+ /** The rhythm's two rules. */
42
+ export function detailRhythmCss() {
43
+ const column = `.${DETAIL_RHYTHM_CLASS}`;
44
+ return [
45
+ // A block's own outer margin is a second opinion about the same distance.
46
+ `${column}>*{margin-block:0}`,
47
+ // …except the section rule, which is a break and not a block.
48
+ `${column}>.${DETAIL_RULE_CLASS}{margin-block:${String(DETAIL_RULE_SPACE)}px}`,
49
+ ].join("");
50
+ }
51
+ //# sourceMappingURL=detailRhythm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detailRhythm.js","sourceRoot":"","sources":["../../src/default/detailRhythm.ts"],"names":[],"mappings":"AAmDA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,gDAAgD;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAEnE,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAE/D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,+BAA+B,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF,8BAA8B;AAC9B,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACzC,OAAO;QACL,0EAA0E;QAC1E,GAAG,MAAM,oBAAoB;QAC7B,8DAA8D;QAC9D,GAAG,MAAM,KAAK,iBAAiB,iBAAiB,MAAM,CAAC,iBAAiB,CAAC,KAAK;KAC/E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC"}
@@ -60,4 +60,17 @@ export declare function PriceTrendIcon(props: {
60
60
  direction: "down" | "up";
61
61
  label: string;
62
62
  }): ReactElement;
63
+ /**
64
+ * The condensed bar's back arrow.
65
+ *
66
+ * `aria-hidden`, like the heart and the share glyph: the control around it
67
+ * carries "Back" as its accessible name, and a glyph announced beside its own
68
+ * label reads the action twice.
69
+ *
70
+ * Drawn with the logical writing direction in mind only as far as a library
71
+ * honestly can: the shape points at the INLINE START, and a right-to-left host
72
+ * flips it with one `transform` against this package's own class rather than
73
+ * getting a mirrored copy nobody can name.
74
+ */
75
+ export declare function BackIcon(): ReactElement;
63
76
  //# sourceMappingURL=icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/default/icons.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B;uEACmE;IACnE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAkB7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAqBxC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,YAAY,CAkBvC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,YAAY,CAmBf"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/default/icons.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B;uEACmE;IACnE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAkB7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAqBxC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,YAAY,CAkBvC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,YAAY,CAmBf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,IAAI,YAAY,CAkBvC"}
@@ -38,4 +38,19 @@ export function PriceTrendIcon(props) {
38
38
  const down = props.direction === "down";
39
39
  return (_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", role: "img", "aria-label": props.label, children: [_jsx("path", { d: down ? "M12 5v14" : "M12 19V5" }), _jsx("path", { d: down ? "M6 13l6 6 6-6" : "M6 11l6-6 6 6" })] }));
40
40
  }
41
+ /**
42
+ * The condensed bar's back arrow.
43
+ *
44
+ * `aria-hidden`, like the heart and the share glyph: the control around it
45
+ * carries "Back" as its accessible name, and a glyph announced beside its own
46
+ * label reads the action twice.
47
+ *
48
+ * Drawn with the logical writing direction in mind only as far as a library
49
+ * honestly can: the shape points at the INLINE START, and a right-to-left host
50
+ * flips it with one `transform` against this package's own class rather than
51
+ * getting a mirrored copy nobody can name.
52
+ */
53
+ export function BackIcon() {
54
+ return (_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", role: "img", "aria-hidden": "true", children: [_jsx("path", { d: "M19 12H5" }), _jsx("path", { d: "M12 19l-7-7 7-7" })] }));
55
+ }
41
56
  //# sourceMappingURL=icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/default/icons.tsx"],"names":[],"mappings":";AAgCA,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC;IAC5C,OAAO,CACL,cACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACnC,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,IAAI,EAAC,KAAK,iBACE,MAAM,YAElB,eAAM,CAAC,EAAC,kHAAkH,GAAG,GACzH,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,eACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,IAAI,EAAC,KAAK,iBACE,MAAM,aAElB,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,GAAG,EAC/B,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,GAAG,EAC/B,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,GAAG,EAChC,eAAM,CAAC,EAAC,oBAAoB,GAAG,EAC/B,eAAM,CAAC,EAAC,qBAAqB,GAAG,IAC5B,CACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CACL,eACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,IAAI,EAAC,KAAK,iBACE,MAAM,aAElB,eAAM,CAAC,EAAC,mDAAmD,GAAG,EAC9D,eAAM,CAAC,EAAC,oDAAoD,GAAG,IAC3D,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,KAG9B;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC;IACxC,OAAO,CACL,eACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,IAAI,EAAC,KAAK,gBACE,KAAK,CAAC,KAAK,aAEvB,eAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAI,EAC3C,eAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,GAAI,IACjD,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/default/icons.tsx"],"names":[],"mappings":"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"}
@@ -41,10 +41,14 @@ export { ListingFeedCard } from "./ListingFeedCard.js";
41
41
  export type { ListingFeedCardProps, ListingFeedCardBaseProps, } from "./ListingFeedCard.js";
42
42
  export { FeedGrid, FEED_GRID_COLUMNS } from "./FeedGrid.js";
43
43
  export type { FeedGridProps } from "./FeedGrid.js";
44
- export { ListingDetailPane, DETAIL_MEASURE, DETAIL_SPLIT_MEASURE, DETAIL_SPLIT_ASIDE, DETAIL_PHOTO_MIN, DETAIL_GALLERY_GUTTER, } from "./ListingDetailPane.js";
44
+ export { ListingDetailPane, DETAIL_MEASURE, QUICK_QUESTIONS_MAX, DETAIL_SPLIT_MEASURE, DETAIL_SPLIT_ASIDE, DETAIL_PHOTO_MIN, DETAIL_GALLERY_GUTTER, } from "./ListingDetailPane.js";
45
45
  export type { ListingDetailPaneProps, ListingActionsPlacement, } from "./ListingDetailPane.js";
46
- export { LISTINGS_GALLERY_CLASS, LISTINGS_GALLERY_STYLE_HREF, LISTINGS_GALLERY_STRIP_BASIS, detailGalleryCss, } from "./detailGallery.js";
47
- export type { ListingGalleryLayout } from "./detailGallery.js";
46
+ export { LISTINGS_GALLERY_CLASS, LISTINGS_GALLERY_COUNTER_CLASS, LISTINGS_GALLERY_FRAME_CLASS, LISTINGS_GALLERY_STYLE_HREF, LISTINGS_GALLERY_STRIP_BASIS, detailGalleryCss, nearestPhotoIndex, useGalleryPosition, } from "./detailGallery.js";
47
+ export type { GalleryPosition, ListingGalleryLayout } from "./detailGallery.js";
48
+ export { DETAIL_RHYTHM_CLASS, DETAIL_RHYTHM_STYLE_HREF, DETAIL_RULE_CLASS, DETAIL_RULE_SPACE, DETAIL_TITLE_RESET, detailRhythmCss, } from "./detailRhythm.js";
49
+ export { CONDENSED_BAR_CLASS, CONDENSED_BAR_STYLE_HREF, CONDENSED_TITLE_CLASS, condensedBarCss, } from "./condensedBar.js";
50
+ export { ListingRelatedStrip, RELATED_CARD_BASIS, RELATED_STRIP_CLASS, RELATED_STYLE_HREF, relatedStripCss, } from "./ListingRelated.js";
51
+ export type { ListingRelatedContext, ListingRelatedStripProps, } from "./ListingRelated.js";
48
52
  export { ListingComposerPage, COMPOSER_DETAILS_PLACEMENT, COMPOSER_MEASURE, composerFieldId, } from "./ListingComposerPage.js";
49
53
  export type { ListingComposerPageProps, ComposerCategorySlot, ComposerCurrencySlot, ComposerLocationSlot, ComposerLocationValue, ComposerLocationPickerProps, } from "./ListingComposerPage.js";
50
54
  export { MyListingsPane } from "./MyListingsPane.js";
@@ -55,9 +59,9 @@ export { LifecycleTag, ListingStatusBlock, ModerationNote } from "./StatusTags.j
55
59
  export type { ListingStatusProps } from "./StatusTags.js";
56
60
  export { ListingPhoto, ListingPhotoStrip, LISTING_PHOTO_ASPECT, } from "./ListingPhoto.js";
57
61
  export type { ListingPhotoProps } from "./ListingPhoto.js";
58
- export { ListingSpecColumns, ListingSpecList, specListCss, } from "./ListingSpecList.js";
62
+ export { ListingSpecColumns, ListingSpecList, SPEC_FOLD_MIN_HIDDEN, specListCss, } from "./ListingSpecList.js";
59
63
  export type { ListingSpecListProps } from "./ListingSpecList.js";
60
- export { CardBadges, CardSpecLine } from "./CardBadges.js";
64
+ export { CardBadges, CardSpecLine, CARD_SPEC_LINE_CLASS, CARD_SPEC_STYLE_HREF, CARD_SPEC_TEXT_CLASS, cardSpecLineCss, } from "./CardBadges.js";
61
65
  export type { CardBadgesProps } from "./CardBadges.js";
62
66
  export { SWIPE_AXIS_RATIO, SWIPE_MIN_PX, cardGalleryCss, hasFinePointer, segmentIndex, swipeStep, useCardGallery, } from "./cardGallery.js";
63
67
  export type { CardGallery } from "./cardGallery.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EACL,WAAW,EAGX,oBAAoB,EACpB,sBAAsB,EAGtB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,cAAc,EAGd,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"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"}
@@ -43,22 +43,31 @@ CARD_VIEWED_CLASS, LISTING_VIEWED_OPACITY, } from "./ListingCard.js";
43
43
  export { ListingSerpCard } from "./ListingSerpCard.js";
44
44
  export { ListingFeedCard } from "./ListingFeedCard.js";
45
45
  export { FeedGrid, FEED_GRID_COLUMNS } from "./FeedGrid.js";
46
- export { ListingDetailPane, DETAIL_MEASURE,
46
+ export { ListingDetailPane, DETAIL_MEASURE, QUICK_QUESTIONS_MAX,
47
47
  // The split layout's two geometry constants, for a container laying out
48
48
  // against the same tracks (and for a test that measures them).
49
49
  DETAIL_SPLIT_MEASURE, DETAIL_SPLIT_ASIDE, DETAIL_PHOTO_MIN, DETAIL_GALLERY_GUTTER, } from "./ListingDetailPane.js";
50
50
  // The gallery's two shapes, its class and the stylesheet behind them — a host
51
51
  // that wants a third writes CSS against these rather than `!important` over an
52
52
  // inline `display`.
53
- export { LISTINGS_GALLERY_CLASS, LISTINGS_GALLERY_STYLE_HREF, LISTINGS_GALLERY_STRIP_BASIS, detailGalleryCss, } from "./detailGallery.js";
53
+ export { LISTINGS_GALLERY_CLASS, LISTINGS_GALLERY_COUNTER_CLASS, LISTINGS_GALLERY_FRAME_CLASS, LISTINGS_GALLERY_STYLE_HREF, LISTINGS_GALLERY_STRIP_BASIS, detailGalleryCss, nearestPhotoIndex, useGalleryPosition, } from "./detailGallery.js";
54
+ // The listing page's block rhythm: the reset that keeps a child's own margin
55
+ // out of the column's gap, and the section rule's own token spacing.
56
+ export { DETAIL_RHYTHM_CLASS, DETAIL_RHYTHM_STYLE_HREF, DETAIL_RULE_CLASS, DETAIL_RULE_SPACE, DETAIL_TITLE_RESET, detailRhythmCss, } from "./detailRhythm.js";
57
+ // The condensed top bar the pane draws for `actionsPlacement="condensed-top"`
58
+ // — its classes and sheet, so a container retunes the geometry with a selector
59
+ // rather than `!important` over a pair's own.
60
+ export { CONDENSED_BAR_CLASS, CONDENSED_BAR_STYLE_HREF, CONDENSED_TITLE_CLASS, condensedBarCss, } from "./condensedBar.js";
61
+ // The two "find more" strips, for a host composing them itself.
62
+ export { ListingRelatedStrip, RELATED_CARD_BASIS, RELATED_STRIP_CLASS, RELATED_STYLE_HREF, relatedStripCss, } from "./ListingRelated.js";
54
63
  export { ListingComposerPage, COMPOSER_DETAILS_PLACEMENT, COMPOSER_MEASURE, composerFieldId, } from "./ListingComposerPage.js";
55
64
  export { MyListingsPane } from "./MyListingsPane.js";
56
65
  export { FavoritesPane, FAVORITES_CARD_MIN } from "./FavoritesPane.js";
57
66
  export { LifecycleTag, ListingStatusBlock, ModerationNote } from "./StatusTags.js";
58
67
  export { ListingPhoto, ListingPhotoStrip, LISTING_PHOTO_ASPECT, } from "./ListingPhoto.js";
59
68
  // ── the listing page's characteristics, and a card's badge line ──────────────
60
- export { ListingSpecColumns, ListingSpecList, specListCss, } from "./ListingSpecList.js";
61
- export { CardBadges, CardSpecLine } from "./CardBadges.js";
69
+ export { ListingSpecColumns, ListingSpecList, SPEC_FOLD_MIN_HIDDEN, specListCss, } from "./ListingSpecList.js";
70
+ export { CardBadges, CardSpecLine, CARD_SPEC_LINE_CLASS, CARD_SPEC_STYLE_HREF, CARD_SPEC_TEXT_CLASS, cardSpecLineCss, } from "./CardBadges.js";
62
71
  // ── the card gallery's two gestures ─────────────────────────────────────────
63
72
  export { SWIPE_AXIS_RATIO, SWIPE_MIN_PX, cardGalleryCss, hasFinePointer, segmentIndex, swipeStep, useCardGallery, } from "./cardGallery.js";
64
73
  // ── the reader's two actions: save it, or send it to somebody ───────────────
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EACL,WAAW;AACX,6EAA6E;AAC7E,6EAA6E;AAC7E,oBAAoB,EACpB,sBAAsB;AACtB,0EAA0E;AAC1E,4EAA4E;AAC5E,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKvD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,cAAc;AACd,wEAAwE;AACxE,+DAA+D;AAC/D,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAKhC,8EAA8E;AAC9E,+EAA+E;AAC/E,oBAAoB;AACpB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG3D,+EAA+E;AAC/E,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EACL,WAAW;AACX,6EAA6E;AAC7E,6EAA6E;AAC7E,oBAAoB,EACpB,sBAAsB;AACtB,0EAA0E;AAC1E,4EAA4E;AAC5E,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKvD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB;AACnB,wEAAwE;AACxE,+DAA+D;AAC/D,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAKhC,8EAA8E;AAC9E,+EAA+E;AAC/E,oBAAoB;AACpB,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,6EAA6E;AAC7E,qEAAqE;AACrE,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,8EAA8E;AAC9E,+EAA+E;AAC/E,8CAA8C;AAC9C,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,gEAAgE;AAChE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,+EAA+E;AAC/E,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAkOlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAG7D"}
1
+ {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,EAAE,cA2OlC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAG7D"}
package/dist/i18n/es.js CHANGED
@@ -90,6 +90,15 @@ export const listingsI18nBundleEs = {
90
90
  "listings.detail.views": "Visitas",
91
91
  "listings.detail.edit": "Editar el anuncio",
92
92
  "listings.detail.take_down": "Retirarlo",
93
+ "listings.detail.back": "Atrás",
94
+ "listings.detail.ask_seller": "Pregunta al vendedor",
95
+ "listings.detail.question_available": "¿Sigue disponible?",
96
+ "listings.detail.question_price": "¿El precio es negociable?",
97
+ "listings.detail.question_viewing": "¿Puedo verlo en persona?",
98
+ "listings.detail.question_delivery": "¿Hacen envíos?",
99
+ "listings.detail.similar": "Anuncios similares",
100
+ "listings.detail.from_seller": "Más de este vendedor",
101
+ "listings.detail.show_all": "Ver todo",
93
102
  "listings.compose.new_title": "Anuncio nuevo",
94
103
  "listings.compose.edit_title": "Editar el anuncio",
95
104
  "listings.compose.category": "Categoría",
@@ -1 +1 @@
1
- {"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,GAAG,qBAAqB;IAExB,4EAA4E;IAC5E,EAAE;IACF,qEAAqE;IACrE,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,0CAA0C;IAC1C,EAAE;IACF,yEAAyE;IACzE,4EAA4E;IAC5E,4CAA4C;IAE5C,wBAAwB,EAAE,iCAAiC;IAE3D,uBAAuB,EAAE,UAAU;IACnC,yBAAyB,EAAE,aAAa;IACxC,2BAA2B,EAAE,WAAW;IACxC,wBAAwB,EAAE,UAAU;IACpC,yBAAyB,EAAE,UAAU;IACrC,sBAAsB,EAAE,SAAS;IACjC,0BAA0B,EAAE,WAAW;IACvC,yBAAyB,EAAE,UAAU;IACrC,0BAA0B,EAAE,WAAW;IAEvC,kCAAkC,EAChC,uEAAuE;IACzE,uCAAuC,EACrC,yFAAyF;IAC3F,qCAAqC,EACnC,iEAAiE;IACnE,kCAAkC,EAChC,sCAAsC;IACxC,uCAAuC,EACrC,4DAA4D;IAC9D,8BAA8B,EAC5B,iEAAiE;IACnE,yCAAyC,EACvC,sEAAsE;IAExE,wBAAwB,EAAE,UAAU;IACpC,iCAAiC,EAAE,oBAAoB;IACvD,4BAA4B,EAAE,wBAAwB;IACtD,4BAA4B,EAAE,sBAAsB;IACpD,+BAA+B,EAAE,qBAAqB;IACtD,wBAAwB,EAAE,oBAAoB;IAC9C,uBAAuB,EAAE,gBAAgB;IACzC,sBAAsB,EAAE,uBAAuB;IAC/C,6BAA6B,EAAE,oBAAoB;IACnD,yBAAyB,EAAE,OAAO;IAClC,6BAA6B,EAAE,qBAAqB;IACpD,4BAA4B,EAAE,qBAAqB;IAEnD,uBAAuB,EAAE,WAAW;IACpC,qBAAqB,EAAE,eAAe;IACtC,uBAAuB,EAAE,gBAAgB;IACzC,4BAA4B,EAC1B,kEAAkE;IACpE,yBAAyB,EAAE,UAAU;IACrC,yBAAyB,EAAE,UAAU;IACrC,mBAAmB,EAAE,IAAI;IACzB,yBAAyB,EAAE,qBAAqB;IAChD,2BAA2B,EAAE,sBAAsB;IACnD,yBAAyB,EAAE,yBAAyB;IAEpD,yBAAyB,EAAE,sBAAsB;IACjD,6BAA6B,EAAE,gCAAgC;IAC/D,uBAAuB,EAAE,YAAY;IACrC,2BAA2B,EAAE,yCAAyC;IACtE,yBAAyB,EAAE,4BAA4B;IACvD,2BAA2B,EAAE,mCAAmC;IAChE,+BAA+B,EAC7B,sFAAsF;IACxF,iCAAiC,EAC/B,8CAA8C;IAChD,6BAA6B,EAAE,aAAa;IAC5C,uBAAuB,EAAE,UAAU;IACnC,0BAA0B,EAAE,oCAAoC;IAChE,qCAAqC,EACnC,iDAAiD;IACnD,oCAAoC,EAClC,yEAAyE;IAC3E,2BAA2B,EAAE,yBAAyB;IACtD,8BAA8B,EAAE,qBAAqB;IACrD,4BAA4B,EAAE,4BAA4B;IAC1D,uBAAuB,EAAE,aAAa;IACtC,uBAAuB,EAAE,SAAS;IAClC,sBAAsB,EAAE,mBAAmB;IAC3C,2BAA2B,EAAE,WAAW;IAExC,4BAA4B,EAAE,eAAe;IAC7C,6BAA6B,EAAE,mBAAmB;IAClD,2BAA2B,EAAE,WAAW;IACxC,gCAAgC,EAC9B,0DAA0D;IAC5D,oCAAoC,EAAE,6BAA6B;IACnE,2CAA2C,EACzC,sEAAsE;IACxE,8BAA8B,EAAE,QAAQ;IACxC,iCAAiC,EAC/B,yDAAyD;IAC3D,oCAAoC,EAAE,aAAa;IACnD,8BAA8B,EAAE,QAAQ;IACxC,gCAAgC,EAC9B,gEAAgE;IAClE,iCAAiC,EAAE,QAAQ;IAC3C,iCAAiC,EAAE,YAAY;IAC/C,gCAAgC,EAC9B,sFAAsF;IACxF,iCAAiC,EAC/B,sFAAsF;IACxF,yBAAyB,EAAE,OAAO;IAClC,kCAAkC,EAChC,0CAA0C;IAC5C,0BAA0B,EAAE,UAAU;IACtC,kCAAkC,EAAE,sCAAsC;IAC1E,sCAAsC,EACpC,0DAA0D;IAC5D,iCAAiC,EAC/B,8CAA8C;IAChD,gCAAgC,EAAE,qCAAqC;IACvE,4BAA4B,EAAE,4BAA4B;IAC1D,wBAAwB,EAAE,kBAAkB;IAC5C,iCAAiC,EAAE,kCAAkC;IACrE,uBAAuB,EAAE,kBAAkB;IAC3C,4BAA4B,EAAE,uBAAuB;IACrD,6BAA6B,EAC3B,kEAAkE;IACpE,yBAAyB,EAAE,YAAY;IACvC,wBAAwB,EAAE,mBAAmB;IAC7C,0BAA0B,EAAE,UAAU;IACtC,4BAA4B,EAAE,qBAAqB;IACnD,6BAA6B,EAAE,WAAW;IAC1C,kCAAkC,EAChC,uEAAuE;IACzE,iCAAiC,EAC/B,sEAAsE;IACxE,kCAAkC,EAChC,mDAAmD;IAErD,sCAAsC,EACpC,+DAA+D;IACjE,2CAA2C,EACzC,iIAAiI;IACnI,yCAAyC,EACvC,4CAA4C;IAC9C,mCAAmC,EAAE,oCAAoC;IACzE,+BAA+B,EAC7B,iDAAiD;IACnD,qCAAqC,EAAE,mCAAmC;IAC1E,qCAAqC,EAAE,kCAAkC;IACzE,iCAAiC,EAAE,qCAAqC;IACxE,8CAA8C,EAC5C,wFAAwF;IAE1F,qBAAqB,EAAE,cAAc;IACrC,0BAA0B,EAAE,SAAS;IACrC,0BAA0B,EAAE,YAAY;IACxC,4BAA4B,EAAE,SAAS;IACvC,2BAA2B,EAAE,WAAW;IACxC,uBAAuB,EAAE,wBAAwB;IACjD,2BAA2B,EAAE,gCAAgC;IAC7D,qBAAqB,EAAE,0BAA0B;IACjD,qBAAqB,EAAE,YAAY;IACnC,+BAA+B,EAAE,gCAAgC;IACjE,4BAA4B,EAAE,yCAAyC;IACvE,4BAA4B,EAAE,gDAAgD;IAC9E,8BAA8B,EAAE,sDAAsD;IACtF,6BAA6B,EAAE,qCAAqC;IACpE,6BAA6B,EAC3B,2CAA2C;IAC7C,iCAAiC,EAAE,uCAAuC;IAC1E,mCAAmC,EAAE,2CAA2C;IAChF,mCAAmC,EACjC,6DAA6D;IAC/D,iCAAiC,EAAE,gCAAgC;IACnE,oBAAoB,EAAE,QAAQ;IAC9B,uBAAuB,EAAE,UAAU;IACnC,wBAAwB,EAAE,qBAAqB;IAC/C,sBAAsB,EAAE,QAAQ;IAChC,8BAA8B,EAAE,mBAAmB;IACnD,4BAA4B,EAAE,mBAAmB;IACjD,2BAA2B,EAAE,QAAQ;IACrC,0BAA0B,EAAE,qBAAqB;IACjD,0BAA0B,EAAE,SAAS;IACrC,oBAAoB,EAAE,KAAK;IAC3B,oCAAoC,EAAE,uBAAuB;IAC7D,mCAAmC,EACjC,yEAAyE;IAC3E,yCAAyC,EACvC,iDAAiD;IAEnD,0BAA0B,EAAE,WAAW;IACvC,4BAA4B,EAAE,yBAAyB;IACvD,gCAAgC,EAAE,iCAAiC;IACnE,0BAA0B,EAAE,8BAA8B;IAC1D,+BAA+B,EAC7B,8EAA8E;IAChF,iCAAiC,EAC/B,8EAA8E;IAEhF,0BAA0B,EAAE,+BAA+B;IAC3D,wBAAwB,EACtB,wEAAwE;IAC1E,kCAAkC,EAChC,yEAAyE;IAC3E,6BAA6B,EAC3B,0DAA0D;IAC5D,gCAAgC,EAC9B,8DAA8D;IAChE,4BAA4B,EAAE,oCAAoC;IAClE,4BAA4B,EAC1B,sEAAsE;IAExE,oBAAoB,EAAE,UAAU;IAChC,oBAAoB,EAAE,WAAW;IACjC,yBAAyB,EAAE,eAAe;IAE1C,qBAAqB,EAAE,SAAS;IAChC,sBAAsB,EAAE,kBAAkB;IAC1C,4BAA4B,EAAE,OAAO;IACrC,mBAAmB,EAAE,cAAc;IACnC,yBAAyB,EAAE,MAAM;IACjC,wBAAwB,EAAE,WAAW;CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAgB;IACrD,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"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"}