@stapel/listings-react 0.1.0
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 +1 -0
- package/MODULE.md +191 -0
- package/README.md +169 -0
- package/dist/api/generated/schema.d.ts +1253 -0
- package/dist/api/generated/schema.d.ts.map +1 -0
- package/dist/api/generated/schema.js +2 -0
- package/dist/api/generated/schema.js.map +1 -0
- package/dist/api/listingsApi.d.ts +145 -0
- package/dist/api/listingsApi.d.ts.map +1 -0
- package/dist/api/listingsApi.js +38 -0
- package/dist/api/listingsApi.js.map +1 -0
- package/dist/api/types.d.ts +156 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +37 -0
- package/dist/api/types.js.map +1 -0
- package/dist/default/ErrorAlert.d.ts +9 -0
- package/dist/default/ErrorAlert.d.ts.map +1 -0
- package/dist/default/ErrorAlert.js +27 -0
- package/dist/default/ErrorAlert.js.map +1 -0
- package/dist/default/FavoritesPane.d.ts +18 -0
- package/dist/default/FavoritesPane.d.ts.map +1 -0
- package/dist/default/FavoritesPane.js +28 -0
- package/dist/default/FavoritesPane.js.map +1 -0
- package/dist/default/ListingCard.d.ts +42 -0
- package/dist/default/ListingCard.d.ts.map +1 -0
- package/dist/default/ListingCard.js +37 -0
- package/dist/default/ListingCard.js.map +1 -0
- package/dist/default/ListingComposerPage.d.ts +46 -0
- package/dist/default/ListingComposerPage.d.ts.map +1 -0
- package/dist/default/ListingComposerPage.js +99 -0
- package/dist/default/ListingComposerPage.js.map +1 -0
- package/dist/default/ListingDetailPane.d.ts +33 -0
- package/dist/default/ListingDetailPane.d.ts.map +1 -0
- package/dist/default/ListingDetailPane.js +48 -0
- package/dist/default/ListingDetailPane.js.map +1 -0
- package/dist/default/ListingPhoto.d.ts +25 -0
- package/dist/default/ListingPhoto.d.ts.map +1 -0
- package/dist/default/ListingPhoto.js +20 -0
- package/dist/default/ListingPhoto.js.map +1 -0
- package/dist/default/MyListingsPane.d.ts +25 -0
- package/dist/default/MyListingsPane.d.ts.map +1 -0
- package/dist/default/MyListingsPane.js +84 -0
- package/dist/default/MyListingsPane.js.map +1 -0
- package/dist/default/StatusTags.d.ts +31 -0
- package/dist/default/StatusTags.d.ts.map +1 -0
- package/dist/default/StatusTags.js +40 -0
- package/dist/default/StatusTags.js.map +1 -0
- package/dist/default/icons.d.ts +16 -0
- package/dist/default/icons.d.ts.map +1 -0
- package/dist/default/icons.js +5 -0
- package/dist/default/icons.js.map +1 -0
- package/dist/default/index.d.ts +35 -0
- package/dist/default/index.d.ts.map +1 -0
- package/dist/default/index.js +26 -0
- package/dist/default/index.js.map +1 -0
- package/dist/default/theme.d.ts +25 -0
- package/dist/default/theme.d.ts.map +1 -0
- package/dist/default/theme.js +40 -0
- package/dist/default/theme.js.map +1 -0
- package/dist/default/types.d.ts +12 -0
- package/dist/default/types.d.ts.map +1 -0
- package/dist/default/types.js +2 -0
- package/dist/default/types.js.map +1 -0
- package/dist/flows/registry.d.ts +35 -0
- package/dist/flows/registry.d.ts.map +1 -0
- package/dist/flows/registry.js +33 -0
- package/dist/flows/registry.js.map +1 -0
- package/dist/headless/Favorites.d.ts +52 -0
- package/dist/headless/Favorites.d.ts.map +1 -0
- package/dist/headless/Favorites.js +78 -0
- package/dist/headless/Favorites.js.map +1 -0
- package/dist/headless/ListingActions.d.ts +30 -0
- package/dist/headless/ListingActions.d.ts.map +1 -0
- package/dist/headless/ListingActions.js +54 -0
- package/dist/headless/ListingActions.js.map +1 -0
- package/dist/headless/ListingComposer.d.ts +133 -0
- package/dist/headless/ListingComposer.d.ts.map +1 -0
- package/dist/headless/ListingComposer.js +246 -0
- package/dist/headless/ListingComposer.js.map +1 -0
- package/dist/headless/ListingDetail.d.ts +81 -0
- package/dist/headless/ListingDetail.d.ts.map +1 -0
- package/dist/headless/ListingDetail.js +101 -0
- package/dist/headless/ListingDetail.js.map +1 -0
- package/dist/headless/ListingsProvider.d.ts +17 -0
- package/dist/headless/ListingsProvider.d.ts.map +1 -0
- package/dist/headless/ListingsProvider.js +16 -0
- package/dist/headless/ListingsProvider.js.map +1 -0
- package/dist/headless/MyListings.d.ts +44 -0
- package/dist/headless/MyListings.d.ts.map +1 -0
- package/dist/headless/MyListings.js +82 -0
- package/dist/headless/MyListings.js.map +1 -0
- package/dist/headless/useMandateGate.d.ts +28 -0
- package/dist/headless/useMandateGate.d.ts.map +1 -0
- package/dist/headless/useMandateGate.js +39 -0
- package/dist/headless/useMandateGate.js.map +1 -0
- package/dist/i18n/errorsMap.d.ts +34 -0
- package/dist/i18n/errorsMap.d.ts.map +1 -0
- package/dist/i18n/errorsMap.js +45 -0
- package/dist/i18n/errorsMap.js.map +1 -0
- package/dist/i18n/es.d.ts +21 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +146 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.es.gen.js +58 -0
- package/dist/i18n/generated/errors.es.gen.js.map +1 -0
- package/dist/i18n/generated/errors.gen.d.ts +413 -0
- package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.gen.js +210 -0
- package/dist/i18n/generated/errors.gen.js.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.js +58 -0
- package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
- package/dist/i18n/keys.d.ts +170 -0
- package/dist/i18n/keys.d.ts.map +1 -0
- package/dist/i18n/keys.js +295 -0
- package/dist/i18n/keys.js.map +1 -0
- package/dist/i18n/ru.d.ts +37 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +162 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/index.d.ts +103 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +98 -0
- package/dist/index.js.map +1 -0
- package/dist/model/context.d.ts +11 -0
- package/dist/model/context.d.ts.map +1 -0
- package/dist/model/context.js +16 -0
- package/dist/model/context.js.map +1 -0
- package/dist/model/draft.d.ts +138 -0
- package/dist/model/draft.d.ts.map +1 -0
- package/dist/model/draft.js +192 -0
- package/dist/model/draft.js.map +1 -0
- package/dist/model/features.d.ts +69 -0
- package/dist/model/features.d.ts.map +1 -0
- package/dist/model/features.js +73 -0
- package/dist/model/features.js.map +1 -0
- package/dist/model/mineSource.d.ts +47 -0
- package/dist/model/mineSource.d.ts.map +1 -0
- package/dist/model/mineSource.js +45 -0
- package/dist/model/mineSource.js.map +1 -0
- package/dist/model/mutations.d.ts +60 -0
- package/dist/model/mutations.d.ts.map +1 -0
- package/dist/model/mutations.js +165 -0
- package/dist/model/mutations.js.map +1 -0
- package/dist/model/queries.d.ts +75 -0
- package/dist/model/queries.d.ts.map +1 -0
- package/dist/model/queries.js +117 -0
- package/dist/model/queries.js.map +1 -0
- package/dist/model/queryKeys.d.ts +50 -0
- package/dist/model/queryKeys.d.ts.map +1 -0
- package/dist/model/queryKeys.js +24 -0
- package/dist/model/queryKeys.js.map +1 -0
- package/dist/model/runtime.d.ts +69 -0
- package/dist/model/runtime.d.ts.map +1 -0
- package/dist/model/runtime.js +14 -0
- package/dist/model/runtime.js.map +1 -0
- package/dist/model/status.d.ts +117 -0
- package/dist/model/status.d.ts.map +1 -0
- package/dist/model/status.js +164 -0
- package/dist/model/status.js.map +1 -0
- package/dist/model/transitions.d.ts +41 -0
- package/dist/model/transitions.d.ts.map +1 -0
- package/dist/model/transitions.js +25 -0
- package/dist/model/transitions.js.map +1 -0
- package/dist/model/validation.d.ts +135 -0
- package/dist/model/validation.d.ts.map +1 -0
- package/dist/model/validation.js +191 -0
- package/dist/model/validation.js.map +1 -0
- package/dist/nav/manifest.d.ts +46 -0
- package/dist/nav/manifest.d.ts.map +1 -0
- package/dist/nav/manifest.js +56 -0
- package/dist/nav/manifest.js.map +1 -0
- package/llms.txt +118 -0
- package/manifest.json +1044 -0
- package/nav-manifest.json +84 -0
- package/package.json +121 -0
- package/src/analytics/generated/events.json +7 -0
- package/src/api/generated/schema.ts +1255 -0
- package/src/api/listingsApi.ts +237 -0
- package/src/api/types.ts +193 -0
- package/src/default/ErrorAlert.tsx +46 -0
- package/src/default/FavoritesPane.tsx +123 -0
- package/src/default/ListingCard.tsx +178 -0
- package/src/default/ListingComposerPage.tsx +466 -0
- package/src/default/ListingDetailPane.tsx +271 -0
- package/src/default/ListingPhoto.tsx +62 -0
- package/src/default/MyListingsPane.tsx +333 -0
- package/src/default/StatusTags.tsx +86 -0
- package/src/default/icons.tsx +31 -0
- package/src/default/index.ts +35 -0
- package/src/default/theme.tsx +67 -0
- package/src/default/types.ts +12 -0
- package/src/flows/registry.ts +45 -0
- package/src/headless/Favorites.tsx +137 -0
- package/src/headless/ListingActions.tsx +101 -0
- package/src/headless/ListingComposer.tsx +476 -0
- package/src/headless/ListingDetail.tsx +231 -0
- package/src/headless/ListingsProvider.tsx +20 -0
- package/src/headless/MyListings.tsx +148 -0
- package/src/headless/useMandateGate.ts +40 -0
- package/src/i18n/errorsMap.ts +62 -0
- package/src/i18n/es.ts +198 -0
- package/src/i18n/generated/errors.es.gen.ts +64 -0
- package/src/i18n/generated/errors.gen.ts +241 -0
- package/src/i18n/generated/errors.json +499 -0
- package/src/i18n/generated/errors.ru.gen.ts +64 -0
- package/src/i18n/keys.ts +356 -0
- package/src/i18n/ru.ts +215 -0
- package/src/index.ts +260 -0
- package/src/model/context.tsx +28 -0
- package/src/model/draft.ts +307 -0
- package/src/model/features.ts +122 -0
- package/src/model/mineSource.ts +55 -0
- package/src/model/mutations.ts +224 -0
- package/src/model/queries.ts +150 -0
- package/src/model/queryKeys.ts +76 -0
- package/src/model/runtime.ts +87 -0
- package/src/model/status.ts +279 -0
- package/src/model/transitions.ts +62 -0
- package/src/model/validation.ts +271 -0
- package/src/nav/manifest.ts +97 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { StapelClient } from "@stapel/core";
|
|
2
|
+
import type { DeleteResponse, FavoriteToggleResponse, ListingActionResponse, ListingDetail, ListingDraft, ListingDraftPatch, ListingPageParams, ListingStatusInfo, MyCounters, PaginatedListingCards, PublishResponse } from "./types.js";
|
|
3
|
+
import type { ValidationBatchResult } from "@stapel/attributes-react";
|
|
4
|
+
/**
|
|
5
|
+
* The pair's typed operation surface — one method per stapel-listings endpoint
|
|
6
|
+
* a storefront may call, bound to the injected {@link StapelClient} (the
|
|
7
|
+
* per-module override seam of frontend-standard §7.2). Paths are relative to
|
|
8
|
+
* the runtime's `baseUrl` (`/listings/api/v1/`).
|
|
9
|
+
*
|
|
10
|
+
* ── The two operations that are on the contract and NOT here ───────────────
|
|
11
|
+
*
|
|
12
|
+
* `PUT /{pk}/` and `PATCH /{pk}/` are absent, and this is the one place in
|
|
13
|
+
* the pair where an absence is a safety decision rather than a scope one.
|
|
14
|
+
* Every OWNER operation in this module routes through `views._get_own`, which
|
|
15
|
+
* answers `error.403.listing_not_owner` when the caller is not the owner —
|
|
16
|
+
* every one except these two. `update`/`partial_update` are the plain
|
|
17
|
+
* `ModelViewSet` implementations under the viewset's default
|
|
18
|
+
* `IsAuthenticatedOrReadOnly`, and `get_queryset` hands them
|
|
19
|
+
* `Listing.objects.all()`: any authenticated caller can write any listing's
|
|
20
|
+
* draft fields through them. `POST /{pk}/save-draft/` performs the SAME write
|
|
21
|
+
* (the same `ListingDraftSerializer`, `partial=True`) with the ownership
|
|
22
|
+
* check, so the pair uses it and nothing is lost. Both stay in the generated
|
|
23
|
+
* schema and therefore in `manifest.json` — the contract is not hidden, this
|
|
24
|
+
* pair simply declines to be the client that exercises it. Upstream ask,
|
|
25
|
+
* recorded in MODULE.md: put `_get_own` in front of `update`/`partial_update`
|
|
26
|
+
* (or drop them from the router).
|
|
27
|
+
*
|
|
28
|
+
* These operations will be GENERATED from schema.json operationIds by gen-api
|
|
29
|
+
* v2 (task `core-typed-ops`); until then they are hand-authored here (the ONE
|
|
30
|
+
* legal home of path strings — `stapel/no-string-paths` §2.3 carve-out).
|
|
31
|
+
*/
|
|
32
|
+
export interface ListingsApi {
|
|
33
|
+
readonly client: StapelClient;
|
|
34
|
+
/**
|
|
35
|
+
* One keyset page of PUBLISHED cards.
|
|
36
|
+
*
|
|
37
|
+
* Two things this is not, both worth stating because the storefront spec
|
|
38
|
+
* assumed otherwise at one point:
|
|
39
|
+
*
|
|
40
|
+
* - It is not "my listings". `get_queryset` answers `qs.published()` for
|
|
41
|
+
* `list` and takes no owner parameter, so this endpoint cannot be
|
|
42
|
+
* narrowed to the caller. See `headless/MyListings.tsx` for what the
|
|
43
|
+
* dashboard does about that.
|
|
44
|
+
* - It is not the storefront grid either. A marketplace's result page goes
|
|
45
|
+
* through `@stapel/search-react`, because `promoted` (DSA Art. 26) rides
|
|
46
|
+
* every search item under every sort and a card list that carried the
|
|
47
|
+
* marking on some pages and not others would be worse than one that
|
|
48
|
+
* never claimed it. This exists for a host with no search module and for
|
|
49
|
+
* the "more from this category" strip a detail page may want.
|
|
50
|
+
*/
|
|
51
|
+
list(params?: ListingPageParams, options?: {
|
|
52
|
+
readonly signal?: AbortSignal;
|
|
53
|
+
}): Promise<PaginatedListingCards>;
|
|
54
|
+
/**
|
|
55
|
+
* One listing in full.
|
|
56
|
+
*
|
|
57
|
+
* `IsAuthenticatedOrReadOnly` + a queryset with no `published()` filter:
|
|
58
|
+
* this answers for a DRAFT and for a BLOCKED listing too, to anyone who
|
|
59
|
+
* knows the id. The pair does not pretend otherwise — `useListing` reports
|
|
60
|
+
* `publiclyVisible` off `status` so a skin can say "this listing is not
|
|
61
|
+
* published" instead of drawing a live-looking page (see `model/status.ts`,
|
|
62
|
+
* and MODULE.md's upstream note).
|
|
63
|
+
*/
|
|
64
|
+
retrieve(id: number, options?: {
|
|
65
|
+
readonly signal?: AbortSignal;
|
|
66
|
+
}): Promise<ListingDetail>;
|
|
67
|
+
/**
|
|
68
|
+
* The AllowAny status probe: both axes plus `is_deleted` / `is_expired` /
|
|
69
|
+
* `is_active` / `owner_id`.
|
|
70
|
+
*
|
|
71
|
+
* It reads `Listing.all_objects`, so it is the only operation that still
|
|
72
|
+
* answers for a SOFT-DELETED listing — which is exactly what turns a bare
|
|
73
|
+
* 404 on the detail into "this listing was removed".
|
|
74
|
+
*/
|
|
75
|
+
status(id: number, options?: {
|
|
76
|
+
readonly signal?: AbortSignal;
|
|
77
|
+
}): Promise<ListingStatusInfo>;
|
|
78
|
+
/** Counts by dashboard tab for the caller (`active` / `archived` /
|
|
79
|
+
* `drafts`). Server-side definitions, not the pair's: `active` folds
|
|
80
|
+
* PENDING in with PUBLISHED, `drafts` folds REJECTED in with DRAFT. */
|
|
81
|
+
myCounters(options?: {
|
|
82
|
+
readonly signal?: AbortSignal;
|
|
83
|
+
}): Promise<MyCounters>;
|
|
84
|
+
/** One keyset page of the caller's favourites. */
|
|
85
|
+
myFavorites(params?: ListingPageParams, options?: {
|
|
86
|
+
readonly signal?: AbortSignal;
|
|
87
|
+
}): Promise<PaginatedListingCards>;
|
|
88
|
+
/**
|
|
89
|
+
* Start a draft. `category_id` is the only required member: the server
|
|
90
|
+
* forces `owner=request.user` and `status=draft` in `perform_create`, so a
|
|
91
|
+
* body that tried to set either is writing a field it does not own.
|
|
92
|
+
*/
|
|
93
|
+
createDraft(body: ListingDraftPatch): Promise<ListingDraft>;
|
|
94
|
+
/**
|
|
95
|
+
* Persist draft fields. Always partial — send what moved.
|
|
96
|
+
*
|
|
97
|
+
* Refuses with the DRF field-error envelope (`error.400.field.*`) on a
|
|
98
|
+
* declarative violation (`title_draft` over 255, a negative price, a
|
|
99
|
+
* `stock_quantity` that contradicts `countable`).
|
|
100
|
+
*/
|
|
101
|
+
saveDraft(id: number, body: ListingDraftPatch): Promise<ListingDraft>;
|
|
102
|
+
/**
|
|
103
|
+
* Ask what publishing WOULD say, without publishing. Same validator as
|
|
104
|
+
* `publish` (`services.publish.validate_draft`), so the two cannot disagree
|
|
105
|
+
* — including on an unknown feature slug, which 0.6.0's M-7 convergence
|
|
106
|
+
* made a per-feature refusal (`error.400.listing_feature_not_allowed`)
|
|
107
|
+
* rather than an opaque failure at publish time.
|
|
108
|
+
*/
|
|
109
|
+
validateDraft(id: number, options?: {
|
|
110
|
+
readonly signal?: AbortSignal;
|
|
111
|
+
}): Promise<ValidationBatchResult>;
|
|
112
|
+
/**
|
|
113
|
+
* Promote the draft.
|
|
114
|
+
*
|
|
115
|
+
* TWO distinct 400s, and a caller must tell them apart:
|
|
116
|
+
* - an INVALID DRAFT answers with a bare {@link ValidationBatchResult}
|
|
117
|
+
* body — no `localizable_error`, no envelope — which core wraps as
|
|
118
|
+
* `stapel.http.400` with the batch on `StapelApiError.body`;
|
|
119
|
+
* - a promotion that then fails (`REQUIRE_IMAGE_ON_PUBLISH` with no photo)
|
|
120
|
+
* answers the ordinary envelope `error.400.publish_validation_failed`.
|
|
121
|
+
* `model/validation.ts` owns that split so no screen re-derives it.
|
|
122
|
+
*
|
|
123
|
+
* On success the returned `status` is `pending` for a first publication and
|
|
124
|
+
* stays `published` for an edit to a LIVE listing — the 0.5.0
|
|
125
|
+
* re-moderation semantics the whole dashboard is built around.
|
|
126
|
+
*/
|
|
127
|
+
publish(id: number): Promise<PublishResponse>;
|
|
128
|
+
/** Move to ARCHIVED. `error.409.invalid_listing_transition` with
|
|
129
|
+
* `params.from_status` when the lifecycle does not allow it. */
|
|
130
|
+
archive(id: number): Promise<ListingActionResponse>;
|
|
131
|
+
/** Mark SOLD. Same 409 contract as {@link archive}. */
|
|
132
|
+
complete(id: number): Promise<ListingActionResponse>;
|
|
133
|
+
/** Favourite a listing. Idempotent server-side (`get_or_create`). */
|
|
134
|
+
favorite(id: number): Promise<FavoriteToggleResponse>;
|
|
135
|
+
/** Un-favourite. Idempotent: deleting nothing still answers 200. */
|
|
136
|
+
unfavorite(id: number): Promise<FavoriteToggleResponse>;
|
|
137
|
+
/**
|
|
138
|
+
* Soft-delete. Ownership-checked (unlike PUT/PATCH — see the header) and
|
|
139
|
+
* refused with `error.409.listing_cannot_delete_active` while the listing
|
|
140
|
+
* is PUBLISHED or PENDING: archive it first.
|
|
141
|
+
*/
|
|
142
|
+
remove(id: number): Promise<DeleteResponse>;
|
|
143
|
+
}
|
|
144
|
+
export declare function createListingsApi(client: StapelClient): ListingsApi;
|
|
145
|
+
//# sourceMappingURL=listingsApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listingsApi.d.ts","sourceRoot":"","sources":["../../src/api/listingsApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,qBAAqB,EACrB,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAE9B;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CACF,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;;;;;;OASG;IACH,QAAQ,CACN,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B;;;;;;;OAOG;IACH,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B;;2EAEuE;IACvE,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE7E,kDAAkD;IAClD,WAAW,CACT,MAAM,CAAC,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5D;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEtE;;;;;;OAMG;IACH,aAAa,CACX,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE9C;oEACgE;IAChE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEpD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAErD,qEAAqE;IACrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEtD,oEAAoE;IACpE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAExD;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7C;AAwBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAwCnE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function pageQuery(params) {
|
|
2
|
+
return {
|
|
3
|
+
...(params?.anchor !== undefined ? { anchor: params.anchor } : {}),
|
|
4
|
+
...(params?.direction !== undefined ? { direction: params.direction } : {}),
|
|
5
|
+
...(params?.limit !== undefined ? { limit: params.limit } : {}),
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function signal(options) {
|
|
9
|
+
return options?.signal !== undefined ? { signal: options.signal } : {};
|
|
10
|
+
}
|
|
11
|
+
/** The collection root and the one place a listing id becomes a path. */
|
|
12
|
+
const COLLECTION = "/listings/";
|
|
13
|
+
function listingPath(id) {
|
|
14
|
+
return `${COLLECTION}${String(id)}/`;
|
|
15
|
+
}
|
|
16
|
+
export function createListingsApi(client) {
|
|
17
|
+
return {
|
|
18
|
+
client,
|
|
19
|
+
list: (params, options) => client.get(COLLECTION, { query: pageQuery(params), ...signal(options) }),
|
|
20
|
+
retrieve: (id, options) => client.get(listingPath(id), signal(options)),
|
|
21
|
+
status: (id, options) => client.get(`${listingPath(id)}status/`, signal(options)),
|
|
22
|
+
myCounters: (options) => client.get(`${COLLECTION}my/counters/`, signal(options)),
|
|
23
|
+
myFavorites: (params, options) => client.get(`${COLLECTION}my/favorites/`, {
|
|
24
|
+
query: pageQuery(params),
|
|
25
|
+
...signal(options),
|
|
26
|
+
}),
|
|
27
|
+
createDraft: (body) => client.post(COLLECTION, body),
|
|
28
|
+
saveDraft: (id, body) => client.post(`${listingPath(id)}save-draft/`, body),
|
|
29
|
+
validateDraft: (id, options) => client.get(`${listingPath(id)}validate-draft/`, signal(options)),
|
|
30
|
+
publish: (id) => client.post(`${listingPath(id)}publish/`),
|
|
31
|
+
archive: (id) => client.post(`${listingPath(id)}archive/`),
|
|
32
|
+
complete: (id) => client.post(`${listingPath(id)}complete/`),
|
|
33
|
+
favorite: (id) => client.post(`${listingPath(id)}favorite/`),
|
|
34
|
+
unfavorite: (id) => client.post(`${listingPath(id)}unfavorite/`),
|
|
35
|
+
remove: (id) => client.delete(listingPath(id)),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=listingsApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listingsApi.js","sourceRoot":"","sources":["../../src/api/listingsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire types for the stapel-listings HTTP contract — **derived from the
|
|
3
|
+
* generated OpenAPI surface** (frontend-standard §2/§3), never hand-maintained.
|
|
4
|
+
* The single source of truth is `components["schemas"]` from this pair's own
|
|
5
|
+
* package-LOCAL generated schema (`./generated/schema.js`, produced by
|
|
6
|
+
* `pnpm gen:api` from stapel-listings' OWN `docs/schema.json`).
|
|
7
|
+
*
|
|
8
|
+
* Two notes about the polymorphic feature union, one of them now HISTORY and
|
|
9
|
+
* kept because the reason it is history is the useful part:
|
|
10
|
+
*
|
|
11
|
+
* 1. **The discriminator is correct as of stapel-listings 0.6.1, and was not
|
|
12
|
+
* in 0.6.0.** 0.6.0 declared `discriminator: {propertyName: "type",
|
|
13
|
+
* mapping: {"null": ConvertibleUnitDao}}` — one bogus entry instead of the
|
|
14
|
+
* ten type slugs — and openapi-typescript answers that by stripping `type`
|
|
15
|
+
* from every member and re-adding a SYNTHETIC discriminant, so the
|
|
16
|
+
* generated `IntDao` said `type: "IntDao"` where the wire sends `"int"`.
|
|
17
|
+
* `@stapel/categories-react` hit the same defect one directory over and
|
|
18
|
+
* routed around it. 0.6.1 emits the ten slugs (and an upstream contract
|
|
19
|
+
* test now holds them there), so `Schemas["FeatureDao"]` and
|
|
20
|
+
* `Schemas["FeatureDto"]` discriminate on the real values and ARE the wire
|
|
21
|
+
* types this pair uses. What still comes from
|
|
22
|
+
* `@stapel/attributes-react` is the behaviour — the editors, the mirror,
|
|
23
|
+
* the formatter — which is the spec's L0 seam and never was a workaround.
|
|
24
|
+
*
|
|
25
|
+
* 2. **A stored DAO carries `slug`; the schema's `FeatureDao` does not.**
|
|
26
|
+
* `features`/`features_title`/`features_badges` are `ListingFeaturesOutput
|
|
27
|
+
* Field`, a plain `serializers.JSONField` whose OpenAPI *description* is
|
|
28
|
+
* swapped for the DAO union by an extension (`stapel-listings/
|
|
29
|
+
* serializers.py`). A JSONField filters nothing: what reaches the wire is
|
|
30
|
+
* what `build_features_list` stored, and that is `{**dao, "slug": slug}`
|
|
31
|
+
* (`services/features.py`). The slug is load-bearing — it is how a card
|
|
32
|
+
* keys a badge and how a refusal finds its control — so {@link
|
|
33
|
+
* ListingFeatureDao} mirrors the runtime shape and says why.
|
|
34
|
+
*/
|
|
35
|
+
import type { FeatureConfig, FeatureDef, FeatureValueDto } from "@stapel/attributes-react";
|
|
36
|
+
import type { components } from "./generated/schema.js";
|
|
37
|
+
/** The generated schema table — the one source of truth for wire shapes. */
|
|
38
|
+
export type Schemas = components["schemas"];
|
|
39
|
+
/** `GET /listings/{pk}/` 200 — everything a detail page reads. */
|
|
40
|
+
export type ListingDetail = Schemas["ListingDetail"];
|
|
41
|
+
/** One row of a card list (`GET /listings/`, `GET /listings/my/favorites/`). */
|
|
42
|
+
export type ListingCard = Schemas["ListingCard"];
|
|
43
|
+
/** `POST /listings/` request+response and `POST /{pk}/save-draft/` response —
|
|
44
|
+
* the draft twin. Every user-editable field is a `*_draft` one, promoted onto
|
|
45
|
+
* its published sibling by `publish`. */
|
|
46
|
+
export type ListingDraft = Schemas["ListingDraft"];
|
|
47
|
+
/** The partial body a `save-draft` write sends. */
|
|
48
|
+
export type ListingDraftPatch = Schemas["PatchedListingDraft"];
|
|
49
|
+
/** `GET /{pk}/status/` 200 — the AllowAny status probe, and the ONLY read that
|
|
50
|
+
* still answers for a soft-deleted listing (`Listing.all_objects`). */
|
|
51
|
+
export type ListingStatusInfo = Schemas["ListingStatus"];
|
|
52
|
+
/** `GET /my/counters/` 200 — the three dashboard tab counts. */
|
|
53
|
+
export type MyCounters = Schemas["MyCountersResponse"];
|
|
54
|
+
/** `POST /{pk}/publish/` 200. The 400 is a `ValidationBatchResult`, NOT an
|
|
55
|
+
* error envelope — see `model/validation.ts`. */
|
|
56
|
+
export type PublishResponse = Schemas["PublishResponse"];
|
|
57
|
+
/** `POST /{pk}/archive|complete/` 200. */
|
|
58
|
+
export type ListingActionResponse = Schemas["ListingActionResponse"];
|
|
59
|
+
/** `POST /{pk}/favorite|unfavorite/` 200. */
|
|
60
|
+
export type FavoriteToggleResponse = Schemas["FavoriteToggleResponse"];
|
|
61
|
+
/** `DELETE /{pk}/` 200. */
|
|
62
|
+
export type DeleteResponse = Schemas["DeleteResponse"];
|
|
63
|
+
/** The keyset envelope both card lists come back in (`IDAnchorPagination`). */
|
|
64
|
+
export type PaginatedListingCards = Schemas["PaginatedListingCardList"];
|
|
65
|
+
/**
|
|
66
|
+
* The nine lifecycle states, as `models.ListingStatus` declares them.
|
|
67
|
+
*
|
|
68
|
+
* A runtime array and not only a type, because the dashboard's own table of
|
|
69
|
+
* expected captions is asserted over it — a status added upstream turns
|
|
70
|
+
* `test/status.test.ts` red instead of rendering as a bare enum value.
|
|
71
|
+
*/
|
|
72
|
+
export declare const LISTING_STATUSES: readonly ListingLifecycleStatus[];
|
|
73
|
+
/** One lifecycle state. THE field that decides public visibility — and the
|
|
74
|
+
* only one (`models.py`: "no visibility-reads-moderation_status coupling"). */
|
|
75
|
+
export type ListingLifecycleStatus = Schemas["StatusD41Enum"];
|
|
76
|
+
/** The four content-moderation states, as `models.ModerationStatus` declares
|
|
77
|
+
* them. Independent of the lifecycle: see `model/status.ts`. */
|
|
78
|
+
export declare const MODERATION_STATUSES: readonly ListingModerationStatus[];
|
|
79
|
+
/** One moderation state. Decides NOTHING about visibility. */
|
|
80
|
+
export type ListingModerationStatus = Schemas["ModerationStatusEnum"];
|
|
81
|
+
/**
|
|
82
|
+
* The ten value types, straight out of the generated discriminated union.
|
|
83
|
+
*
|
|
84
|
+
* Not a hand-written list: `Schemas["FeatureDao"]["type"]` is the union of the
|
|
85
|
+
* ten `discriminator.mapping` keys, so a type registered upstream widens this
|
|
86
|
+
* automatically and a type REMOVED upstream reddens every exhaustive switch
|
|
87
|
+
* over it. That is only true because 0.6.1 fixed the mapping (header, note 1).
|
|
88
|
+
*/
|
|
89
|
+
export type ListingFeatureType = Schemas["FeatureDao"]["type"];
|
|
90
|
+
/** The generated union itself, for a consumer that wants to narrow a row
|
|
91
|
+
* exhaustively by `type`. `featureFromDao` deliberately does not — it hands
|
|
92
|
+
* the whole row to `@stapel/attributes-react`, which switches on the same
|
|
93
|
+
* discriminant at runtime and is the one place that knows what each type's
|
|
94
|
+
* `value` means. */
|
|
95
|
+
export type ListingFeatureDaoUnion = Schemas["FeatureDao"];
|
|
96
|
+
/**
|
|
97
|
+
* One stored feature projection, as it actually arrives.
|
|
98
|
+
*
|
|
99
|
+
* The DAO is the value TOGETHER with the display configuration its type
|
|
100
|
+
* needs — `prefix`, `postfix`, `precision`, `trueLabel`, `maxSelected`, … all
|
|
101
|
+
* ride along beside `value`. That is why a card can render a badge without
|
|
102
|
+
* fetching the category schema: everything `formatFeatureValue` reads is in
|
|
103
|
+
* the row. `featureFromDao` (`model/features.ts`) is the one place that
|
|
104
|
+
* splits it back into the `(FeatureDef, FeatureValueDto)` pair
|
|
105
|
+
* `@stapel/attributes-react` formats.
|
|
106
|
+
*
|
|
107
|
+
* `slug` is declared REQUIRED here even though the schema omits it — see this
|
|
108
|
+
* file's header, note 2. A DAO without one is a stored row this build cannot
|
|
109
|
+
* key, and `featureFromDao` says so rather than inventing an index. The index
|
|
110
|
+
* signature is the other half of the same fact: the field is a `JSONField`,
|
|
111
|
+
* so what the row carries is what was stored, not what the union describes.
|
|
112
|
+
*/
|
|
113
|
+
export interface ListingFeatureDao {
|
|
114
|
+
readonly slug: string;
|
|
115
|
+
/** The VALUE type slug — the axis `@stapel/attributes-react` switches on.
|
|
116
|
+
* Typed from the generated union, optional because a malformed stored row
|
|
117
|
+
* can lack it and a JSONField will pass that through. */
|
|
118
|
+
readonly type?: ListingFeatureType;
|
|
119
|
+
readonly value?: unknown;
|
|
120
|
+
/** Display name or translation key; falls back to the slug. */
|
|
121
|
+
readonly name?: string | null;
|
|
122
|
+
readonly order?: number | null;
|
|
123
|
+
/** Part of the listing's title line. */
|
|
124
|
+
readonly title?: boolean | null;
|
|
125
|
+
/** Rendered as a badge on the card. */
|
|
126
|
+
readonly badge?: boolean | null;
|
|
127
|
+
readonly translate?: string | null;
|
|
128
|
+
/** The type's own config keys (`prefix`, `precision`, `unitType`, …). */
|
|
129
|
+
readonly [key: string]: unknown;
|
|
130
|
+
}
|
|
131
|
+
/** The `(definition, value)` pair `@stapel/attributes-react` formats. */
|
|
132
|
+
export interface ListingFeatureView {
|
|
133
|
+
readonly feature: FeatureDef;
|
|
134
|
+
readonly value: FeatureValueDto | undefined;
|
|
135
|
+
}
|
|
136
|
+
/** Re-exported so a consumer types a feature config without also depending on
|
|
137
|
+
* `@stapel/attributes-react` directly. */
|
|
138
|
+
export type { FeatureConfig, FeatureDef, FeatureValueDto };
|
|
139
|
+
/** Query parameters of both keyset-paginated card lists. */
|
|
140
|
+
export interface ListingPageParams {
|
|
141
|
+
/** Opaque cursor from a previous answer. */
|
|
142
|
+
readonly anchor?: string;
|
|
143
|
+
readonly direction?: "next" | "prev" | "center";
|
|
144
|
+
readonly limit?: number;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The currency a composer starts a new listing in.
|
|
148
|
+
*
|
|
149
|
+
* RUB by owner verdict F6 (`tasks/darom-storefront-design.md`, the owner's
|
|
150
|
+
* fork verdicts of 2026-08-22), and a default rather than a constant: `currency` is
|
|
151
|
+
* a free `maxLength: 8` string on the wire (stapel-listings has no currency
|
|
152
|
+
* enum — the vocabulary lives in stapel-currencies), so a deployment that
|
|
153
|
+
* sells in something else passes its own through `createListingsRuntime`.
|
|
154
|
+
*/
|
|
155
|
+
export declare const DEFAULT_LISTING_CURRENCY = "RUB";
|
|
156
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The nine lifecycle states, as `models.ListingStatus` declares them.
|
|
3
|
+
*
|
|
4
|
+
* A runtime array and not only a type, because the dashboard's own table of
|
|
5
|
+
* expected captions is asserted over it — a status added upstream turns
|
|
6
|
+
* `test/status.test.ts` red instead of rendering as a bare enum value.
|
|
7
|
+
*/
|
|
8
|
+
export const LISTING_STATUSES = [
|
|
9
|
+
"draft",
|
|
10
|
+
"pending",
|
|
11
|
+
"published",
|
|
12
|
+
"paused",
|
|
13
|
+
"expired",
|
|
14
|
+
"sold",
|
|
15
|
+
"rejected",
|
|
16
|
+
"blocked",
|
|
17
|
+
"archived",
|
|
18
|
+
];
|
|
19
|
+
/** The four content-moderation states, as `models.ModerationStatus` declares
|
|
20
|
+
* them. Independent of the lifecycle: see `model/status.ts`. */
|
|
21
|
+
export const MODERATION_STATUSES = [
|
|
22
|
+
"pending",
|
|
23
|
+
"approved",
|
|
24
|
+
"rejected",
|
|
25
|
+
"needs_review",
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* The currency a composer starts a new listing in.
|
|
29
|
+
*
|
|
30
|
+
* RUB by owner verdict F6 (`tasks/darom-storefront-design.md`, the owner's
|
|
31
|
+
* fork verdicts of 2026-08-22), and a default rather than a constant: `currency` is
|
|
32
|
+
* a free `maxLength: 8` string on the wire (stapel-listings has no currency
|
|
33
|
+
* enum — the vocabulary lives in stapel-currencies), so a deployment that
|
|
34
|
+
* sells in something else passes its own through `createListingsRuntime`.
|
|
35
|
+
*/
|
|
36
|
+
export const DEFAULT_LISTING_CURRENCY = "RUB";
|
|
37
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AA6EA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsC;IACjE,OAAO;IACP,SAAS;IACT,WAAW;IACX,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,UAAU;CACX,CAAC;AAMF;gEACgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAAuC;IACrE,SAAS;IACT,UAAU;IACV,UAAU;IACV,cAAc;CACf,CAAC;AA4EF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CSSProperties, ReactElement, ReactNode } from "react";
|
|
2
|
+
import type { FlowErrorDisplay } from "@stapel/core";
|
|
3
|
+
export declare function ErrorAlert(props: {
|
|
4
|
+
error: FlowErrorDisplay | undefined;
|
|
5
|
+
style?: CSSProperties | undefined;
|
|
6
|
+
testId?: string | undefined;
|
|
7
|
+
action?: ReactNode;
|
|
8
|
+
}): ReactElement | null;
|
|
9
|
+
//# sourceMappingURL=ErrorAlert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorAlert.d.ts","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,GAAG,YAAY,GAAG,IAAI,CAsBtB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The one error surface this pair's default skin renders, so the split copy
|
|
4
|
+
* core produces reaches a screen the same way everywhere (mirrors the
|
|
5
|
+
* docs/notifications/workspaces etalon).
|
|
6
|
+
*
|
|
7
|
+
* Core's `describeFlowError` splits a failure into the sentence a person
|
|
8
|
+
* reads and the technical detail a support agent quotes (owner report
|
|
9
|
+
* 2026-08-09: the status used to be spliced into the sentence, ending in a
|
|
10
|
+
* bare `" (500)"`). The split only helps if a skin renders both halves at
|
|
11
|
+
* their own weights: `message` at normal weight, `detail` muted and small.
|
|
12
|
+
*
|
|
13
|
+
* `undefined` in — including a `detail` core left `undefined` because there
|
|
14
|
+
* was nothing worth quoting — renders nothing rather than an empty line.
|
|
15
|
+
*/
|
|
16
|
+
import { Alert, Typography } from "antd";
|
|
17
|
+
export function ErrorAlert(props) {
|
|
18
|
+
const { error } = props;
|
|
19
|
+
if (!error)
|
|
20
|
+
return null;
|
|
21
|
+
return (_jsx(Alert, { type: "error", showIcon: true, ...(props.style ? { style: props.style } : {}), ...(props.testId ? { "data-testid": props.testId } : {}), ...(props.action ? { action: props.action } : {}), message: error.message, ...(error.detail
|
|
22
|
+
? {
|
|
23
|
+
description: (_jsx(Typography.Text, { type: "secondary", style: { fontSize: 12 }, children: error.detail })),
|
|
24
|
+
}
|
|
25
|
+
: {}) }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ErrorAlert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorAlert.js","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIzC,MAAM,UAAU,UAAU,CAAC,KAK1B;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAC,OAAO,EACZ,QAAQ,WACJ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC3C,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACrD,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,OAAO,EAAE,KAAK,CAAC,OAAO,KAClB,CAAC,KAAK,CAAC,MAAM;YACf,CAAC,CAAC;gBACE,WAAW,EAAE,CACX,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YACtD,KAAK,CAAC,MAAM,GACG,CACnB;aACF;YACH,CAAC,CAAC,EAAE,CAAC,GACP,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<FavoritesPane>` — what the person saved.
|
|
3
|
+
*
|
|
4
|
+
* The simplest screen in the pair, and the one that shows the load-state
|
|
5
|
+
* discipline at its plainest: four arms, four different things on screen.
|
|
6
|
+
* "You have not saved anything yet" and "we could not load your favourites"
|
|
7
|
+
* are the pair a `data ?? []` would have merged, and merging them is exactly
|
|
8
|
+
* the substitution that cost the fleet an incident (spec §7.4).
|
|
9
|
+
*/
|
|
10
|
+
import type { ReactElement } from "react";
|
|
11
|
+
import type { ThemeModeProp } from "./types.js";
|
|
12
|
+
export interface FavoritesPaneProps extends ThemeModeProp {
|
|
13
|
+
/** Where a card leads. The container owns routing. */
|
|
14
|
+
readonly hrefFor?: (id: number) => string;
|
|
15
|
+
readonly onOpen?: (id: number) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function FavoritesPane(props: FavoritesPaneProps): ReactElement;
|
|
18
|
+
//# sourceMappingURL=FavoritesPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FavoritesPane.d.ts","sourceRoot":"","sources":["../../src/default/FavoritesPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAiGrE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Alert, Button, Empty, Flex, Space, Spin, Typography } from "antd";
|
|
3
|
+
import { matchList, useDescribeFlowError, useT } from "@stapel/core";
|
|
4
|
+
import { useFavorites } from "../headless/Favorites.js";
|
|
5
|
+
import { LISTINGS_I18N_KEYS } from "../i18n/keys.js";
|
|
6
|
+
import { ErrorAlert } from "./ErrorAlert.js";
|
|
7
|
+
import { ListingCard } from "./ListingCard.js";
|
|
8
|
+
import { ListingsSkinTheme } from "./theme.js";
|
|
9
|
+
export function FavoritesPane(props) {
|
|
10
|
+
const t = useT();
|
|
11
|
+
const describe = useDescribeFlowError();
|
|
12
|
+
const bag = useFavorites();
|
|
13
|
+
return (_jsx(ListingsSkinTheme, { ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsxs(Flex, { vertical: true, gap: 16, "data-testid": "listings-favorites", children: [_jsx(Typography.Title, { level: 3, children: t(LISTINGS_I18N_KEYS.favoritesTitle) }), !bag.gate.available ? (_jsx(Alert, { type: "info", showIcon: true, "data-testid": "listings-favorites-blocked", message: t(bag.gate.block.code, bag.gate.block.params) })) : null, matchList(bag.rows, {
|
|
14
|
+
loading: () => (_jsx(Flex, { justify: "center", "data-testid": "listings-favorites-loading", children: _jsx(Spin, { "aria-label": t(LISTINGS_I18N_KEYS.favoritesLoading) }) })),
|
|
15
|
+
failed: () => (_jsx(ErrorAlert, { testId: "listings-favorites-error", error: describe({
|
|
16
|
+
code: LISTINGS_I18N_KEYS.favoritesLoadFailed,
|
|
17
|
+
params: {},
|
|
18
|
+
status: 0,
|
|
19
|
+
message: undefined,
|
|
20
|
+
language: undefined,
|
|
21
|
+
}), action: _jsx(Button, { size: "small", "data-analytics": "none", "data-analytics-reason": "retrying a read the person already asked for; not a business action", onClick: bag.refetch, children: t(LISTINGS_I18N_KEYS.mineRetry) }) })),
|
|
22
|
+
empty: () => (_jsx(Empty, { "data-testid": "listings-favorites-empty", description: t(LISTINGS_I18N_KEYS.favoritesEmpty) })),
|
|
23
|
+
ready: (rows) => (_jsx(Flex, { wrap: true, gap: 16, "data-testid": "listings-favorites-grid", children: rows.map((row) => (_jsx("div", { style: { width: 240 }, children: _jsx(ListingCard, { listing: row, ...(props.hrefFor !== undefined
|
|
24
|
+
? { href: props.hrefFor(row.id) }
|
|
25
|
+
: {}), ...(props.onOpen !== undefined ? { onOpen: props.onOpen } : {}) }) }, row.id))) })),
|
|
26
|
+
}), _jsxs(Space, { children: [_jsx(Button, { size: "small", disabled: !bag.prevPage.available, "data-testid": "listings-favorites-prev", "data-analytics": "none", "data-analytics-reason": "paging a list the person is already reading; not a business action", onClick: bag.goPrev, children: t(LISTINGS_I18N_KEYS.pagePrev) }), _jsx(Button, { size: "small", disabled: !bag.nextPage.available, "data-testid": "listings-favorites-next", "data-analytics": "none", "data-analytics-reason": "paging a list the person is already reading; not a business action", onClick: bag.goNext, children: t(LISTINGS_I18N_KEYS.pageNext) })] })] }) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=FavoritesPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FavoritesPane.js","sourceRoot":"","sources":["../../src/default/FavoritesPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<ListingCard>` — the one component of this pair that another pair renders.
|
|
3
|
+
*
|
|
4
|
+
* `@stapel/search-react` takes a `renderCard` slot and the container fills it
|
|
5
|
+
* with this (spec §3.7 / §6.2 item 1). The two pairs never import each other;
|
|
6
|
+
* the CONTAINER is the seam, which is why this component takes a plain card
|
|
7
|
+
* row and a plain `href`/`onOpen` rather than reaching for a router.
|
|
8
|
+
*
|
|
9
|
+
* ── What it renders without asking the server anything else ────────────────
|
|
10
|
+
*
|
|
11
|
+
* Badges. `features_badges` is a stored DAO projection, and a DAO carries the
|
|
12
|
+
* display config beside the value, so `formatFeatureValue` can render
|
|
13
|
+
* "1200 W" from the row alone — no category fetch, no second request per
|
|
14
|
+
* card. That property is the whole reason the projection exists, and it is
|
|
15
|
+
* what makes a grid of forty cards cost one query.
|
|
16
|
+
*
|
|
17
|
+
* ── The heart is never hidden ──────────────────────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* A visitor sees it, blocked, with the reason and the sign-in CTA the
|
|
20
|
+
* container attaches (`?next=`). Hiding it would teach nobody that
|
|
21
|
+
* favourites exist (private-space canon §6.3, spec §6.2 item 6).
|
|
22
|
+
*/
|
|
23
|
+
import type { ReactElement, ReactNode } from "react";
|
|
24
|
+
import type { ListingCard as ListingCardData } from "../api/types.js";
|
|
25
|
+
import type { ThemeModeProp } from "./types.js";
|
|
26
|
+
export interface ListingCardProps extends ThemeModeProp {
|
|
27
|
+
readonly listing: ListingCardData;
|
|
28
|
+
/** Where the card leads. The container owns routing, so this is a plain
|
|
29
|
+
* href a `<Link>` or an `<a>` can carry — the pair never calls
|
|
30
|
+
* `window.location`. */
|
|
31
|
+
readonly href?: string;
|
|
32
|
+
/** Called instead of following `href`, for a host with its own navigation. */
|
|
33
|
+
readonly onOpen?: (id: number) => void;
|
|
34
|
+
/** Extra chrome the container adds (a `promoted` tag from search, say —
|
|
35
|
+
* DSA Art. 26 marking belongs to the pair that receives it). */
|
|
36
|
+
readonly badge?: ReactNode;
|
|
37
|
+
/** Hide the favourite control entirely — for a context where it makes no
|
|
38
|
+
* sense (the owner's own dashboard). NOT a way to hide it from visitors. */
|
|
39
|
+
readonly showFavorite?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function ListingCard(props: ListingCardProps): ReactElement;
|
|
42
|
+
//# sourceMappingURL=ListingCard.d.ts.map
|