@cellarnode/ui 0.9.1 → 0.9.3
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/asset-list.d.ts +34 -0
- package/dist/components/asset-list.d.ts.map +1 -0
- package/dist/components/asset-list.js +34 -0
- package/dist/components/asset-list.js.map +1 -0
- package/dist/components/asset-list.stories.d.ts +20 -0
- package/dist/components/asset-list.stories.d.ts.map +1 -0
- package/dist/components/asset-list.stories.js +50 -0
- package/dist/components/asset-list.stories.js.map +1 -0
- package/dist/components/branch-overview-panel.d.ts +51 -0
- package/dist/components/branch-overview-panel.d.ts.map +1 -0
- package/dist/components/branch-overview-panel.js +48 -0
- package/dist/components/branch-overview-panel.js.map +1 -0
- package/dist/components/branch-overview-panel.stories.d.ts +16 -0
- package/dist/components/branch-overview-panel.stories.d.ts.map +1 -0
- package/dist/components/branch-overview-panel.stories.js +96 -0
- package/dist/components/branch-overview-panel.stories.js.map +1 -0
- package/dist/components/branch-resolution-modal.d.ts +31 -0
- package/dist/components/branch-resolution-modal.d.ts.map +1 -0
- package/dist/components/branch-resolution-modal.js +35 -0
- package/dist/components/branch-resolution-modal.js.map +1 -0
- package/dist/components/branch-resolution-modal.stories.d.ts +16 -0
- package/dist/components/branch-resolution-modal.stories.d.ts.map +1 -0
- package/dist/components/branch-resolution-modal.stories.js +66 -0
- package/dist/components/branch-resolution-modal.stories.js.map +1 -0
- package/dist/components/branch-resolution-modal.test.d.ts +2 -0
- package/dist/components/branch-resolution-modal.test.d.ts.map +1 -0
- package/dist/components/branch-resolution-modal.test.js +52 -0
- package/dist/components/branch-resolution-modal.test.js.map +1 -0
- package/dist/components/card-stack.d.ts +25 -0
- package/dist/components/card-stack.d.ts.map +1 -0
- package/dist/components/card-stack.js +26 -0
- package/dist/components/card-stack.js.map +1 -0
- package/dist/components/card-stack.stories.d.ts +21 -0
- package/dist/components/card-stack.stories.d.ts.map +1 -0
- package/dist/components/card-stack.stories.js +59 -0
- package/dist/components/card-stack.stories.js.map +1 -0
- package/dist/components/celebration-pulse.d.ts +21 -0
- package/dist/components/celebration-pulse.d.ts.map +1 -0
- package/dist/components/celebration-pulse.js +16 -0
- package/dist/components/celebration-pulse.js.map +1 -0
- package/dist/components/celebration-pulse.stories.d.ts +16 -0
- package/dist/components/celebration-pulse.stories.d.ts.map +1 -0
- package/dist/components/celebration-pulse.stories.js +29 -0
- package/dist/components/celebration-pulse.stories.js.map +1 -0
- package/dist/components/completed-offer-card.d.ts +34 -0
- package/dist/components/completed-offer-card.d.ts.map +1 -0
- package/dist/components/completed-offer-card.js +20 -0
- package/dist/components/completed-offer-card.js.map +1 -0
- package/dist/components/completed-offer-card.stories.d.ts +17 -0
- package/dist/components/completed-offer-card.stories.d.ts.map +1 -0
- package/dist/components/completed-offer-card.stories.js +75 -0
- package/dist/components/completed-offer-card.stories.js.map +1 -0
- package/dist/components/file-dropzone.d.ts +26 -0
- package/dist/components/file-dropzone.d.ts.map +1 -0
- package/dist/components/file-dropzone.js +49 -0
- package/dist/components/file-dropzone.js.map +1 -0
- package/dist/components/file-dropzone.stories.d.ts +21 -0
- package/dist/components/file-dropzone.stories.d.ts.map +1 -0
- package/dist/components/file-dropzone.stories.js +55 -0
- package/dist/components/file-dropzone.stories.js.map +1 -0
- package/dist/components/image-carousel.d.ts +41 -0
- package/dist/components/image-carousel.d.ts.map +1 -0
- package/dist/components/image-carousel.js +77 -0
- package/dist/components/image-carousel.js.map +1 -0
- package/dist/components/image-carousel.stories.d.ts +20 -0
- package/dist/components/image-carousel.stories.d.ts.map +1 -0
- package/dist/components/image-carousel.stories.js +62 -0
- package/dist/components/image-carousel.stories.js.map +1 -0
- package/dist/components/importer-picker-modal.d.ts +50 -0
- package/dist/components/importer-picker-modal.d.ts.map +1 -0
- package/dist/components/importer-picker-modal.js +82 -0
- package/dist/components/importer-picker-modal.js.map +1 -0
- package/dist/components/importer-picker-modal.stories.d.ts +17 -0
- package/dist/components/importer-picker-modal.stories.d.ts.map +1 -0
- package/dist/components/importer-picker-modal.stories.js +62 -0
- package/dist/components/importer-picker-modal.stories.js.map +1 -0
- package/dist/components/importer-picker-modal.test.d.ts +2 -0
- package/dist/components/importer-picker-modal.test.d.ts.map +1 -0
- package/dist/components/importer-picker-modal.test.js +51 -0
- package/dist/components/importer-picker-modal.test.js.map +1 -0
- package/dist/components/kanban-board.d.ts +19 -0
- package/dist/components/kanban-board.d.ts.map +1 -1
- package/dist/components/kanban-board.js.map +1 -1
- package/dist/components/kanban-dnd-board.d.ts +1 -1
- package/dist/components/kanban-dnd-board.d.ts.map +1 -1
- package/dist/components/kanban-dnd-board.js +52 -7
- package/dist/components/kanban-dnd-board.js.map +1 -1
- package/dist/components/kanban-dnd-board.stories.d.ts +1 -0
- package/dist/components/kanban-dnd-board.stories.d.ts.map +1 -1
- package/dist/components/kanban-dnd-board.stories.js +66 -0
- package/dist/components/kanban-dnd-board.stories.js.map +1 -1
- package/dist/components/kanban-dnd-board.test.d.ts +2 -0
- package/dist/components/kanban-dnd-board.test.d.ts.map +1 -0
- package/dist/components/kanban-dnd-board.test.js +34 -0
- package/dist/components/kanban-dnd-board.test.js.map +1 -0
- package/dist/components/offer-status-dots.d.ts +23 -0
- package/dist/components/offer-status-dots.d.ts.map +1 -0
- package/dist/components/offer-status-dots.js +34 -0
- package/dist/components/offer-status-dots.js.map +1 -0
- package/dist/components/offer-status-dots.stories.d.ts +19 -0
- package/dist/components/offer-status-dots.stories.d.ts.map +1 -0
- package/dist/components/offer-status-dots.stories.js +49 -0
- package/dist/components/offer-status-dots.stories.js.map +1 -0
- package/dist/components/product-card.d.ts +42 -0
- package/dist/components/product-card.d.ts.map +1 -0
- package/dist/components/product-card.js +20 -0
- package/dist/components/product-card.js.map +1 -0
- package/dist/components/product-card.stories.d.ts +20 -0
- package/dist/components/product-card.stories.d.ts.map +1 -0
- package/dist/components/product-card.stories.js +59 -0
- package/dist/components/product-card.stories.js.map +1 -0
- package/dist/components/product-list-row.d.ts +29 -0
- package/dist/components/product-list-row.d.ts.map +1 -0
- package/dist/components/product-list-row.js +13 -0
- package/dist/components/product-list-row.js.map +1 -0
- package/dist/components/product-list-row.stories.d.ts +19 -0
- package/dist/components/product-list-row.stories.d.ts.map +1 -0
- package/dist/components/product-list-row.stories.js +37 -0
- package/dist/components/product-list-row.stories.js.map +1 -0
- package/dist/components/sent-offer-card.d.ts +31 -0
- package/dist/components/sent-offer-card.d.ts.map +1 -0
- package/dist/components/sent-offer-card.js +23 -0
- package/dist/components/sent-offer-card.js.map +1 -0
- package/dist/components/sent-offer-card.stories.d.ts +17 -0
- package/dist/components/sent-offer-card.stories.d.ts.map +1 -0
- package/dist/components/sent-offer-card.stories.js +51 -0
- package/dist/components/sent-offer-card.stories.js.map +1 -0
- package/dist/components/view-toggle.d.ts +14 -0
- package/dist/components/view-toggle.d.ts.map +1 -0
- package/dist/components/view-toggle.js +14 -0
- package/dist/components/view-toggle.js.map +1 -0
- package/dist/components/view-toggle.stories.d.ts +20 -0
- package/dist/components/view-toggle.stories.d.ts.map +1 -0
- package/dist/components/view-toggle.stories.js +41 -0
- package/dist/components/view-toggle.stories.js.map +1 -0
- package/dist/hooks/use-celebration-pulse.d.ts +12 -0
- package/dist/hooks/use-celebration-pulse.d.ts.map +1 -0
- package/dist/hooks/use-celebration-pulse.js +28 -0
- package/dist/hooks/use-celebration-pulse.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/kanban-transitions.d.ts +62 -0
- package/dist/lib/kanban-transitions.d.ts.map +1 -1
- package/dist/lib/kanban-transitions.js +32 -0
- package/dist/lib/kanban-transitions.js.map +1 -1
- package/dist/lib/kanban-transitions.test.d.ts +2 -0
- package/dist/lib/kanban-transitions.test.d.ts.map +1 -0
- package/dist/lib/kanban-transitions.test.js +75 -0
- package/dist/lib/kanban-transitions.test.js.map +1 -0
- package/dist/offer/index.d.ts +3 -0
- package/dist/offer/index.d.ts.map +1 -1
- package/dist/offer/index.js +7 -0
- package/dist/offer/index.js.map +1 -1
- package/dist/offer/sensory-profile.d.ts.map +1 -1
- package/dist/offer/sensory-profile.js +1 -1
- package/dist/offer/sensory-profile.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ProductCard } from "./product-card";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Components/ProductCard",
|
|
5
|
+
component: ProductCard,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: "Generic media card with slots for image, status pill, kebab menu, stack overlay, title, subtitle, and footer. Used on the producer portfolio grid and other product-centric surfaces.",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
export const Default = {
|
|
17
|
+
args: {
|
|
18
|
+
image: {
|
|
19
|
+
url: "https://images.unsplash.com/photo-1506377247377-2a5b3b417ebb?w=800&q=80",
|
|
20
|
+
altText: "Sourdough boule",
|
|
21
|
+
width: 800,
|
|
22
|
+
height: 500,
|
|
23
|
+
},
|
|
24
|
+
title: "Sourdough Boule",
|
|
25
|
+
subtitle: "Bread · Sourdough · 1kg loaf",
|
|
26
|
+
statusSlot: (_jsx("span", { className: "rounded-full bg-green-100 px-3 py-1 text-xs font-semibold text-green-800", children: "Active" })),
|
|
27
|
+
footerSlot: (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-base font-bold", children: "$8.50" }), _jsx("span", { className: "rounded-full bg-primary/10 px-2.5 py-1 text-xs font-semibold text-primary", children: "3 matches" })] })),
|
|
28
|
+
onClick: () => window.alert("card clicked"),
|
|
29
|
+
},
|
|
30
|
+
decorators: [
|
|
31
|
+
(Story) => (_jsx("div", { className: "w-80", children: _jsx(Story, {}) })),
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
export const WithPlaceholder = {
|
|
35
|
+
args: {
|
|
36
|
+
image: null,
|
|
37
|
+
placeholder: (_jsx("div", { className: "flex size-full items-center justify-center bg-gradient-to-br from-teal-600 to-teal-800", children: _jsx("span", { className: "text-7xl font-bold text-white/80", children: "S" }) })),
|
|
38
|
+
title: "Sourdough Boule",
|
|
39
|
+
subtitle: "Bread · Sourdough",
|
|
40
|
+
statusSlot: (_jsx("span", { className: "rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800", children: "Needs Review" })),
|
|
41
|
+
footerSlot: (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-base font-bold", children: "$8.50" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "No matches yet" })] })),
|
|
42
|
+
},
|
|
43
|
+
decorators: [
|
|
44
|
+
(Story) => (_jsx("div", { className: "w-80", children: _jsx(Story, {}) })),
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
export const Draft = {
|
|
48
|
+
args: {
|
|
49
|
+
image: null,
|
|
50
|
+
placeholder: (_jsx("div", { className: "flex size-full items-center justify-center bg-gradient-to-br from-slate-400 to-slate-600", children: _jsx("span", { className: "text-7xl font-bold text-white/80", children: "H" }) })),
|
|
51
|
+
title: "Honey Wheat Loaf",
|
|
52
|
+
subtitle: "Bread · Whole wheat",
|
|
53
|
+
statusSlot: (_jsx("span", { className: "rounded-full bg-slate-200 px-3 py-1 text-xs font-semibold text-slate-700", children: "Draft" })),
|
|
54
|
+
},
|
|
55
|
+
decorators: [
|
|
56
|
+
(Story) => (_jsx("div", { className: "w-80", children: _jsx(Story, {}) })),
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=product-card.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-card.stories.js","sourceRoot":"","sources":["../../src/components/product-card.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,uLAAuL;aAC1L;SACF;KACF;CACiC,CAAC;AAErC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,GAAG,EAAE,yEAAyE;YAC9E,OAAO,EAAE,iBAAiB;YAC1B,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,8BAA8B;QACxC,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,0EAA0E,uBAEnF,CACR;QACD,UAAU,EAAE,CACV,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,eAAM,SAAS,EAAC,2EAA2E,0BAEpF,IACH,CACP;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;KAC5C;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CACX,cAAK,SAAS,EAAC,wFAAwF,YACrG,eAAM,SAAS,EAAC,kCAAkC,kBAAS,GACvD,CACP;QACD,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,mBAAmB;QAC7B,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,4EAA4E,6BAErF,CACR;QACD,UAAU,EAAE,CACV,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,sBAAa,EAClD,eAAM,SAAS,EAAC,+BAA+B,+BAAsB,IACjE,CACP;KACF;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CACX,cAAK,SAAS,EAAC,0FAA0F,YACvG,eAAM,SAAS,EAAC,kCAAkC,kBAAS,GACvD,CACP;QACD,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,qBAAqB;QAC/B,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,0EAA0E,sBAEnF,CACR;KACF;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface ProductListRowProps {
|
|
3
|
+
image?: {
|
|
4
|
+
url: string;
|
|
5
|
+
altText?: string | null;
|
|
6
|
+
} | null;
|
|
7
|
+
/** Placeholder element rendered in the thumbnail when `image` is null. */
|
|
8
|
+
placeholder?: React.ReactNode;
|
|
9
|
+
/** Element slot shown before the title (e.g. status pill). */
|
|
10
|
+
statusSlot?: React.ReactNode;
|
|
11
|
+
title: React.ReactNode;
|
|
12
|
+
subtitle?: React.ReactNode;
|
|
13
|
+
/** Right-aligned trailing content (price, matches badge, etc.). */
|
|
14
|
+
trailingSlot?: React.ReactNode;
|
|
15
|
+
/** Always-visible kebab menu slot (unlike the card's fade-on-hover kebab). */
|
|
16
|
+
kebabSlot?: React.ReactNode;
|
|
17
|
+
/** When true, renders with a left indent + teal guide line. */
|
|
18
|
+
indent?: boolean;
|
|
19
|
+
onClick?: () => void;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* List-view counterpart to `ProductCard`. Same data, horizontal row layout.
|
|
24
|
+
* When rendering sibling variants that share a parent beverage, pass
|
|
25
|
+
* `indent` to shift the row right and render a thin teal guide line
|
|
26
|
+
* connecting it to the parent.
|
|
27
|
+
*/
|
|
28
|
+
export declare function ProductListRow({ image, placeholder, statusSlot, title, subtitle, trailingSlot, kebabSlot, indent, onClick, className, }: ProductListRowProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=product-list-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-list-row.d.ts","sourceRoot":"","sources":["../../src/components/product-list-row.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,GAAG,IAAI,CAAC;IACT,0EAA0E;IAC1E,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,mEAAmE;IACnE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,MAAc,EACd,OAAO,EACP,SAAS,GACV,EAAE,mBAAmB,2CAmCrB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
/**
|
|
4
|
+
* List-view counterpart to `ProductCard`. Same data, horizontal row layout.
|
|
5
|
+
* When rendering sibling variants that share a parent beverage, pass
|
|
6
|
+
* `indent` to shift the row right and render a thin teal guide line
|
|
7
|
+
* connecting it to the parent.
|
|
8
|
+
*/
|
|
9
|
+
export function ProductListRow({ image, placeholder, statusSlot, title, subtitle, trailingSlot, kebabSlot, indent = false, onClick, className, }) {
|
|
10
|
+
return (_jsxs("div", { className: cn("relative flex items-center gap-4 rounded-2xl border border-border/60 bg-card p-3 transition-all hover:bg-accent/20", indent &&
|
|
11
|
+
"ml-9 before:absolute before:-left-4 before:top-0 before:h-full before:w-0.5 before:bg-primary/20", onClick && "cursor-pointer", className), onClick: onClick, children: [_jsx("div", { className: "relative size-14 shrink-0 overflow-hidden rounded-xl bg-muted", children: image ? (_jsx("img", { src: image.url, alt: image.altText ?? "", className: "size-full object-cover", loading: "lazy" })) : (placeholder) }), statusSlot && _jsx("div", { className: "shrink-0", children: statusSlot }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-sm font-semibold text-foreground", children: title }), subtitle && (_jsx("p", { className: "truncate text-xs text-muted-foreground", children: subtitle }))] }), trailingSlot && _jsx("div", { className: "shrink-0", children: trailingSlot }), kebabSlot && _jsx("div", { className: "shrink-0", children: kebabSlot })] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=product-list-row.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-list-row.js","sourceRoot":"","sources":["../../src/components/product-list-row.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAuBlC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,MAAM,GAAG,KAAK,EACd,OAAO,EACP,SAAS,GACW;IACpB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,oHAAoH,EACpH,MAAM;YACJ,kGAAkG,EACpG,OAAO,IAAI,gBAAgB,EAC3B,SAAS,CACV,EACD,OAAO,EAAE,OAAO,aAEhB,cAAK,SAAS,EAAC,+DAA+D,YAC3E,KAAK,CAAC,CAAC,CAAC,CACP,cACE,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,GAAG,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,EACxB,SAAS,EAAC,wBAAwB,EAClC,OAAO,EAAC,MAAM,GACd,CACH,CAAC,CAAC,CAAC,CACF,WAAW,CACZ,GACG,EACL,UAAU,IAAI,cAAK,SAAS,EAAC,UAAU,YAAE,UAAU,GAAO,EAC3D,eAAK,SAAS,EAAC,gBAAgB,aAC7B,YAAG,SAAS,EAAC,gDAAgD,YAAE,KAAK,GAAK,EACxE,QAAQ,IAAI,CACX,YAAG,SAAS,EAAC,wCAAwC,YAAE,QAAQ,GAAK,CACrE,IACG,EACL,YAAY,IAAI,cAAK,SAAS,EAAC,UAAU,YAAE,YAAY,GAAO,EAC9D,SAAS,IAAI,cAAK,SAAS,EAAC,UAAU,YAAE,SAAS,GAAO,IACrD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { ProductListRow } from "./product-list-row";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof ProductListRow;
|
|
6
|
+
tags: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
export declare const Default: Story;
|
|
18
|
+
export declare const ParentAndSibling: Story;
|
|
19
|
+
//# sourceMappingURL=product-list-row.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-list-row.stories.d.ts","sourceRoot":"","sources":["../../src/components/product-list-row.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,QAAA,MAAM,IAAI;;;;;;;;;;;CAY6B,CAAC;AAExC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAOnC,eAAO,MAAM,OAAO,EAAE,KAoBrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAyC9B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ProductListRow } from "./product-list-row";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Components/ProductListRow",
|
|
5
|
+
component: ProductListRow,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: "List-view counterpart to ProductCard. Same data, horizontal layout. `indent` prop renders a teal guide line for sibling-variant grouping.",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
const sharedImage = {
|
|
17
|
+
url: "https://images.unsplash.com/photo-1506377247377-2a5b3b417ebb?w=200&q=80",
|
|
18
|
+
altText: "Sourdough",
|
|
19
|
+
};
|
|
20
|
+
export const Default = {
|
|
21
|
+
args: {
|
|
22
|
+
image: sharedImage,
|
|
23
|
+
title: "Sourdough Boule",
|
|
24
|
+
subtitle: "Bread · 1kg loaf · 72-hour fermented",
|
|
25
|
+
statusSlot: (_jsx("span", { className: "rounded-full bg-green-100 px-2.5 py-1 text-xs font-semibold text-green-800", children: "Active" })),
|
|
26
|
+
trailingSlot: _jsx("span", { className: "text-sm font-bold", children: "$8.50" }),
|
|
27
|
+
onClick: () => window.alert("row clicked"),
|
|
28
|
+
},
|
|
29
|
+
decorators: [
|
|
30
|
+
(Story) => (_jsx("div", { className: "w-[560px]", children: _jsx(Story, {}) })),
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
export const ParentAndSibling = {
|
|
34
|
+
args: { title: "" },
|
|
35
|
+
render: () => (_jsxs("div", { className: "w-[560px] space-y-2", children: [_jsx(ProductListRow, { image: sharedImage, title: "Ch\u00E2teau Margaux 2018", subtitle: "Red Wine \u00B7 Bordeaux \u00B7 750ml", statusSlot: _jsx("span", { className: "rounded-full bg-green-100 px-2.5 py-1 text-xs font-semibold text-green-800", children: "Active" }), trailingSlot: _jsx("span", { className: "text-sm font-bold", children: "\u20AC420" }) }), _jsx(ProductListRow, { indent: true, image: sharedImage, title: "Ch\u00E2teau Margaux 2019", subtitle: "Red Wine \u00B7 Bordeaux \u00B7 750ml", statusSlot: _jsx("span", { className: "rounded-full bg-green-100 px-2.5 py-1 text-xs font-semibold text-green-800", children: "Active" }), trailingSlot: _jsx("span", { className: "text-sm font-bold", children: "\u20AC385" }) }), _jsx(ProductListRow, { indent: true, image: sharedImage, title: "Ch\u00E2teau Margaux 2020", subtitle: "Red Wine \u00B7 Bordeaux \u00B7 750ml", statusSlot: _jsx("span", { className: "rounded-full bg-yellow-100 px-2.5 py-1 text-xs font-semibold text-yellow-800", children: "Needs Review" }), trailingSlot: _jsx("span", { className: "text-sm font-bold", children: "\u20AC360" }) })] })),
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=product-list-row.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-list-row.stories.js","sourceRoot":"","sources":["../../src/components/product-list-row.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,2BAA2B;IAClC,SAAS,EAAE,cAAc;IACzB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,2IAA2I;aAC9I;SACF;KACF;CACoC,CAAC;AAExC,eAAe,IAAI,CAAC;AAGpB,MAAM,WAAW,GAAG;IAClB,GAAG,EAAE,yEAAyE;IAC9E,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,sCAAsC;QAChD,UAAU,EAAE,CACV,eAAM,SAAS,EAAC,4EAA4E,uBAErF,CACR;QACD,YAAY,EAAE,eAAM,SAAS,EAAC,mBAAmB,sBAAa;QAC9D,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;KAC3C;IACD,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,SAAS,EAAC,WAAW,YACxB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAU;IACrC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACnB,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,cAAc,IACb,KAAK,EAAE,WAAW,EAClB,KAAK,EAAC,2BAAsB,EAC5B,QAAQ,EAAC,uCAA6B,EACtC,UAAU,EACR,eAAM,SAAS,EAAC,4EAA4E,uBAErF,EAET,YAAY,EAAE,eAAM,SAAS,EAAC,mBAAmB,0BAAY,GAC7D,EACF,KAAC,cAAc,IACb,MAAM,QACN,KAAK,EAAE,WAAW,EAClB,KAAK,EAAC,2BAAsB,EAC5B,QAAQ,EAAC,uCAA6B,EACtC,UAAU,EACR,eAAM,SAAS,EAAC,4EAA4E,uBAErF,EAET,YAAY,EAAE,eAAM,SAAS,EAAC,mBAAmB,0BAAY,GAC7D,EACF,KAAC,cAAc,IACb,MAAM,QACN,KAAK,EAAE,WAAW,EAClB,KAAK,EAAC,2BAAsB,EAC5B,QAAQ,EAAC,uCAA6B,EACtC,UAAU,EACR,eAAM,SAAS,EAAC,8EAA8E,6BAEvF,EAET,YAAY,EAAE,eAAM,SAAS,EAAC,mBAAmB,0BAAY,GAC7D,IACE,CACP;CACF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type OfferStatusDotState } from "./offer-status-dots";
|
|
3
|
+
export interface SentOfferCardProps {
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle?: string;
|
|
6
|
+
/** Icon shown in the meta row (typically lucide-react). 12px recommended. */
|
|
7
|
+
sourceIcon?: ReactNode;
|
|
8
|
+
/** One state per offer sent. */
|
|
9
|
+
statuses: OfferStatusDotState[];
|
|
10
|
+
/**
|
|
11
|
+
* Auto-summary line shown beneath the dots, e.g.
|
|
12
|
+
* "Sent to 3 importers · 1 counter-offer · best €48".
|
|
13
|
+
* The caller is responsible for computing this string.
|
|
14
|
+
*/
|
|
15
|
+
summaryLine: string;
|
|
16
|
+
/** Action label shown at the bottom. Default: "View offers". */
|
|
17
|
+
actionLabel?: string;
|
|
18
|
+
/** Click handler — fires when the card or the action link is activated. */
|
|
19
|
+
onClick?: () => void;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Compact card representing a parent offer that has been sent to one or
|
|
24
|
+
* more importers. Designed for the producer journey board's "Sent" column.
|
|
25
|
+
*
|
|
26
|
+
* The card shows: meta row (icon + subtitle), title, status dots row,
|
|
27
|
+
* auto-summary line, and an action link. Click handler fires from the
|
|
28
|
+
* whole card surface for keyboard accessibility.
|
|
29
|
+
*/
|
|
30
|
+
export declare function SentOfferCard({ title, subtitle, sourceIcon, statuses, summaryLine, actionLabel, onClick, className, }: SentOfferCardProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=sent-offer-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sent-offer-card.d.ts","sourceRoot":"","sources":["../../src/components/sent-offer-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gCAAgC;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,WAA2B,EAC3B,OAAO,EACP,SAAS,GACV,EAAE,kBAAkB,2CAkDpB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowRight } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { OfferStatusDots } from "./offer-status-dots";
|
|
5
|
+
/**
|
|
6
|
+
* Compact card representing a parent offer that has been sent to one or
|
|
7
|
+
* more importers. Designed for the producer journey board's "Sent" column.
|
|
8
|
+
*
|
|
9
|
+
* The card shows: meta row (icon + subtitle), title, status dots row,
|
|
10
|
+
* auto-summary line, and an action link. Click handler fires from the
|
|
11
|
+
* whole card surface for keyboard accessibility.
|
|
12
|
+
*/
|
|
13
|
+
export function SentOfferCard({ title, subtitle, sourceIcon, statuses, summaryLine, actionLabel = "View offers", onClick, className, }) {
|
|
14
|
+
return (_jsxs("div", { role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, onClick: onClick, onKeyDown: onClick
|
|
15
|
+
? (e) => {
|
|
16
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
17
|
+
e.preventDefault();
|
|
18
|
+
onClick();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
: undefined, className: cn("group flex flex-col gap-2 rounded-lg border border-border bg-card p-3 shadow-xs transition-colors", onClick && "cursor-pointer hover:border-border/80 hover:bg-muted/20", className), children: [(sourceIcon || subtitle) && (_jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [sourceIcon, subtitle && _jsx("span", { children: subtitle })] })), _jsx("h4", { className: "text-sm/5 font-semibold text-foreground", children: title }), statuses.length > 0 && (_jsx("div", { className: "mt-1", children: _jsx(OfferStatusDots, { states: statuses }) })), _jsx("p", { className: "text-xs text-muted-foreground", children: summaryLine }), _jsxs("div", { className: "mt-1 flex items-center gap-1 text-xs font-medium text-primary group-hover:text-primary/80", children: [actionLabel, _jsx(ArrowRight, { className: "size-3", "aria-hidden": true })] })] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sent-offer-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sent-offer-card.js","sourceRoot":"","sources":["../../src/components/sent-offer-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,eAAe,EAA4B,MAAM,qBAAqB,CAAC;AAsBhF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,WAAW,GAAG,aAAa,EAC3B,OAAO,EACP,SAAS,GACU;IACnB,OAAO,CACL,eACE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACpC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACjC,OAAO,EAAE,OAAO,EAChB,SAAS,EACP,OAAO;YACL,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBACJ,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACvC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS,EAEf,SAAS,EAAE,EAAE,CACX,mGAAmG,EACnG,OAAO,IAAI,yDAAyD,EACpE,SAAS,CACV,aAGA,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,CAC3B,eAAK,SAAS,EAAC,yDAAyD,aACrE,UAAU,EACV,QAAQ,IAAI,yBAAO,QAAQ,GAAQ,IAChC,CACP,EAGD,aAAI,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAM,EAGnE,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,eAAe,IAAC,MAAM,EAAE,QAAQ,GAAI,GACjC,CACP,EAGD,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,EAG9D,eAAK,SAAS,EAAC,2FAA2F,aACvG,WAAW,EACZ,KAAC,UAAU,IAAC,SAAS,EAAC,QAAQ,wBAAe,IACzC,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { SentOfferCard } from "./sent-offer-card";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof SentOfferCard;
|
|
6
|
+
tags: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Default: Story;
|
|
14
|
+
export declare const NoResponses: Story;
|
|
15
|
+
export declare const SingleImporter: Story;
|
|
16
|
+
export declare const ManyImporters: Story;
|
|
17
|
+
//# sourceMappingURL=sent-offer-card.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sent-offer-card.stories.d.ts","sourceRoot":"","sources":["../../src/components/sent-offer-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,QAAA,MAAM,IAAI;;;;;;;CAK4B,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAS5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAS3B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Sparkles } from "lucide-react";
|
|
3
|
+
import { SentOfferCard } from "./sent-offer-card";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Components/SentOfferCard",
|
|
6
|
+
component: SentOfferCard,
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
parameters: { layout: "padded" },
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
export const Default = {
|
|
12
|
+
args: {
|
|
13
|
+
title: "Cabernet Sauvignon 2023",
|
|
14
|
+
subtitle: "Match · 2 days ago",
|
|
15
|
+
sourceIcon: _jsx(Sparkles, { className: "size-3", "aria-hidden": true }),
|
|
16
|
+
statuses: ["pending", "in_negotiation", "declined"],
|
|
17
|
+
summaryLine: "Sent to 3 importers · 1 counter-offer · best €48",
|
|
18
|
+
onClick: () => alert("Card clicked"),
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export const NoResponses = {
|
|
22
|
+
args: {
|
|
23
|
+
title: "Pinot Noir 2022",
|
|
24
|
+
subtitle: "Match · 5h ago",
|
|
25
|
+
sourceIcon: _jsx(Sparkles, { className: "size-3", "aria-hidden": true }),
|
|
26
|
+
statuses: ["pending", "pending"],
|
|
27
|
+
summaryLine: "Sent to 2 importers · no responses yet",
|
|
28
|
+
onClick: () => alert("Card clicked"),
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export const SingleImporter = {
|
|
32
|
+
args: {
|
|
33
|
+
title: "Riesling 2021",
|
|
34
|
+
subtitle: "Importer-direct · 1d ago",
|
|
35
|
+
sourceIcon: _jsx(Sparkles, { className: "size-3", "aria-hidden": true }),
|
|
36
|
+
statuses: ["accepted"],
|
|
37
|
+
summaryLine: "Sent to 1 importer · accepted (review pending)",
|
|
38
|
+
onClick: () => alert("Card clicked"),
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
export const ManyImporters = {
|
|
42
|
+
args: {
|
|
43
|
+
title: "Merlot 2024",
|
|
44
|
+
subtitle: "Match · 3 days ago",
|
|
45
|
+
sourceIcon: _jsx(Sparkles, { className: "size-3", "aria-hidden": true }),
|
|
46
|
+
statuses: ["pending", "viewed", "in_negotiation", "declined", "in_negotiation"],
|
|
47
|
+
summaryLine: "Sent to 5 importers · 2 counter-offers · best €52",
|
|
48
|
+
onClick: () => alert("Card clicked"),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=sent-offer-card.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sent-offer-card.stories.js","sourceRoot":"","sources":["../../src/components/sent-offer-card.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,aAAa;IACxB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;CACI,CAAC;AAEvC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,oBAAoB;QAC9B,UAAU,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,wBAAe;QACvD,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,CAAC;QACnD,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;KACrC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,wBAAe;QACvD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAChC,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;KACrC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAU;IACnC,IAAI,EAAE;QACJ,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,0BAA0B;QACpC,UAAU,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,wBAAe;QACvD,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;KACrC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,oBAAoB;QAC9B,UAAU,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,wBAAe;QACvD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,CAAC;QAC/E,WAAW,EAAE,mDAAmD;QAChE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;KACrC;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ViewToggleProps {
|
|
2
|
+
value: "grid" | "list";
|
|
3
|
+
onValueChange: (value: "grid" | "list") => void;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Segmented grid/list view toggle. Controlled.
|
|
8
|
+
*
|
|
9
|
+
* Used to switch between card grid and list layouts on any content surface
|
|
10
|
+
* that supports both. Persists externally via localStorage or query params —
|
|
11
|
+
* the component itself is stateless.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ViewToggle({ value, onValueChange, className }: ViewToggleProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=view-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-toggle.d.ts","sourceRoot":"","sources":["../../src/components/view-toggle.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,eAAe,2CA6C9E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ListBulletIcon, Squares2X2Icon } from "@heroicons/react/20/solid";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
/**
|
|
5
|
+
* Segmented grid/list view toggle. Controlled.
|
|
6
|
+
*
|
|
7
|
+
* Used to switch between card grid and list layouts on any content surface
|
|
8
|
+
* that supports both. Persists externally via localStorage or query params —
|
|
9
|
+
* the component itself is stateless.
|
|
10
|
+
*/
|
|
11
|
+
export function ViewToggle({ value, onValueChange, className }) {
|
|
12
|
+
return (_jsxs("div", { role: "tablist", "aria-label": "View mode", className: cn("relative inline-flex items-center gap-0.5 rounded-xl border border-border/60 bg-muted/40 p-0.5 backdrop-blur-md", className), children: [_jsx("div", { "aria-hidden": true, className: cn("absolute top-0.5 bottom-0.5 w-[calc(50%-0.125rem)] rounded-lg bg-background shadow-sm transition-transform duration-250 ease-[cubic-bezier(0.16,1,0.3,1)]", value === "list" && "translate-x-[calc(100%+0.125rem)]") }), _jsxs("button", { type: "button", role: "tab", "aria-selected": value === "grid", onClick: () => onValueChange("grid"), className: cn("relative z-10 flex size-8 items-center justify-center rounded-lg transition-colors", value === "grid" ? "text-primary" : "text-muted-foreground hover:text-foreground"), children: [_jsx(Squares2X2Icon, { className: "size-4", "aria-hidden": true }), _jsx("span", { className: "sr-only", children: "Grid view" })] }), _jsxs("button", { type: "button", role: "tab", "aria-selected": value === "list", onClick: () => onValueChange("list"), className: cn("relative z-10 flex size-8 items-center justify-center rounded-lg transition-colors", value === "list" ? "text-primary" : "text-muted-foreground hover:text-foreground"), children: [_jsx(ListBulletIcon, { className: "size-4", "aria-hidden": true }), _jsx("span", { className: "sr-only", children: "List view" })] })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=view-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-toggle.js","sourceRoot":"","sources":["../../src/components/view-toggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAmB;IAC7E,OAAO,CACL,eACE,IAAI,EAAC,SAAS,gBACH,WAAW,EACtB,SAAS,EAAE,EAAE,CACX,iHAAiH,EACjH,SAAS,CACV,aAED,mCAEE,SAAS,EAAE,EAAE,CACX,2JAA2J,EAC3J,KAAK,KAAK,MAAM,IAAI,mCAAmC,CACxD,GACD,EACF,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,KAAK,KAAK,MAAM,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EACpC,SAAS,EAAE,EAAE,CACX,oFAAoF,EACpF,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,6CAA6C,CAClF,aAED,KAAC,cAAc,IAAC,SAAS,EAAC,QAAQ,wBAAe,EACjD,eAAM,SAAS,EAAC,SAAS,0BAAiB,IACnC,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,KAAK,KAAK,MAAM,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EACpC,SAAS,EAAE,EAAE,CACX,oFAAoF,EACpF,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,6CAA6C,CAClF,aAED,KAAC,cAAc,IAAC,SAAS,EAAC,QAAQ,wBAAe,EACjD,eAAM,SAAS,EAAC,SAAS,0BAAiB,IACnC,IACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { ViewToggle } from "./view-toggle";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof ViewToggle;
|
|
6
|
+
tags: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
docs: {
|
|
9
|
+
description: {
|
|
10
|
+
component: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
type Story = StoryObj<typeof meta>;
|
|
17
|
+
export declare const Default: Story;
|
|
18
|
+
export declare const ListDefault: Story;
|
|
19
|
+
export declare const WithLabel: Story;
|
|
20
|
+
//# sourceMappingURL=view-toggle.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-toggle.stories.d.ts","sourceRoot":"","sources":["../../src/components/view-toggle.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,QAAA,MAAM,IAAI;;;;;;;;;;;CAYyB,CAAC;AAEpC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAwBnC,eAAO,MAAM,OAAO,EAAE,KAGrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAGzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAGvB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { ViewToggle } from "./view-toggle";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Components/ViewToggle",
|
|
6
|
+
component: ViewToggle,
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
parameters: {
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: "Segmented grid/list view toggle. Controlled — persist the `value` externally (localStorage, query params) since the component is stateless. Part of the producer portfolio redesign.",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
export default meta;
|
|
17
|
+
function DefaultExample() {
|
|
18
|
+
const [value, setValue] = useState("grid");
|
|
19
|
+
return _jsx(ViewToggle, { value: value, onValueChange: setValue });
|
|
20
|
+
}
|
|
21
|
+
function ListDefaultExample() {
|
|
22
|
+
const [value, setValue] = useState("list");
|
|
23
|
+
return _jsx(ViewToggle, { value: value, onValueChange: setValue });
|
|
24
|
+
}
|
|
25
|
+
function WithLabelExample() {
|
|
26
|
+
const [value, setValue] = useState("grid");
|
|
27
|
+
return (_jsxs("div", { className: "flex items-center gap-4", children: [_jsx(ViewToggle, { value: value, onValueChange: setValue }), _jsx("span", { className: "text-xs text-muted-foreground", children: "12 products \u00B7 sorted by recently updated" })] }));
|
|
28
|
+
}
|
|
29
|
+
export const Default = {
|
|
30
|
+
args: { value: "grid", onValueChange: () => { } },
|
|
31
|
+
render: () => _jsx(DefaultExample, {}),
|
|
32
|
+
};
|
|
33
|
+
export const ListDefault = {
|
|
34
|
+
args: { value: "list", onValueChange: () => { } },
|
|
35
|
+
render: () => _jsx(ListDefaultExample, {}),
|
|
36
|
+
};
|
|
37
|
+
export const WithLabel = {
|
|
38
|
+
args: { value: "grid", onValueChange: () => { } },
|
|
39
|
+
render: () => _jsx(WithLabelExample, {}),
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=view-toggle.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-toggle.stories.js","sourceRoot":"","sources":["../../src/components/view-toggle.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,uBAAuB;IAC9B,SAAS,EAAE,UAAU;IACrB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,sLAAsL;aACzL;SACF;KACF;CACgC,CAAC;AAEpC,eAAe,IAAI,CAAC;AAGpB,SAAS,cAAc;IACrB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,MAAM,CAAC,CAAC;IAC5D,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,GAAI,CAAC;AAC/D,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,MAAM,CAAC,CAAC;IAC5D,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,GAAI,CAAC;AAC/D,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,MAAM,CAAC,CAAC;IAC5D,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,GAAI,EACrD,eAAM,SAAS,EAAC,+BAA+B,8DAExC,IACH,CACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;IAChD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,cAAc,KAAG;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;IAChD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,kBAAkB,KAAG;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE;IAChD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,gBAAgB,KAAG;CACnC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks whether the celebration pulse animation should fire on mount.
|
|
3
|
+
* Returns `true` for the first ~500ms, then `false`.
|
|
4
|
+
*
|
|
5
|
+
* Honors the `prefers-reduced-motion` media query — when reduced motion
|
|
6
|
+
* is preferred, the hook returns `false` immediately so the wrapper can
|
|
7
|
+
* skip the animation entirely (or substitute a single fade).
|
|
8
|
+
*
|
|
9
|
+
* @param duration milliseconds the pulse stays "active" — default 500
|
|
10
|
+
*/
|
|
11
|
+
export declare function useCelebrationPulse(duration?: number): boolean;
|
|
12
|
+
//# sourceMappingURL=use-celebration-pulse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-celebration-pulse.d.ts","sourceRoot":"","sources":["../../src/hooks/use-celebration-pulse.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,SAAM,GAAG,OAAO,CAe3D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Tracks whether the celebration pulse animation should fire on mount.
|
|
4
|
+
* Returns `true` for the first ~500ms, then `false`.
|
|
5
|
+
*
|
|
6
|
+
* Honors the `prefers-reduced-motion` media query — when reduced motion
|
|
7
|
+
* is preferred, the hook returns `false` immediately so the wrapper can
|
|
8
|
+
* skip the animation entirely (or substitute a single fade).
|
|
9
|
+
*
|
|
10
|
+
* @param duration milliseconds the pulse stays "active" — default 500
|
|
11
|
+
*/
|
|
12
|
+
export function useCelebrationPulse(duration = 500) {
|
|
13
|
+
// Lazy-init avoids calling setState synchronously inside the effect:
|
|
14
|
+
// SSR → never animate; reduced motion → never animate; otherwise start active.
|
|
15
|
+
const [isActive, setIsActive] = useState(() => {
|
|
16
|
+
if (typeof window === "undefined")
|
|
17
|
+
return false;
|
|
18
|
+
return !window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
19
|
+
});
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!isActive)
|
|
22
|
+
return;
|
|
23
|
+
const timer = window.setTimeout(() => setIsActive(false), duration);
|
|
24
|
+
return () => window.clearTimeout(timer);
|
|
25
|
+
}, [duration, isActive]);
|
|
26
|
+
return isActive;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=use-celebration-pulse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-celebration-pulse.js","sourceRoot":"","sources":["../../src/hooks/use-celebration-pulse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAQ,GAAG,GAAG;IAChD,qEAAqE;IACrE,+EAA+E;IAC/E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpE,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export * from "./components/heading";
|
|
|
26
26
|
export * from "./components/input";
|
|
27
27
|
export { KanbanBoard, KanbanColumnShell, type KanbanColumn, type KanbanBoardProps, type KanbanColumnShellProps, type ColumnDndState, } from "./components/kanban-board";
|
|
28
28
|
export { KanbanCard, type KanbanCardProps } from "./components/kanban-card";
|
|
29
|
-
export { createTransitionValidator, type TransitionRules, } from "./lib/kanban-transitions";
|
|
29
|
+
export { createTransitionValidator, createGatedTransitionValidator, type TransitionRules, type GateResult, type GateRules, } from "./lib/kanban-transitions";
|
|
30
30
|
export * from "./components/label";
|
|
31
31
|
export * from "./components/link";
|
|
32
32
|
export * from "./components/listbox";
|
|
@@ -80,4 +80,16 @@ export { CompositionEditor, serializeComposition, parseCompositionString } from
|
|
|
80
80
|
export type { CompositionEditorProps, CompositionEntry } from "./components/composition-editor";
|
|
81
81
|
export { AnimatedSelect } from "./components/animated-select";
|
|
82
82
|
export type { AnimatedSelectProps, AnimatedSelectOption } from "./components/animated-select";
|
|
83
|
+
export { ViewToggle, type ViewToggleProps } from "./components/view-toggle";
|
|
84
|
+
export { CardStack, type CardStackProps } from "./components/card-stack";
|
|
85
|
+
export { FileDropzone, type FileDropzoneProps } from "./components/file-dropzone";
|
|
86
|
+
export { AssetList, type AssetListProps, type AssetListItem, } from "./components/asset-list";
|
|
87
|
+
export { ProductCard, type ProductCardProps } from "./components/product-card";
|
|
88
|
+
export { ProductListRow, type ProductListRowProps, } from "./components/product-list-row";
|
|
89
|
+
export { ImageCarousel, type ImageCarouselProps, type CarouselImage, } from "./components/image-carousel";
|
|
90
|
+
export { OfferStatusDots, type OfferStatusDotsProps, type OfferStatusDotState, } from "./components/offer-status-dots";
|
|
91
|
+
export { CelebrationPulse, type CelebrationPulseProps, } from "./components/celebration-pulse";
|
|
92
|
+
export { useCelebrationPulse } from "./hooks/use-celebration-pulse";
|
|
93
|
+
export { SentOfferCard, type SentOfferCardProps, } from "./components/sent-offer-card";
|
|
94
|
+
export { CompletedOfferCard, type CompletedOfferCardProps, type CompletedOfferStat, } from "./components/completed-offer-card";
|
|
83
95
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGxE,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;AAG9D,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;AAGpC,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;AAG/B,cAAc,4BAA4B,CAAC;AAG3C,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,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAO5E,OAAO,EACL,yBAAyB,EACzB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,7 @@ export { KanbanCard } from "./components/kanban-card";
|
|
|
35
35
|
// Import directly: import { useDraggableCard } from "@cellarnode/ui/dist/hooks/use-kanban-dnd"
|
|
36
36
|
// Or the importer dashboard imports from its own re-export wrapper.
|
|
37
37
|
// Kanban transition utilities (no external deps — safe in main barrel)
|
|
38
|
-
export { createTransitionValidator, } from "./lib/kanban-transitions";
|
|
38
|
+
export { createTransitionValidator, createGatedTransitionValidator, } from "./lib/kanban-transitions";
|
|
39
39
|
export * from "./components/label";
|
|
40
40
|
export * from "./components/link";
|
|
41
41
|
export * from "./components/listbox";
|
|
@@ -79,4 +79,18 @@ export { PricingReferenceCard } from "./components/pricing-reference-card";
|
|
|
79
79
|
export { ContactPersonSelect } from "./components/contact-person-select";
|
|
80
80
|
export { CompositionEditor, serializeComposition, parseCompositionString } from "./components/composition-editor";
|
|
81
81
|
export { AnimatedSelect } from "./components/animated-select";
|
|
82
|
+
// ─── Portfolio redesign components (new in v0.12.x) ─────────────────────
|
|
83
|
+
export { ViewToggle } from "./components/view-toggle";
|
|
84
|
+
export { CardStack } from "./components/card-stack";
|
|
85
|
+
export { FileDropzone } from "./components/file-dropzone";
|
|
86
|
+
export { AssetList, } from "./components/asset-list";
|
|
87
|
+
export { ProductCard } from "./components/product-card";
|
|
88
|
+
export { ProductListRow, } from "./components/product-list-row";
|
|
89
|
+
export { ImageCarousel, } from "./components/image-carousel";
|
|
90
|
+
// ─── Offer-branching components (new in v0.10.x) ─────────────────────────
|
|
91
|
+
export { OfferStatusDots, } from "./components/offer-status-dots";
|
|
92
|
+
export { CelebrationPulse, } from "./components/celebration-pulse";
|
|
93
|
+
export { useCelebrationPulse } from "./hooks/use-celebration-pulse";
|
|
94
|
+
export { SentOfferCard, } from "./components/sent-offer-card";
|
|
95
|
+
export { CompletedOfferCard, } from "./components/completed-offer-card";
|
|
82
96
|
//# 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":"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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|