@cellarnode/ui 0.190.0 → 0.192.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.
Files changed (49) hide show
  1. package/dist/components/country-flag.d.ts +19 -1
  2. package/dist/components/country-flag.d.ts.map +1 -1
  3. package/dist/components/country-flag.js +66 -11
  4. package/dist/components/country-flag.js.map +1 -1
  5. package/dist/markets/deadline.d.ts +35 -0
  6. package/dist/markets/deadline.d.ts.map +1 -0
  7. package/dist/markets/deadline.js +58 -0
  8. package/dist/markets/deadline.js.map +1 -0
  9. package/dist/markets/index.d.ts +4 -0
  10. package/dist/markets/index.d.ts.map +1 -0
  11. package/dist/markets/index.js +4 -0
  12. package/dist/markets/index.js.map +1 -0
  13. package/dist/markets/market-list-item.d.ts +41 -0
  14. package/dist/markets/market-list-item.d.ts.map +1 -0
  15. package/dist/markets/market-list-item.js +25 -0
  16. package/dist/markets/market-list-item.js.map +1 -0
  17. package/dist/markets/market-opportunities-table.d.ts +137 -0
  18. package/dist/markets/market-opportunities-table.d.ts.map +1 -0
  19. package/dist/markets/market-opportunities-table.js +282 -0
  20. package/dist/markets/market-opportunities-table.js.map +1 -0
  21. package/dist/markets/market-workspace-header.d.ts +53 -0
  22. package/dist/markets/market-workspace-header.d.ts.map +1 -0
  23. package/dist/markets/market-workspace-header.js +34 -0
  24. package/dist/markets/market-workspace-header.js.map +1 -0
  25. package/dist/opportunities/opportunities-table.d.ts +3 -1
  26. package/dist/opportunities/opportunities-table.d.ts.map +1 -1
  27. package/dist/opportunities/opportunities-table.js +24 -56
  28. package/dist/opportunities/opportunities-table.js.map +1 -1
  29. package/dist/opportunities/opportunity-detail-panel.d.ts +7 -0
  30. package/dist/opportunities/opportunity-detail-panel.d.ts.map +1 -1
  31. package/dist/opportunities/opportunity-detail-panel.js +2 -2
  32. package/dist/opportunities/opportunity-detail-panel.js.map +1 -1
  33. package/dist/opportunity-facts/edit-labels.d.ts +56 -0
  34. package/dist/opportunity-facts/edit-labels.d.ts.map +1 -0
  35. package/dist/opportunity-facts/edit-labels.js +37 -0
  36. package/dist/opportunity-facts/edit-labels.js.map +1 -0
  37. package/dist/opportunity-facts/editable-section.d.ts +119 -0
  38. package/dist/opportunity-facts/editable-section.d.ts.map +1 -0
  39. package/dist/opportunity-facts/editable-section.js +267 -0
  40. package/dist/opportunity-facts/editable-section.js.map +1 -0
  41. package/dist/opportunity-facts/index.d.ts +2 -0
  42. package/dist/opportunity-facts/index.d.ts.map +1 -1
  43. package/dist/opportunity-facts/index.js +1 -0
  44. package/dist/opportunity-facts/index.js.map +1 -1
  45. package/dist/opportunity-facts/opportunity-fact-sheet.d.ts +39 -1
  46. package/dist/opportunity-facts/opportunity-fact-sheet.d.ts.map +1 -1
  47. package/dist/opportunity-facts/opportunity-fact-sheet.js +285 -13
  48. package/dist/opportunity-facts/opportunity-fact-sheet.js.map +1 -1
  49. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"opportunities-table.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opportunities-table.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,13 @@ import type { OpportunityTab } from "./types.js";
3
3
  export interface OpportunityDetailPanelProps {
4
4
  tabs: OpportunityTab[];
5
5
  defaultTabId?: string;
6
+ /**
7
+ * Controlled active tab (CEL-2129). When set, the panel follows it and
8
+ * reports user switches through `onTabChange`; `defaultTabId` is then
9
+ * ignored. Leave unset for the original uncontrolled behaviour.
10
+ */
11
+ tabId?: string;
12
+ onTabChange?: (tabId: string) => void;
6
13
  className?: string;
7
14
  }
8
15
  declare const OpportunityDetailPanelWithSkeleton: React.FC<OpportunityDetailPanelProps> & {
@@ -1 +1 @@
1
- {"version":3,"file":"opportunity-detail-panel.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiLD,QAAA,MAAM,kCAAkC,EACZ,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAAC,GAAG;IAChE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAGJ,OAAO,EAAE,kCAAkC,IAAI,sBAAsB,EAAE,CAAC;AACxE,YAAY,EAAE,2BAA2B,IAAI,oCAAoC,EAAE,CAAC"}
1
+ {"version":3,"file":"opportunity-detail-panel.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyLD,QAAA,MAAM,kCAAkC,EACZ,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAAC,GAAG;IAChE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAGJ,OAAO,EAAE,kCAAkC,IAAI,sBAAsB,EAAE,CAAC;AACxE,YAAY,EAAE,2BAA2B,IAAI,oCAAoC,EAAE,CAAC"}
@@ -38,7 +38,7 @@ function useMeasuredHeight() {
38
38
  }, []);
