@cellarnode/ui 0.178.0 → 0.179.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/dist/brand/brand-field-provenance.js +3 -3
- package/dist/brand/brand-field-provenance.js.map +1 -1
- package/dist/brand/brand-generation-context-form.js +2 -2
- package/dist/brand/brand-generation-recovery.js +2 -2
- package/dist/brand/brand-generation-recovery.js.map +1 -1
- package/dist/brand/brand-image-asset-slot-card.js +1 -1
- package/dist/brand/brand-image-chooser.js +1 -1
- package/dist/brand/brand-image-source-picker.js +1 -1
- package/dist/brand/brand-profile-form-lists.js +2 -2
- package/dist/brand/brand-profile-form-people.js +2 -2
- package/dist/brand/brand-profile-review-media.js +1 -1
- package/dist/brand/brand-profile-workspace-parts.js +1 -1
- package/dist/brand/brand-profile-workspace.js +1 -1
- package/dist/brand/brand-provenance-summary.js +1 -1
- package/dist/brand/brand-summary-card.js +1 -1
- package/dist/brand/brand-summary-card.js.map +1 -1
- package/dist/chat/chat-composer.d.ts +3 -1
- package/dist/chat/chat-composer.d.ts.map +1 -1
- package/dist/chat/chat-composer.js +3 -3
- package/dist/chat/chat-composer.js.map +1 -1
- package/dist/chat/chat-surface.d.ts +23 -2
- package/dist/chat/chat-surface.d.ts.map +1 -1
- package/dist/chat/chat-surface.js +77 -41
- package/dist/chat/chat-surface.js.map +1 -1
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/index.js +1 -0
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/messenger-layout.js +2 -2
- package/dist/chat/messenger-layout.js.map +1 -1
- package/dist/chat/messenger-screen/room-panel.d.ts +24 -0
- package/dist/chat/messenger-screen/room-panel.d.ts.map +1 -1
- package/dist/chat/messenger-screen/room-panel.js +56 -13
- package/dist/chat/messenger-screen/room-panel.js.map +1 -1
- package/dist/chat/messenger-screen/types.d.ts +2 -0
- package/dist/chat/messenger-screen/types.d.ts.map +1 -1
- package/dist/chat/use-stick-to-bottom.d.ts +45 -0
- package/dist/chat/use-stick-to-bottom.d.ts.map +1 -0
- package/dist/chat/use-stick-to-bottom.js +191 -0
- package/dist/chat/use-stick-to-bottom.js.map +1 -0
- package/dist/chat-ably/use-presence.d.ts +13 -0
- package/dist/chat-ably/use-presence.d.ts.map +1 -1
- package/dist/chat-ably/use-presence.js +35 -0
- package/dist/chat-ably/use-presence.js.map +1 -1
- package/dist/components/access-model-select.d.ts.map +1 -1
- package/dist/components/access-model-select.js +2 -1
- package/dist/components/access-model-select.js.map +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/animated-select.js +1 -1
- package/dist/components/animated-select.js.map +1 -1
- package/dist/components/animated-shadcn-select.js +1 -1
- package/dist/components/animated-shadcn-select.js.map +1 -1
- package/dist/components/avatar-stack.js +3 -3
- package/dist/components/avatar-stack.js.map +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/bottle-extract-dialog.js +2 -2
- package/dist/components/bottle-extract-dialog.js.map +1 -1
- package/dist/components/bottle-extraction-inline-progress.js +1 -1
- package/dist/components/bottle-extraction-inline-progress.js.map +1 -1
- package/dist/components/card-actions-trigger.js +1 -1
- package/dist/components/card-actions-trigger.js.map +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/closure-select.d.ts.map +1 -1
- package/dist/components/closure-select.js +2 -1
- package/dist/components/closure-select.js.map +1 -1
- package/dist/components/colour-picker-field.js +1 -1
- package/dist/components/colour-picker-field.js.map +1 -1
- package/dist/components/composition-editor.js +1 -1
- package/dist/components/composition-editor.js.map +1 -1
- package/dist/components/confirmation/beverage-comparison-modal.js +1 -1
- package/dist/components/confirmation/beverage-comparison-modal.js.map +1 -1
- package/dist/components/confirmation/confirmation-card.js +2 -2
- package/dist/components/confirmation/confirmation-card.js.map +1 -1
- package/dist/components/confirmation/cross-portfolio-nudge-sheet.js +5 -5
- package/dist/components/confirmation/cross-portfolio-nudge-sheet.js.map +1 -1
- package/dist/components/corner-style-picker.js +1 -1
- package/dist/components/corner-style-picker.js.map +1 -1
- package/dist/components/country-code-multi-select.d.ts.map +1 -1
- package/dist/components/country-code-multi-select.js +2 -1
- package/dist/components/country-code-multi-select.js.map +1 -1
- package/dist/components/country-code-select.d.ts.map +1 -1
- package/dist/components/country-code-select.js +4 -2
- package/dist/components/country-code-select.js.map +1 -1
- package/dist/components/currency-select.d.ts.map +1 -1
- package/dist/components/currency-select.js +2 -1
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/delivery-terms-select.d.ts.map +1 -1
- package/dist/components/delivery-terms-select.js +2 -1
- package/dist/components/delivery-terms-select.js.map +1 -1
- package/dist/components/enterprise-type-select.d.ts.map +1 -1
- package/dist/components/enterprise-type-select.js +2 -1
- package/dist/components/enterprise-type-select.js.map +1 -1
- package/dist/components/inset-drawer.js +1 -1
- package/dist/components/inset-drawer.js.map +1 -1
- package/dist/components/link.d.ts +1 -1
- package/dist/components/link.d.ts.map +1 -1
- package/dist/components/link.js +3 -2
- package/dist/components/link.js.map +1 -1
- package/dist/components/offer-card.js +1 -1
- package/dist/components/offer-card.js.map +1 -1
- package/dist/components/packaging-select.d.ts.map +1 -1
- package/dist/components/packaging-select.js +2 -1
- package/dist/components/packaging-select.js.map +1 -1
- package/dist/components/picker-empty-guidance.js +1 -1
- package/dist/components/picker-empty-guidance.js.map +1 -1
- package/dist/components/preflight-verdict-sheet.js +2 -2
- package/dist/components/preflight-verdict-sheet.js.map +1 -1
- package/dist/components/price-range-picker.js +1 -1
- package/dist/components/price-range-picker.js.map +1 -1
- package/dist/components/procurement-channel-select.d.ts.map +1 -1
- package/dist/components/procurement-channel-select.js +2 -1
- package/dist/components/procurement-channel-select.js.map +1 -1
- package/dist/components/product-card.js +1 -1
- package/dist/components/product-card.js.map +1 -1
- package/dist/components/product-picker-drawer.js +4 -4
- package/dist/components/product-picker-drawer.js.map +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/radio.js.map +1 -1
- package/dist/components/region-select.d.ts.map +1 -1
- package/dist/components/region-select.js +2 -1
- package/dist/components/region-select.js.map +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/shadcn-badge.js +2 -2
- package/dist/components/shadcn-badge.js.map +1 -1
- package/dist/components/shadcn-button.d.ts.map +1 -1
- package/dist/components/shadcn-button.js +2 -2
- package/dist/components/shadcn-button.js.map +1 -1
- package/dist/components/shadcn-input.js +1 -1
- package/dist/components/shadcn-input.js.map +1 -1
- package/dist/components/shadcn-select.js +1 -1
- package/dist/components/shadcn-select.js.map +1 -1
- package/dist/components/shadcn-textarea.js +1 -1
- package/dist/components/shadcn-textarea.js.map +1 -1
- package/dist/components/source-composite.js +1 -1
- package/dist/components/source-composite.js.map +1 -1
- package/dist/components/source-drawer.js +1 -1
- package/dist/components/source-drawer.js.map +1 -1
- package/dist/components/supporting-pane-layout.d.ts +6 -1
- package/dist/components/supporting-pane-layout.d.ts.map +1 -1
- package/dist/components/supporting-pane-layout.js +65 -12
- package/dist/components/supporting-pane-layout.js.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/text.js.map +1 -1
- package/dist/components/toast.js +1 -1
- package/dist/components/toast.js.map +1 -1
- package/dist/components/variant-picker-dialog.js +6 -6
- package/dist/components/variant-picker-dialog.js.map +1 -1
- package/dist/components/variant-picker-hero.js +1 -1
- package/dist/components/variant-picker-hero.js.map +1 -1
- package/dist/components/year-picker.js +1 -1
- package/dist/components/year-picker.js.map +1 -1
- package/dist/fic-label/ingredient-input.js +1 -1
- package/dist/fic-label/ingredient-input.js.map +1 -1
- package/dist/globe/globe-view.js +1 -1
- package/dist/globe/globe-view.js.map +1 -1
- package/dist/image-upload/focal-point-picker.js +1 -1
- package/dist/image-upload/focal-point-picker.js.map +1 -1
- package/dist/insight-band/next-best-action-card.js +1 -1
- package/dist/insight-band/next-best-action-card.js.map +1 -1
- package/dist/marketing/pricing-table.js +1 -1
- package/dist/marketing/qr/qr-customizer-controls.js +1 -1
- package/dist/marketing/qr/qr-customizer-controls.js.map +1 -1
- package/dist/notifications/notification-tray.js +1 -1
- package/dist/notifications/notification-tray.js.map +1 -1
- package/dist/offer/attachments-card.js +1 -1
- package/dist/offer/attachments-card.js.map +1 -1
- package/dist/offer/index.d.ts +6 -1
- package/dist/offer/index.d.ts.map +1 -1
- package/dist/offer/index.js +2 -0
- package/dist/offer/index.js.map +1 -1
- package/dist/offer/negotiation-flow-timeline.js +1 -1
- package/dist/offer/negotiation-flow-timeline.js.map +1 -1
- package/dist/offer/offer-branch-fixtures.d.ts +16 -0
- package/dist/offer/offer-branch-fixtures.d.ts.map +1 -0
- package/dist/offer/offer-branch-fixtures.js +81 -0
- package/dist/offer/offer-branch-fixtures.js.map +1 -0
- package/dist/offer/offer-branch-list.d.ts +34 -0
- package/dist/offer/offer-branch-list.d.ts.map +1 -0
- package/dist/offer/offer-branch-list.js +43 -0
- package/dist/offer/offer-branch-list.js.map +1 -0
- package/dist/offer/offer-branch-shared.d.ts +55 -0
- package/dist/offer/offer-branch-shared.d.ts.map +1 -0
- package/dist/offer/offer-branch-shared.js +88 -0
- package/dist/offer/offer-branch-shared.js.map +1 -0
- package/dist/offer/offer-branch-switcher.d.ts +43 -0
- package/dist/offer/offer-branch-switcher.d.ts.map +1 -0
- package/dist/offer/offer-branch-switcher.js +48 -0
- package/dist/offer/offer-branch-switcher.js.map +1 -0
- package/dist/offer/offer-evaluation-sections.js +1 -1
- package/dist/offer/offer-page.d.ts +62 -2
- package/dist/offer/offer-page.d.ts.map +1 -1
- package/dist/offer/offer-page.js +122 -14
- package/dist/offer/offer-page.js.map +1 -1
- package/dist/offer/parties-card.d.ts.map +1 -1
- package/dist/offer/parties-card.js +1 -1
- package/dist/offer/parties-card.js.map +1 -1
- package/dist/offer/reviews-summary.js +1 -1
- package/dist/offer/reviews-summary.js.map +1 -1
- package/dist/offer/sticky-scroll-padding.d.ts +4 -0
- package/dist/offer/sticky-scroll-padding.d.ts.map +1 -0
- package/dist/offer/sticky-scroll-padding.js +54 -0
- package/dist/offer/sticky-scroll-padding.js.map +1 -0
- package/dist/offer/timeline-event.js +1 -1
- package/dist/offer/timeline-event.js.map +1 -1
- package/dist/opportunities/opportunity-detail-header.js +1 -1
- package/dist/opportunities/opportunity-detail-header.js.map +1 -1
- package/dist/opportunities/opportunity-detail-panel.js +1 -1
- package/dist/opportunities/opportunity-detail-panel.js.map +1 -1
- package/dist/opportunities/opportunity-filter-bar.js +1 -1
- package/dist/opportunities/opportunity-filter-bar.js.map +1 -1
- package/dist/opportunities/opportunity-stacked-card.js +2 -2
- package/dist/opportunities/opportunity-stacked-card.js.map +1 -1
- package/dist/opportunities/wizard/allowed-delivery-terms-section.js +1 -1
- package/dist/opportunities/wizard/allowed-delivery-terms-section.js.map +1 -1
- package/dist/opportunities/wizard/opportunity-wizard.js +2 -2
- package/dist/opportunities/wizard/opportunity-wizard.js.map +1 -1
- package/dist/opportunities/wizard/step-opportunities.js +8 -8
- package/dist/opportunities/wizard/step-pricing-timeline.js +4 -4
- package/dist/opportunities/wizard/step-review.js +1 -1
- package/dist/opportunities/wizard/step-tender-basics.js +2 -2
- package/dist/opportunities/wizard/wizard-stepper.js +1 -1
- package/dist/opportunities/wizard/wizard-task-frame.js +1 -1
- package/dist/org/billing-address-source.js +2 -2
- package/dist/org/public-location-notice.js +2 -2
- package/dist/pdf-tool/live/pdf-label-layer.js +1 -1
- package/dist/pdf-tool/live/pdf-label-layer.js.map +1 -1
- package/dist/portfolio/portfolio-folder-card.js +1 -1
- package/dist/portfolio/portfolio-folder-card.js.map +1 -1
- package/dist/portfolio-import/beverage-comparison-modal.js +5 -5
- package/dist/portfolio-import/beverage-comparison-modal.js.map +1 -1
- package/dist/portfolio-import/bottle-photos-status.js +1 -1
- package/dist/portfolio-import/bottle-photos-status.js.map +1 -1
- package/dist/portfolio-import/import-job-detail-view.js +1 -1
- package/dist/portfolio-import/import-job-detail-view.js.map +1 -1
- package/dist/portfolio-import/product-gallery.js +1 -1
- package/dist/portfolio-import/product-gallery.js.map +1 -1
- package/dist/product-editor/product-editor-surface.js +1 -1
- package/dist/product-editor/product-editor-surface.js.map +1 -1
- package/dist/product-editor/tabs/product-status-tab.js +1 -1
- package/dist/product-editor/tabs/product-status-tab.js.map +1 -1
- package/dist/product-editor/tabs/resources/awards-panel.js +2 -2
- package/dist/product-editor/tabs/resources/awards-panel.js.map +1 -1
- package/dist/profile/business-details.js +1 -1
- package/dist/profile/business-details.js.map +1 -1
- package/dist/profile/product-detail-drawer.js +2 -2
- package/dist/profile/product-detail-drawer.js.map +1 -1
- package/package.json +1 -1
- package/src/theme/tokens.css +7 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CheckCircle2, Circle, CircleAlert, Clock, MessagesSquare, Send } from "lucide-react";
|
|
3
|
+
import { toneClass } from "../lib/semantic-tones.js";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
/** Focus ring on the focused element itself (ui focus token). */
|
|
6
|
+
export const FOCUS_RING = "outline-hidden focus-visible:relative focus-visible:z-10 focus-visible:ring-3 focus-visible:ring-ring/70";
|
|
7
|
+
/** True for clicks that open a new tab/window and must not count as selection. */
|
|
8
|
+
export function isModifiedClick(event) {
|
|
9
|
+
return event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0;
|
|
10
|
+
}
|
|
11
|
+
const TONE_ICON = {
|
|
12
|
+
brand: Send,
|
|
13
|
+
warning: Clock,
|
|
14
|
+
negotiation: MessagesSquare,
|
|
15
|
+
success: CheckCircle2,
|
|
16
|
+
danger: CircleAlert,
|
|
17
|
+
neutral: Circle,
|
|
18
|
+
};
|
|
19
|
+
function activityTime(branch) {
|
|
20
|
+
const time = Date.parse(branch.lastActivityAt);
|
|
21
|
+
return Number.isNaN(time) ? 0 : time;
|
|
22
|
+
}
|
|
23
|
+
/** Sorted copy. "attention" puts rows with unread messages first. Ties keep input order. */
|
|
24
|
+
export function sortBranches(branches, sort) {
|
|
25
|
+
return branches
|
|
26
|
+
.map((branch, index) => ({ branch, index }))
|
|
27
|
+
.sort((a, b) => {
|
|
28
|
+
if (sort === "attention") {
|
|
29
|
+
const unread = Number(b.branch.unreadCount > 0) - Number(a.branch.unreadCount > 0);
|
|
30
|
+
if (unread !== 0)
|
|
31
|
+
return unread;
|
|
32
|
+
}
|
|
33
|
+
return activityTime(b.branch) - activityTime(a.branch) || a.index - b.index;
|
|
34
|
+
})
|
|
35
|
+
.map((entry) => entry.branch);
|
|
36
|
+
}
|
|
37
|
+
const UNITS = [
|
|
38
|
+
["year", 31_536_000],
|
|
39
|
+
["month", 2_592_000],
|
|
40
|
+
["week", 604_800],
|
|
41
|
+
["day", 86_400],
|
|
42
|
+
["hour", 3_600],
|
|
43
|
+
["minute", 60],
|
|
44
|
+
];
|
|
45
|
+
/** Build once per render. An unsupported or malformed locale falls back to the runtime default. */
|
|
46
|
+
export function makeFormatters(locale) {
|
|
47
|
+
const build = (create) => {
|
|
48
|
+
try {
|
|
49
|
+
return create(locale);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return create(undefined);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
return {
|
|
56
|
+
relative: build((l) => new Intl.RelativeTimeFormat(l, { numeric: "auto" })),
|
|
57
|
+
absolute: build((l) => new Intl.DateTimeFormat(l, { dateStyle: "medium", timeStyle: "short" })),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** "" for an unparseable timestamp. Future timestamps read "in 2 hours". */
|
|
61
|
+
export function formatRelative(iso, formatters, now) {
|
|
62
|
+
const time = Date.parse(iso);
|
|
63
|
+
if (Number.isNaN(time))
|
|
64
|
+
return "";
|
|
65
|
+
const seconds = Math.round((time - now.getTime()) / 1000);
|
|
66
|
+
for (const [unit, size] of UNITS) {
|
|
67
|
+
if (Math.abs(seconds) >= size)
|
|
68
|
+
return formatters.relative.format(Math.round(seconds / size), unit);
|
|
69
|
+
}
|
|
70
|
+
return formatters.relative.format(Math.round(seconds / 60) || 0, "minute");
|
|
71
|
+
}
|
|
72
|
+
export function formatAbsolute(iso, formatters) {
|
|
73
|
+
const time = Date.parse(iso);
|
|
74
|
+
return Number.isNaN(time) ? "" : formatters.absolute.format(time);
|
|
75
|
+
}
|
|
76
|
+
/** Status is always icon + text, never colour alone. Tone variables re-theme in dark mode. */
|
|
77
|
+
export function BranchStatus({ branch, className, }) {
|
|
78
|
+
const tone = branch.statusTone ?? "neutral";
|
|
79
|
+
const Icon = TONE_ICON[tone];
|
|
80
|
+
return (_jsxs("span", { className: cn("inline-flex w-fit max-w-full items-center gap-1 rounded-full bg-(--tone-soft) px-2 py-0.5 text-xs/4 font-medium text-(--tone-fg) ring-1 ring-(--tone-border) ring-inset", toneClass(tone), className), children: [_jsx(Icon, { "aria-hidden": true, className: "size-3 shrink-0" }), _jsx("span", { className: "truncate", children: branch.statusLabel })] }));
|
|
81
|
+
}
|
|
82
|
+
/** Visible count (capped at 99+) with the full announcement for assistive tech. */
|
|
83
|
+
export function UnreadBadge({ count, label }) {
|
|
84
|
+
if (count <= 0)
|
|
85
|
+
return null;
|
|
86
|
+
return (_jsxs("span", { className: "inline-flex min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-xs/5 font-medium text-primary-foreground tabular-nums", children: [_jsx("span", { "aria-hidden": true, children: count > 99 ? "99+" : count }), _jsx("span", { className: "sr-only", children: label })] }));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=offer-branch-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-branch-shared.js","sourceRoot":"","sources":["../../src/offer/offer-branch-shared.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type OfferBranchRenderLink, type OfferBranchSummary } from "./offer-branch-shared.js";
|
|
3
|
+
export interface OfferBranchSwitcherLabels {
|
|
4
|
+
allOffers: (count: number, product: string) => string;
|
|
5
|
+
previous: string;
|
|
6
|
+
next: string;
|
|
7
|
+
choose: string;
|
|
8
|
+
/** Kept for API stability; the current link is announced via aria-current only. */
|
|
9
|
+
current?: string;
|
|
10
|
+
unknownImporter: string;
|
|
11
|
+
unread: (n: number) => string;
|
|
12
|
+
}
|
|
13
|
+
export interface OfferBranchSwitcherProps {
|
|
14
|
+
/**
|
|
15
|
+
* Siblings in the backend's stable (creation) order. Previous/next and the
|
|
16
|
+
* dropdown use exactly this order. They deliberately do NOT follow the
|
|
17
|
+
* list's activity sort, so navigation does not shift under the user when
|
|
18
|
+
* new activity arrives.
|
|
19
|
+
*
|
|
20
|
+
* Consumer note (TanStack Router): `<Link>` sets `aria-current` itself on an
|
|
21
|
+
* active route, which would clash with the back link. Give the back link
|
|
22
|
+
* `activeOptions={{ exact: true }}` (or use flat routes) so it is never
|
|
23
|
+
* marked current on a child page.
|
|
24
|
+
*/
|
|
25
|
+
branches: readonly OfferBranchSummary[];
|
|
26
|
+
currentId: string;
|
|
27
|
+
productName: string;
|
|
28
|
+
/** Spread `linkProps` onto the consumer's router link to that branch. */
|
|
29
|
+
renderLink: OfferBranchRenderLink;
|
|
30
|
+
/** Called on a plain click of a sibling link (not on modifier or middle clicks). */
|
|
31
|
+
onSelect?: (id: string) => void;
|
|
32
|
+
/** Back link to the list. Spread `{ className, children }` onto the router link. */
|
|
33
|
+
renderBackLink?: (linkProps: {
|
|
34
|
+
children: ReactNode;
|
|
35
|
+
className: string;
|
|
36
|
+
}) => ReactNode;
|
|
37
|
+
labels: OfferBranchSwitcherLabels;
|
|
38
|
+
/** Narrower dropdown trigger for tight headers. Prev/next are always icon-only. */
|
|
39
|
+
compact?: boolean;
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function OfferBranchSwitcher({ branches, currentId, productName, renderLink, onSelect, renderBackLink, labels, compact, className, }: OfferBranchSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
//# sourceMappingURL=offer-branch-switcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-branch-switcher.d.ts","sourceRoot":"","sources":["../../src/offer/offer-branch-switcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG1E,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,UAAU,EAAE,qBAAqB,CAAC;IAClC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oFAAoF;IACpF,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,CAAC;IACtF,MAAM,EAAE,yBAAyB,CAAC;IAClC,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,EACR,cAAc,EACd,MAAM,EACN,OAAe,EACf,SAAS,GACV,EAAE,wBAAwB,2CAsJ1B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowLeft, Check, ChevronDown, ChevronLeft, ChevronRight } from "lucide-react";
|
|
3
|
+
import { useRef, useState } from "react";
|
|
4
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../components/popover.js";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
import { BranchStatus, FOCUS_RING, UnreadBadge, isModifiedClick, } from "./offer-branch-shared.js";
|
|
7
|
+
const NAV_BOX = "inline-flex size-11 shrink-0 items-center justify-center rounded-md border border-border bg-background text-foreground sm:size-9";
|
|
8
|
+
export function OfferBranchSwitcher({ branches, currentId, productName, renderLink, onSelect, renderBackLink, labels, compact = false, className, }) {
|
|
9
|
+
const [open, setOpen] = useState(false);
|
|
10
|
+
const contentRef = useRef(null);
|
|
11
|
+
const index = branches.findIndex((b) => b.id === currentId);
|
|
12
|
+
const current = index >= 0 ? branches[index] : undefined;
|
|
13
|
+
const previous = index > 0 ? branches[index - 1] : undefined;
|
|
14
|
+
const next = index >= 0 && index < branches.length - 1 ? branches[index + 1] : undefined;
|
|
15
|
+
const name = (b) => b.importerName ?? labels.unknownImporter;
|
|
16
|
+
const backText = labels.allOffers(branches.length, productName);
|
|
17
|
+
const select = (branch) => (event) => {
|
|
18
|
+
if (isModifiedClick(event))
|
|
19
|
+
return;
|
|
20
|
+
setOpen(false);
|
|
21
|
+
onSelect?.(branch.id);
|
|
22
|
+
};
|
|
23
|
+
const navButton = (target, label, icon) => target ? (renderLink(target, {
|
|
24
|
+
className: cn(NAV_BOX, "hover:bg-muted", FOCUS_RING),
|
|
25
|
+
onClick: select(target),
|
|
26
|
+
children: (_jsxs(_Fragment, { children: [icon, _jsx("span", { className: "sr-only", children: `${label}: ${name(target)}` })] })),
|
|
27
|
+
})) : (_jsxs("button", { type: "button", disabled: true, className: cn(NAV_BOX, "text-muted-foreground opacity-50"), children: [icon, _jsx("span", { className: "sr-only", children: label })] }));
|
|
28
|
+
const backContent = (_jsxs(_Fragment, { children: [_jsx(ArrowLeft, { "aria-hidden": true, className: "size-4 shrink-0 rtl:rotate-180" }), _jsx("span", { title: backText, className: "line-clamp-2 min-w-0 break-words", children: backText })] }));
|
|
29
|
+
return (_jsxs("nav", { "aria-label": backText, className: cn("flex max-w-full min-w-0 flex-wrap items-center gap-x-3 gap-y-2", className), children: [_jsx("span", { className: "min-w-0 text-sm/5", children: renderBackLink ? (renderBackLink({
|
|
30
|
+
className: cn("inline-flex min-h-11 items-center gap-1.5 rounded-md text-muted-foreground hover:text-foreground sm:min-h-0", FOCUS_RING),
|
|
31
|
+
children: backContent,
|
|
32
|
+
})) : (_jsx("span", { className: "inline-flex items-center gap-1.5 text-muted-foreground", children: backContent })) }), _jsxs("div", { className: "ms-auto flex min-w-0 items-center gap-1.5", children: [navButton(previous, labels.previous, _jsx(ChevronLeft, { "aria-hidden": true, className: "size-4 rtl:rotate-180" })), _jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsxs(PopoverTrigger, { "aria-label": current ? `${labels.choose}: ${name(current)}` : labels.choose, className: cn("inline-flex h-11 min-w-0 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm/6 text-foreground hover:bg-muted sm:h-9", compact ? "max-w-32 sm:max-w-40" : "max-w-48 sm:max-w-64", FOCUS_RING), children: [_jsx("span", { className: "truncate", children: current ? name(current) : labels.choose }), _jsx(ChevronDown, { "aria-hidden": true, className: "size-4 shrink-0" })] }), _jsx(PopoverContent, { ref: contentRef, align: "end", collisionPadding: 16, "aria-label": labels.choose, className: "w-[min(22rem,calc(100vw-2rem))] p-1", onOpenAutoFocus: (event) => {
|
|
33
|
+
event.preventDefault();
|
|
34
|
+
const target = contentRef.current?.querySelector('[aria-current="page"]') ??
|
|
35
|
+
contentRef.current?.querySelector("a, button");
|
|
36
|
+
target?.focus();
|
|
37
|
+
target?.scrollIntoView?.({ block: "nearest" });
|
|
38
|
+
}, children: _jsx("ul", { className: "max-h-80 overflow-y-auto", children: branches.map((branch) => {
|
|
39
|
+
const isCurrent = branch.id === currentId;
|
|
40
|
+
return (_jsx("li", { className: "rounded-sm", children: renderLink(branch, {
|
|
41
|
+
"aria-current": isCurrent ? "page" : undefined,
|
|
42
|
+
onClick: select(branch),
|
|
43
|
+
className: cn("flex min-h-11 flex-wrap items-center gap-x-2 gap-y-1 rounded-sm px-2 py-2 sm:min-h-9 sm:flex-nowrap", isCurrent ? "bg-muted" : "hover:bg-muted/50", FOCUS_RING),
|
|
44
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Check, { "aria-hidden": true, className: cn("size-4 shrink-0", !isCurrent && "invisible") }), _jsx("span", { title: name(branch), className: cn("min-w-0 flex-1 truncate text-sm/6 text-foreground", isCurrent && "font-semibold"), children: name(branch) }), _jsx(UnreadBadge, { count: branch.unreadCount, label: labels.unread(branch.unreadCount) }), _jsx("span", { className: "sr-only", children: ", " }), _jsx("span", { className: "max-sm:order-last max-sm:ms-6 max-sm:basis-full", children: _jsx(BranchStatus, { branch: branch }) })] })),
|
|
45
|
+
}) }, branch.id));
|
|
46
|
+
}) }) })] }), navButton(next, labels.next, _jsx(ChevronRight, { "aria-hidden": true, className: "size-4 rtl:rotate-180" }))] })] }));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=offer-branch-switcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-branch-switcher.js","sourceRoot":"","sources":["../../src/offer/offer-branch-switcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -153,7 +153,7 @@ function MediaGallery({ context, mediaState, onOpenMedia, labels, }) {
|
|
|
153
153
|
const state = mediaState?.[media.id];
|
|
154
154
|
const unavailable = !media.available || Boolean(state?.error);
|
|
155
155
|
const content = state?.loading ? (_jsx("span", { className: "text-sm/6 text-muted-foreground", children: labels.imageLoading })) : state?.url && !unavailable ? (_jsx("img", { src: state.url, alt: media.alt ?? "", loading: "lazy", className: "size-full object-contain" })) : (_jsxs("span", { className: "flex flex-col items-center gap-2 px-3 text-center text-sm/6 text-muted-foreground", children: [_jsx(ImageIcon, { "aria-hidden": true, className: "size-6" }), unavailable ? labels.imageUnavailable : labels.openImage] }));
|
|
156
|
-
return (_jsx("li", { className: "min-w-0", children: _jsxs("figure", { className: "@container overflow-hidden rounded-xl bg-muted/40 ring-1 ring-inset ring-border/60", children: [onOpenMedia && media.available ? (_jsx("button", { "data-offer-print-chrome": true, type: "button", onClick: () => onOpenMedia(media), className: "flex aspect-[4/3] w-full items-center justify-center overflow-hidden outline-hidden transition-[background-color,box-shadow] duration-[var(--duration-micro)] ease-[var(--ease-emphasized)] hover:bg-muted focus-visible:ring-3 focus-visible:ring-ring/
|
|
156
|
+
return (_jsx("li", { className: "min-w-0", children: _jsxs("figure", { className: "@container overflow-hidden rounded-xl bg-muted/40 ring-1 ring-inset ring-border/60", children: [onOpenMedia && media.available ? (_jsx("button", { "data-offer-print-chrome": true, type: "button", onClick: () => onOpenMedia(media), className: "flex aspect-[4/3] w-full items-center justify-center overflow-hidden outline-hidden transition-[background-color,box-shadow] duration-[var(--duration-micro)] ease-[var(--ease-emphasized)] hover:bg-muted focus-visible:ring-3 focus-visible:ring-ring/70", "aria-label": `${labels.openImage}: ${media.alt ?? media.id}`, children: content })) : (_jsx("div", { className: "flex aspect-[4/3] items-center justify-center overflow-hidden", children: content })), _jsxs("figcaption", { className: "flex min-w-0 flex-col items-start gap-2 border-t border-border/60 px-3 py-2 text-xs/5 @xs:flex-row @xs:items-center @xs:justify-between", children: [_jsx("span", { className: "min-w-0 wrap-anywhere text-muted-foreground", children: media.alt ?? labels.gallery }), _jsx("span", { className: "min-w-0 wrap-anywhere font-medium text-foreground @xs:shrink-0", children: media.source === "sent" ? labels.sentProvenance : labels.currentProvenance })] })] }) }, media.id));
|
|
157
157
|
}) }));
|
|
158
158
|
}
|
|
159
159
|
function DocumentsIndex({ context, locale, onDownloadDocument, labels, }) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
1
|
+
import type { ReactNode, RefObject } from "react";
|
|
2
|
+
import { type SupportingPaneContextValue } from "../components/supporting-pane-layout.js";
|
|
2
3
|
import { type NegotiationSectionProps } from "./negotiation-section.js";
|
|
3
4
|
import { type OfferEvaluationCommercialFacts, type OfferEvaluationContext, type OfferEvaluationLabels, type OfferEvaluationMediaState, type OfferEvaluationStatus, type OfferEvaluationTenderPresentation } from "./offer-evaluation-sections.js";
|
|
4
5
|
import { type CurrentProductReferencePresentation, type OfferedProductPresentation, type OfferProductRecordLabels } from "./offer-product-record.js";
|
|
@@ -47,6 +48,51 @@ export type OfferPageContextPresentation = {
|
|
|
47
48
|
readonly value?: OfferEvaluationContext;
|
|
48
49
|
readonly onRetry?: () => void;
|
|
49
50
|
};
|
|
51
|
+
/** What conversation `content` learns about the pane it is rendered in. */
|
|
52
|
+
export type OfferPageConversationState = SupportingPaneContextValue;
|
|
53
|
+
export interface OfferPageConversation {
|
|
54
|
+
/**
|
|
55
|
+
* The conversation, mounted ONCE inside the side pane and kept mounted while
|
|
56
|
+
* the pane is closed (so a live chat keeps its connection, list and draft).
|
|
57
|
+
*
|
|
58
|
+
* Pass a function to receive `{ open, mode, visible }`. `visible` is true only
|
|
59
|
+
* while the pane is on screen (open and measured). Gate everything that means
|
|
60
|
+
* "the user is looking at this" on it, above all mark-read:
|
|
61
|
+
*
|
|
62
|
+
* ```tsx
|
|
63
|
+
* content: ({ visible }) => <MessengerRoomPanel {...props} active={visible} />
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* A hidden pane must never clear the unread badge.
|
|
67
|
+
*/
|
|
68
|
+
readonly content: ReactNode | ((state: OfferPageConversationState) => ReactNode);
|
|
69
|
+
/**
|
|
70
|
+
* Header content beside the pane's close button, typically the counterparty
|
|
71
|
+
* name and the offer subtitle. Defaults to `labels.paneLabel`. Pass
|
|
72
|
+
* `showHeader={false}` to `MessengerRoomPanel` so the name is not shown twice.
|
|
73
|
+
*/
|
|
74
|
+
readonly paneHeader?: ReactNode;
|
|
75
|
+
/** Shown as a count badge on the toggle, hidden while the pane is visible. Announced as `labels.unread`. */
|
|
76
|
+
readonly unreadCount?: number;
|
|
77
|
+
/** localStorage key for the per-viewer open preference. Default `"cellarnode:offer-conversation-pane"`. */
|
|
78
|
+
readonly storageKey?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Receives focus when the USER opens the pane (toggle), typically the
|
|
81
|
+
* composer. Programmatic opens and the initial open never move focus.
|
|
82
|
+
* Defaults to the pane container.
|
|
83
|
+
*/
|
|
84
|
+
readonly initialFocusRef?: RefObject<HTMLElement | null>;
|
|
85
|
+
readonly labels: {
|
|
86
|
+
/** Toggle text, e.g. "Conversation". */
|
|
87
|
+
readonly toggle: string;
|
|
88
|
+
/** Count announcement: a template with `{{count}}` ("{{count}} unread") or a function. */
|
|
89
|
+
readonly unread: string | ((count: number) => string);
|
|
90
|
+
/** Accessible name of the pane close button. */
|
|
91
|
+
readonly close: string;
|
|
92
|
+
/** Accessible name of the pane (aside / dialog). */
|
|
93
|
+
readonly paneLabel: string;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
50
96
|
export interface OfferPageProps {
|
|
51
97
|
readonly perspective: Perspective;
|
|
52
98
|
readonly offerId: string;
|
|
@@ -55,6 +101,8 @@ export interface OfferPageProps {
|
|
|
55
101
|
readonly title: string;
|
|
56
102
|
readonly subtitle?: string;
|
|
57
103
|
readonly navigation?: ReactNode;
|
|
104
|
+
/** Rendered beside `navigation` (a switcher between sibling offers). Hidden in print. */
|
|
105
|
+
readonly siblingNav?: ReactNode;
|
|
58
106
|
};
|
|
59
107
|
readonly status: OfferEvaluationStatus;
|
|
60
108
|
readonly parties?: OfferParties;
|
|
@@ -72,13 +120,25 @@ export interface OfferPageProps {
|
|
|
72
120
|
readonly onOpenMedia?: (media: OfferEvaluationContext["media"][number]) => void;
|
|
73
121
|
readonly onDownloadDocument?: (document: OfferEvaluationContext["documents"][number]) => void;
|
|
74
122
|
readonly onOpenCurrentProduct?: () => void;
|
|
123
|
+
/**
|
|
124
|
+
* The offer conversation as a supporting side pane beside the document
|
|
125
|
+
* (about one third of the width, non-modal, a full-height sheet when narrow),
|
|
126
|
+
* opened from a toggle in the sticky action bar. Replaces the inline
|
|
127
|
+
* "Conversation" section; wins over `slots.conversation` when both are set.
|
|
128
|
+
*/
|
|
129
|
+
readonly conversation?: OfferPageConversation;
|
|
75
130
|
readonly slots?: {
|
|
76
131
|
readonly headerControls?: ReactNode;
|
|
132
|
+
/**
|
|
133
|
+
* @deprecated Use the `conversation` prop. Renders the old inline
|
|
134
|
+
* "Conversation" section below the document, and only when `conversation`
|
|
135
|
+
* is not set.
|
|
136
|
+
*/
|
|
77
137
|
readonly conversation?: ReactNode;
|
|
78
138
|
readonly dialogs?: ReactNode;
|
|
79
139
|
};
|
|
80
140
|
readonly className?: string;
|
|
81
141
|
}
|
|
82
142
|
/** Canonical shared offer-record page. Consumers retain all I/O and mutation ownership. */
|
|
83
|
-
export declare function OfferPage({ perspective, offerId, header, status, parties, commercial, offeredProduct, currentProduct, tender, context, locale, actions, negotiation, labels, priceTypeLabel, mediaState, onOpenMedia, onDownloadDocument, onOpenCurrentProduct, slots, className, }: OfferPageProps): import("react/jsx-runtime").JSX.Element;
|
|
143
|
+
export declare function OfferPage({ perspective, offerId, header, status, parties, commercial, offeredProduct, currentProduct, tender, context, locale, actions, negotiation, labels, priceTypeLabel, mediaState, onOpenMedia, onDownloadDocument, onOpenCurrentProduct, conversation, slots, className, }: OfferPageProps): import("react/jsx-runtime").JSX.Element;
|
|
84
144
|
//# sourceMappingURL=offer-page.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offer-page.d.ts","sourceRoot":"","sources":["../../src/offer/offer-page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"offer-page.d.ts","sourceRoot":"","sources":["../../src/offer/offer-page.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlD,OAAO,EAKL,KAAK,0BAA0B,EAChC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAsB,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,sBAAsB,EAE3B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,iCAAiC,EACvC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC9B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CAClD;AA8BD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,WAAW,EACX,MAAM,EACN,OAAO,GACR,EAAE,4BAA4B,GAAG,aAAa,CAAC,eAAe,CAAC,CA8B/D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,IAAI,CACvB,qBAAqB,EACrB,gBAAgB,GAAG,cAAc,GAAG,cAAc,CACnD,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,mCAAmC,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;KACtF,CAAC;CACH;AAED,MAAM,MAAM,4BAA4B,GACpC;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAA;CAAE,GACpE;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAEN,2EAA2E;AAC3E,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAC,CAAC;IACjF;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAChC,4GAA4G;IAC5G,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,2GAA2G;IAC3G,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE;QACf,wCAAwC;QACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,0FAA0F;QAC1F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;QACtD,gDAAgD;QAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,oDAAoD;QACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;QAChC,yFAAyF;QACzF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,iCAAiC,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC,CAAC;IACtF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAChF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAC9F,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;QACpC;;;;WAIG;QACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;QAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6KD,2FAA2F;AAC3F,wBAAgB,SAAS,CAAC,EACxB,WAAW,EACX,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,cAAc,EACd,cAAc,EACd,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EACX,MAAM,EACN,cAAc,EACd,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,KAAK,EACL,SAAS,GACV,EAAE,cAAc,2CAiQhB"}
|
package/dist/offer/offer-page.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
2
3
|
import { ArrowUpRight, MessageSquareText } from "lucide-react";
|
|
3
4
|
import { ShadcnButton as Button } from "../components/shadcn-button.js";
|
|
5
|
+
import { SupportingPaneLayout, SupportingPaneToggle, useSupportingPane, useSupportingPaneState, } from "../components/supporting-pane-layout.js";
|
|
4
6
|
import { cn } from "../lib/utils.js";
|
|
5
7
|
import { NegotiationSection } from "./negotiation-section.js";
|
|
6
8
|
import { OfferEvaluationSections, } from "./offer-evaluation-sections.js";
|
|
7
9
|
import { OfferProductRecord, } from "./offer-product-record.js";
|
|
8
10
|
import { hasConsistentOfferWorkSummary } from "./offer-work-summary.js";
|
|
11
|
+
import { claimScrollPaddingTop, findScrollParent } from "./sticky-scroll-padding.js";
|
|
9
12
|
const RESPONSE_ACTIONS = new Set(["counter", "accept", "decline"]);
|
|
10
13
|
function statusMatchesSummary(status, summary, perspective) {
|
|
11
14
|
// CEL-2152 — `awaiting_counterparty_acceptance` (two-party handshake) is a
|
|
@@ -71,8 +74,97 @@ function printNegotiationEvents(events) {
|
|
|
71
74
|
function PageSection({ title, icon, children, className, }) {
|
|
72
75
|
return (_jsxs("section", { className: cn("min-w-0 border-t border-border/60 py-6", className), children: [_jsxs("h2", { className: "flex min-w-0 items-center gap-2 wrap-anywhere text-sm/6 font-semibold text-foreground", children: [_jsx("span", { "aria-hidden": true, className: "shrink-0 text-muted-foreground", children: icon }), title] }), _jsx("div", { className: "mt-4 min-w-0", children: children })] }));
|
|
73
76
|
}
|
|
77
|
+
const DEFAULT_CONVERSATION_STORAGE_KEY = "cellarnode:offer-conversation-pane";
|
|
78
|
+
/** Gap between the sticky action bar and the pane beneath it, also kept clear when scrolling to focus. */
|
|
79
|
+
const BAR_GAP_PX = 8;
|
|
80
|
+
/** Extra bar width regained before an icon-only toggle shows its label again (stops flapping). */
|
|
81
|
+
const TOGGLE_EXPAND_HYSTERESIS_PX = 120;
|
|
82
|
+
function ConversationPaneContent({ content }) {
|
|
83
|
+
const state = useSupportingPane();
|
|
84
|
+
return _jsx(_Fragment, { children: typeof content === "function" ? content(state) : content });
|
|
85
|
+
}
|
|
86
|
+
function formatUnread(unread, count) {
|
|
87
|
+
return typeof unread === "function"
|
|
88
|
+
? unread(count)
|
|
89
|
+
: unread.replaceAll("{{count}}", String(count));
|
|
90
|
+
}
|
|
91
|
+
const NO_BAR = { height: 0, width: 0, sticky: false, compact: false };
|
|
92
|
+
/**
|
|
93
|
+
* Tracks the sticky action bar: its size, whether it is really sticky, and
|
|
94
|
+
* whether the actions wrap (measured, not a fixed width, so long labels in
|
|
95
|
+
* another language collapse the toggle at the width where they need to).
|
|
96
|
+
* Collapsing gives the actions room back and would un-wrap them, so the toggle
|
|
97
|
+
* only expands again after the bar has gained `TOGGLE_EXPAND_HYSTERESIS_PX`.
|
|
98
|
+
*/
|
|
99
|
+
function useStickyBarMetrics(barRef, enabled) {
|
|
100
|
+
const [metrics, setMetrics] = React.useState(NO_BAR);
|
|
101
|
+
React.useLayoutEffect(() => {
|
|
102
|
+
const bar = barRef.current;
|
|
103
|
+
if (!enabled || !bar)
|
|
104
|
+
return;
|
|
105
|
+
let compact = false;
|
|
106
|
+
let compactAtWidth = 0;
|
|
107
|
+
const measure = () => {
|
|
108
|
+
const rect = bar.getBoundingClientRect();
|
|
109
|
+
const width = Math.round(rect.width);
|
|
110
|
+
const buttons = bar.querySelectorAll("[data-offer-page-actions] > button");
|
|
111
|
+
const wrapped = buttons.length > 1 &&
|
|
112
|
+
Math.abs(buttons[buttons.length - 1].offsetTop - buttons[0].offsetTop) > 4;
|
|
113
|
+
if (!compact && wrapped) {
|
|
114
|
+
compact = true;
|
|
115
|
+
compactAtWidth = width;
|
|
116
|
+
}
|
|
117
|
+
else if (compact && !wrapped && width > compactAtWidth + TOGGLE_EXPAND_HYSTERESIS_PX) {
|
|
118
|
+
compact = false;
|
|
119
|
+
}
|
|
120
|
+
const next = {
|
|
121
|
+
height: Math.ceil(rect.height),
|
|
122
|
+
width,
|
|
123
|
+
sticky: window.getComputedStyle(bar).position === "sticky",
|
|
124
|
+
compact,
|
|
125
|
+
};
|
|
126
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect -- layout measurement, bails out when unchanged
|
|
127
|
+
setMetrics((prev) => prev.height === next.height &&
|
|
128
|
+
prev.width === next.width &&
|
|
129
|
+
prev.sticky === next.sticky &&
|
|
130
|
+
prev.compact === next.compact
|
|
131
|
+
? prev
|
|
132
|
+
: next);
|
|
133
|
+
};
|
|
134
|
+
measure();
|
|
135
|
+
if (typeof ResizeObserver === "undefined")
|
|
136
|
+
return;
|
|
137
|
+
const observer = new ResizeObserver(measure);
|
|
138
|
+
observer.observe(bar);
|
|
139
|
+
// The actions' own width moves when the toggle collapses or expands.
|
|
140
|
+
const actions = bar.querySelector("[data-offer-page-actions]");
|
|
141
|
+
if (actions)
|
|
142
|
+
observer.observe(actions);
|
|
143
|
+
return () => observer.disconnect();
|
|
144
|
+
}, [barRef, enabled]);
|
|
145
|
+
return enabled ? metrics : NO_BAR;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* WCAG 2.4.11: a focused control must not sit under the sticky bar. Claims
|
|
149
|
+
* `scroll-padding-top` (bar height plus the gap) on the page's real scroller
|
|
150
|
+
* only while the bar is sticky; see `sticky-scroll-padding.ts` for why this is
|
|
151
|
+
* a ref-counted claim and not a save and restore.
|
|
152
|
+
*/
|
|
153
|
+
function useScrollPaddingForStickyBar(articleRef, px) {
|
|
154
|
+
React.useEffect(() => {
|
|
155
|
+
const article = articleRef.current;
|
|
156
|
+
if (!article || px <= 0)
|
|
157
|
+
return;
|
|
158
|
+
return claimScrollPaddingTop(findScrollParent(article), px);
|
|
159
|
+
}, [articleRef, px]);
|
|
160
|
+
}
|
|
74
161
|
/** Canonical shared offer-record page. Consumers retain all I/O and mutation ownership. */
|
|
75
|
-
export function OfferPage({ perspective, offerId, header, status, parties, commercial, offeredProduct, currentProduct, tender, context, locale, actions, negotiation, labels, priceTypeLabel, mediaState, onOpenMedia, onDownloadDocument, onOpenCurrentProduct, slots, className, }) {
|
|
162
|
+
export function OfferPage({ perspective, offerId, header, status, parties, commercial, offeredProduct, currentProduct, tender, context, locale, actions, negotiation, labels, priceTypeLabel, mediaState, onOpenMedia, onDownloadDocument, onOpenCurrentProduct, conversation, slots, className, }) {
|
|
163
|
+
const articleRef = React.useRef(null);
|
|
164
|
+
const barRef = React.useRef(null);
|
|
165
|
+
const paneState = useSupportingPaneState({
|
|
166
|
+
storageKey: conversation?.storageKey ?? DEFAULT_CONVERSATION_STORAGE_KEY,
|
|
167
|
+
});
|
|
76
168
|
const visibleActions = resolveOfferPageActions({ perspective, status, actions });
|
|
77
169
|
const contextValue = context.status === "ready"
|
|
78
170
|
? context.value
|
|
@@ -88,18 +180,34 @@ export function OfferPage({ perspective, offerId, header, status, parties, comme
|
|
|
88
180
|
onRetry: context.status === "ready" ? undefined : context.onRetry,
|
|
89
181
|
};
|
|
90
182
|
const productRecord = (_jsx(OfferProductRecord, { kind: "sent", product: offeredProduct, labels: labels.product, locale: locale }));
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
183
|
+
const hasStickyBar = visibleActions.length > 0 || Boolean(conversation);
|
|
184
|
+
const bar = useStickyBarMetrics(barRef, hasStickyBar);
|
|
185
|
+
// Pane top and scroll padding both clear the bar plus a gap.
|
|
186
|
+
const clearance = bar.sticky && bar.height > 0 ? bar.height + BAR_GAP_PX : 0;
|
|
187
|
+
useScrollPaddingForStickyBar(articleRef, clearance);
|
|
188
|
+
const paneVisible = paneState.open && paneState.mode !== undefined;
|
|
189
|
+
const documentBody = (_jsxs(_Fragment, { children: [_jsx(OfferEvaluationSections, { context: contextValue, accessibleLabel: header.title, contextState: contextState, status: status, parties: parties, commercial: commercial, product: {
|
|
190
|
+
name: offeredProduct.beverageName ?? labels.product.unknown,
|
|
191
|
+
producerName: offeredProduct.producer,
|
|
192
|
+
facts: [],
|
|
193
|
+
capturedAt: offeredProduct.provenance.capturedAt,
|
|
194
|
+
revision: offeredProduct.provenance.revision,
|
|
195
|
+
provenance: "sent",
|
|
196
|
+
}, offeredProduct: offeredProduct, productRecordLabels: labels.product, tender: tender, locale: locale, priceTypeLabel: priceTypeLabel, mediaState: mediaState, onOpenMedia: onOpenMedia, onDownloadDocument: onDownloadDocument, slots: { sentProductFacts: productRecord }, labels: {
|
|
197
|
+
...labels.evaluation,
|
|
198
|
+
contextLoading: labels.context.loading,
|
|
199
|
+
contextError: labels.context.error,
|
|
200
|
+
contextRetry: labels.context.retry,
|
|
201
|
+
} }), negotiation ? (_jsxs(_Fragment, { children: [_jsx("div", { "data-offer-screen-evidence": true, className: "min-w-0 border-t border-border/60 py-6", children: _jsx(NegotiationSection, { ...negotiation, labels: { heading: labels.negotiation, ...negotiation.labels } }) }), _jsx("div", { "data-offer-print-evidence": true, className: "hidden min-w-0 flex-col border-t border-border/60 py-6", children: _jsx(NegotiationSection, { ...negotiation, events: printNegotiationEvents(negotiation.events), notes: undefined, notesLabel: undefined, onOpenComposer: undefined, onLoadOlder: undefined, collapseLongHistory: false, labels: { heading: labels.negotiation, ...negotiation.labels } }) })] })) : null] }));
|
|
202
|
+
return (_jsxs("article", { ref: articleRef, "data-offer-page": true, "data-offer-document": true, "data-offer-id": offerId, className: cn("@container min-w-0 bg-background text-foreground", className), children: [_jsxs("header", { className: "min-w-0 border-b border-border/60 px-3 py-5 sm:px-6", children: [_jsxs("div", { className: "flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("div", { "data-offer-print-chrome": true, className: "flex min-w-0 flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3", children: [header.navigation, header.siblingNav ? (_jsx("div", { "data-offer-sibling-nav": true, className: "min-w-0", children: header.siblingNav })) : null] }), slots?.headerControls ? (_jsx("div", { "data-offer-print-chrome": true, className: "min-w-0", children: slots.headerControls })) : null] }), _jsx("div", { className: "mt-4 min-w-0", children: _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "break-words text-xs/5 font-semibold uppercase tracking-wide text-muted-foreground", children: header.eyebrow }), _jsx("h1", { className: "mt-1 wrap-anywhere text-2xl/8 font-semibold text-foreground sm:text-3xl/9", children: header.title }), header.subtitle ? (_jsx("p", { className: "mt-1 break-words text-sm/6 text-muted-foreground", children: header.subtitle })) : null] }) }), currentProduct ? (_jsxs("div", { "data-offer-current-product-reference": true, "data-offer-print-chrome": true, className: "mt-5 flex min-w-0 flex-col gap-3 rounded-xl bg-muted/50 p-3 sm:flex-row sm:items-center sm:justify-between", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "break-words text-sm/6 font-medium text-foreground", children: labels.currentProduct.title }), _jsx("p", { className: "break-words text-xs/5 text-muted-foreground", children: labels.currentProduct.status[currentProduct.availability] })] }), onOpenCurrentProduct && currentProduct.availability === "available" ? (_jsx(Button, { type: "button", variant: "outline", onClick: onOpenCurrentProduct, trailingIcon: _jsx(ArrowUpRight, { "aria-hidden": true, className: "size-4" }), className: "h-auto min-h-11 min-w-0 max-w-full self-stretch whitespace-normal wrap-anywhere sm:min-h-9 sm:self-auto", children: _jsx("span", { className: "min-w-0 wrap-anywhere", children: labels.currentProduct.open }) })) : null] })) : null] }), hasStickyBar ? (_jsx("div", { ref: barRef, "data-offer-sticky-actions": true, "data-offer-print-chrome": true, className: cn("relative z-20 min-w-0 border-b border-border/60 bg-background px-3 py-3 @3xs:sticky @3xs:top-0 sm:px-6",
|
|
203
|
+
// A toggle-only bar (terminal offer) is not an action bar: no shadow.
|
|
204
|
+
visibleActions.length > 0 && "shadow-xs"), children: _jsxs("div", { className: cn("flex min-w-0 items-center gap-3",
|
|
205
|
+
// With a pane the row spans the same frame as document plus pane, so the
|
|
206
|
+
// toggle's edge lines up with the pane's edge.
|
|
207
|
+
!conversation && "mx-auto max-w-5xl"), children: [visibleActions.length ? (_jsx("div", { className: "min-w-0 flex-1", children: _jsx(ActionGroup, { actions: visibleActions, label: labels.actions, compact: true }) })) : (_jsx("div", { className: "flex-1" })), conversation ? (_jsxs(_Fragment, { children: [visibleActions.length ? (_jsx("div", { "aria-hidden": true, className: "hidden h-8 w-px shrink-0 bg-border/60 @sm:block" })) : null, _jsx("div", { "data-offer-conversation-toggle": true, className: "shrink-0", children: _jsx(SupportingPaneToggle, { ...paneState.getToggleProps(), label: conversation.labels.toggle,
|
|
208
|
+
// The user is reading the conversation while the pane is visible.
|
|
209
|
+
count: paneVisible ? 0 : conversation.unreadCount, countText: !paneVisible && conversation.unreadCount
|
|
210
|
+
? formatUnread(conversation.labels.unread, conversation.unreadCount)
|
|
211
|
+
: undefined, icon: _jsx(MessageSquareText, { "aria-hidden": "true" }), size: "sm", compact: bar.compact }) })] })) : null] }) })) : null, conversation ? (_jsx(SupportingPaneLayout, { ...paneState.getLayoutProps(), className: "px-3 sm:px-6", paneLabel: conversation.labels.paneLabel, labels: { close: conversation.labels.close }, bodyScroll: "content", stickyOffset: clearance > 0 ? `${clearance}px` : undefined, paneHeader: conversation.paneHeader, initialFocusRef: conversation.initialFocusRef, paneProps: { "data-offer-private-chat": "", "data-offer-print-chrome": "" }, pane: _jsx(ConversationPaneContent, { content: conversation.content }), children: documentBody })) : (_jsxs("div", { className: "min-w-0 px-3 sm:px-6", children: [documentBody, slots?.conversation ? (_jsx("div", { "data-offer-screen-evidence": true, "data-offer-private-chat": true, children: _jsx(PageSection, { title: labels.conversation, icon: _jsx(MessageSquareText, { className: "size-4" }), children: slots.conversation }) })) : null] })), _jsx("div", { "data-offer-print-chrome": true, children: slots?.dialogs })] }));
|
|
104
212
|
}
|
|
105
213
|
//# sourceMappingURL=offer-page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offer-page.js","sourceRoot":"","sources":["../../src/offer/offer-page.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"offer-page.js","sourceRoot":"","sources":["../../src/offer/offer-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parties-card.d.ts","sourceRoot":"","sources":["../../src/offer/parties-card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"parties-card.d.ts","sourceRoot":"","sources":["../../src/offer/parties-card.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsDD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,OAAqB,EACrB,SAAS,GACV,EAAE,gBAAgB,2CAqBlB"}
|
|
@@ -3,7 +3,7 @@ import { useId } from "react";
|
|
|
3
3
|
import { ArrowLeftRight } from "lucide-react";
|
|
4
4
|
import { cn } from "../lib/utils.js";
|
|
5
5
|
function PartyBlock({ party, expanded, align, }) {
|
|
6
|
-
return (_jsxs("div", { className: cn("flex flex-1 min-w-0 items-start gap-3", align === "right" && "flex-row-reverse text-right"), children: [_jsx("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold", "aria-hidden": true, children: party.logoUrl ? (_jsx("img", { src: party.logoUrl, alt: "", className: "size-full rounded-full object-cover" })) : (party.name.slice(0, 2).toUpperCase()) }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm/6 font-semibold", children: party.name }), party.location && (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: party.location })), expanded && party.primaryContactName && (_jsxs("div", { className: "mt-1 text-xs text-muted-foreground", children: [party.primaryContactName, party.primaryContactEmail && (_jsxs(_Fragment, { children: [" · ", _jsx("a", { className: "underline", href: `mailto:${party.primaryContactEmail}`, children: party.primaryContactEmail })] }))] }))] })] }));
|
|
6
|
+
return (_jsxs("div", { className: cn("flex flex-1 min-w-0 items-start gap-3", align === "right" && "flex-row-reverse text-right"), children: [_jsx("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold", "aria-hidden": true, children: party.logoUrl ? (_jsx("img", { src: party.logoUrl, alt: "", className: "size-full rounded-full object-cover" })) : (party.name.slice(0, 2).toUpperCase()) }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm/6 font-semibold", children: party.name }), party.location && (_jsx("div", { className: "truncate text-xs text-muted-foreground", children: party.location })), expanded && party.primaryContactName && (_jsxs("div", { className: "mt-1 text-xs text-muted-foreground", children: [party.primaryContactName, party.primaryContactEmail && (_jsxs(_Fragment, { children: [" · ", _jsx("a", { className: "underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", href: `mailto:${party.primaryContactEmail}`, children: party.primaryContactEmail })] }))] }))] })] }));
|
|
7
7
|
}
|
|
8
8
|
export function PartiesCard({ producer, importer, viewerOrgId, variant = "collapsed", className, }) {
|
|
9
9
|
const headingId = useId();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parties-card.js","sourceRoot":"","sources":["../../src/offer/parties-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,QAAQ,EACR,KAAK,GAKN;IACC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,KAAK,KAAK,OAAO,IAAI,6BAA6B,CACnD,aAED,cACE,SAAS,EAAC,+FAA+F,iCAGxG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,cAAK,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,qCAAqC,GAAG,CACnF,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CACrC,GACG,EACN,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,kCAAkC,YAAE,KAAK,CAAC,IAAI,GAAO,EACnE,KAAK,CAAC,QAAQ,IAAI,CACjB,cAAK,SAAS,EAAC,wCAAwC,YAAE,KAAK,CAAC,QAAQ,GAAO,CAC/E,EACA,QAAQ,IAAI,KAAK,CAAC,kBAAkB,IAAI,CACvC,eAAK,SAAS,EAAC,oCAAoC,aAChD,KAAK,CAAC,kBAAkB,EACxB,KAAK,CAAC,mBAAmB,IAAI,CAC5B,8BACG,KAAK,EACN,
|
|
1
|
+
{"version":3,"file":"parties-card.js","sourceRoot":"","sources":["../../src/offer/parties-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,QAAQ,EACR,KAAK,GAKN;IACC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,KAAK,KAAK,OAAO,IAAI,6BAA6B,CACnD,aAED,cACE,SAAS,EAAC,+FAA+F,iCAGxG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,cAAK,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,qCAAqC,GAAG,CACnF,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CACrC,GACG,EACN,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,kCAAkC,YAAE,KAAK,CAAC,IAAI,GAAO,EACnE,KAAK,CAAC,QAAQ,IAAI,CACjB,cAAK,SAAS,EAAC,wCAAwC,YAAE,KAAK,CAAC,QAAQ,GAAO,CAC/E,EACA,QAAQ,IAAI,KAAK,CAAC,kBAAkB,IAAI,CACvC,eAAK,SAAS,EAAC,oCAAoC,aAChD,KAAK,CAAC,kBAAkB,EACxB,KAAK,CAAC,mBAAmB,IAAI,CAC5B,8BACG,KAAK,EACN,YACE,SAAS,EAAC,6FAA6F,EACvG,IAAI,EAAE,UAAU,KAAK,CAAC,mBAAmB,EAAE,YAE1C,KAAK,CAAC,mBAAmB,GACxB,IACH,CACJ,IACG,CACP,IACG,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,OAAO,GAAG,WAAW,EACrB,SAAS,GACQ;IACjB,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,KAAK,UAAU,CAAC;IACxC,MAAM,gBAAgB,GAAG,WAAW,KAAK,QAAQ,CAAC,KAAK,CAAC;IACxD,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrD,OAAO,CACL,sCACmB,SAAS,EAC1B,SAAS,EAAE,EAAE,CAAC,iDAAiD,EAAE,SAAS,CAAC,aAE3E,aAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAC,yBAAyB,wBAEjD,EACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAC,MAAM,GAAG,EAC5D,KAAC,cAAc,yBAAa,SAAS,EAAC,uCAAuC,GAAG,EAChF,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAC,OAAO,GAAG,IAC1D,IACE,CACX,CAAC;AACJ,CAAC"}
|