@cellarnode/ui 0.9.4 → 0.10.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.
- package/dist/components/avatar-stack.d.ts +19 -0
- package/dist/components/avatar-stack.d.ts.map +1 -0
- package/dist/components/avatar-stack.js +20 -0
- package/dist/components/avatar-stack.js.map +1 -0
- package/dist/components/avatar-stack.stories.d.ts +29 -0
- package/dist/components/avatar-stack.stories.d.ts.map +1 -0
- package/dist/components/avatar-stack.stories.js +48 -0
- package/dist/components/avatar-stack.stories.js.map +1 -0
- package/dist/components/branch-edit-banner.d.ts +22 -0
- package/dist/components/branch-edit-banner.d.ts.map +1 -0
- package/dist/components/branch-edit-banner.js +14 -0
- package/dist/components/branch-edit-banner.js.map +1 -0
- package/dist/components/branch-edit-banner.stories.d.ts +13 -0
- package/dist/components/branch-edit-banner.stories.d.ts.map +1 -0
- package/dist/components/branch-edit-banner.stories.js +38 -0
- package/dist/components/branch-edit-banner.stories.js.map +1 -0
- package/dist/components/journey-card.d.ts +40 -0
- package/dist/components/journey-card.d.ts.map +1 -0
- package/dist/components/journey-card.js +39 -0
- package/dist/components/journey-card.js.map +1 -0
- package/dist/components/journey-card.stories.d.ts +13 -0
- package/dist/components/journey-card.stories.d.ts.map +1 -0
- package/dist/components/journey-card.stories.js +97 -0
- package/dist/components/journey-card.stories.js.map +1 -0
- package/dist/components/offer-card.d.ts +51 -0
- package/dist/components/offer-card.d.ts.map +1 -0
- package/dist/components/offer-card.js +56 -0
- package/dist/components/offer-card.js.map +1 -0
- package/dist/components/offer-card.stories.d.ts +11 -0
- package/dist/components/offer-card.stories.d.ts.map +1 -0
- package/dist/components/offer-card.stories.js +94 -0
- package/dist/components/offer-card.stories.js.map +1 -0
- package/dist/components/org-avatar.d.ts +19 -0
- package/dist/components/org-avatar.d.ts.map +1 -0
- package/dist/components/org-avatar.js +69 -0
- package/dist/components/org-avatar.js.map +1 -0
- package/dist/components/org-avatar.stories.d.ts +29 -0
- package/dist/components/org-avatar.stories.d.ts.map +1 -0
- package/dist/components/org-avatar.stories.js +45 -0
- package/dist/components/org-avatar.stories.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/theme/tokens.css +18 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type OrgAvatarSize, type OrgAvatarStatus } from "./org-avatar";
|
|
2
|
+
export interface StackedOrg {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
logoUrl?: string | null;
|
|
6
|
+
status?: OrgAvatarStatus;
|
|
7
|
+
isOwnOrg?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface AvatarStackProps {
|
|
10
|
+
orgs: StackedOrg[];
|
|
11
|
+
/** Visible avatars before collapsing to +N. Default: 4 */
|
|
12
|
+
max?: number;
|
|
13
|
+
size?: OrgAvatarSize;
|
|
14
|
+
className?: string;
|
|
15
|
+
/** Layout direction — `row` overlaps left-to-right, `row-reverse` right-to-left */
|
|
16
|
+
direction?: "row" | "row-reverse";
|
|
17
|
+
}
|
|
18
|
+
export declare function AvatarStack({ orgs, max, size, className, direction, }: AvatarStackProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=avatar-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.d.ts","sourceRoot":"","sources":["../../src/components/avatar-stack.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEnF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;CACnC;AAMD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAO,EACP,IAAW,EACX,SAAS,EACT,SAAiB,GAClB,EAAE,gBAAgB,2CAkDlB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
import { OrgAvatar } from "./org-avatar";
|
|
4
|
+
const OVERLAP_PX = { sm: -6, md: -9, lg: -12 };
|
|
5
|
+
const PLUS_SIZE_PX = { sm: 24, md: 32, lg: 40 };
|
|
6
|
+
const PLUS_FONT_PX = { sm: 9, md: 11, lg: 13 };
|
|
7
|
+
export function AvatarStack({ orgs, max = 4, size = "md", className, direction = "row", }) {
|
|
8
|
+
const visible = orgs.slice(0, max);
|
|
9
|
+
const overflow = orgs.length - visible.length;
|
|
10
|
+
const overlap = OVERLAP_PX[size];
|
|
11
|
+
const items = (_jsxs(_Fragment, { children: [visible.map((org, idx) => (_jsx("span", { className: "relative", style: { marginLeft: idx === 0 ? 0 : overlap, zIndex: visible.length - idx }, children: _jsx(OrgAvatar, { name: org.name, orgId: org.id, logoUrl: org.logoUrl, status: org.status, isOwnOrg: org.isOwnOrg, size: size }) }, org.id))), overflow > 0 && (_jsxs("span", { className: "relative inline-flex shrink-0 items-center justify-center rounded-full border-2 border-[var(--card)] bg-[color-mix(in_oklab,var(--muted-foreground)_10%,var(--card))] font-display font-bold text-[var(--muted-foreground)] shadow-[0_1px_3px_oklch(0_0_0/0.06)]", style: {
|
|
12
|
+
width: PLUS_SIZE_PX[size],
|
|
13
|
+
height: PLUS_SIZE_PX[size],
|
|
14
|
+
fontSize: PLUS_FONT_PX[size],
|
|
15
|
+
marginLeft: overlap,
|
|
16
|
+
zIndex: 0,
|
|
17
|
+
}, title: `${overflow} more`, children: ["+", overflow] }))] }));
|
|
18
|
+
return (_jsx("div", { className: cn("inline-flex p-[2px]", direction === "row-reverse" && "flex-row-reverse", className), role: "list", "aria-label": `${orgs.length} organizations`, children: items }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=avatar-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.js","sourceRoot":"","sources":["../../src/components/avatar-stack.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,SAAS,EAA4C,MAAM,cAAc,CAAC;AAoBnF,MAAM,UAAU,GAAkC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9E,MAAM,YAAY,GAAkC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC/E,MAAM,YAAY,GAAkC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE9E,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,GAAG,CAAC,EACP,IAAI,GAAG,IAAI,EACX,SAAS,EACT,SAAS,GAAG,KAAK,GACA;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,CACZ,8BACG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CACzB,eAEE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,YAE5E,KAAC,SAAS,IACR,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,KAAK,EAAE,GAAG,CAAC,EAAE,EACb,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,IAAI,EAAE,IAAI,GACV,IAXG,GAAG,CAAC,EAAE,CAYN,CACR,CAAC,EACD,QAAQ,GAAG,CAAC,IAAI,CACf,gBACE,SAAS,EAAC,kQAAkQ,EAC5Q,KAAK,EAAE;oBACL,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;oBACzB,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;oBAC5B,UAAU,EAAE,OAAO;oBACnB,MAAM,EAAE,CAAC;iBACV,EACD,KAAK,EAAE,GAAG,QAAQ,OAAO,kBAEvB,QAAQ,IACL,CACR,IACA,CACJ,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,KAAK,aAAa,IAAI,kBAAkB,EAAE,SAAS,CAAC,EAClG,IAAI,EAAC,MAAM,gBACC,GAAG,IAAI,CAAC,MAAM,gBAAgB,YAEzC,KAAK,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { AvatarStack } from "./avatar-stack";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof AvatarStack;
|
|
6
|
+
tags: string[];
|
|
7
|
+
argTypes: {
|
|
8
|
+
size: {
|
|
9
|
+
control: "radio";
|
|
10
|
+
options: string[];
|
|
11
|
+
};
|
|
12
|
+
max: {
|
|
13
|
+
control: "number";
|
|
14
|
+
};
|
|
15
|
+
direction: {
|
|
16
|
+
control: "radio";
|
|
17
|
+
options: string[];
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export default meta;
|
|
22
|
+
type Story = StoryObj<typeof meta>;
|
|
23
|
+
export declare const Default: Story;
|
|
24
|
+
export declare const WithOverflow: Story;
|
|
25
|
+
export declare const MixedStatuses: Story;
|
|
26
|
+
export declare const WonState: Story;
|
|
27
|
+
export declare const WithOwnOrg: Story;
|
|
28
|
+
export declare const Reversed: Story;
|
|
29
|
+
//# sourceMappingURL=avatar-stack.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.stories.d.ts","sourceRoot":"","sources":["../../src/components/avatar-stack.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAW9D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;CAS0B,CAAC;AAErC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAA4C,CAAC;AACnE,eAAO,MAAM,YAAY,EAAE,KAAwC,CAAC;AACpE,eAAO,MAAM,aAAa,EAAE,KAQ3B,CAAC;AACF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC;AACF,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AACF,eAAO,MAAM,QAAQ,EAAE,KAAsE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AvatarStack } from "./avatar-stack";
|
|
2
|
+
const demo = [
|
|
3
|
+
{ id: "nw", name: "Nordic Wines" },
|
|
4
|
+
{ id: "sm", name: "Scandic Markets" },
|
|
5
|
+
{ id: "vi", name: "Vinum Imports" },
|
|
6
|
+
{ id: "ta", name: "Tenuta Antica" },
|
|
7
|
+
{ id: "cs", name: "Cavas del Sur" },
|
|
8
|
+
{ id: "mb", name: "Maison Blanc" },
|
|
9
|
+
];
|
|
10
|
+
const meta = {
|
|
11
|
+
title: "Components/AvatarStack",
|
|
12
|
+
component: AvatarStack,
|
|
13
|
+
tags: ["autodocs"],
|
|
14
|
+
argTypes: {
|
|
15
|
+
size: { control: "radio", options: ["sm", "md", "lg"] },
|
|
16
|
+
max: { control: "number" },
|
|
17
|
+
direction: { control: "radio", options: ["row", "row-reverse"] },
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export default meta;
|
|
21
|
+
export const Default = { args: { orgs: demo.slice(0, 3) } };
|
|
22
|
+
export const WithOverflow = { args: { orgs: demo, max: 3 } };
|
|
23
|
+
export const MixedStatuses = {
|
|
24
|
+
args: {
|
|
25
|
+
orgs: [
|
|
26
|
+
{ ...demo[0], status: "responded" },
|
|
27
|
+
{ ...demo[1], status: "pending" },
|
|
28
|
+
{ ...demo[2], status: "responded" },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export const WonState = {
|
|
33
|
+
args: {
|
|
34
|
+
orgs: [
|
|
35
|
+
{ ...demo[0], status: "won" },
|
|
36
|
+
{ ...demo[1], status: "lost" },
|
|
37
|
+
{ ...demo[2], status: "lost" },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
export const WithOwnOrg = {
|
|
42
|
+
args: {
|
|
43
|
+
orgs: [{ ...demo[0], isOwnOrg: true }],
|
|
44
|
+
size: "lg",
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
export const Reversed = { args: { orgs: demo.slice(0, 3), direction: "row-reverse" } };
|
|
48
|
+
//# sourceMappingURL=avatar-stack.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-stack.stories.js","sourceRoot":"","sources":["../../src/components/avatar-stack.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAE9D,MAAM,IAAI,GAAiB;IACzB,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE;IAClC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACrC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;IACnC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;IACnC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;IACnC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE;CACnC,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QACvD,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC1B,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;KACjE;CACiC,CAAC;AAErC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,YAAY,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AACpE,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,WAAW,EAAE;YACpC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,WAAW,EAAE;SACrC;KACF;CACF,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC9B,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE;YAC/B,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SAChC;KACF;CACF,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface BranchEditBannerProps {
|
|
3
|
+
/** User-facing product name (e.g. "Chardonnay Reserve 2021") */
|
|
4
|
+
productName: string;
|
|
5
|
+
/** Context the producer is modifying for (e.g. tender name) */
|
|
6
|
+
contextName: string;
|
|
7
|
+
/** True when the branch has changes that can be reverted */
|
|
8
|
+
hasChanges: boolean;
|
|
9
|
+
/** Localized copy — callers are expected to run these through i18n */
|
|
10
|
+
copy?: {
|
|
11
|
+
title?: (args: {
|
|
12
|
+
productName: string;
|
|
13
|
+
contextName: string;
|
|
14
|
+
}) => React.ReactNode;
|
|
15
|
+
reassurance?: string;
|
|
16
|
+
revertLabel?: string;
|
|
17
|
+
};
|
|
18
|
+
onRevert?: () => void;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function BranchEditBanner({ productName, contextName, hasChanges, copy, onRevert, className, }: BranchEditBannerProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=branch-edit-banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-edit-banner.d.ts","sourceRoot":"","sources":["../../src/components/branch-edit-banner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,EAAE,OAAO,CAAC;IACpB,sEAAsE;IACtE,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,KAAK,KAAK,CAAC,SAAS,CAAC;QAChF,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,WAAW,EACX,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,2CA6BvB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Info } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { Button } from "./button";
|
|
5
|
+
const DEFAULT_COPY = {
|
|
6
|
+
title: ({ productName, contextName }) => (_jsxs(_Fragment, { children: ["Modifying ", _jsx("strong", { children: productName }), " for ", contextName] })),
|
|
7
|
+
reassurance: "Changes here won't affect your portfolio outside of this offer.",
|
|
8
|
+
revertLabel: "Revert to portfolio version",
|
|
9
|
+
};
|
|
10
|
+
export function BranchEditBanner({ productName, contextName, hasChanges, copy, onRevert, className, }) {
|
|
11
|
+
const merged = { ...DEFAULT_COPY, ...copy };
|
|
12
|
+
return (_jsxs("div", { role: "status", className: cn("flex items-start gap-3 rounded-2xl border px-5 py-4", "bg-[var(--tone-warning-surface)] border-[var(--tone-warning-border)]", "shadow-[0_1px_2px_oklch(0.2_0.005_230/0.04),0_12px_36px_-28px_oklch(0.2_0.005_230/0.10)]", "backdrop-blur-[14px] backdrop-saturate-[120%]", "[&>*]:text-[color-mix(in_oklab,black_56%,var(--accent-secondary)_44%)]", className), children: [_jsx(Info, { className: "mt-0.5 size-5 shrink-0 text-[var(--tone-warning-fg)]", "aria-hidden": "true" }), _jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-display text-sm font-semibold leading-snug tracking-tight", children: merged.title({ productName, contextName }) }), _jsx("p", { className: "mt-1 text-xs leading-relaxed opacity-80", children: merged.reassurance })] }), hasChanges && onRevert && (_jsx(Button, { plain: true, onClick: onRevert, className: "shrink-0 text-xs", children: merged.revertLabel }))] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=branch-edit-banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-edit-banner.js","sourceRoot":"","sources":["../../src/components/branch-edit-banner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAmBlC,MAAM,YAAY,GAAyD;IACzE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACvC,4CACY,2BAAS,WAAW,GAAU,WAAM,WAAW,IACxD,CACJ;IACD,WAAW,EAAE,iEAAiE;IAC9E,WAAW,EAAE,6BAA6B;CAC3C,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,WAAW,EACX,WAAW,EACX,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,GACa;IACtB,MAAM,MAAM,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;IAE5C,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CACX,qDAAqD,EACrD,sEAAsE,EACtE,0FAA0F,EAC1F,+CAA+C,EAC/C,wEAAwE,EACxE,SAAS,CACV,aAED,KAAC,IAAI,IAAC,SAAS,EAAC,sDAAsD,iBAAa,MAAM,GAAG,EAC5F,eAAK,SAAS,EAAC,QAAQ,aACrB,cAAK,SAAS,EAAC,gEAAgE,YAC5E,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,GACvC,EACN,YAAG,SAAS,EAAC,yCAAyC,YAAE,MAAM,CAAC,WAAW,GAAK,IAC3E,EACL,UAAU,IAAI,QAAQ,IAAI,CACzB,KAAC,MAAM,IAAC,KAAK,QAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1D,MAAM,CAAC,WAAW,GACZ,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { BranchEditBanner } from "./branch-edit-banner";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof BranchEditBanner;
|
|
6
|
+
tags: string[];
|
|
7
|
+
};
|
|
8
|
+
export default meta;
|
|
9
|
+
type Story = StoryObj<typeof meta>;
|
|
10
|
+
export declare const NoChangesYet: Story;
|
|
11
|
+
export declare const WithChanges: Story;
|
|
12
|
+
export declare const CustomCopy: Story;
|
|
13
|
+
//# sourceMappingURL=branch-edit-banner.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-edit-banner.stories.d.ts","sourceRoot":"","sources":["../../src/components/branch-edit-banner.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,QAAA,MAAM,IAAI;;;;CAI+B,CAAC;AAE1C,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,YAAY,EAAE,KAO1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAOzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAgBxB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BranchEditBanner } from "./branch-edit-banner";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Components/BranchEditBanner",
|
|
5
|
+
component: BranchEditBanner,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
};
|
|
8
|
+
export default meta;
|
|
9
|
+
export const NoChangesYet = {
|
|
10
|
+
args: {
|
|
11
|
+
productName: "Chardonnay Reserve 2021",
|
|
12
|
+
contextName: "Nordic Wines Q2 Organic Whites Tender",
|
|
13
|
+
hasChanges: false,
|
|
14
|
+
onRevert: () => alert("revert"),
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export const WithChanges = {
|
|
18
|
+
args: {
|
|
19
|
+
productName: "Chardonnay Reserve 2021",
|
|
20
|
+
contextName: "Nordic Wines Q2 Organic Whites Tender",
|
|
21
|
+
hasChanges: true,
|
|
22
|
+
onRevert: () => alert("revert"),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const CustomCopy = {
|
|
26
|
+
args: {
|
|
27
|
+
productName: "Nebbiolo Vigna Alta",
|
|
28
|
+
contextName: "Sommelier Selection Spring 2026",
|
|
29
|
+
hasChanges: true,
|
|
30
|
+
onRevert: () => { },
|
|
31
|
+
copy: {
|
|
32
|
+
title: ({ productName, contextName }) => (_jsxs(_Fragment, { children: ["Anpasser ", _jsx("strong", { children: productName }), " for ", contextName] })),
|
|
33
|
+
reassurance: "Endringer her påvirker ikke porteføljen din utenfor dette tilbudet.",
|
|
34
|
+
revertLabel: "Tilbakestill til portefølje",
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=branch-edit-banner.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-edit-banner.stories.js","sourceRoot":"","sources":["../../src/components/branch-edit-banner.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,6BAA6B;IACpC,SAAS,EAAE,gBAAgB;IAC3B,IAAI,EAAE,CAAC,UAAU,CAAC;CACqB,CAAC;AAE1C,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,IAAI,EAAE;QACJ,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;KAChC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;KAChC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE;QACJ,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACvC,2CACW,2BAAS,WAAW,GAAU,WAAM,WAAW,IACvD,CACJ;YACD,WAAW,EAAE,qEAAqE;YAClF,WAAW,EAAE,6BAA6B;SAC3C;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type StackedOrg } from "./avatar-stack";
|
|
3
|
+
export type JourneyCardVariant = "default" | "sent" | "won" | "lost";
|
|
4
|
+
export interface JourneyCardProps {
|
|
5
|
+
/** Product image to show top-left. When null and no initials, renders the dashed placeholder. */
|
|
6
|
+
productImage?: {
|
|
7
|
+
url: string;
|
|
8
|
+
altText?: string;
|
|
9
|
+
} | null;
|
|
10
|
+
/** When no product image AND no initials, shows the "+" placeholder (preference match). */
|
|
11
|
+
productInitials?: string;
|
|
12
|
+
/** Primary title (product name or "Choose a product" for preference match) */
|
|
13
|
+
title: React.ReactNode;
|
|
14
|
+
/** Secondary line — tender · context */
|
|
15
|
+
subtitle?: React.ReactNode;
|
|
16
|
+
/** Show amber modification dot next to title */
|
|
17
|
+
modified?: boolean;
|
|
18
|
+
/** Optional match score (0-100) — shows as muted pill on title row */
|
|
19
|
+
matchScore?: number | null;
|
|
20
|
+
/** 0-1 progress value; only renders when defined */
|
|
21
|
+
progress?: number;
|
|
22
|
+
/** Meta value on baseline row — right-aligned (price / counter / timestamp) */
|
|
23
|
+
metaRight?: React.ReactNode;
|
|
24
|
+
/** Color tone of meta-right */
|
|
25
|
+
metaRightTone?: "default" | "success" | "muted";
|
|
26
|
+
/** Stacked importer/participant avatars */
|
|
27
|
+
participants?: StackedOrg[];
|
|
28
|
+
/** Optional won/completed icon shown inline with title (lucide Award passed as ReactNode) */
|
|
29
|
+
titleIcon?: React.ReactNode;
|
|
30
|
+
/** Column state — changes the surface tint */
|
|
31
|
+
variant?: JourneyCardVariant;
|
|
32
|
+
/** Enable entrance animation */
|
|
33
|
+
animate?: boolean;
|
|
34
|
+
/** Disable hover lift (used inside drag overlay) */
|
|
35
|
+
disableHover?: boolean;
|
|
36
|
+
onClick?: () => void;
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function JourneyCard({ productImage, productInitials, title, subtitle, modified, matchScore, progress, metaRight, metaRightTone, participants, titleIcon, variant, animate, disableHover, onClick, className, }: JourneyCardProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
//# sourceMappingURL=journey-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey-card.d.ts","sourceRoot":"","sources":["../../src/components/journey-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,YAAY,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxD,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,+BAA+B;IAC/B,aAAa,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,2CAA2C;IAC3C,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,6FAA6F;IAC7F,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,eAAe,EACf,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,UAAU,EACV,QAAQ,EACR,SAAS,EACT,aAAyB,EACzB,YAAY,EACZ,SAAS,EACT,OAAmB,EACnB,OAAe,EACf,YAAoB,EACpB,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,2CAoKlB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { motion } from "motion/react";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { AvatarStack } from "./avatar-stack";
|
|
5
|
+
const VARIANT_BG = {
|
|
6
|
+
default: "bg-[var(--card)]",
|
|
7
|
+
sent: "bg-[color-mix(in_oklab,white_96%,var(--primary)_4%)]",
|
|
8
|
+
won: "bg-[var(--tone-success-surface)] border-[color-mix(in_oklab,white_72%,var(--success)_28%)]",
|
|
9
|
+
lost: "bg-[color-mix(in_oklab,white_97%,var(--foreground)_3%)] opacity-90",
|
|
10
|
+
};
|
|
11
|
+
export function JourneyCard({ productImage, productInitials, title, subtitle, modified = false, matchScore, progress, metaRight, metaRightTone = "default", participants, titleIcon, variant = "default", animate = false, disableHover = false, onClick, className, }) {
|
|
12
|
+
const showInitials = !productImage && !!productInitials;
|
|
13
|
+
const shell = (_jsxs("div", { role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, onClick: onClick, onKeyDown: (e) => {
|
|
14
|
+
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
onClick();
|
|
17
|
+
}
|
|
18
|
+
}, className: cn("relative rounded-xl border border-[color-mix(in_oklab,var(--border)_60%,transparent)] p-3", "backdrop-blur-[14px] backdrop-saturate-[120%]", "shadow-[0_1px_2px_oklch(0.2_0.005_230/0.04),0_8px_24px_-18px_oklch(0.2_0.005_230/0.08),inset_0_1px_0_oklch(1_0_0/0.35)]", !disableHover &&
|
|
19
|
+
"transition-[transform,border-color,box-shadow] duration-[var(--duration-standard)] ease-[var(--ease-emphasized)] will-change-transform", !disableHover &&
|
|
20
|
+
"hover:-translate-y-1 hover:border-[color-mix(in_oklab,var(--primary)_22%,var(--border))] hover:shadow-[0_8px_20px_-12px_oklch(0.2_0.005_230/0.08),0_20px_50px_-30px_oklch(0.40_0.062_178/0.28),inset_0_1px_0_oklch(1_0_0/0.45)] hover:z-10", VARIANT_BG[variant], onClick && "cursor-pointer", className), children: [_jsxs("div", { className: "flex items-start gap-[10px]", children: [productImage ? (_jsx("img", { src: productImage.url, alt: productImage.altText ?? "", width: 44, height: 44, loading: "lazy", className: "size-11 shrink-0 rounded-lg object-cover shadow-[0_2px_8px_-2px_oklch(0_0_0/0.15),inset_0_1px_0_oklch(1_0_0/0.2)]" })) : showInitials ? (_jsx("div", { className: "flex size-11 shrink-0 items-center justify-center rounded-lg text-sm font-bold tracking-tight text-white shadow-[0_2px_8px_-2px_oklch(0_0_0/0.15),inset_0_1px_0_oklch(1_0_0/0.2)]", style: {
|
|
21
|
+
background: "linear-gradient(135deg, oklch(0.55 0.12 20) 0%, oklch(0.42 0.14 355) 100%)",
|
|
22
|
+
fontFamily: "Sora, sans-serif",
|
|
23
|
+
}, "aria-hidden": "true", children: productInitials })) : (_jsx("div", { className: "flex size-11 shrink-0 items-center justify-center rounded-lg text-lg", style: {
|
|
24
|
+
background: "color-mix(in oklab, white 94%, var(--primary) 6%)",
|
|
25
|
+
border: "1.5px dashed color-mix(in oklab, var(--primary) 30%, white)",
|
|
26
|
+
color: "color-mix(in oklab, var(--primary) 60%, var(--muted-foreground))",
|
|
27
|
+
}, "aria-hidden": "true", children: "+" })), _jsxs("div", { className: "min-w-0 flex-1 pt-0.5", children: [_jsxs("div", { className: "mb-[3px] flex items-center gap-1.5", children: [_jsx("div", { className: "min-w-0 flex-1 truncate font-display text-[13px] font-semibold leading-tight tracking-tight text-foreground", children: title }), modified && (_jsx("span", { title: "Modified for this offer", "aria-label": "Modified for this offer", className: "size-[7px] shrink-0 rounded-full bg-[var(--accent-secondary)] shadow-[0_0_0_3px_color-mix(in_oklab,var(--accent-secondary)_15%,transparent)]" })), titleIcon && (_jsx("span", { className: "shrink-0 text-[var(--accent-secondary)]", children: titleIcon })), typeof matchScore === "number" && (_jsxs("span", { className: cn("shrink-0 rounded-md px-1.5 py-[1px] text-[10px] font-semibold tabular-nums", matchScore >= 80
|
|
28
|
+
? "bg-[color-mix(in_oklab,var(--primary)_10%,transparent)] text-[color-mix(in_oklab,black_30%,var(--primary)_70%)]"
|
|
29
|
+
: "bg-[color-mix(in_oklab,var(--primary)_6%,transparent)] text-[var(--muted-foreground)]"), children: [matchScore, "%"] }))] }), subtitle && (_jsx("div", { className: "truncate text-[11.5px] leading-snug text-[var(--muted-foreground)]", children: subtitle }))] })] }), typeof progress === "number" && (_jsx("div", { className: "mt-[10px] h-1 overflow-hidden rounded-full bg-[color-mix(in_oklab,var(--primary)_8%,transparent)]", role: "progressbar", "aria-valuenow": Math.round(progress * 100), "aria-valuemin": 0, "aria-valuemax": 100, children: _jsx("div", { className: "h-full transition-[width] duration-[var(--duration-hero)] ease-[var(--ease-emphasized)]", style: {
|
|
30
|
+
width: `${Math.max(0, Math.min(1, progress)) * 100}%`,
|
|
31
|
+
background: "linear-gradient(90deg, var(--primary), color-mix(in oklab, var(--primary) 70%, var(--accent-secondary)))",
|
|
32
|
+
} }) })), ((participants && participants.length > 0) || metaRight) && (_jsx("div", { className: "mx-0 my-[10px] h-px bg-linear-to-r from-transparent via-[color-mix(in_oklab,var(--primary)_15%,transparent)] to-transparent" })), ((participants && participants.length > 0) || metaRight) && (_jsxs("div", { className: "flex items-center justify-between gap-2", children: [participants && participants.length > 0 ? (_jsx(AvatarStack, { orgs: participants, size: "sm" })) : (_jsx("span", {})), metaRight && (_jsx("span", { className: cn("text-right font-display text-xs tabular-nums tracking-tight", metaRightTone === "success" &&
|
|
33
|
+
"font-bold text-[color-mix(in_oklab,black_20%,var(--success)_80%)]", metaRightTone === "muted" && "text-[var(--muted-foreground)]", metaRightTone === "default" && "text-[var(--muted-foreground)]"), children: metaRight }))] }))] }));
|
|
34
|
+
if (animate) {
|
|
35
|
+
return (_jsx(motion.div, { initial: { opacity: 0, y: 12, scale: 0.96 }, animate: { opacity: 1, y: 0, scale: 1 }, transition: { duration: 0.25, ease: [0.16, 1, 0.3, 1] }, children: shell }));
|
|
36
|
+
}
|
|
37
|
+
return shell;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=journey-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey-card.js","sourceRoot":"","sources":["../../src/components/journey-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { type JourneyCardProps } from "./journey-card";
|
|
3
|
+
declare const meta: Meta<JourneyCardProps>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<Meta<JourneyCardProps>>;
|
|
6
|
+
export declare const Selected: Story;
|
|
7
|
+
export declare const PreferenceMatchPlaceholder: Story;
|
|
8
|
+
export declare const Preparing: Story;
|
|
9
|
+
export declare const ReadyToSend: Story;
|
|
10
|
+
export declare const Sent: Story;
|
|
11
|
+
export declare const Won: Story;
|
|
12
|
+
export declare const WithAnimation: Story;
|
|
13
|
+
//# sourceMappingURL=journey-card.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey-card.stories.d.ts","sourceRoot":"","sources":["../../src/components/journey-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAYhC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,KAUtB,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,KAUxC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAWvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAUzB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAclB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,KAejB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAQ3B,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Award } from "lucide-react";
|
|
3
|
+
import { JourneyCard } from "./journey-card";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Components/JourneyCard",
|
|
6
|
+
component: JourneyCard,
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
parameters: { layout: "centered" },
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (_jsx("div", { style: { width: 280 }, children: _jsx(Story, {}) })),
|
|
11
|
+
],
|
|
12
|
+
};
|
|
13
|
+
export default meta;
|
|
14
|
+
export const Selected = {
|
|
15
|
+
args: {
|
|
16
|
+
productInitials: "CR",
|
|
17
|
+
title: "Chardonnay Reserve 2021",
|
|
18
|
+
subtitle: "Nordic Wines · Organic whites",
|
|
19
|
+
matchScore: 92,
|
|
20
|
+
participants: [{ id: "nw", name: "Nordic Wines" }],
|
|
21
|
+
metaRight: "2d ago",
|
|
22
|
+
metaRightTone: "muted",
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const PreferenceMatchPlaceholder = {
|
|
26
|
+
args: {
|
|
27
|
+
title: (_jsx("span", { className: "font-normal text-[var(--muted-foreground)]", children: "Choose a product" })),
|
|
28
|
+
subtitle: "Scandic Markets · Organic reds · 5k btl",
|
|
29
|
+
participants: [{ id: "sm", name: "Scandic Markets" }],
|
|
30
|
+
metaRight: "5h ago",
|
|
31
|
+
metaRightTone: "muted",
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
export const Preparing = {
|
|
35
|
+
args: {
|
|
36
|
+
productInitials: "CR",
|
|
37
|
+
title: "Chardonnay Reserve 2021",
|
|
38
|
+
subtitle: "Nordic Wines · Draft",
|
|
39
|
+
modified: true,
|
|
40
|
+
progress: 0.62,
|
|
41
|
+
metaRight: "8 / 13 fields",
|
|
42
|
+
metaRightTone: "muted",
|
|
43
|
+
participants: [{ id: "nw", name: "Nordic Wines" }],
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export const ReadyToSend = {
|
|
47
|
+
args: {
|
|
48
|
+
productInitials: "CR",
|
|
49
|
+
title: "Chardonnay Reserve 2021",
|
|
50
|
+
subtitle: "Nordic Wines · Complete",
|
|
51
|
+
modified: true,
|
|
52
|
+
metaRight: "€18.50",
|
|
53
|
+
metaRightTone: "success",
|
|
54
|
+
participants: [{ id: "nw", name: "Nordic Wines" }],
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
export const Sent = {
|
|
58
|
+
args: {
|
|
59
|
+
productInitials: "CR",
|
|
60
|
+
title: "Chardonnay Reserve 2021",
|
|
61
|
+
subtitle: "Sent to 3 importers",
|
|
62
|
+
modified: true,
|
|
63
|
+
variant: "sent",
|
|
64
|
+
metaRight: "2/3",
|
|
65
|
+
participants: [
|
|
66
|
+
{ id: "nw", name: "Nordic Wines", status: "responded" },
|
|
67
|
+
{ id: "sm", name: "Scandic Markets", status: "pending" },
|
|
68
|
+
{ id: "vi", name: "Vinum Imports", status: "responded" },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
export const Won = {
|
|
73
|
+
args: {
|
|
74
|
+
productInitials: "CR",
|
|
75
|
+
title: "Chardonnay Reserve 2021",
|
|
76
|
+
subtitle: "Won by Nordic Wines",
|
|
77
|
+
titleIcon: _jsx(Award, { className: "size-[15px]" }),
|
|
78
|
+
variant: "won",
|
|
79
|
+
metaRight: "€19.20",
|
|
80
|
+
metaRightTone: "success",
|
|
81
|
+
participants: [
|
|
82
|
+
{ id: "nw", name: "Nordic Wines", status: "won" },
|
|
83
|
+
{ id: "sm", name: "Scandic Markets", status: "lost" },
|
|
84
|
+
{ id: "vi", name: "Vinum Imports", status: "lost" },
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
export const WithAnimation = {
|
|
89
|
+
args: {
|
|
90
|
+
productInitials: "CR",
|
|
91
|
+
title: "Chardonnay Reserve 2021",
|
|
92
|
+
subtitle: "Nordic Wines",
|
|
93
|
+
animate: true,
|
|
94
|
+
metaRight: "just now",
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=journey-card.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey-card.stories.js","sourceRoot":"","sources":["../../src/components/journey-card.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AAEpE,MAAM,IAAI,GAA2B;IACnC,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;IAClC,UAAU,EAAE;QACV,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,YACxB,KAAC,KAAK,KAAG,GACL,CACP;KACF;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,+BAA+B;QACzC,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAClD,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,OAAO;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAU;IAC/C,IAAI,EAAE;QACJ,KAAK,EAAE,CACL,eAAM,SAAS,EAAC,4CAA4C,iCAAwB,CACrF;QACD,QAAQ,EAAE,yCAAyC;QACnD,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QACrD,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,OAAO;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,sBAAsB;QAChC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,eAAe;QAC1B,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KACnD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,yBAAyB;QACnC,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KACnD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE;YACZ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE;YACvD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE;YACxD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE;SACzD;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAU;IACxB,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,qBAAqB;QAC/B,SAAS,EAAE,KAAC,KAAK,IAAC,SAAS,EAAC,aAAa,GAAG;QAC5C,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE;YACZ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE;YACjD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE;YACrD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE;SACpD;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI;QACrB,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,UAAU;KACtB;CACF,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type StackedOrg } from "./avatar-stack";
|
|
3
|
+
export type OfferCardStatus = "pending" | "responded" | "won" | "lost";
|
|
4
|
+
export type OfferPriceKind = "offer" | "counter" | "final";
|
|
5
|
+
export interface OfferCardProduct {
|
|
6
|
+
image: {
|
|
7
|
+
url: string;
|
|
8
|
+
altText?: string;
|
|
9
|
+
} | null;
|
|
10
|
+
initials?: string;
|
|
11
|
+
name: string;
|
|
12
|
+
modified?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface OfferCardTender {
|
|
15
|
+
title: string;
|
|
16
|
+
href?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface OfferCardPrice {
|
|
19
|
+
amount: number;
|
|
20
|
+
currency: string;
|
|
21
|
+
unit: string;
|
|
22
|
+
kind: OfferPriceKind;
|
|
23
|
+
}
|
|
24
|
+
export interface OfferParty {
|
|
25
|
+
name: string;
|
|
26
|
+
subtitle?: string;
|
|
27
|
+
logoUrl?: string | null;
|
|
28
|
+
orgId?: string;
|
|
29
|
+
isOwnOrg?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface OfferCardChip {
|
|
32
|
+
label: string;
|
|
33
|
+
icon?: React.ReactNode;
|
|
34
|
+
tone?: "neutral" | "brand" | "success" | "warning";
|
|
35
|
+
}
|
|
36
|
+
export interface OfferCardProps {
|
|
37
|
+
product: OfferCardProduct;
|
|
38
|
+
tender: OfferCardTender;
|
|
39
|
+
price: OfferCardPrice;
|
|
40
|
+
fromParty: OfferParty;
|
|
41
|
+
toParty: OfferParty & {
|
|
42
|
+
recipients?: StackedOrg[];
|
|
43
|
+
};
|
|
44
|
+
chips?: OfferCardChip[];
|
|
45
|
+
status: OfferCardStatus;
|
|
46
|
+
timestamp: Date | string;
|
|
47
|
+
onClick?: () => void;
|
|
48
|
+
className?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function OfferCard({ product, tender, price, fromParty, toParty, chips, status, timestamp, onClick, className, }: OfferCardProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
//# sourceMappingURL=offer-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-card.d.ts","sourceRoot":"","sources":["../../src/components/offer-card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG9D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,UAAU,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IACpD,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoCD,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,KAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,GACV,EAAE,cAAc,2CA6LhB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Award } from "lucide-react";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { AvatarStack } from "./avatar-stack";
|
|
5
|
+
import { OrgAvatar } from "./org-avatar";
|
|
6
|
+
const CHIP_TONE = {
|
|
7
|
+
neutral: "bg-[color-mix(in_oklab,var(--muted-foreground)_8%,transparent)] text-[var(--muted-foreground)] border-transparent",
|
|
8
|
+
brand: "bg-[color-mix(in_oklab,var(--primary)_8%,transparent)] text-[color-mix(in_oklab,black_35%,var(--primary)_65%)] border-[color-mix(in_oklab,var(--primary)_14%,transparent)]",
|
|
9
|
+
success: "bg-[color-mix(in_oklab,var(--success)_10%,transparent)] text-[color-mix(in_oklab,black_30%,var(--success)_70%)] border-[color-mix(in_oklab,var(--success)_18%,transparent)]",
|
|
10
|
+
warning: "bg-[color-mix(in_oklab,var(--accent-secondary)_12%,transparent)] text-[color-mix(in_oklab,black_32%,var(--accent-secondary)_68%)] border-[color-mix(in_oklab,var(--accent-secondary)_20%,transparent)]",
|
|
11
|
+
};
|
|
12
|
+
function formatPrice(p) {
|
|
13
|
+
const fmt = new Intl.NumberFormat(undefined, {
|
|
14
|
+
style: "currency",
|
|
15
|
+
currency: p.currency,
|
|
16
|
+
minimumFractionDigits: 2,
|
|
17
|
+
maximumFractionDigits: 2,
|
|
18
|
+
});
|
|
19
|
+
return fmt.format(p.amount);
|
|
20
|
+
}
|
|
21
|
+
function formatRelative(ts) {
|
|
22
|
+
const d = typeof ts === "string" ? new Date(ts) : ts;
|
|
23
|
+
const diffMs = Date.now() - d.getTime();
|
|
24
|
+
const mins = Math.floor(diffMs / 60_000);
|
|
25
|
+
if (mins < 1)
|
|
26
|
+
return "just now";
|
|
27
|
+
if (mins < 60)
|
|
28
|
+
return `${mins}m ago`;
|
|
29
|
+
const hours = Math.floor(mins / 60);
|
|
30
|
+
if (hours < 24)
|
|
31
|
+
return `${hours}h ago`;
|
|
32
|
+
const days = Math.floor(hours / 24);
|
|
33
|
+
if (days < 30)
|
|
34
|
+
return `${days}d ago`;
|
|
35
|
+
return d.toLocaleDateString();
|
|
36
|
+
}
|
|
37
|
+
export function OfferCard({ product, tender, price, fromParty, toParty, chips = [], status, timestamp, onClick, className, }) {
|
|
38
|
+
const isWon = status === "won";
|
|
39
|
+
const arrowColor = isWon
|
|
40
|
+
? "var(--success)"
|
|
41
|
+
: status === "responded"
|
|
42
|
+
? "var(--primary)"
|
|
43
|
+
: "color-mix(in oklab, var(--primary) 45%, var(--muted-foreground))";
|
|
44
|
+
return (_jsxs("div", { role: onClick ? "button" : undefined, tabIndex: onClick ? 0 : undefined, onClick: onClick, onKeyDown: (e) => {
|
|
45
|
+
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
onClick();
|
|
48
|
+
}
|
|
49
|
+
}, className: cn("relative rounded-2xl border p-5 transition-[transform,border-color,box-shadow] duration-[var(--duration-standard)] ease-[var(--ease-emphasized)]", "backdrop-blur-[14px] backdrop-saturate-[120%]", isWon
|
|
50
|
+
? "border-[color-mix(in_oklab,white_72%,var(--success)_28%)] bg-[color-mix(in_oklab,white_94%,var(--success)_6%)]"
|
|
51
|
+
: "border-[color-mix(in_oklab,var(--border)_60%,transparent)] bg-[color-mix(in_oklab,white_97%,var(--primary)_3%)]", "shadow-[0_1px_2px_oklch(0.2_0.005_230/0.04),0_12px_36px_-28px_oklch(0.2_0.005_230/0.14),inset_0_1px_0_oklch(1_0_0/0.45)]", onClick && "cursor-pointer hover:-translate-y-[2px] hover:border-[color-mix(in_oklab,var(--primary)_22%,var(--border))] hover:shadow-[0_8px_20px_-12px_oklch(0.2_0.005_230/0.08),0_28px_70px_-36px_oklch(0.40_0.062_178/0.28),inset_0_1px_0_oklch(1_0_0/0.55)]", className), children: [_jsxs("div", { className: "grid grid-cols-[72px_1fr_auto] items-start gap-4", children: [product.image ? (_jsx("img", { src: product.image.url, alt: product.image.altText ?? "", className: "size-[72px] rounded-[14px] object-cover shadow-[0_2px_8px_-2px_oklch(0_0_0/0.15),inset_0_1px_0_oklch(1_0_0/0.2)]", loading: "lazy" })) : (_jsx("div", { className: "flex size-[72px] items-center justify-center rounded-[14px] text-xl font-bold tracking-tight text-white shadow-[0_2px_8px_-2px_oklch(0_0_0/0.15),inset_0_1px_0_oklch(1_0_0/0.2)]", style: {
|
|
52
|
+
background: "linear-gradient(135deg, oklch(0.55 0.12 20) 0%, oklch(0.42 0.14 355) 100%)",
|
|
53
|
+
fontFamily: "Sora, sans-serif",
|
|
54
|
+
}, "aria-hidden": "true", children: product.initials ?? "•" })), _jsxs("div", { className: "min-w-0 pt-0.5", children: [_jsxs("div", { className: "mb-1 flex items-center gap-2 font-display text-lg font-bold leading-tight tracking-tight text-foreground", children: [_jsx("span", { className: "truncate", children: product.name }), product.modified && (_jsx("span", { title: "Modified for this offer", "aria-label": "Modified for this offer", className: "size-2 shrink-0 rounded-full bg-[var(--accent-secondary)] shadow-[0_0_0_3px_color-mix(in_oklab,var(--accent-secondary)_15%,transparent)]" })), isWon && _jsx(Award, { className: "size-[18px] shrink-0 text-[var(--accent-secondary)]", "aria-label": "Won" })] }), _jsx("div", { className: "text-[13px] leading-snug text-[var(--muted-foreground)]", children: tender.href ? (_jsx("a", { href: tender.href, className: "font-medium text-[color-mix(in_oklab,black_30%,var(--primary)_70%)] no-underline hover:underline", onClick: (e) => e.stopPropagation(), children: tender.title })) : (_jsx("span", { children: tender.title })) })] }), _jsxs("div", { className: "pl-2 text-right", children: [_jsx("div", { className: "font-display text-[22px] font-bold leading-none tracking-tight tabular-nums text-[color-mix(in_oklab,black_25%,var(--success)_75%)]", children: formatPrice(price) }), _jsxs("div", { className: "mt-[3px] text-[11px] text-[var(--muted-foreground)] tabular-nums", children: [price.kind === "final" ? "final · " : price.kind === "counter" ? "counter · " : "", price.unit] })] })] }), _jsx("div", { className: "my-4 h-px bg-linear-to-r from-transparent via-[color-mix(in_oklab,var(--primary)_18%,transparent)] to-transparent" }), _jsxs("div", { className: "grid grid-cols-[1fr_auto_1fr] items-center gap-[14px]", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-[10px]", children: [_jsx(OrgAvatar, { name: fromParty.name, orgId: fromParty.orgId, logoUrl: fromParty.logoUrl, isOwnOrg: fromParty.isOwnOrg, size: "md" }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "mb-[3px] font-display text-[9px] font-bold uppercase tracking-[0.12em] text-[var(--muted-foreground)]", children: "From" }), _jsx("div", { className: "truncate text-[13px] font-semibold text-foreground", children: fromParty.name }), fromParty.subtitle && (_jsx("div", { className: "truncate text-[11px] text-[var(--muted-foreground)]", children: fromParty.subtitle }))] })] }), _jsx("div", { className: "flex size-11 shrink-0 items-center justify-center", children: _jsxs("svg", { viewBox: "0 0 60 22", className: "size-full", fill: "none", stroke: arrowColor, strokeWidth: isWon ? "1.8" : "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("line", { x1: "4", y1: "11", x2: "52", y2: "11", strokeDasharray: isWon ? undefined : "2 3" }), _jsx("polyline", { points: "46,6 54,11 46,16" })] }) }), _jsxs("div", { className: "flex min-w-0 items-center justify-end gap-[10px]", children: [_jsxs("div", { className: "min-w-0 text-right", children: [_jsx("div", { className: "mb-[3px] font-display text-[9px] font-bold uppercase tracking-[0.12em] text-[var(--muted-foreground)]", children: isWon ? "Won by" : toParty.recipients && toParty.recipients.length > 0 ? `To · ${toParty.recipients.length} importers` : "To" }), _jsx("div", { className: "truncate text-[13px] font-semibold text-foreground", children: toParty.name }), toParty.subtitle && (_jsx("div", { className: "truncate text-[11px] text-[var(--muted-foreground)]", children: toParty.subtitle }))] }), toParty.recipients && toParty.recipients.length > 0 ? (_jsx(AvatarStack, { orgs: toParty.recipients, size: "md" })) : (_jsx(OrgAvatar, { name: toParty.name, orgId: toParty.orgId, logoUrl: toParty.logoUrl, isOwnOrg: toParty.isOwnOrg, size: "md" }))] })] }), (chips.length > 0 || timestamp) && (_jsxs("div", { className: "mt-4 flex items-center justify-between gap-3 border-t border-[color-mix(in_oklab,var(--border)_60%,transparent)] pt-[14px]", children: [_jsx("div", { className: "flex flex-wrap gap-1.5", children: chips.map((chip, i) => (_jsxs("span", { className: cn("inline-flex items-center gap-1.5 rounded-[10px] border px-[9px] py-[3px] text-[11px] font-semibold", CHIP_TONE[chip.tone ?? "brand"]), children: [chip.icon && _jsx("span", { className: "inline-flex size-3 items-center justify-center", children: chip.icon }), chip.label] }, i))) }), _jsx("span", { className: "text-[11px] tabular-nums text-[var(--muted-foreground)]", children: formatRelative(timestamp) })] }))] }));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=offer-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-card.js","sourceRoot":"","sources":["../../src/components/offer-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmDzC,MAAM,SAAS,GAAuD;IACpE,OAAO,EACL,mHAAmH;IACrH,KAAK,EACH,4KAA4K;IAC9K,OAAO,EACL,6KAA6K;IAC/K,OAAO,EACL,wMAAwM;CAC3M,CAAC;AAEF,SAAS,WAAW,CAAC,CAAiB;IACpC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;QAC3C,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,qBAAqB,EAAE,CAAC;QACxB,qBAAqB,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,cAAc,CAAC,EAAiB;IACvC,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAChC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,OAAO,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,OAAO,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,OAAO,CAAC;IACrC,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,KAAK,GAAG,EAAE,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,GACM;IACf,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,CAAC;IAC/B,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,MAAM,KAAK,WAAW;YACtB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,kEAAkE,CAAC;IAEzE,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,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBACpD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EACD,SAAS,EAAE,EAAE,CACX,kJAAkJ,EAClJ,+CAA+C,EAC/C,KAAK;YACH,CAAC,CAAC,gHAAgH;YAClH,CAAC,CAAC,iHAAiH,EACrH,0HAA0H,EAC1H,OAAO,IAAI,oPAAoP,EAC/P,SAAS,CACV,aAGD,eAAK,SAAS,EAAC,kDAAkD,aAE9D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,cACE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EACtB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAChC,SAAS,EAAC,kHAAkH,EAC5H,OAAO,EAAC,MAAM,GACd,CACH,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAC,kLAAkL,EAC5L,KAAK,EAAE;4BACL,UAAU,EACR,4EAA4E;4BAC9E,UAAU,EAAE,kBAAkB;yBAC/B,iBACW,MAAM,YAEjB,OAAO,CAAC,QAAQ,IAAI,GAAG,GACpB,CACP,EAGD,eAAK,SAAS,EAAC,gBAAgB,aAC7B,eAAK,SAAS,EAAC,0GAA0G,aACvH,eAAM,SAAS,EAAC,UAAU,YAAE,OAAO,CAAC,IAAI,GAAQ,EAC/C,OAAO,CAAC,QAAQ,IAAI,CACnB,eACE,KAAK,EAAC,yBAAyB,gBACpB,yBAAyB,EACpC,SAAS,EAAC,0IAA0I,GACpJ,CACH,EACA,KAAK,IAAI,KAAC,KAAK,IAAC,SAAS,EAAC,qDAAqD,gBAAY,KAAK,GAAG,IAChG,EACN,cAAK,SAAS,EAAC,yDAAyD,YACrE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CACb,YACE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,SAAS,EAAC,kGAAkG,EAC5G,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,YAElC,MAAM,CAAC,KAAK,GACX,CACL,CAAC,CAAC,CAAC,CACF,yBAAO,MAAM,CAAC,KAAK,GAAQ,CAC5B,GACG,IACF,EAGN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,cAAK,SAAS,EAAC,qIAAqI,YACjJ,WAAW,CAAC,KAAK,CAAC,GACf,EACN,eAAK,SAAS,EAAC,kEAAkE,aAC9E,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAClF,KAAK,CAAC,IAAI,IACP,IACF,IACF,EAGN,cAAK,SAAS,EAAC,mHAAmH,GAAG,EAGrI,eAAK,SAAS,EAAC,uDAAuD,aAEpE,eAAK,SAAS,EAAC,sCAAsC,aACnD,KAAC,SAAS,IACR,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,IAAI,EAAC,IAAI,GACT,EACF,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,uGAAuG,qBAEhH,EACN,cAAK,SAAS,EAAC,oDAAoD,YAAE,SAAS,CAAC,IAAI,GAAO,EACzF,SAAS,CAAC,QAAQ,IAAI,CACrB,cAAK,SAAS,EAAC,qDAAqD,YAAE,SAAS,CAAC,QAAQ,GAAO,CAChG,IACG,IACF,EAGN,cAAK,SAAS,EAAC,mDAAmD,YAChE,eACE,OAAO,EAAC,WAAW,EACnB,SAAS,EAAC,WAAW,EACrB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAClC,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,aAElB,eACE,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAC1C,EACF,mBAAU,MAAM,EAAC,kBAAkB,GAAG,IAClC,GACF,EAGN,eAAK,SAAS,EAAC,kDAAkD,aAC/D,eAAK,SAAS,EAAC,oBAAoB,aACjC,cAAK,SAAS,EAAC,uGAAuG,YACnH,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,GAC1H,EACN,cAAK,SAAS,EAAC,oDAAoD,YAAE,OAAO,CAAC,IAAI,GAAO,EACvF,OAAO,CAAC,QAAQ,IAAI,CACnB,cAAK,SAAS,EAAC,qDAAqD,YAAE,OAAO,CAAC,QAAQ,GAAO,CAC9F,IACG,EACL,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrD,KAAC,WAAW,IAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAC,IAAI,GAAG,CACpD,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IACR,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,IAAI,EAAC,IAAI,GACT,CACH,IACG,IACF,EAGL,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAClC,eAAK,SAAS,EAAC,4HAA4H,aACzI,cAAK,SAAS,EAAC,wBAAwB,YACpC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,gBAEE,SAAS,EAAE,EAAE,CACX,oGAAoG,EACpG,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAChC,aAEA,IAAI,CAAC,IAAI,IAAI,eAAM,SAAS,EAAC,gDAAgD,YAAE,IAAI,CAAC,IAAI,GAAQ,EAChG,IAAI,CAAC,KAAK,KAPN,CAAC,CAQD,CACR,CAAC,GACE,EACN,eAAM,SAAS,EAAC,yDAAyD,YAAE,cAAc,CAAC,SAAS,CAAC,GAAQ,IACxG,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { OfferCard } from "./offer-card";
|
|
3
|
+
declare const meta: Meta<typeof OfferCard>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const ProducerPending: Story;
|
|
7
|
+
export declare const ProducerWon: Story;
|
|
8
|
+
export declare const ImporterReceived: Story;
|
|
9
|
+
export declare const ImporterReplied: Story;
|
|
10
|
+
export declare const SingleRecipient: Story;
|
|
11
|
+
//# sourceMappingURL=offer-card.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-card.stories.d.ts","sourceRoot":"","sources":["../../src/components/offer-card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAMhC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AASnC,eAAO,MAAM,eAAe,EAAE,KAoB7B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAqBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAW9B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAW7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAQ7B,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Calendar, Package } from "lucide-react";
|
|
3
|
+
import { OfferCard } from "./offer-card";
|
|
4
|
+
const meta = {
|
|
5
|
+
title: "Components/OfferCard",
|
|
6
|
+
component: OfferCard,
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
parameters: { layout: "centered" },
|
|
9
|
+
decorators: [(Story) => _jsx("div", { style: { width: 620 }, children: _jsx(Story, {}) })],
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
const baseProps = {
|
|
13
|
+
product: { image: null, initials: "CR", name: "Chardonnay Reserve 2021" },
|
|
14
|
+
tender: { title: "Nordic Wines Q2 Organic Whites Tender", href: "#" },
|
|
15
|
+
price: { amount: 18.5, currency: "EUR", unit: "per bottle", kind: "offer" },
|
|
16
|
+
timestamp: new Date(Date.now() - 3 * 60 * 60 * 1000),
|
|
17
|
+
};
|
|
18
|
+
export const ProducerPending = {
|
|
19
|
+
args: {
|
|
20
|
+
...baseProps,
|
|
21
|
+
product: { ...baseProps.product, modified: true },
|
|
22
|
+
status: "pending",
|
|
23
|
+
fromParty: { name: "Vigneti Mario", orgId: "vm", subtitle: "Piedmont, Italy" },
|
|
24
|
+
toParty: {
|
|
25
|
+
name: "Nordic · Scandic · Vinum",
|
|
26
|
+
orgId: "multi",
|
|
27
|
+
recipients: [
|
|
28
|
+
{ id: "nw", name: "Nordic Wines", status: "responded" },
|
|
29
|
+
{ id: "sm", name: "Scandic Markets", status: "pending" },
|
|
30
|
+
{ id: "vi", name: "Vinum Imports", status: "responded" },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
chips: [
|
|
34
|
+
{ label: "5,000 bottles", icon: _jsx(Package, { className: "size-3" }), tone: "neutral" },
|
|
35
|
+
{ label: "Replies by Apr 15", icon: _jsx(Calendar, { className: "size-3" }), tone: "brand" },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const ProducerWon = {
|
|
40
|
+
args: {
|
|
41
|
+
...baseProps,
|
|
42
|
+
product: { ...baseProps.product, modified: true },
|
|
43
|
+
status: "won",
|
|
44
|
+
price: { ...baseProps.price, amount: 19.2, kind: "final" },
|
|
45
|
+
fromParty: { name: "Vigneti Mario", orgId: "vm" },
|
|
46
|
+
toParty: {
|
|
47
|
+
name: "Nordic Wines AS",
|
|
48
|
+
orgId: "nw",
|
|
49
|
+
recipients: [
|
|
50
|
+
{ id: "nw", name: "Nordic Wines", status: "won" },
|
|
51
|
+
{ id: "sm", name: "Scandic Markets", status: "lost" },
|
|
52
|
+
{ id: "vi", name: "Vinum Imports", status: "lost" },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
chips: [
|
|
56
|
+
{ label: "5,000 bottles", icon: _jsx(Package, { className: "size-3" }), tone: "neutral" },
|
|
57
|
+
{ label: "Deal closed", tone: "success" },
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
export const ImporterReceived = {
|
|
62
|
+
args: {
|
|
63
|
+
...baseProps,
|
|
64
|
+
status: "pending",
|
|
65
|
+
fromParty: { name: "Vigneti Mario", orgId: "vm", subtitle: "Piedmont, Italy" },
|
|
66
|
+
toParty: { name: "You · Nordic Wines", orgId: "nw", isOwnOrg: true },
|
|
67
|
+
chips: [
|
|
68
|
+
{ label: "5,000 bottles", icon: _jsx(Package, { className: "size-3" }), tone: "neutral" },
|
|
69
|
+
{ label: "New", tone: "warning" },
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
export const ImporterReplied = {
|
|
74
|
+
args: {
|
|
75
|
+
...baseProps,
|
|
76
|
+
status: "responded",
|
|
77
|
+
fromParty: { name: "Tenuta Antica", orgId: "ta", subtitle: "Piedmont, Italy" },
|
|
78
|
+
toParty: { name: "You · Nordic Wines", orgId: "nw", isOwnOrg: true },
|
|
79
|
+
chips: [
|
|
80
|
+
{ label: "3,200 bottles", icon: _jsx(Package, { className: "size-3" }), tone: "neutral" },
|
|
81
|
+
{ label: "Replied", tone: "brand" },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
export const SingleRecipient = {
|
|
86
|
+
args: {
|
|
87
|
+
...baseProps,
|
|
88
|
+
status: "pending",
|
|
89
|
+
fromParty: { name: "Vigneti Mario", orgId: "vm" },
|
|
90
|
+
toParty: { name: "Nordic Wines", orgId: "nw" },
|
|
91
|
+
chips: [{ label: "5,000 bottles", tone: "neutral" }],
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=offer-card.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offer-card.stories.js","sourceRoot":"","sources":["../../src/components/offer-card.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type OrgAvatarStatus = "pending" | "responded" | "won" | "lost" | "none";
|
|
2
|
+
export type OrgAvatarSize = "sm" | "md" | "lg";
|
|
3
|
+
export interface OrgAvatarProps {
|
|
4
|
+
/** Organization name — used for initials fallback and tooltip */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Organization ID — used to derive a deterministic gradient when no logo is provided */
|
|
7
|
+
orgId?: string;
|
|
8
|
+
/** Logo URL — displayed when provided */
|
|
9
|
+
logoUrl?: string | null;
|
|
10
|
+
/** Is this avatar the viewing org ("You")? Renders in warm amber tone */
|
|
11
|
+
isOwnOrg?: boolean;
|
|
12
|
+
/** Visual status — drives ring color */
|
|
13
|
+
status?: OrgAvatarStatus;
|
|
14
|
+
/** Size token — 24 / 32 / 40 px */
|
|
15
|
+
size?: OrgAvatarSize;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function OrgAvatar({ name, orgId, logoUrl, isOwnOrg, status, size, className, }: OrgAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=org-avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-avatar.d.ts","sourceRoot":"","sources":["../../src/components/org-avatar.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,mCAAmC;IACnC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgDD,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAgB,EAChB,MAAe,EACf,IAAW,EACX,SAAS,GACV,EAAE,cAAc,2CAgDhB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
const SIZE_PX = { sm: 24, md: 32, lg: 40 };
|
|
5
|
+
const FONT_PX = { sm: 9, md: 11, lg: 13 };
|
|
6
|
+
/**
|
|
7
|
+
* Deterministic color hash — maps an orgId to one of 6 gradient combos.
|
|
8
|
+
* Stable across renders. Used when no logoUrl is provided.
|
|
9
|
+
*/
|
|
10
|
+
function hashToGradient(seed) {
|
|
11
|
+
if (!seed) {
|
|
12
|
+
return {
|
|
13
|
+
from: "color-mix(in oklab, var(--primary) 28%, white)",
|
|
14
|
+
to: "color-mix(in oklab, var(--primary) 50%, white)",
|
|
15
|
+
fg: "color-mix(in oklab, black 38%, var(--primary) 62%)",
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
let hash = 0;
|
|
19
|
+
for (let i = 0; i < seed.length; i++) {
|
|
20
|
+
hash = (hash * 31 + seed.charCodeAt(i)) | 0;
|
|
21
|
+
}
|
|
22
|
+
const palette = [
|
|
23
|
+
{ from: "oklch(0.62 0.14 210)", to: "oklch(0.48 0.13 240)", fg: "oklch(0.98 0.01 210)" },
|
|
24
|
+
{ from: "oklch(0.65 0.13 155)", to: "oklch(0.50 0.12 170)", fg: "oklch(0.98 0.01 155)" },
|
|
25
|
+
{ from: "oklch(0.66 0.15 58)", to: "oklch(0.52 0.14 42)", fg: "oklch(0.98 0.01 58)" },
|
|
26
|
+
{ from: "oklch(0.60 0.14 340)", to: "oklch(0.45 0.13 320)", fg: "oklch(0.98 0.01 340)" },
|
|
27
|
+
{ from: "oklch(0.62 0.11 130)", to: "oklch(0.48 0.10 110)", fg: "oklch(0.98 0.01 130)" },
|
|
28
|
+
{ from: "oklch(0.60 0.13 280)", to: "oklch(0.46 0.12 260)", fg: "oklch(0.98 0.01 280)" },
|
|
29
|
+
];
|
|
30
|
+
return palette[Math.abs(hash) % palette.length];
|
|
31
|
+
}
|
|
32
|
+
function initialsFrom(name) {
|
|
33
|
+
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
34
|
+
if (parts.length === 0)
|
|
35
|
+
return "?";
|
|
36
|
+
if (parts.length === 1)
|
|
37
|
+
return parts[0].slice(0, 2).toUpperCase();
|
|
38
|
+
return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
|
|
39
|
+
}
|
|
40
|
+
const RING_CLASS = {
|
|
41
|
+
none: "",
|
|
42
|
+
pending: "ring-2 ring-offset-2 ring-offset-[var(--card)] ring-[color-mix(in_oklab,var(--muted-foreground)_45%,white)]",
|
|
43
|
+
responded: "ring-2 ring-offset-2 ring-offset-[var(--card)] ring-[var(--primary)]",
|
|
44
|
+
won: "ring-2 ring-offset-2 ring-offset-[var(--card)] ring-[var(--success)]",
|
|
45
|
+
lost: "opacity-40",
|
|
46
|
+
};
|
|
47
|
+
export function OrgAvatar({ name, orgId, logoUrl, isOwnOrg = false, status = "none", size = "md", className, }) {
|
|
48
|
+
const px = SIZE_PX[size];
|
|
49
|
+
const fontPx = FONT_PX[size];
|
|
50
|
+
const initials = React.useMemo(() => initialsFrom(name), [name]);
|
|
51
|
+
const gradient = React.useMemo(() => hashToGradient(orgId ?? name), [orgId, name]);
|
|
52
|
+
const baseStyle = isOwnOrg
|
|
53
|
+
? {
|
|
54
|
+
width: px,
|
|
55
|
+
height: px,
|
|
56
|
+
fontSize: fontPx,
|
|
57
|
+
background: "linear-gradient(135deg, color-mix(in oklab, var(--accent-secondary) 30%, white), color-mix(in oklab, var(--accent-secondary) 55%, white))",
|
|
58
|
+
color: "color-mix(in oklab, black 38%, var(--accent-secondary) 62%)",
|
|
59
|
+
}
|
|
60
|
+
: {
|
|
61
|
+
width: px,
|
|
62
|
+
height: px,
|
|
63
|
+
fontSize: fontPx,
|
|
64
|
+
background: `linear-gradient(135deg, ${gradient.from}, ${gradient.to})`,
|
|
65
|
+
color: gradient.fg,
|
|
66
|
+
};
|
|
67
|
+
return (_jsx("span", { role: "img", "aria-label": name, title: name, className: cn("inline-flex shrink-0 items-center justify-center rounded-full font-display font-bold tracking-tight transition-[box-shadow,opacity] duration-[var(--duration-standard)] ease-[var(--ease-emphasized)]", "border-2 border-[var(--card)] shadow-[0_1px_3px_oklch(0_0_0/0.08)]", RING_CLASS[status], className), style: baseStyle, children: logoUrl ? (_jsx("img", { src: logoUrl, alt: name, className: "h-full w-full rounded-full object-cover", loading: "lazy" })) : (initials) }));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=org-avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-avatar.js","sourceRoot":"","sources":["../../src/components/org-avatar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import { OrgAvatar } from "./org-avatar";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof OrgAvatar;
|
|
6
|
+
tags: string[];
|
|
7
|
+
argTypes: {
|
|
8
|
+
size: {
|
|
9
|
+
control: "radio";
|
|
10
|
+
options: string[];
|
|
11
|
+
};
|
|
12
|
+
status: {
|
|
13
|
+
control: "radio";
|
|
14
|
+
options: string[];
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export default meta;
|
|
19
|
+
type Story = StoryObj<typeof meta>;
|
|
20
|
+
export declare const Default: Story;
|
|
21
|
+
export declare const WithLogo: Story;
|
|
22
|
+
export declare const OwnOrg: Story;
|
|
23
|
+
export declare const StatusPending: Story;
|
|
24
|
+
export declare const StatusResponded: Story;
|
|
25
|
+
export declare const StatusWon: Story;
|
|
26
|
+
export declare const StatusLost: Story;
|
|
27
|
+
export declare const AllSizes: Story;
|
|
28
|
+
export declare const ColorHashConsistency: Story;
|
|
29
|
+
//# sourceMappingURL=org-avatar.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-avatar.stories.d.ts","sourceRoot":"","sources":["../../src/components/org-avatar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,QAAA,MAAM,IAAI;;;;;;;;;;;;;;CAQwB,CAAC;AAEnC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAEpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AACF,eAAO,MAAM,eAAe,EAAE,KAE7B,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,KAEvB,CAAC;AACF,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAWlC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { OrgAvatar } from "./org-avatar";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: "Components/OrgAvatar",
|
|
5
|
+
component: OrgAvatar,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
argTypes: {
|
|
8
|
+
size: { control: "radio", options: ["sm", "md", "lg"] },
|
|
9
|
+
status: { control: "radio", options: ["none", "pending", "responded", "won", "lost"] },
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
export const Default = {
|
|
14
|
+
args: { name: "Nordic Wines", orgId: "org-1" },
|
|
15
|
+
};
|
|
16
|
+
export const WithLogo = {
|
|
17
|
+
args: {
|
|
18
|
+
name: "Nordic Wines",
|
|
19
|
+
logoUrl: "https://placehold.co/64x64/14b8a6/ffffff?text=NW",
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
export const OwnOrg = {
|
|
23
|
+
args: { name: "Vigneti Mario", orgId: "org-own", isOwnOrg: true },
|
|
24
|
+
};
|
|
25
|
+
export const StatusPending = {
|
|
26
|
+
args: { name: "Nordic Wines", orgId: "org-2", status: "pending" },
|
|
27
|
+
};
|
|
28
|
+
export const StatusResponded = {
|
|
29
|
+
args: { name: "Nordic Wines", orgId: "org-2", status: "responded" },
|
|
30
|
+
};
|
|
31
|
+
export const StatusWon = {
|
|
32
|
+
args: { name: "Nordic Wines", orgId: "org-2", status: "won" },
|
|
33
|
+
};
|
|
34
|
+
export const StatusLost = {
|
|
35
|
+
args: { name: "Nordic Wines", orgId: "org-2", status: "lost" },
|
|
36
|
+
};
|
|
37
|
+
export const AllSizes = {
|
|
38
|
+
args: { name: "Nordic Wines", orgId: "s1" },
|
|
39
|
+
render: () => (_jsxs("div", { className: "flex items-end gap-4", children: [_jsx(OrgAvatar, { name: "Nordic Wines", orgId: "s1", size: "sm" }), _jsx(OrgAvatar, { name: "Nordic Wines", orgId: "s1", size: "md" }), _jsx(OrgAvatar, { name: "Nordic Wines", orgId: "s1", size: "lg" })] })),
|
|
40
|
+
};
|
|
41
|
+
export const ColorHashConsistency = {
|
|
42
|
+
args: { name: "Nordic Wines" },
|
|
43
|
+
render: () => (_jsx("div", { className: "flex gap-3", children: ["Nordic Wines", "Scandic Markets", "Vinum Imports", "Tenuta Antica", "Cavas del Sur", "Maison Blanc"].map((name, i) => (_jsx(OrgAvatar, { name: name, orgId: `demo-${i}` }, name))) })),
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=org-avatar.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-avatar.stories.js","sourceRoot":"","sources":["../../src/components/org-avatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,sBAAsB;IAC7B,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QACvD,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE;KACvF;CAC+B,CAAC;AAEnC,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,kDAAkD;KAC5D;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;CAClE,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;CAClE,CAAC;AACF,MAAM,CAAC,MAAM,eAAe,GAAU;IACpC,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;CACpE,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;CAC9D,CAAC;AACF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;CAC/D,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;IAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,SAAS,IAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAG,EACtD,KAAC,SAAS,IAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAG,EACtD,KAAC,SAAS,IAAC,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,GAAG,IAClD,CACP;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAU;IACzC,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;IAC9B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,cAAK,SAAS,EAAC,YAAY,YACxB,CAAC,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,GAAG,CACzG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACX,KAAC,SAAS,IAAY,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,IAApC,IAAI,CAAoC,CACzD,CACF,GACG,CACP;CACF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -92,4 +92,9 @@ export { CelebrationPulse, type CelebrationPulseProps, } from "./components/cele
|
|
|
92
92
|
export { useCelebrationPulse } from "./hooks/use-celebration-pulse";
|
|
93
93
|
export { SentOfferCard, type SentOfferCardProps, } from "./components/sent-offer-card";
|
|
94
94
|
export { CompletedOfferCard, type CompletedOfferCardProps, type CompletedOfferStat, } from "./components/completed-offer-card";
|
|
95
|
+
export { OrgAvatar, type OrgAvatarProps, type OrgAvatarStatus, type OrgAvatarSize, } from "./components/org-avatar";
|
|
96
|
+
export { AvatarStack, type AvatarStackProps, type StackedOrg, } from "./components/avatar-stack";
|
|
97
|
+
export { BranchEditBanner, type BranchEditBannerProps, } from "./components/branch-edit-banner";
|
|
98
|
+
export { JourneyCard, type JourneyCardProps, type JourneyCardVariant, } from "./components/journey-card";
|
|
99
|
+
export { OfferCard, type OfferCardProps, type OfferCardProduct, type OfferCardTender, type OfferCardPrice, type OfferParty, type OfferCardChip, type OfferCardStatus, type OfferPriceKind, } from "./components/offer-card";
|
|
95
100
|
//# 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":"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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
|
@@ -93,4 +93,9 @@ export { CelebrationPulse, } from "./components/celebration-pulse";
|
|
|
93
93
|
export { useCelebrationPulse } from "./hooks/use-celebration-pulse";
|
|
94
94
|
export { SentOfferCard, } from "./components/sent-offer-card";
|
|
95
95
|
export { CompletedOfferCard, } from "./components/completed-offer-card";
|
|
96
|
+
export { OrgAvatar, } from "./components/org-avatar";
|
|
97
|
+
export { AvatarStack, } from "./components/avatar-stack";
|
|
98
|
+
export { BranchEditBanner, } from "./components/branch-edit-banner";
|
|
99
|
+
export { JourneyCard, } from "./components/journey-card";
|
|
100
|
+
export { OfferCard, } from "./components/offer-card";
|
|
96
101
|
//# 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":"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"}
|
package/package.json
CHANGED
package/src/theme/tokens.css
CHANGED
|
@@ -78,6 +78,13 @@
|
|
|
78
78
|
--animate-slide-up: slide-up 0.24s ease-out forwards;
|
|
79
79
|
--animate-chat-pulse: chat-pulse 2s ease-in-out infinite;
|
|
80
80
|
--animate-notify-bump: notify-bump 0.6s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
|
|
81
|
+
|
|
82
|
+
/* Motion tokens (producer journey overhaul 2026-04) */
|
|
83
|
+
--ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
|
|
84
|
+
--duration-micro: 150ms;
|
|
85
|
+
--duration-standard: 250ms;
|
|
86
|
+
--duration-hero: 400ms;
|
|
87
|
+
--duration-celebratory: 600ms;
|
|
81
88
|
}
|
|
82
89
|
|
|
83
90
|
@keyframes accordion-down {
|
|
@@ -508,3 +515,14 @@
|
|
|
508
515
|
stroke-dashoffset: -20;
|
|
509
516
|
}
|
|
510
517
|
}
|
|
518
|
+
|
|
519
|
+
@media (prefers-reduced-motion: reduce) {
|
|
520
|
+
*,
|
|
521
|
+
*::before,
|
|
522
|
+
*::after {
|
|
523
|
+
animation-duration: 0.01ms !important;
|
|
524
|
+
animation-iteration-count: 1 !important;
|
|
525
|
+
transition-duration: 0.01ms !important;
|
|
526
|
+
scroll-behavior: auto !important;
|
|
527
|
+
}
|
|
528
|
+
}
|