@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.
Files changed (101) hide show
  1. package/dist/animations/animation-ai-analysis.js +99 -4
  2. package/dist/animations/animation-ai-analysis.js.map +1 -1
  3. package/dist/animations/animation-audit-trail.js +194 -2
  4. package/dist/animations/animation-audit-trail.js.map +1 -1
  5. package/dist/animations/animation-compliance-reports.js +108 -3
  6. package/dist/animations/animation-compliance-reports.js.map +1 -1
  7. package/dist/animations/animation-custom-rules.js +107 -3
  8. package/dist/animations/animation-custom-rules.js.map +1 -1
  9. package/dist/animations/animation-jira-ticket.js +114 -3
  10. package/dist/animations/animation-jira-ticket.js.map +1 -1
  11. package/dist/animations/animation-jurisdiction-detection.js +122 -3
  12. package/dist/animations/animation-jurisdiction-detection.js.map +1 -1
  13. package/dist/animations/animation-multi-protocol.js +63 -2
  14. package/dist/animations/animation-multi-protocol.js.map +1 -1
  15. package/dist/animations/animation-pricing-preview.js +169 -3
  16. package/dist/animations/animation-pricing-preview.js.map +1 -1
  17. package/dist/animations/animation-realtime-updates.js +140 -4
  18. package/dist/animations/animation-realtime-updates.js.map +1 -1
  19. package/dist/animations/animation-rest-api.js +121 -2
  20. package/dist/animations/animation-rest-api.js.map +1 -1
  21. package/dist/animations/animation-risk-scoring.js +158 -4
  22. package/dist/animations/animation-risk-scoring.js.map +1 -1
  23. package/dist/animations/animation-sandbox.js +107 -2
  24. package/dist/animations/animation-sandbox.js.map +1 -1
  25. package/dist/animations/animation-scheduled-reports.js +107 -3
  26. package/dist/animations/animation-scheduled-reports.js.map +1 -1
  27. package/dist/animations/animation-secure-messaging.js +99 -3
  28. package/dist/animations/animation-secure-messaging.js.map +1 -1
  29. package/dist/animations/animation-slack-notification.js +90 -3
  30. package/dist/animations/animation-slack-notification.js.map +1 -1
  31. package/dist/animations/animation-sop-mapping.js +158 -2
  32. package/dist/animations/animation-sop-mapping.js.map +1 -1
  33. package/dist/animations/animation-team-routing.js +118 -4
  34. package/dist/animations/animation-team-routing.js.map +1 -1
  35. package/dist/animations/animation-teams-notification.js +89 -3
  36. package/dist/animations/animation-teams-notification.js.map +1 -1
  37. package/dist/animations/animation-vasp-identification.js +142 -3
  38. package/dist/animations/animation-vasp-identification.js.map +1 -1
  39. package/dist/animations/animation-webhooks.js +105 -3
  40. package/dist/animations/animation-webhooks.js.map +1 -1
  41. package/dist/blocks/auth-form.js +0 -1
  42. package/dist/blocks/feature-section.js +0 -1
  43. package/dist/blocks/hero-section.js +0 -1
  44. package/dist/blocks/pricing-table.js +0 -1
  45. package/dist/blocks/stat-card.js +0 -1
  46. package/dist/chart-DkwdRX-i.d.ts +50 -0
  47. package/dist/charts.d.ts +73 -3
  48. package/dist/charts.js +287 -2
  49. package/dist/charts.js.map +1 -1
  50. package/dist/chunk-6RWCZUAD.js +0 -1
  51. package/dist/chunk-GJAWCIGE.js +237 -0
  52. package/dist/chunk-GJAWCIGE.js.map +1 -0
  53. package/dist/chunk-GZNLQE3I.js +0 -1
  54. package/dist/chunk-TAPJEVUA.js +0 -1
  55. package/dist/index.d.ts +39 -53
  56. package/dist/index.js +148 -175
  57. package/dist/index.js.map +1 -1
  58. package/package.json +24 -34
  59. package/dist/chunk-4YD3YS4B.js +0 -110
  60. package/dist/chunk-4YD3YS4B.js.map +0 -1
  61. package/dist/chunk-5JLZ42JT.js +0 -125
  62. package/dist/chunk-5JLZ42JT.js.map +0 -1
  63. package/dist/chunk-5OOO6TRA.js +0 -111
  64. package/dist/chunk-5OOO6TRA.js.map +0 -1
  65. package/dist/chunk-65Z2VEKG.js +0 -161
  66. package/dist/chunk-65Z2VEKG.js.map +0 -1
  67. package/dist/chunk-BTFYV3TI.js +0 -102
  68. package/dist/chunk-BTFYV3TI.js.map +0 -1
  69. package/dist/chunk-BTZB4JRC.js +0 -117
  70. package/dist/chunk-BTZB4JRC.js.map +0 -1
  71. package/dist/chunk-BZSA47MS.js +0 -121
  72. package/dist/chunk-BZSA47MS.js.map +0 -1
  73. package/dist/chunk-EFLWU2JP.js +0 -145
  74. package/dist/chunk-EFLWU2JP.js.map +0 -1
  75. package/dist/chunk-F7REPQOA.js +0 -93
  76. package/dist/chunk-F7REPQOA.js.map +0 -1
  77. package/dist/chunk-FKPK3CB7.js +0 -143
  78. package/dist/chunk-FKPK3CB7.js.map +0 -1
  79. package/dist/chunk-H7VUIMEL.js +0 -172
  80. package/dist/chunk-H7VUIMEL.js.map +0 -1
  81. package/dist/chunk-HTYR73ON.js +0 -161
  82. package/dist/chunk-HTYR73ON.js.map +0 -1
  83. package/dist/chunk-I26ZXVSY.js +0 -124
  84. package/dist/chunk-I26ZXVSY.js.map +0 -1
  85. package/dist/chunk-IKATDPHG.js +0 -92
  86. package/dist/chunk-IKATDPHG.js.map +0 -1
  87. package/dist/chunk-KUOF3XRZ.js +0 -108
  88. package/dist/chunk-KUOF3XRZ.js.map +0 -1
  89. package/dist/chunk-N7PBUY7G.js +0 -110
  90. package/dist/chunk-N7PBUY7G.js.map +0 -1
  91. package/dist/chunk-NAPDFVBI.js +0 -102
  92. package/dist/chunk-NAPDFVBI.js.map +0 -1
  93. package/dist/chunk-RTK7R4KZ.js +0 -66
  94. package/dist/chunk-RTK7R4KZ.js.map +0 -1
  95. package/dist/chunk-RZZTDJHG.js +0 -110
  96. package/dist/chunk-RZZTDJHG.js.map +0 -1
  97. package/dist/chunk-SNOJLZP4.js +0 -197
  98. package/dist/chunk-SNOJLZP4.js.map +0 -1
  99. package/dist/chunk-U4EPKN7G.js +0 -518
  100. package/dist/chunk-U4EPKN7G.js.map +0 -1
  101. 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.5.5",
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
- "pnpm": {
153
- "overrides": {
154
- "@types/react": "19.2.14",
155
- "@types/react-dom": "19.2.3"
156
- },
157
- "onlyBuiltDependencies": [
158
- "@tailwindcss/oxide",
159
- "esbuild",
160
- "sharp",
161
- "unrs-resolver"
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
+ }
@@ -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"]}
@@ -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":"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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"]}
@@ -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"]}