39
39
  return [ref, height];
40
40
  }
41
- function OpportunityDetailPanel({ tabs, defaultTabId, className }) {
41
+ function OpportunityDetailPanel({ tabs, defaultTabId, tabId, onTabChange, className, }) {
42
42
  const prefersReducedMotion = useReducedMotion();
43
43
  const [measureRef, height] = useMeasuredHeight();
44
44
  const visible = tabs.filter((t) => !t.hidden);
@@ -57,7 +57,7 @@ function OpportunityDetailPanel({ tabs, defaultTabId, className }) {
57
57
  return (_jsx("div", { className: cn("flex min-w-0 flex-col gap-4", className), children: _jsx(motion.div, { className: "min-w-0 overflow-hidden", animate: prefersReducedMotion ? undefined : { height: height ?? "auto" }, style: prefersReducedMotion ? { height: height ?? "auto" } : undefined, transition: { type: "spring", stiffness: 380, damping: 32 }, children: _jsx("div", { ref: measureRef, className: "min-w-0", children: _jsx("div", { className: "grid min-w-0", "data-panel-id": only.id, children: only.content }) }) }) }));
58
58
  }
59
59
  const initial = defaultTabId && visible.some((t) => t.id === defaultTabId) ? defaultTabId : visible[0].id;
60
- return (_jsxs(Tabs.Root, { defaultValue: initial, activationMode: "manual", className: cn("flex min-w-0 flex-col gap-4", className), children: [_jsx(Tabs.List, { "aria-label": "Opportunity detail sections", className: "flex flex-wrap gap-1 border-b border-border", children: visible.map((t) => (_jsx(Tabs.Trigger, { value: t.id, className: cn(
60
+ return (_jsxs(Tabs.Root, { defaultValue: initial, value: tabId, onValueChange: onTabChange, activationMode: "manual", className: cn("flex min-w-0 flex-col gap-4", className), children: [_jsx(Tabs.List, { "aria-label": "Opportunity detail sections", className: "flex flex-wrap gap-1 border-b border-border", children: visible.map((t) => (_jsx(Tabs.Trigger, { value: t.id, className: cn(
61
61
  // min-h-11: 44px WCAG 2.5.5 touch target (py-2 alone is ~36px).
62
62
  "relative inline-flex min-h-11 items-center rounded-t-md px-3 py-2 text-sm font-medium text-muted-foreground ring-inset", "transition-colors duration-[var(--duration-micro)] ease-[var(--ease-emphasized)]", "hover:text-foreground",
63
63
  // Active state: stronger weight + accent fill, plus a brand
@@ -1 +1 @@
1
- {"version":3,"file":"opportunity-detail-panel.js","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opportunity-detail-panel.js","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { TranslateFn } from "./types.js";
2
+ /**
3
+ * Why the delivery terms are locked. A closed union: the consumer passes the
4
+ * code, the sheet renders the matching copy from `editLabels.locked.reasons`,
5
+ * and an unknown code falls back to the generic copy. A raw code never renders.
6
+ */
7
+ export type OpportunityTermsLockedReason = "live_offers";
8
+ /** Sections of an `OpportunityFactSheet` that can switch to an in-place edit mode (CEL-2129). */
9
+ export type OpportunityEditableSectionId = "product-requirements" | "delivery-terms";
10
+ /**
11
+ * Copy for the in-place edit mode of `OpportunityFactSheet` (CEL-2129). Every
12
+ * string is overridable: pass a partial `editLabels` or build the whole object
13
+ * through `defaultOpportunityFactEditLabels(t)` with an i18next-shaped `t`.
14
+ * English defaults only; none of them contains an em dash.
15
+ */
16
+ export interface OpportunityFactEditLabels {
17
+ /** Visible text of the section Edit button. */
18
+ readonly edit: string;
19
+ /** Accessible name of the Edit button, e.g. "Edit product requirements". */
20
+ readonly editSection: (section: string) => string;
21
+ /** Row action for a missing value, e.g. "Add vintage". */
22
+ readonly add: (fact: string) => string;
23
+ /** Save button text, named after what it saves, e.g. "Save product requirements". */
24
+ readonly saveSection: (section: string) => string;
25
+ /** Note under the footer when other tabs hold unsaved changes of the same draft; `tabs` is a comma separated list of tab names. */
26
+ readonly saveAlsoOn: (tabs: string) => string;
27
+ readonly saving: string;
28
+ readonly cancel: string;
29
+ /** Polite announcement after a successful save (the edit mode has closed by then). */
30
+ readonly saved: string;
31
+ /** Used when `onSave` rejects with an error that carries no message. */
32
+ readonly saveFailed: string;
33
+ readonly unsaved: {
34
+ readonly title: string;
35
+ readonly body: string;
36
+ readonly keepEditing: string;
37
+ readonly discard: string;
38
+ };
39
+ /** Lower-case noun phrase used inside sentences ("Edit delivery terms"). */
40
+ readonly section: Readonly<Record<OpportunityEditableSectionId, string>>;
41
+ /** Heading of the delivery-terms card on the Commercial tab. */
42
+ readonly deliveryTermsHeading: string;
43
+ readonly locked: {
44
+ readonly title: string;
45
+ /** Generic reason: used when no reason, or an unknown one, is passed. */
46
+ readonly reason: string;
47
+ /** Copy per `termsLockedReason` code. */
48
+ readonly reasons: Readonly<Record<OpportunityTermsLockedReason, string>>;
49
+ /** Announced when the lock lands while the section was being edited. */
50
+ readonly arrivedWhileEditing: string;
51
+ readonly sentOffersNote: string;
52
+ readonly reviewOffers: string;
53
+ };
54
+ }
55
+ export declare function defaultOpportunityFactEditLabels(t?: TranslateFn): OpportunityFactEditLabels;
56
+ //# sourceMappingURL=edit-labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-labels.d.ts","sourceRoot":"","sources":["../../src/opportunity-facts/edit-labels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,aAAa,CAAC;AAEzD,iGAAiG;AACjG,MAAM,MAAM,4BAA4B,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;AAErF;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,mIAAmI;IACnI,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,yEAAyE;QACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,yCAAyC;QACzC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,CAAC;QACzE,wEAAwE;QACxE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,GAAE,WAA0C,GAC5C,yBAAyB,CAiD3B"}
@@ -0,0 +1,37 @@
1
+ import { interpolate } from "../portfolio/interpolate.js";
2
+ export function defaultOpportunityFactEditLabels(t = (_key, fallback) => fallback) {
3
+ const i = (key, fallback, vars) => interpolate(t(key, fallback), vars);
4
+ return {
5
+ edit: t("opportunity.edit.edit", "Edit"),
6
+ editSection: (section) => i("opportunity.edit.editSection", "Edit {{section}}", { section }),
7
+ add: (fact) => i("opportunity.edit.add", "Add {{fact}}", { fact }),
8
+ saveSection: (section) => i("opportunity.edit.saveSection", "Save {{section}}", { section }),
9
+ saveAlsoOn: (tabs) => i("opportunity.edit.saveAlsoOn", "Also saves your changes on {{tabs}}", { tabs }),
10
+ saving: t("opportunity.edit.saving", "Saving"),
11
+ cancel: t("opportunity.edit.cancel", "Cancel"),
12
+ saved: t("opportunity.edit.saved", "Changes saved"),
13
+ saveFailed: t("opportunity.edit.saveFailed", "Couldn't save. Your changes are still here. Try again."),
14
+ unsaved: {
15
+ title: t("opportunity.edit.unsaved.title", "Discard unsaved changes?"),
16
+ body: t("opportunity.edit.unsaved.body", "Your edits to this section have not been saved."),
17
+ keepEditing: t("opportunity.edit.unsaved.keepEditing", "Keep editing"),
18
+ discard: t("opportunity.edit.unsaved.discard", "Discard changes"),
19
+ },
20
+ section: {
21
+ "product-requirements": t("opportunity.edit.section.productRequirements", "product requirements"),
22
+ "delivery-terms": t("opportunity.edit.section.deliveryTerms", "delivery terms"),
23
+ },
24
+ deliveryTermsHeading: t("opportunity.edit.deliveryTermsHeading", "Delivery terms"),
25
+ locked: {
26
+ title: t("opportunity.edit.locked.title", "Delivery terms are locked"),
27
+ reason: t("opportunity.edit.locked.reason", "These delivery terms can no longer be changed."),
28
+ reasons: {
29
+ live_offers: t("opportunity.edit.locked.reasons.liveOffers", "Producers have live offers based on these terms, so they can no longer be changed."),
30
+ },
31
+ arrivedWhileEditing: t("opportunity.edit.locked.arrivedWhileEditing", "Delivery terms were locked while you were editing. Your changes were not saved."),
32
+ sentOffersNote: t("opportunity.edit.locked.sentOffersNote", "Sent offers are never changed."),
33
+ reviewOffers: t("opportunity.edit.locked.reviewOffers", "Review offers"),
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=edit-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-labels.js","sourceRoot":"","sources":["../../src/opportunity-facts/edit-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA2DvD,MAAM,UAAU,gCAAgC,CAC9C,IAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAE7C,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,IAAqC,EAAE,EAAE,CACjF,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,uBAAuB,EAAE,MAAM,CAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5F,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC;QAClE,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5F,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CACnB,CAAC,CAAC,6BAA6B,EAAE,qCAAqC,EAAE,EAAE,IAAI,EAAE,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,yBAAyB,EAAE,QAAQ,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,yBAAyB,EAAE,QAAQ,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,wBAAwB,EAAE,eAAe,CAAC;QACnD,UAAU,EAAE,CAAC,CACX,6BAA6B,EAC7B,wDAAwD,CACzD;QACD,OAAO,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,gCAAgC,EAAE,0BAA0B,CAAC;YACtE,IAAI,EAAE,CAAC,CAAC,+BAA+B,EAAE,iDAAiD,CAAC;YAC3F,WAAW,EAAE,CAAC,CAAC,sCAAsC,EAAE,cAAc,CAAC;YACtE,OAAO,EAAE,CAAC,CAAC,kCAAkC,EAAE,iBAAiB,CAAC;SAClE;QACD,OAAO,EAAE;YACP,sBAAsB,EAAE,CAAC,CACvB,8CAA8C,EAC9C,sBAAsB,CACvB;YACD,gBAAgB,EAAE,CAAC,CAAC,wCAAwC,EAAE,gBAAgB,CAAC;SAChF;QACD,oBAAoB,EAAE,CAAC,CAAC,uCAAuC,EAAE,gBAAgB,CAAC;QAClF,MAAM,EAAE;YACN,KAAK,EAAE,CAAC,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;YACtE,MAAM,EAAE,CAAC,CAAC,gCAAgC,EAAE,gDAAgD,CAAC;YAC7F,OAAO,EAAE;gBACP,WAAW,EAAE,CAAC,CACZ,4CAA4C,EAC5C,oFAAoF,CACrF;aACF;YACD,mBAAmB,EAAE,CAAC,CACpB,6CAA6C,EAC7C,iFAAiF,CAClF;YACD,cAAc,EAAE,CAAC,CAAC,wCAAwC,EAAE,gCAAgC,CAAC;YAC7F,YAAY,EAAE,CAAC,CAAC,sCAAsC,EAAE,eAAe,CAAC;SACzE;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,119 @@
1
+ import * as React from "react";
2
+ import type { OpportunityEditableSectionId, OpportunityFactEditLabels, OpportunityTermsLockedReason } from "./edit-labels.js";
3
+ import type { FactKey } from "./types.js";
4
+ /** What a field control needs to wire itself to its row (label, server error). */
5
+ export interface FactFieldContext {
6
+ /** id of the visible row label (`<dt>`); use as `aria-labelledby`. */
7
+ readonly labelId: string;
8
+ /** id of the inline server error for this field, set only while one is shown. */
9
+ readonly errorId: string | undefined;
10
+ /** True while a server error is shown for this field; map to `aria-invalid`. */
11
+ readonly invalid: boolean;
12
+ }
13
+ export type FactFieldNode = React.ReactNode | ((ctx: FactFieldContext) => React.ReactNode);
14
+ export interface OpportunityFactSectionEditing {
15
+ /**
16
+ * Controls keyed by the fact they edit. A control renders in the row of its
17
+ * fact (the label stays, the read-only value is replaced) wherever that fact
18
+ * lives: product facts on Overview, compliance facts on the Compliance tab,
19
+ * and so on. The tab that hosts the fact also shows Save and Cancel, so the
20
+ * decision stays next to the facts. A key with no fact row anywhere renders
21
+ * nothing: fold such a value into the control of the fact that carries it. A key listed here also gets an "Add {fact}" action wherever its
22
+ * fact is shown as missing.
23
+ */
24
+ readonly fields?: Partial<Record<FactKey, FactFieldNode>>;
25
+ /** A free block rendered below the facts while editing (e.g. a picker). */
26
+ readonly editor?: React.ReactNode;
27
+ /** Server errors per field, rendered under the field's control. */
28
+ readonly fieldErrors?: Partial<Record<FactKey, string>>;
29
+ /**
30
+ * Persist the draft. Resolve to close the edit mode; REJECT to keep it open
31
+ * (the error's message is shown inline unless `error` is set). The consumer
32
+ * owns the draft state and the mutation.
33
+ */
34
+ readonly onSave: () => void | Promise<void>;
35
+ /** Discard the draft (Cancel, Escape, or Discard in the unsaved-changes guard). */
36
+ readonly onCancel?: () => void;
37
+ /** Whether the draft differs from the saved value. Drives the guard and the Save button. */
38
+ readonly isDirty?: boolean;
39
+ /** `false` blocks Save (client-side validation). Default `true`. */
40
+ readonly canSave?: boolean;
41
+ /** A section-level error (e.g. mapped from a server response). Overrides a rejection's message. */
42
+ readonly error?: string | null;
43
+ }
44
+ /**
45
+ * The state machine of one editable section, shared by every tab that hosts
46
+ * its controls (the product requirements span Overview and Compliance, so two
47
+ * footers drive one session). Lives in `OpportunityFactSheet`.
48
+ */
49
+ export interface EditSession {
50
+ readonly config: OpportunityFactSectionEditing | undefined;
51
+ readonly saving: boolean;
52
+ readonly error: string | null;
53
+ readonly guardOpen: boolean;
54
+ readonly justSaved: boolean;
55
+ /** Tabs where the user changed a control of this draft since edit mode opened. */
56
+ readonly touchedTabs: readonly string[];
57
+ touch(tabId: string): void;
58
+ readonly dirty: boolean;
59
+ readonly saveBlocked: boolean;
60
+ /** Whether any shell has moved focus on entering edit mode yet. */
61
+ hasFocused(): boolean;
62
+ markFocused(): void;
63
+ readonly failTick: number;
64
+ save(): Promise<void>;
65
+ requestCancel(): void;
66
+ keepEditing(): void;
67
+ discard(): void;
68
+ /** Asks before leaving (e.g. to another tab); runs `proceed` after a discard. */
69
+ requestLeave(proceed: () => void): void;
70
+ }
71
+ export declare function useEditSession({ config, labels, isEditing, onClose, }: {
72
+ config: OpportunityFactSectionEditing | undefined;
73
+ labels: OpportunityFactEditLabels;
74
+ isEditing: boolean;
75
+ onClose: () => void;
76
+ }): EditSession;
77
+ export interface EditableSectionProps {
78
+ readonly id: OpportunityEditableSectionId;
79
+ readonly session: EditSession;
80
+ readonly heading: string;
81
+ readonly headingAs: `h${2 | 3 | 4 | 5 | 6}`;
82
+ readonly labels: OpportunityFactEditLabels;
83
+ readonly isEditing: boolean;
84
+ /** The shell's tab is the visible one; focus work and the guard wait for this. */
85
+ readonly active: boolean;
86
+ /** The tab this shell sits on (its id), to attribute edits to a tab. */
87
+ readonly tabId: string;
88
+ /** Tab names by id, for the "also saves" note. */
89
+ readonly tabLabels: Readonly<Record<string, string>>;
90
+ /**
91
+ * A continuation of a section whose Edit button lives elsewhere (the
92
+ * requirements' compliance facts): no Edit button, no focus return, same
93
+ * Save and Cancel.
94
+ */
95
+ readonly secondary?: boolean;
96
+ /** False hides the Edit button (no editor, or the section is locked). */
97
+ readonly canEdit?: boolean;
98
+ /** True while a different section is being edited: this Edit button is disabled. */
99
+ readonly editBlocked?: boolean;
100
+ readonly focusKey?: FactKey;
101
+ readonly onEdit?: () => void;
102
+ /** Rendered between the heading and the body when the section is locked. */
103
+ readonly lockedPanel?: React.ReactNode;
104
+ /** Moves focus to the locked panel when edit mode ends with no Edit button (the lock arrived); returns whether it did. */
105
+ readonly focusLockedPanel?: () => boolean;
106
+ /** The read-only facts (and, in edit mode, the in-row controls). */
107
+ readonly children: React.ReactNode;
108
+ }
109
+ export declare function EditableSection({ id, session, heading, headingAs, labels, isEditing, active, tabId, tabLabels, secondary, canEdit, editBlocked, focusKey, onEdit, lockedPanel, focusLockedPanel, children, }: EditableSectionProps): import("react/jsx-runtime").JSX.Element;
110
+ export interface LockedTermsPanelProps {
111
+ readonly labels: OpportunityFactEditLabels;
112
+ readonly reason?: OpportunityTermsLockedReason;
113
+ readonly onReviewOffers?: () => void;
114
+ /** Called with the panel element on mount and null on unmount. */
115
+ readonly onMount?: (node: HTMLDivElement | null) => void;
116
+ }
117
+ /** CEL-2167 locked state: explains the lock, never offers a workaround. */
118
+ export declare function LockedTermsPanel({ labels, reason, onReviewOffers, onMount, }: LockedTermsPanelProps): import("react/jsx-runtime").JSX.Element;
119
+ //# sourceMappingURL=editable-section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editable-section.d.ts","sourceRoot":"","sources":["../../src/opportunity-facts/editable-section.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAcvC,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3F,MAAM,WAAW,6BAA6B;IAC5C;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAC1D,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,mGAAmG;IACnG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAiBD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,6BAA6B,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,mEAAmE;IACnE,UAAU,IAAI,OAAO,CAAC;IACtB,WAAW,IAAI,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,IAAI,IAAI,CAAC;IACtB,WAAW,IAAI,IAAI,CAAC;IACpB,OAAO,IAAI,IAAI,CAAC;IAChB,iFAAiF;IACjF,YAAY,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;IACD,MAAM,EAAE,6BAA6B,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,GAAG,WAAW,CA6Gd;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,4BAA4B,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,0HAA0H;IAC1H,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC;AAED,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,SAAS,EACT,SAAiB,EACjB,OAAe,EACf,WAAmB,EACnB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,QAAQ,GACT,EAAE,oBAAoB,2CAkPtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1D;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,MAAM,EACN,cAAc,EACd,OAAO,GACR,EAAE,qBAAqB,2CA6BvB"}
@@ -0,0 +1,267 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Loader2, Lock } from "lucide-react";
4
+ import { Button } from "../components/button.js";
5
+ import { Eyebrow } from "../components/eyebrow.js";
6
+ import { cn } from "../lib/utils.js";
7
+ const FOCUSABLE = 'input:not([disabled]):not([type="hidden"]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),[tabindex]:not([tabindex="-1"])';
8
+ function firstFocusable(root) {
9
+ if (!root)
10
+ return null;
11
+ if (root instanceof HTMLElement && root.matches(FOCUSABLE))
12
+ return root;
13
+ return root.querySelector(FOCUSABLE);
14
+ }
15
+ function errorMessage(error, fallback) {
16
+ if (error instanceof Error && error.message.trim())
17
+ return error.message;
18
+ if (typeof error === "string" && error.trim())
19
+ return error;
20
+ return fallback;
21
+ }
22
+ export function useEditSession({ config, labels, isEditing, onClose, }) {
23
+ const mountedRef = React.useRef(true);
24
+ const focusDoneRef = React.useRef(false);
25
+ const pendingLeaveRef = React.useRef(null);
26
+ const hasFocused = React.useCallback(() => focusDoneRef.current, []);
27
+ const markFocused = React.useCallback(() => {
28
+ focusDoneRef.current = true;
29
+ }, []);
30
+ const [saving, setSaving] = React.useState(false);
31
+ const [saveError, setSaveError] = React.useState(null);
32
+ const [failTick, setFailTick] = React.useState(0);
33
+ const [guardOpen, setGuardOpen] = React.useState(false);
34
+ const [justSaved, setJustSaved] = React.useState(false);
35
+ const [touchedTabs, setTouchedTabs] = React.useState([]);
36
+ const touch = React.useCallback((tabId) => {
37
+ setTouchedTabs((prev) => (prev.includes(tabId) ? prev : [...prev, tabId]));
38
+ }, []);
39
+ React.useEffect(() => {
40
+ mountedRef.current = true;
41
+ return () => {
42
+ mountedRef.current = false;
43
+ };
44
+ }, []);
45
+ React.useEffect(() => {
46
+ /* eslint-disable @eslint-react/set-state-in-effect -- edit mode is controlled from outside; the transient state resets when it flips */
47
+ if (isEditing) {
48
+ setJustSaved(false);
49
+ return;
50
+ }
51
+ focusDoneRef.current = false;
52
+ pendingLeaveRef.current = null;
53
+ setSaveError(null);
54
+ setGuardOpen(false);
55
+ setSaving(false);
56
+ setTouchedTabs([]);
57
+ /* eslint-enable @eslint-react/set-state-in-effect */
58
+ }, [isEditing]);
59
+ const dirty = config?.isDirty === true;
60
+ const saveBlocked = saving || config?.isDirty === false || config?.canSave === false;
61
+ const discard = React.useCallback(() => {
62
+ const proceed = pendingLeaveRef.current;
63
+ pendingLeaveRef.current = null;
64
+ config?.onCancel?.();
65
+ onClose();
66
+ proceed?.();
67
+ }, [config, onClose]);
68
+ const requestCancel = React.useCallback(() => {
69
+ if (saving)
70
+ return;
71
+ if (dirty)
72
+ setGuardOpen(true);
73
+ else
74
+ discard();
75
+ }, [dirty, discard, saving]);
76
+ const requestLeave = React.useCallback((proceed) => {
77
+ if (saving)
78
+ return;
79
+ pendingLeaveRef.current = proceed;
80
+ setGuardOpen(true);
81
+ }, [saving]);
82
+ const keepEditing = React.useCallback(() => {
83
+ pendingLeaveRef.current = null;
84
+ setGuardOpen(false);
85
+ }, []);
86
+ const save = React.useCallback(async () => {
87
+ if (!config || saveBlocked)
88
+ return;
89
+ setSaving(true);
90
+ setSaveError(null);
91
+ try {
92
+ await config.onSave();
93
+ }
94
+ catch (error) {
95
+ if (!mountedRef.current)
96
+ return;
97
+ setSaving(false);
98
+ setSaveError(errorMessage(error, labels.saveFailed));
99
+ setFailTick((n) => n + 1);
100
+ return;
101
+ }
102
+ if (!mountedRef.current)
103
+ return;
104
+ setSaving(false);
105
+ setJustSaved(true);
106
+ onClose();
107
+ }, [config, labels.saveFailed, onClose, saveBlocked]);
108
+ return {
109
+ config,
110
+ saving,
111
+ error: config?.error ?? saveError,
112
+ guardOpen,
113
+ justSaved,
114
+ touchedTabs,
115
+ touch,
116
+ dirty,
117
+ saveBlocked,
118
+ hasFocused,
119
+ markFocused,
120
+ failTick,
121
+ save,
122
+ requestCancel,
123
+ keepEditing,
124
+ discard,
125
+ requestLeave,
126
+ };
127
+ }
128
+ export function EditableSection({ id, session, heading, headingAs, labels, isEditing, active, tabId, tabLabels, secondary = false, canEdit = false, editBlocked = false, focusKey, onEdit, lockedPanel, focusLockedPanel, children, }) {
129
+ const rootRef = React.useRef(null);
130
+ const editButtonRef = React.useRef(null);
131
+ const alertRef = React.useRef(null);
132
+ const keepEditingRef = React.useRef(null);
133
+ const guardOriginRef = React.useRef(null);
134
+ const wasEditingRef = React.useRef(false);
135
+ const [notice, setNotice] = React.useState(null);
136
+ const { saving, guardOpen, failTick, hasFocused, markFocused } = session;
137
+ // Leaving edit mode returns focus to the Edit button; when there is none
138
+ // (the lock arrived mid-edit) focus moves to the locked panel and the
139
+ // arrival is announced.
140
+ React.useEffect(() => {
141
+ if (secondary)
142
+ return;
143
+ if (isEditing) {
144
+ wasEditingRef.current = true;
145
+ return;
146
+ }
147
+ if (!wasEditingRef.current)
148
+ return;
149
+ wasEditingRef.current = false;
150
+ if (editButtonRef.current) {
151
+ editButtonRef.current.focus();
152
+ }
153
+ else if (focusLockedPanel?.()) {
154
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- announce the externally triggered lock
155
+ setNotice(labels.locked.arrivedWhileEditing);
156
+ }
157
+ }, [isEditing, secondary, focusLockedPanel, labels.locked.arrivedWhileEditing]);
158
+ // The lock announcement is only true while the panel is shown and nothing
159
+ // newer has been announced: reopening edit mode or leaving the locked state
160
+ // retires it, so it can never mask a later "Changes saved".
161
+ const lockedShown = lockedPanel != null;
162
+ React.useEffect(() => {
163
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- retire a stale announcement when the state it described ends
164
+ if (isEditing || !lockedShown)
165
+ setNotice(null);
166
+ }, [isEditing, lockedShown]);
167
+ // Entering edit mode moves focus (once, on whichever tab hosts the target):
168
+ // the requested field, else the first control of the primary section. Waits
169
+ // for the tab to be visible and for lazily rendered controls (a few frames).
170
+ React.useEffect(() => {
171
+ if (!isEditing || !active || hasFocused())
172
+ return;
173
+ let frame = 0;
174
+ let attempts = 0;
175
+ const attempt = () => {
176
+ const root = rootRef.current;
177
+ if (!root || hasFocused())
178
+ return;
179
+ const byKey = focusKey
180
+ ? firstFocusable(root.querySelector(`[data-fact-key="${focusKey}"]`))
181
+ : null;
182
+ let target = byKey;
183
+ // Only the primary section falls back to its first control, and only
184
+ // when no field was asked for or the asked-for one never appeared.
185
+ if (!target && !secondary && (!focusKey || attempts >= 19)) {
186
+ target = firstFocusable(root.querySelector('[data-slot="fact-edit-body"]'));
187
+ }
188
+ if (target) {
189
+ target.focus();
190
+ markFocused();
191
+ return;
192
+ }
193
+ attempts += 1;
194
+ if (attempts < 20)
195
+ frame = requestAnimationFrame(attempt);
196
+ };
197
+ attempt();
198
+ return () => cancelAnimationFrame(frame);
199
+ }, [isEditing, active, focusKey, secondary, hasFocused, markFocused]);
200
+ // A failed save puts focus on the first invalid field, else on the alert.
201
+ React.useEffect(() => {
202
+ if (failTick === 0 || !active)
203
+ return;
204
+ const root = rootRef.current;
205
+ const invalid = root?.querySelector('[aria-invalid="true"]');
206
+ (invalid ?? alertRef.current)?.focus();
207
+ }, [failTick, active]);
208
+ const showGuard = guardOpen && active;
209
+ React.useEffect(() => {
210
+ if (showGuard) {
211
+ guardOriginRef.current ??=
212
+ document.activeElement instanceof HTMLElement ? document.activeElement : null;
213
+ keepEditingRef.current?.focus();
214
+ }
215
+ }, [showGuard]);
216
+ const keepEditing = () => {
217
+ session.keepEditing();
218
+ guardOriginRef.current?.focus();
219
+ guardOriginRef.current = null;
220
+ };
221
+ const onKeyDown = (event) => {
222
+ if (event.key !== "Escape" || !isEditing || event.defaultPrevented)
223
+ return;
224
+ const target = event.target;
225
+ // Escape inside an open popup (select, combobox, popover) closes that popup only.
226
+ if (target instanceof Element &&
227
+ target.closest('[aria-expanded="true"],[role="listbox"],[role="dialog"],[role="menu"]')) {
228
+ return;
229
+ }
230
+ event.preventDefault();
231
+ if (saving)
232
+ return;
233
+ if (guardOpen)
234
+ keepEditing();
235
+ else {
236
+ guardOriginRef.current =
237
+ document.activeElement instanceof HTMLElement ? document.activeElement : null;
238
+ session.requestCancel();
239
+ }
240
+ };
241
+ const shownError = session.error;
242
+ const otherTabs = session.touchedTabs
243
+ .filter((touched) => touched !== tabId)
244
+ .map((touched) => tabLabels[touched] ?? touched);
245
+ const alsoSaves = otherTabs.length > 0 ? labels.saveAlsoOn(otherTabs.join(", ")) : null;
246
+ const showEdit = !secondary && canEdit && !isEditing;
247
+ const legend = labels.editSection(labels.section[id]);
248
+ return (_jsxs("div", { ref: rootRef, "data-slot": "opportunity-fact-edit-section", "data-section": id, "data-editing": isEditing ? "true" : undefined, onKeyDown: onKeyDown, onInput: () => {
249
+ if (isEditing)
250
+ session.touch(tabId);
251
+ }, className: cn("flex flex-col gap-2", isEditing && "rounded-lg border border-border p-4"), children: [!secondary ? (_jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: session.justSaved && !isEditing ? labels.saved : (notice ?? "") })) : null, _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(Eyebrow, { as: headingAs, size: "xs", children: heading }), showEdit ? (_jsx(Button, { ref: editButtonRef, type: "button", outline: true, "aria-label": legend, "aria-disabled": editBlocked || undefined, onClick: () => {
252
+ if (!editBlocked)
253
+ onEdit?.();
254
+ }, "data-slot": "opportunity-fact-edit-button", children: labels.edit })) : null] }), lockedPanel ?? null, _jsxs("fieldset", { disabled: saving, "data-slot": "fact-edit-body", className: "m-0 flex min-w-0 flex-col gap-2 border-0 p-0", children: [_jsx("legend", { className: "sr-only", children: legend }), children] }), isEditing && active && session.config ? (_jsxs("div", { className: "flex flex-col gap-3 pt-2", children: [_jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: saving ? labels.saving : "" }), shownError ? (_jsx("div", { ref: alertRef, role: "alert", tabIndex: -1, "data-slot": "opportunity-fact-edit-error", className: "rounded-md border border-[var(--tone-danger-border)] bg-[var(--tone-danger-soft)] px-3 py-2 text-sm/6 text-[var(--tone-danger-fg)]", children: shownError })) : null, showGuard ? (_jsxs("div", { role: "alert", "data-slot": "opportunity-fact-edit-guard", className: "flex flex-col gap-3 rounded-md border border-border bg-muted px-3 py-3", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("p", { className: "text-sm/6 font-medium text-foreground", children: labels.unsaved.title }), _jsx("p", { className: "text-sm/6 text-muted-foreground", children: labels.unsaved.body })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Button, { ref: keepEditingRef, type: "button", onClick: keepEditing, children: labels.unsaved.keepEditing }), _jsx(Button, { type: "button", outline: true, onClick: session.discard, children: labels.unsaved.discard })] })] })) : (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Button, { type: "button", "aria-disabled": session.saveBlocked || undefined, "aria-busy": saving || undefined, onClick: () => void session.save(), "data-slot": "opportunity-fact-edit-save", children: [saving ? (_jsx(Loader2, { "aria-hidden": true, className: "size-4 animate-spin motion-reduce:animate-none" })) : null, saving ? labels.saving : labels.saveSection(labels.section[id])] }), _jsx(Button, { type: "button", outline: true, "aria-disabled": saving || undefined, onClick: () => {
255
+ guardOriginRef.current =
256
+ document.activeElement instanceof HTMLElement ? document.activeElement : null;
257
+ session.requestCancel();
258
+ }, "data-slot": "opportunity-fact-edit-cancel", children: labels.cancel })] })), alsoSaves ? (_jsx("p", { "data-slot": "opportunity-fact-edit-also-saves", className: "text-xs/5 text-muted-foreground", children: alsoSaves })) : null] })) : null] }));
259
+ }
260
+ /** CEL-2167 locked state: explains the lock, never offers a workaround. */
261
+ export function LockedTermsPanel({ labels, reason, onReviewOffers, onMount, }) {
262
+ // An unknown code (the union is closed at compile time, not at runtime)
263
+ // falls back to the generic copy; a raw code never renders.
264
+ const reasonCopy = (reason && labels.locked.reasons[reason]) || labels.locked.reason;
265
+ return (_jsxs("div", { ref: onMount, role: "status", tabIndex: -1, "data-slot": "opportunity-fact-terms-locked", className: "flex items-start gap-3 rounded-md border border-border bg-muted px-3 py-3 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/70", children: [_jsx(Lock, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-muted-foreground" }), _jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("p", { className: "text-sm/6 font-medium text-foreground", children: labels.locked.title }), _jsx("p", { className: "text-sm/6 text-muted-foreground", children: reasonCopy }), _jsx("p", { className: "text-sm/6 text-muted-foreground", children: labels.locked.sentOffersNote })] }), onReviewOffers ? (_jsx("div", { children: _jsx(Button, { type: "button", outline: true, onClick: onReviewOffers, children: labels.locked.reviewOffers }) })) : null] })] }));
266
+ }
267
+ //# sourceMappingURL=editable-section.js.map