@cellarnode/ui 0.13.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/components/bottle-extract-dialog.d.ts +25 -0
  2. package/dist/components/bottle-extract-dialog.d.ts.map +1 -0
  3. package/dist/components/bottle-extract-dialog.js +87 -0
  4. package/dist/components/bottle-extract-dialog.js.map +1 -0
  5. package/dist/components/bottle-extract-dialog.stories.d.ts +17 -0
  6. package/dist/components/bottle-extract-dialog.stories.d.ts.map +1 -0
  7. package/dist/components/bottle-extract-dialog.stories.js +54 -0
  8. package/dist/components/bottle-extract-dialog.stories.js.map +1 -0
  9. package/dist/components/bottle-extraction-inline-progress.d.ts +14 -0
  10. package/dist/components/bottle-extraction-inline-progress.d.ts.map +1 -0
  11. package/dist/components/bottle-extraction-inline-progress.js +28 -0
  12. package/dist/components/bottle-extraction-inline-progress.js.map +1 -0
  13. package/dist/components/bottle-extraction-inline-progress.stories.d.ts +17 -0
  14. package/dist/components/bottle-extraction-inline-progress.stories.d.ts.map +1 -0
  15. package/dist/components/bottle-extraction-inline-progress.stories.js +35 -0
  16. package/dist/components/bottle-extraction-inline-progress.stories.js.map +1 -0
  17. package/dist/components/picker-empty-guidance.js +1 -1
  18. package/dist/components/picker-empty-guidance.js.map +1 -1
  19. package/dist/components/reason-pill.d.ts.map +1 -1
  20. package/dist/components/reason-pill.js +5 -2
  21. package/dist/components/reason-pill.js.map +1 -1
  22. package/dist/components/score-chip.js +1 -1
  23. package/dist/components/score-chip.js.map +1 -1
  24. package/dist/components/variant-picker-dialog.d.ts +30 -2
  25. package/dist/components/variant-picker-dialog.d.ts.map +1 -1
  26. package/dist/components/variant-picker-dialog.js +31 -18
  27. package/dist/components/variant-picker-dialog.js.map +1 -1
  28. package/dist/components/variant-picker-dialog.test.d.ts +2 -0
  29. package/dist/components/variant-picker-dialog.test.d.ts.map +1 -0
  30. package/dist/components/variant-picker-dialog.test.js +140 -0
  31. package/dist/components/variant-picker-dialog.test.js.map +1 -0
  32. package/dist/index.d.ts +3 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +3 -0
  35. package/dist/index.js.map +1 -1
  36. package/package.json +1 -1
