@cellarnode/ui 0.19.2 → 0.20.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.
@@ -1,9 +1,10 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo } from "react";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
3
  import { cn } from "../lib/utils";
4
4
  import { ShadcnButton as Button } from "../components/shadcn-button";
5
5
  import { AttachmentsCard } from "./attachments-card";
6
6
  import { BuyerNotesCard } from "./buyer-notes-card";
7
+ import { CounterSlideOver } from "./counter-slide-over";
7
8
  import { FactsCard } from "./facts-card";
8
9
  import { MatchCompatibilityCard } from "./match-compatibility-card";
9
10
  import { NegotiationSection } from "./negotiation-section";
@@ -22,7 +23,31 @@ const DEFAULT_ORDER = [
22
23
  "attachments",
23
24
  "negotiation",
24
25
  ];
25
- function producerCtas(status, viewerInitiator) {
26
+ /**
27
+ * Map the backend offer status enum onto the narrower FactsCardStatus
28
+ * surface the rail + facts strip render against. Unknown strings fall
29
+ * through to "proposed" so a partial payload still renders.
30
+ */
31
+ function mapOfferStatus(raw) {
32
+ switch (raw) {
33
+ case "counter_pending":
34
+ return "counter_pending";
35
+ case "accepted":
36
+ return "accepted";
37
+ case "declined":
38
+ case "rejected":
39
+ return "declined";
40
+ case "expired":
41
+ return "expired";
42
+ case "withdrawn":
43
+ return "withdrawn";
44
+ // Negotiation "working" states — draft / submitted / sent /
45
+ // in_negotiation / proposed — all render as "proposed" to the rail.
46
+ default:
47
+ return "proposed";
48
+ }
49
+ }
50
+ function deriveRailActions(status, viewerInitiator) {
26
51
  switch (status) {
27
52
  case "proposed":
28
53
  return viewerInitiator ? ["withdraw"] : ["counter", "accept", "decline"];
@@ -39,11 +64,6 @@ function producerCtas(status, viewerInitiator) {
39
64
  return [];
40
65
  }
41
66
  }
42
- // Blocker B9 — CTA aria-label composition. Screen-reader users should
43
- // hear the full context ("Accept offer for Barolo DOCG 2020 from Fattoria
44
- // San Marco") rather than a raw UUID ("Accept offer offer-1"). When the
45
- // beverage or producer name is missing (defensive — this should not
46
- // happen in practice), we fall back to the offer id segment.
47
67
  const ACTION_VERB = {
48
68
  counter: "Counter",
49
69
  accept: "Accept",
@@ -54,23 +74,12 @@ const ACTION_VERB = {
54
74
  };
55
75
  function ctaAriaLabel(action, beverageName, producerName, offerId) {
56
76
  const verb = ACTION_VERB[action];
57
- if (beverageName && producerName) {
77
+ if (beverageName && producerName)
58
78
  return `${verb} offer for ${beverageName} from ${producerName}`;
59
- }
60
79
  if (beverageName)
61
80
  return `${verb} offer for ${beverageName}`;
62
- // Defensive fallback — should never fire because OfferDocumentProps
63
- // requires `beverage.name` and `producer.name`, but keeps the aria-label
64
- // non-empty even if a consumer passes an empty string.
65
81
  return `${verb} offer ${offerId}`;
66
82
  }
67
- // Blocker B9 / spec §19 — Screen-reader announcement on offer state
68
- // transitions. The OfferDocument rail exposes a dedicated
69
- // `role="status"` live region separate from FactsCard's price-focused
70
- // live region. It emits a composed sentence like
71
- // "Offer accepted — no further counters possible"
72
- // whenever the `status` prop changes. This is the region that the
73
- // `StateTransitionAnnouncement` story asserts against.
74
83
  const STATE_TRANSITION_SENTENCE = {
75
84
  proposed: "Offer proposed — awaiting counterparty response",
76
85
  counter_pending: "Counter pending — awaiting review",
@@ -79,7 +88,149 @@ const STATE_TRANSITION_SENTENCE = {
79
88
  expired: "Offer expired — validity window closed",
80
89
  withdrawn: "Offer withdrawn by initiator",
81
90
  };
82
- export function OfferDocument({ offerId, status, round, perspective, viewerOrgId, producer, importer, opportunity, beverage, variant, terms, previousTerms, evaluation, attachments, events, presence, fx, tenderCurrency, sections, onAction, onOpenComposer, onOpenAttachment, className, }) {
91
+ function numberOrNull(v) {
92
+ if (v == null)
93
+ return null;
94
+ const n = typeof v === "string" ? Number(v) : v;
95
+ return Number.isFinite(n) ? n : null;
96
+ }
97
+ function deriveTerms(offer) {
98
+ const price = numberOrNull(offer.price) ?? 0;
99
+ const volume = numberOrNull(offer.availableVolume ?? offer.volume) ?? 0;
100
+ const validUntil = typeof offer.validThrough === "string"
101
+ ? offer.validThrough
102
+ : offer.validThrough instanceof Date
103
+ ? offer.validThrough.toISOString()
104
+ : undefined;
105
+ return {
106
+ price,
107
+ currency: offer.currency ?? "EUR",
108
+ volume,
109
+ paymentTerms: offer.paymentTerms ?? undefined,
110
+ incoterms: offer.deliveryTerms ?? undefined,
111
+ validUntil,
112
+ };
113
+ }
114
+ function derivePreviousTerms(offer) {
115
+ const prev = offer.previousRoundTerms;
116
+ if (!prev || typeof prev !== "object")
117
+ return undefined;
118
+ const price = numberOrNull(prev.price);
119
+ const volume = numberOrNull(prev.volume);
120
+ if (price == null && volume == null)
121
+ return undefined;
122
+ return {
123
+ price: price ?? 0,
124
+ currency: prev.currency ?? offer.currency ?? "EUR",
125
+ volume: volume ?? 0,
126
+ paymentTerms: prev.paymentTerms,
127
+ incoterms: prev.incoterms,
128
+ };
129
+ }
130
+ function deriveProducer(offer, parties) {
131
+ const snap = (offer.orgSnapshot ?? {});
132
+ const region = typeof snap.region === "string" ? snap.region : undefined;
133
+ const city = typeof snap.city === "string" ? snap.city : undefined;
134
+ const country = parties.producer.country ?? (typeof snap.country === "string" ? snap.country : undefined);
135
+ const location = [city, region, country].filter(Boolean).join(", ") || undefined;
136
+ return {
137
+ orgId: parties.producer.orgId,
138
+ name: parties.producer.name ?? (typeof snap.name === "string" ? snap.name : "Producer"),
139
+ location,
140
+ logoUrl: parties.producer.logoUrl ?? (typeof snap.logoUrl === "string" ? snap.logoUrl : undefined),
141
+ primaryContactName: typeof snap.primaryContactName === "string" ? snap.primaryContactName : undefined,
142
+ primaryContactEmail: typeof snap.primaryContactEmail === "string" ? snap.primaryContactEmail : undefined,
143
+ };
144
+ }
145
+ function deriveImporter(parties) {
146
+ if (!parties.importer) {
147
+ // A declarable placeholder — PartiesCard tolerates "TBD" / empty name and
148
+ // rendering stays stable for draft / unsent offers that have no recipient yet.
149
+ return { orgId: "", name: "Pending recipient", location: undefined };
150
+ }
151
+ return {
152
+ orgId: parties.importer.orgId,
153
+ name: parties.importer.name ?? "Importer",
154
+ location: parties.importer.country ?? undefined,
155
+ logoUrl: parties.importer.logoUrl ?? undefined,
156
+ };
157
+ }
158
+ function deriveOpportunity(offer) {
159
+ const snap = (offer.opportunitySnapshot ?? {});
160
+ const title = typeof snap.name === "string" ? snap.name : "Opportunity";
161
+ const deadlineIso = typeof snap.deadline === "string" ? snap.deadline : snap.deadline instanceof Date ? snap.deadline.toISOString() : null;
162
+ const closingDays = deadlineIso
163
+ ? Math.max(0, Math.ceil((new Date(deadlineIso).getTime() - Date.now()) / (1000 * 60 * 60 * 24)))
164
+ : 0;
165
+ const priceMax = numberOrNull(snap.priceMax);
166
+ const volumeLiters = numberOrNull(snap.volumeLiters);
167
+ const requirements = [];
168
+ if (typeof snap.description === "string" && snap.description.trim())
169
+ requirements.push(snap.description);
170
+ if (Array.isArray(snap.certificateRequirements)) {
171
+ for (const c of snap.certificateRequirements) {
172
+ if (typeof c === "string")
173
+ requirements.push(`Certification: ${c}`);
174
+ }
175
+ }
176
+ return {
177
+ id: offer.opportunityId ?? "",
178
+ title,
179
+ closingDays,
180
+ priceCeilingEuro: priceMax ?? undefined,
181
+ volumeOptions: volumeLiters != null ? [volumeLiters] : undefined,
182
+ requirements: requirements.length ? requirements : undefined,
183
+ };
184
+ }
185
+ function deriveProduct(offer) {
186
+ const snap = (offer.variantSnapshot ?? {});
187
+ const bevType = (snap.beverageType ?? {});
188
+ const beverage = {
189
+ id: typeof snap.beverageId === "string" ? snap.beverageId : "",
190
+ name: typeof snap.beverageName === "string" ? snap.beverageName : "Product",
191
+ producer: typeof snap.producer === "string" ? snap.producer : undefined,
192
+ countryOfOrigin: typeof snap.countryOfOrigin === "string" ? snap.countryOfOrigin : undefined,
193
+ beverageType: {
194
+ category: typeof bevType.category === "string" ? bevType.category : undefined,
195
+ subtype: typeof bevType.subtype === "string" ? bevType.subtype : undefined,
196
+ },
197
+ };
198
+ const variant = {
199
+ id: typeof snap.variantId === "string"
200
+ ? snap.variantId
201
+ : (offer.variantId ?? ""),
202
+ vintage: typeof snap.vintage === "number" ? snap.vintage : null,
203
+ packaging: typeof snap.packaging === "string" ? snap.packaging : undefined,
204
+ closure: typeof snap.closure === "string" ? snap.closure : undefined,
205
+ abv: numberOrNull(snap.abv),
206
+ residualSugar: numberOrNull(snap.residualSugar),
207
+ organic: Boolean(snap.organic),
208
+ fairtrade: Boolean(snap.fairtrade),
209
+ sustainable: Boolean(snap.sustainable),
210
+ imageUrl: typeof snap.imageUrl === "string" ? snap.imageUrl : null,
211
+ };
212
+ return { beverage, variant };
213
+ }
214
+ const NEUTRAL_EVALUATION = {
215
+ headline: "partial",
216
+ headlineSummary: "Match evaluation unavailable",
217
+ criteria: [],
218
+ freeTextFields: [],
219
+ hiddenReasons: [],
220
+ };
221
+ export function OfferDocument({ offer, matchEvaluation, counts, fx, presence, parties, timelineEvents, hasMoreTimeline: _hasMoreTimeline, onLoadOlderTimeline, perspective, viewerOrgId, tenderCurrency, onCounter, onAccept, onDecline, onWithdraw, onUploadAttachment, onReopen, onRenew, isReconnecting, sections, onOpenAttachment, className, }) {
222
+ const offerId = offer.offerId ?? offer.id ?? "";
223
+ const status = mapOfferStatus(offer.status);
224
+ const round = offer.currentRound ?? 1;
225
+ const terms = useMemo(() => deriveTerms(offer), [offer]);
226
+ const previousTerms = useMemo(() => derivePreviousTerms(offer), [offer]);
227
+ const producer = useMemo(() => deriveProducer(offer, parties), [offer, parties]);
228
+ const importer = useMemo(() => deriveImporter(parties), [parties]);
229
+ const opportunity = useMemo(() => deriveOpportunity(offer), [offer]);
230
+ const { beverage, variant } = useMemo(() => deriveProduct(offer), [offer]);
231
+ const evaluation = matchEvaluation ?? NEUTRAL_EVALUATION;
232
+ const attachments = offer.attachments ?? [];
233
+ const presenceList = presence ?? [];
83
234
  const orderedIds = useMemo(() => {
84
235
  const overrides = sections ?? {};
85
236
  const active = DEFAULT_ORDER.filter((id) => !overrides[id]?.hidden);
@@ -90,36 +241,105 @@ export function OfferDocument({ offerId, status, round, perspective, viewerOrgId
90
241
  });
91
242
  }, [sections]);
92
243
  const viewerInitiator = (status === "proposed" && viewerOrgId === producer.orgId) ||
93
- (status === "counter_pending" && events[events.length - 1]?.actorOrgId === viewerOrgId);
94
- const ctas = producerCtas(status, viewerInitiator);
95
- // Blocker B3 — viewerAdvantage is per-criterion and per-round. It must
96
- // come from the backend evaluator (Plan 2) where each `MatchCriterion`
97
- // carries its own `viewerAdvantage` scoped to the viewer. A flat
98
- // page-level constant is wrong per spec §11: "Delta polarity: Producer:
99
- // emerald · Importer: rose" describes a per-field rule, not a page-wide
100
- // tone. We do NOT compute one here. Downstream cards that need the top-
101
- // line viewer advantage (e.g. FactsCard price delta) derive it from the
102
- // `price` criterion's own `viewerAdvantage`, with "neutral" as a safe
103
- // fallback when the criterion is missing / FX-unavailable (§6.6).
244
+ (status === "counter_pending" && timelineEvents[timelineEvents.length - 1]?.actorOrgId === viewerOrgId);
245
+ const railActions = deriveRailActions(status, viewerInitiator);
104
246
  const priceCriterion = evaluation.criteria.find((c) => c.id === "price");
105
247
  const topLineAdvantage = priceCriterion?.viewerAdvantage ?? "neutral";
106
- // Stable document-generation timestamp: captured once per mount, not on every re-render.
107
248
  const printedAt = useMemo(() => new Date().toISOString(), []);
108
- return (_jsxs("div", { "data-offer-document": true, "data-offer-id": offerId, "data-printed-at": printedAt, className: cn("mx-auto w-full max-w-6xl space-y-4 p-4", className), children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("nav", { "data-offer-nav-chrome": true, "aria-label": "breadcrumb", className: "text-xs text-muted-foreground", children: [perspective === "producer" ? "Sprint board" : "Offers", " / Offer ", offerId.slice(0, 8)] }), _jsx(OfferExportButton, { offerId: offerId })] }), _jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: STATE_TRANSITION_SENTENCE[status] }), _jsx("div", { "data-offer-facts-card": true, children: _jsx(FactsCard, { status: status, round: round, terms: terms, previousPrice: previousTerms?.price,
109
- // Blocker B3 — derived from the `price` criterion's own
110
- // `viewerAdvantage`, not a flat page-level constant. This keeps
111
- // the price-delta chip polarity aligned with the backend's
112
- // viewer-scoped evaluation (spec §11: "Delta polarity" per-field).
113
- viewerAdvantage: topLineAdvantage, perspective: perspective, presence: presence, fx: fx, tenderCurrency: tenderCurrency, onExport: () => window.print() }) }), _jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[minmax(0,1fr)_220px]", children: [_jsx("main", { className: "space-y-4", children: orderedIds.map((id) => (_jsxs("div", { "data-offer-section": true, "data-section-id": id, children: [id === "parties" && (_jsx(PartiesCard, { producer: producer, importer: importer, viewerOrgId: viewerOrgId, variant: sections?.parties?.defaultOpen ? "expanded" : "collapsed" })), id === "opportunity" && (_jsx(OpportunityCard, { opportunity: opportunity, variant: sections?.opportunity?.defaultOpen ? "expanded" : "collapsed" })), id === "product" && (_jsx(OfferProductCard, { variant: variant, beverage: beverage, variantDisplay: sections?.product?.defaultOpen === false ? "collapsed" : "expanded" })), id === "terms" && (_jsx(TermsCard, { terms: terms, previousTerms: previousTerms, variant: sections?.terms?.defaultOpen ? "expanded" : "collapsed",
114
- // Blocker B3 — TermsCard now derives per-row polarity
115
- // from `perspective` + each cell's delta direction rather
116
- // than a single flat `viewerAdvantage` constant. Price up
117
- // is emerald for a producer, rose for an importer, etc.
118
- perspective: perspective })), id === "match" && (_jsx(MatchCompatibilityCard, { evaluation: evaluation,
119
- // Blocker B3 — each criterion row derives its own colour
120
- // from its own `viewerAdvantage` field. Passing
121
- // `perspective` is informational (e.g. for accessible
122
- // labels like "Producer: price improved").
123
- perspective: perspective })), id === "notes" && _jsx(BuyerNotesCard, { notes: evaluation.freeTextFields }), id === "attachments" && (_jsx(AttachmentsCard, { attachments: attachments, onOpen: (a) => onOpenAttachment?.(a) })), id === "negotiation" && (_jsx(NegotiationSection, { events: events, viewerOrgId: viewerOrgId, viewerRole: perspective, onOpenComposer: onOpenComposer }))] }, id))) }), _jsx("aside", { "data-offer-rail": true, "aria-label": "Actions and meta", className: "hidden lg:block", children: _jsxs("div", { className: "sticky top-24 space-y-3", children: [_jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3", children: [_jsx("div", { className: "text-xs uppercase tracking-wide text-muted-foreground", children: "Actions" }), _jsxs("div", { className: "mt-2 flex flex-wrap gap-2", children: [ctas.length === 0 && (_jsx("span", { className: "text-xs text-muted-foreground", children: "No actions available." })), ctas.map((a) => (_jsx(Button, { size: "sm", "aria-label": ctaAriaLabel(a, beverage.name, producer.name, offerId), onClick: () => onAction(a), children: a }, a)))] })] }), _jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3 text-xs", children: [_jsx("div", { className: "uppercase tracking-wide text-muted-foreground", children: "Status" }), _jsx("div", { className: "mt-1 font-medium capitalize", children: status.replace("_", " ") }), _jsxs("div", { className: "mt-1 text-muted-foreground", children: ["R", round, " of 4 max"] })] }), _jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3 text-xs", children: [_jsx("div", { className: "uppercase tracking-wide text-muted-foreground", children: "Offer" }), _jsx("div", { className: "mt-1 font-mono", children: offerId }), _jsxs("div", { className: "mt-1 text-muted-foreground", children: [events.length, " events \u00B7 ", attachments.length, " files"] })] }), _jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3", children: [_jsx("div", { className: "text-xs uppercase tracking-wide text-muted-foreground", children: "Export" }), _jsx("div", { className: "mt-2", children: _jsx(OfferExportButton, { offerId: offerId }) })] })] }) })] })] }));
249
+ /* ── Composer (CounterSlideOver) — owned internally ── */
250
+ const [composerOpen, setComposerOpen] = useState(false);
251
+ /**
252
+ * Mid-compose race banner: when the counterparty lands a new round while
253
+ * the composer is open, we surface a diff banner inside the composer and
254
+ * let the user re-pre-fill from the new round. The banner is driven by a
255
+ * latched `bannerRound` — if the prop `round` changes while the composer
256
+ * is open AND differs from the round we opened at, the banner fires.
257
+ */
258
+ const openedAtRound = useRef(null);
259
+ const [composerBanner, setComposerBanner] = useState(undefined);
260
+ useEffect(() => {
261
+ if (!composerOpen)
262
+ return;
263
+ if (openedAtRound.current == null) {
264
+ openedAtRound.current = round;
265
+ return;
266
+ }
267
+ if (round !== openedAtRound.current) {
268
+ setComposerBanner({
269
+ kind: "incoming_counter",
270
+ roundN: round,
271
+ headline: "The counterparty sent a new counter while you were composing.",
272
+ onDismiss: () => setComposerBanner(undefined),
273
+ onReset: () => setComposerBanner(undefined),
274
+ });
275
+ }
276
+ }, [composerOpen, round]);
277
+ useEffect(() => {
278
+ if (!composerOpen) {
279
+ openedAtRound.current = null;
280
+ setComposerBanner(undefined);
281
+ }
282
+ }, [composerOpen]);
283
+ const handleRailClick = async (a) => {
284
+ try {
285
+ switch (a) {
286
+ case "counter":
287
+ setComposerOpen(true);
288
+ return;
289
+ case "accept":
290
+ await onAccept();
291
+ return;
292
+ case "decline":
293
+ await onDecline();
294
+ return;
295
+ case "withdraw":
296
+ await onWithdraw();
297
+ return;
298
+ case "reopen":
299
+ await onReopen?.();
300
+ return;
301
+ case "renew":
302
+ await onRenew?.();
303
+ return;
304
+ }
305
+ }
306
+ catch {
307
+ /* Dashboard owns toast / retry — we stay silent here. */
308
+ }
309
+ };
310
+ const attachmentInputRef = useRef(null);
311
+ const handleAttachmentUpload = () => {
312
+ attachmentInputRef.current?.click();
313
+ };
314
+ const handleAttachmentFileChange = async (event) => {
315
+ const file = event.target.files?.[0];
316
+ event.target.value = ""; // reset so the same file can be re-selected
317
+ if (!file || !onUploadAttachment)
318
+ return;
319
+ try {
320
+ await onUploadAttachment(file);
321
+ }
322
+ catch {
323
+ /* Dashboard owns toast. */
324
+ }
325
+ };
326
+ return (_jsxs("div", { "data-offer-document": true, "data-offer-id": offerId, "data-printed-at": printedAt, className: cn("mx-auto w-full max-w-6xl space-y-4 p-4", className), children: [isReconnecting && (_jsx("div", { role: "status", "aria-live": "polite", className: "rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-900 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-50", children: "Reconnecting\u2026" })), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("nav", { "data-offer-nav-chrome": true, "aria-label": "breadcrumb", className: "text-xs text-muted-foreground", children: [perspective === "producer" ? "Sprint board" : "Offers", " / Offer ", offerId.slice(0, 8)] }), _jsx(OfferExportButton, { offerId: offerId })] }), _jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: STATE_TRANSITION_SENTENCE[status] }), _jsx("div", { "data-offer-facts-card": true, children: _jsx(FactsCard, { status: status, round: round, terms: terms, previousPrice: previousTerms?.price, viewerAdvantage: topLineAdvantage, perspective: perspective, presence: presenceList, fx: fx ?? undefined, tenderCurrency: tenderCurrency, onExport: () => window.print() }) }), _jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-[minmax(0,1fr)_220px]", children: [_jsx("main", { className: "space-y-4", children: orderedIds.map((id) => (_jsxs("div", { "data-offer-section": true, "data-section-id": id, children: [id === "parties" && (_jsx(PartiesCard, { producer: producer, importer: importer, viewerOrgId: viewerOrgId, variant: sections?.parties?.defaultOpen ? "expanded" : "collapsed" })), id === "opportunity" && (_jsx(OpportunityCard, { opportunity: opportunity, variant: sections?.opportunity?.defaultOpen ? "expanded" : "collapsed" })), id === "product" && (_jsx(OfferProductCard, { variant: variant, beverage: beverage, variantDisplay: sections?.product?.defaultOpen === false ? "collapsed" : "expanded" })), id === "terms" && (_jsx(TermsCard, { terms: terms, previousTerms: previousTerms, variant: sections?.terms?.defaultOpen ? "expanded" : "collapsed", perspective: perspective })), id === "match" && _jsx(MatchCompatibilityCard, { evaluation: evaluation, perspective: perspective }), id === "notes" && _jsx(BuyerNotesCard, { notes: evaluation.freeTextFields }), id === "attachments" && (_jsx(AttachmentsCard, { attachments: attachments, onOpen: (a) => onOpenAttachment?.(a), onUpload: onUploadAttachment ? handleAttachmentUpload : undefined })), id === "negotiation" && (_jsx(NegotiationSection, { events: timelineEvents, viewerOrgId: viewerOrgId, viewerRole: perspective, onOpenComposer: () => setComposerOpen(true), onLoadOlder: onLoadOlderTimeline }))] }, id))) }), _jsx("aside", { "data-offer-rail": true, "aria-label": "Actions and meta", className: "hidden lg:block", children: _jsxs("div", { className: "sticky top-24 space-y-3", children: [_jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3", children: [_jsx("div", { className: "text-xs uppercase tracking-wide text-muted-foreground", children: "Actions" }), _jsxs("div", { className: "mt-2 flex flex-wrap gap-2", children: [railActions.length === 0 && _jsx("span", { className: "text-xs text-muted-foreground", children: "No actions available." }), railActions.map((a) => (_jsx(Button, { size: "sm", "aria-label": ctaAriaLabel(a, beverage.name, producer.name, offerId), onClick: () => void handleRailClick(a), children: ACTION_VERB[a] }, a)))] })] }), _jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3 text-xs", children: [_jsx("div", { className: "uppercase tracking-wide text-muted-foreground", children: "Status" }), _jsx("div", { className: "mt-1 font-medium capitalize", children: status.replace("_", " ") }), _jsxs("div", { className: "mt-1 text-muted-foreground", children: ["R", round, " of 4 max"] })] }), _jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3 text-xs", children: [_jsx("div", { className: "uppercase tracking-wide text-muted-foreground", children: "Offer" }), _jsx("div", { className: "mt-1 font-mono", children: offerId }), _jsxs("div", { className: "mt-1 text-muted-foreground", children: [(counts?.messages ?? timelineEvents.length), " events \u00B7 ", counts?.attachments ?? attachments.length, " files"] })] }), _jsxs("div", { className: "rounded-xl border border-border/60 bg-card p-3", children: [_jsx("div", { className: "text-xs uppercase tracking-wide text-muted-foreground", children: "Export" }), _jsx("div", { className: "mt-2", children: _jsx(OfferExportButton, { offerId: offerId }) })] })] }) })] }), _jsx("input", { ref: attachmentInputRef, type: "file", className: "sr-only", "aria-hidden": true, onChange: handleAttachmentFileChange }), _jsx(CounterSlideOver, { open: composerOpen, onClose: () => setComposerOpen(false), offerId: offerId, round: round, allowedIncoterms: ["EXW", "FCA", "CIF", "CIP", "DAP", "DDP"], baselineTerms: previousTerms ?? terms, initialMatchEvaluation: evaluation, onSubmit: async (draft) => {
327
+ const body = {
328
+ clientEventId: typeof crypto !== "undefined" && typeof crypto.randomUUID === "function"
329
+ ? crypto.randomUUID()
330
+ : `${Date.now()}-${Math.random().toString(16).slice(2)}`,
331
+ expectedRound: round,
332
+ price: draft.price ?? null,
333
+ volume: draft.volume ?? null,
334
+ incoterms: draft.incoterms ?? null,
335
+ payment: draft.paymentTerms ?? null,
336
+ delivery: draft.deliveryDate ?? null,
337
+ validUntil: draft.validUntil ?? null,
338
+ message: draft.message ?? null,
339
+ attachmentIds: draft.attachmentIds,
340
+ };
341
+ await onCounter(body);
342
+ setComposerOpen(false);
343
+ }, onEvaluateDraft: () => evaluation, banner: composerBanner })] }));
124
344
  }
