@cellarnode/ui 0.209.2 → 0.211.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/confirm-card.d.ts +9 -0
- package/dist/agent/confirm-card.d.ts.map +1 -1
- package/dist/agent/confirm-card.js +28 -2
- package/dist/agent/confirm-card.js.map +1 -1
- package/dist/agent/conversation.d.ts +10 -0
- package/dist/agent/conversation.d.ts.map +1 -1
- package/dist/agent/conversation.js +4 -4
- package/dist/agent/conversation.js.map +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/message.d.ts +4 -1
- package/dist/agent/message.d.ts.map +1 -1
- package/dist/agent/message.js +2 -2
- package/dist/agent/message.js.map +1 -1
- package/dist/agent/schema.d.ts +25 -0
- package/dist/agent/schema.d.ts.map +1 -1
- package/dist/agent/schema.js +7 -0
- package/dist/agent/schema.js.map +1 -1
- package/dist/agent/states.d.ts +24 -1
- package/dist/agent/states.d.ts.map +1 -1
- package/dist/agent/states.js +35 -6
- package/dist/agent/states.js.map +1 -1
- package/dist/components/filter-chips.d.ts +23 -0
- package/dist/components/filter-chips.d.ts.map +1 -0
- package/dist/components/filter-chips.js +6 -0
- package/dist/components/filter-chips.js.map +1 -0
- package/dist/components/importer-picker-modal.js +5 -5
- package/dist/components/importer-picker-modal.js.map +1 -1
- package/dist/components/page-header.d.ts +9 -0
- package/dist/components/page-header.d.ts.map +1 -0
- package/dist/components/page-header.js +7 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/segmented-tabs.d.ts +19 -0
- package/dist/components/segmented-tabs.d.ts.map +1 -0
- package/dist/components/segmented-tabs.js +7 -0
- package/dist/components/segmented-tabs.js.map +1 -0
- package/dist/fic-label-renderer/brand-font.js +2 -2
- package/dist/globe/svg-globe-geo.d.ts +16 -0
- package/dist/globe/svg-globe-geo.d.ts.map +1 -0
- package/dist/globe/svg-globe-geo.js +48 -0
- package/dist/globe/svg-globe-geo.js.map +1 -0
- package/dist/globe/svg-globe-map-layer.d.ts +18 -0
- package/dist/globe/svg-globe-map-layer.d.ts.map +1 -0
- package/dist/globe/svg-globe-map-layer.js +47 -0
- package/dist/globe/svg-globe-map-layer.js.map +1 -0
- package/dist/globe/svg-globe-pin-layer.d.ts +17 -0
- package/dist/globe/svg-globe-pin-layer.d.ts.map +1 -0
- package/dist/globe/svg-globe-pin-layer.js +111 -0
- package/dist/globe/svg-globe-pin-layer.js.map +1 -0
- package/dist/globe/svg-globe-renderer.d.ts +3 -0
- package/dist/globe/svg-globe-renderer.d.ts.map +1 -0
- package/dist/globe/svg-globe-renderer.js +57 -0
- package/dist/globe/svg-globe-renderer.js.map +1 -0
- package/dist/globe/svg-globe.css +247 -0
- package/dist/globe/svg-globe.d.ts +46 -0
- package/dist/globe/svg-globe.d.ts.map +1 -0
- package/dist/globe/svg-globe.js +45 -0
- package/dist/globe/svg-globe.js.map +1 -0
- package/dist/globe/svg.d.ts +9 -0
- package/dist/globe/svg.d.ts.map +1 -0
- package/dist/globe/svg.js +6 -0
- package/dist/globe/svg.js.map +1 -0
- package/dist/globe/use-svg-globe-gestures.d.ts +21 -0
- package/dist/globe/use-svg-globe-gestures.d.ts.map +1 -0
- package/dist/globe/use-svg-globe-gestures.js +190 -0
- package/dist/globe/use-svg-globe-gestures.js.map +1 -0
- package/dist/globe/use-svg-globe-item-interactions.d.ts +20 -0
- package/dist/globe/use-svg-globe-item-interactions.d.ts.map +1 -0
- package/dist/globe/use-svg-globe-item-interactions.js +66 -0
- package/dist/globe/use-svg-globe-item-interactions.js.map +1 -0
- package/dist/globe/use-svg-globe-navigation.d.ts +17 -0
- package/dist/globe/use-svg-globe-navigation.d.ts.map +1 -0
- package/dist/globe/use-svg-globe-navigation.js +107 -0
- package/dist/globe/use-svg-globe-navigation.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/product-editor/product-editor-surface.d.ts.map +1 -1
- package/dist/product-editor/product-editor-surface.js +5 -3
- package/dist/product-editor/product-editor-surface.js.map +1 -1
- package/dist/product-editor/tabs/product-status-tab.js +4 -4
- package/package.json +30 -23
- package/src/theme/fonts/OFL-Hanken-Grotesk.txt +93 -0
- package/src/theme/fonts/OFL-Instrument-Sans.txt +93 -0
- package/src/theme/fonts/OFL-JetBrains-Mono.txt +93 -0
- package/src/theme/fonts/README.md +20 -0
- package/src/theme/fonts/hanken-grotesk-latin-ext-wght-normal.woff2 +0 -0
- package/src/theme/fonts/hanken-grotesk-latin-wght-normal.woff2 +0 -0
- package/src/theme/fonts/instrument-sans-latin-ext-wght-normal.woff2 +0 -0
- package/src/theme/fonts/instrument-sans-latin-wght-normal.woff2 +0 -0
- package/src/theme/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/src/theme/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/src/theme/tokens.css +145 -67
package/dist/agent/states.d.ts
CHANGED
|
@@ -22,8 +22,24 @@ export interface AgentErrorCopy {
|
|
|
22
22
|
interruptedBody: string;
|
|
23
23
|
authExpiredTitle: string;
|
|
24
24
|
authExpiredBody: string;
|
|
25
|
+
/** Neutral wording when the host passes no `capReason`: no hint line follows it. */
|
|
25
26
|
capReachedTitle: string;
|
|
26
27
|
capReachedBody: string;
|
|
28
|
+
capReachedPaidTitle: string;
|
|
29
|
+
capReachedPaidBody: string;
|
|
30
|
+
capReachedPaidHint: string;
|
|
31
|
+
capReachedDailyTitle: string;
|
|
32
|
+
capReachedDailyBody: string;
|
|
33
|
+
capReachedDailyHint: string;
|
|
34
|
+
capReachedTeamTitle: string;
|
|
35
|
+
capReachedTeamBody: string;
|
|
36
|
+
capReachedTeamHint: string;
|
|
37
|
+
capReachedThreadTitle: string;
|
|
38
|
+
capReachedThreadBody: string;
|
|
39
|
+
capReachedThreadHint: string;
|
|
40
|
+
capReachedRunTitle: string;
|
|
41
|
+
capReachedRunBody: string;
|
|
42
|
+
capReachedRunHint: string;
|
|
27
43
|
unavailableTitle: string;
|
|
28
44
|
unavailableBody: string;
|
|
29
45
|
runGoneTitle: string;
|
|
@@ -33,13 +49,20 @@ export interface AgentErrorCopy {
|
|
|
33
49
|
signIn: string;
|
|
34
50
|
}
|
|
35
51
|
export declare const ERROR_COPY: AgentErrorCopy;
|
|
52
|
+
/** Why a `capReached` alert was raised: the daily paid-action limit, the admin's daily budget, the team's monthly budget, the conversation's length, or a single run's step / tool-call / time limit. */
|
|
53
|
+
export type AgentAlertCapReason = "paid" | "daily" | "team" | "thread" | "run";
|
|
36
54
|
export interface AgentErrorProps {
|
|
37
55
|
kind: AgentErrorKind;
|
|
56
|
+
/**
|
|
57
|
+
* Only for `kind="capReached"`. Absent (or a value this version does not know): the neutral wording with no hint line. A host that sets it must clear
|
|
58
|
+
* it together with the status, or a stale reason carries over to the next cap-reached alert.
|
|
59
|
+
*/
|
|
60
|
+
capReason?: AgentAlertCapReason | undefined;
|
|
38
61
|
/** Action for the kind: retry (generic/unavailable), refetch (interrupted), sign in (authExpired). */
|
|
39
62
|
onAction?: () => void;
|
|
40
63
|
copy?: Partial<AgentErrorCopy>;
|
|
41
64
|
className?: string;
|
|
42
65
|
}
|
|
43
66
|
/** @internal Error banner: colour + icon + text, one action where the kind has one. */
|
|
44
|
-
export declare function AgentError({ kind, onAction, copy, className }: AgentErrorProps): import("react/jsx-runtime").JSX.Element;
|
|
67
|
+
export declare function AgentError({ kind, capReason, onAction, copy, className }: AgentErrorProps): import("react/jsx-runtime").JSX.Element;
|
|
45
68
|
//# sourceMappingURL=states.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AASD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,kCAAkC;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,EAC9B,OAAqB,EACrB,WAAgB,EAChB,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,2CAmCtB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AASD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,kCAAkC;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,EAC9B,OAAqB,EACrB,WAAgB,EAChB,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,2CAmCtB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,eAAO,MAAM,UAAU,EAAE,cAuCxB,CAAC;AAoBF,yMAAyM;AACzM,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,2CAmDzF"}
|
package/dist/agent/states.js
CHANGED
|
@@ -24,8 +24,26 @@ export const ERROR_COPY = {
|
|
|
24
24
|
interruptedBody: "The connection dropped while the agent was working. Reload the conversation to see where it stopped.",
|
|
25
25
|
authExpiredTitle: "Session expired",
|
|
26
26
|
authExpiredBody: "Sign in again to continue. Your conversation is kept.",
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
// One alert serves seven different backend limits, and a run can be stopped MID-STREAM by the daily, thread, step, tool-call and time limits (an approved
|
|
28
|
+
// write may already have run), so the neutral wording and the daily / thread / run wording make NO "nothing was changed" claim. Only the two refusals that
|
|
29
|
+
// are provably BEFORE anything runs say it: the paid limit (refused at approval, before the resume) and the team budget (refused at the run-budget reservation).
|
|
30
|
+
capReachedTitle: "Usage limit reached",
|
|
31
|
+
capReachedBody: "A usage limit stopped this run. Check the conversation for what finished before it stopped.",
|
|
32
|
+
capReachedPaidTitle: "Daily paid-action limit reached",
|
|
33
|
+
capReachedPaidBody: "Paid actions are used up for today. Read-only questions still work. Nothing was changed.",
|
|
34
|
+
capReachedPaidHint: "This approval will expire: ask the agent to propose the action again after 00:00 UTC.",
|
|
35
|
+
capReachedDailyTitle: "Daily agent budget used up",
|
|
36
|
+
capReachedDailyBody: "Your agent budget for today is used up.",
|
|
37
|
+
capReachedDailyHint: "It resets at 00:00 UTC. Ask again then.",
|
|
38
|
+
capReachedTeamTitle: "Team monthly agent budget used up",
|
|
39
|
+
capReachedTeamBody: "The team's monthly agent budget is used up, so new runs are paused for everyone. Nothing was changed.",
|
|
40
|
+
capReachedTeamHint: "It stays paused until the monthly budget resets on the 1st (UTC).",
|
|
41
|
+
capReachedThreadTitle: "Conversation length limit reached",
|
|
42
|
+
capReachedThreadBody: "This conversation is too long for the agent to continue.",
|
|
43
|
+
capReachedThreadHint: "Start a new conversation and ask again.",
|
|
44
|
+
capReachedRunTitle: "Run limit reached",
|
|
45
|
+
capReachedRunBody: "The agent stopped at its step, tool-call or time limit for a single run.",
|
|
46
|
+
capReachedRunHint: "Ask again with a narrower request.",
|
|
29
47
|
unavailableTitle: "Agent unavailable",
|
|
30
48
|
unavailableBody: "The agent service is not responding. Try again in a few minutes.",
|
|
31
49
|
runGoneTitle: "Approval expired",
|
|
@@ -51,10 +69,21 @@ const ERROR_TONE = {
|
|
|
51
69
|
runGone: "warning",
|
|
52
70
|
};
|
|
53
71
|
/** @internal Error banner: colour + icon + text, one action where the kind has one. */
|
|
54
|
-
export function AgentError({ kind, onAction, copy, className }) {
|
|
72
|
+
export function AgentError({ kind, capReason, onAction, copy, className }) {
|
|
55
73
|
const c = useCopy(ERROR_COPY, copy);
|
|
56
|
-
|
|
57
|
-
|
|
74
|
+
// An unmapped reason (a cast, plain JS, a newer host) must never render an empty alert: it falls back to the neutral wording.
|
|
75
|
+
// `== null`, not `=== undefined`: a plain-JS host may pass null, and this runs for EVERY alert kind before the kind check.
|
|
76
|
+
const reasonKey = capReason == null || typeof capReason !== "string"
|
|
77
|
+
? ""
|
|
78
|
+
: `capReached${capReason[0]?.toUpperCase()}${capReason.slice(1)}`;
|
|
79
|
+
const reason = kind === "capReached" && reasonKey !== "" && `${reasonKey}Title` in ERROR_COPY
|
|
80
|
+
? capReason
|
|
81
|
+
: undefined;
|
|
82
|
+
const key = reason === undefined ? kind : reasonKey;
|
|
83
|
+
const title = c[`${key}Title`];
|
|
84
|
+
const body = c[`${key}Body`];
|
|
85
|
+
// A hint exists only for an explicit reason: with none, nothing may contradict the neutral wording.
|
|
86
|
+
const hint = reason === undefined ? undefined : c[`${key}Hint`];
|
|
58
87
|
const actionLabel = kind === "interrupted"
|
|
59
88
|
? c.refetch
|
|
60
89
|
: kind === "authExpired"
|
|
@@ -65,6 +94,6 @@ export function AgentError({ kind, onAction, copy, className }) {
|
|
|
65
94
|
const tone = ERROR_TONE[kind];
|
|
66
95
|
return (_jsxs("div", { role: "alert", "data-kind": kind, className: cn("flex items-start gap-3 rounded-xl p-3 text-sm/5", tone === "danger"
|
|
67
96
|
? "bg-[var(--tone-danger-soft)] text-[var(--tone-danger-fg)]"
|
|
68
|
-
: "bg-[var(--tone-warning-soft)] text-[var(--tone-warning-fg)]", className), children: [_jsx("span", { className: "mt-0.5 shrink-0", children: ERROR_ICON[kind] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "font-medium", children: title }), _jsx("p", { className: "mt-0.5", children: body }), actionLabel && onAction && (_jsx("button", { type: "button", onClick: onAction, className: cn(agentButton.quiet, "mt-2"), children: actionLabel }))] })] }));
|
|
97
|
+
: "bg-[var(--tone-warning-soft)] text-[var(--tone-warning-fg)]", className), children: [_jsx("span", { className: "mt-0.5 shrink-0", children: ERROR_ICON[kind] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "font-medium", children: title }), _jsx("p", { className: "mt-0.5", children: body }), hint !== undefined && _jsx("p", { className: "mt-0.5", children: hint }), actionLabel && onAction && (_jsx("button", { type: "button", onClick: onAction, className: cn(agentButton.quiet, "mt-2"), children: actionLabel }))] })] }));
|
|
69
98
|
}
|
|
70
99
|
//# sourceMappingURL=states.js.map
|
package/dist/agent/states.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,aAAa,EACb,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAS9C,MAAM,UAAU,GAAwB;IACtC,QAAQ,EAAE,wBAAwB;IAClC,WAAW,EAAE,6DAA6D;IAC1E,gBAAgB,EAAE,YAAY;IAC9B,iBAAiB,EAAE,sBAAsB;IACzC,oBAAoB,EAAE,qEAAqE;CAC5F,CAAC;AAUF,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,GAAG,WAAW,EACrB,WAAW,GAAG,EAAE,EAChB,YAAY,EACZ,IAAI,GACiB;IACrB,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,KAAK,YAAY,CAAC;IAC3C,OAAO,CACL,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,KAAC,iBAAiB,yBAAa,SAAS,EAAC,QAAQ,GAAG,EAC1D,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EACtD,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAC/D,cAAc,EAAE,KAAK,EACrB,OAAO,EACL,CAAC,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrC,cACE,IAAI,EAAC,OAAO,gBACA,CAAC,CAAC,gBAAgB,EAC9B,SAAS,EAAC,qCAAqC,YAE9C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtB,iBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAChC,SAAS,EAAE,EAAE,CACX,kIAAkI,EAClI,SAAS,CACV,YAEA,CAAC,IARG,CAAC,CASC,CACV,CAAC,GACE,CACP,CAAC,CAAC,CAAC,SAAS,GAEf,CACH,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,aAAa,EACb,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAS9C,MAAM,UAAU,GAAwB;IACtC,QAAQ,EAAE,wBAAwB;IAClC,WAAW,EAAE,6DAA6D;IAC1E,gBAAgB,EAAE,YAAY;IAC9B,iBAAiB,EAAE,sBAAsB;IACzC,oBAAoB,EAAE,qEAAqE;CAC5F,CAAC;AAUF,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,GAAG,WAAW,EACrB,WAAW,GAAG,EAAE,EAChB,YAAY,EACZ,IAAI,GACiB;IACrB,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,KAAK,YAAY,CAAC;IAC3C,OAAO,CACL,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,KAAC,iBAAiB,yBAAa,SAAS,EAAC,QAAQ,GAAG,EAC1D,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EACtD,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAC/D,cAAc,EAAE,KAAK,EACrB,OAAO,EACL,CAAC,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrC,cACE,IAAI,EAAC,OAAO,gBACA,CAAC,CAAC,gBAAgB,EAC9B,SAAS,EAAC,qCAAqC,YAE9C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtB,iBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAChC,SAAS,EAAE,EAAE,CACX,kIAAkI,EAClI,SAAS,CACV,YAEA,CAAC,IARG,CAAC,CASC,CACV,CAAC,GACE,CACP,CAAC,CAAC,CAAC,SAAS,GAEf,CACH,CAAC;AACJ,CAAC;AA2CD,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,YAAY,EAAE,sBAAsB;IACpC,WAAW,EAAE,oDAAoD;IACjE,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EACb,sGAAsG;IACxG,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EAAE,uDAAuD;IACxE,0JAA0J;IAC1J,2JAA2J;IAC3J,iKAAiK;IACjK,eAAe,EAAE,qBAAqB;IACtC,cAAc,EACZ,6FAA6F;IAC/F,mBAAmB,EAAE,iCAAiC;IACtD,kBAAkB,EAChB,0FAA0F;IAC5F,kBAAkB,EAChB,uFAAuF;IACzF,oBAAoB,EAAE,4BAA4B;IAClD,mBAAmB,EAAE,yCAAyC;IAC9D,mBAAmB,EAAE,yCAAyC;IAC9D,mBAAmB,EAAE,mCAAmC;IACxD,kBAAkB,EAChB,uGAAuG;IACzG,kBAAkB,EAAE,mEAAmE;IACvF,qBAAqB,EAAE,mCAAmC;IAC1D,oBAAoB,EAAE,0DAA0D;IAChF,oBAAoB,EAAE,yCAAyC;IAC/D,kBAAkB,EAAE,mBAAmB;IACvC,iBAAiB,EAAE,0EAA0E;IAC7F,iBAAiB,EAAE,oCAAoC;IACvD,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kEAAkE;IACnF,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,8EAA8E;IAC3F,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,qBAAqB;IAC9B,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF,MAAM,UAAU,GAAsC;IACpD,OAAO,EAAE,KAAC,aAAa,yBAAa,SAAS,EAAC,QAAQ,GAAG;IACzD,WAAW,EAAE,KAAC,OAAO,yBAAa,SAAS,EAAC,QAAQ,GAAG;IACvD,WAAW,EAAE,KAAC,KAAK,yBAAa,SAAS,EAAC,QAAQ,GAAG;IACrD,UAAU,EAAE,KAAC,aAAa,yBAAa,SAAS,EAAC,QAAQ,GAAG;IAC5D,WAAW,EAAE,KAAC,OAAO,yBAAa,SAAS,EAAC,QAAQ,GAAG;IACvD,OAAO,EAAE,KAAC,UAAU,yBAAa,SAAS,EAAC,QAAQ,GAAG;CACvD,CAAC;AAEF,MAAM,UAAU,GAAmC;IACjD,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,SAAS;CACnB,CAAC;AAkBF,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAmB;IACxF,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,8HAA8H;IAC9H,2HAA2H;IAC3H,MAAM,SAAS,GACb,SAAS,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ;QAChD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,MAAM,GACV,IAAI,KAAK,YAAY,IAAI,SAAS,KAAK,EAAE,IAAI,GAAG,SAAS,OAAO,IAAI,UAAU;QAC5E,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,OAA+B,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,MAA8B,CAAC,CAAC;IACrD,oGAAoG;IACpG,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAA8B,CAAC,CAAC;IACxF,MAAM,WAAW,GACf,IAAI,KAAK,aAAa;QACpB,CAAC,CAAC,CAAC,CAAC,OAAO;QACX,CAAC,CAAC,IAAI,KAAK,aAAa;YACtB,CAAC,CAAC,CAAC,CAAC,MAAM;YACV,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,aAAa;gBAC5C,CAAC,CAAC,CAAC,CAAC,KAAK;gBACT,CAAC,CAAC,IAAI,CAAC;IACf,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CACL,eACE,IAAI,EAAC,OAAO,eACD,IAAI,EACf,SAAS,EAAE,EAAE,CACX,iDAAiD,EACjD,IAAI,KAAK,QAAQ;YACf,CAAC,CAAC,2DAA2D;YAC7D,CAAC,CAAC,6DAA6D,EACjE,SAAS,CACV,aAED,eAAM,SAAS,EAAC,iBAAiB,YAAE,UAAU,CAAC,IAAI,CAAC,GAAQ,EAC3D,eAAK,SAAS,EAAC,gBAAgB,aAC7B,YAAG,SAAS,EAAC,aAAa,YAAE,KAAK,GAAK,EACtC,YAAG,SAAS,EAAC,QAAQ,YAAE,IAAI,GAAK,EAC/B,IAAI,KAAK,SAAS,IAAI,YAAG,SAAS,EAAC,QAAQ,YAAE,IAAI,GAAK,EACtD,WAAW,IAAI,QAAQ,IAAI,CAC1B,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,YAC9E,WAAW,GACL,CACV,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface FilterChipOption<T extends string = string> {
|
|
3
|
+
value: T;
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
count?: number;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface FilterChipsBaseProps<T extends string> extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, "onChange"> {
|
|
9
|
+
label: string;
|
|
10
|
+
options: readonly FilterChipOption<T>[];
|
|
11
|
+
value: T;
|
|
12
|
+
onValueChange: (value: T) => void;
|
|
13
|
+
}
|
|
14
|
+
export type FilterChipsProps<T extends string = string> = FilterChipsBaseProps<T> & ({
|
|
15
|
+
clearValue: T;
|
|
16
|
+
clearLabel: string;
|
|
17
|
+
} | {
|
|
18
|
+
clearValue?: never;
|
|
19
|
+
clearLabel?: never;
|
|
20
|
+
});
|
|
21
|
+
export declare function FilterChips<T extends string = string>({ label, options, value, onValueChange, clearValue, clearLabel, className, ...props }: FilterChipsProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=filter-chips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-chips.d.ts","sourceRoot":"","sources":["../../src/components/filter-chips.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACzD,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAC3D,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,EACzC,UAAU,CACX;IACC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC;IACT,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC/E,CAAC;IAAE,UAAU,EAAE,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAEvF,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACrD,KAAK,EACL,OAAO,EACP,KAAK,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,CAAC,CAAC,2CAsCrB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
export function FilterChips({ label, options, value, onValueChange, clearValue, clearLabel, className, ...props }) {
|
|
4
|
+
return (_jsxs("fieldset", { "data-slot": "filter-chips", className: cn("m-0 flex min-w-0 flex-wrap items-center gap-2 border-0 p-0", className), ...props, children: [_jsx("legend", { className: "sr-only", children: label }), options.map((option) => (_jsxs("button", { type: "button", "aria-pressed": value === option.value, disabled: option.disabled, "data-slot": "filter-chip", className: "inline-flex min-h-11 items-center justify-center gap-2 rounded-full border border-border bg-background px-3 py-2 text-sm/5 font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring aria-pressed:border-primary aria-pressed:bg-primary aria-pressed:text-primary-foreground disabled:cursor-not-allowed disabled:opacity-50", onClick: () => onValueChange(option.value), children: [_jsx("span", { className: "text-balance", children: option.label }), option.count !== undefined ? (_jsxs("span", { className: "rounded-full bg-muted px-1.5 py-0.5 text-xs/4 tabular-nums text-muted-foreground", children: ["\u00B7 ", option.count] })) : null] }, option.value))), clearValue !== undefined && value !== clearValue ? (_jsx("button", { type: "button", "data-slot": "filter-chips-clear", className: "inline-flex min-h-11 items-center justify-center rounded-full px-3 py-2 text-sm/5 font-medium text-muted-foreground underline underline-offset-4 hover:text-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", onClick: () => onValueChange(clearValue), children: clearLabel })) : null] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=filter-chips.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-chips.js","sourceRoot":"","sources":["../../src/components/filter-chips.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAsBlC,MAAM,UAAU,WAAW,CAA4B,EACrD,KAAK,EACL,OAAO,EACP,KAAK,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,GAAG,KAAK,EACY;IACpB,OAAO,CACL,iCACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,4DAA4D,EAAE,SAAS,CAAC,KAClF,KAAK,aAET,iBAAQ,SAAS,EAAC,SAAS,YAAE,KAAK,GAAU,EAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,kBAEE,IAAI,EAAC,QAAQ,kBACC,KAAK,KAAK,MAAM,CAAC,KAAK,EACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,eACf,aAAa,EACvB,SAAS,EAAC,oZAAoZ,EAC9Z,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,aAE1C,eAAM,SAAS,EAAC,cAAc,YAAE,MAAM,CAAC,KAAK,GAAQ,EACnD,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5B,gBAAM,SAAS,EAAC,kFAAkF,wBAC7F,MAAM,CAAC,KAAK,IACV,CACR,CAAC,CAAC,CAAC,IAAI,KAbH,MAAM,CAAC,KAAK,CAcV,CACV,CAAC,EACD,UAAU,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAClD,iBACE,IAAI,EAAC,QAAQ,eACH,oBAAoB,EAC9B,SAAS,EAAC,0PAA0P,EACpQ,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,YAEvC,UAAU,GACJ,CACV,CAAC,CAAC,CAAC,IAAI,IACC,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -4,8 +4,8 @@ import { Check, Search, X } from "lucide-react";
|
|
|
4
4
|
import { useMemo, useState } from "react";
|
|
5
5
|
import { cn } from "../lib/utils.js";
|
|
6
6
|
const DEFAULT_COPY = {
|
|
7
|
-
monopolyTitle: "
|
|
8
|
-
monopolySubtitle: "
|
|
7
|
+
monopolyTitle: "Choose importers for this offer",
|
|
8
|
+
monopolySubtitle: "Select which importers assigned to this market will receive your offer.",
|
|
9
9
|
lockedTitle: "Direct from importer",
|
|
10
10
|
lockedSubtitle: "This tender was posted by the importer below. Your offer will go to them.",
|
|
11
11
|
openTitle: "Send offer to importers",
|
|
@@ -14,13 +14,13 @@ const DEFAULT_COPY = {
|
|
|
14
14
|
confirm: (count) => count === 0
|
|
15
15
|
? "Select at least one importer"
|
|
16
16
|
: count === 1
|
|
17
|
-
? "Send to 1 importer"
|
|
18
|
-
: `Send to ${count} importers`,
|
|
17
|
+
? "Send offer to 1 importer"
|
|
18
|
+
: `Send offer to ${count} importers`,
|
|
19
19
|
capWarning: (max) => `Your plan allows up to ${max} importers per offer.`,
|
|
20
20
|
emptyState: "No recommended importers for this market yet. Contact support.",
|
|
21
21
|
searchPlaceholder: "Search importers by name or country",
|
|
22
22
|
searchingLabel: "Searching importers",
|
|
23
|
-
marketResponsibleLabel: "
|
|
23
|
+
marketResponsibleLabel: "Assigned to this market",
|
|
24
24
|
};
|
|
25
25
|
export function ImporterPickerModal({ open, onOpenChange, mode, importers, lockedImporterId, maxSelectable, onConfirm, searchValue, onSearchChange, isSearching, copy: copyOverride, }) {
|
|
26
26
|
const copy = { ...DEFAULT_COPY, ...copyOverride };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importer-picker-modal.js","sourceRoot":"","sources":["../../src/components/importer-picker-modal.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAoElC,MAAM,YAAY,GAAuB;IACvC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"importer-picker-modal.js","sourceRoot":"","sources":["../../src/components/importer-picker-modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
|
|
3
|
+
title: React.ReactNode;
|
|
4
|
+
description?: React.ReactNode;
|
|
5
|
+
actions?: React.ReactNode;
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function PageHeader({ title, description, actions, children, className, ...props }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=page-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../src/components/page-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACvF,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,2CAmCjB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { Heading } from "./heading.js";
|
|
4
|
+
export function PageHeader({ title, description, actions, children, className, ...props }) {
|
|
5
|
+
return (_jsxs("header", { "data-slot": "page-header", className: cn("flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between", className), ...props, children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx(Heading, { level: 1, className: "break-words", children: title }), description ? (_jsx("div", { className: "mt-2 max-w-prose text-pretty text-sm/6 text-muted-foreground", children: description })) : null, children ? (_jsx("div", { "data-slot": "page-header-content", className: "mt-4 flex min-w-0 flex-wrap items-center gap-3", children: children })) : null] }), actions ? (_jsx("div", { "data-slot": "page-header-actions", className: "flex w-full shrink-0 flex-wrap items-center gap-2 sm:w-auto sm:justify-end", children: actions })) : null] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=page-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header.js","sourceRoot":"","sources":["../../src/components/page-header.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACQ;IAChB,OAAO,CACL,+BACY,aAAa,EACvB,SAAS,EAAE,EAAE,CAAC,mEAAmE,EAAE,SAAS,CAAC,KACzF,KAAK,aAET,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAC,aAAa,YACvC,KAAK,GACE,EACT,WAAW,CAAC,CAAC,CAAC,CACb,cAAK,SAAS,EAAC,8DAA8D,YAC1E,WAAW,GACR,CACP,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,2BACY,qBAAqB,EAC/B,SAAS,EAAC,gDAAgD,YAEzD,QAAQ,GACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,OAAO,CAAC,CAAC,CAAC,CACT,2BACY,qBAAqB,EAC/B,SAAS,EAAC,4EAA4E,YAErF,OAAO,GACJ,CACP,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface SegmentedTabItem {
|
|
3
|
+
value: string;
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
content: React.ReactNode;
|
|
6
|
+
count?: number;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface SegmentedTabsProps {
|
|
10
|
+
items: readonly SegmentedTabItem[];
|
|
11
|
+
value: string;
|
|
12
|
+
onValueChange: (value: string) => void;
|
|
13
|
+
"aria-label": string;
|
|
14
|
+
className?: string;
|
|
15
|
+
listClassName?: string;
|
|
16
|
+
contentClassName?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function SegmentedTabs({ items, value, onValueChange, "aria-label": ariaLabel, className, listClassName, contentClassName, }: SegmentedTabsProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=segmented-tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-tabs.d.ts","sourceRoot":"","sources":["../../src/components/segmented-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,aAAa,EACb,gBAAgB,GACjB,EAAE,kBAAkB,2CAiCpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "./tabs.js";
|
|
4
|
+
export function SegmentedTabs({ items, value, onValueChange, "aria-label": ariaLabel, className, listClassName, contentClassName, }) {
|
|
5
|
+
return (_jsxs(Tabs, { value: value, onValueChange: onValueChange, className: className, children: [_jsx(TabsList, { "aria-label": ariaLabel, className: cn("h-auto w-full flex-wrap gap-1.5 rounded-xl p-1 group-data-[orientation=horizontal]/tabs:h-auto", listClassName), children: items.map((item) => (_jsxs(TabsTrigger, { value: item.value, disabled: item.disabled, className: "h-auto min-h-11 min-w-0 whitespace-normal px-3 py-2 text-center break-words", children: [_jsx("span", { className: "text-balance", children: item.label }), item.count !== undefined ? (_jsxs("span", { className: "rounded-full bg-muted px-1.5 py-0.5 text-xs/4 tabular-nums text-muted-foreground", children: ["\u00B7 ", item.count] })) : null] }, item.value))) }), items.map((item) => (_jsx(TabsContent, { value: item.value, className: contentClassName, children: item.content }, item.value)))] }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=segmented-tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-tabs.js","sourceRoot":"","sources":["../../src/components/segmented-tabs.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAoBlE,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,aAAa,EACb,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,aAAa,EACb,gBAAgB,GACG;IACnB,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,aACpE,KAAC,QAAQ,kBACK,SAAS,EACrB,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,aAAa,CACd,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,MAAC,WAAW,IAEV,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAC,6EAA6E,aAEvF,eAAM,SAAS,EAAC,cAAc,YAAE,IAAI,CAAC,KAAK,GAAQ,EACjD,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,gBAAM,SAAS,EAAC,kFAAkF,wBAC7F,IAAI,CAAC,KAAK,IACR,CACR,CAAC,CAAC,CAAC,IAAI,KAVH,IAAI,CAAC,KAAK,CAWH,CACf,CAAC,GACO,EACV,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,WAAW,IAAkB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,YACzE,IAAI,CAAC,OAAO,IADG,IAAI,CAAC,KAAK,CAEd,CACf,CAAC,IACG,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
* not element-scoped: the `<style>` we render inside the header registers
|
|
27
27
|
* a family for the entire page, however narrowly we then apply it. A
|
|
28
28
|
* producer whose `family` happens to be a name the host app already uses
|
|
29
|
-
* — `
|
|
30
|
-
* `
|
|
29
|
+
* — `Instrument Sans Variable`, `Hanken Grotesk Variable`, and
|
|
30
|
+
* `JetBrains Mono Variable` are registered by `theme/tokens.css` —
|
|
31
31
|
* would silently REBIND that name to their file, repainting the whole
|
|
32
32
|
* document in it, including the mandatory particulars this component
|
|
33
33
|
* deliberately leaves in the system font. Escaping cannot help: the string
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { geoCentroid, geoDistance, geoOrthographic, geoPath } from "d3-geo";
|
|
2
|
+
import type { Feature, Geometry } from "geojson";
|
|
3
|
+
import type { GlobeArc, GlobeCountryDatum, GlobePoint } from "./globe-types.js";
|
|
4
|
+
type CountryProperties = {
|
|
5
|
+
alpha2: string | undefined;
|
|
6
|
+
name?: string;
|
|
7
|
+
};
|
|
8
|
+
export type CountryFeature = Feature<Geometry, CountryProperties>;
|
|
9
|
+
export declare const svgCountries: CountryFeature[];
|
|
10
|
+
export declare const countryNameByCode: Map<string, string>;
|
|
11
|
+
export declare function countryDataByCode(countryData?: GlobeCountryDatum[]): Map<string, GlobeCountryDatum>;
|
|
12
|
+
export declare function countryForPoint(point: GlobePoint): string | undefined;
|
|
13
|
+
export declare function countryLocation(code: string): [number, number] | null;
|
|
14
|
+
export declare function arcPath(arc: GlobeArc, path: ReturnType<typeof geoPath>): string;
|
|
15
|
+
export { geoCentroid, geoDistance, geoOrthographic, geoPath };
|
|
16
|
+
//# sourceMappingURL=svg-globe-geo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-globe-geo.d.ts","sourceRoot":"","sources":["../../src/globe/svg-globe-geo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAkB,eAAe,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE5F,OAAO,KAAK,EAAE,OAAO,EAAqB,QAAQ,EAAY,MAAM,SAAS,CAAC;AAI9E,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7E,KAAK,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AASlE,eAAO,MAAM,YAAY,EAAE,cAAc,EAGtC,CAAC;AAEJ,eAAO,MAAM,iBAAiB,qBAM7B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,iBAAiB,EAAO,kCAEtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAIrE;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAerE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,MAAM,CAQ/E;AAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { geoCentroid, geoDistance, geoInterpolate, geoOrthographic, geoPath } from "d3-geo";
|
|
2
|
+
import { feature } from "topojson-client";
|
|
3
|
+
import world from "world-atlas/countries-110m.json";
|
|
4
|
+
import { countryCoords } from "./country-coords.js";
|
|
5
|
+
import { numericToAlpha2 } from "./map/country-code-map.js";
|
|
6
|
+
const worldCountries = feature(world, world.objects.countries).features;
|
|
7
|
+
export const svgCountries = worldCountries.map((country) => ({
|
|
8
|
+
...country,
|
|
9
|
+
properties: { ...country.properties, alpha2: numericToAlpha2(String(country.id ?? "")) },
|
|
10
|
+
}));
|
|
11
|
+
export const countryNameByCode = new Map(svgCountries.flatMap((country) => country.properties.alpha2 && country.properties.name
|
|
12
|
+
? [[country.properties.alpha2, country.properties.name]]
|
|
13
|
+
: []));
|
|
14
|
+
export function countryDataByCode(countryData = []) {
|
|
15
|
+
return new Map(countryData.map((datum) => [datum.countryCode.toUpperCase(), datum]));
|
|
16
|
+
}
|
|
17
|
+
export function countryForPoint(point) {
|
|
18
|
+
const metadataCode = point.metadata?.countryCode;
|
|
19
|
+
const candidate = typeof metadataCode === "string" ? metadataCode : point.id;
|
|
20
|
+
return /^[a-z]{2}$/i.test(candidate) ? candidate.toUpperCase() : undefined;
|
|
21
|
+
}
|
|
22
|
+
const locationCache = new Map();
|
|
23
|
+
export function countryLocation(code) {
|
|
24
|
+
const normalized = code.toUpperCase();
|
|
25
|
+
const cached = locationCache.get(normalized);
|
|
26
|
+
if (cached !== undefined)
|
|
27
|
+
return cached;
|
|
28
|
+
const coordinate = countryCoords(normalized);
|
|
29
|
+
const country = coordinate
|
|
30
|
+
? undefined
|
|
31
|
+
: svgCountries.find((feature) => feature.properties.alpha2 === normalized);
|
|
32
|
+
const location = coordinate
|
|
33
|
+
? [coordinate.lng, coordinate.lat]
|
|
34
|
+
: country
|
|
35
|
+
? geoCentroid(country)
|
|
36
|
+
: null;
|
|
37
|
+
locationCache.set(normalized, location);
|
|
38
|
+
return location;
|
|
39
|
+
}
|
|
40
|
+
export function arcPath(arc, path) {
|
|
41
|
+
const interpolate = geoInterpolate([arc.originLng, arc.originLat], [arc.destLng, arc.destLat]);
|
|
42
|
+
return (path({
|
|
43
|
+
type: "LineString",
|
|
44
|
+
coordinates: Array.from({ length: 65 }, (_, index) => interpolate(index / 64)),
|
|
45
|
+
}) ?? "");
|
|
46
|
+
}
|
|
47
|
+
export { geoCentroid, geoDistance, geoOrthographic, geoPath };
|
|
48
|
+
//# sourceMappingURL=svg-globe-geo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-globe-geo.js","sourceRoot":"","sources":["../../src/globe/svg-globe-geo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type GeoProjection } from "d3-geo";
|
|
2
|
+
import type { GlobeArc, GlobeCountryDatum, GlobePoint } from "./globe-types.js";
|
|
3
|
+
import type { SvgGlobeLabels } from "./svg-globe.js";
|
|
4
|
+
interface SvgGlobeMapLayerProps {
|
|
5
|
+
projection: GeoProjection;
|
|
6
|
+
rotation: [number, number];
|
|
7
|
+
countryData: GlobeCountryDatum[];
|
|
8
|
+
points: GlobePoint[];
|
|
9
|
+
arcs: GlobeArc[];
|
|
10
|
+
homeCountryCode: string | null;
|
|
11
|
+
selectedCountryCode: string | null;
|
|
12
|
+
onCountryClick?: (code: string) => void;
|
|
13
|
+
locale: string;
|
|
14
|
+
labels?: SvgGlobeLabels;
|
|
15
|
+
}
|
|
16
|
+
export declare function SvgGlobeMapLayer({ projection, rotation, countryData, points, arcs, homeCountryCode, selectedCountryCode, onCountryClick, locale, labels, }: SvgGlobeMapLayerProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=svg-globe-map-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-globe-map-layer.d.ts","sourceRoot":"","sources":["../../src/globe/svg-globe-map-layer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,UAAU,qBAAqB;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAcD,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,IAAI,EACJ,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,MAAM,EACN,MAAM,GACP,EAAE,qBAAqB,2CA0EvB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { geoGraticule10 } from "d3-geo";
|
|
4
|
+
import { arcPath, countryDataByCode, geoPath, svgCountries } from "./svg-globe-geo.js";
|
|
5
|
+
import { SvgGlobePinLayer } from "./svg-globe-pin-layer.js";
|
|
6
|
+
const SIZE = 520;
|
|
7
|
+
function localizedCountryName(code, locale, fallback) {
|
|
8
|
+
try {
|
|
9
|
+
return new Intl.DisplayNames([locale], { type: "region" }).of(code) ?? fallback ?? code;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return fallback ?? code;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function intersectsViewport(bounds) {
|
|
16
|
+
return bounds[0][0] <= SIZE && bounds[1][0] >= 0 && bounds[0][1] <= SIZE && bounds[1][1] >= 0;
|
|
17
|
+
}
|
|
18
|
+
export function SvgGlobeMapLayer({ projection, rotation, countryData, points, arcs, homeCountryCode, selectedCountryCode, onCountryClick, locale, labels, }) {
|
|
19
|
+
const path = useMemo(() => geoPath(projection), [projection]);
|
|
20
|
+
const dataByCode = useMemo(() => countryDataByCode(countryData), [countryData]);
|
|
21
|
+
const normalizedSelected = selectedCountryCode?.toUpperCase() ?? null;
|
|
22
|
+
const maxValue = Math.max(1, ...countryData.map(({ value }) => Math.max(0, value)));
|
|
23
|
+
return (_jsxs(_Fragment, { children: [_jsx("path", { className: "cn-svg-globe__graticule", d: path(geoGraticule10()) ?? "" }), svgCountries.map((country) => {
|
|
24
|
+
const code = country.properties.alpha2;
|
|
25
|
+
const datum = code ? dataByCode.get(code) : undefined;
|
|
26
|
+
const value = Math.max(0, datum?.value ?? 0);
|
|
27
|
+
const countryName = code
|
|
28
|
+
? localizedCountryName(code, locale, country.properties.name)
|
|
29
|
+
: (country.properties.name ?? "Unknown country");
|
|
30
|
+
const isSelected = code === normalizedSelected;
|
|
31
|
+
const countryPath = path(country) ?? "";
|
|
32
|
+
const countryBounds = path.bounds(country);
|
|
33
|
+
const visible = countryPath.length > 0 && intersectsViewport(countryBounds);
|
|
34
|
+
const interactiveCode = code && value > 0 && visible && onCountryClick ? code : undefined;
|
|
35
|
+
const description = datum?.label ?? `${countryName}: ${new Intl.NumberFormat(locale).format(value)}`;
|
|
36
|
+
return (_jsx("path", { className: "cn-svg-globe__country", d: countryPath, fill: value > 0 ? "var(--svg-globe-demand)" : "var(--svg-globe-land)", fillOpacity: value > 0 ? 0.24 + 0.58 * Math.min(1, value / maxValue) : 0.82, stroke: isSelected ? "var(--svg-globe-selected)" : "var(--svg-globe-outline)", strokeWidth: isSelected ? 1.7 : 0.65, role: interactiveCode ? "button" : undefined, tabIndex: interactiveCode ? 0 : undefined, "aria-label": interactiveCode ? description : undefined, "aria-current": interactiveCode && isSelected ? "true" : undefined, "data-country-code": interactiveCode, "data-selected": isSelected || undefined, children: interactiveCode && _jsx("title", { children: description }) }, String(country.id ?? country.properties.name)));
|
|
37
|
+
}), arcs.map((arc) => {
|
|
38
|
+
const d = arcPath(arc, path);
|
|
39
|
+
const kind = arc.category?.toLowerCase().includes("offer") ? "offer" : "match";
|
|
40
|
+
const style = {
|
|
41
|
+
"--svg-globe-arc-phase": kind === "offer" ? "4px" : "0px",
|
|
42
|
+
...(kind === "offer" ? { strokeDasharray: "2 9" } : {}),
|
|
43
|
+
};
|
|
44
|
+
return d ? (_jsx("path", { className: "cn-svg-globe__arc", "data-arc-kind": kind, d: d, style: style, focusable: "false" }, arc.id)) : null;
|
|
45
|
+
}), _jsx(SvgGlobePinLayer, { projection: projection, rotation: rotation, countryData: countryData, points: points, homeCountryCode: homeCountryCode, selectedCountryCode: selectedCountryCode, onCountryClick: onCountryClick, locale: locale, labels: labels })] }));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=svg-globe-map-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-globe-map-layer.js","sourceRoot":"","sources":["../../src/globe/svg-globe-map-layer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { GeoProjection } from "d3-geo";
|
|
2
|
+
import type { GlobeCountryDatum, GlobePoint } from "./globe-types.js";
|
|
3
|
+
import type { SvgGlobeLabels } from "./svg-globe.js";
|
|
4
|
+
interface SvgGlobePinLayerProps {
|
|
5
|
+
projection: GeoProjection;
|
|
6
|
+
rotation: [number, number];
|
|
7
|
+
countryData: GlobeCountryDatum[];
|
|
8
|
+
points: GlobePoint[];
|
|
9
|
+
homeCountryCode: string | null;
|
|
10
|
+
selectedCountryCode: string | null;
|
|
11
|
+
onCountryClick?: (code: string) => void;
|
|
12
|
+
locale: string;
|
|
13
|
+
labels?: SvgGlobeLabels;
|
|
14
|
+
}
|
|
15
|
+
export declare function SvgGlobePinLayer({ projection, rotation, countryData, points, homeCountryCode, selectedCountryCode, onCountryClick, locale, labels, }: SvgGlobePinLayerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=svg-globe-pin-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-globe-pin-layer.d.ts","sourceRoot":"","sources":["../../src/globe/svg-globe-pin-layer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,UAAU,qBAAqB;IAC7B,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAmBD,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,MAAM,EACN,MAAM,GACP,EAAE,qBAAqB,2CAmJvB"}
|