@cellarnode/ui 0.12.15 → 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/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
|
@@ -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"}
|
|
@@ -1,136 +1,177 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import { useState
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { fn } from "storybook/test";
|
|
4
|
+
import { VariantPickerDialog, } from "./variant-picker-dialog";
|
|
5
|
+
const meta = {
|
|
6
|
+
title: "Picker/VariantPickerDialog",
|
|
7
|
+
component: VariantPickerDialog,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
parameters: { layout: "fullscreen" },
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
const goodFits = [
|
|
8
13
|
{
|
|
9
14
|
id: "v1",
|
|
10
|
-
|
|
15
|
+
beverageId: "b1",
|
|
16
|
+
beverageName: "Solera Brandy Reserva",
|
|
11
17
|
vintage: 2019,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
packaging: "750ml bottle",
|
|
19
|
+
containerVolume: "750ml",
|
|
20
|
+
category: "spirits",
|
|
21
|
+
subtype: "brandy",
|
|
22
|
+
countryOfOrigin: "Spain",
|
|
23
|
+
region: "Jerez",
|
|
24
|
+
score: 92,
|
|
25
|
+
band: "top",
|
|
26
|
+
reasons: [
|
|
27
|
+
{ kind: "ok", signal: "subtype", label: "Brandy" },
|
|
28
|
+
{ kind: "ok", signal: "country", label: "Spain" },
|
|
29
|
+
{ kind: "ok", signal: "capacity", label: "capacity" },
|
|
30
|
+
],
|
|
15
31
|
},
|
|
16
32
|
{
|
|
17
33
|
id: "v2",
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
beverageId: "b2",
|
|
35
|
+
beverageName: "Oak-aged Aguardiente",
|
|
36
|
+
vintage: 2021,
|
|
37
|
+
packaging: "750ml bottle",
|
|
38
|
+
containerVolume: "750ml",
|
|
39
|
+
category: "spirits",
|
|
40
|
+
subtype: "aguardiente",
|
|
41
|
+
countryOfOrigin: "Portugal",
|
|
42
|
+
region: null,
|
|
43
|
+
score: 65,
|
|
44
|
+
band: "good",
|
|
45
|
+
reasons: [
|
|
46
|
+
{ kind: "warn", signal: "subtype", label: "Aguardiente" },
|
|
47
|
+
{ kind: "ok", signal: "capacity", label: "capacity" },
|
|
48
|
+
{ kind: "miss", signal: "country", label: "Spain" },
|
|
49
|
+
],
|
|
23
50
|
},
|
|
51
|
+
];
|
|
52
|
+
const crossCategory = [
|
|
24
53
|
{
|
|
25
54
|
id: "v3",
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
55
|
+
beverageId: "b3",
|
|
56
|
+
beverageName: "Riesling Late Harvest",
|
|
57
|
+
vintage: 2022,
|
|
58
|
+
packaging: "375ml bottle",
|
|
59
|
+
containerVolume: "375ml",
|
|
60
|
+
category: "wine",
|
|
61
|
+
subtype: "white-wine",
|
|
62
|
+
countryOfOrigin: "Germany",
|
|
63
|
+
region: null,
|
|
64
|
+
score: 22,
|
|
65
|
+
band: "weak",
|
|
66
|
+
reasons: [{ kind: "miss", signal: "subtype", label: "White wine" }],
|
|
31
67
|
},
|
|
32
68
|
{
|
|
33
69
|
id: "v4",
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
70
|
+
beverageId: "b4",
|
|
71
|
+
beverageName: "Pinot Noir 2020",
|
|
72
|
+
vintage: 2020,
|
|
73
|
+
packaging: "750ml bottle",
|
|
74
|
+
containerVolume: "750ml",
|
|
75
|
+
category: "wine",
|
|
76
|
+
subtype: "red-wine",
|
|
77
|
+
countryOfOrigin: "France",
|
|
78
|
+
region: null,
|
|
79
|
+
score: 15,
|
|
80
|
+
band: "weak",
|
|
81
|
+
reasons: [{ kind: "miss", signal: "subtype", label: "Red wine" }],
|
|
39
82
|
},
|
|
40
83
|
];
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const meta = {
|
|
45
|
-
title: "Components/VariantPickerDialog",
|
|
46
|
-
component: VariantPickerDialog,
|
|
47
|
-
tags: ["autodocs"],
|
|
48
|
-
parameters: { layout: "centered" },
|
|
49
|
-
};
|
|
50
|
-
export default meta;
|
|
51
|
-
// ---------------------------------------------------------------------------
|
|
52
|
-
// Interactive (default) story with search filtering
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
|
-
function InteractiveRender() {
|
|
55
|
-
const [open, setOpen] = useState(true);
|
|
56
|
-
const [search, setSearch] = useState("");
|
|
57
|
-
const filtered = useMemo(() => {
|
|
58
|
-
if (!search)
|
|
59
|
-
return mockVariants;
|
|
60
|
-
const q = search.toLowerCase();
|
|
61
|
-
return mockVariants.filter((v) => v.name.toLowerCase().includes(q) ||
|
|
62
|
-
v.beverageName?.toLowerCase().includes(q) ||
|
|
63
|
-
v.category?.toLowerCase().includes(q) ||
|
|
64
|
-
v.subtype?.toLowerCase().includes(q));
|
|
65
|
-
}, [search]);
|
|
66
|
-
return (_jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => setOpen(true), className: "rounded-xl bg-primary px-4 py-2 text-sm font-medium text-primary-foreground", children: "Open picker" }), _jsx(VariantPickerDialog, { open: open, onClose: () => setOpen(false), onSelect: (v) => alert(`Selected: ${v.name} (${v.id})`), variants: filtered, searchValue: search, onSearchChange: setSearch, description: "Choose a product to pre-fill this offer draft." })] }));
|
|
84
|
+
function Wrapper(args) {
|
|
85
|
+
const [search, setSearch] = useState(args.searchValue);
|
|
86
|
+
return (_jsx("div", { className: "min-h-screen bg-background p-6", children: _jsx(VariantPickerDialog, { ...args, searchValue: search, onSearchChange: setSearch }) }));
|
|
67
87
|
}
|
|
68
|
-
export const
|
|
88
|
+
export const WithMatches = {
|
|
89
|
+
render: (args) => _jsx(Wrapper, { ...args }),
|
|
69
90
|
args: {
|
|
70
91
|
open: true,
|
|
71
|
-
variants: mockVariants,
|
|
72
|
-
searchValue: "",
|
|
73
92
|
onClose: () => { },
|
|
74
93
|
onSelect: () => { },
|
|
94
|
+
onSkip: () => { },
|
|
95
|
+
searchValue: "",
|
|
75
96
|
onSearchChange: () => { },
|
|
97
|
+
goodFits,
|
|
98
|
+
crossCategory,
|
|
99
|
+
opportunityContext: {
|
|
100
|
+
name: "brandy spirits · Spain Selection",
|
|
101
|
+
buyerName: "Systembolaget",
|
|
102
|
+
chips: [
|
|
103
|
+
{ label: "Spirits" },
|
|
104
|
+
{ label: "Brandy" },
|
|
105
|
+
{ label: "Spain" },
|
|
106
|
+
{ label: "330 L" },
|
|
107
|
+
],
|
|
108
|
+
},
|
|
76
109
|
},
|
|
77
|
-
render: () => _jsx(InteractiveRender, {}),
|
|
78
110
|
};
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
function LoadingRender() {
|
|
83
|
-
const [search, setSearch] = useState("");
|
|
84
|
-
return (_jsx(VariantPickerDialog, { open: true, onClose: () => { }, onSelect: () => { }, variants: [], isLoading: true, searchValue: search, onSearchChange: setSearch, description: "Fetching your beverage portfolio..." }));
|
|
85
|
-
}
|
|
86
|
-
export const Loading = {
|
|
111
|
+
export const NoMatches = {
|
|
112
|
+
render: (args) => _jsx(Wrapper, { ...args }),
|
|
87
113
|
args: {
|
|
88
114
|
open: true,
|
|
89
|
-
variants: [],
|
|
90
|
-
isLoading: true,
|
|
91
|
-
searchValue: "",
|
|
92
115
|
onClose: () => { },
|
|
93
116
|
onSelect: () => { },
|
|
117
|
+
onSkip: () => { },
|
|
118
|
+
onCreateNew: fn(),
|
|
119
|
+
searchValue: "",
|
|
94
120
|
onSearchChange: () => { },
|
|
121
|
+
goodFits: [],
|
|
122
|
+
crossCategory,
|
|
123
|
+
opportunityContext: {
|
|
124
|
+
name: "brandy spirits · Spain Selection",
|
|
125
|
+
buyerName: "Systembolaget",
|
|
126
|
+
chips: [
|
|
127
|
+
{ label: "Spirits" },
|
|
128
|
+
{ label: "Brandy" },
|
|
129
|
+
{ label: "Spain" },
|
|
130
|
+
{ label: "330 L" },
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
emptyGuidance: {
|
|
134
|
+
categoryLabel: "Spirits · Brandy",
|
|
135
|
+
createLabel: "Create a new brandy product",
|
|
136
|
+
},
|
|
95
137
|
},
|
|
96
|
-
render: () => _jsx(LoadingRender, {}),
|
|
97
138
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
function EmptyRender() {
|
|
102
|
-
const [search, setSearch] = useState("");
|
|
103
|
-
return (_jsx(VariantPickerDialog, { open: true, onClose: () => { }, onSelect: () => { }, variants: [], searchValue: search, onSearchChange: setSearch, title: "Select a product", description: "No variants match your search." }));
|
|
104
|
-
}
|
|
105
|
-
export const Empty = {
|
|
139
|
+
export const Loading = {
|
|
140
|
+
render: (args) => _jsx(Wrapper, { ...args }),
|
|
106
141
|
args: {
|
|
107
142
|
open: true,
|
|
108
|
-
variants: [],
|
|
109
|
-
searchValue: "",
|
|
110
143
|
onClose: () => { },
|
|
111
144
|
onSelect: () => { },
|
|
145
|
+
onSkip: () => { },
|
|
146
|
+
searchValue: "",
|
|
112
147
|
onSearchChange: () => { },
|
|
148
|
+
goodFits: [],
|
|
149
|
+
crossCategory: [],
|
|
150
|
+
opportunityContext: { name: "Loading…", chips: [] },
|
|
151
|
+
isLoading: true,
|
|
113
152
|
},
|
|
114
|
-
render: () => _jsx(EmptyRender, {}),
|
|
115
153
|
};
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
// ---------------------------------------------------------------------------
|
|
119
|
-
function CustomTitleRender() {
|
|
120
|
-
const [search, setSearch] = useState("");
|
|
121
|
-
return (_jsx(VariantPickerDialog, { open: true, onClose: () => { }, onSelect: (v) => alert(`Selected: ${v.name}`), variants: mockVariants, searchValue: search, onSearchChange: setSearch, title: "Attach a beverage variant", description: "This will link your product to the selected opportunity." }));
|
|
122
|
-
}
|
|
123
|
-
export const CustomTitle = {
|
|
154
|
+
export const NoMatchesNoCross = {
|
|
155
|
+
render: (args) => _jsx(Wrapper, { ...args }),
|
|
124
156
|
args: {
|
|
125
157
|
open: true,
|
|
126
|
-
variants: mockVariants,
|
|
127
|
-
searchValue: "",
|
|
128
158
|
onClose: () => { },
|
|
129
159
|
onSelect: () => { },
|
|
160
|
+
onSkip: () => { },
|
|
161
|
+
onCreateNew: fn(),
|
|
162
|
+
searchValue: "",
|
|
130
163
|
onSearchChange: () => { },
|
|
131
|
-
|
|
132
|
-
|
|
164
|
+
goodFits: [],
|
|
165
|
+
crossCategory: [],
|
|
166
|
+
opportunityContext: {
|
|
167
|
+
name: "Fresh producer — empty portfolio",
|
|
168
|
+
buyerName: "Systembolaget",
|
|
169
|
+
chips: [{ label: "Spirits" }, { label: "Brandy" }],
|
|
170
|
+
},
|
|
171
|
+
emptyGuidance: {
|
|
172
|
+
categoryLabel: "Spirits · Brandy",
|
|
173
|
+
createLabel: "Create a new brandy product",
|
|
174
|
+
},
|
|
133
175
|
},
|
|
134
|
-
render: () => _jsx(CustomTitleRender, {}),
|
|
135
176
|
};
|
|
136
177
|
//# sourceMappingURL=variant-picker-dialog.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant-picker-dialog.stories.js","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"variant-picker-dialog.stories.js","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.stories.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -65,7 +65,11 @@ export { DashboardStatsGrid } from "./components/dashboard-stats-grid";
|
|
|
65
65
|
export type { DashboardStatsGridProps, DashboardStatItem } from "./components/dashboard-stats-grid";
|
|
66
66
|
export { PeriodSelect } from "./components/period-select";
|
|
67
67
|
export type { PeriodSelectProps, DashboardPeriod } from "./components/period-select";
|
|
68
|
-
export {
|
|
68
|
+
export { ScoreChip, type ScoreChipProps, type ScoreBand } from "./components/score-chip";
|
|
69
|
+
export { ReasonPill, type ReasonPillProps, type ReasonPillKind, type ReasonPillSignal, } from "./components/reason-pill";
|
|
70
|
+
export { OpportunityBrief, type OpportunityBriefProps, type OpportunityBriefChip, } from "./components/opportunity-brief";
|
|
71
|
+
export { PickerEmptyGuidance, type PickerEmptyGuidanceProps, } from "./components/picker-empty-guidance";
|
|
72
|
+
export { VariantPickerDialog, type VariantPickerDialogProps, type VariantPickerOpportunityContext, type VariantPickerEmptyGuidance, type ScoredVariantDisplay, } from "./components/variant-picker-dialog";
|
|
69
73
|
export { CertificationUploadCard } from "./components/certification-upload-card";
|
|
70
74
|
export type { CertificationUploadCardProps, CertStatus } from "./components/certification-upload-card";
|
|
71
75
|
export { AttachmentRow } from "./components/attachment-row";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|