125
345
  //# sourceMappingURL=offer-document.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offer-document.js","sourceRoot":"","sources":["../../src/offer/offer-document.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offer-document.js","sourceRoot":"","sources":["../../src/offer/offer-document.tsx"],"names":[],"mappings":"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"}
@@ -18,8 +18,19 @@ export declare const Accepted: Story;
18
18
  export declare const Declined: Story;
19
19
  export declare const Expired: Story;
20
20
  export declare const Withdrawn: Story;
21
+ export declare const Reconnecting: Story;
21
22
  export declare const SectionHidden: Story;
22
23
  export declare const SectionReordered: Story;
24
+ /**
25
+ * Spec §19 — "Screen-reader announcement on offer state transitions". The
26
+ * rail should expose a <div role="status" aria-live="polite"> that emits
27
+ * composed strings like "Offer accepted — no further counters possible"
28
+ * when the status prop changes.
29
+ */
23
30
  export declare const StateTransitionAnnouncement: Story;
31
+ /**
32
+ * Responsive coverage per spec §5.5 — OfferDocument collapses its right
33
+ * rail below the `lg:` breakpoint.
34
+ */
24
35
  export declare const ResponsiveMobile: Story;
25
36
  //# sourceMappingURL=offer-document.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"offer-document.stories.d.ts","sourceRoot":"","sources":["../../src/offer/offer-document.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,QAAA,MAAM,IAAI;;;;;;;CAK4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA8EnC,eAAO,MAAM,gBAAgB,EAAE,KAA0B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,EAAE,KAA2F,CAAC;AAC3H,eAAO,MAAM,sBAAsB,EAAE,KAA+E,CAAC;AACrH,eAAO,MAAM,sBAAsB,EAAE,KAAyI,CAAC;AAC/K,eAAO,MAAM,QAAQ,EAAE,KAA8D,CAAC;AACtF,eAAO,MAAM,QAAQ,EAAE,KAA8D,CAAC;AACtF,eAAO,MAAM,OAAO,EAAE,KAA6D,CAAC;AACpF,eAAO,MAAM,SAAS,EAAE,KAA+D,CAAC;AACxF,eAAO,MAAM,aAAa,EAAE,KAkB3B,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,KA8B9B,CAAC;AAuBF,eAAO,MAAM,2BAA2B,EAAE,KAczC,CAAC;AAMF,eAAO,MAAM,gBAAgB,EAAE,KAG9B,CAAC"}
1
+ {"version":3,"file":"offer-document.stories.d.ts","sourceRoot":"","sources":["../../src/offer/offer-document.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,QAAA,MAAM,IAAI;;;;;;;CAK4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAyInC,eAAO,MAAM,gBAAgB,EAAE,KAA0B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AACF,eAAO,MAAM,sBAAsB,EAAE,KAAkD,CAAC;AACxF,eAAO,MAAM,sBAAsB,EAAE,KAEpC,CAAC;AACF,eAAO,MAAM,QAAQ,EAAE,KAAwC,CAAC;AAChE,eAAO,MAAM,QAAQ,EAAE,KAAwC,CAAC;AAChE,eAAO,MAAM,OAAO,EAAE,KAAuC,CAAC;AAC9D,eAAO,MAAM,SAAS,EAAE,KAAyC,CAAC;AAElE,eAAO,MAAM,YAAY,EAAE,KAAuD,CAAC;AAEnF,eAAO,MAAM,aAAa,EAAE,KAe3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAmB9B,CAAC;AAsBF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,KAczC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAG9B,CAAC"}