@cogentic-co/ds 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +34 -52
  56. package/dist/index.js +109 -168
  57. package/dist/index.js.map +1 -1
  58. package/package.json +6 -3
  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
@@ -1,102 +0,0 @@
1
- "use client";
2
- import { EASE_OUT } from './chunk-TAPJEVUA.js';
3
- import { useAnimationTimer } from './chunk-RXV2XUDZ.js';
4
- import { cn } from './chunk-GZNLQE3I.js';
5
- import { Sparkles } from 'lucide-react';
6
- import { LazyMotion, domAnimation, AnimatePresence, m } from 'motion/react';
7
- import { useRef, useEffect } from 'react';
8
- import { jsx, jsxs } from 'react/jsx-runtime';
9
-
10
- var INSIGHTS = [
11
- {
12
- category: "Risk Assessment",
13
- text: "Counterparty risk assessed as {low} based on VASP registration status and historical transaction patterns."
14
- },
15
- {
16
- category: "Threshold Analysis",
17
- text: "Transfer {exceeds SGD 20,000} reporting threshold \u2014 enhanced due diligence triggered under MAS Notice PSN01."
18
- },
19
- {
20
- category: "Travel Rule",
21
- text: "Beneficiary VASP {verified} against IVMS101 directory \u2014 originator and beneficiary data complete."
22
- },
23
- {
24
- category: "Jurisdiction Mapping",
25
- text: "Corridor {SG \u2192 US} mapped \u2014 both counterparties subject to Travel Rule data requirements."
26
- },
27
- {
28
- category: "Sanctions Screening",
29
- text: "Screening {cleared} \u2014 no matches found across OFAC SDN, EU consolidated, and UN sanctions lists."
30
- }
31
- ];
32
- function renderHighlightedText(text) {
33
- const parts = text.split(/\{([^}]+)\}/g);
34
- return parts.map(
35
- (part, i) => i % 2 === 1 ? /* @__PURE__ */ jsx("span", { className: "rounded-sm bg-[#00D4FF]/10 px-1 font-medium text-[#0099BB]", children: part }, i) : /* @__PURE__ */ jsx("span", { children: part }, i)
36
- );
37
- }
38
- function AnimationAIAnalysis({ className }) {
39
- const [timerRef, tick] = useAnimationTimer(2800);
40
- const count = Math.min(tick + 1, 3);
41
- const startIdx = Math.max(0, tick + 1 - count);
42
- const visibleCards = Array.from({ length: count }, (_, i) => (startIdx + i) % INSIGHTS.length);
43
- const scrollRef = useRef(null);
44
- useEffect(() => {
45
- if (scrollRef.current) {
46
- scrollRef.current.scrollTo({
47
- top: scrollRef.current.scrollHeight,
48
- behavior: "smooth"
49
- });
50
- }
51
- }, []);
52
- return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx("div", { ref: timerRef, className: cn("flex flex-col overflow-hidden", className), children: /* @__PURE__ */ jsx(
53
- "div",
54
- {
55
- ref: scrollRef,
56
- className: "scrollbar-none flex flex-1 flex-col gap-2.5 overflow-y-auto px-4 py-4",
57
- children: /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: visibleCards.map((insightIdx, i) => {
58
- const insight = INSIGHTS[insightIdx];
59
- const isLatest = i === visibleCards.length - 1;
60
- return /* @__PURE__ */ jsxs(
61
- m.div,
62
- {
63
- initial: { opacity: 0, y: 16 },
64
- animate: { opacity: isLatest ? 1 : 0.5, y: 0 },
65
- exit: { opacity: 0, y: -8 },
66
- transition: { duration: 0.4, ease: EASE_OUT },
67
- className: cn(
68
- "shrink-0 rounded-xl border bg-white p-3.5 transition-shadow duration-300",
69
- isLatest ? "border-gray-200 shadow-sm" : "border-gray-100"
70
- ),
71
- children: [
72
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 font-medium text-[11px] text-gray-400", children: [
73
- /* @__PURE__ */ jsx(
74
- Sparkles,
75
- {
76
- className: cn("h-3 w-3", isLatest ? "text-[#00D4FF]" : "text-gray-300")
77
- }
78
- ),
79
- insight.category
80
- ] }),
81
- /* @__PURE__ */ jsx(
82
- "p",
83
- {
84
- className: cn(
85
- "mt-1.5 text-[12px] leading-relaxed sm:text-[13px]",
86
- isLatest ? "text-gray-700" : "text-gray-400"
87
- ),
88
- children: renderHighlightedText(insight.text)
89
- }
90
- )
91
- ]
92
- },
93
- `${i}-${insightIdx}`
94
- );
95
- }) })
96
- }
97
- ) }) });
98
- }
99
-
100
- export { AnimationAIAnalysis };
101
- //# sourceMappingURL=chunk-BTFYV3TI.js.map
102
- //# sourceMappingURL=chunk-BTFYV3TI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/animations/animation-ai-analysis.tsx"],"names":[],"mappings":"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","file":"chunk-BTFYV3TI.js","sourcesContent":["\"use client\"\n\nimport { Sparkles } from \"lucide-react\"\nimport { AnimatePresence, domAnimation, LazyMotion, m } from \"motion/react\"\nimport { useEffect, useRef } from \"react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Insight = {\n category: string\n text: string\n}\n\nconst INSIGHTS: Insight[] = [\n {\n category: \"Risk Assessment\",\n text: \"Counterparty risk assessed as {low} based on VASP registration status and historical transaction patterns.\",\n },\n {\n category: \"Threshold Analysis\",\n text: \"Transfer {exceeds SGD 20,000} reporting threshold — enhanced due diligence triggered under MAS Notice PSN01.\",\n },\n {\n category: \"Travel Rule\",\n text: \"Beneficiary VASP {verified} against IVMS101 directory — originator and beneficiary data complete.\",\n },\n {\n category: \"Jurisdiction Mapping\",\n text: \"Corridor {SG → US} mapped — both counterparties subject to Travel Rule data requirements.\",\n },\n {\n category: \"Sanctions Screening\",\n text: \"Screening {cleared} — no matches found across OFAC SDN, EU consolidated, and UN sanctions lists.\",\n },\n]\n\nfunction renderHighlightedText(text: string) {\n const parts = text.split(/\\{([^}]+)\\}/g)\n return parts.map((part, i) =>\n i % 2 === 1 ? (\n <span key={i} className=\"rounded-sm bg-[#00D4FF]/10 px-1 font-medium text-[#0099BB]\">\n {part}\n </span>\n ) : (\n <span key={i}>{part}</span>\n ),\n )\n}\n\nexport default function AnimationAIAnalysis({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2800)\n const count = Math.min(tick + 1, 3)\n const startIdx = Math.max(0, tick + 1 - count)\n const visibleCards = Array.from({ length: count }, (_, i) => (startIdx + i) % INSIGHTS.length)\n const scrollRef = useRef<HTMLDivElement>(null)\n\n // Auto-scroll to bottom when new card appears\n useEffect(() => {\n if (scrollRef.current) {\n scrollRef.current.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: \"smooth\",\n })\n }\n }, [])\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} className={cn(\"flex flex-col overflow-hidden\", className)}>\n <div\n ref={scrollRef}\n className=\"scrollbar-none flex flex-1 flex-col gap-2.5 overflow-y-auto px-4 py-4\"\n >\n <AnimatePresence initial={false}>\n {visibleCards.map((insightIdx, i) => {\n const insight = INSIGHTS[insightIdx]\n const isLatest = i === visibleCards.length - 1\n return (\n <m.div\n key={`${i}-${insightIdx}`}\n initial={{ opacity: 0, y: 16 }}\n animate={{ opacity: isLatest ? 1 : 0.5, y: 0 }}\n exit={{ opacity: 0, y: -8 }}\n transition={{ duration: 0.4, ease: EASE_OUT }}\n className={cn(\n \"shrink-0 rounded-xl border bg-white p-3.5 transition-shadow duration-300\",\n isLatest ? \"border-gray-200 shadow-sm\" : \"border-gray-100\",\n )}\n >\n <div className=\"flex items-center gap-2 font-medium text-[11px] text-gray-400\">\n <Sparkles\n className={cn(\"h-3 w-3\", isLatest ? \"text-[#00D4FF]\" : \"text-gray-300\")}\n />\n {insight.category}\n </div>\n <p\n className={cn(\n \"mt-1.5 text-[12px] leading-relaxed sm:text-[13px]\",\n isLatest ? \"text-gray-700\" : \"text-gray-400\",\n )}\n >\n {renderHighlightedText(insight.text)}\n </p>\n </m.div>\n )\n })}\n </AnimatePresence>\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,117 +0,0 @@
1
- "use client";
2
- import { EASE_OUT } from './chunk-TAPJEVUA.js';
3
- import { cn } from './chunk-GZNLQE3I.js';
4
- import { motion } from 'motion/react';
5
- import { jsxs, jsx } from 'react/jsx-runtime';
6
-
7
- function AnimationJiraTicket({ className }) {
8
- return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col bg-white p-4", className), children: [
9
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-[10px] text-gray-400", children: [
10
- /* @__PURE__ */ jsx("span", { children: "COGENTIC" }),
11
- /* @__PURE__ */ jsx("span", { children: "/" }),
12
- /* @__PURE__ */ jsx("span", { children: "Compliance Reviews" }),
13
- /* @__PURE__ */ jsx("span", { children: "/" }),
14
- /* @__PURE__ */ jsx("span", { className: "text-gray-600", children: "COG-847" })
15
- ] }),
16
- /* @__PURE__ */ jsxs(
17
- motion.div,
18
- {
19
- initial: { opacity: 0, y: 8 },
20
- animate: { opacity: 1, y: 0 },
21
- transition: { duration: 0.5, ease: EASE_OUT, delay: 0.2 },
22
- children: [
23
- /* @__PURE__ */ jsx("h4", { className: "mt-2 font-semibold text-[14px] text-gray-900 leading-snug", children: "Review: TXN-0847 \u2014 High risk corridor" }),
24
- /* @__PURE__ */ jsxs(
25
- motion.div,
26
- {
27
- initial: { opacity: 0 },
28
- animate: { opacity: 1 },
29
- transition: { duration: 0.3, delay: 0.5 },
30
- className: "mt-2.5 flex flex-wrap items-center gap-2",
31
- children: [
32
- /* @__PURE__ */ jsx("span", { className: "rounded bg-blue-100 px-2 py-0.5 font-bold text-[10px] text-blue-700", children: "IN REVIEW" }),
33
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-[10px] text-gray-500", children: [
34
- /* @__PURE__ */ jsxs("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", children: [
35
- /* @__PURE__ */ jsx("path", { d: "M5 2V5L7 6.5", stroke: "currentColor", strokeWidth: "1", strokeLinecap: "round" }),
36
- /* @__PURE__ */ jsx("circle", { cx: "5", cy: "5", r: "4", stroke: "currentColor", strokeWidth: "1" })
37
- ] }),
38
- "Created 2 min ago"
39
- ] }),
40
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-[10px] text-gray-500", children: [
41
- /* @__PURE__ */ jsx("span", { className: "inline-flex size-4 items-center justify-center rounded-full bg-emerald-100 font-bold text-[7px] text-emerald-700", children: "JC" }),
42
- "J. Chen"
43
- ] }),
44
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 rounded bg-red-50 px-1.5 py-0.5 font-semibold text-[10px] text-red-600", children: [
45
- /* @__PURE__ */ jsx("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", children: /* @__PURE__ */ jsx(
46
- "path",
47
- {
48
- d: "M4 1V5M4 6.5V7",
49
- stroke: "currentColor",
50
- strokeWidth: "1.2",
51
- strokeLinecap: "round"
52
- }
53
- ) }),
54
- "High"
55
- ] })
56
- ]
57
- }
58
- )
59
- ]
60
- }
61
- ),
62
- /* @__PURE__ */ jsxs(
63
- motion.div,
64
- {
65
- initial: { opacity: 0, y: 6 },
66
- animate: { opacity: 1, y: 0 },
67
- transition: { duration: 0.4, ease: EASE_OUT, delay: 0.7 },
68
- className: "mt-3 rounded border border-gray-100 bg-gray-50 p-3",
69
- children: [
70
- /* @__PURE__ */ jsx("p", { className: "font-semibold text-[10px] text-gray-400 uppercase tracking-wider", children: "Cogentic compliance brief" }),
71
- /* @__PURE__ */ jsx("div", { className: "mt-2 space-y-1.5", children: [
72
- { label: "Corridor", value: "AU \u2192 SG" },
73
- { label: "Risk score", value: "72 / 100" },
74
- { label: "Trigger", value: "PEP screening match, threshold exceeded" },
75
- { label: "Recommendation", value: "Verify beneficiary identity before clearing" }
76
- ].map((row, i) => /* @__PURE__ */ jsxs(
77
- motion.div,
78
- {
79
- initial: { opacity: 0, x: -4 },
80
- animate: { opacity: 1, x: 0 },
81
- transition: { duration: 0.25, delay: 0.9 + i * 0.1 },
82
- className: "flex gap-2",
83
- children: [
84
- /* @__PURE__ */ jsx("span", { className: "w-[80px] shrink-0 font-medium text-[10px] text-gray-400", children: row.label }),
85
- /* @__PURE__ */ jsx("span", { className: "font-medium text-[10px] text-gray-700", children: row.value })
86
- ]
87
- },
88
- row.label
89
- )) })
90
- ]
91
- }
92
- ),
93
- /* @__PURE__ */ jsxs(
94
- motion.div,
95
- {
96
- initial: { opacity: 0 },
97
- animate: { opacity: 1 },
98
- transition: { duration: 0.3, delay: 1.4 },
99
- className: "mt-3",
100
- children: [
101
- /* @__PURE__ */ jsx("p", { className: "font-semibold text-[10px] text-gray-400 uppercase tracking-wider", children: "Activity" }),
102
- /* @__PURE__ */ jsxs("div", { className: "mt-1.5 flex items-start gap-2", children: [
103
- /* @__PURE__ */ jsx("div", { className: "mt-0.5 size-1.5 shrink-0 rounded-full bg-blue-400" }),
104
- /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-gray-500", children: [
105
- /* @__PURE__ */ jsx("span", { className: "font-medium text-gray-700", children: "Cogentic" }),
106
- " created this issue from flagged transfer TXN-0847"
107
- ] })
108
- ] })
109
- ]
110
- }
111
- )
112
- ] });
113
- }
114
-
115
- export { AnimationJiraTicket };
116
- //# sourceMappingURL=chunk-BTZB4JRC.js.map
117
- //# sourceMappingURL=chunk-BTZB4JRC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/animations/animation-jira-ticket.tsx"],"names":[],"mappings":"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","file":"chunk-BTZB4JRC.js","sourcesContent":["\"use client\"\n\nimport { motion } from \"motion/react\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\nexport default function AnimationJiraTicket({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col bg-white p-4\", className)}>\n {/* Breadcrumb */}\n <div className=\"flex items-center gap-1.5 text-[10px] text-gray-400\">\n <span>COGENTIC</span>\n <span>/</span>\n <span>Compliance Reviews</span>\n <span>/</span>\n <span className=\"text-gray-600\">COG-847</span>\n </div>\n\n {/* Issue header */}\n <motion.div\n initial={{ opacity: 0, y: 8 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: EASE_OUT, delay: 0.2 }}\n >\n <h4 className=\"mt-2 font-semibold text-[14px] text-gray-900 leading-snug\">\n Review: TXN-0847 — High risk corridor\n </h4>\n\n {/* Status & meta row */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 0.5 }}\n className=\"mt-2.5 flex flex-wrap items-center gap-2\"\n >\n <span className=\"rounded bg-blue-100 px-2 py-0.5 font-bold text-[10px] text-blue-700\">\n IN REVIEW\n </span>\n <span className=\"flex items-center gap-1 text-[10px] text-gray-500\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M5 2V5L7 6.5\" stroke=\"currentColor\" strokeWidth=\"1\" strokeLinecap=\"round\" />\n <circle cx=\"5\" cy=\"5\" r=\"4\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n Created 2 min ago\n </span>\n <span className=\"flex items-center gap-1 text-[10px] text-gray-500\">\n <span className=\"inline-flex size-4 items-center justify-center rounded-full bg-emerald-100 font-bold text-[7px] text-emerald-700\">\n JC\n </span>\n J. Chen\n </span>\n <span className=\"flex items-center gap-1 rounded bg-red-50 px-1.5 py-0.5 font-semibold text-[10px] text-red-600\">\n <svg width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"none\">\n <path\n d=\"M4 1V5M4 6.5V7\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n High\n </span>\n </motion.div>\n </motion.div>\n\n {/* Description — Cogentic compliance brief */}\n <motion.div\n initial={{ opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT, delay: 0.7 }}\n className=\"mt-3 rounded border border-gray-100 bg-gray-50 p-3\"\n >\n <p className=\"font-semibold text-[10px] text-gray-400 uppercase tracking-wider\">\n Cogentic compliance brief\n </p>\n <div className=\"mt-2 space-y-1.5\">\n {[\n { label: \"Corridor\", value: \"AU \\u2192 SG\" },\n { label: \"Risk score\", value: \"72 / 100\" },\n { label: \"Trigger\", value: \"PEP screening match, threshold exceeded\" },\n { label: \"Recommendation\", value: \"Verify beneficiary identity before clearing\" },\n ].map((row, i) => (\n <motion.div\n key={row.label}\n initial={{ opacity: 0, x: -4 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.25, delay: 0.9 + i * 0.1 }}\n className=\"flex gap-2\"\n >\n <span className=\"w-[80px] shrink-0 font-medium text-[10px] text-gray-400\">\n {row.label}\n </span>\n <span className=\"font-medium text-[10px] text-gray-700\">{row.value}</span>\n </motion.div>\n ))}\n </div>\n </motion.div>\n\n {/* Activity section */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.3, delay: 1.4 }}\n className=\"mt-3\"\n >\n <p className=\"font-semibold text-[10px] text-gray-400 uppercase tracking-wider\">Activity</p>\n <div className=\"mt-1.5 flex items-start gap-2\">\n <div className=\"mt-0.5 size-1.5 shrink-0 rounded-full bg-blue-400\" />\n <p className=\"text-[10px] text-gray-500\">\n <span className=\"font-medium text-gray-700\">Cogentic</span> created this issue from\n flagged transfer TXN-0847\n </p>\n </div>\n </motion.div>\n </div>\n )\n}\n"]}
@@ -1,121 +0,0 @@
1
- "use client";
2
- import { EASE_OUT } from './chunk-TAPJEVUA.js';
3
- import { useAnimationTimer } from './chunk-RXV2XUDZ.js';
4
- import { cn } from './chunk-GZNLQE3I.js';
5
- import { LazyMotion, domAnimation, m } from 'motion/react';
6
- import { jsx, jsxs } from 'react/jsx-runtime';
7
-
8
- var TRANSFERS = [
9
- {
10
- txn: "TXN-0847",
11
- corridor: "AU \u2192 SG",
12
- risk: "High",
13
- assignee: { name: "Sarah Chen", initials: "SC", colour: "bg-violet-100 text-violet-700" },
14
- reason: "High risk \u2192 Senior analyst"
15
- },
16
- {
17
- txn: "TXN-0848",
18
- corridor: "DE \u2192 US",
19
- risk: "Low",
20
- assignee: {
21
- name: "Auto-approved",
22
- initials: "\u2713",
23
- colour: "bg-emerald-100 text-emerald-700"
24
- },
25
- reason: "Low risk \u2192 Auto-approval"
26
- },
27
- {
28
- txn: "TXN-0849",
29
- corridor: "JP \u2192 AE",
30
- risk: "Medium",
31
- assignee: { name: "Marcus Webb", initials: "MW", colour: "bg-blue-100 text-blue-700" },
32
- reason: "MENA specialist"
33
- },
34
- {
35
- txn: "TXN-0850",
36
- corridor: "CA \u2192 HK",
37
- risk: "High",
38
- assignee: { name: "Li Wei", initials: "LW", colour: "bg-amber-100 text-amber-700" },
39
- reason: "APAC jurisdiction"
40
- }
41
- ];
42
- var riskColour = {
43
- Low: "bg-emerald-50 text-emerald-700",
44
- Medium: "bg-amber-50 text-amber-700",
45
- High: "bg-red-50 text-red-700"
46
- };
47
- function AnimationTeamRouting({ className }) {
48
- const [timerRef, tick] = useAnimationTimer(2400);
49
- const count = Math.min(tick + 1, 4);
50
- const startIdx = Math.max(0, tick + 1 - count);
51
- const visible = Array.from({ length: count }, (_, i) => (startIdx + i) % TRANSFERS.length);
52
- return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsxs("div", { ref: timerRef, className: cn("flex flex-col p-5", className), children: [
53
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
54
- /* @__PURE__ */ jsxs("div", { children: [
55
- /* @__PURE__ */ jsx("p", { className: "font-semibold text-[15px] text-foreground", children: "Team Routing" }),
56
- /* @__PURE__ */ jsx("p", { className: "text-[12px] text-gray-400", children: "Automatic assignment" })
57
- ] }),
58
- /* @__PURE__ */ jsxs("div", { className: "flex -space-x-1.5", children: [
59
- ["SC", "MW", "LW"].map((init) => /* @__PURE__ */ jsx(
60
- "div",
61
- {
62
- className: "flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-500",
63
- children: init
64
- },
65
- init
66
- )),
67
- /* @__PURE__ */ jsx("div", { className: "flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-400", children: "+4" })
68
- ] })
69
- ] }),
70
- /* @__PURE__ */ jsx("div", { className: "mt-4 space-y-2", children: visible.map((tIdx, i) => {
71
- const t = TRANSFERS[tIdx];
72
- const isLatest = i === visible.length - 1;
73
- return /* @__PURE__ */ jsxs(
74
- m.div,
75
- {
76
- initial: { opacity: 0, x: -12 },
77
- animate: { opacity: isLatest ? 1 : 0.5, x: 0 },
78
- transition: { duration: 0.35, ease: EASE_OUT },
79
- className: cn(
80
- "flex items-center gap-3 rounded-lg border bg-white px-3 py-2.5",
81
- isLatest ? "border-gray-200 shadow-sm" : "border-gray-100"
82
- ),
83
- children: [
84
- /* @__PURE__ */ jsx(
85
- "div",
86
- {
87
- className: cn(
88
- "flex size-8 shrink-0 items-center justify-center rounded-full font-bold text-[11px]",
89
- t.assignee.colour
90
- ),
91
- children: t.assignee.initials
92
- }
93
- ),
94
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
95
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
96
- /* @__PURE__ */ jsx("span", { className: "font-bold font-mono text-[11px] text-gray-400", children: t.txn }),
97
- /* @__PURE__ */ jsx("span", { className: "text-[11px] text-gray-400", children: t.corridor })
98
- ] }),
99
- /* @__PURE__ */ jsx("p", { className: "truncate text-[11px] text-gray-500", children: t.reason })
100
- ] }),
101
- /* @__PURE__ */ jsx(
102
- "span",
103
- {
104
- className: cn(
105
- "shrink-0 rounded-full px-2 py-0.5 font-semibold text-[10px]",
106
- riskColour[t.risk]
107
- ),
108
- children: t.risk
109
- }
110
- )
111
- ]
112
- },
113
- `${i}-${tIdx}`
114
- );
115
- }) })
116
- ] }) });
117
- }
118
-
119
- export { AnimationTeamRouting };
120
- //# sourceMappingURL=chunk-BZSA47MS.js.map
121
- //# sourceMappingURL=chunk-BZSA47MS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/animations/animation-team-routing.tsx"],"names":[],"mappings":"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","file":"chunk-BZSA47MS.js","sourcesContent":["\"use client\"\n\nimport { domAnimation, LazyMotion, m } from \"motion/react\"\n\nimport { useAnimationTimer } from \"../hooks/use-animation-timer\"\n\nimport { EASE_OUT } from \"../lib/animation\"\nimport { cn } from \"../lib/utils\"\n\ntype Transfer = {\n txn: string\n corridor: string\n risk: \"Low\" | \"Medium\" | \"High\"\n assignee: { name: string; initials: string; colour: string }\n reason: string\n}\n\nconst TRANSFERS: Transfer[] = [\n {\n txn: \"TXN-0847\",\n corridor: \"AU \\u2192 SG\",\n risk: \"High\",\n assignee: { name: \"Sarah Chen\", initials: \"SC\", colour: \"bg-violet-100 text-violet-700\" },\n reason: \"High risk \\u2192 Senior analyst\",\n },\n {\n txn: \"TXN-0848\",\n corridor: \"DE \\u2192 US\",\n risk: \"Low\",\n assignee: {\n name: \"Auto-approved\",\n initials: \"\\u2713\",\n colour: \"bg-emerald-100 text-emerald-700\",\n },\n reason: \"Low risk \\u2192 Auto-approval\",\n },\n {\n txn: \"TXN-0849\",\n corridor: \"JP \\u2192 AE\",\n risk: \"Medium\",\n assignee: { name: \"Marcus Webb\", initials: \"MW\", colour: \"bg-blue-100 text-blue-700\" },\n reason: \"MENA specialist\",\n },\n {\n txn: \"TXN-0850\",\n corridor: \"CA \\u2192 HK\",\n risk: \"High\",\n assignee: { name: \"Li Wei\", initials: \"LW\", colour: \"bg-amber-100 text-amber-700\" },\n reason: \"APAC jurisdiction\",\n },\n]\n\nconst riskColour: Record<string, string> = {\n Low: \"bg-emerald-50 text-emerald-700\",\n Medium: \"bg-amber-50 text-amber-700\",\n High: \"bg-red-50 text-red-700\",\n}\n\nexport default function AnimationTeamRouting({ className }: { className?: string }) {\n const [timerRef, tick] = useAnimationTimer(2400)\n const count = Math.min(tick + 1, 4)\n const startIdx = Math.max(0, tick + 1 - count)\n const visible = Array.from({ length: count }, (_, i) => (startIdx + i) % TRANSFERS.length)\n\n return (\n <LazyMotion features={domAnimation}>\n <div ref={timerRef} 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\">Team Routing</p>\n <p className=\"text-[12px] text-gray-400\">Automatic assignment</p>\n </div>\n <div className=\"flex -space-x-1.5\">\n {[\"SC\", \"MW\", \"LW\"].map((init) => (\n <div\n key={init}\n className=\"flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-500\"\n >\n {init}\n </div>\n ))}\n <div className=\"flex size-6 items-center justify-center rounded-full border-2 border-white bg-gray-100 font-bold text-[9px] text-gray-400\">\n +4\n </div>\n </div>\n </div>\n\n {/* Routing entries */}\n <div className=\"mt-4 space-y-2\">\n {visible.map((tIdx, i) => {\n const t = TRANSFERS[tIdx]\n const isLatest = i === visible.length - 1\n return (\n <m.div\n key={`${i}-${tIdx}`}\n initial={{ opacity: 0, x: -12 }}\n animate={{ opacity: isLatest ? 1 : 0.5, x: 0 }}\n transition={{ duration: 0.35, ease: EASE_OUT }}\n className={cn(\n \"flex items-center gap-3 rounded-lg border bg-white px-3 py-2.5\",\n isLatest ? \"border-gray-200 shadow-sm\" : \"border-gray-100\",\n )}\n >\n {/* Avatar */}\n <div\n className={cn(\n \"flex size-8 shrink-0 items-center justify-center rounded-full font-bold text-[11px]\",\n t.assignee.colour,\n )}\n >\n {t.assignee.initials}\n </div>\n\n {/* Info */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <span className=\"font-bold font-mono text-[11px] text-gray-400\">{t.txn}</span>\n <span className=\"text-[11px] text-gray-400\">{t.corridor}</span>\n </div>\n <p className=\"truncate text-[11px] text-gray-500\">{t.reason}</p>\n </div>\n\n {/* Risk badge */}\n <span\n className={cn(\n \"shrink-0 rounded-full px-2 py-0.5 font-semibold text-[10px]\",\n riskColour[t.risk],\n )}\n >\n {t.risk}\n </span>\n </m.div>\n )\n })}\n </div>\n </div>\n </LazyMotion>\n )\n}\n"]}
@@ -1,145 +0,0 @@
1
- "use client";
2
- import { useCycleIndex } from './chunk-6RWCZUAD.js';
3
- import { cn } from './chunk-GZNLQE3I.js';
4
- import { CheckCircle2, XCircle } from 'lucide-react';
5
- import { LazyMotion, domAnimation, m } from 'motion/react';
6
- import { jsx, jsxs } from 'react/jsx-runtime';
7
-
8
- var VASPS = [
9
- {
10
- name: "Aqua Exchange",
11
- jurisdiction: "Singapore",
12
- flag: "\u{1F1F8}\u{1F1EC}",
13
- registered: true,
14
- regulator: "MAS",
15
- protocols: ["TRP", "TRISA"],
16
- riskLevel: "Low",
17
- lastVerified: "2 hours ago"
18
- },
19
- {
20
- name: "Atlas Digital",
21
- jurisdiction: "United Kingdom",
22
- flag: "\u{1F1EC}\u{1F1E7}",
23
- registered: true,
24
- regulator: "FCA",
25
- protocols: ["OpenVASP", "TRP"],
26
- riskLevel: "Low",
27
- lastVerified: "4 hours ago"
28
- },
29
- {
30
- name: "Nova Crypto",
31
- jurisdiction: "UAE",
32
- flag: "\u{1F1E6}\u{1F1EA}",
33
- registered: true,
34
- regulator: "VARA",
35
- protocols: ["Sygna"],
36
- riskLevel: "Medium",
37
- lastVerified: "1 day ago"
38
- }
39
- ];
40
- var riskColour = {
41
- Low: "bg-emerald-50 text-emerald-700",
42
- Medium: "bg-amber-50 text-amber-700",
43
- High: "bg-red-50 text-red-700"
44
- };
45
- function AnimationVaspIdentification({ className }) {
46
- const [containerRef, index] = useCycleIndex(VASPS.length, 3800);
47
- const v = VASPS[index];
48
- return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("flex flex-col p-5", className), children: [
49
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
50
- /* @__PURE__ */ jsxs("div", { children: [
51
- /* @__PURE__ */ jsx("p", { className: "font-semibold text-[15px] text-foreground", children: "Counterparty VASP" }),
52
- /* @__PURE__ */ jsx("p", { className: "text-[12px] text-gray-400", children: "Identity verification" })
53
- ] }),
54
- /* @__PURE__ */ jsxs(
55
- m.span,
56
- {
57
- initial: { opacity: 0, scale: 0.9 },
58
- animate: { opacity: 1, scale: 1 },
59
- className: cn(
60
- "rounded-full px-2.5 py-1 font-semibold text-[11px]",
61
- riskColour[v.riskLevel]
62
- ),
63
- children: [
64
- v.riskLevel,
65
- " risk"
66
- ]
67
- },
68
- index
69
- )
70
- ] }),
71
- /* @__PURE__ */ jsxs(
72
- m.div,
73
- {
74
- initial: { opacity: 0, y: 6 },
75
- animate: { opacity: 1, y: 0 },
76
- transition: { duration: 0.3 },
77
- className: "mt-4 rounded-lg border border-gray-100 bg-gray-50",
78
- children: [
79
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-gray-100 border-b px-4 py-3", children: [
80
- /* @__PURE__ */ jsx("div", { className: "flex size-9 items-center justify-center rounded-lg bg-white text-lg shadow-sm", children: v.flag }),
81
- /* @__PURE__ */ jsxs("div", { children: [
82
- /* @__PURE__ */ jsx("p", { className: "font-semibold text-[13px] text-gray-900", children: v.name }),
83
- /* @__PURE__ */ jsxs("p", { className: "text-[11px] text-gray-500", children: [
84
- v.jurisdiction,
85
- " ",
86
- "\u2022",
87
- " ",
88
- v.regulator
89
- ] })
90
- ] })
91
- ] }),
92
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2 p-3", children: [
93
- { label: "Registered", ok: v.registered },
94
- { label: "Identity verified", ok: true },
95
- { label: "Sanctions clear", ok: true },
96
- { label: "Travel Rule ready", ok: v.protocols.length > 0 }
97
- ].map((check, i) => /* @__PURE__ */ jsxs(
98
- m.div,
99
- {
100
- initial: { opacity: 0, y: 4 },
101
- animate: { opacity: 1, y: 0 },
102
- transition: { delay: 0.1 + i * 0.08 },
103
- className: "flex items-center gap-1.5 rounded-md bg-white px-2.5 py-1.5",
104
- children: [
105
- check.ok ? /* @__PURE__ */ jsx(CheckCircle2, { className: "size-3 text-emerald-500" }) : /* @__PURE__ */ jsx(XCircle, { className: "size-3 text-red-500" }),
106
- /* @__PURE__ */ jsx("span", { className: "font-medium text-[10px] text-gray-600", children: check.label })
107
- ]
108
- },
109
- check.label
110
- )) })
111
- ]
112
- },
113
- `vasp-${index}`
114
- ),
115
- /* @__PURE__ */ jsxs(
116
- m.div,
117
- {
118
- initial: { opacity: 0 },
119
- animate: { opacity: 1 },
120
- transition: { delay: 0.3 },
121
- className: "mt-3 flex items-center gap-2",
122
- children: [
123
- /* @__PURE__ */ jsx("span", { className: "font-medium text-[10px] text-gray-400", children: "Protocols:" }),
124
- v.protocols.map((p) => /* @__PURE__ */ jsx(
125
- "span",
126
- {
127
- className: "rounded-full border border-gray-200 bg-white px-2.5 py-0.5 font-semibold text-[10px] text-gray-600",
128
- children: p
129
- },
130
- p
131
- )),
132
- /* @__PURE__ */ jsxs("span", { className: "ml-auto text-[10px] text-gray-400", children: [
133
- "Verified ",
134
- v.lastVerified
135
- ] })
136
- ]
137
- },
138
- `proto-${index}`
139
- )
140
- ] }) });
141
- }
142
-
143
- export { AnimationVaspIdentification };
144
- //# sourceMappingURL=chunk-EFLWU2JP.js.map
145
- //# sourceMappingURL=chunk-EFLWU2JP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/animations/animation-vasp-identification.tsx"],"names":[],"mappings":"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","file":"chunk-EFLWU2JP.js","sourcesContent":["\"use client\"\n\nimport { CheckCircle2, XCircle } 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 Vasp = {\n name: string\n jurisdiction: string\n flag: string\n registered: boolean\n regulator: string\n protocols: string[]\n riskLevel: \"Low\" | \"Medium\" | \"High\"\n lastVerified: string\n}\n\nconst VASPS: Vasp[] = [\n {\n name: \"Aqua Exchange\",\n jurisdiction: \"Singapore\",\n flag: \"\\u{1F1F8}\\u{1F1EC}\",\n registered: true,\n regulator: \"MAS\",\n protocols: [\"TRP\", \"TRISA\"],\n riskLevel: \"Low\",\n lastVerified: \"2 hours ago\",\n },\n {\n name: \"Atlas Digital\",\n jurisdiction: \"United Kingdom\",\n flag: \"\\u{1F1EC}\\u{1F1E7}\",\n registered: true,\n regulator: \"FCA\",\n protocols: [\"OpenVASP\", \"TRP\"],\n riskLevel: \"Low\",\n lastVerified: \"4 hours ago\",\n },\n {\n name: \"Nova Crypto\",\n jurisdiction: \"UAE\",\n flag: \"\\u{1F1E6}\\u{1F1EA}\",\n registered: true,\n regulator: \"VARA\",\n protocols: [\"Sygna\"],\n riskLevel: \"Medium\",\n lastVerified: \"1 day ago\",\n },\n]\n\nconst riskColour: Record<string, string> = {\n Low: \"bg-emerald-50 text-emerald-700\",\n Medium: \"bg-amber-50 text-amber-700\",\n High: \"bg-red-50 text-red-700\",\n}\n\nexport default function AnimationVaspIdentification({ className }: { className?: string }) {\n const [containerRef, index] = useCycleIndex(VASPS.length, 3800)\n\n const v = VASPS[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\">Counterparty VASP</p>\n <p className=\"text-[12px] text-gray-400\">Identity verification</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 riskColour[v.riskLevel],\n )}\n >\n {v.riskLevel} risk\n </m.span>\n </div>\n\n {/* VASP card */}\n <m.div\n key={`vasp-${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 {/* Name & jurisdiction */}\n <div className=\"flex items-center gap-3 border-gray-100 border-b px-4 py-3\">\n <div className=\"flex size-9 items-center justify-center rounded-lg bg-white text-lg shadow-sm\">\n {v.flag}\n </div>\n <div>\n <p className=\"font-semibold text-[13px] text-gray-900\">{v.name}</p>\n <p className=\"text-[11px] text-gray-500\">\n {v.jurisdiction} {\"\\u2022\"} {v.regulator}\n </p>\n </div>\n </div>\n\n {/* Verification checks */}\n <div className=\"grid grid-cols-2 gap-2 p-3\">\n {[\n { label: \"Registered\", ok: v.registered },\n { label: \"Identity verified\", ok: true },\n { label: \"Sanctions clear\", ok: true },\n { label: \"Travel Rule ready\", ok: v.protocols.length > 0 },\n ].map((check, i) => (\n <m.div\n key={check.label}\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 + i * 0.08 }}\n className=\"flex items-center gap-1.5 rounded-md bg-white px-2.5 py-1.5\"\n >\n {check.ok ? (\n <CheckCircle2 className=\"size-3 text-emerald-500\" />\n ) : (\n <XCircle className=\"size-3 text-red-500\" />\n )}\n <span className=\"font-medium text-[10px] text-gray-600\">{check.label}</span>\n </m.div>\n ))}\n </div>\n </m.div>\n\n {/* Protocols */}\n <m.div\n key={`proto-${index}`}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.3 }}\n className=\"mt-3 flex items-center gap-2\"\n >\n <span className=\"font-medium text-[10px] text-gray-400\">Protocols:</span>\n {v.protocols.map((p) => (\n <span\n key={p}\n className=\"rounded-full border border-gray-200 bg-white px-2.5 py-0.5 font-semibold text-[10px] text-gray-600\"\n >\n {p}\n </span>\n ))}\n <span className=\"ml-auto text-[10px] text-gray-400\">Verified {v.lastVerified}</span>\n </m.div>\n </div>\n </LazyMotion>\n )\n}\n"]}