amliq-dashboard 2.0.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 (492) hide show
  1. package/.env.example +3 -0
  2. package/.env.production +1 -0
  3. package/Dockerfile +26 -0
  4. package/QUICK_START.md +267 -0
  5. package/README.md +161 -0
  6. package/TESTING_GUIDE.md +322 -0
  7. package/dist/.well-known/ai-plugin.json +15 -0
  8. package/dist/_headers +8 -0
  9. package/dist/_redirects +1 -0
  10. package/dist/assets/APIKeys-BvwFauIs.js +6 -0
  11. package/dist/assets/APIKeys-DaMSBZQL.js +1 -0
  12. package/dist/assets/AdverseMedia-DckXfMzS.js +4 -0
  13. package/dist/assets/AlertDetailPage-Bc2_zwu_.js +1 -0
  14. package/dist/assets/AlertQueue-DFtBiRoM.js +8 -0
  15. package/dist/assets/Analytics-DtruB5lQ.js +1 -0
  16. package/dist/assets/AuditTrail-BK68ePu0.js +1 -0
  17. package/dist/assets/AuthDivider-gRHEt7gx.js +1 -0
  18. package/dist/assets/Badge-B9VFkofy.js +1 -0
  19. package/dist/assets/BatchJobs-Bz6KFnXD.js +6 -0
  20. package/dist/assets/BillingPage-R9nQ5nFb.js +11 -0
  21. package/dist/assets/Card-Cw-T_-oU.js +1 -0
  22. package/dist/assets/CaseDetail-DYs7Zg_y.js +7 -0
  23. package/dist/assets/CaseManagement-B1Q4Dp1Y.js +1 -0
  24. package/dist/assets/ComplianceReport-Dhssqc9T.js +1 -0
  25. package/dist/assets/Configuration-B92kl9T0.js +1 -0
  26. package/dist/assets/CryptoScreening-C7yFlskC.js +1 -0
  27. package/dist/assets/Dashboard-w4-Nhv9q.js +17 -0
  28. package/dist/assets/DataSources-u3-Ri_5_.js +3 -0
  29. package/dist/assets/EDDWorkflow-CFzlEO0e.js +1 -0
  30. package/dist/assets/EmptyState-Do0xJAT9.js +6 -0
  31. package/dist/assets/ForgotPassword-BPYyQFQp.js +1 -0
  32. package/dist/assets/LandingPage-CjaP0zw4.js +41 -0
  33. package/dist/assets/ListsMarketplace-CG6KkT9B.js +6 -0
  34. package/dist/assets/Login-677LEGP1.js +1 -0
  35. package/dist/assets/MFASetup-BxqCPvui.js +1 -0
  36. package/dist/assets/Monitoring-9TN9MK4y.js +1 -0
  37. package/dist/assets/Onboarding-Cf0Y83lX.js +1 -0
  38. package/dist/assets/Operations-CcXwc2xw.js +10 -0
  39. package/dist/assets/Overview-B_Ky0VWV.js +1 -0
  40. package/dist/assets/PEPScreening-pUQjTH9c.js +1 -0
  41. package/dist/assets/PageHeader-BObHFn0i.js +1 -0
  42. package/dist/assets/PrivacyPolicy-DZ2xrKir.js +1 -0
  43. package/dist/assets/ResetPassword-AtxtpIG1.js +1 -0
  44. package/dist/assets/RiskAssessment-Dzuh1Usv.js +1 -0
  45. package/dist/assets/SARForm-D8w2ZGe-.js +1 -0
  46. package/dist/assets/SanctionsLists-CPA3UH2v.js +1 -0
  47. package/dist/assets/ScheduledTasks-Dsjk-6UR.js +1 -0
  48. package/dist/assets/ScreenEntity-D1U0YL7v.js +3 -0
  49. package/dist/assets/ScreeningProgress-BW49PzoB.js +66 -0
  50. package/dist/assets/SearchField-CulFKdiI.js +1 -0
  51. package/dist/assets/Signup-C0FmFOo_.js +1 -0
  52. package/dist/assets/SystemHealth-B_8u4eva.js +1 -0
  53. package/dist/assets/TaskHistory-BCmEM89q.js +3 -0
  54. package/dist/assets/Team-CUo_FlU7.js +1 -0
  55. package/dist/assets/TenantDetail-CgZQHUY8.js +1 -0
  56. package/dist/assets/Tenants-RB9E9ick.js +2 -0
  57. package/dist/assets/TermsOfService-BfL-kndX.js +1 -0
  58. package/dist/assets/TransactionMonitoring-DGh_T22s.js +14 -0
  59. package/dist/assets/TxnScreening-B7cm2-eh.js +1 -0
  60. package/dist/assets/UBOChain-falXAsCo.js +1 -0
  61. package/dist/assets/Users-Doakpg9c.js +1 -0
  62. package/dist/assets/Webhooks-BZpAfaxv.js +1 -0
  63. package/dist/assets/alert-triangle-YCFVm7B_.js +6 -0
  64. package/dist/assets/alerts-COUnTwWY.js +1 -0
  65. package/dist/assets/arrow-left-9ApLqP95.js +6 -0
  66. package/dist/assets/check-VTcvVtIU.js +6 -0
  67. package/dist/assets/check-circle-2-Dn-lG5YQ.js +6 -0
  68. package/dist/assets/code-DIJRWFVv.js +6 -0
  69. package/dist/assets/fingerprint-C0MGVtax.js +6 -0
  70. package/dist/assets/flag-B8_Gwxh6.js +6 -0
  71. package/dist/assets/index-CfdYcqRM.js +289 -0
  72. package/dist/assets/index-HPU_Rhdu.css +1 -0
  73. package/dist/assets/layers-zHz2o4vo.js +6 -0
  74. package/dist/assets/loader-B9_dNihg.js +6 -0
  75. package/dist/assets/mail-BijL2qwp.js +6 -0
  76. package/dist/assets/plus-i0oBIIPS.js +6 -0
  77. package/dist/assets/refresh-cw-CSuAwutt.js +6 -0
  78. package/dist/assets/useAnalytics-Bj8IONcw.js +72 -0
  79. package/dist/assets/x-circle-DLGKvijE.js +6 -0
  80. package/dist/favicon.svg +15 -0
  81. package/dist/index.html +51 -0
  82. package/dist/llms.txt +28 -0
  83. package/dist/logo.png +0 -0
  84. package/dist/logo.svg +17 -0
  85. package/dist/manifest.json +44 -0
  86. package/dist/robots.txt +15 -0
  87. package/dist/schema.json +13 -0
  88. package/dist/sitemap.xml +28 -0
  89. package/dist/sw.js +67 -0
  90. package/e2e/auth-setup.ts +20 -0
  91. package/e2e/billing.spec.ts +50 -0
  92. package/e2e/cases.spec.ts +53 -0
  93. package/e2e/compliance.spec.ts +65 -0
  94. package/e2e/config.spec.ts +56 -0
  95. package/e2e/dashboard.spec.ts +47 -0
  96. package/e2e/fixtures.ts +33 -0
  97. package/e2e/lists.spec.ts +43 -0
  98. package/e2e/login.spec.ts +64 -0
  99. package/e2e/media.spec.ts +48 -0
  100. package/e2e/mocks.ts +51 -0
  101. package/e2e/monitoring.spec.ts +44 -0
  102. package/e2e/navigation.spec.ts +56 -0
  103. package/e2e/onboarding.spec.ts +49 -0
  104. package/e2e/responsive.spec.ts +40 -0
  105. package/e2e/risk.spec.ts +61 -0
  106. package/e2e/screening.spec.ts +76 -0
  107. package/e2e/team.spec.ts +53 -0
  108. package/index.html +50 -0
  109. package/package.json +47 -0
  110. package/playwright.config.ts +35 -0
  111. package/postcss.config.js +6 -0
  112. package/public/.well-known/ai-plugin.json +15 -0
  113. package/public/_headers +8 -0
  114. package/public/_redirects +1 -0
  115. package/public/favicon.svg +15 -0
  116. package/public/llms.txt +28 -0
  117. package/public/logo.png +0 -0
  118. package/public/logo.svg +17 -0
  119. package/public/manifest.json +44 -0
  120. package/public/robots.txt +15 -0
  121. package/public/schema.json +13 -0
  122. package/public/sitemap.xml +28 -0
  123. package/public/sw.js +67 -0
  124. package/scripts/test-runner.sh +152 -0
  125. package/src/App.tsx +48 -0
  126. package/src/api/alerts.ts +19 -0
  127. package/src/api/analytics.ts +6 -0
  128. package/src/api/audit.ts +11 -0
  129. package/src/api/auth.ts +26 -0
  130. package/src/api/billing.ts +54 -0
  131. package/src/api/cases.ts +48 -0
  132. package/src/api/client.ts +50 -0
  133. package/src/api/config.ts +30 -0
  134. package/src/api/edd.ts +25 -0
  135. package/src/api/enforcement.ts +33 -0
  136. package/src/api/lists.ts +24 -0
  137. package/src/api/monitoring.ts +82 -0
  138. package/src/api/pep.ts +30 -0
  139. package/src/api/risk.ts +26 -0
  140. package/src/api/screening.ts +37 -0
  141. package/src/api/team.ts +27 -0
  142. package/src/api/transactions.ts +37 -0
  143. package/src/components/admin/TenantCards.tsx +51 -0
  144. package/src/components/alerts/AlertActions.test.tsx +80 -0
  145. package/src/components/alerts/AlertActions.tsx +68 -0
  146. package/src/components/alerts/AlertCard.test.tsx +86 -0
  147. package/src/components/alerts/AlertCard.tsx +60 -0
  148. package/src/components/alerts/AlertDetailSidebar.tsx +63 -0
  149. package/src/components/alerts/AlertFilters.test.tsx +73 -0
  150. package/src/components/alerts/AlertFilters.tsx +88 -0
  151. package/src/components/alerts/EntityDetailsCard.test.tsx +61 -0
  152. package/src/components/alerts/EntityDetailsCard.tsx +37 -0
  153. package/src/components/alerts/NotesCard.test.tsx +39 -0
  154. package/src/components/alerts/NotesCard.tsx +28 -0
  155. package/src/components/auth/AuthDivider.tsx +18 -0
  156. package/src/components/auth/LoginForm.tsx +62 -0
  157. package/src/components/auth/LoginLeftPanel.tsx +43 -0
  158. package/src/components/auth/PasswordStrength.tsx +26 -0
  159. package/src/components/auth/SignInButtons.tsx +46 -0
  160. package/src/components/auth/SignupLeftPanel.tsx +35 -0
  161. package/src/components/auth/countries.ts +17 -0
  162. package/src/components/charts/AreaChart.tsx +45 -0
  163. package/src/components/charts/BarChart.tsx +48 -0
  164. package/src/components/charts/DonutChart.tsx +47 -0
  165. package/src/components/compliance/CaseActions.tsx +74 -0
  166. package/src/components/compliance/CaseTimeline.tsx +68 -0
  167. package/src/components/compliance/MediaResultCard.tsx +87 -0
  168. package/src/components/compliance/PEPResultCard.tsx +78 -0
  169. package/src/components/config/MatchingModesCard.test.tsx +75 -0
  170. package/src/components/config/MatchingModesCard.tsx +40 -0
  171. package/src/components/config/ScreeningLayersCard.test.tsx +57 -0
  172. package/src/components/config/ScreeningLayersCard.tsx +36 -0
  173. package/src/components/config/ThresholdsCard.test.tsx +79 -0
  174. package/src/components/config/ThresholdsCard.tsx +51 -0
  175. package/src/components/dashboard/ActivityFeed.tsx +93 -0
  176. package/src/components/dashboard/DashboardGreeting.tsx +23 -0
  177. package/src/components/dashboard/DashboardSkeleton.tsx +35 -0
  178. package/src/components/dashboard/QuickActions.tsx +52 -0
  179. package/src/components/dashboard/TopEntitiesTable.tsx +63 -0
  180. package/src/components/data/ComplianceMetrics.test.tsx +32 -0
  181. package/src/components/data/ComplianceMetrics.tsx +40 -0
  182. package/src/components/data/ConfidenceScore.test.tsx +62 -0
  183. package/src/components/data/ConfidenceScore.tsx +27 -0
  184. package/src/components/data/StatCard.test.tsx +72 -0
  185. package/src/components/data/StatCard.tsx +63 -0
  186. package/src/components/data/StatusBadge.test.tsx +63 -0
  187. package/src/components/data/StatusBadge.tsx +39 -0
  188. package/src/components/layout/AppShell.tsx +48 -0
  189. package/src/components/layout/Breadcrumbs.tsx +48 -0
  190. package/src/components/layout/CommandPalette.tsx +81 -0
  191. package/src/components/layout/DashboardLayout.tsx +19 -0
  192. package/src/components/layout/MobileHeader.tsx +30 -0
  193. package/src/components/layout/NavGroup.test.tsx +63 -0
  194. package/src/components/layout/NavGroup.tsx +64 -0
  195. package/src/components/layout/NotificationBell.tsx +89 -0
  196. package/src/components/layout/PageHeader.test.tsx +61 -0
  197. package/src/components/layout/PageHeader.tsx +19 -0
  198. package/src/components/layout/ProtectedRoute.tsx +31 -0
  199. package/src/components/layout/PublicLayout.tsx +17 -0
  200. package/src/components/layout/Sidebar.test.tsx +67 -0
  201. package/src/components/layout/Sidebar.tsx +92 -0
  202. package/src/components/layout/Toolbar.test.tsx +47 -0
  203. package/src/components/layout/Toolbar.tsx +68 -0
  204. package/src/components/layout/navItems.ts +94 -0
  205. package/src/components/lists/ListCard.tsx +78 -0
  206. package/src/components/lists/ListMarketplaceCard.tsx +77 -0
  207. package/src/components/screening/CircularConfidence.tsx +38 -0
  208. package/src/components/screening/LimitReachedBanner.tsx +31 -0
  209. package/src/components/screening/ListSelector.tsx +64 -0
  210. package/src/components/screening/MatchDetailHeader.tsx +64 -0
  211. package/src/components/screening/MatchEntityInfo.tsx +56 -0
  212. package/src/components/screening/MatchEvidenceBars.tsx +65 -0
  213. package/src/components/screening/MatchMetadata.tsx +95 -0
  214. package/src/components/screening/ScreenResults.tsx +49 -0
  215. package/src/components/screening/ScreeningForm.test.tsx +83 -0
  216. package/src/components/screening/ScreeningForm.tsx +100 -0
  217. package/src/components/screening/ScreeningLayersList.test.tsx +33 -0
  218. package/src/components/screening/ScreeningLayersList.tsx +46 -0
  219. package/src/components/screening/ScreeningProgress.tsx +91 -0
  220. package/src/components/screening/ScreeningQuotaBanner.tsx +64 -0
  221. package/src/components/screening/ScreeningResultCard.tsx +47 -0
  222. package/src/components/screening/ScreeningResultRow.tsx +45 -0
  223. package/src/components/screening/ScreeningResults.test.tsx +37 -0
  224. package/src/components/screening/ScreeningResults.tsx +33 -0
  225. package/src/components/screening/ShareResults.tsx +103 -0
  226. package/src/components/screening/ThresholdSlider.tsx +23 -0
  227. package/src/components/transactions/WebhookCTA.tsx +63 -0
  228. package/src/components/ui/Avatar.test.tsx +47 -0
  229. package/src/components/ui/Avatar.tsx +35 -0
  230. package/src/components/ui/Badge.test.tsx +49 -0
  231. package/src/components/ui/Badge.tsx +33 -0
  232. package/src/components/ui/Button.test.tsx +56 -0
  233. package/src/components/ui/Button.tsx +46 -0
  234. package/src/components/ui/Card.test.tsx +61 -0
  235. package/src/components/ui/Card.tsx +29 -0
  236. package/src/components/ui/ConfirmModal.tsx +67 -0
  237. package/src/components/ui/Divider.test.tsx +24 -0
  238. package/src/components/ui/Divider.tsx +5 -0
  239. package/src/components/ui/EmptyState.test.tsx +49 -0
  240. package/src/components/ui/EmptyState.tsx +22 -0
  241. package/src/components/ui/ErrorBoundary.tsx +44 -0
  242. package/src/components/ui/ExportMenu.tsx +71 -0
  243. package/src/components/ui/LanguageSwitcher.tsx +37 -0
  244. package/src/components/ui/LoadingSpinner.test.tsx +41 -0
  245. package/src/components/ui/LoadingSpinner.tsx +21 -0
  246. package/src/components/ui/MetricCard.tsx +63 -0
  247. package/src/components/ui/ScoreRing.tsx +51 -0
  248. package/src/components/ui/SearchField.test.tsx +55 -0
  249. package/src/components/ui/SearchField.tsx +31 -0
  250. package/src/components/ui/SeverityBadge.tsx +57 -0
  251. package/src/components/ui/ThemeToggle.tsx +37 -0
  252. package/src/components/ui/Toast.test.tsx +79 -0
  253. package/src/components/ui/Toast.tsx +75 -0
  254. package/src/components/ui/Toggle.test.tsx +85 -0
  255. package/src/components/ui/Toggle.tsx +46 -0
  256. package/src/context/AuthContext.tsx +71 -0
  257. package/src/data/pepProfiles.ts +76 -0
  258. package/src/data/pepProfilesExtra.ts +58 -0
  259. package/src/hooks/useAlerts.ts +36 -0
  260. package/src/hooks/useAnalytics.ts +23 -0
  261. package/src/hooks/useApi.test.ts +79 -0
  262. package/src/hooks/useApi.ts +33 -0
  263. package/src/hooks/useAudit.ts +28 -0
  264. package/src/hooks/useBilling.ts +38 -0
  265. package/src/hooks/useConfig.ts +35 -0
  266. package/src/hooks/useDebounce.test.ts +84 -0
  267. package/src/hooks/useDebounce.ts +15 -0
  268. package/src/hooks/useDirection.ts +15 -0
  269. package/src/hooks/useLists.ts +34 -0
  270. package/src/hooks/useMediaQuery.test.ts +97 -0
  271. package/src/hooks/useMediaQuery.ts +28 -0
  272. package/src/hooks/useScreening.ts +33 -0
  273. package/src/hooks/useSidebar.ts +18 -0
  274. package/src/hooks/useUsage.ts +27 -0
  275. package/src/i18n/config.ts +33 -0
  276. package/src/i18n/locales/ar/admin.json +19 -0
  277. package/src/i18n/locales/ar/alerts.json +52 -0
  278. package/src/i18n/locales/ar/analytics.json +9 -0
  279. package/src/i18n/locales/ar/audit.json +12 -0
  280. package/src/i18n/locales/ar/auth.json +60 -0
  281. package/src/i18n/locales/ar/batch.json +5 -0
  282. package/src/i18n/locales/ar/billing.json +41 -0
  283. package/src/i18n/locales/ar/common.json +65 -0
  284. package/src/i18n/locales/ar/compliance.json +83 -0
  285. package/src/i18n/locales/ar/config.json +13 -0
  286. package/src/i18n/locales/ar/dashboard.json +19 -0
  287. package/src/i18n/locales/ar/errors.json +9 -0
  288. package/src/i18n/locales/ar/index.ts +29 -0
  289. package/src/i18n/locales/ar/legal.json +10 -0
  290. package/src/i18n/locales/ar/lists.json +6 -0
  291. package/src/i18n/locales/ar/marketing.json +110 -0
  292. package/src/i18n/locales/ar/monitoring.json +15 -0
  293. package/src/i18n/locales/ar/nav.json +35 -0
  294. package/src/i18n/locales/ar/onboarding.json +25 -0
  295. package/src/i18n/locales/ar/platform.json +23 -0
  296. package/src/i18n/locales/ar/screening.json +26 -0
  297. package/src/i18n/locales/ar/team.json +11 -0
  298. package/src/i18n/locales/en/admin.json +21 -0
  299. package/src/i18n/locales/en/alerts.json +52 -0
  300. package/src/i18n/locales/en/analytics.json +9 -0
  301. package/src/i18n/locales/en/audit.json +12 -0
  302. package/src/i18n/locales/en/auth.json +60 -0
  303. package/src/i18n/locales/en/batch.json +5 -0
  304. package/src/i18n/locales/en/billing.json +87 -0
  305. package/src/i18n/locales/en/common.json +65 -0
  306. package/src/i18n/locales/en/compliance.json +83 -0
  307. package/src/i18n/locales/en/config.json +29 -0
  308. package/src/i18n/locales/en/dashboard.json +23 -0
  309. package/src/i18n/locales/en/errors.json +9 -0
  310. package/src/i18n/locales/en/index.ts +29 -0
  311. package/src/i18n/locales/en/legal.json +114 -0
  312. package/src/i18n/locales/en/lists.json +6 -0
  313. package/src/i18n/locales/en/marketing.json +174 -0
  314. package/src/i18n/locales/en/monitoring.json +15 -0
  315. package/src/i18n/locales/en/nav.json +35 -0
  316. package/src/i18n/locales/en/onboarding.json +31 -0
  317. package/src/i18n/locales/en/platform.json +25 -0
  318. package/src/i18n/locales/en/screening.json +26 -0
  319. package/src/i18n/locales/en/team.json +12 -0
  320. package/src/i18n/locales/he/admin.json +19 -0
  321. package/src/i18n/locales/he/alerts.json +52 -0
  322. package/src/i18n/locales/he/analytics.json +9 -0
  323. package/src/i18n/locales/he/audit.json +12 -0
  324. package/src/i18n/locales/he/auth.json +60 -0
  325. package/src/i18n/locales/he/batch.json +5 -0
  326. package/src/i18n/locales/he/billing.json +41 -0
  327. package/src/i18n/locales/he/common.json +65 -0
  328. package/src/i18n/locales/he/compliance.json +83 -0
  329. package/src/i18n/locales/he/config.json +13 -0
  330. package/src/i18n/locales/he/dashboard.json +19 -0
  331. package/src/i18n/locales/he/errors.json +9 -0
  332. package/src/i18n/locales/he/index.ts +29 -0
  333. package/src/i18n/locales/he/legal.json +10 -0
  334. package/src/i18n/locales/he/lists.json +6 -0
  335. package/src/i18n/locales/he/marketing.json +110 -0
  336. package/src/i18n/locales/he/monitoring.json +15 -0
  337. package/src/i18n/locales/he/nav.json +35 -0
  338. package/src/i18n/locales/he/onboarding.json +25 -0
  339. package/src/i18n/locales/he/platform.json +23 -0
  340. package/src/i18n/locales/he/screening.json +26 -0
  341. package/src/i18n/locales/he/team.json +11 -0
  342. package/src/index.css +112 -0
  343. package/src/main.tsx +15 -0
  344. package/src/pages/APIKeys.tsx +120 -0
  345. package/src/pages/AddMonitorModal.tsx +30 -0
  346. package/src/pages/AdverseMedia.test.tsx +18 -0
  347. package/src/pages/AdverseMedia.tsx +89 -0
  348. package/src/pages/AlertDetailPage.tsx +64 -0
  349. package/src/pages/AlertQueue.test.tsx +48 -0
  350. package/src/pages/AlertQueue.tsx +63 -0
  351. package/src/pages/Analytics.tsx +50 -0
  352. package/src/pages/AuditTrail.tsx +64 -0
  353. package/src/pages/BatchJobs.tsx +79 -0
  354. package/src/pages/CaseDetail.tsx +72 -0
  355. package/src/pages/CaseManagement.test.tsx +31 -0
  356. package/src/pages/CaseManagement.tsx +92 -0
  357. package/src/pages/Configuration.test.tsx +96 -0
  358. package/src/pages/Configuration.tsx +123 -0
  359. package/src/pages/CryptoScreening.tsx +109 -0
  360. package/src/pages/Dashboard.test.tsx +51 -0
  361. package/src/pages/Dashboard.tsx +66 -0
  362. package/src/pages/EDDWorkflow.test.tsx +29 -0
  363. package/src/pages/EDDWorkflow.tsx +73 -0
  364. package/src/pages/ForgotPassword.test.tsx +49 -0
  365. package/src/pages/ForgotPassword.tsx +67 -0
  366. package/src/pages/ListsMarketplace.tsx +102 -0
  367. package/src/pages/Login.test.tsx +100 -0
  368. package/src/pages/Login.tsx +57 -0
  369. package/src/pages/MFASetup.tsx +114 -0
  370. package/src/pages/MonitorProfileCard.tsx +27 -0
  371. package/src/pages/Monitoring.tsx +68 -0
  372. package/src/pages/Onboarding.test.tsx +36 -0
  373. package/src/pages/Onboarding.tsx +60 -0
  374. package/src/pages/PEPScreening.test.tsx +15 -0
  375. package/src/pages/PEPScreening.tsx +100 -0
  376. package/src/pages/ResetPassword.tsx +81 -0
  377. package/src/pages/RiskAssessment.test.tsx +15 -0
  378. package/src/pages/RiskAssessment.tsx +108 -0
  379. package/src/pages/SanctionsLists.tsx +74 -0
  380. package/src/pages/ScreenEntity.test.tsx +82 -0
  381. package/src/pages/ScreenEntity.tsx +76 -0
  382. package/src/pages/Signup.test.tsx +98 -0
  383. package/src/pages/Signup.tsx +92 -0
  384. package/src/pages/TaskHistory.tsx +183 -0
  385. package/src/pages/Team.test.tsx +15 -0
  386. package/src/pages/Team.tsx +140 -0
  387. package/src/pages/TransactionMonitoring.test.tsx +18 -0
  388. package/src/pages/TransactionMonitoring.tsx +118 -0
  389. package/src/pages/TxnScreening.tsx +125 -0
  390. package/src/pages/UBOChain.test.tsx +35 -0
  391. package/src/pages/UBOChain.tsx +65 -0
  392. package/src/pages/Webhooks.tsx +137 -0
  393. package/src/pages/admin/DataSources.tsx +230 -0
  394. package/src/pages/admin/Operations.tsx +103 -0
  395. package/src/pages/admin/ScheduledTasks.tsx +155 -0
  396. package/src/pages/admin/SystemHealth.tsx +58 -0
  397. package/src/pages/admin/TenantDetail.tsx +62 -0
  398. package/src/pages/admin/Tenants.test.tsx +20 -0
  399. package/src/pages/admin/Tenants.tsx +63 -0
  400. package/src/pages/admin/opsRunners.ts +81 -0
  401. package/src/pages/admin/opsTerminal.tsx +63 -0
  402. package/src/pages/billing/ActiveSubscriptions.tsx +41 -0
  403. package/src/pages/billing/AddProductModal.tsx +99 -0
  404. package/src/pages/billing/BillingPage.test.tsx +30 -0
  405. package/src/pages/billing/BillingPage.tsx +67 -0
  406. package/src/pages/billing/CurrentPlan.tsx +50 -0
  407. package/src/pages/billing/InvoiceList.tsx +104 -0
  408. package/src/pages/billing/InvoiceRow.tsx +37 -0
  409. package/src/pages/billing/LemonSqueezySetup.tsx +51 -0
  410. package/src/pages/billing/PaymentAlert.tsx +33 -0
  411. package/src/pages/billing/PlanComparison.tsx +53 -0
  412. package/src/pages/billing/ProductUsage.tsx +43 -0
  413. package/src/pages/billing/PromoCodeInput.tsx +58 -0
  414. package/src/pages/billing/SeatManager.tsx +80 -0
  415. package/src/pages/billing/SeatRow.tsx +32 -0
  416. package/src/pages/billing/SubscriptionCard.tsx +73 -0
  417. package/src/pages/billing/UpgradeModal.tsx +53 -0
  418. package/src/pages/billing/UsageHistory.tsx +37 -0
  419. package/src/pages/billing/UsageMeter.tsx +26 -0
  420. package/src/pages/billing/UsageOverview.tsx +38 -0
  421. package/src/pages/legal/PrivacyPolicy.tsx +25 -0
  422. package/src/pages/legal/TermsOfService.tsx +25 -0
  423. package/src/pages/marketing/BundleCallout.tsx +24 -0
  424. package/src/pages/marketing/CTASection.tsx +48 -0
  425. package/src/pages/marketing/CaseStudy.tsx +37 -0
  426. package/src/pages/marketing/ComparisonTable.tsx +66 -0
  427. package/src/pages/marketing/CompetitiveEdge.tsx +55 -0
  428. package/src/pages/marketing/DataCoverage.tsx +54 -0
  429. package/src/pages/marketing/DataRain.tsx +30 -0
  430. package/src/pages/marketing/EnterpriseCTA.tsx +26 -0
  431. package/src/pages/marketing/FAQItem.tsx +27 -0
  432. package/src/pages/marketing/FAQSchema.tsx +43 -0
  433. package/src/pages/marketing/FAQSection.tsx +19 -0
  434. package/src/pages/marketing/FeatureDetail.tsx +19 -0
  435. package/src/pages/marketing/FeaturesGrid.tsx +60 -0
  436. package/src/pages/marketing/FeaturesSpotlight.tsx +68 -0
  437. package/src/pages/marketing/FooterSection.tsx +92 -0
  438. package/src/pages/marketing/GradientOrbs.tsx +26 -0
  439. package/src/pages/marketing/HeroSearch.tsx +113 -0
  440. package/src/pages/marketing/HeroSection.tsx +72 -0
  441. package/src/pages/marketing/LandingPage.tsx +45 -0
  442. package/src/pages/marketing/LogoCloud.tsx +31 -0
  443. package/src/pages/marketing/LogoMarquee.tsx +45 -0
  444. package/src/pages/marketing/MarketingNav.tsx +80 -0
  445. package/src/pages/marketing/MatchingLayers.tsx +78 -0
  446. package/src/pages/marketing/MobileMenu.tsx +45 -0
  447. package/src/pages/marketing/PricingCard.tsx +57 -0
  448. package/src/pages/marketing/PricingFeatureRow.tsx +16 -0
  449. package/src/pages/marketing/PricingSection.tsx +103 -0
  450. package/src/pages/marketing/PricingToggle.tsx +40 -0
  451. package/src/pages/marketing/ProductPricingCards.tsx +23 -0
  452. package/src/pages/marketing/ProductShowcase.tsx +81 -0
  453. package/src/pages/marketing/ProductTabs.tsx +45 -0
  454. package/src/pages/marketing/QuoteRotator.tsx +56 -0
  455. package/src/pages/marketing/StatsBar.tsx +81 -0
  456. package/src/pages/marketing/StatsSection.tsx +44 -0
  457. package/src/pages/marketing/TestimonialCard.tsx +38 -0
  458. package/src/pages/marketing/TestimonialsSection.tsx +32 -0
  459. package/src/pages/marketing/animations.tsx +56 -0
  460. package/src/pages/onboarding/CountryStep.tsx +38 -0
  461. package/src/pages/onboarding/ListsStep.tsx +44 -0
  462. package/src/pages/onboarding/StepIndicator.tsx +34 -0
  463. package/src/pages/onboarding/ThresholdStep.tsx +49 -0
  464. package/src/pages/platform/APIKeys.tsx +102 -0
  465. package/src/pages/platform/Overview.tsx +58 -0
  466. package/src/pages/platform/Users.tsx +110 -0
  467. package/src/pages/reporting/ComplianceReport.tsx +99 -0
  468. package/src/pages/reporting/SARForm.tsx +99 -0
  469. package/src/routes/appRoutes.tsx +60 -0
  470. package/src/routes/compliance.tsx +28 -0
  471. package/src/routes/lazyCompliance.ts +34 -0
  472. package/src/routes/lazyPages.ts +35 -0
  473. package/src/routes/lazyPlatform.ts +5 -0
  474. package/src/routes/platform.tsx +15 -0
  475. package/src/styles/effects.css +76 -0
  476. package/src/test/setup.ts +25 -0
  477. package/src/test/utils.tsx +49 -0
  478. package/src/types/alert.ts +31 -0
  479. package/src/types/analytics.ts +16 -0
  480. package/src/types/audit.ts +11 -0
  481. package/src/types/billing.ts +60 -0
  482. package/src/types/common.ts +15 -0
  483. package/src/types/config.ts +19 -0
  484. package/src/types/entity.ts +34 -0
  485. package/src/types/index.ts +8 -0
  486. package/src/types/list.ts +15 -0
  487. package/src/types/screening.ts +32 -0
  488. package/src/vite-env.d.ts +1 -0
  489. package/tailwind.config.js +65 -0
  490. package/tsconfig.json +22 -0
  491. package/vite.config.ts +11 -0
  492. package/vitest.config.ts +19 -0
