@cogentic-co/ds 0.5.5 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animations/animation-ai-analysis.js +99 -4
- package/dist/animations/animation-ai-analysis.js.map +1 -1
- package/dist/animations/animation-audit-trail.js +194 -2
- package/dist/animations/animation-audit-trail.js.map +1 -1
- package/dist/animations/animation-compliance-reports.js +108 -3
- package/dist/animations/animation-compliance-reports.js.map +1 -1
- package/dist/animations/animation-custom-rules.js +107 -3
- package/dist/animations/animation-custom-rules.js.map +1 -1
- package/dist/animations/animation-jira-ticket.js +114 -3
- package/dist/animations/animation-jira-ticket.js.map +1 -1
- package/dist/animations/animation-jurisdiction-detection.js +122 -3
- package/dist/animations/animation-jurisdiction-detection.js.map +1 -1
- package/dist/animations/animation-multi-protocol.js +63 -2
- package/dist/animations/animation-multi-protocol.js.map +1 -1
- package/dist/animations/animation-pricing-preview.js +169 -3
- package/dist/animations/animation-pricing-preview.js.map +1 -1
- package/dist/animations/animation-realtime-updates.js +140 -4
- package/dist/animations/animation-realtime-updates.js.map +1 -1
- package/dist/animations/animation-rest-api.js +121 -2
- package/dist/animations/animation-rest-api.js.map +1 -1
- package/dist/animations/animation-risk-scoring.js +158 -4
- package/dist/animations/animation-risk-scoring.js.map +1 -1
- package/dist/animations/animation-sandbox.js +107 -2
- package/dist/animations/animation-sandbox.js.map +1 -1
- package/dist/animations/animation-scheduled-reports.js +107 -3
- package/dist/animations/animation-scheduled-reports.js.map +1 -1
- package/dist/animations/animation-secure-messaging.js +99 -3
- package/dist/animations/animation-secure-messaging.js.map +1 -1
- package/dist/animations/animation-slack-notification.js +90 -3
- package/dist/animations/animation-slack-notification.js.map +1 -1
- package/dist/animations/animation-sop-mapping.js +158 -2
- package/dist/animations/animation-sop-mapping.js.map +1 -1
- package/dist/animations/animation-team-routing.js +118 -4
- package/dist/animations/animation-team-routing.js.map +1 -1
- package/dist/animations/animation-teams-notification.js +89 -3
- package/dist/animations/animation-teams-notification.js.map +1 -1
- package/dist/animations/animation-vasp-identification.js +142 -3
- package/dist/animations/animation-vasp-identification.js.map +1 -1
- package/dist/animations/animation-webhooks.js +105 -3
- package/dist/animations/animation-webhooks.js.map +1 -1
- package/dist/blocks/auth-form.js +0 -1
- package/dist/blocks/feature-section.js +0 -1
- package/dist/blocks/hero-section.js +0 -1
- package/dist/blocks/pricing-table.js +0 -1
- package/dist/blocks/stat-card.js +0 -1
- package/dist/chart-DkwdRX-i.d.ts +50 -0
- package/dist/charts.d.ts +73 -3
- package/dist/charts.js +287 -2
- package/dist/charts.js.map +1 -1
- package/dist/chunk-6RWCZUAD.js +0 -1
- package/dist/chunk-GJAWCIGE.js +237 -0
- package/dist/chunk-GJAWCIGE.js.map +1 -0
- package/dist/chunk-GZNLQE3I.js +0 -1
- package/dist/chunk-TAPJEVUA.js +0 -1
- package/dist/index.d.ts +39 -53
- package/dist/index.js +148 -175
- package/dist/index.js.map +1 -1
- package/package.json +24 -34
- package/dist/chunk-4YD3YS4B.js +0 -110
- package/dist/chunk-4YD3YS4B.js.map +0 -1
- package/dist/chunk-5JLZ42JT.js +0 -125
- package/dist/chunk-5JLZ42JT.js.map +0 -1
- package/dist/chunk-5OOO6TRA.js +0 -111
- package/dist/chunk-5OOO6TRA.js.map +0 -1
- package/dist/chunk-65Z2VEKG.js +0 -161
- package/dist/chunk-65Z2VEKG.js.map +0 -1
- package/dist/chunk-BTFYV3TI.js +0 -102
- package/dist/chunk-BTFYV3TI.js.map +0 -1
- package/dist/chunk-BTZB4JRC.js +0 -117
- package/dist/chunk-BTZB4JRC.js.map +0 -1
- package/dist/chunk-BZSA47MS.js +0 -121
- package/dist/chunk-BZSA47MS.js.map +0 -1
- package/dist/chunk-EFLWU2JP.js +0 -145
- package/dist/chunk-EFLWU2JP.js.map +0 -1
- package/dist/chunk-F7REPQOA.js +0 -93
- package/dist/chunk-F7REPQOA.js.map +0 -1
- package/dist/chunk-FKPK3CB7.js +0 -143
- package/dist/chunk-FKPK3CB7.js.map +0 -1
- package/dist/chunk-H7VUIMEL.js +0 -172
- package/dist/chunk-H7VUIMEL.js.map +0 -1
- package/dist/chunk-HTYR73ON.js +0 -161
- package/dist/chunk-HTYR73ON.js.map +0 -1
- package/dist/chunk-I26ZXVSY.js +0 -124
- package/dist/chunk-I26ZXVSY.js.map +0 -1
- package/dist/chunk-IKATDPHG.js +0 -92
- package/dist/chunk-IKATDPHG.js.map +0 -1
- package/dist/chunk-KUOF3XRZ.js +0 -108
- package/dist/chunk-KUOF3XRZ.js.map +0 -1
- package/dist/chunk-N7PBUY7G.js +0 -110
- package/dist/chunk-N7PBUY7G.js.map +0 -1
- package/dist/chunk-NAPDFVBI.js +0 -102
- package/dist/chunk-NAPDFVBI.js.map +0 -1
- package/dist/chunk-RTK7R4KZ.js +0 -66
- package/dist/chunk-RTK7R4KZ.js.map +0 -1
- package/dist/chunk-RZZTDJHG.js +0 -110
- package/dist/chunk-RZZTDJHG.js.map +0 -1
- package/dist/chunk-SNOJLZP4.js +0 -197
- package/dist/chunk-SNOJLZP4.js.map +0 -1
- package/dist/chunk-U4EPKN7G.js +0 -518
- package/dist/chunk-U4EPKN7G.js.map +0 -1
- package/dist/index-CcPuHWa-.d.ts +0 -118
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogentic-co/ds",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Cogentic Design System — UI components for building modern compliance applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -70,34 +70,19 @@
|
|
|
70
70
|
"base-ui",
|
|
71
71
|
"cogentic"
|
|
72
72
|
],
|
|
73
|
-
"scripts": {
|
|
74
|
-
"dev": "next dev --turbopack",
|
|
75
|
-
"build": "next build --turbopack",
|
|
76
|
-
"generate:props": "node --import tsx scripts/generate-props.ts",
|
|
77
|
-
"build:pkg": "tsup",
|
|
78
|
-
"start": "next start",
|
|
79
|
-
"lint": "biome check .",
|
|
80
|
-
"lint:fix": "biome check --write .",
|
|
81
|
-
"format": "biome format --write .",
|
|
82
|
-
"size": "size-limit",
|
|
83
|
-
"size:check": "size-limit --json",
|
|
84
|
-
"test": "vitest run",
|
|
85
|
-
"test:watch": "vitest",
|
|
86
|
-
"test:visual": "playwright test",
|
|
87
|
-
"test:visual:update": "playwright test --update-snapshots",
|
|
88
|
-
"changeset": "changeset",
|
|
89
|
-
"version:bump": "changeset version",
|
|
90
|
-
"prepublishOnly": "pnpm build:pkg"
|
|
91
|
-
},
|
|
92
73
|
"peerDependencies": {
|
|
93
74
|
"next": "^15.0.0 || ^16.0.0",
|
|
94
75
|
"react": "^18.0.0 || ^19.0.0",
|
|
95
76
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
96
|
-
"tailwindcss": "^4.0.0"
|
|
77
|
+
"tailwindcss": "^4.0.0",
|
|
78
|
+
"recharts": "^3.0.0"
|
|
97
79
|
},
|
|
98
80
|
"peerDependenciesMeta": {
|
|
99
81
|
"@xyflow/react": {
|
|
100
82
|
"optional": true
|
|
83
|
+
},
|
|
84
|
+
"recharts": {
|
|
85
|
+
"optional": true
|
|
101
86
|
}
|
|
102
87
|
},
|
|
103
88
|
"dependencies": {
|
|
@@ -115,7 +100,6 @@
|
|
|
115
100
|
"motion": "^12.34.3",
|
|
116
101
|
"react-day-picker": "^9.13.2",
|
|
117
102
|
"react-resizable-panels": "^4.6.5",
|
|
118
|
-
"recharts": "3.7.0",
|
|
119
103
|
"sonner": "^2.0.7",
|
|
120
104
|
"tailwind-merge": "^3.5.0",
|
|
121
105
|
"vaul": "^1.1.2"
|
|
@@ -149,16 +133,22 @@
|
|
|
149
133
|
"vitest": "^4.0.18",
|
|
150
134
|
"vitest-axe": "^0.1.0"
|
|
151
135
|
},
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
"
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
136
|
+
"scripts": {
|
|
137
|
+
"dev": "next dev --turbopack",
|
|
138
|
+
"build": "next build --turbopack",
|
|
139
|
+
"generate:props": "node --import tsx scripts/generate-props.ts",
|
|
140
|
+
"build:pkg": "tsup",
|
|
141
|
+
"start": "next start",
|
|
142
|
+
"lint": "biome check .",
|
|
143
|
+
"lint:fix": "biome check --write .",
|
|
144
|
+
"format": "biome format --write .",
|
|
145
|
+
"size": "size-limit",
|
|
146
|
+
"size:check": "size-limit --json",
|
|
147
|
+
"test": "vitest run",
|
|
148
|
+
"test:watch": "vitest",
|
|
149
|
+
"test:visual": "playwright test",
|
|
150
|
+
"test:visual:update": "playwright test --update-snapshots",
|
|
151
|
+
"changeset": "changeset",
|
|
152
|
+
"version:bump": "changeset version"
|
|
163
153
|
}
|
|
164
|
-
}
|
|
154
|
+
}
|
package/dist/chunk-4YD3YS4B.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useCycleIndex } from './chunk-6RWCZUAD.js';
|
|
3
|
-
import { cn } from './chunk-GZNLQE3I.js';
|
|
4
|
-
import { Mail, Clock, CheckCircle2 } 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
|
-
name: "Weekly compliance summary",
|
|
11
|
-
frequency: "Every Monday 09:00",
|
|
12
|
-
recipients: "compliance-team@",
|
|
13
|
-
lastSent: "Today, 09:00",
|
|
14
|
-
nextDue: "Next Monday",
|
|
15
|
-
status: "sent"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: "Monthly STR filing digest",
|
|
19
|
-
frequency: "1st of each month",
|
|
20
|
-
recipients: "cco@, legal@",
|
|
21
|
-
lastSent: "1 Feb 2025",
|
|
22
|
-
nextDue: "1 Mar 2025",
|
|
23
|
-
status: "scheduled"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
name: "Quarterly board report",
|
|
27
|
-
frequency: "Quarterly",
|
|
28
|
-
recipients: "board@, cco@",
|
|
29
|
-
lastSent: "1 Jan 2025",
|
|
30
|
-
nextDue: "1 Apr 2025",
|
|
31
|
-
status: "scheduled"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: "Daily high-risk alerts",
|
|
35
|
-
frequency: "Daily 08:00",
|
|
36
|
-
recipients: "senior-analysts@",
|
|
37
|
-
lastSent: "Today, 08:00",
|
|
38
|
-
nextDue: "Tomorrow, 08:00",
|
|
39
|
-
status: "sent"
|
|
40
|
-
}
|
|
41
|
-
];
|
|
42
|
-
var statusConfig = {
|
|
43
|
-
sent: { icon: CheckCircle2, colour: "text-emerald-500", label: "Sent" },
|
|
44
|
-
scheduled: { icon: Clock, colour: "text-[#00D4FF]", label: "Scheduled" },
|
|
45
|
-
overdue: { icon: Clock, colour: "text-red-500", label: "Overdue" }
|
|
46
|
-
};
|
|
47
|
-
function AnimationScheduledReports({ className }) {
|
|
48
|
-
const [containerRef, activeIdx] = useCycleIndex(REPORTS.length, 3e3);
|
|
49
|
-
return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("flex flex-col p-5", className), children: [
|
|
50
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
51
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
52
|
-
/* @__PURE__ */ jsx("p", { className: "font-semibold text-[15px] text-foreground", children: "Scheduled Reports" }),
|
|
53
|
-
/* @__PURE__ */ jsxs("p", { className: "text-[12px] text-gray-400", children: [
|
|
54
|
-
REPORTS.length,
|
|
55
|
-
" active schedules"
|
|
56
|
-
] })
|
|
57
|
-
] }),
|
|
58
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 rounded-full bg-[#00D4FF]/10 px-2.5 py-1", children: [
|
|
59
|
-
/* @__PURE__ */ jsx(Mail, { className: "size-3 text-[#00D4FF]" }),
|
|
60
|
-
/* @__PURE__ */ jsx("span", { className: "font-semibold text-[#0099BB] text-[11px]", children: "Auto" })
|
|
61
|
-
] })
|
|
62
|
-
] }),
|
|
63
|
-
/* @__PURE__ */ jsx("div", { className: "mt-4 space-y-2", children: REPORTS.map((r, i) => {
|
|
64
|
-
const st = statusConfig[r.status];
|
|
65
|
-
const Icon = st.icon;
|
|
66
|
-
const isActive = i === activeIdx;
|
|
67
|
-
return /* @__PURE__ */ jsxs(
|
|
68
|
-
m.div,
|
|
69
|
-
{
|
|
70
|
-
animate: {
|
|
71
|
-
borderColor: isActive ? "#00D4FF" : "#f3f4f6"
|
|
72
|
-
},
|
|
73
|
-
transition: { duration: 0.3 },
|
|
74
|
-
className: "rounded-lg border bg-white px-3 py-2.5",
|
|
75
|
-
children: [
|
|
76
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
77
|
-
/* @__PURE__ */ jsx(Icon, { className: cn("size-3.5 shrink-0", st.colour) }),
|
|
78
|
-
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate font-semibold text-[12px] text-gray-800", children: r.name }),
|
|
79
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-gray-400", children: r.frequency })
|
|
80
|
-
] }),
|
|
81
|
-
isActive && /* @__PURE__ */ jsxs(
|
|
82
|
-
m.div,
|
|
83
|
-
{
|
|
84
|
-
initial: { opacity: 0, height: 0 },
|
|
85
|
-
animate: { opacity: 1, height: "auto" },
|
|
86
|
-
transition: { duration: 0.25 },
|
|
87
|
-
className: "mt-2 grid grid-cols-2 gap-2 border-gray-100 border-t pt-2",
|
|
88
|
-
children: [
|
|
89
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
90
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-gray-400", children: "Recipients" }),
|
|
91
|
-
/* @__PURE__ */ jsx("p", { className: "font-mono text-[10px] text-gray-600", children: r.recipients })
|
|
92
|
-
] }),
|
|
93
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
94
|
-
/* @__PURE__ */ jsx("p", { className: "text-[9px] text-gray-400", children: "Last sent" }),
|
|
95
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-[10px] text-gray-700", children: r.lastSent })
|
|
96
|
-
] })
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
)
|
|
100
|
-
]
|
|
101
|
-
},
|
|
102
|
-
r.name
|
|
103
|
-
);
|
|
104
|
-
}) })
|
|
105
|
-
] }) });
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export { AnimationScheduledReports };
|
|
109
|
-
//# sourceMappingURL=chunk-4YD3YS4B.js.map
|
|
110
|
-
//# sourceMappingURL=chunk-4YD3YS4B.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/animations/animation-scheduled-reports.tsx"],"names":[],"mappings":"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","file":"chunk-4YD3YS4B.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2, Clock, Mail } 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 ScheduledReport = {\n name: string\n frequency: string\n recipients: string\n lastSent: string\n nextDue: string\n status: \"sent\" | \"scheduled\" | \"overdue\"\n}\n\nconst REPORTS: ScheduledReport[] = [\n {\n name: \"Weekly compliance summary\",\n frequency: \"Every Monday 09:00\",\n recipients: \"compliance-team@\",\n lastSent: \"Today, 09:00\",\n nextDue: \"Next Monday\",\n status: \"sent\",\n },\n {\n name: \"Monthly STR filing digest\",\n frequency: \"1st of each month\",\n recipients: \"cco@, legal@\",\n lastSent: \"1 Feb 2025\",\n nextDue: \"1 Mar 2025\",\n status: \"scheduled\",\n },\n {\n name: \"Quarterly board report\",\n frequency: \"Quarterly\",\n recipients: \"board@, cco@\",\n lastSent: \"1 Jan 2025\",\n nextDue: \"1 Apr 2025\",\n status: \"scheduled\",\n },\n {\n name: \"Daily high-risk alerts\",\n frequency: \"Daily 08:00\",\n recipients: \"senior-analysts@\",\n lastSent: \"Today, 08:00\",\n nextDue: \"Tomorrow, 08:00\",\n status: \"sent\",\n },\n]\n\nconst statusConfig: Record<string, { icon: typeof Clock; colour: string; label: string }> = {\n sent: { icon: CheckCircle2, colour: \"text-emerald-500\", label: \"Sent\" },\n scheduled: { icon: Clock, colour: \"text-[#00D4FF]\", label: \"Scheduled\" },\n overdue: { icon: Clock, colour: \"text-red-500\", label: \"Overdue\" },\n}\n\nexport default function AnimationScheduledReports({ className }: { className?: string }) {\n const [containerRef, activeIdx] = useCycleIndex(REPORTS.length, 3000)\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\">Scheduled Reports</p>\n <p className=\"text-[12px] text-gray-400\">{REPORTS.length} active schedules</p>\n </div>\n <div className=\"flex items-center gap-1.5 rounded-full bg-[#00D4FF]/10 px-2.5 py-1\">\n <Mail className=\"size-3 text-[#00D4FF]\" />\n <span className=\"font-semibold text-[#0099BB] text-[11px]\">Auto</span>\n </div>\n </div>\n\n {/* Report list */}\n <div className=\"mt-4 space-y-2\">\n {REPORTS.map((r, i) => {\n const st = statusConfig[r.status]\n const Icon = st.icon\n const isActive = i === activeIdx\n return (\n <m.div\n key={r.name}\n animate={{\n borderColor: isActive ? \"#00D4FF\" : \"#f3f4f6\",\n }}\n transition={{ duration: 0.3 }}\n className=\"rounded-lg border bg-white px-3 py-2.5\"\n >\n <div className=\"flex items-center gap-2\">\n <Icon className={cn(\"size-3.5 shrink-0\", st.colour)} />\n <span className=\"flex-1 truncate font-semibold text-[12px] text-gray-800\">\n {r.name}\n </span>\n <span className=\"text-[10px] text-gray-400\">{r.frequency}</span>\n </div>\n\n {isActive && (\n <m.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n transition={{ duration: 0.25 }}\n className=\"mt-2 grid grid-cols-2 gap-2 border-gray-100 border-t pt-2\"\n >\n <div>\n <p className=\"text-[9px] text-gray-400\">Recipients</p>\n <p className=\"font-mono text-[10px] text-gray-600\">{r.recipients}</p>\n </div>\n <div>\n <p className=\"text-[9px] text-gray-400\">Last sent</p>\n <p className=\"font-medium text-[10px] text-gray-700\">{r.lastSent}</p>\n </div>\n </m.div>\n )}\n </m.div>\n )\n })}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
|
package/dist/chunk-5JLZ42JT.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/animations/animation-jurisdiction-detection.tsx"],"names":[],"mappings":";;;;;AAgBA,IAAM,SAAA,GAAwB;AAAA,EAC5B;AAAA,IACE,MAAM,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,oBAAA,EAAsB,cAAc,SAAA,EAAU;AAAA,IACxE,IAAI,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,oBAAA,EAAsB,cAAc,KAAA,EAAM;AAAA,IAClE,WAAA,EAAa,iCAAA;AAAA,IACb,SAAA,EAAW,yBAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,MAAM,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,oBAAA,EAAsB,cAAc,KAAA,EAAM;AAAA,IACpE,IAAI,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,oBAAA,EAAsB,cAAc,KAAA,EAAM;AAAA,IAClE,WAAA,EAAa,wBAAA;AAAA,IACb,SAAA,EAAW,eAAA;AAAA,IACX,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,MAAM,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,oBAAA,EAAsB,cAAc,MAAA,EAAO;AAAA,IACrE,IAAI,EAAE,IAAA,EAAM,MAAM,IAAA,EAAM,oBAAA,EAAsB,cAAc,KAAA,EAAM;AAAA,IAClE,WAAA,EAAa,yBAAA;AAAA,IACb,SAAA,EAAW,WAAA;AAAA,IACX,MAAA,EAAQ;AAAA;AAEZ,CAAA;AAEA,IAAM,QAAA,GAAW,IAAA;AAEF,SAAR,8BAAA,CAAgD,EAAE,SAAA,EAAU,EAA2B;AAC5F,EAAA,MAAM,CAAC,YAAA,EAAc,KAAK,IAAI,aAAA,CAAc,SAAA,CAAU,QAAQ,QAAQ,CAAA;AACtE,EAAA,MAAM,CAAA,GAAI,UAAU,KAAK,CAAA;AAEzB,EAAA,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,YAAA,EACpB,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EAAc,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EAElE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA4C,QAAA,EAAA,wBAAA,EAAsB,CAAA;AAAA,wBAC/E,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA,4BAAA,EAA0B;AAAA,OAAA,EACrE,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,CAAA,CAAE,IAAA;AAAA,QAAF;AAAA,UAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,GAAA,EAAI;AAAA,UAClC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA,EAAE;AAAA,UAChC,SAAA,EAAW,EAAA;AAAA,YACT,oDAAA;AAAA,YACA,CAAA,CAAE,MAAA,KAAW,UAAA,GACT,gCAAA,GACA;AAAA,WACN;AAAA,UAEC,QAAA,EAAA,CAAA,CAAE;AAAA,SAAA;AAAA,QAVE;AAAA;AAWP,KAAA,EACF,CAAA;AAAA,oBAGA,IAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,QAC5B,SAAA,EAAU,+FAAA;AAAA,QAGV,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,CAAA,CAAE,KAAK,IAAA,EAAK,CAAA;AAAA,gCACvC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAA,EAAsD,QAAA,EAAA,CAAA,CAAE,KAAK,IAAA,EAAK,CAAA;AAAA,gCAC9E,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,CAAA,CAAE,KAAK,YAAA,EAAa;AAAA,WAAA,EAChE,CAAA;AAAA,0BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4EAAA,EAA6E,CAAA;AAAA,4BAC5F,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,4BACpE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4EAAA,EAA6E;AAAA,WAAA,EAC9F,CAAA;AAAA,0BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,CAAA,CAAE,GAAG,IAAA,EAAK,CAAA;AAAA,gCACrC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAA,EAAsD,QAAA,EAAA,CAAA,CAAE,GAAG,IAAA,EAAK,CAAA;AAAA,gCAC5E,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,CAAA,CAAE,GAAG,YAAA,EAAa;AAAA,WAAA,EAC9D;AAAA;AAAA,OAAA;AAAA,MAzBK,YAAY,KAAK,CAAA;AAAA,KA0BxB;AAAA,oBAGA,IAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,QAC5B,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,QAC1C,SAAA,EAAU,6BAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wDAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAwC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,4BACnE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gDAAA,EAAkD,YAAE,WAAA,EAAY;AAAA,WAAA,EAC/E,CAAA;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EAAwC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,4BACjE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gDAAA,EAAkD,YAAE,SAAA,EAAU;AAAA,WAAA,EAC7E;AAAA;AAAA,OAAA;AAAA,MAbK,UAAU,KAAK,CAAA;AAAA,KActB;AAAA,oBAGA,GAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QAEC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,QACtB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,QACtB,UAAA,EAAY,EAAE,KAAA,EAAO,GAAA,EAAI;AAAA,QACzB,SAAA,EAAU,qEAAA;AAAA,QAET,QAAA,EAAA;AAAA,UACC,CAAA,yBAAA,EAA4B,CAAA,CAAE,IAAA,CAAK,YAAY,CAAA,CAAA;AAAA,UAC/C,CAAA,0BAAA,EAA6B,CAAA,CAAE,EAAA,CAAG,YAAY,CAAA,CAAA;AAAA,UAC9C,CAAA,wBAAA,EAA2B,EAAE,WAAW,CAAA;AAAA,SAC1C,CAAE,IAAI,CAAC,IAAA,EAAM,sBACX,IAAA,CAAC,GAAA,EAAA,EAAU,WAAU,qCAAA,EACnB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,UAAO,GAAA;AAAA,UAAE;AAAA,SAAA,EAAA,EADhD,CAER,CACD;AAAA,OAAA;AAAA,MAdI,OAAO,KAAK,CAAA;AAAA;AAenB,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","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"]}
|
package/dist/chunk-5OOO6TRA.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|