@propeller-commerce/propeller-v2-react-ui 0.25.0 → 0.26.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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,76 @@ once it reaches 1.0. Until then (the `0.x` line) the public API may change
8
8
  between minor versions; breaking changes are called out below and in
9
9
  [MIGRATION.md](./MIGRATION.md).
10
10
 
11
+ ## [0.26.1] - 2026-09-28
12
+
13
+ ### Fixed
14
+
15
+ - **A quoted-price product could still be added to the cart from a grid.**
16
+ 0.26.0 guarded the PRICE on `ProductCard` but not the ACTION beside it, so a
17
+ listing showed "Price on request" next to a working quantity stepper and
18
+ add-to-cart button — and the line went in at 0. The card now offers
19
+ "Request a price", linking to the product page that owns the quote flow;
20
+ `FavoriteListItem` suppresses add-to-cart for these products outright. The
21
+ check sits before the injected-component branch, so a host-supplied control
22
+ is gated too.
23
+
24
+ - **Popovers inherited the host header’s text colour.** The search input, the
25
+ autosuggest dropdown, the cart sidebar and the cart popover each set their own
26
+ background but not their own text colour, so a shop with a dark header — which
27
+ has to colour that bar to style the triggers inside it — got white text on
28
+ their light surfaces. They are DOM children of those triggers, so the colour
29
+ cascaded straight in. Each now sets `text-foreground` explicitly, as
30
+ `AccountIconAndMenu` already did.
31
+
32
+ ### Changed
33
+
34
+ - `RequestPriceButton` uses a price-tag icon rather than a quote bubble, which
35
+ read as a comment action.
36
+
37
+ ## [0.26.0] - 2026-09-28
38
+
39
+ ### Added
40
+
41
+ - **Price-on-request is now a first-class state.** A product whose
42
+ `priceData.display` is `ON_REQUEST` carries no price the customer may be
43
+ quoted, but `price.gross`/`price.net` are still populated — almost always
44
+ with 0 — so every surface that rendered them unguarded showed a real-looking
45
+ "€ 0,00" beside a working add-to-cart button. `isPriceOnRequest()` (exported)
46
+ detects it, resolving a cluster through its default product, and
47
+ `ProductPrice`, `ProductCard`, `ClusterCard` and `SearchBar` render a
48
+ translatable `priceOnRequest` label instead of an amount.
49
+
50
+ - **`RequestPriceButton` + `usePriceRequest` + `PriceRequestList`** — the
51
+ quote funnel these products need. The button replaces add-to-cart on the PDP;
52
+ the list is a parallel basket in `localStorage`, backed by
53
+ `useSyncExternalStore` so the server snapshot is empty and hydration matches;
54
+ the component renders it as an editable SKU/quantity table with one comment
55
+ field. Deliberately NOT the cart: a quoted product cannot be paid for, and
56
+ mixing the two would put an unpriced line into a payable order.
57
+
58
+ There is no SDK mutation for this, so delivery is the host's, supplied as
59
+ `onSubmit`. Without it the list still works and `submit` reports the omission
60
+ rather than reporting a success that never left the browser.
61
+
62
+ - `ProductInfoProps.onRequestPrice` / `priceRequestAdded`, and
63
+ `QuickOrderMatch.priceOnRequest`.
64
+
65
+ ### Changed
66
+
67
+ - **`ProductPriceProps.price` is now optional.** It is unread when
68
+ `priceOnRequest` renders in its place, and a card for such a product may
69
+ carry no price object at all. Existing callers are unaffected.
70
+
71
+ - **The PDP gates add-to-cart on `orderable` before the display mode.** A
72
+ non-orderable product gets neither control, a quoted one gets the request
73
+ button, and an anonymous visitor gets the log-in action rather than a list they
74
+ cannot be quoted from.
75
+
76
+ - **Quick order excludes quoted products.** A bulk upload reports the code as
77
+ unresolved instead of adding a line priced at 0; picking one from the
78
+ typeahead clears the row with a notice. Bulk flows have nowhere to show a
79
+ price and would submit the line at 0.
80
+
11
81
  ## [0.25.0] - 2026-09-25
12
82
 
13
83
  ### Added