package/.env.example ADDED
@@ -0,0 +1,3 @@
1
+ VITE_API_URL=http://localhost:8080
2
+ VITE_APP_NAME=AMLIQ Dashboard
3
+ VITE_ENVIRONMENT=development
@@ -0,0 +1 @@
1
+ VITE_API_URL=https://api.amliq.finance
package/Dockerfile ADDED
@@ -0,0 +1,26 @@
1
+ # Build stage
2
+ FROM node:18-alpine AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ COPY package*.json ./
7
+ RUN npm ci
8
+
9
+ COPY . .
10
+ RUN npm run build
11
+
12
+ # Runtime stage
13
+ FROM node:18-alpine
14
+
15
+ WORKDIR /app
16
+
17
+ RUN npm install -g serve
18
+
19
+ COPY --from=builder /app/dist ./dist
20
+
21
+ EXPOSE 3000
22
+
23
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
24
+ CMD wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
25
+
26
+ CMD ["serve", "-s", "dist", "-l", "3000"]
package/QUICK_START.md ADDED
@@ -0,0 +1,267 @@
1
+ # AMLIQ AML Platform - Quick Start Guide
2
+
3
+ ## What's New
4
+
5
+ A complete public marketing website and authenticated billing dashboard have been added to the AMLIQ AML platform.
6
+
7
+ ## Routes
8
+
9
+ ### Public Pages (No Authentication)
10
+ - **`/`** - Landing page with full marketing site
11
+ - **`/pricing`** - Pricing section (same landing page)
12
+
13
+ ### Dashboard Pages (Requires Authentication)
14
+ - **`/billing`** - Billing & subscription management
15
+ - All existing routes unchanged (`/alerts`, `/screen`, `/config`, etc.)
16
+
17
+ ## Testing Locally
18
+
19
+ ### 1. Run the Development Server
20
+ ```bash
21
+ cd web
22
+ npm install
23
+ npm run dev
24
+ ```
25
+
26
+ ### 2. View Marketing Site
27
+ Open [http://localhost:5173](http://localhost:5173) to see the landing page with:
28
+ - Hero section
29
+ - Features showcase
30
+ - Interactive matching demo
31
+ - Pricing comparison (monthly/annual toggle)
32
+ - Testimonials
33
+ - FAQs
34
+ - Footer
35
+
36
+ ### 3. View Billing Page
37
+ Open [http://localhost:5173/billing](http://localhost:5173/billing) to see:
38
+ - Current subscription info
39
+ - Usage meters (screenings & API calls)
40
+ - 12-month usage history chart
41
+ - Invoice table
42
+ - Plan comparison
43
+ - Upgrade options
44
+
45
+ ## File Locations
46
+
47
+ ### Marketing Site Components
48
+ All in `/src/pages/marketing/`:
49
+ - `LandingPage.tsx` - Main page composition
50
+ - `HeroSection.tsx` - Hero with CTAs
51
+ - `FeaturesGrid.tsx` - 6-feature grid
52
+ - `PricingSection.tsx` - 3-tier pricing
53
+ - `TestimonialsSection.tsx` - Social proof
54
+ - `FAQSection.tsx` - Accordion FAQ
55
+ - `FooterSection.tsx` - Footer
56
+
57
+ ### Billing Components
58
+ All in `/src/pages/billing/`:
59
+ - `BillingPage.tsx` - Main dashboard
60
+ - `CurrentPlan.tsx` - Subscription info
61
+ - `UsageOverview.tsx` - Usage meters
62
+ - `UsageHistory.tsx` - Usage chart
63
+ - `InvoiceList.tsx` - Invoice table
64
+ - `PlanComparison.tsx` - Upgrade cards
65
+
66
+ ### API & Data
67
+ - `/src/api/billing.ts` - API client (mock delays)
68
+ - `/src/mocks/billing.ts` - Mock data (plans, usage, invoices)
69
+ - `/src/types/billing.ts` - TypeScript interfaces
70
+
71
+ ## Key Features
72
+
73
+ ### Marketing Site
74
+ ✅ Premium dark aesthetic with gradient accents
75
+ ✅ Fully responsive (mobile → tablet → desktop)
76
+ ✅ Interactive pricing toggle (monthly/annual)
77
+ ✅ Live matching demo with cascade animation
78
+ ✅ Competitor comparison table
79
+ ✅ Trust badges (SOC 2, ISO 27001, PCI DSS)
80
+ ✅ Mobile hamburger menu
81
+
82
+ ### Billing Dashboard
83
+ ✅ Active subscription card
84
+ ✅ Real-time usage meters with color coding
85
+ ✅ 12-month usage history
86
+ ✅ Complete invoice history
87
+ ✅ Plan upgrade flow with modal confirmation
88
+ ✅ Payment failure alerts
89
+ ✅ Responsive grid layouts
90
+
91
+ ## Customization
92
+
93
+ ### Change Pricing
94
+ Edit `/src/mocks/billing.ts`:
95
+ ```typescript
96
+ export const mockPlans: Plan[] = [
97
+ {
98
+ id: 'plan_starter',
99
+ tier: 'starter',
100
+ name: 'Starter',
101
+ monthlyPriceCents: 49900, // Change this
102
+ annualPriceCents: 479000, // And this
103
+ screeningLimit: 10000,
104
+ features: ['Feature 1', 'Feature 2'], // Update features
105
+ // ...
106
+ },
107
+ // ...
108
+ ]
109
+ ```
110
+
111
+ ### Change Colors
112
+ Update Tailwind classes throughout components. Key colors:
113
+ - `blue-600` → Primary CTA
114
+ - `indigo-600`, `purple-600` → Accent gradients
115
+ - `green-500`, `amber-600`, `red-600` → Status indicators
116
+
117
+ ### Change Features List
118
+ Edit marketing section components directly:
119
+ ```typescript
120
+ // In FeaturesGrid.tsx
121
+ const features = [
122
+ { title: 'Your Feature', description: 'Your description' },
123
+ // ...
124
+ ]
125
+ ```
126
+
127
+ ### Change Testimonials
128
+ Edit `/src/pages/marketing/TestimonialsSection.tsx`:
129
+ ```typescript
130
+ const testimonials = [
131
+ {
132
+ quote: 'Your testimonial',
133
+ author: 'Author name',
134
+ title: 'Their title',
135
+ company: 'Company name'
136
+ },
137
+ // ...
138
+ ]
139
+ ```
140
+
141
+ ## API Integration
142
+
143
+ When ready to connect to real backend:
144
+
145
+ ### 1. Update `/src/api/billing.ts`
146
+ Replace mock delays with real HTTP calls:
147
+ ```typescript
148
+ async getPlans(): Promise<Plan[]> {
149
+ const response = await fetch('/api/plans')
150
+ return response.json()
151
+ }
152
+ ```
153
+
154
+ ### 2. Update `/src/mocks/billing.ts`
155
+ Replace with real data from database
156
+
157
+ ### 3. Add Authentication
158
+ Wrap `/billing` route with auth guard
159
+
160
+ ## Component Structure
161
+
162
+ ### Smallest Components (Reusable building blocks)
163
+ - `FeatureDetail` - Icon + title + description
164
+ - `PricingFeatureRow` - Checkmark + label
165
+ - `InvoiceRow` - One invoice row
166
+ - `TestimonialCard` - One testimonial
167
+ - `FAQItem` - Expandable FAQ item
168
+
169
+ ### Mid-Level Components (Containers)
170
+ - `FeaturesGrid` - Multiple features
171
+ - `PricingCard` - Single pricing tier
172
+ - `InvoiceList` - Multiple invoices
173
+ - `TestimonialsSection` - Multiple testimonials
174
+ - `FAQSection` - Multiple FAQ items
175
+
176
+ ### Page Components
177
+ - `LandingPage` - Entire marketing site
178
+ - `BillingPage` - Entire billing dashboard
179
+
180
+ ## Performance Tips
181
+
182
+ 1. **Code Splitting**: Landing page and billing page are already separate (non-critical path)
183
+ 2. **Mock Delays**: Simulate real API latency (300-800ms) for realistic UX testing
184
+ 3. **Image Optimization**: Placeholder gradients avoid image loading delays
185
+ 4. **Lazy Loading**: Components are ready for React.lazy() wrapping
186
+
187
+ ## Browser Support
188
+
189
+ ✅ Chrome/Edge (latest)
190
+ ✅ Firefox (latest)
191
+ ✅ Safari (latest)
192
+ ✅ Mobile browsers (iOS Safari, Chrome Mobile)
193
+
194
+ ## Common Tasks
195
+
196
+ ### Add a New FAQ Item
197
+ ```typescript
198
+ // In FAQSection.tsx
199
+ const faqs = [
200
+ {
201
+ q: 'Your question?',
202
+ a: 'Your answer.'
203
+ },
204
+ // ...
205
+ ]
206
+ ```
207
+
208
+ ### Change Billing Renewal Date Format
209
+ ```typescript
210
+ // In CurrentPlan.tsx
211
+ const renewalDate = new Date(subscription.currentPeriodEnd).toLocaleDateString('en-US', {
212
+ year: 'numeric',
213
+ month: 'long',
214
+ day: 'numeric'
215
+ })
216
+ ```
217
+
218
+ ### Add a New Feature to Grid
219
+ ```typescript
220
+ // In FeaturesGrid.tsx
221
+ const features = [
222
+ {
223
+ icon: <YourIcon />,
224
+ title: 'Feature Name',
225
+ description: 'Feature description'
226
+ },
227
+ // ...
228
+ ]
229
+ ```
230
+
231
+ ## Troubleshooting
232
+
233
+ ### Pricing not updating after toggle
234
+ Check `PricingSection.tsx` - ensure `annual` state is passed to all `PricingCard` components
235
+
236
+ ### Usage bar colors not changing
237
+ Verify `UsageMeter.tsx` color logic:
238
+ - `< 80%`: green
239
+ - `80-95%`: amber
240
+ - `> 95%`: red
241
+
242
+ ### Mobile menu not closing
243
+ Check `MobileMenu.tsx` - ensure `onClose` callback is passed to all links
244
+
245
+ ### Images not loading
246
+ All components use CSS gradients instead of images - no image assets required
247
+
248
+ ## Next Steps
249
+
250
+ 1. **Test locally** - Run `npm run dev` and visit `/` and `/billing`
251
+ 2. **Connect API** - Replace mock calls with real API endpoints
252
+ 3. **Add authentication** - Protect `/billing` route with auth
253
+ 4. **Customize branding** - Update colors, copy, testimonials
254
+ 5. **Deploy** - Push to staging/production
255
+
256
+ ## Support
257
+
258
+ For questions or issues:
259
+ - Check `MARKETING_BILLING_PAGES.md` for detailed documentation
260
+ - Review `IMPLEMENTATION_SUMMARY.md` for architecture overview
261
+ - All components are under 100 LOC and well-commented
262
+
263
+ ---
264
+
265
+ **Total Files Created**: 38 components + 2 documentation files + 1 App.tsx update
266
+ **Total Lines of Code**: ~3,200 LOC (all components < 100 LOC each)
267
+ **Design System**: Apple HIG compliant with dark mode support
package/README.md ADDED
@@ -0,0 +1,161 @@
1
+ # AMLIQ AML Dashboard v2
2
+
3
+ A production-ready, Apple HIG-compliant AML (Anti-Money Laundering) platform dashboard built with React, TypeScript, and Tailwind CSS.
4
+
5
+ ## Features
6
+
7
+ ### Core Functionality
8
+ - **Alert Management** — Investigate sanctions match alerts with full entity details
9
+ - **Entity Screening** — Manual screening against OFAC, EU, UN, and custom lists
10
+ - **Configuration** — Threshold tuning and screening layer management
11
+ - **Analytics** — Real-time dashboards with volume trends and risk distribution
12
+ - **Audit Logging** — Complete activity trail for compliance
13
+ - **Batch Processing** — Bulk entity screening operations
14
+ - **Monitoring** — System health and task tracking
15
+
16
+ ### Design Excellence
17
+ - **Apple HIG Compliance** — Native macOS/iOS look and feel with vibrancy effects
18
+ - **Fully Responsive** — Optimized for desktop, tablet, and mobile
19
+ - **Dark Mode Only** — Premium Apple-inspired dark interface
20
+ - **Smooth Animations** — 60fps transitions and interactions
21
+ - **Accessibility** — Full keyboard navigation and semantic HTML
22
+
23
+ ## Quick Start
24
+
25
+ ### Install Dependencies
26
+ ```bash
27
+ npm install
28
+ ```
29
+
30
+ ### Development Server
31
+ ```bash
32
+ npm run dev
33
+ ```
34
+ Open http://localhost:3000
35
+
36
+ ### Production Build
37
+ ```bash
38
+ npm run build
39
+ npm run preview
40
+ ```
41
+
42
+ ## Project Structure
43
+
44
+ ```
45
+ src/
46
+ ├── components/
47
+ │ ├── layout/ # AppShell, Sidebar, Toolbar
48
+ │ ├── ui/ # Primitives: Button, Card, Badge, etc.
49
+ │ ├── data/ # Data display: ConfidenceScore, StatusBadge
50
+ │ ├── alerts/ # Alert cards and filters
51
+ │ ├── screening/ # Screening forms (expandable)
52
+ │ ├── config/ # Configuration UI (expandable)
53
+ │ └── charts/ # Recharts components
54
+ ├── pages/ # Full page components
55
+ ├── hooks/ # useApi, useMockData, useMediaQuery, etc.
56
+ ├── api/ # Fetch client and API methods
57
+ ├── types/ # TypeScript interfaces
58
+ ├── mocks/ # Mock data for development
59
+ ├── styles/ # Global CSS and design tokens
60
+ └── App.tsx # Router configuration
61
+ ```
62
+
63
+ ## Apple HIG Design System
64
+
65
+ ### Colors (Dark Mode)
66
+ - **Background**: #1C1C1E (systemBackground)
67
+ - **Secondary**: #2C2C2E (systemBackgroundSecondary)
68
+ - **Tertiary**: #3A3A3C (systemBackgroundTertiary)
69
+ - **Accents**: systemBlue (#0A84FF), systemGreen (#30D158), systemRed (#FF453A)
70
+
71
+ ### Typography
72
+ - **SF Pro Display/Text** — System font stack
73
+ - **Title**: 34px bold
74
+ - **Headline**: 17px semibold
75
+ - **Body**: 17px regular
76
+ - **Caption**: 12px regular
77
+
78
+ ### Components
79
+ All UI components follow Apple HIG guidelines:
80
+ - 44px minimum tap targets (mobile)
81
+ - Rounded corners (6px-20px)
82
+ - Vibrancy backgrounds with backdrop blur
83
+ - Subtle shadows and separators
84
+ - Smooth 0.2s transitions
85
+
86
+ ## Key Pages
87
+
88
+ | Page | Route | Purpose |
89
+ |------|-------|---------|
90
+ | Dashboard | `/` | Overview with KPIs and charts |
91
+ | Alert Queue | `/alerts` | Investigation workbench with filters |
92
+ | Alert Detail | `/alerts/:id` | Full alert investigation view |
93
+ | Screen Entity | `/screen` | Manual entity screening form |
94
+ | Configuration | `/config` | Threshold tuning UI |
95
+ | Analytics | `/analytics` | Advanced metrics and trends |
96
+ | Monitoring | `/monitoring` | System health and tasks |
97
+ | Audit Trail | `/audit` | Activity log viewer |
98
+ | Batch Jobs | `/batch` | Bulk screening operations |
99
+ | Sanctions Lists | `/lists` | List management and sync |
100
+
101
+ ## Responsive Behavior
102
+
103
+ ### Mobile (<640px)
104
+ - Bottom is handled by sidebar collapse
105
+ - Full-width stacked cards
106
+ - Touch-friendly (44px taps)
107
+ - Simplified layouts
108
+
109
+ ### Tablet (640px-1024px)
110
+ - Collapsible sidebar with toggle
111
+ - 2-column layouts
112
+ - Medium charts
113
+
114
+ ### Desktop (>1024px)
115
+ - Fixed sidebar with vibrancy
116
+ - Multi-column layouts
117
+ - Full feature set with hover states
118
+
119
+ ## API Integration
120
+
121
+ The dashboard uses mock data by default. To connect to a real API:
122
+
123
+ 1. Set `VITE_API_URL` environment variable
124
+ 2. Mock data will be replaced with real API calls
125
+ 3. All API methods are in `src/api/`
126
+
127
+ ```typescript
128
+ // Example: custom backend
129
+ VITE_API_URL=http://localhost:8080/api npm run dev
130
+ ```
131
+
132
+ ## Customization
133
+
134
+ ### Add a New Page
135
+ 1. Create component in `src/pages/YourPage.tsx`
136
+ 2. Add route in `src/App.tsx`
137
+ 3. Add navigation item in `src/components/layout/Sidebar.tsx`
138
+
139
+ ### Customize Colors
140
+ Edit `tailwind.config.js` color definitions
141
+
142
+ ### Add Charts
143
+ Use Recharts components in `src/components/charts/`
144
+
145
+ ## Performance
146
+
147
+ - Tree-shaken dependencies (React Router, Recharts)
148
+ - Code splitting by route
149
+ - Image optimization
150
+ - CSS minification
151
+ - Gzip compression ready
152
+
153
+ ## Browser Support
154
+
155
+ - Chrome/Edge 90+
156
+ - Safari 14+
157
+ - Firefox 88+
158
+
159
+ ## License
160
+
161
+ Proprietary - AMLIQ Platform