@@ -0,0 +1,25 @@
1
+ export type BottleExtractDialogContext = {
2
+ kind: "beverage_gallery";
3
+ beverageId: string;
4
+ beverageName: string;
5
+ } | {
6
+ kind: "variant_carousel";
7
+ beverageId: string;
8
+ variantId: string;
9
+ variantName: string;
10
+ beverageName: string;
11
+ };
12
+ export interface BottleExtractDialogProps {
13
+ open: boolean;
14
+ context: BottleExtractDialogContext;
15
+ onClose: () => void;
16
+ onSubmit: (input: {
17
+ file: File;
18
+ aiExtract: boolean;
19
+ makePrimary: boolean;
20
+ }) => Promise<void>;
21
+ /** i18n lookup — producer-dashboard passes react-i18next's `t` */
22
+ t: (key: string, opts?: Record<string, unknown>) => string;
23
+ }
24
+ export declare function BottleExtractDialog({ open, context, onClose, onSubmit, t, }: BottleExtractDialogProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=bottle-extract-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extract-dialog.d.ts","sourceRoot":"","sources":["../../src/components/bottle-extract-dialog.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACtE;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,0BAA0B,CAAC;IACpC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,kEAAkE;IAClE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAC5D;AAOD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,CAAC,GACF,EAAE,wBAAwB,2CAkK1B"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as Dialog from "@radix-ui/react-dialog";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/utils";
5
+ export function BottleExtractDialog({ open, context, onClose, onSubmit, t, }) {
6
+ const [file, setFile] = React.useState(null);
7
+ const [mode, setMode] = React.useState("extract");
8
+ const [makePrimary, setMakePrimary] = React.useState(false);
9
+ const [state, setState] = React.useState({ kind: "idle" });
10
+ const fileInputRef = React.useRef(null);
11
+ const targetName = context.kind === "beverage_gallery" ? context.beverageName : context.variantName;
12
+ const titleId = React.useId();
13
+ const validate = (f) => {
14
+ if (f.name.toLowerCase().endsWith(".heic") ||
15
+ f.type === "image/heic" ||
16
+ f.type === "image/heif") {
17
+ return t("dialog.heic_error");
18
+ }
19
+ if (f.type === "image/webp")
20
+ return t("dialog.webp_error");
21
+ if (!["image/jpeg", "image/png"].includes(f.type)) {
22
+ return t("dialog.heic_error");
23
+ }
24
+ if (f.size > 10 * 1024 * 1024)
25
+ return "File is larger than 10MB.";
26
+ return null;
27
+ };
28
+ const handleFileChange = (files) => {
29
+ if (!files || files.length === 0)
30
+ return;
31
+ const first = files[0];
32
+ if (!first)
33
+ return;
34
+ const err = validate(first);
35
+ if (err) {
36
+ setState({ kind: "error", message: err });
37
+ return;
38
+ }
39
+ setFile(first);
40
+ setState({ kind: "idle" });
41
+ };
42
+ const handleSubmit = async (e) => {
43
+ e.preventDefault();
44
+ if (!file) {
45
+ setState({ kind: "error", message: "Please choose a file first." });
46
+ return;
47
+ }
48
+ setState({ kind: "submitting" });
49
+ try {
50
+ await onSubmit({
51
+ file,
52
+ aiExtract: mode === "extract",
53
+ makePrimary: mode === "extract" && makePrimary,
54
+ });
55
+ setFile(null);
56
+ setMakePrimary(false);
57
+ setMode("extract");
58
+ setState({ kind: "idle" });
59
+ onClose();
60
+ }
61
+ catch (err) {
62
+ setState({ kind: "error", message: err.message });
63
+ }
64
+ };
65
+ return (_jsx(Dialog.Root, { open: open, onOpenChange: (nextOpen) => !nextOpen && onClose(), children: _jsxs(Dialog.Portal, { children: [_jsx(Dialog.Overlay, { className: "fixed inset-0 z-50 bg-foreground/20 backdrop-blur-xs" }), _jsxs(Dialog.Content, { "aria-labelledby": titleId, className: cn("fixed left-1/2 top-1/2 z-50 w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2", "rounded-2xl border border-border bg-card p-6 shadow-xl"), children: [_jsx(Dialog.Title, { id: titleId, className: "text-base/6 font-semibold text-foreground", children: t("dialog.title") }), _jsxs("form", { onSubmit: handleSubmit, className: "mt-4 flex flex-col gap-4", children: [_jsx(DropZone, { ref: fileInputRef, file: file, onFileChange: handleFileChange, t: t }), _jsxs("fieldset", { className: "flex flex-col gap-2", children: [_jsx("legend", { className: "sr-only", children: "Upload mode" }), _jsxs("label", { className: "flex cursor-pointer items-start gap-3", children: [_jsx("input", { type: "radio", name: "mode", value: "as_is", checked: mode === "as_is", onChange: () => setMode("as_is"), className: "mt-1" }), _jsxs("span", { children: [_jsx("span", { className: "font-medium text-foreground", children: t("dialog.mode_as_is") }), _jsx("span", { className: "block text-sm text-muted-foreground", children: t("dialog.mode_as_is_help", { name: targetName }) })] })] }), _jsxs("label", { className: "flex cursor-pointer items-start gap-3", children: [_jsx("input", { type: "radio", name: "mode", value: "extract", checked: mode === "extract", onChange: () => setMode("extract"), className: "mt-1" }), _jsxs("span", { children: [_jsx("span", { className: "font-medium text-foreground", children: t("dialog.mode_extract") }), _jsx("span", { className: "block text-sm text-muted-foreground", children: t("dialog.mode_extract_help", { name: targetName }) })] })] })] }), mode === "extract" && (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 text-foreground", children: [_jsx("input", { type: "checkbox", checked: makePrimary, onChange: (e) => setMakePrimary(e.target.checked) }), _jsx("span", { children: t("dialog.make_primary") })] })), state.kind === "error" && (_jsx("div", { role: "alert", className: "rounded-lg border border-red-300 bg-red-50 p-2 text-sm text-red-900 dark:border-red-800 dark:bg-red-950 dark:text-red-100", children: state.message })), _jsx("div", { "aria-live": "polite", className: "sr-only", children: state.kind === "submitting" ? t("dialog.uploading") : "" }), _jsxs("div", { className: "mt-2 flex justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onClose, className: "rounded-md px-4 py-2 text-foreground hover:bg-muted/50 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-primary/50", children: t("dialog.cancel") }), _jsx("button", { type: "submit", disabled: !file || state.kind === "submitting", className: "rounded-md bg-emerald-600 px-4 py-2 text-white hover:bg-emerald-700 focus:outline-hidden focus-visible:ring-2 focus-visible:ring-emerald-500 disabled:opacity-50", children: state.kind === "submitting" ? t("dialog.uploading") : t("dialog.submit") })] })] }), _jsx(Dialog.Close, { className: "absolute right-4 top-4 text-muted-foreground hover:text-foreground focus:outline-hidden focus-visible:ring-2 focus-visible:ring-primary/50", "aria-label": "Close", children: "\u00D7" })] })] }) }));
66
+ }
67
+ const DropZone = React.forwardRef(({ file, onFileChange, t }, ref) => {
68
+ const [hover, setHover] = React.useState(false);
69
+ const labelId = React.useId();
70
+ return (_jsxs("div", { role: "button", tabIndex: 0, "aria-labelledby": labelId, onClick: () => ref.current?.click(), onKeyDown: (e) => {
71
+ if (e.key === "Enter" || e.key === " ") {
72
+ e.preventDefault();
73
+ ref.current?.click();
74
+ }
75
+ }, onDragOver: (e) => {
76
+ e.preventDefault();
77
+ setHover(true);
78
+ }, onDragLeave: () => setHover(false), onDrop: (e) => {
79
+ e.preventDefault();
80
+ setHover(false);
81
+ onFileChange(e.dataTransfer.files);
82
+ }, className: cn("cursor-pointer rounded-lg border-2 border-dashed p-6 text-center focus:outline-hidden focus-visible:ring-2 focus-visible:ring-emerald-500", hover
83
+ ? "border-emerald-500 bg-emerald-50 dark:bg-emerald-950/30"
84
+ : "border-border bg-muted/20"), children: [_jsx("input", { ref: ref, type: "file", accept: "image/jpeg,image/png", className: "hidden", onChange: (e) => onFileChange(e.target.files) }), _jsx("p", { id: labelId, className: "text-sm text-foreground", children: file ? file.name : t("dialog.drop_zone") })] }));
85
+ });
86
+ DropZone.displayName = "DropZone";
87
+ //# sourceMappingURL=bottle-extract-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extract-dialog.js","sourceRoot":"","sources":["../../src/components/bottle-extract-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { BottleExtractDialog } from "./bottle-extract-dialog";
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof BottleExtractDialog;
6
+ tags: string[];
7
+ parameters: {
8
+ a11y: {
9
+ test: string;
10
+ };
11
+ };
12
+ };
13
+ export default meta;
14
+ type Story = StoryObj<typeof meta>;
15
+ export declare const BeverageGallery: Story;
16
+ export declare const VariantCarousel: Story;
17
+ //# sourceMappingURL=bottle-extract-dialog.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extract-dialog.stories.d.ts","sourceRoot":"","sources":["../../src/components/bottle-extract-dialog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAsB9D,QAAA,MAAM,IAAI;;;;;;;;;CAKkC,CAAC;AAE7C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAc7B,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { BottleExtractDialog } from "./bottle-extract-dialog";
2
+ const t = (key, opts) => {
3
+ const strings = {
4
+ "dialog.title": "Add bottle photo",
5
+ "dialog.drop_zone": "Drop an image here, or click to browse (JPEG or PNG, up to 10MB)",
6
+ "dialog.mode_as_is": "Upload as-is",
7
+ "dialog.mode_as_is_help": `Add this photo to ${opts?.name}'s gallery without AI processing.`,
8
+ "dialog.mode_extract": "Upload + AI extract bottle",
9
+ "dialog.mode_extract_help": `We'll send this image to our bottle-extraction AI to isolate the bottle. Takes ~10 seconds. Result will be added to ${opts?.name}'s gallery.`,
10
+ "dialog.make_primary": "Make the cutout the primary photo",
11
+ "dialog.submit": "Upload",
12
+ "dialog.cancel": "Cancel",
13
+ "dialog.uploading": "Uploading…",
14
+ "dialog.heic_error": "HEIC isn't supported yet. Please convert to JPEG.",
15
+ "dialog.webp_error": "WebP isn't supported yet. Please convert to JPEG or PNG.",
16
+ };
17
+ return strings[key] ?? key;
18
+ };
19
+ const meta = {
20
+ title: "Extraction/BottleExtractDialog",
21
+ component: BottleExtractDialog,
22
+ tags: ["autodocs"],
23
+ parameters: { a11y: { test: "error" } },
24
+ };
25
+ export default meta;
26
+ export const BeverageGallery = {
27
+ args: {
28
+ open: true,
29
+ context: {
30
+ kind: "beverage_gallery",
31
+ beverageId: "b1",
32
+ beverageName: "Tenuta Sample Reserve",
33
+ },
34
+ onClose: () => { },
35
+ onSubmit: async () => new Promise((resolve) => setTimeout(resolve, 600)),
36
+ t,
37
+ },
38
+ };
39
+ export const VariantCarousel = {
40
+ args: {
41
+ open: true,
42
+ context: {
43
+ kind: "variant_carousel",
44
+ beverageId: "b1",
45
+ variantId: "v1",
46
+ variantName: "Tenuta Sample Reserve 2021",
47
+ beverageName: "Tenuta Sample Reserve",
48
+ },
49
+ onClose: () => { },
50
+ onSubmit: async () => new Promise((resolve) => setTimeout(resolve, 600)),
51
+ t,
52
+ },
53
+ };
54
+ //# sourceMappingURL=bottle-extract-dialog.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extract-dialog.stories.js","sourceRoot":"","sources":["../../src/components/bottle-extract-dialog.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE;IACxD,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,kBAAkB,EAChB,kEAAkE;QACpE,mBAAmB,EAAE,cAAc;QACnC,wBAAwB,EAAE,qBAAqB,IAAI,EAAE,IAAI,mCAAmC;QAC5F,qBAAqB,EAAE,4BAA4B;QACnD,0BAA0B,EAAE,uHAAuH,IAAI,EAAE,IAAI,aAAa;QAC1K,qBAAqB,EAAE,mCAAmC;QAC1D,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,QAAQ;QACzB,kBAAkB,EAAE,YAAY;QAChC,mBAAmB,EAAE,mDAAmD;QACxE,mBAAmB,EACjB,0DAA0D;KAC7D,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,mBAAmB;IAC9B,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;CACG,CAAC;AAE7C,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,uBAAuB;SACtC;QACD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,4BAA4B;YACzC,YAAY,EAAE,uBAAuB;SACtC;QACD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface BottleExtractionInlineProgressProps {
2
+ jobId: string;
3
+ progress: {
4
+ processed: number;
5
+ total: number;
6
+ currentProductIndex?: number;
7
+ message?: string;
8
+ } | null;
9
+ status: "pending" | "processing" | "completed" | "failed" | "abandoned" | "awaiting_producer";
10
+ onCancel?: () => void;
11
+ t: (key: string, opts?: Record<string, unknown>) => string;
12
+ }
13
+ export declare function BottleExtractionInlineProgress(props: BottleExtractionInlineProgressProps): import("react/jsx-runtime").JSX.Element | null;
14
+ //# sourceMappingURL=bottle-extraction-inline-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extraction-inline-progress.d.ts","sourceRoot":"","sources":["../../src/components/bottle-extraction-inline-progress.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,mCAAmC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,mBAAmB,CAAC;IAC9F,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAC5D;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,mCAAmC,kDAmDxF"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ export function BottleExtractionInlineProgress(props) {
4
+ const { progress, status, onCancel, t } = props;
5
+ const [startedAt] = React.useState(() => Date.now());
6
+ const [now, setNow] = React.useState(() => Date.now());
7
+ React.useEffect(() => {
8
+ if (status === "completed" || status === "failed" || status === "abandoned")
9
+ return;
10
+ const tick = setInterval(() => setNow(Date.now()), 1000);
11
+ return () => clearInterval(tick);
12
+ }, [status]);
13
+ const elapsedSeconds = Math.round((now - startedAt) / 1000);
14
+ const coldStartHint = elapsedSeconds >= 60 ? "slow_60s" : elapsedSeconds >= 20 ? "slow_20s" : null;
15
+ if (status === "completed")
16
+ return null;
17
+ const label = progress && progress.total > 1
18
+ ? t("progress.running_with_counts", {
19
+ processed: progress.processed,
20
+ total: progress.total,
21
+ })
22
+ : t("progress.running");
23
+ return (_jsxs("div", { role: "status", "aria-live": "polite", className: "flex items-center gap-3 rounded-lg border border-emerald-200 bg-emerald-50 p-3 dark:border-emerald-800 dark:bg-emerald-950/30", children: [_jsx(Spinner, {}), _jsxs("div", { className: "flex-1", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: label }), coldStartHint && (_jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: t(`progress.${coldStartHint}`) }))] }), elapsedSeconds >= 60 && onCancel && (_jsx("button", { type: "button", onClick: onCancel, className: "rounded-md text-sm text-red-600 hover:underline focus:outline-hidden focus-visible:ring-2 focus-visible:ring-red-500", children: t("progress.cancel") }))] }));
24
+ }
25
+ function Spinner() {
26
+ return (_jsx("span", { "aria-hidden": "true", className: "inline-block size-4 animate-spin rounded-full border-2 border-emerald-600 border-t-transparent" }));
27
+ }
28
+ //# sourceMappingURL=bottle-extraction-inline-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extraction-inline-progress.js","sourceRoot":"","sources":["../../src/components/bottle-extraction-inline-progress.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,MAAM,UAAU,8BAA8B,CAAC,KAA0C;IACvF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEvD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW;YAAE,OAAO;QACpF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,MAAM,aAAa,GACjB,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/E,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,KAAK,GACT,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;QAC5B,CAAC,CAAC,CAAC,CAAC,8BAA8B,EAAE;YAChC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC;QACJ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE5B,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,eACH,QAAQ,EAClB,SAAS,EAAC,+HAA+H,aAEzI,KAAC,OAAO,KAAG,EACX,eAAK,SAAS,EAAC,QAAQ,aACrB,YAAG,SAAS,EAAC,qCAAqC,YAAE,KAAK,GAAK,EAC7D,aAAa,IAAI,CAChB,YAAG,SAAS,EAAC,oCAAoC,YAC9C,CAAC,CAAC,YAAY,aAAa,EAAE,CAAC,GAC7B,CACL,IACG,EACL,cAAc,IAAI,EAAE,IAAI,QAAQ,IAAI,CACnC,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,sHAAsH,YAE/H,CAAC,CAAC,iBAAiB,CAAC,GACd,CACV,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,OAAO,CACL,8BACc,MAAM,EAClB,SAAS,EAAC,gGAAgG,GAC1G,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { BottleExtractionInlineProgress } from "./bottle-extraction-inline-progress";
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof BottleExtractionInlineProgress;
6
+ tags: string[];
7
+ parameters: {
8
+ a11y: {
9
+ test: string;
10
+ };
11
+ };
12
+ };
13
+ export default meta;
14
+ type Story = StoryObj<typeof meta>;
15
+ export declare const SingleRunning: Story;
16
+ export declare const CatalogMidway: Story;
17
+ //# sourceMappingURL=bottle-extraction-inline-progress.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extraction-inline-progress.stories.d.ts","sourceRoot":"","sources":["../../src/components/bottle-extraction-inline-progress.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAerF,QAAA,MAAM,IAAI;;;;;;;;;CAK6C,CAAC;AAExD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAO3B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { BottleExtractionInlineProgress } from "./bottle-extraction-inline-progress";
2
+ const t = (key, opts) => {
3
+ const strings = {
4
+ "progress.running": "Extracting bottle photo…",
5
+ "progress.running_with_counts": `Extracting bottle photo… (${opts?.processed} of ${opts?.total} processed)`,
6
+ "progress.slow_20s": "This is taking a moment longer than usual — we're warming up the AI service.",
7
+ "progress.slow_60s": "Still working — bottle extraction can take 1–2 minutes on first run.",
8
+ "progress.cancel": "Cancel",
9
+ };
10
+ return strings[key] ?? key;
11
+ };
12
+ const meta = {
13
+ title: "Extraction/BottleExtractionInlineProgress",
14
+ component: BottleExtractionInlineProgress,
15
+ tags: ["autodocs"],
16
+ parameters: { a11y: { test: "error" } },
17
+ };
18
+ export default meta;
19
+ export const SingleRunning = {
20
+ args: {
21
+ jobId: "j1",
22
+ status: "processing",
23
+ progress: { processed: 0, total: 1 },
24
+ t,
25
+ },
26
+ };
27
+ export const CatalogMidway = {
28
+ args: {
29
+ jobId: "j2",
30
+ status: "processing",
31
+ progress: { processed: 4, total: 12 },
32
+ t,
33
+ },
34
+ };
35
+ //# sourceMappingURL=bottle-extraction-inline-progress.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bottle-extraction-inline-progress.stories.js","sourceRoot":"","sources":["../../src/components/bottle-extraction-inline-progress.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE;IACxD,MAAM,OAAO,GAA2B;QACtC,kBAAkB,EAAE,0BAA0B;QAC9C,8BAA8B,EAAE,6BAA6B,IAAI,EAAE,SAAS,OAAO,IAAI,EAAE,KAAK,aAAa;QAC3G,mBAAmB,EACjB,8EAA8E;QAChF,mBAAmB,EACjB,sEAAsE;QACxE,iBAAiB,EAAE,QAAQ;KAC5B,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,2CAA2C;IAClD,SAAS,EAAE,8BAA8B;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;CACc,CAAC;AAExD,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;QACpC,CAAC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,CAAC;KACF;CACF,CAAC"}
@@ -9,6 +9,6 @@ import { cn } from "../lib/utils";
9
9
  export function PickerEmptyGuidance({ categoryLabel, createLabel, skipLabel = "Draft manually", body, onCreate, onSkip, className, }) {
10
10
  const message = body
11
11
  ?? `Your portfolio has no ${categoryLabel}. To respond to this opportunity you can either add a matching product or draft the offer manually.`;
12
- return (_jsxs("div", { className: cn("flex flex-col gap-2", className), children: [_jsx("div", { className: "rounded-lg border border-dashed border-warning/60 bg-warning/10 px-3 py-2.5 text-[11px] leading-relaxed text-warning-foreground", children: message }), _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row", children: [_jsxs("button", { type: "button", onClick: onCreate, className: "inline-flex flex-1 items-center justify-center gap-2 rounded-lg bg-primary px-3 py-2 text-[12px] font-semibold text-primary-foreground transition-[filter] hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-primary/40", children: [_jsx(Plus, { className: "size-3.5", "aria-hidden": true }), createLabel] }), _jsxs("button", { type: "button", onClick: onSkip, className: "inline-flex flex-1 items-center justify-center gap-2 rounded-lg border border-border bg-background px-3 py-2 text-[12px] font-semibold text-muted-foreground transition-colors hover:text-foreground focus:outline-none focus:ring-2 focus:ring-primary/40", children: [_jsx(ArrowRight, { className: "size-3.5", "aria-hidden": true }), skipLabel] })] })] }));
12
+ return (_jsxs("div", { className: cn("flex flex-col gap-2", className), children: [_jsx("div", { className: "rounded-lg border border-dashed border-warning/60 bg-warning/10 px-3 py-2.5 text-[11px]/5 text-warning-foreground", children: message }), _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row", children: [_jsxs("button", { type: "button", onClick: onCreate, className: "inline-flex flex-1 items-center justify-center gap-2 rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground transition-[filter] hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-primary/40", children: [_jsx(Plus, { className: "size-3.5", "aria-hidden": true }), createLabel] }), _jsxs("button", { type: "button", onClick: onSkip, className: "inline-flex flex-1 items-center justify-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-sm font-semibold text-muted-foreground transition-colors hover:text-foreground focus:outline-none focus:ring-2 focus:ring-primary/40", children: [_jsx(ArrowRight, { className: "size-3.5", "aria-hidden": true }), skipLabel] })] })] }));
13
13
  }
14
14
  //# sourceMappingURL=picker-empty-guidance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"picker-empty-guidance.js","sourceRoot":"","sources":["../../src/components/picker-empty-guidance.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAgBlC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,aAAa,EACb,WAAW,EACX,SAAS,GAAG,gBAAgB,EAC5B,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,GACgB;IACzB,MAAM,OAAO,GAAG,IAAI;WACf,yBAAyB,aAAa,qGAAqG,CAAC;IAEjJ,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,aAClD,cAAK,SAAS,EAAC,iIAAiI,YAC7I,OAAO,GACJ,EACN,eAAK,SAAS,EAAC,iCAAiC,aAC9C,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,uOAAuO,aAEjP,KAAC,IAAI,IAAC,SAAS,EAAC,UAAU,wBAAe,EACxC,WAAW,IACL,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAC,4PAA4P,aAEtQ,KAAC,UAAU,IAAC,SAAS,EAAC,UAAU,wBAAe,EAC9C,SAAS,IACH,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"picker-empty-guidance.js","sourceRoot":"","sources":["../../src/components/picker-empty-guidance.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAgBlC;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,aAAa,EACb,WAAW,EACX,SAAS,GAAG,gBAAgB,EAC5B,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,GACgB;IACzB,MAAM,OAAO,GAAG,IAAI;WACf,yBAAyB,aAAa,qGAAqG,CAAC;IAEjJ,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,aAClD,cAAK,SAAS,EAAC,mHAAmH,YAC/H,OAAO,GACJ,EACN,eAAK,SAAS,EAAC,iCAAiC,aAC9C,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,qOAAqO,aAE/O,KAAC,IAAI,IAAC,SAAS,EAAC,UAAU,wBAAe,EACxC,WAAW,IACL,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAC,0PAA0P,aAEpQ,KAAC,UAAU,IAAC,SAAS,EAAC,UAAU,wBAAe,EAC9C,SAAS,IACH,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reason-pill.d.ts","sourceRoot":"","sources":["../../src/components/reason-pill.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,2CAgB7E"}
1
+ {"version":3,"file":"reason-pill.d.ts","sourceRoot":"","sources":["../../src/components/reason-pill.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,2CAqB7E"}
@@ -3,7 +3,7 @@ import { Check, X } from "lucide-react";
3
3
  import { cn } from "../lib/utils";
4
4
  const kindClasses = {
5
5
  ok: "bg-primary/15 text-primary",
6
- warn: "bg-warning/20 text-warning-foreground",
6
+ warn: "bg-amber-500/20 text-amber-900 dark:bg-amber-400/15 dark:text-amber-300",
7
7
  // strike-through + muted so "miss" reads as a negative at a glance
8
8
  miss: "bg-muted text-muted-foreground line-through",
9
9
  };
@@ -15,6 +15,9 @@ const kindClasses = {
15
15
  * has no almost-equal icon). `miss` → X icon + struck-through muted tint.
16
16
  */
17
17
  export function ReasonPill({ kind, signal, label, className }) {
18
- return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px] font-semibold leading-none", kindClasses[kind], className), title: `${signal}: ${label}`, children: [kind === "ok" && _jsx(Check, { className: "size-2.5", "aria-hidden": true }), kind === "miss" && _jsx(X, { className: "size-2.5", "aria-hidden": true }), kind === "warn" && _jsx("span", { "aria-hidden": true, children: "\u2248" }), _jsx("span", { children: label })] }));
18
+ const ariaLabel = kind === "miss" ? `${signal} mismatch: ${label}` :
19
+ kind === "warn" ? `${signal} partial match: ${label}` :
20
+ `${signal} match: ${label}`;
21
+ return (_jsxs("span", { className: cn("inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px] font-semibold leading-none", kindClasses[kind], className), "aria-label": ariaLabel, children: [kind === "ok" && _jsx(Check, { className: "size-2.5", "aria-hidden": true }), kind === "miss" && _jsx(X, { className: "size-2.5", "aria-hidden": true }), kind === "warn" && _jsx("span", { "aria-hidden": true, children: "\u2248" }), _jsx("span", { "aria-hidden": true, children: label })] }));
19
22
  }
20
23
  //# sourceMappingURL=reason-pill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reason-pill.js","sourceRoot":"","sources":["../../src/components/reason-pill.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,MAAM,WAAW,GAAmC;IAClD,EAAE,EAAE,4BAA4B;IAChC,IAAI,EAAE,uCAAuC;IAC7C,mEAAmE;IACnE,IAAI,EAAE,6CAA6C;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAmB;IAC5E,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,WAAW,CAAC,IAAI,CAAC,EACjB,SAAS,CACV,EACD,KAAK,EAAE,GAAG,MAAM,KAAK,KAAK,EAAE,aAE3B,IAAI,KAAK,IAAI,IAAI,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,wBAAe,EAC3D,IAAI,KAAK,MAAM,IAAI,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,wBAAe,EACzD,IAAI,KAAK,MAAM,IAAI,yDAA0B,EAC9C,yBAAO,KAAK,GAAQ,IACf,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reason-pill.js","sourceRoot":"","sources":["../../src/components/reason-pill.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,MAAM,WAAW,GAAmC;IAClD,EAAE,EAAE,4BAA4B;IAChC,IAAI,EAAE,yEAAyE;IAC/E,mEAAmE;IACnE,IAAI,EAAE,6CAA6C;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAmB;IAC5E,MAAM,SAAS,GACb,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,cAAc,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,mBAAmB,KAAK,EAAE,CAAC,CAAC;YACvD,GAAG,MAAM,WAAW,KAAK,EAAE,CAAC;IAE9B,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,WAAW,CAAC,IAAI,CAAC,EACjB,SAAS,CACV,gBACW,SAAS,aAEpB,IAAI,KAAK,IAAI,IAAI,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,wBAAe,EAC3D,IAAI,KAAK,MAAM,IAAI,KAAC,CAAC,IAAC,SAAS,EAAC,UAAU,wBAAe,EACzD,IAAI,KAAK,MAAM,IAAI,yDAA0B,EAC9C,8CAAmB,KAAK,GAAQ,IAC3B,CACR,CAAC;AACJ,CAAC"}
@@ -9,7 +9,7 @@ function deriveBand(score) {
9
9
  }
10
10
  const bandClasses = {
11
11
  top: "bg-primary text-primary-foreground",
12
- good: "bg-warning text-warning-foreground",
12
+ good: "bg-amber-500/20 text-amber-900 dark:bg-amber-400/20 dark:text-amber-200",
13
13
  weak: "bg-muted text-muted-foreground",
14
14
  };
15
15
  /**
@@ -1 +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"}
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,yEAAyE;IAC/E,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"}
@@ -6,7 +6,7 @@ export interface ScoredVariantDisplay {
6
6
  id: string;
7
7
  beverageId: string;
8
8
  beverageName: string;
9
- vintage?: number | string | null;
9
+ vintage?: number | null;
10
10
  packaging?: string | null;
11
11
  containerVolume?: string | number | null;
12
12
  category?: string | null;
@@ -30,6 +30,25 @@ export interface VariantPickerEmptyGuidance {
30
30
  categoryLabel: string;
31
31
  createLabel: string;
32
32
  }
33
+ /**
34
+ * Copy/i18n overrides for the VariantPickerDialog. Pass a partial object via
35
+ * the `copy` prop; missing keys fall back to defaults. Host apps typically
36
+ * feed translated strings from their i18n layer.
37
+ */
38
+ export interface VariantPickerDialogCopy {
39
+ title: string;
40
+ description: string;
41
+ searchPlaceholder: string;
42
+ goodFitsLabel: (count: number) => string;
43
+ otherProductsLabel: string;
44
+ crossCategoryLabel: string;
45
+ loadingLabel: string;
46
+ selectButton: string;
47
+ skipButton: string;
48
+ cancelButton: string;
49
+ closestFitTag: string;
50
+ differentCategoryTag: string;
51
+ }
33
52
  export interface VariantPickerDialogProps {
34
53
  open: boolean;
35
54
  onClose: () => void;
@@ -48,8 +67,17 @@ export interface VariantPickerDialogProps {
48
67
  emptyGuidance?: VariantPickerEmptyGuidance;
49
68
  /** Pre-select a variant on mount (used for the add-product round-trip). */
50
69
  initialSelectedId?: string | null;
70
+ /**
71
+ * @deprecated Prefer `copy.title`. If provided, takes priority over `copy.title` for
72
+ * backward compatibility.
73
+ */
51
74
  title?: string;
75
+ /**
76
+ * @deprecated Prefer `copy.description`. If provided, takes priority over `copy.description`.
77
+ */
52
78
  description?: string;
79
+ /** Copy overrides for i18n. Missing keys fall back to English defaults. */
80
+ copy?: Partial<VariantPickerDialogCopy>;
53
81
  }
54
- export declare function VariantPickerDialog(props: VariantPickerDialogProps): import("react/jsx-runtime").JSX.Element | null;
82
+ export declare function VariantPickerDialog(props: VariantPickerDialogProps): import("react/jsx-runtime").JSX.Element;
55
83
  //# 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":"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
+ {"version":3,"file":"variant-picker-dialog.d.ts","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as Dialog from "@radix-ui/react-dialog";
2
3
  import * as React from "react";
3
4
  import { ChevronRight, Search } from "lucide-react";
4
5
  import { cn } from "../lib/utils";
@@ -6,17 +7,37 @@ import { OpportunityBrief } from "./opportunity-brief";
6
7
  import { PickerEmptyGuidance } from "./picker-empty-guidance";
7
8
  import { ReasonPill } from "./reason-pill";
8
9
  import { ScoreChip } from "./score-chip";
10
+ const DEFAULT_COPY = {
11
+ title: "Pick a product for this tender",
12
+ description: "Ranked by how well each fits the opportunity",
13
+ searchPlaceholder: "Search your portfolio...",
14
+ goodFitsLabel: (n) => `Good fits · ${n}`,
15
+ otherProductsLabel: "Other portfolio products",
16
+ crossCategoryLabel: "Cross-category",
17
+ loadingLabel: "Ranking your portfolio…",
18
+ selectButton: "Select & pre-fill",
19
+ skipButton: "Skip — empty draft",
20
+ cancelButton: "Cancel",
21
+ closestFitTag: "· closest fit",
22
+ differentCategoryTag: "· different category",
23
+ };
9
24
  // ---------------------------------------------------------------------------
10
25
  // Component
11
26
  // ---------------------------------------------------------------------------
12
27
  export function VariantPickerDialog(props) {
13
- if (!props.open)
14
- return null;
15
- // VariantPickerContent unmounts when open becomes false, so its internal
16
- // state resets naturally on each open.
17
- return _jsx(VariantPickerContent, { ...props });
28
+ // Radix manages mount/unmount via `open`; we still gate the inner content so
29
+ // its local state resets on each open.
30
+ return (_jsx(Dialog.Root, { open: props.open, onOpenChange: (next) => {
31
+ if (!next)
32
+ props.onClose();
33
+ }, children: props.open ? _jsx(VariantPickerContent, { ...props }) : null }));
18
34
  }
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", }) {
35
+ function VariantPickerContent({ onClose, onSelect, onCreateNew, onSkip, goodFits, crossCategory, opportunityContext, searchValue, onSearchChange, isLoading, emptyGuidance, initialSelectedId, title, description, copy, }) {
36
+ // Merge copy overrides with defaults. Legacy `title`/`description` props
37
+ // take priority for backward compatibility with existing call sites.
38
+ const c = { ...DEFAULT_COPY, ...copy };
39
+ const resolvedTitle = title ?? c.title;
40
+ const resolvedDescription = description ?? c.description;
20
41
  const [selectedId, setSelectedId] = React.useState(initialSelectedId ?? null);
21
42
  // Cross-category starts expanded when there are no good fits, so producers
22
43
  // see their portfolio without extra clicks in the empty case.
@@ -31,14 +52,6 @@ function VariantPickerContent({ onClose, onSelect, onCreateNew, onSkip, goodFits
31
52
  setSelectedId(initialSelectedId);
32
53
  }
33
54
  }
34
- const handleBackdrop = (e) => {
35
- if (e.target === e.currentTarget)
36
- onClose();
37
- };
38
- const handleKey = (e) => {
39
- if (e.key === "Escape")
40
- onClose();
41
- };
42
55
  const confirm = () => {
43
56
  if (selectedId) {
44
57
  onSelect(selectedId);
@@ -47,7 +60,7 @@ function VariantPickerContent({ onClose, onSelect, onCreateNew, onSkip, goodFits
47
60
  };
48
61
  const skip = () => (onSkip ? onSkip() : onClose());
49
62
  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" })] }) })] })] }));
63
+ return (_jsxs(Dialog.Portal, { children: [_jsx(Dialog.Overlay, { className: "fixed inset-0 z-50 bg-foreground/20 backdrop-blur-xs" }), _jsxs(Dialog.Content, { className: cn("glass-panel fixed left-1/2 top-1/2 z-50 flex max-h-[min(36rem,85dvh)] w-[calc(100%-2rem)] max-w-lg -translate-x-1/2 -translate-y-1/2 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(Dialog.Title, { className: "text-base/6 font-semibold text-foreground", children: resolvedTitle }), _jsx(Dialog.Description, { className: "mt-1 text-sm/5 text-muted-foreground", children: resolvedDescription })] }), _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: c.searchPlaceholder, 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: c.loadingLabel }) })) : (_jsxs(_Fragment, { children: [_jsx(SectionLabel, { label: c.goodFitsLabel(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), closestFitTag: c.closestFitTag, differentCategoryTag: c.differentCategoryTag }, 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 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-card", children: [_jsx(ChevronRight, { className: cn("size-3 transition-transform", showCross && "rotate-90"), "aria-hidden": true }), goodFits.length === 0 ? c.crossCategoryLabel : c.otherProductsLabel, _jsxs("span", { className: "ml-1", children: ["(", crossCategory.length, ")"] })] }), showCross && (_jsx("div", { className: "mt-1.5 flex flex-col gap-1.5 rounded-xl bg-muted/20 p-1.5", children: crossCategory.map((v) => (_jsx(VariantRow, { variant: v, isSelected: v.id === selectedId, isCrossCategory: true, onSelect: () => setSelectedId(v.id), closestFitTag: c.closestFitTag, differentCategoryTag: c.differentCategoryTag }, 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: [showEmptyGuidance ? (_jsx("button", { type: "button", onClick: onClose, className: "rounded-xl px-4 py-2 text-sm/5 font-medium text-muted-foreground transition-colors hover:bg-muted/40 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-card", children: c.cancelButton })) : (_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 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-card", children: c.skipButton })), _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] focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-card", selectedId ? "hover:brightness-110" : "cursor-not-allowed opacity-50"), children: c.selectButton })] }) })] })] }));
51
64
  }
52
65
  // ---------------------------------------------------------------------------
53
66
  // Helpers
@@ -55,7 +68,7 @@ function VariantPickerContent({ onClose, onSelect, onCreateNew, onSkip, goodFits
55
68
  function SectionLabel({ label, emphasis }) {
56
69
  return (_jsx("p", { className: cn("text-[10px] font-bold uppercase tracking-[0.06em]", emphasis ? "text-primary" : "text-muted-foreground"), children: label }));
57
70
  }
58
- function VariantRow({ variant, isSelected, isTop, isCrossCategory, onSelect, }) {
71
+ function VariantRow({ variant, isSelected, isTop, isCrossCategory, onSelect, closestFitTag, differentCategoryTag, }) {
59
72
  const meta = [
60
73
  variant.countryOfOrigin,
61
74
  variant.containerVolume ? `${variant.containerVolume}` : null,
@@ -64,12 +77,12 @@ function VariantRow({ variant, isSelected, isTop, isCrossCategory, onSelect, })
64
77
  ]
65
78
  .filter(Boolean)
66
79
  .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
80
+ return (_jsxs("button", { type: "button", onClick: onSelect, "aria-pressed": isSelected, className: cn("flex w-full items-center gap-2.5 rounded-xl border px-3 py-2.5 text-left transition-colors", "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-card", isSelected
68
81
  ? "border-primary bg-primary/5"
69
82
  : isTop
70
83
  ? "border-primary/60 shadow-[0_0_0_2px] shadow-primary/10 hover:bg-muted/30"
71
84
  : "border-border hover:bg-muted/30"), children: [_jsx("span", { className: cn("size-3.5 shrink-0 rounded-full border-2 transition-colors", isSelected
72
85
  ? "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 })] }));
86
+ : "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: closestFitTag })), isCrossCategory && (_jsx("span", { className: "ml-1.5 text-[10px] font-medium text-warning-foreground", children: differentCategoryTag }))] }), 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 })] }));
74
87
  }
75
88
  //# 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":"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"}
1
+ {"version":3,"file":"variant-picker-dialog.js","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=variant-picker-dialog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variant-picker-dialog.test.d.ts","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { describe, it, expect, vi } from "vitest";
3
+ import { render, screen, fireEvent } from "@testing-library/react";
4
+ import { VariantPickerDialog } from "./variant-picker-dialog";
5
+ const goodFits = [
6
+ {
7
+ id: "v1",
8
+ beverageId: "b1",
9
+ beverageName: "Solera Brandy",
10
+ score: 92,
11
+ band: "top",
12
+ reasons: [{ kind: "ok", signal: "subtype", label: "Brandy" }],
13
+ countryOfOrigin: "Spain",
14
+ region: null,
15
+ vintage: 2019,
16
+ packaging: "750ml bottle",
17
+ containerVolume: "750ml",
18
+ category: "spirits",
19
+ subtype: "brandy",
20
+ },
21
+ {
22
+ id: "v2",
23
+ beverageId: "b2",
24
+ beverageName: "Aguardiente",
25
+ score: 65,
26
+ band: "good",
27
+ reasons: [{ kind: "warn", signal: "subtype", label: "Aguardiente" }],
28
+ countryOfOrigin: "Portugal",
29
+ region: null,
30
+ vintage: 2021,
31
+ packaging: "750ml bottle",
32
+ containerVolume: "750ml",
33
+ category: "spirits",
34
+ subtype: "aguardiente",
35
+ },
36
+ ];
37
+ const crossCategory = [
38
+ {
39
+ id: "v3",
40
+ beverageId: "b3",
41
+ beverageName: "Riesling 2022",
42
+ score: 22,
43
+ band: "weak",
44
+ reasons: [{ kind: "miss", signal: "subtype", label: "White wine" }],
45
+ countryOfOrigin: "Germany",
46
+ region: null,
47
+ vintage: 2022,
48
+ packaging: "375ml bottle",
49
+ containerVolume: "375ml",
50
+ category: "wine",
51
+ subtype: "white-wine",
52
+ },
53
+ ];
54
+ const baseProps = {
55
+ open: true,
56
+ onClose: vi.fn(),
57
+ onSelect: vi.fn(),
58
+ onSkip: vi.fn(),
59
+ searchValue: "",
60
+ onSearchChange: vi.fn(),
61
+ opportunityContext: {
62
+ name: "brandy spirits · Spain Selection",
63
+ buyerName: "Systembolaget",
64
+ chips: [{ label: "Spirits" }, { label: "Brandy" }],
65
+ },
66
+ goodFits,
67
+ crossCategory,
68
+ };
69
+ describe("VariantPickerDialog", () => {
70
+ it("renders nothing when open=false", () => {
71
+ const { container } = render(_jsx(VariantPickerDialog, { ...baseProps, open: false }));
72
+ // Radix Dialog.Root still renders the root element but portal content is absent
73
+ expect(screen.queryByText(/Solera Brandy/)).not.toBeInTheDocument();
74
+ expect(screen.queryByText(/Pick a product/i)).not.toBeInTheDocument();
75
+ });
76
+ it("renders the opportunity brief and good fits when open", () => {
77
+ render(_jsx(VariantPickerDialog, { ...baseProps }));
78
+ expect(screen.getByText(/brandy spirits/)).toBeInTheDocument();
79
+ expect(screen.getByText(/Solera Brandy/)).toBeInTheDocument();
80
+ // "Aguardiente" appears in both the beverage name and the reason pill label;
81
+ // use getAllByText and assert at least one match is present.
82
+ expect(screen.getAllByText(/Aguardiente/)[0]).toBeInTheDocument();
83
+ });
84
+ it("disables 'Select & pre-fill' until a row is selected", () => {
85
+ render(_jsx(VariantPickerDialog, { ...baseProps }));
86
+ const selectBtn = screen.getByRole("button", { name: /select.*pre-fill/i });
87
+ expect(selectBtn).toBeDisabled();
88
+ });
89
+ it("enables 'Select & pre-fill' after clicking a variant row, and onSelect fires with that variantId on confirm", () => {
90
+ const onSelect = vi.fn();
91
+ const onClose = vi.fn();
92
+ render(_jsx(VariantPickerDialog, { ...baseProps, onSelect: onSelect, onClose: onClose }));
93
+ // Click the row button (aria-pressed=false) that contains "Solera Brandy"
94
+ const rows = screen.getAllByRole("button", { name: /Solera Brandy/i });
95
+ fireEvent.click(rows[0]);
96
+ const selectBtn = screen.getByRole("button", { name: /select.*pre-fill/i });
97
+ expect(selectBtn).not.toBeDisabled();
98
+ fireEvent.click(selectBtn);
99
+ expect(onSelect).toHaveBeenCalledWith("v1");
100
+ expect(onClose).toHaveBeenCalled();
101
+ });
102
+ it("'Skip — empty draft' calls onSkip", () => {
103
+ const onSkip = vi.fn();
104
+ render(_jsx(VariantPickerDialog, { ...baseProps, onSkip: onSkip }));
105
+ fireEvent.click(screen.getByRole("button", { name: /skip/i }));
106
+ expect(onSkip).toHaveBeenCalled();
107
+ });
108
+ it("renders empty-state guidance when goodFits is empty AND emptyGuidance + onCreateNew provided", () => {
109
+ const onCreateNew = vi.fn();
110
+ render(_jsx(VariantPickerDialog, { ...baseProps, goodFits: [], onCreateNew: onCreateNew, emptyGuidance: { categoryLabel: "Spirits · Brandy", createLabel: "Create a new brandy product" } }));
111
+ expect(screen.getByText(/Your portfolio has no Spirits · Brandy/i)).toBeInTheDocument();
112
+ expect(screen.getByRole("button", { name: /create a new brandy/i })).toBeInTheDocument();
113
+ fireEvent.click(screen.getByRole("button", { name: /create a new brandy/i }));
114
+ expect(onCreateNew).toHaveBeenCalled();
115
+ });
116
+ it("footer 'Cancel' calls onClose (NOT onSkip) in empty-state mode", () => {
117
+ const onClose = vi.fn();
118
+ const onSkip = vi.fn();
119
+ render(_jsx(VariantPickerDialog, { ...baseProps, goodFits: [], onClose: onClose, onSkip: onSkip, onCreateNew: vi.fn(), emptyGuidance: { categoryLabel: "Spirits · Brandy", createLabel: "Create a new brandy product" } }));
120
+ fireEvent.click(screen.getByRole("button", { name: /^cancel$/i }));
121
+ expect(onClose).toHaveBeenCalled();
122
+ expect(onSkip).not.toHaveBeenCalled();
123
+ });
124
+ it("renders cross-category section with toggle", () => {
125
+ render(_jsx(VariantPickerDialog, { ...baseProps }));
126
+ expect(screen.getByText(/other portfolio products/i)).toBeInTheDocument();
127
+ });
128
+ it("calls onSearchChange when typing in the search input", () => {
129
+ const onSearchChange = vi.fn();
130
+ render(_jsx(VariantPickerDialog, { ...baseProps, onSearchChange: onSearchChange }));
131
+ const input = screen.getByPlaceholderText(/search your portfolio/i);
132
+ fireEvent.change(input, { target: { value: "reserva" } });
133
+ expect(onSearchChange).toHaveBeenCalledWith("reserva");
134
+ });
135
+ it("respects copy prop for i18n customization", () => {
136
+ render(_jsx(VariantPickerDialog, { ...baseProps, copy: { selectButton: "Använd produkt" } }));
137
+ expect(screen.getByRole("button", { name: /använd produkt/i })).toBeInTheDocument();
138
+ });
139
+ });
140
+ //# sourceMappingURL=variant-picker-dialog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variant-picker-dialog.test.js","sourceRoot":"","sources":["../../src/components/variant-picker-dialog.test.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -69,7 +69,7 @@ export { ScoreChip, type ScoreChipProps, type ScoreBand } from "./components/sco
69
69
  export { ReasonPill, type ReasonPillProps, type ReasonPillKind, type ReasonPillSignal, } from "./components/reason-pill";
70
70
  export { OpportunityBrief, type OpportunityBriefProps, type OpportunityBriefChip, } from "./components/opportunity-brief";
71
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";
72
+ export { VariantPickerDialog, type VariantPickerDialogProps, type VariantPickerDialogCopy, type VariantPickerOpportunityContext, type VariantPickerEmptyGuidance, type ScoredVariantDisplay, } from "./components/variant-picker-dialog";
73
73
  export { CertificationUploadCard } from "./components/certification-upload-card";
74
74
  export type { CertificationUploadCardProps, CertStatus } from "./components/certification-upload-card";
75
75
  export { AttachmentRow } from "./components/attachment-row";
@@ -104,4 +104,6 @@ export { OfferCard, type OfferCardProps, type OfferCardProduct, type OfferCardTe
104
104
  export { CardActionsTrigger, type CardActionsTriggerProps, } from "./components/card-actions-trigger";
105
105
  export { PriceRangeBar, type PriceRangeBarProps, type PriceRange } from "./components/price-range-bar";
106
106
  export { PricingGuidancePanel, type PricingGuidancePanelProps, type PricePositionStatus } from "./components/pricing-guidance-panel";
107
+ export { BottleExtractDialog, type BottleExtractDialogProps, type BottleExtractDialogContext, } from "./components/bottle-extract-dialog";
108
+ export { BottleExtractionInlineProgress, type BottleExtractionInlineProgressProps, } from "./components/bottle-extraction-inline-progress";
107
109
  //# sourceMappingURL=index.d.ts.map
@@ -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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"}
package/dist/index.js CHANGED
@@ -106,4 +106,7 @@ export { OfferCard, } from "./components/offer-card";
106
106
  export { CardActionsTrigger, } from "./components/card-actions-trigger";
107
107
  export { PriceRangeBar } from "./components/price-range-bar";
108
108
  export { PricingGuidancePanel } from "./components/pricing-guidance-panel";
109
+ // ─── Bottle-extraction components (new in v0.14.x) ──────────────────────
110
+ export { BottleExtractDialog, } from "./components/bottle-extract-dialog";
111
+ export { BottleExtractionInlineProgress, } from "./components/bottle-extraction-inline-progress";
109
112
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;AAExE,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,4BAA4B;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AAEpC,4HAA4H;AAC5H,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,IAAI,oBAAoB,EACpC,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,IAAI,qBAAqB,EACtC,mBAAmB,EACnB,gBAAgB,IAAI,wBAAwB,GAC7C,MAAM,uBAAuB,CAAC;AAE/B,8BAA8B;AAC9B,cAAc,4BAA4B,CAAC;AAE3C,4FAA4F;AAC5F,OAAO,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,KAAK,EACL,KAAK,IAAI,aAAa,EACtB,WAAW,EACX,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EACL,WAAW,EACX,iBAAiB,GAKlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAwB,MAAM,0BAA0B,CAAC;AAE5E,0FAA0F;AAC1F,+FAA+F;AAC/F,oEAAoE;AAEpE,uEAAuE;AACvE,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAI/B,MAAM,0BAA0B,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AAEpC,yFAAyF;AACzF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAErF,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,sFAAsF;AACtF,OAAO,EAAE,YAAY,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG1E,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAuC,MAAM,yBAAyB,CAAC;AACzF,OAAO,EACL,UAAU,GAIX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,GAGjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,mBAAmB,GAMpB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAM3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGlH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,2EAA2E;AAE3E,OAAO,EAAE,UAAU,EAAwB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAuB,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,YAAY,EAA0B,MAAM,4BAA4B,CAAC;AAClF,OAAO,EACL,SAAS,GAGV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAyB,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACL,cAAc,GAEf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,GAGd,MAAM,6BAA6B,CAAC;AAErC,4EAA4E;AAE5E,OAAO,EACL,eAAe,GAGhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,gBAAgB,GAEjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EACL,aAAa,GAEd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,kBAAkB,GAGnB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,SAAS,GAIV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,GAGZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,WAAW,GAGZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,SAAS,GASV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,GAEnB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,aAAa,EAA4C,MAAM,8BAA8B,CAAC;AACvG,OAAO,EAAE,oBAAoB,EAA4D,MAAM,qCAAqC,CAAC;AAErI,2EAA2E;AAE3E,OAAO,EACL,mBAAmB,GAGpB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,8BAA8B,GAE/B,MAAM,gDAAgD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cellarnode/ui",
3
- "version": "0.13.0",
3
+ "version": "0.14.1",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Shared UI components, theme tokens, and chat/offer primitives for CellarNode dashboards.",