@cellarnode/ui 0.12.14 → 0.13.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/__storybook__/mock-data.d.ts.map +1 -1
- package/dist/__storybook__/mock-data.js +0 -1
- package/dist/__storybook__/mock-data.js.map +1 -1
- package/dist/chat/delivery-indicator.d.ts +13 -3
- package/dist/chat/delivery-indicator.d.ts.map +1 -1
- package/dist/chat/delivery-indicator.js +13 -5
- package/dist/chat/delivery-indicator.js.map +1 -1
- package/dist/chat/global-chat-widget.stories.d.ts.map +1 -1
- package/dist/chat/global-chat-widget.stories.js +0 -1
- package/dist/chat/global-chat-widget.stories.js.map +1 -1
- package/dist/chat/types.d.ts +0 -2
- package/dist/chat/types.d.ts.map +1 -1
- package/dist/chat/unified-timeline.stories.d.ts.map +1 -1
- package/dist/chat/unified-timeline.stories.js +0 -2
- package/dist/chat/unified-timeline.stories.js.map +1 -1
- package/dist/chat/use-chat.d.ts.map +1 -1
- package/dist/chat/use-chat.js +0 -1
- package/dist/chat/use-chat.js.map +1 -1
- package/dist/components/opportunity-brief.d.ts +23 -0
- package/dist/components/opportunity-brief.d.ts.map +1 -0
- package/dist/components/opportunity-brief.js +13 -0
- package/dist/components/opportunity-brief.js.map +1 -0
- package/dist/components/opportunity-brief.stories.d.ts +17 -0
- package/dist/components/opportunity-brief.stories.d.ts.map +1 -0
- package/dist/components/opportunity-brief.stories.js +38 -0
- package/dist/components/opportunity-brief.stories.js.map +1 -0
- package/dist/components/picker-empty-guidance.d.ts +20 -0
- package/dist/components/picker-empty-guidance.d.ts.map +1 -0
- package/dist/components/picker-empty-guidance.js +14 -0
- package/dist/components/picker-empty-guidance.js.map +1 -0
- package/dist/components/picker-empty-guidance.stories.d.ts +20 -0
- package/dist/components/picker-empty-guidance.stories.d.ts.map +1 -0
- package/dist/components/picker-empty-guidance.stories.js +33 -0
- package/dist/components/picker-empty-guidance.stories.js.map +1 -0
- package/dist/components/reason-pill.d.ts +17 -0
- package/dist/components/reason-pill.d.ts.map +1 -0
- package/dist/components/reason-pill.js +20 -0
- package/dist/components/reason-pill.js.map +1 -0
- package/dist/components/reason-pill.stories.d.ts +18 -0
- package/dist/components/reason-pill.stories.d.ts.map +1 -0
- package/dist/components/reason-pill.stories.js +18 -0
- package/dist/components/reason-pill.stories.js.map +1 -0
- package/dist/components/score-chip.d.ts +16 -0
- package/dist/components/score-chip.d.ts.map +1 -0
- package/dist/components/score-chip.js +26 -0
- package/dist/components/score-chip.js.map +1 -0
- package/dist/components/score-chip.stories.d.ts +18 -0
- package/dist/components/score-chip.stories.d.ts.map +1 -0
- package/dist/components/score-chip.stories.js +18 -0
- package/dist/components/score-chip.stories.js.map +1 -0
- package/dist/components/variant-picker-dialog.d.ts +38 -32
- package/dist/components/variant-picker-dialog.d.ts.map +1 -1
- package/dist/components/variant-picker-dialog.js +54 -76
- package/dist/components/variant-picker-dialog.js.map +1 -1
- package/dist/components/variant-picker-dialog.stories.d.ts +3 -3
- package/dist/components/variant-picker-dialog.stories.d.ts.map +1 -1
- package/dist/components/variant-picker-dialog.stories.js +133 -92
- package/dist/components/variant-picker-dialog.stories.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ReasonPill } from "./reason-pill";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Picker/ReasonPill",
|
|
5
|
+
component: ReasonPill,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
parameters: { layout: "centered" },
|
|
8
|
+
};
|
|
9
|
+
export default meta;
|
|
10
|
+
export const OkSubtype = { args: { kind: "ok", signal: "subtype", label: "Brandy" } };
|
|
11
|
+
export const OkCountry = { args: { kind: "ok", signal: "country", label: "Spain" } };
|
|
12
|
+
export const WarnAlias = { args: { kind: "warn", signal: "subtype", label: "Aguardiente" } };
|
|
13
|
+
export const MissCountry = { args: { kind: "miss", signal: "country", label: "Spain" } };
|
|
14
|
+
export const Row = {
|
|
15
|
+
args: { kind: "ok", signal: "subtype", label: "Brandy" },
|
|
16
|
+
render: () => (_jsxs("div", { className: "flex flex-wrap gap-1.5 p-4", children: [_jsx(ReasonPill, { kind: "ok", signal: "subtype", label: "Brandy" }), _jsx(ReasonPill, { kind: "ok", signal: "country", label: "Spain" }), _jsx(ReasonPill, { kind: "warn", signal: "subtype", label: "Aguardiente" }), _jsx(ReasonPill, { kind: "ok", signal: "region", label: "Rioja" }), _jsx(ReasonPill, { kind: "miss", signal: "capacity", label: "low capacity" }), _jsx(ReasonPill, { kind: "miss", signal: "price", label: "below price band" })] })),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=reason-pill.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reason-pill.stories.js","sourceRoot":"","sources":["../../src/components/reason-pill.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,UAAU;IACrB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;CACD,CAAC;AAEpC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,SAAS,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC7F,MAAM,CAAC,MAAM,SAAS,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAC5F,MAAM,CAAC,MAAM,SAAS,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC;AACpG,MAAM,CAAC,MAAM,WAAW,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAEhG,MAAM,CAAC,MAAM,GAAG,GAAU;IACxB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;IACxD,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,UAAU,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,KAAK,EAAC,QAAQ,GAAG,EACxD,KAAC,UAAU,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,KAAK,EAAC,OAAO,GAAG,EACvD,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,KAAK,EAAC,aAAa,GAAG,EAC/D,KAAC,UAAU,IAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO,GAAG,EACtD,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,UAAU,EAAC,KAAK,EAAC,cAAc,GAAG,EACjE,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAC,kBAAkB,GAAG,IAC9D,CACP;CACF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ScoreBand = "top" | "good" | "weak";
|
|
2
|
+
export interface ScoreChipProps {
|
|
3
|
+
/** 0–100 score. Rounded for display. */
|
|
4
|
+
score: number;
|
|
5
|
+
/** Explicit band override. When omitted, derived from the score. */
|
|
6
|
+
band?: ScoreBand;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Compact 0–100 match-score pill, band-colored by quality.
|
|
11
|
+
*
|
|
12
|
+
* Reused by the producer journey picker and the importer AI-matches view
|
|
13
|
+
* — anywhere we need to surface a numeric "fit" score next to a row.
|
|
14
|
+
*/
|
|
15
|
+
export declare function ScoreChip({ score, band, className }: ScoreChipProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=score-chip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-chip.d.ts","sourceRoot":"","sources":["../../src/components/score-chip.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,cAAc,2CAenE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
function deriveBand(score) {
|
|
4
|
+
if (score >= 80)
|
|
5
|
+
return "top";
|
|
6
|
+
if (score >= 50)
|
|
7
|
+
return "good";
|
|
8
|
+
return "weak";
|
|
9
|
+
}
|
|
10
|
+
const bandClasses = {
|
|
11
|
+
top: "bg-primary text-primary-foreground",
|
|
12
|
+
good: "bg-warning text-warning-foreground",
|
|
13
|
+
weak: "bg-muted text-muted-foreground",
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Compact 0–100 match-score pill, band-colored by quality.
|
|
17
|
+
*
|
|
18
|
+
* Reused by the producer journey picker and the importer AI-matches view
|
|
19
|
+
* — anywhere we need to surface a numeric "fit" score next to a row.
|
|
20
|
+
*/
|
|
21
|
+
export function ScoreChip({ score, band, className }) {
|
|
22
|
+
const b = band ?? deriveBand(score);
|
|
23
|
+
const display = Math.max(0, Math.min(100, Math.round(score)));
|
|
24
|
+
return (_jsx("span", { className: cn("inline-flex shrink-0 items-center justify-center rounded-full px-2 py-0.5 text-[10px] font-bold leading-none tabular-nums", bandClasses[b], className), "aria-label": `Match score ${display} of 100`, children: display }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=score-chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-chip.js","sourceRoot":"","sources":["../../src/components/score-chip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAA8B;IAC7C,GAAG,EAAE,oCAAoC;IACzC,IAAI,EAAE,oCAAoC;IAC1C,IAAI,EAAE,gCAAgC;CACvC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAkB;IAClE,MAAM,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,2HAA2H,EAC3H,WAAW,CAAC,CAAC,CAAC,EACd,SAAS,CACV,gBACW,eAAe,OAAO,SAAS,YAE1C,OAAO,GACH,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { ScoreChip } from "./score-chip";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof ScoreChip;
|
|
6
|
+
tags: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Top: Story;
|
|
14
|
+
export declare const Good: Story;
|
|
15
|
+
export declare const Weak: Story;
|
|
16
|
+
export declare const ExplicitBand: Story;
|
|
17
|
+
export declare const Range: Story;
|
|
18
|
+
//# sourceMappingURL=score-chip.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-chip.stories.d.ts","sourceRoot":"","sources":["../../src/components/score-chip.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,QAAA,MAAM,IAAI;;;;;;;CAKwB,CAAC;AAEnC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,GAAG,EAAE,KAA+B,CAAC;AAClD,eAAO,MAAM,IAAI,EAAE,KAA+B,CAAC;AACnD,eAAO,MAAM,IAAI,EAAE,KAA+B,CAAC;AACnD,eAAO,MAAM,YAAY,EAAE,KAA4C,CAAC;AAExE,eAAO,MAAM,KAAK,EAAE,KAYnB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ScoreChip } from "./score-chip";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Picker/ScoreChip",
|
|
5
|
+
component: ScoreChip,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
parameters: { layout: "centered" },
|
|
8
|
+
};
|
|
9
|
+
export default meta;
|
|
10
|
+
export const Top = { args: { score: 92 } };
|
|
11
|
+
export const Good = { args: { score: 68 } };
|
|
12
|
+
export const Weak = { args: { score: 22 } };
|
|
13
|
+
export const ExplicitBand = { args: { score: 50, band: "top" } };
|
|
14
|
+
export const Range = {
|
|
15
|
+
args: { score: 0 },
|
|
16
|
+
render: () => (_jsx("div", { className: "flex items-center gap-2 p-4", children: [100, 92, 80, 79, 60, 50, 49, 22, 0].map((s) => (_jsxs("div", { className: "flex flex-col items-center gap-1", children: [_jsx(ScoreChip, { score: s }), _jsx("span", { className: "text-[10px] text-muted-foreground", children: s })] }, s))) })),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=score-chip.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score-chip.stories.js","sourceRoot":"","sources":["../../src/components/score-chip.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;CACF,CAAC;AAEnC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,GAAG,GAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,IAAI,GAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,IAAI,GAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;AAExE,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;IAClB,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,cAAK,SAAS,EAAC,6BAA6B,YACzC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC/C,eAAa,SAAS,EAAC,kCAAkC,aACvD,KAAC,SAAS,IAAC,KAAK,EAAE,CAAC,GAAI,EACvB,eAAM,SAAS,EAAC,mCAAmC,YAAE,CAAC,GAAQ,KAFtD,CAAC,CAGL,CACP,CAAC,GACE,CACP;CACF,CAAC"}
|
|
@@ -1,49 +1,55 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { type OpportunityBriefChip } from "./opportunity-brief";
|
|
2
|
+
import { type ReasonPillKind, type ReasonPillSignal } from "./reason-pill";
|
|
3
|
+
import { type ScoreBand } from "./score-chip";
|
|
4
|
+
/** A pre-ranked variant row. Host builds this from server response. */
|
|
5
|
+
export interface ScoredVariantDisplay {
|
|
3
6
|
id: string;
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
beverageId: string;
|
|
8
|
+
beverageName: string;
|
|
9
|
+
vintage?: number | string | null;
|
|
10
|
+
packaging?: string | null;
|
|
11
|
+
containerVolume?: string | number | null;
|
|
6
12
|
category?: string | null;
|
|
7
13
|
subtype?: string | null;
|
|
8
|
-
|
|
14
|
+
countryOfOrigin?: string | null;
|
|
15
|
+
region?: string | null;
|
|
16
|
+
score: number;
|
|
17
|
+
band: ScoreBand;
|
|
18
|
+
reasons: {
|
|
19
|
+
kind: ReasonPillKind;
|
|
20
|
+
signal: ReasonPillSignal;
|
|
21
|
+
label: string;
|
|
22
|
+
}[];
|
|
9
23
|
}
|
|
10
|
-
/** Opportunity context shown as a banner inside the picker. */
|
|
11
24
|
export interface VariantPickerOpportunityContext {
|
|
12
25
|
name: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
26
|
+
buyerName?: string | null;
|
|
27
|
+
chips: OpportunityBriefChip[];
|
|
28
|
+
}
|
|
29
|
+
export interface VariantPickerEmptyGuidance {
|
|
30
|
+
categoryLabel: string;
|
|
31
|
+
createLabel: string;
|
|
17
32
|
}
|
|
18
33
|
export interface VariantPickerDialogProps {
|
|
19
|
-
/** Whether the dialog is open. */
|
|
20
34
|
open: boolean;
|
|
21
|
-
/** Called when the dialog should close. */
|
|
22
35
|
onClose: () => void;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
36
|
+
onSelect: (variantId: string) => void;
|
|
37
|
+
/** When provided + goodFits empty, renders PickerEmptyGuidance with this callback on the primary CTA. */
|
|
38
|
+
onCreateNew?: () => void;
|
|
39
|
+
/** Skip to empty draft. Defaults to onClose when omitted. */
|
|
26
40
|
onSkip?: () => void;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
isLoading?: boolean;
|
|
31
|
-
/** Current search input value (controlled). */
|
|
41
|
+
goodFits: ScoredVariantDisplay[];
|
|
42
|
+
crossCategory: ScoredVariantDisplay[];
|
|
43
|
+
opportunityContext: VariantPickerOpportunityContext;
|
|
32
44
|
searchValue: string;
|
|
33
|
-
/** Called when the search input changes. */
|
|
34
45
|
onSearchChange: (value: string) => void;
|
|
35
|
-
|
|
46
|
+
isLoading?: boolean;
|
|
47
|
+
/** When provided AND goodFits.length === 0 AND onCreateNew is set, renders the empty-state CTAs. */
|
|
48
|
+
emptyGuidance?: VariantPickerEmptyGuidance;
|
|
49
|
+
/** Pre-select a variant on mount (used for the add-product round-trip). */
|
|
50
|
+
initialSelectedId?: string | null;
|
|
36
51
|
title?: string;
|
|
37
|
-
/** Descriptive text below the heading. */
|
|
38
52
|
description?: string;
|
|
39
|
-
/** Optional custom renderer for each variant row. */
|
|
40
|
-
renderVariant?: (variant: VariantPickerItem, isSelected: boolean) => React.ReactNode;
|
|
41
|
-
/** Pre-filter: show matching variants first (same category). */
|
|
42
|
-
filterCategory?: string | null;
|
|
43
|
-
/** Pre-filter: show matching variants first (same subtype). */
|
|
44
|
-
filterSubtype?: string | null;
|
|
45
|
-
/** Opportunity context banner shown at the top of the dialog. */
|
|
46
|
-
opportunityContext?: VariantPickerOpportunityContext | null;
|
|
47
53
|
}
|
|
48
|
-
export declare function VariantPickerDialog(
|
|
54
|
+
export declare function VariantPickerDialog(props: VariantPickerDialogProps): import("react/jsx-runtime").JSX.Element | null;
|
|
49
55
|
//# sourceMappingURL=variant-picker-dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant-picker-dialog.d.ts","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"variant-picker-dialog.d.ts","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzD,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9E;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,kBAAkB,EAAE,+BAA+B,CAAC;IAEpD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oGAAoG;IACpG,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAE3C,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,kDAKlE"}
|
|
@@ -1,97 +1,75 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
|
+
import { ChevronRight, Search } from "lucide-react";
|
|
3
4
|
import { cn } from "../lib/utils";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" }) }));
|
|
9
|
-
}
|
|
10
|
-
function SpinnerIcon(props) {
|
|
11
|
-
return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", ...props, children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }));
|
|
12
|
-
}
|
|
5
|
+
import { OpportunityBrief } from "./opportunity-brief";
|
|
6
|
+
import { PickerEmptyGuidance } from "./picker-empty-guidance";
|
|
7
|
+
import { ReasonPill } from "./reason-pill";
|
|
8
|
+
import { ScoreChip } from "./score-chip";
|
|
13
9
|
// ---------------------------------------------------------------------------
|
|
14
10
|
// Component
|
|
15
11
|
// ---------------------------------------------------------------------------
|
|
16
|
-
export function VariantPickerDialog(
|
|
17
|
-
if (!open)
|
|
12
|
+
export function VariantPickerDialog(props) {
|
|
13
|
+
if (!props.open)
|
|
18
14
|
return null;
|
|
19
|
-
// VariantPickerContent unmounts when open becomes false, so its
|
|
20
|
-
//
|
|
21
|
-
return
|
|
15
|
+
// VariantPickerContent unmounts when open becomes false, so its internal
|
|
16
|
+
// state resets naturally on each open.
|
|
17
|
+
return _jsx(VariantPickerContent, { ...props });
|
|
22
18
|
}
|
|
23
|
-
function VariantPickerContent({
|
|
24
|
-
const [selectedId, setSelectedId] = React.useState(null);
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const otherVariants = hasFilter
|
|
37
|
-
? variants.filter((v) => !matchingVariants.includes(v))
|
|
38
|
-
: [];
|
|
39
|
-
const selectedVariant = variants.find((v) => v.id === selectedId) ?? null;
|
|
40
|
-
const handleSelect = () => {
|
|
41
|
-
if (selectedVariant) {
|
|
42
|
-
onSelect(selectedVariant);
|
|
43
|
-
onClose();
|
|
19
|
+
function VariantPickerContent({ onClose, onSelect, onCreateNew, onSkip, goodFits, crossCategory, opportunityContext, searchValue, onSearchChange, isLoading, emptyGuidance, initialSelectedId, title = "Pick a product for this tender", description = "Ranked by how well each fits the opportunity", }) {
|
|
20
|
+
const [selectedId, setSelectedId] = React.useState(initialSelectedId ?? null);
|
|
21
|
+
// Cross-category starts expanded when there are no good fits, so producers
|
|
22
|
+
// see their portfolio without extra clicks in the empty case.
|
|
23
|
+
const [showCross, setShowCross] = React.useState(goodFits.length === 0);
|
|
24
|
+
// Round-trip auto-select: producer returned from add-product → updates
|
|
25
|
+
// initialSelectedId. Re-sync during render (not in an effect) per React's
|
|
26
|
+
// "storing information from previous renders" pattern.
|
|
27
|
+
const [prevInitialSelectedId, setPrevInitialSelectedId] = React.useState(initialSelectedId);
|
|
28
|
+
if (initialSelectedId !== prevInitialSelectedId) {
|
|
29
|
+
setPrevInitialSelectedId(initialSelectedId);
|
|
30
|
+
if (initialSelectedId) {
|
|
31
|
+
setSelectedId(initialSelectedId);
|
|
44
32
|
}
|
|
45
|
-
}
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
onSkip();
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
33
|
+
}
|
|
34
|
+
const handleBackdrop = (e) => {
|
|
35
|
+
if (e.target === e.currentTarget)
|
|
51
36
|
onClose();
|
|
52
|
-
}
|
|
53
37
|
};
|
|
54
|
-
const
|
|
55
|
-
if (e.
|
|
38
|
+
const handleKey = (e) => {
|
|
39
|
+
if (e.key === "Escape")
|
|
56
40
|
onClose();
|
|
57
|
-
}
|
|
58
41
|
};
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
42
|
+
const confirm = () => {
|
|
43
|
+
if (selectedId) {
|
|
44
|
+
onSelect(selectedId);
|
|
61
45
|
onClose();
|
|
62
46
|
}
|
|
63
47
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const isSelected = variant.id === selectedId;
|
|
68
|
-
return (_jsx("button", { type: "button", onClick: () => setSelectedId(variant.id), className: cn("w-full rounded-xl border px-3.5 py-2.5 text-left transition-colors", isSelected
|
|
69
|
-
? "border-primary/20 bg-primary/5"
|
|
70
|
-
: "border-transparent hover:bg-muted/40"), children: renderVariant ? (renderVariant(variant, isSelected)) : (_jsx(DefaultVariantRow, { variant: variant, isSelected: isSelected })) }, variant.id));
|
|
71
|
-
}), hasFilter && otherVariants.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", onClick: () => setShowOtherProducts((prev) => !prev), className: "mt-2 flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs font-medium text-muted-foreground transition-colors hover:text-foreground", children: [_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", className: cn("size-3 transition-transform", showOtherProducts && "rotate-90"), children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m8.25 4.5 7.5 7.5-7.5 7.5" }) }), "Other products (", otherVariants.length, ")"] }), showOtherProducts &&
|
|
72
|
-
otherVariants.map((variant) => {
|
|
73
|
-
const isSelected = variant.id === selectedId;
|
|
74
|
-
return (_jsx("button", { type: "button", onClick: () => setSelectedId(variant.id), className: cn("w-full rounded-xl border px-3.5 py-2.5 text-left transition-colors", isSelected
|
|
75
|
-
? "border-primary/20 bg-primary/5"
|
|
76
|
-
: "border-transparent hover:bg-muted/40"), children: renderVariant ? (renderVariant(variant, isSelected)) : (_jsx(DefaultVariantRow, { variant: variant, isSelected: isSelected })) }, variant.id));
|
|
77
|
-
})] }))] })) }), _jsx("div", { className: "shrink-0 border-t border-primary/6 px-5 py-3", children: _jsxs("div", { className: "flex items-center justify-end gap-2.5", children: [_jsx("button", { type: "button", onClick: handleSkip, className: cn("rounded-xl px-4 py-2 text-sm/5 font-medium text-muted-foreground", "transition-colors hover:bg-muted/40 hover:text-foreground"), children: "Skip \u2014 empty draft" }), _jsx("button", { type: "button", onClick: handleSelect, disabled: !selectedVariant, className: cn("rounded-xl px-4 py-2 text-sm/5 font-medium text-primary-foreground", "bg-[var(--color-brand-primary,oklch(0.35_0.062_178))]", "transition-colors", selectedVariant
|
|
78
|
-
? "hover:brightness-110"
|
|
79
|
-
: "cursor-not-allowed opacity-50"), children: "Select & pre-fill" })] }) })] })] }));
|
|
48
|
+
const skip = () => (onSkip ? onSkip() : onClose());
|
|
49
|
+
const showEmptyGuidance = goodFits.length === 0 && emptyGuidance != null && onCreateNew != null;
|
|
50
|
+
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", onKeyDown: handleKey, children: [_jsx("div", { className: "absolute inset-0 bg-foreground/20 backdrop-blur-xs", onClick: handleBackdrop, "aria-hidden": true }), _jsxs("div", { role: "dialog", "aria-modal": "true", "aria-label": title, className: cn("glass-panel relative z-10 flex max-h-[min(36rem,85dvh)] w-full max-w-lg flex-col", "rounded-2xl border border-border bg-card p-0 shadow-xl"), children: [_jsxs("div", { className: "shrink-0 px-5 pt-5 pb-3", children: [_jsx("h2", { className: "text-base/6 font-semibold text-foreground", children: title }), _jsx("p", { className: "mt-1 text-sm/5 text-muted-foreground", children: description })] }), _jsx("div", { className: "px-3", children: _jsx(OpportunityBrief, { name: opportunityContext.name, buyerName: opportunityContext.buyerName ?? null, chips: opportunityContext.chips }) }), _jsx("div", { className: "px-3 pt-2", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": true }), _jsx("input", { type: "text", value: searchValue, onChange: (e) => onSearchChange(e.target.value), placeholder: "Search your portfolio...", autoFocus: true, className: "w-full rounded-xl border border-border bg-muted/30 py-2 pl-9 pr-3 text-sm/5 text-foreground placeholder:text-muted-foreground/60 outline-none transition-colors focus:border-primary/40 focus:ring-2 focus:ring-primary/20" })] }) }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-3 pt-3 pb-1", children: isLoading ? (_jsx("div", { className: "flex flex-col items-center justify-center py-12", children: _jsx("p", { className: "text-sm/5 text-muted-foreground", children: "Ranking your portfolio\u2026" }) })) : (_jsxs(_Fragment, { children: [_jsx(SectionLabel, { label: `Good fits · ${goodFits.length}`, emphasis: goodFits.length > 0 }), showEmptyGuidance ? (_jsx(PickerEmptyGuidance, { categoryLabel: emptyGuidance.categoryLabel, createLabel: emptyGuidance.createLabel, onCreate: onCreateNew, onSkip: skip, className: "mt-2" })) : (_jsx("div", { className: "mt-2 flex flex-col gap-1.5", children: goodFits.map((v, i) => (_jsx(VariantRow, { variant: v, isSelected: v.id === selectedId, isTop: i === 0, onSelect: () => setSelectedId(v.id) }, v.id))) })), crossCategory.length > 0 && (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", onClick: () => setShowCross((s) => !s), className: "mt-3 flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-[11px] font-semibold text-muted-foreground transition-colors hover:text-foreground", children: [_jsx(ChevronRight, { className: cn("size-3 transition-transform", showCross && "rotate-90"), "aria-hidden": true }), goodFits.length === 0 ? "Cross-category" : "Other portfolio products", _jsxs("span", { className: "ml-1", children: ["(", crossCategory.length, ")"] })] }), showCross && (_jsx("div", { className: "mt-1.5 flex flex-col gap-1.5 opacity-90", children: crossCategory.map((v) => (_jsx(VariantRow, { variant: v, isSelected: v.id === selectedId, isCrossCategory: true, onSelect: () => setSelectedId(v.id) }, v.id))) }))] }))] })) }), _jsx("div", { className: "shrink-0 border-t border-border px-5 py-3", children: _jsxs("div", { className: "flex items-center justify-end gap-2.5", children: [_jsx("button", { type: "button", onClick: skip, className: "rounded-xl px-4 py-2 text-sm/5 font-medium text-muted-foreground transition-colors hover:bg-muted/40 hover:text-foreground", children: showEmptyGuidance ? "Cancel" : "Skip — empty draft" }), _jsx("button", { type: "button", onClick: confirm, disabled: !selectedId, className: cn("rounded-xl bg-primary px-4 py-2 text-sm/5 font-medium text-primary-foreground transition-[filter]", selectedId ? "hover:brightness-110" : "cursor-not-allowed opacity-50"), children: "Select & pre-fill" })] }) })] })] }));
|
|
80
51
|
}
|
|
81
52
|
// ---------------------------------------------------------------------------
|
|
82
|
-
//
|
|
53
|
+
// Helpers
|
|
83
54
|
// ---------------------------------------------------------------------------
|
|
84
|
-
function
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
55
|
+
function SectionLabel({ label, emphasis }) {
|
|
56
|
+
return (_jsx("p", { className: cn("text-[10px] font-bold uppercase tracking-[0.06em]", emphasis ? "text-primary" : "text-muted-foreground"), children: label }));
|
|
57
|
+
}
|
|
58
|
+
function VariantRow({ variant, isSelected, isTop, isCrossCategory, onSelect, }) {
|
|
59
|
+
const meta = [
|
|
60
|
+
variant.countryOfOrigin,
|
|
61
|
+
variant.containerVolume ? `${variant.containerVolume}` : null,
|
|
62
|
+
variant.vintage != null ? `${variant.vintage}` : null,
|
|
63
|
+
variant.packaging,
|
|
64
|
+
]
|
|
65
|
+
.filter(Boolean)
|
|
66
|
+
.join(" · ");
|
|
67
|
+
return (_jsxs("button", { type: "button", onClick: onSelect, className: cn("flex w-full items-center gap-2.5 rounded-xl border px-3 py-2.5 text-left transition-colors", isSelected
|
|
68
|
+
? "border-primary bg-primary/5"
|
|
69
|
+
: isTop
|
|
70
|
+
? "border-primary/60 shadow-[0_0_0_2px] shadow-primary/10 hover:bg-muted/30"
|
|
71
|
+
: "border-border hover:bg-muted/30"), children: [_jsx("span", { className: cn("size-3.5 shrink-0 rounded-full border-2 transition-colors", isSelected
|
|
72
|
+
? "border-primary bg-primary shadow-[inset_0_0_0_2.5px] shadow-background"
|
|
73
|
+
: "border-muted-foreground/40"), "aria-hidden": true }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("p", { className: "truncate text-[12px] font-semibold text-foreground", children: [variant.beverageName, isTop && !isCrossCategory && (_jsx("span", { className: "ml-1.5 text-[10px] font-medium text-primary", children: "\u00B7 closest fit" })), isCrossCategory && (_jsx("span", { className: "ml-1.5 text-[10px] font-medium text-warning-foreground", children: "\u00B7 different category" }))] }), meta && _jsx("p", { className: "text-[10px] text-muted-foreground", children: meta }), variant.reasons.length > 0 && (_jsx("div", { className: "mt-1 flex flex-wrap gap-1", children: variant.reasons.map((r) => (_jsx(ReasonPill, { kind: r.kind, signal: r.signal, label: r.label }, `${r.kind}-${r.signal}-${r.label}`))) }))] }), _jsx(ScoreChip, { score: variant.score, band: variant.band })] }));
|
|
96
74
|
}
|
|
97
75
|
//# sourceMappingURL=variant-picker-dialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant-picker-dialog.js","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"variant-picker-dialog.js","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ declare const meta: {
|
|
|
10
10
|
};
|
|
11
11
|
export default meta;
|
|
12
12
|
type Story = StoryObj<typeof meta>;
|
|
13
|
-
export declare const
|
|
13
|
+
export declare const WithMatches: Story;
|
|
14
|
+
export declare const NoMatches: Story;
|
|
14
15
|
export declare const Loading: Story;
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const CustomTitle: Story;
|
|
16
|
+
export declare const NoMatchesNoCross: Story;
|
|
17
17
|
//# sourceMappingURL=variant-picker-dialog.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant-picker-dialog.stories.d.ts","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"variant-picker-dialog.stories.d.ts","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EACL,mBAAmB,EAGpB,MAAM,yBAAyB,CAAC;AAEjC,QAAA,MAAM,IAAI;;;;;;;CAKkC,CAAC;AAE7C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAqFnC,eAAO,MAAM,WAAW,EAAE,KAsBzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KA2BvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAcrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAsB9B,CAAC"}
|