@cogentic-co/ds 0.4.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/LICENSE +21 -0
- package/README.md +139 -0
- package/dist/animations/animation-ai-analysis.d.ts +7 -0
- package/dist/animations/animation-ai-analysis.js +7 -0
- package/dist/animations/animation-ai-analysis.js.map +1 -0
- package/dist/animations/animation-audit-trail.d.ts +7 -0
- package/dist/animations/animation-audit-trail.js +5 -0
- package/dist/animations/animation-audit-trail.js.map +1 -0
- package/dist/animations/animation-compliance-reports.d.ts +7 -0
- package/dist/animations/animation-compliance-reports.js +7 -0
- package/dist/animations/animation-compliance-reports.js.map +1 -0
- package/dist/animations/animation-custom-rules.d.ts +7 -0
- package/dist/animations/animation-custom-rules.js +7 -0
- package/dist/animations/animation-custom-rules.js.map +1 -0
- package/dist/animations/animation-jira-ticket.d.ts +7 -0
- package/dist/animations/animation-jira-ticket.js +6 -0
- package/dist/animations/animation-jira-ticket.js.map +1 -0
- package/dist/animations/animation-jurisdiction-detection.d.ts +7 -0
- package/dist/animations/animation-jurisdiction-detection.js +7 -0
- package/dist/animations/animation-jurisdiction-detection.js.map +1 -0
- package/dist/animations/animation-multi-protocol.d.ts +7 -0
- package/dist/animations/animation-multi-protocol.js +5 -0
- package/dist/animations/animation-multi-protocol.js.map +1 -0
- package/dist/animations/animation-pricing-preview.d.ts +16 -0
- package/dist/animations/animation-pricing-preview.js +7 -0
- package/dist/animations/animation-pricing-preview.js.map +1 -0
- package/dist/animations/animation-realtime-updates.d.ts +7 -0
- package/dist/animations/animation-realtime-updates.js +8 -0
- package/dist/animations/animation-realtime-updates.js.map +1 -0
- package/dist/animations/animation-rest-api.d.ts +7 -0
- package/dist/animations/animation-rest-api.js +5 -0
- package/dist/animations/animation-rest-api.js.map +1 -0
- package/dist/animations/animation-risk-scoring.d.ts +7 -0
- package/dist/animations/animation-risk-scoring.js +8 -0
- package/dist/animations/animation-risk-scoring.js.map +1 -0
- package/dist/animations/animation-sandbox.d.ts +7 -0
- package/dist/animations/animation-sandbox.js +5 -0
- package/dist/animations/animation-sandbox.js.map +1 -0
- package/dist/animations/animation-scheduled-reports.d.ts +7 -0
- package/dist/animations/animation-scheduled-reports.js +7 -0
- package/dist/animations/animation-scheduled-reports.js.map +1 -0
- package/dist/animations/animation-secure-messaging.d.ts +7 -0
- package/dist/animations/animation-secure-messaging.js +6 -0
- package/dist/animations/animation-secure-messaging.js.map +1 -0
- package/dist/animations/animation-slack-notification.d.ts +7 -0
- package/dist/animations/animation-slack-notification.js +6 -0
- package/dist/animations/animation-slack-notification.js.map +1 -0
- package/dist/animations/animation-sop-mapping.d.ts +7 -0
- package/dist/animations/animation-sop-mapping.js +5 -0
- package/dist/animations/animation-sop-mapping.js.map +1 -0
- package/dist/animations/animation-team-routing.d.ts +7 -0
- package/dist/animations/animation-team-routing.js +7 -0
- package/dist/animations/animation-team-routing.js.map +1 -0
- package/dist/animations/animation-teams-notification.d.ts +7 -0
- package/dist/animations/animation-teams-notification.js +6 -0
- package/dist/animations/animation-teams-notification.js.map +1 -0
- package/dist/animations/animation-vasp-identification.d.ts +7 -0
- package/dist/animations/animation-vasp-identification.js +7 -0
- package/dist/animations/animation-vasp-identification.js.map +1 -0
- package/dist/animations/animation-webhooks.d.ts +7 -0
- package/dist/animations/animation-webhooks.js +6 -0
- package/dist/animations/animation-webhooks.js.map +1 -0
- package/dist/blocks/auth-form.d.ts +18 -0
- package/dist/blocks/auth-form.js +7 -0
- package/dist/blocks/auth-form.js.map +1 -0
- package/dist/blocks/feature-section.d.ts +17 -0
- package/dist/blocks/feature-section.js +5 -0
- package/dist/blocks/feature-section.js.map +1 -0
- package/dist/blocks/hero-section.d.ts +19 -0
- package/dist/blocks/hero-section.js +5 -0
- package/dist/blocks/hero-section.js.map +1 -0
- package/dist/blocks/pricing-table.d.ts +24 -0
- package/dist/blocks/pricing-table.js +6 -0
- package/dist/blocks/pricing-table.js.map +1 -0
- package/dist/blocks/stat-card.d.ts +15 -0
- package/dist/blocks/stat-card.js +6 -0
- package/dist/blocks/stat-card.js.map +1 -0
- package/dist/card-Cumdyf_G.d.ts +15 -0
- package/dist/charts.d.ts +4 -0
- package/dist/charts.js +5 -0
- package/dist/charts.js.map +1 -0
- package/dist/chatbot.d.ts +280 -0
- package/dist/chatbot.js +2202 -0
- package/dist/chatbot.js.map +1 -0
- package/dist/chunk-4NEQV6H2.js +39 -0
- package/dist/chunk-4NEQV6H2.js.map +1 -0
- package/dist/chunk-4YD3YS4B.js +110 -0
- package/dist/chunk-4YD3YS4B.js.map +1 -0
- package/dist/chunk-5JLZ42JT.js +125 -0
- package/dist/chunk-5JLZ42JT.js.map +1 -0
- package/dist/chunk-5OOO6TRA.js +111 -0
- package/dist/chunk-5OOO6TRA.js.map +1 -0
- package/dist/chunk-65Z2VEKG.js +161 -0
- package/dist/chunk-65Z2VEKG.js.map +1 -0
- package/dist/chunk-6RWCZUAD.js +12 -0
- package/dist/chunk-6RWCZUAD.js.map +1 -0
- package/dist/chunk-7HRPF2N2.js +56 -0
- package/dist/chunk-7HRPF2N2.js.map +1 -0
- package/dist/chunk-BNFSXNP2.js +71 -0
- package/dist/chunk-BNFSXNP2.js.map +1 -0
- package/dist/chunk-BTFYV3TI.js +102 -0
- package/dist/chunk-BTFYV3TI.js.map +1 -0
- package/dist/chunk-BTZB4JRC.js +117 -0
- package/dist/chunk-BTZB4JRC.js.map +1 -0
- package/dist/chunk-BZSA47MS.js +121 -0
- package/dist/chunk-BZSA47MS.js.map +1 -0
- package/dist/chunk-CG5JA7FM.js +107 -0
- package/dist/chunk-CG5JA7FM.js.map +1 -0
- package/dist/chunk-EFLWU2JP.js +145 -0
- package/dist/chunk-EFLWU2JP.js.map +1 -0
- package/dist/chunk-F7REPQOA.js +93 -0
- package/dist/chunk-F7REPQOA.js.map +1 -0
- package/dist/chunk-FKPK3CB7.js +143 -0
- package/dist/chunk-FKPK3CB7.js.map +1 -0
- package/dist/chunk-GZNLQE3I.js +55 -0
- package/dist/chunk-GZNLQE3I.js.map +1 -0
- package/dist/chunk-H7VUIMEL.js +172 -0
- package/dist/chunk-H7VUIMEL.js.map +1 -0
- package/dist/chunk-HTYR73ON.js +161 -0
- package/dist/chunk-HTYR73ON.js.map +1 -0
- package/dist/chunk-I26ZXVSY.js +124 -0
- package/dist/chunk-I26ZXVSY.js.map +1 -0
- package/dist/chunk-IKATDPHG.js +92 -0
- package/dist/chunk-IKATDPHG.js.map +1 -0
- package/dist/chunk-KUOF3XRZ.js +108 -0
- package/dist/chunk-KUOF3XRZ.js.map +1 -0
- package/dist/chunk-LW6GAWZM.js +148 -0
- package/dist/chunk-LW6GAWZM.js.map +1 -0
- package/dist/chunk-N7PBUY7G.js +110 -0
- package/dist/chunk-N7PBUY7G.js.map +1 -0
- package/dist/chunk-NAPDFVBI.js +102 -0
- package/dist/chunk-NAPDFVBI.js.map +1 -0
- package/dist/chunk-RTK7R4KZ.js +66 -0
- package/dist/chunk-RTK7R4KZ.js.map +1 -0
- package/dist/chunk-RXV2XUDZ.js +31 -0
- package/dist/chunk-RXV2XUDZ.js.map +1 -0
- package/dist/chunk-RZZTDJHG.js +110 -0
- package/dist/chunk-RZZTDJHG.js.map +1 -0
- package/dist/chunk-SNOJLZP4.js +197 -0
- package/dist/chunk-SNOJLZP4.js.map +1 -0
- package/dist/chunk-TAPJEVUA.js +24 -0
- package/dist/chunk-TAPJEVUA.js.map +1 -0
- package/dist/chunk-U4EPKN7G.js +518 -0
- package/dist/chunk-U4EPKN7G.js.map +1 -0
- package/dist/chunk-VWSX75RB.js +202 -0
- package/dist/chunk-VWSX75RB.js.map +1 -0
- package/dist/chunk-XFWKI45G.js +800 -0
- package/dist/chunk-XFWKI45G.js.map +1 -0
- package/dist/chunk-XQYFQ6PU.js +77 -0
- package/dist/chunk-XQYFQ6PU.js.map +1 -0
- package/dist/index-CcPuHWa-.d.ts +118 -0
- package/dist/index.d.ts +1385 -0
- package/dist/index.js +8673 -0
- package/dist/index.js.map +1 -0
- package/dist/workflow.d.ts +165 -0
- package/dist/workflow.js +5 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +157 -0
- package/src/styles/globals.css +211 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCycleIndex } from './chunk-6RWCZUAD.js';
|
|
3
|
+
import { cn } from './chunk-GZNLQE3I.js';
|
|
4
|
+
import { LazyMotion, domAnimation, m } from 'motion/react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var CORRIDORS = [
|
|
8
|
+
{
|
|
9
|
+
from: { code: "AU", flag: "\u{1F1E6}\u{1F1FA}", jurisdiction: "AUSTRAC" },
|
|
10
|
+
to: { code: "SG", flag: "\u{1F1F8}\u{1F1EC}", jurisdiction: "MAS" },
|
|
11
|
+
requirement: "Full Travel Rule \u2014 IVMS101",
|
|
12
|
+
threshold: "AUD 10,000 / SGD 20,000",
|
|
13
|
+
status: "Resolved"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
from: { code: "HK", flag: "\u{1F1ED}\u{1F1F0}", jurisdiction: "SFC" },
|
|
17
|
+
to: { code: "GB", flag: "\u{1F1EC}\u{1F1E7}", jurisdiction: "FCA" },
|
|
18
|
+
requirement: "Enhanced Due Diligence",
|
|
19
|
+
threshold: "No de minimis",
|
|
20
|
+
status: "Resolved"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
from: { code: "AE", flag: "\u{1F1E6}\u{1F1EA}", jurisdiction: "VARA" },
|
|
24
|
+
to: { code: "NL", flag: "\u{1F1F3}\u{1F1F1}", jurisdiction: "DNB" },
|
|
25
|
+
requirement: "MiCA \u2014 Travel Rule",
|
|
26
|
+
threshold: "EUR 1,000",
|
|
27
|
+
status: "Pending"
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
var CYCLE_MS = 3500;
|
|
31
|
+
function AnimationJurisdictionDetection({ className }) {
|
|
32
|
+
const [containerRef, index] = useCycleIndex(CORRIDORS.length, CYCLE_MS);
|
|
33
|
+
const c = CORRIDORS[index];
|
|
34
|
+
return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("flex flex-col p-5", className), children: [
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
36
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
37
|
+
/* @__PURE__ */ jsx("p", { className: "font-semibold text-[15px] text-foreground", children: "Jurisdiction Detection" }),
|
|
38
|
+
/* @__PURE__ */ jsx("p", { className: "text-[12px] text-gray-400", children: "Automatic corridor mapping" })
|
|
39
|
+
] }),
|
|
40
|
+
/* @__PURE__ */ jsx(
|
|
41
|
+
m.span,
|
|
42
|
+
{
|
|
43
|
+
initial: { opacity: 0, scale: 0.9 },
|
|
44
|
+
animate: { opacity: 1, scale: 1 },
|
|
45
|
+
className: cn(
|
|
46
|
+
"rounded-full px-2.5 py-1 font-semibold text-[11px]",
|
|
47
|
+
c.status === "Resolved" ? "bg-emerald-50 text-emerald-700" : "bg-amber-50 text-amber-700"
|
|
48
|
+
),
|
|
49
|
+
children: c.status
|
|
50
|
+
},
|
|
51
|
+
index
|
|
52
|
+
)
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ jsxs(
|
|
55
|
+
m.div,
|
|
56
|
+
{
|
|
57
|
+
initial: { opacity: 0, y: 6 },
|
|
58
|
+
animate: { opacity: 1, y: 0 },
|
|
59
|
+
transition: { duration: 0.3 },
|
|
60
|
+
className: "mt-4 flex items-center justify-between rounded-lg border border-gray-100 bg-gray-50 px-4 py-3",
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
63
|
+
/* @__PURE__ */ jsx("span", { className: "text-2xl", children: c.from.flag }),
|
|
64
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 font-bold font-mono text-[12px] text-gray-900", children: c.from.code }),
|
|
65
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] text-gray-400", children: c.from.jurisdiction })
|
|
66
|
+
] }),
|
|
67
|
+
/* @__PURE__ */ jsxs("div", { className: "mx-3 flex flex-1 flex-col items-center gap-1", children: [
|
|
68
|
+
/* @__PURE__ */ jsx("div", { className: "h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent" }),
|
|
69
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-[#0099BB] text-[10px]", children: "Travel Rule" }),
|
|
70
|
+
/* @__PURE__ */ jsx("div", { className: "h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent" })
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
73
|
+
/* @__PURE__ */ jsx("span", { className: "text-2xl", children: c.to.flag }),
|
|
74
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 font-bold font-mono text-[12px] text-gray-900", children: c.to.code }),
|
|
75
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] text-gray-400", children: c.to.jurisdiction })
|
|
76
|
+
] })
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
`corridor-${index}`
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ jsxs(
|
|
82
|
+
m.div,
|
|
83
|
+
{
|
|
84
|
+
initial: { opacity: 0, y: 4 },
|
|
85
|
+
animate: { opacity: 1, y: 0 },
|
|
86
|
+
transition: { duration: 0.25, delay: 0.15 },
|
|
87
|
+
className: "mt-3 grid grid-cols-2 gap-2",
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-gray-100 bg-white px-3 py-2.5", children: [
|
|
90
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-[10px] text-gray-400", children: "Requirement" }),
|
|
91
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 font-semibold text-[12px] text-gray-800", children: c.requirement })
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-gray-100 bg-white px-3 py-2.5", children: [
|
|
94
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-[10px] text-gray-400", children: "Threshold" }),
|
|
95
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 font-semibold text-[12px] text-gray-800", children: c.threshold })
|
|
96
|
+
] })
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
`detail-${index}`
|
|
100
|
+
),
|
|
101
|
+
/* @__PURE__ */ jsx(
|
|
102
|
+
m.div,
|
|
103
|
+
{
|
|
104
|
+
initial: { opacity: 0 },
|
|
105
|
+
animate: { opacity: 1 },
|
|
106
|
+
transition: { delay: 0.3 },
|
|
107
|
+
className: "mt-3 space-y-1 rounded-lg border border-gray-100 bg-white px-3 py-2",
|
|
108
|
+
children: [
|
|
109
|
+
`Originator jurisdiction: ${c.from.jurisdiction}`,
|
|
110
|
+
`Beneficiary jurisdiction: ${c.to.jurisdiction}`,
|
|
111
|
+
`Applicable requirement: ${c.requirement}`
|
|
112
|
+
].map((line, i) => /* @__PURE__ */ jsxs("p", { className: "font-mono text-[10px] text-gray-500", children: [
|
|
113
|
+
/* @__PURE__ */ jsx("span", { className: "text-emerald-500", children: "\u2713" }),
|
|
114
|
+
" ",
|
|
115
|
+
line
|
|
116
|
+
] }, i))
|
|
117
|
+
},
|
|
118
|
+
`log-${index}`
|
|
119
|
+
)
|
|
120
|
+
] }) });
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { AnimationJurisdictionDetection };
|
|
124
|
+
//# sourceMappingURL=chunk-5JLZ42JT.js.map
|
|
125
|
+
//# sourceMappingURL=chunk-5JLZ42JT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/animations/animation-jurisdiction-detection.tsx"],"names":[],"mappings":"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","file":"chunk-5JLZ42JT.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ntype Corridor = {\n from: { code: string; flag: string; jurisdiction: string }\n to: { code: string; flag: string; jurisdiction: string }\n requirement: string\n threshold: string\n status: \"Resolved\" | \"Pending\"\n}\n\nconst CORRIDORS: Corridor[] = [\n {\n from: { code: \"AU\", flag: \"\\u{1F1E6}\\u{1F1FA}\", jurisdiction: \"AUSTRAC\" },\n to: { code: \"SG\", flag: \"\\u{1F1F8}\\u{1F1EC}\", jurisdiction: \"MAS\" },\n requirement: \"Full Travel Rule — IVMS101\",\n threshold: \"AUD 10,000 / SGD 20,000\",\n status: \"Resolved\",\n },\n {\n from: { code: \"HK\", flag: \"\\u{1F1ED}\\u{1F1F0}\", jurisdiction: \"SFC\" },\n to: { code: \"GB\", flag: \"\\u{1F1EC}\\u{1F1E7}\", jurisdiction: \"FCA\" },\n requirement: \"Enhanced Due Diligence\",\n threshold: \"No de minimis\",\n status: \"Resolved\",\n },\n {\n from: { code: \"AE\", flag: \"\\u{1F1E6}\\u{1F1EA}\", jurisdiction: \"VARA\" },\n to: { code: \"NL\", flag: \"\\u{1F1F3}\\u{1F1F1}\", jurisdiction: \"DNB\" },\n requirement: \"MiCA — Travel Rule\",\n threshold: \"EUR 1,000\",\n status: \"Pending\",\n },\n]\n\nconst CYCLE_MS = 3500\n\nexport default function AnimationJurisdictionDetection({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(CORRIDORS.length, CYCLE_MS)\n const c = CORRIDORS[index]\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Jurisdiction Detection</p>\n <p className=\"text-[12px] text-gray-400\">Automatic corridor mapping</p>\n </div>\n <m.span\n key={index}\n initial={{ opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n className={cn(\n \"rounded-full px-2.5 py-1 font-semibold text-[11px]\",\n c.status === \"Resolved\"\n ? \"bg-emerald-50 text-emerald-700\"\n : \"bg-amber-50 text-amber-700\",\n )}\n >\n {c.status}\n </m.span>\n </div>\n\n {/* Corridor visualisation */}\n <m.div\n key={`corridor-${index}`}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n className=\"mt-4 flex items-center justify-between rounded-lg border border-gray-100 bg-gray-50 px-4 py-3\"\n >\n {/* From */}\n <div className=\"text-center\">\n <span className=\"text-2xl\">{c.from.flag}</span>\n <p className=\"mt-1 font-bold font-mono text-[12px] text-gray-900\">{c.from.code}</p>\n <p className=\"text-[10px] text-gray-400\">{c.from.jurisdiction}</p>\n </div>\n\n {/* Arrow */}\n <div className=\"mx-3 flex flex-1 flex-col items-center gap-1\">\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent\" />\n <span className=\"font-medium text-[#0099BB] text-[10px]\">Travel Rule</span>\n <div className=\"h-px w-full bg-gradient-to-r from-transparent via-[#00D4FF] to-transparent\" />\n </div>\n\n {/* To */}\n <div className=\"text-center\">\n <span className=\"text-2xl\">{c.to.flag}</span>\n <p className=\"mt-1 font-bold font-mono text-[12px] text-gray-900\">{c.to.code}</p>\n <p className=\"text-[10px] text-gray-400\">{c.to.jurisdiction}</p>\n </div>\n </m.div>\n\n {/* Details */}\n <m.div\n key={`detail-${index}`}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25, delay: 0.15 }}\n className=\"mt-3 grid grid-cols-2 gap-2\"\n >\n <div className=\"rounded-lg border border-gray-100 bg-white px-3 py-2.5\">\n <span className=\"font-medium text-[10px] text-gray-400\">Requirement</span>\n <p className=\"mt-0.5 font-semibold text-[12px] text-gray-800\">{c.requirement}</p>\n </div>\n <div className=\"rounded-lg border border-gray-100 bg-white px-3 py-2.5\">\n <span className=\"font-medium text-[10px] text-gray-400\">Threshold</span>\n <p className=\"mt-0.5 font-semibold text-[12px] text-gray-800\">{c.threshold}</p>\n </div>\n </m.div>\n\n {/* Mini log */}\n <m.div\n key={`log-${index}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3 }}\n className=\"mt-3 space-y-1 rounded-lg border border-gray-100 bg-white px-3 py-2\"\n >\n {[\n `Originator jurisdiction: ${c.from.jurisdiction}`,\n `Beneficiary jurisdiction: ${c.to.jurisdiction}`,\n `Applicable requirement: ${c.requirement}`,\n ].map((line, i) => (\n <p key={i} className=\"font-mono text-[10px] text-gray-500\">\n <span className=\"text-emerald-500\">{\"\\u2713\"}</span> {line}\n </p>\n ))}\n </m.div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCycleIndex } from './chunk-6RWCZUAD.js';
|
|
3
|
+
import { cn } from './chunk-GZNLQE3I.js';
|
|
4
|
+
import { FileText, CheckCircle2, Download } from 'lucide-react';
|
|
5
|
+
import { LazyMotion, domAnimation, m } from 'motion/react';
|
|
6
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var REPORTS = [
|
|
9
|
+
{
|
|
10
|
+
ref: "CR-2024-Q4",
|
|
11
|
+
title: "AUSTRAC Compliance Report",
|
|
12
|
+
jurisdiction: "Australia",
|
|
13
|
+
flag: "\u{1F1E6}\u{1F1FA}",
|
|
14
|
+
period: "Q4 2024",
|
|
15
|
+
status: "Generated",
|
|
16
|
+
sections: [
|
|
17
|
+
{ name: "Transfers screened", items: 4821 },
|
|
18
|
+
{ name: "STRs filed", items: 3 },
|
|
19
|
+
{ name: "Sanctions hits", items: 0 },
|
|
20
|
+
{ name: "Travel Rule compliance", items: 99 }
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
ref: "CR-2024-MAS",
|
|
25
|
+
title: "MAS Regulatory Filing",
|
|
26
|
+
jurisdiction: "Singapore",
|
|
27
|
+
flag: "\u{1F1F8}\u{1F1EC}",
|
|
28
|
+
period: "H2 2024",
|
|
29
|
+
status: "Generated",
|
|
30
|
+
sections: [
|
|
31
|
+
{ name: "Transfers screened", items: 2340 },
|
|
32
|
+
{ name: "High-risk flagged", items: 18 },
|
|
33
|
+
{ name: "EDD completed", items: 18 },
|
|
34
|
+
{ name: "Travel Rule compliance", items: 100 }
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
function AnimationComplianceReports({ className }) {
|
|
39
|
+
const [containerRef, index] = useCycleIndex(REPORTS.length, 4500);
|
|
40
|
+
const r = REPORTS[index];
|
|
41
|
+
return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("flex flex-col p-5", className), children: [
|
|
42
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
43
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
44
|
+
/* @__PURE__ */ jsx("p", { className: "font-semibold text-[15px] text-foreground", children: "Compliance Reports" }),
|
|
45
|
+
/* @__PURE__ */ jsx("p", { className: "text-[12px] text-gray-400", children: "One-click generation" })
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ jsx(FileText, { className: "size-4 text-gray-400" })
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ jsxs(
|
|
50
|
+
m.div,
|
|
51
|
+
{
|
|
52
|
+
initial: { opacity: 0, y: 6 },
|
|
53
|
+
animate: { opacity: 1, y: 0 },
|
|
54
|
+
transition: { duration: 0.3 },
|
|
55
|
+
className: "mt-4 rounded-lg border border-gray-100 bg-gray-50",
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-gray-100 border-b px-4 py-3", children: [
|
|
58
|
+
/* @__PURE__ */ jsx("span", { className: "text-lg", children: r.flag }),
|
|
59
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
60
|
+
/* @__PURE__ */ jsx("p", { className: "font-semibold text-[13px] text-gray-900", children: r.title }),
|
|
61
|
+
/* @__PURE__ */ jsxs("p", { className: "text-[10px] text-gray-400", children: [
|
|
62
|
+
r.ref,
|
|
63
|
+
" ",
|
|
64
|
+
"\u2022",
|
|
65
|
+
" ",
|
|
66
|
+
r.period
|
|
67
|
+
] })
|
|
68
|
+
] }),
|
|
69
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 rounded-full bg-emerald-50 px-2 py-0.5", children: [
|
|
70
|
+
/* @__PURE__ */ jsx(CheckCircle2, { className: "size-3 text-emerald-500" }),
|
|
71
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-[10px] text-emerald-700", children: r.status })
|
|
72
|
+
] })
|
|
73
|
+
] }),
|
|
74
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2 p-3", children: r.sections.map((s, i) => /* @__PURE__ */ jsxs(
|
|
75
|
+
m.div,
|
|
76
|
+
{
|
|
77
|
+
initial: { opacity: 0, y: 4 },
|
|
78
|
+
animate: { opacity: 1, y: 0 },
|
|
79
|
+
transition: { delay: 0.1 + i * 0.08 },
|
|
80
|
+
className: "rounded-md bg-white px-3 py-2",
|
|
81
|
+
children: [
|
|
82
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] text-gray-400", children: s.name }),
|
|
83
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 font-bold font-mono text-[14px] text-gray-900", children: typeof s.items === "number" && s.items > 100 ? s.items.toLocaleString() : s.name.includes("compliance") ? `${s.items}%` : s.items })
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
s.name
|
|
87
|
+
)) })
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
`report-${index}`
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ jsxs(
|
|
93
|
+
m.div,
|
|
94
|
+
{
|
|
95
|
+
initial: { opacity: 0 },
|
|
96
|
+
animate: { opacity: 1 },
|
|
97
|
+
transition: { delay: 0.4 },
|
|
98
|
+
className: "mt-3 flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white py-2 font-medium text-[12px] text-gray-600",
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ jsx(Download, { className: "size-3.5" }),
|
|
101
|
+
"Download PDF"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
`dl-${index}`
|
|
105
|
+
)
|
|
106
|
+
] }) });
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { AnimationComplianceReports };
|
|
110
|
+
//# sourceMappingURL=chunk-5OOO6TRA.js.map
|
|
111
|
+
//# sourceMappingURL=chunk-5OOO6TRA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/animations/animation-compliance-reports.tsx"],"names":[],"mappings":"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","file":"chunk-5OOO6TRA.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2, Download, FileText } from \"lucide-react\"\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useCycleIndex } from \"../hooks/use-cycle-index\"\n\nimport { cn } from \"../lib/utils\"\n\ntype Report = {\n ref: string\n title: string\n jurisdiction: string\n flag: string\n period: string\n status: \"Generated\" | \"Pending\"\n sections: { name: string; items: number }[]\n}\n\nconst REPORTS: Report[] = [\n {\n ref: \"CR-2024-Q4\",\n title: \"AUSTRAC Compliance Report\",\n jurisdiction: \"Australia\",\n flag: \"\\u{1F1E6}\\u{1F1FA}\",\n period: \"Q4 2024\",\n status: \"Generated\",\n sections: [\n { name: \"Transfers screened\", items: 4821 },\n { name: \"STRs filed\", items: 3 },\n { name: \"Sanctions hits\", items: 0 },\n { name: \"Travel Rule compliance\", items: 99 },\n ],\n },\n {\n ref: \"CR-2024-MAS\",\n title: \"MAS Regulatory Filing\",\n jurisdiction: \"Singapore\",\n flag: \"\\u{1F1F8}\\u{1F1EC}\",\n period: \"H2 2024\",\n status: \"Generated\",\n sections: [\n { name: \"Transfers screened\", items: 2340 },\n { name: \"High-risk flagged\", items: 18 },\n { name: \"EDD completed\", items: 18 },\n { name: \"Travel Rule compliance\", items: 100 },\n ],\n },\n]\n\nexport default function AnimationComplianceReports({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(REPORTS.length, 4500)\n\n const r = REPORTS[index]\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={containerRef} className={cn(\"flex flex-col p-5\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-semibold text-[15px] text-foreground\">Compliance Reports</p>\n <p className=\"text-[12px] text-gray-400\">One-click generation</p>\n </div>\n <FileText className=\"size-4 text-gray-400\" />\n </div>\n\n {/* Report card */}\n <m.div\n key={`report-${index}`}\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.3 }}\n className=\"mt-4 rounded-lg border border-gray-100 bg-gray-50\"\n >\n <div className=\"flex items-center gap-3 border-gray-100 border-b px-4 py-3\">\n <span className=\"text-lg\">{r.flag}</span>\n <div className=\"flex-1\">\n <p className=\"font-semibold text-[13px] text-gray-900\">{r.title}</p>\n <p className=\"text-[10px] text-gray-400\">\n {r.ref} {\"\\u2022\"} {r.period}\n </p>\n </div>\n <div className=\"flex items-center gap-1.5 rounded-full bg-emerald-50 px-2 py-0.5\">\n <CheckCircle2 className=\"size-3 text-emerald-500\" />\n <span className=\"font-semibold text-[10px] text-emerald-700\">{r.status}</span>\n </div>\n </div>\n\n {/* Report sections */}\n <div className=\"grid grid-cols-2 gap-2 p-3\">\n {r.sections.map((s, i) => (\n <m.div\n key={s.name}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 + i * 0.08 }}\n className=\"rounded-md bg-white px-3 py-2\"\n >\n <p className=\"text-[10px] text-gray-400\">{s.name}</p>\n <p className=\"mt-0.5 font-bold font-mono text-[14px] text-gray-900\">\n {typeof s.items === \"number\" && s.items > 100\n ? s.items.toLocaleString()\n : s.name.includes(\"compliance\")\n ? `${s.items}%`\n : s.items}\n </p>\n </m.div>\n ))}\n </div>\n </m.div>\n\n {/* Download button mock */}\n <m.div\n key={`dl-${index}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.4 }}\n className=\"mt-3 flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white py-2 font-medium text-[12px] text-gray-600\"\n >\n <Download className=\"size-3.5\" />\n Download PDF\n </m.div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from './chunk-GZNLQE3I.js';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var ITEMS = [
|
|
6
|
+
{
|
|
7
|
+
code: "SOP-001",
|
|
8
|
+
regulation: "AML/CFT Policy",
|
|
9
|
+
jurisdiction: "AUSTRAC",
|
|
10
|
+
flag: "\u{1F1E6}\u{1F1FA}",
|
|
11
|
+
version: "v3.2",
|
|
12
|
+
coverage: "14 controls mapped",
|
|
13
|
+
lastReview: "Reviewed 3 days ago",
|
|
14
|
+
status: "mapped"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
code: "SOP-014",
|
|
18
|
+
regulation: "Travel Rule \u2014 IVMS101",
|
|
19
|
+
jurisdiction: "MAS",
|
|
20
|
+
flag: "\u{1F1F8}\u{1F1EC}",
|
|
21
|
+
version: "v2.1",
|
|
22
|
+
coverage: "8 controls mapped",
|
|
23
|
+
lastReview: "Updated 12 hours ago",
|
|
24
|
+
status: "updated"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
code: "SOP-007",
|
|
28
|
+
regulation: "Enhanced Due Diligence",
|
|
29
|
+
jurisdiction: "FCA",
|
|
30
|
+
flag: "\u{1F1EC}\u{1F1E7}",
|
|
31
|
+
version: "v1.8",
|
|
32
|
+
coverage: "11 controls mapped",
|
|
33
|
+
lastReview: "Review due in 2 days",
|
|
34
|
+
status: "review"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
code: "SOP-023",
|
|
38
|
+
regulation: "Sanctions Screening",
|
|
39
|
+
jurisdiction: "OFAC",
|
|
40
|
+
flag: "\u{1F1FA}\u{1F1F8}",
|
|
41
|
+
version: "v4.0",
|
|
42
|
+
coverage: "6 controls mapped",
|
|
43
|
+
lastReview: "Reviewed 1 week ago",
|
|
44
|
+
status: "mapped"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
code: "SOP-009",
|
|
48
|
+
regulation: "MiCA Compliance",
|
|
49
|
+
jurisdiction: "EU",
|
|
50
|
+
flag: "\u{1F1EA}\u{1F1FA}",
|
|
51
|
+
version: "v1.4",
|
|
52
|
+
coverage: "19 controls mapped",
|
|
53
|
+
lastReview: "Updated 2 days ago",
|
|
54
|
+
status: "updated"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
code: "SOP-031",
|
|
58
|
+
regulation: "VA Licensing Framework",
|
|
59
|
+
jurisdiction: "SFC",
|
|
60
|
+
flag: "\u{1F1ED}\u{1F1F0}",
|
|
61
|
+
version: "v2.0",
|
|
62
|
+
coverage: "9 controls mapped",
|
|
63
|
+
lastReview: "Reviewed 5 days ago",
|
|
64
|
+
status: "mapped"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
code: "SOP-018",
|
|
68
|
+
regulation: "Threshold Reporting",
|
|
69
|
+
jurisdiction: "FINTRAC",
|
|
70
|
+
flag: "\u{1F1E8}\u{1F1E6}",
|
|
71
|
+
version: "v3.1",
|
|
72
|
+
coverage: "7 controls mapped",
|
|
73
|
+
lastReview: "Review due tomorrow",
|
|
74
|
+
status: "review"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
code: "SOP-042",
|
|
78
|
+
regulation: "VASP Obligations",
|
|
79
|
+
jurisdiction: "VARA",
|
|
80
|
+
flag: "\u{1F1E6}\u{1F1EA}",
|
|
81
|
+
version: "v1.1",
|
|
82
|
+
coverage: "12 controls mapped",
|
|
83
|
+
lastReview: "Reviewed 2 weeks ago",
|
|
84
|
+
status: "mapped"
|
|
85
|
+
}
|
|
86
|
+
];
|
|
87
|
+
var statusStyle = {
|
|
88
|
+
mapped: { dot: "bg-emerald-400", label: "Mapped", bg: "bg-emerald-50 text-emerald-700" },
|
|
89
|
+
review: { dot: "bg-amber-400", label: "Review", bg: "bg-amber-50 text-amber-700" },
|
|
90
|
+
updated: { dot: "bg-[#00D4FF]", label: "Updated", bg: "bg-sky-50 text-sky-700" }
|
|
91
|
+
};
|
|
92
|
+
function AnimationSopMapping({ className }) {
|
|
93
|
+
const doubled = [...ITEMS, ...ITEMS];
|
|
94
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("relative flex items-center overflow-hidden", className), children: [
|
|
95
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 left-0 z-10 w-16 bg-gradient-to-r from-card/40 to-transparent" }),
|
|
96
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 z-10 w-16 bg-gradient-to-l from-card/40 to-transparent" }),
|
|
97
|
+
/* @__PURE__ */ jsx(
|
|
98
|
+
"div",
|
|
99
|
+
{
|
|
100
|
+
className: "flex w-max animate-marquee-left gap-4 px-4",
|
|
101
|
+
style: { animationDuration: "55s" },
|
|
102
|
+
children: doubled.map((item, i) => {
|
|
103
|
+
const st = statusStyle[item.status];
|
|
104
|
+
return /* @__PURE__ */ jsxs(
|
|
105
|
+
"div",
|
|
106
|
+
{
|
|
107
|
+
className: "flex shrink-0 flex-col rounded-xl border border-gray-200 bg-white shadow-sm",
|
|
108
|
+
style: { width: 260 },
|
|
109
|
+
children: [
|
|
110
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-gray-100 border-b px-4 py-3", children: [
|
|
111
|
+
/* @__PURE__ */ jsx("span", { className: "font-bold font-mono text-[11px] text-gray-400", children: item.code }),
|
|
112
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-gray-300", children: item.version }),
|
|
113
|
+
/* @__PURE__ */ jsx(
|
|
114
|
+
"span",
|
|
115
|
+
{
|
|
116
|
+
className: cn(
|
|
117
|
+
"ml-auto rounded-full px-2 py-0.5 font-semibold text-[10px]",
|
|
118
|
+
st.bg
|
|
119
|
+
),
|
|
120
|
+
children: st.label
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
] }),
|
|
124
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 px-4 py-3", children: [
|
|
125
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
126
|
+
/* @__PURE__ */ jsx("p", { className: "font-semibold text-[13px] text-gray-900 leading-snug", children: item.regulation }),
|
|
127
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-1 flex items-center gap-1.5", children: [
|
|
128
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm", children: item.flag }),
|
|
129
|
+
/* @__PURE__ */ jsx("span", { className: "text-[11px] text-gray-500", children: item.jurisdiction })
|
|
130
|
+
] })
|
|
131
|
+
] }),
|
|
132
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
133
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ jsx("span", { className: "font-medium text-[10px] text-gray-500", children: item.coverage }) }),
|
|
134
|
+
/* @__PURE__ */ jsx("div", { className: "mt-1 h-1.5 overflow-hidden rounded-full bg-gray-100", children: /* @__PURE__ */ jsx(
|
|
135
|
+
"div",
|
|
136
|
+
{
|
|
137
|
+
className: cn(
|
|
138
|
+
"h-full rounded-full",
|
|
139
|
+
item.status === "mapped" ? "bg-emerald-400" : item.status === "updated" ? "bg-[#00D4FF]" : "bg-amber-400"
|
|
140
|
+
),
|
|
141
|
+
style: {
|
|
142
|
+
width: item.status === "mapped" ? "100%" : item.status === "updated" ? "85%" : "60%"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
) })
|
|
146
|
+
] }),
|
|
147
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] text-gray-400", children: item.lastReview })
|
|
148
|
+
] })
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
`${item.code}-${i}`
|
|
152
|
+
);
|
|
153
|
+
})
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
] });
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export { AnimationSopMapping };
|
|
160
|
+
//# sourceMappingURL=chunk-65Z2VEKG.js.map
|
|
161
|
+
//# sourceMappingURL=chunk-65Z2VEKG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/animations/animation-sop-mapping.tsx"],"names":[],"mappings":"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","file":"chunk-65Z2VEKG.js","sourcesContent":["\"use client\"\n\nimport { cn } from \"../lib/utils\"\n\ntype SopItem = {\n code: string\n regulation: string\n jurisdiction: string\n flag: string\n version: string\n coverage: string\n lastReview: string\n status: \"mapped\" | \"review\" | \"updated\"\n}\n\nconst ITEMS: SopItem[] = [\n {\n code: \"SOP-001\",\n regulation: \"AML/CFT Policy\",\n jurisdiction: \"AUSTRAC\",\n flag: \"\\u{1F1E6}\\u{1F1FA}\",\n version: \"v3.2\",\n coverage: \"14 controls mapped\",\n lastReview: \"Reviewed 3 days ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-014\",\n regulation: \"Travel Rule — IVMS101\",\n jurisdiction: \"MAS\",\n flag: \"\\u{1F1F8}\\u{1F1EC}\",\n version: \"v2.1\",\n coverage: \"8 controls mapped\",\n lastReview: \"Updated 12 hours ago\",\n status: \"updated\",\n },\n {\n code: \"SOP-007\",\n regulation: \"Enhanced Due Diligence\",\n jurisdiction: \"FCA\",\n flag: \"\\u{1F1EC}\\u{1F1E7}\",\n version: \"v1.8\",\n coverage: \"11 controls mapped\",\n lastReview: \"Review due in 2 days\",\n status: \"review\",\n },\n {\n code: \"SOP-023\",\n regulation: \"Sanctions Screening\",\n jurisdiction: \"OFAC\",\n flag: \"\\u{1F1FA}\\u{1F1F8}\",\n version: \"v4.0\",\n coverage: \"6 controls mapped\",\n lastReview: \"Reviewed 1 week ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-009\",\n regulation: \"MiCA Compliance\",\n jurisdiction: \"EU\",\n flag: \"\\u{1F1EA}\\u{1F1FA}\",\n version: \"v1.4\",\n coverage: \"19 controls mapped\",\n lastReview: \"Updated 2 days ago\",\n status: \"updated\",\n },\n {\n code: \"SOP-031\",\n regulation: \"VA Licensing Framework\",\n jurisdiction: \"SFC\",\n flag: \"\\u{1F1ED}\\u{1F1F0}\",\n version: \"v2.0\",\n coverage: \"9 controls mapped\",\n lastReview: \"Reviewed 5 days ago\",\n status: \"mapped\",\n },\n {\n code: \"SOP-018\",\n regulation: \"Threshold Reporting\",\n jurisdiction: \"FINTRAC\",\n flag: \"\\u{1F1E8}\\u{1F1E6}\",\n version: \"v3.1\",\n coverage: \"7 controls mapped\",\n lastReview: \"Review due tomorrow\",\n status: \"review\",\n },\n {\n code: \"SOP-042\",\n regulation: \"VASP Obligations\",\n jurisdiction: \"VARA\",\n flag: \"\\u{1F1E6}\\u{1F1EA}\",\n version: \"v1.1\",\n coverage: \"12 controls mapped\",\n lastReview: \"Reviewed 2 weeks ago\",\n status: \"mapped\",\n },\n]\n\nconst statusStyle: Record<SopItem[\"status\"], { dot: string; label: string; bg: string }> = {\n mapped: { dot: \"bg-emerald-400\", label: \"Mapped\", bg: \"bg-emerald-50 text-emerald-700\" },\n review: { dot: \"bg-amber-400\", label: \"Review\", bg: \"bg-amber-50 text-amber-700\" },\n updated: { dot: \"bg-[#00D4FF]\", label: \"Updated\", bg: \"bg-sky-50 text-sky-700\" },\n}\n\nexport default function AnimationSopMapping({ className }: { className?: string }) {\n const doubled = [...ITEMS, ...ITEMS]\n\n return (\n <div className={cn(\"relative flex items-center overflow-hidden\", className)}>\n {/* Fade edges */}\n <div className=\"pointer-events-none absolute inset-y-0 left-0 z-10 w-16 bg-gradient-to-r from-card/40 to-transparent\" />\n <div className=\"pointer-events-none absolute inset-y-0 right-0 z-10 w-16 bg-gradient-to-l from-card/40 to-transparent\" />\n\n {/* Scrolling row */}\n <div\n className=\"flex w-max animate-marquee-left gap-4 px-4\"\n style={{ animationDuration: \"55s\" }}\n >\n {doubled.map((item, i) => {\n const st = statusStyle[item.status]\n return (\n <div\n key={`${item.code}-${i}`}\n className=\"flex shrink-0 flex-col rounded-xl border border-gray-200 bg-white shadow-sm\"\n style={{ width: 260 }}\n >\n {/* Header */}\n <div className=\"flex items-center gap-2 border-gray-100 border-b px-4 py-3\">\n <span className=\"font-bold font-mono text-[11px] text-gray-400\">{item.code}</span>\n <span className=\"text-[10px] text-gray-300\">{item.version}</span>\n <span\n className={cn(\n \"ml-auto rounded-full px-2 py-0.5 font-semibold text-[10px]\",\n st.bg,\n )}\n >\n {st.label}\n </span>\n </div>\n\n {/* Body */}\n <div className=\"flex flex-col gap-2.5 px-4 py-3\">\n <div>\n <p className=\"font-semibold text-[13px] text-gray-900 leading-snug\">\n {item.regulation}\n </p>\n <div className=\"mt-1 flex items-center gap-1.5\">\n <span className=\"text-sm\">{item.flag}</span>\n <span className=\"text-[11px] text-gray-500\">{item.jurisdiction}</span>\n </div>\n </div>\n\n {/* Progress bar */}\n <div>\n <div className=\"flex items-center justify-between\">\n <span className=\"font-medium text-[10px] text-gray-500\">{item.coverage}</span>\n </div>\n <div className=\"mt-1 h-1.5 overflow-hidden rounded-full bg-gray-100\">\n <div\n className={cn(\n \"h-full rounded-full\",\n item.status === \"mapped\"\n ? \"bg-emerald-400\"\n : item.status === \"updated\"\n ? \"bg-[#00D4FF]\"\n : \"bg-amber-400\",\n )}\n style={{\n width:\n item.status === \"mapped\"\n ? \"100%\"\n : item.status === \"updated\"\n ? \"85%\"\n : \"60%\",\n }}\n />\n </div>\n </div>\n\n <p className=\"text-[10px] text-gray-400\">{item.lastReview}</p>\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useAnimationTimer } from './chunk-RXV2XUDZ.js';
|
|
3
|
+
|
|
4
|
+
// src/hooks/use-cycle-index.ts
|
|
5
|
+
function useCycleIndex(length, intervalMs) {
|
|
6
|
+
const [ref, tick] = useAnimationTimer(intervalMs);
|
|
7
|
+
return [ref, tick % length];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { useCycleIndex };
|
|
11
|
+
//# sourceMappingURL=chunk-6RWCZUAD.js.map
|
|
12
|
+
//# sourceMappingURL=chunk-6RWCZUAD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-cycle-index.ts"],"names":[],"mappings":";;;AAYO,SAAS,aAAA,CAAc,QAAgB,UAAA,EAAoB;AAChE,EAAA,MAAM,CAAC,GAAA,EAAK,IAAI,CAAA,GAAI,kBAAkB,UAAU,CAAA;AAChD,EAAA,OAAO,CAAC,GAAA,EAAK,IAAA,GAAO,MAAM,CAAA;AAC5B","file":"chunk-6RWCZUAD.js","sourcesContent":["\"use client\"\n\nimport { useAnimationTimer } from \"./use-animation-timer\"\n\n/**\n * Returns a cycling index (0 → length−1) that advances on a visibility-gated interval.\n * Built on top of useAnimationTimer — the timer only ticks while the element is visible.\n *\n * @param length Number of items to cycle through\n * @param intervalMs Milliseconds between each advance\n * @returns [ref, currentIndex] — attach ref to the container element\n */\nexport function useCycleIndex(length: number, intervalMs: number) {\n const [ref, tick] = useAnimationTimer(intervalMs)\n return [ref, tick % length] as const\n}\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Card, CardHeader, CardTitle, CardContent } from './chunk-CG5JA7FM.js';
|
|
3
|
+
import { __objRest, __spreadProps, __spreadValues, cn } from './chunk-GZNLQE3I.js';
|
|
4
|
+
import { TrendingUpIcon, TrendingDownIcon } from 'lucide-react';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function StatCard(_a) {
|
|
8
|
+
var _b = _a, {
|
|
9
|
+
label,
|
|
10
|
+
value,
|
|
11
|
+
description,
|
|
12
|
+
trend,
|
|
13
|
+
trendDirection,
|
|
14
|
+
icon,
|
|
15
|
+
className
|
|
16
|
+
} = _b, props = __objRest(_b, [
|
|
17
|
+
"label",
|
|
18
|
+
"value",
|
|
19
|
+
"description",
|
|
20
|
+
"trend",
|
|
21
|
+
"trendDirection",
|
|
22
|
+
"icon",
|
|
23
|
+
"className"
|
|
24
|
+
]);
|
|
25
|
+
return /* @__PURE__ */ jsxs(Card, __spreadProps(__spreadValues({ "data-slot": "stat-card", className: cn("", className) }, props), { children: [
|
|
26
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "flex flex-row items-center justify-between space-y-0 pb-2", children: [
|
|
27
|
+
/* @__PURE__ */ jsx(CardTitle, { className: "font-medium text-muted-foreground text-sm", children: label }),
|
|
28
|
+
icon && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground [&>svg]:size-4", children: icon })
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsxs(CardContent, { children: [
|
|
31
|
+
/* @__PURE__ */ jsx("div", { className: "font-bold text-2xl", children: value }),
|
|
32
|
+
(description || trend) && /* @__PURE__ */ jsxs("p", { className: "mt-1 flex items-center gap-1 text-muted-foreground text-xs", children: [
|
|
33
|
+
trend && trendDirection && /* @__PURE__ */ jsxs(
|
|
34
|
+
"span",
|
|
35
|
+
{
|
|
36
|
+
className: cn(
|
|
37
|
+
"inline-flex items-center gap-0.5 font-medium",
|
|
38
|
+
trendDirection === "up" && "text-emerald-600 dark:text-emerald-400",
|
|
39
|
+
trendDirection === "down" && "text-red-600 dark:text-red-400"
|
|
40
|
+
),
|
|
41
|
+
children: [
|
|
42
|
+
trendDirection === "up" && /* @__PURE__ */ jsx(TrendingUpIcon, { className: "size-3" }),
|
|
43
|
+
trendDirection === "down" && /* @__PURE__ */ jsx(TrendingDownIcon, { className: "size-3" }),
|
|
44
|
+
trend
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
description && /* @__PURE__ */ jsx("span", { children: description })
|
|
49
|
+
] })
|
|
50
|
+
] })
|
|
51
|
+
] }));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { StatCard };
|
|
55
|
+
//# sourceMappingURL=chunk-7HRPF2N2.js.map
|
|
56
|
+
//# sourceMappingURL=chunk-7HRPF2N2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blocks/stat-card.tsx"],"names":[],"mappings":";;;;;AAcA,SAAS,SAAS,EAAA,EASA;AATA,EAAA,IAAA,EAAA,GAAA,EAAA,EAChB;AAAA,IAAA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GArBF,GAckB,EAAA,EAQb,KAAA,GAAA,SAAA,CARa,EAAA,EAQb;AAAA,IAPH,OAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAK,WAAA,EAAU,WAAA,EAAY,SAAA,EAAW,GAAG,EAAA,EAAI,SAAS,CAAA,EAAA,EAAO,KAAA,CAAA,EAA7D,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,UAAA,EAAA,EAAW,WAAU,2DAAA,EACpB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MACvE,IAAA,oBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAwC,QAAA,EAAA,IAAA,EAAK;AAAA,KAAA,EACxE,CAAA;AAAA,yBACC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAAA,CACzC,WAAA,IAAe,KAAA,qBACf,IAAA,CAAC,GAAA,EAAA,EAAE,WAAU,4DAAA,EACV,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,cAAA,oBACR,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,8CAAA;AAAA,cACA,mBAAmB,IAAA,IAAQ,wCAAA;AAAA,cAC3B,mBAAmB,MAAA,IAAU;AAAA,aAC/B;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,cAAA,KAAmB,IAAA,oBAAQ,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,cAC9D,cAAA,KAAmB,MAAA,oBAAU,GAAA,CAAC,gBAAA,EAAA,EAAiB,WAAU,QAAA,EAAS,CAAA;AAAA,cAClE;AAAA;AAAA;AAAA,SACH;AAAA,QAED,WAAA,oBAAe,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,WAAA,EAAY;AAAA,OAAA,EACrC;AAAA,KAAA,EAEJ;AAAA,GAAA,EAAA,CACF,CAAA;AAEJ","file":"chunk-7HRPF2N2.js","sourcesContent":["import { TrendingDownIcon, TrendingUpIcon } from \"lucide-react\"\nimport type * as React from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"../components/card\"\nimport { cn } from \"../lib/utils\"\n\ntype StatCardProps = React.ComponentProps<typeof Card> & {\n label: string\n value: string | number\n description?: string\n trend?: string\n trendDirection?: \"up\" | \"down\" | \"neutral\"\n icon?: React.ReactNode\n}\n\nfunction StatCard({\n label,\n value,\n description,\n trend,\n trendDirection,\n icon,\n className,\n ...props\n}: StatCardProps) {\n return (\n <Card data-slot=\"stat-card\" className={cn(\"\", className)} {...props}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"font-medium text-muted-foreground text-sm\">{label}</CardTitle>\n {icon && <span className=\"text-muted-foreground [&>svg]:size-4\">{icon}</span>}\n </CardHeader>\n <CardContent>\n <div className=\"font-bold text-2xl\">{value}</div>\n {(description || trend) && (\n <p className=\"mt-1 flex items-center gap-1 text-muted-foreground text-xs\">\n {trend && trendDirection && (\n <span\n className={cn(\n \"inline-flex items-center gap-0.5 font-medium\",\n trendDirection === \"up\" && \"text-emerald-600 dark:text-emerald-400\",\n trendDirection === \"down\" && \"text-red-600 dark:text-red-400\",\n )}\n >\n {trendDirection === \"up\" && <TrendingUpIcon className=\"size-3\" />}\n {trendDirection === \"down\" && <TrendingDownIcon className=\"size-3\" />}\n {trend}\n </span>\n )}\n {description && <span>{description}</span>}\n </p>\n )}\n </CardContent>\n </Card>\n )\n}\n\nexport { StatCard }\nexport type { StatCardProps }\n"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { __objRest, __spreadValues, cn } from './chunk-GZNLQE3I.js';
|
|
3
|
+
import { Button as Button$1 } from '@base-ui/react/button';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var buttonVariants = cva(
|
|
8
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
13
|
+
outline: "border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs",
|
|
14
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
15
|
+
ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground",
|
|
16
|
+
destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
|
|
17
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
18
|
+
callout: "bg-tagline border shadow-sm hover:bg-primary/90 hover:text-background",
|
|
19
|
+
toggle: "border rounded-full border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground"
|
|
20
|
+
},
|
|
21
|
+
size: {
|
|
22
|
+
default: "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
23
|
+
xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
24
|
+
sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5",
|
|
25
|
+
lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
|
|
26
|
+
xl: "h-12 gap-2 rounded-xl px-6",
|
|
27
|
+
icon: "size-9",
|
|
28
|
+
"icon-xs": "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
29
|
+
"icon-sm": "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md",
|
|
30
|
+
"icon-lg": "size-10"
|
|
31
|
+
},
|
|
32
|
+
font: {
|
|
33
|
+
default: "",
|
|
34
|
+
mono: "font-mono font-semibold"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
defaultVariants: {
|
|
38
|
+
variant: "default",
|
|
39
|
+
size: "default",
|
|
40
|
+
font: "default"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
function Button(_a) {
|
|
45
|
+
var _b = _a, {
|
|
46
|
+
className,
|
|
47
|
+
variant = "default",
|
|
48
|
+
size = "default",
|
|
49
|
+
font = "default",
|
|
50
|
+
render
|
|
51
|
+
} = _b, props = __objRest(_b, [
|
|
52
|
+
"className",
|
|
53
|
+
"variant",
|
|
54
|
+
"size",
|
|
55
|
+
"font",
|
|
56
|
+
"render"
|
|
57
|
+
]);
|
|
58
|
+
return /* @__PURE__ */ jsx(
|
|
59
|
+
Button$1,
|
|
60
|
+
__spreadValues({
|
|
61
|
+
"data-slot": "button",
|
|
62
|
+
className: cn(buttonVariants({ variant, size, font, className })),
|
|
63
|
+
nativeButton: !render,
|
|
64
|
+
render
|
|
65
|
+
}, props)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { Button, buttonVariants };
|
|
70
|
+
//# sourceMappingURL=chunk-BNFSXNP2.js.map
|
|
71
|
+
//# sourceMappingURL=chunk-BNFSXNP2.js.map
|