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
@@ -0,0 +1 @@
1
+ import{u as x,r,j as t}from"./index-CfdYcqRM.js";import{P as h}from"./PageHeader-BObHFn0i.js";const p="https://api.amliq.finance";function j(){const{t:a}=x("admin"),[e,n]=r.useState(null),[s,i]=r.useState(null),[o,u]=r.useState("");return r.useEffect(()=>{Promise.all([fetch(`${p}/health`).then(l=>l.json()),fetch(`${p}/ready`).then(l=>l.json())]).then(([l,d])=>{n(l.data??l??null),i(d.data??d??null)}).catch(()=>u(a("health.fetch_error")))},[]),o?t.jsx("p",{className:"p-xl text-apple-red sf-body",children:o}):t.jsxs("div",{children:[t.jsx(h,{title:a("health.title")}),t.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-lg",children:[t.jsx(c,{title:a("health.api_status"),value:(e==null?void 0:e.status)??"loading",ok:(e==null?void 0:e.status)==="healthy"}),t.jsx(c,{title:a("health.database"),value:(s==null?void 0:s.database)??"loading",ok:(s==null?void 0:s.database)==="connected"}),t.jsx(c,{title:a("health.version"),value:(e==null?void 0:e.version)??"-",ok:!0})]})]})}function c({title:a,value:e,ok:n}){const s=n?"text-apple-green":"text-apple-red",i=n?"bg-apple-green/10":"bg-apple-red/10";return t.jsxs("div",{className:`card-vibrancy p-xl ${i}`,children:[t.jsx("p",{className:"sf-caption mb-xs",children:a}),t.jsx("p",{className:`sf-headline text-xl ${s}`,children:e})]})}export{j as SystemHealth,j as default};
@@ -0,0 +1,3 @@
1
+ import{r as n,b as i,j as e,L as u,Y as g,C as j,e as f}from"./index-CfdYcqRM.js";import{P as b}from"./PageHeader-BObHFn0i.js";import{B as N}from"./Badge-B9VFkofy.js";import{X as y}from"./x-circle-DLGKvijE.js";import{L as k}from"./loader-B9_dNihg.js";function _(){const[s,l]=n.useState([]),[r,t]=n.useState(!0),[c,d]=n.useState({enabled:!1}),[o,p]=n.useState(!1);n.useEffect(()=>{i.get("/tasks?limit=50").then(a=>l((a==null?void 0:a.tasks)??[])).catch(()=>{}).finally(()=>t(!1)),i.get("/tasks/alerts").then(a=>{a&&d(a)}).catch(()=>{})},[]);const h=async()=>{await i.put("/tasks/alerts",c),p(!1)};return r?e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(u,{})}):e.jsxs("div",{children:[e.jsx(b,{title:"Task History",description:"View scheduled task outcomes and set failure alerts"}),e.jsx("div",{className:"flex justify-end mb-lg",children:e.jsxs("button",{onClick:()=>p(!o),className:`flex items-center gap-sm px-md py-sm rounded-apple-lg
2
+ bg-white/10 hover:bg-white/15 text-sm cursor-pointer`,children:[e.jsx(g,{className:"w-4 h-4"}),"Alert Settings"]})}),o&&e.jsx(w,{cfg:c,onChange:d,onSave:h}),e.jsx("div",{className:"hidden md:block glass-panel rounded-apple-lg overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-left text-apple-label-secondary border-b border-white/10",children:[e.jsx("th",{className:"px-lg py-md",children:"Task"}),e.jsx("th",{className:"px-lg py-md",children:"Status"}),e.jsx("th",{className:"px-lg py-md",children:"Duration"}),e.jsx("th",{className:"px-lg py-md",children:"Started"})]})}),e.jsx("tbody",{children:s.map(a=>e.jsxs("tr",{className:"border-b border-white/5 hover:bg-white/5",children:[e.jsx("td",{className:"px-lg py-md",children:a.task_name}),e.jsx("td",{className:"px-lg py-md",children:e.jsx(m,{status:a.status})}),e.jsx("td",{className:"px-lg py-md",children:x(a.duration_ms)}),e.jsx("td",{className:"px-lg py-md text-xs text-apple-label-secondary",children:new Date(a.started_at).toLocaleString()})]},a.id))})]})}),e.jsx("div",{className:"md:hidden space-y-sm",children:s.map(a=>e.jsxs("div",{className:"glass-panel rounded-apple-lg p-lg",children:[e.jsxs("div",{className:"flex items-center justify-between mb-xs",children:[e.jsx("span",{className:"font-medium text-sm",children:a.task_name}),e.jsx(m,{status:a.status})]}),e.jsxs("span",{className:"sf-caption text-apple-label-secondary",children:[x(a.duration_ms)," · ",new Date(a.started_at).toLocaleString()]})]},a.id))}),s.length===0&&e.jsx("p",{className:"text-center py-xl text-apple-label-tertiary sf-body",children:"No task history available"})]})}function w({cfg:s,onChange:l,onSave:r}){return e.jsxs("div",{className:"glass-panel rounded-apple-lg p-lg mb-lg space-y-md",children:[e.jsx("h3",{className:"sf-headline",children:"Failure Alert Settings"}),e.jsxs("label",{className:"flex items-center gap-sm cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:s.enabled,onChange:t=>l({...s,enabled:t.target.checked}),className:"accent-apple-blue"}),e.jsx("span",{className:"text-sm",children:"Enable failure alerts"})]}),e.jsx("input",{type:"email",placeholder:"Email address",value:s.email??"",className:"input-field w-full",onChange:t=>l({...s,email:t.target.value})}),e.jsx("input",{type:"text",placeholder:"WhatsApp number (international)",value:s.whatsapp??"",className:"input-field w-full",onChange:t=>l({...s,whatsapp:t.target.value})}),e.jsx("input",{type:"url",placeholder:"Slack webhook URL",value:s.slack_webhook??"",className:"input-field w-full",onChange:t=>l({...s,slack_webhook:t.target.value})}),e.jsx("button",{onClick:r,className:`px-lg py-sm rounded-apple-lg bg-apple-blue text-white
3
+ text-sm font-medium hover:bg-apple-blue/80 cursor-pointer`,children:"Save Alert Settings"})]})}function m({status:s}){const l={running:{c:"blue",I:k},success:{c:"green",I:f},failed:{c:"red",I:y},canceled:{c:"gray",I:j}},{c:r,I:t}=l[s]??l.canceled;return e.jsxs(N,{size:"sm",color:r,children:[e.jsx(t,{className:"w-3 h-3 mr-1 inline"}),s]})}function x(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"—"}export{_ as TaskHistory,_ as default};
@@ -0,0 +1 @@
1
+ import{u as R,r,b as d,j as a,B as E,L as C}from"./index-CfdYcqRM.js";import{P as S}from"./PageHeader-BObHFn0i.js";import{C as p}from"./Card-Cw-T_-oU.js";import{B as I}from"./Badge-B9VFkofy.js";import{E as D}from"./EmptyState-Do0xJAT9.js";function A(){const{t}=R("team"),[l,u]=r.useState([]),[n,s]=r.useState(!0),[x,i]=r.useState(""),[c,f]=r.useState(""),[h,b]=r.useState("analyst"),[g,v]=r.useState(!1),o=r.useCallback(async()=>{s(!0);try{const e=await d.get("/team");u((e==null?void 0:e.members)??[])}catch(e){i(e instanceof Error?e.message:"Failed to load team")}finally{s(!1)}},[]);r.useEffect(()=>{o()},[o]);const y=async()=>{if(c.trim()){v(!0),i("");try{await d.post("/team/invite",{email:c,role:h}),f(""),o()}catch(e){i(e instanceof Error?e.message:"Invite failed")}finally{v(!1)}}},w=async e=>{if(confirm("Remove this team member?"))try{await d.del(`/team/${e}`),o()}catch(m){i(m instanceof Error?m.message:"Remove failed")}},N=async(e,m)=>{try{await d.put(`/team/${e}/role`,{role:m}),o()}catch(j){i(j instanceof Error?j.message:"Role change failed")}};return a.jsxs("div",{children:[a.jsx(S,{title:t("title"),description:"Manage your team members and roles"}),a.jsx(p,{className:"mb-lg",children:a.jsxs("div",{className:"flex flex-col md:flex-row gap-sm",children:[a.jsx("input",{placeholder:t("email_placeholder"),value:c,"aria-label":t("email_placeholder"),onChange:e=>f(e.target.value),className:"input-field flex-1"}),a.jsx("select",{value:h,onChange:e=>b(e.target.value),"aria-label":t("roles.label"),className:"input-field",children:["admin","analyst","auditor","viewer"].map(e=>a.jsx("option",{value:e,children:t(`roles.${e}`)},e))}),a.jsx(E,{onClick:y,disabled:g||!c.trim(),children:g?"Inviting...":t("invite")})]})}),x&&a.jsx(p,{className:"mb-lg",children:a.jsx("p",{role:"alert",className:"text-apple-red sf-body",children:x})}),n&&a.jsx(C,{}),!n&&l.length===0&&a.jsx(D,{title:t("no_members")}),!n&&l.length>0&&a.jsx(p,{children:l.map(e=>a.jsx(k,{member:e,onRemove:w,onChangeRole:N},e.ID))})]})}function k({member:t,onRemove:l,onChangeRole:u}){const n={admin:"red",analyst:"blue",auditor:"orange",viewer:"green"};return a.jsxs("div",{className:"px-lg py-md flex flex-col sm:flex-row sm:items-center justify-between border-b border-white/[0.04] last:border-0 gap-sm",children:[a.jsxs("div",{className:"min-w-0",children:[a.jsx("p",{className:"sf-body truncate",children:t.Email}),a.jsx("p",{className:"sf-caption text-white/40",children:new Date(t.ActivatedAt).toLocaleDateString()})]}),a.jsxs("div",{className:"flex items-center gap-md shrink-0",children:[a.jsx("select",{value:t.Role,onChange:s=>u(t.ID,s.target.value),className:"bg-transparent text-sm text-white/80 cursor-pointer",children:["admin","analyst","auditor","viewer"].map(s=>a.jsx("option",{value:s,children:s},s))}),a.jsx(I,{color:n[t.Role]??"blue",size:"sm",children:t.Role}),a.jsx("button",{onClick:()=>l(t.ID),className:"text-apple-red/60 hover:text-apple-red text-sm cursor-pointer",children:"Remove"})]})]})}export{A as Team,A as default};
@@ -0,0 +1 @@
1
+ import{j as e,u as h,i as m,r as l,b as r}from"./index-CfdYcqRM.js";import{P as u}from"./PageHeader-BObHFn0i.js";function p({label:a,count:s,t}){return e.jsxs("div",{className:"card-vibrancy p-xl",children:[e.jsx("h2",{className:"sf-headline mb-md",children:a}),e.jsx("p",{className:"sf-body",children:t("tenant_detail.total_screenings",{count:s})})]})}function x({threshold:a,setThreshold:s,onSave:t,t:n}){return e.jsxs("div",{className:"card-vibrancy p-xl",children:[e.jsx("h2",{className:"sf-headline mb-md",children:n("tenant_detail.config_override")}),e.jsxs("div",{className:"flex items-center gap-md",children:[e.jsx("label",{htmlFor:"threshold-input",className:"sf-body",children:n("tenant_detail.match_threshold")}),e.jsx("input",{id:"threshold-input",type:"number",min:"50",max:"99",value:a,"aria-label":n("tenant_detail.match_threshold"),onChange:i=>s(i.target.value),className:"input-field w-20"}),e.jsx("button",{onClick:t,className:"button-primary","aria-label":n("tenant_detail.save"),children:n("tenant_detail.save")})]})]})}function j(){const{t:a}=h("admin"),{id:s}=m(),[t,n]=l.useState(null),[i,d]=l.useState("75");l.useEffect(()=>{r.get(`/admin/tenants/${s}`).then(o=>n(o)).catch(()=>n(null))},[s]);const c=()=>{r.put(`/admin/tenants/${s}/config`,{match_threshold:parseFloat(i)/100})};return t?e.jsxs("div",{children:[e.jsx(u,{title:t.tenant.DisplayName,description:t.tenant.ID}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-lg",children:[e.jsx(p,{label:a("tenant_detail.screening_history"),count:t.screening_count,t:a}),e.jsx(x,{threshold:i,setThreshold:d,onSave:c,t:a})]})]}):e.jsx("p",{className:"sf-body p-xl",role:"status","aria-live":"polite",children:a("tenant_detail.loading")})}export{j as TenantDetail,j as default};
@@ -0,0 +1,2 @@
1
+ import{u as m,r as t,g as h,b as p,j as s}from"./index-CfdYcqRM.js";import{P as x}from"./PageHeader-BObHFn0i.js";import{S as u}from"./SearchField-CulFKdiI.js";function v(){const{t:a}=m("admin"),[l,n]=t.useState([]),[i,o]=t.useState(""),d=h();t.useEffect(()=>{p.get("/admin/tenants").then(e=>n((e==null?void 0:e.tenants)??[])).catch(()=>n([]))},[]);const r=i.toLowerCase(),c=l.filter(e=>(e.name??"").toLowerCase().includes(r)||(e.display_name??"").toLowerCase().includes(r));return s.jsxs("div",{children:[s.jsx(x,{title:a("tenants.title")}),s.jsx("div",{className:"mb-lg",children:s.jsx(u,{placeholder:a("tenants.search_placeholder"),value:i,onChange:o})}),s.jsxs("div",{className:"card-vibrancy divide-y divide-white/10",children:[c.map(e=>s.jsxs("button",{onClick:()=>d(`/admin/tenants/${e.id}`),className:`w-full text-left px-lg py-md flex items-center
2
+ justify-between hover:bg-white/5 transition-colors cursor-pointer`,children:[s.jsx("span",{className:"sf-headline",children:e.display_name||e.name}),s.jsx("span",{className:"sf-caption",children:e.id})]},e.id)),c.length===0&&s.jsx("p",{className:"sf-caption text-center py-xl",children:a("tenants.search_placeholder")})]})]})}export{v as AdminTenants,v as default};
@@ -0,0 +1 @@
1
+ import{u as i,j as e}from"./index-CfdYcqRM.js";function c(){const{t}=i("legal"),l=t("terms.sections",{returnObjects:!0});return e.jsxs("article",{className:"max-w-3xl mx-auto px-6 py-20",children:[e.jsx("h1",{className:"text-4xl font-bold text-white mb-2",children:t("terms.title")}),e.jsx("p",{className:"text-sm text-zinc-400 mb-12",children:t("terms.last_updated")}),e.jsx("div",{className:"space-y-8 text-zinc-400 leading-relaxed",children:l.map((s,a)=>e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold text-white mb-3",children:s.title}),e.jsx("p",{children:s.body})]},a))})]})}export{c as default};
@@ -0,0 +1,14 @@
1
+ import{c as p,g as b,j as e,S as x,_ as h,Z as j,u as y,r as l,b as d,L as N,C as v}from"./index-CfdYcqRM.js";import{P as w}from"./PageHeader-BObHFn0i.js";import{B as k}from"./Badge-B9VFkofy.js";import{C as u}from"./code-DIJRWFVv.js";import{A as c}from"./alert-triangle-YCFVm7B_.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const _=p("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
7
+ * @license lucide-react v0.294.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const S=p("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]),A=[{icon:u,title:"Get your API key",desc:"Generate a key from Settings > API Keys"},{icon:h,title:"Configure webhook",desc:"Point your payment system to our endpoint"},{icon:j,title:"Screen in real-time",desc:"Every transaction is screened automatically"}];function C(){const s=b();return e.jsxs("div",{className:"rounded-apple-lg border border-white/[0.08] bg-gradient-to-br from-apple-blue/[0.06] to-transparent p-xl text-center",children:[e.jsx("div",{className:"inline-flex items-center justify-center w-14 h-14 rounded-full bg-apple-blue/10 mb-lg",children:e.jsx(x,{className:"w-7 h-7 text-apple-blue"})}),e.jsx("h3",{className:"text-lg font-semibold text-white mb-sm",children:"Connect your payment system"}),e.jsx("p",{className:"sf-caption max-w-md mx-auto mb-xl",children:"Attach a webhook to screen every transaction in real-time against global sanctions lists. Get alerts within milliseconds."}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-lg mb-xl max-w-2xl mx-auto",children:A.map((t,a)=>e.jsxs("div",{className:"flex flex-col items-center gap-sm",children:[e.jsx("div",{className:"flex items-center justify-center w-10 h-10 rounded-apple-md bg-white/[0.06]",children:e.jsx(t.icon,{className:"w-5 h-5 text-apple-blue"})}),e.jsx("p",{className:"text-sm font-medium text-white",children:t.title}),e.jsx("p",{className:"text-xs text-apple-label-secondary",children:t.desc})]},a))}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-md",children:[e.jsxs("button",{onClick:()=>s("/webhooks"),className:`flex items-center gap-sm px-xl py-md bg-apple-blue hover:bg-apple-blue/80
12
+ text-white text-sm font-semibold rounded-apple-md transition-colors cursor-pointer`,children:[e.jsx(h,{className:"w-4 h-4"}),"Set Up Webhook",e.jsx(_,{className:"w-4 h-4"})]}),e.jsxs("button",{onClick:()=>s("/api-keys"),className:`flex items-center gap-sm px-xl py-md border border-white/10
13
+ hover:bg-white/5 text-white text-sm font-medium rounded-apple-md
14
+ transition-colors cursor-pointer`,children:[e.jsx(u,{className:"w-4 h-4"}),"Get API Key"]})]}),e.jsx("div",{className:"mt-lg",children:e.jsx("code",{className:"text-xs text-apple-label-tertiary bg-white/[0.04] px-md py-sm rounded-apple",children:"POST https://api.amliq.finance/api/v1/transactions/screen"})})]})}const g={high_value:S,rapid_movement:v,structuring:x,high_risk_country:c,unusual_pattern:c};function z(){const{t:s}=y("compliance"),[t,a]=l.useState([]),[n,i]=l.useState({}),[o,f]=l.useState(!0);l.useEffect(()=>{Promise.all([d.get("/transactions/alerts").then(r=>a((r==null?void 0:r.alerts)??[])).catch(()=>a([])),d.get("/transactions/alerts/summary").then(r=>i(r??{})).catch(()=>i({}))]).finally(()=>f(!1))},[]);const m={high_value:s("transactions.high_value"),rapid_movement:s("transactions.rapid_movement"),structuring:s("transactions.structuring"),high_risk_country:s("transactions.high_risk_country"),unusual_pattern:s("transactions.unusual_pattern")};return o?e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(N,{})}):e.jsxs("div",{children:[e.jsx(w,{title:s("transactions.title"),description:"Real-time transaction alert monitoring"}),e.jsx(P,{summary:n,typeLabels:m}),e.jsx("h2",{className:"sf-headline mb-md",children:s("transactions.recent_alerts")}),e.jsxs("div",{className:"space-y-sm",children:[t.map(r=>e.jsx(T,{alert:r,typeLabels:m},r.id)),t.length===0&&e.jsx(C,{})]})]})}function P({summary:s,typeLabels:t}){const a=Object.entries(s);return a.length===0?null:e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-sm mb-xl",children:a.map(([n,i])=>{const o=g[n]??c;return e.jsxs("div",{className:"card-vibrancy p-md",children:[e.jsxs("div",{className:"flex items-center gap-xs mb-xs",children:[e.jsx(o,{className:"w-4 h-4 text-apple-label-secondary flex-shrink-0"}),e.jsx("p",{className:"sf-caption text-apple-label-secondary truncate",children:t[n]||n})]}),e.jsx("p",{className:"text-2xl font-bold",children:i})]},n)})})}function T({alert:s,typeLabels:t}){const a=g[s.alert_type]??c,n=new Date(s.created_at).toLocaleString();return e.jsx("div",{className:"card-vibrancy p-md",children:e.jsxs("div",{className:"flex items-start gap-md",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx(a,{className:"w-5 h-5 text-apple-orange"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"sf-body font-medium text-white mb-xs",children:s.description}),e.jsxs("div",{className:"flex flex-wrap items-center gap-sm",children:[e.jsx(k,{size:"sm",color:"orange",children:t[s.alert_type]??s.alert_type}),e.jsxs("span",{className:"sf-caption text-apple-label-tertiary",children:["TXN ",s.transaction_id]}),e.jsx("span",{className:"sf-caption text-apple-label-tertiary hidden sm:inline",children:n})]})]}),e.jsx(I,{severity:s.severity})]})})}function I({severity:s}){const t=s>=8?"bg-apple-red/20 text-apple-red":s>=5?"bg-apple-orange/20 text-apple-orange":"bg-apple-yellow/20 text-apple-yellow";return e.jsxs("span",{className:`flex-shrink-0 px-sm py-xs text-xs font-semibold rounded-full ${t}`,children:[s,"/10"]})}export{z as TransactionMonitoring};
@@ -0,0 +1 @@
1
+ import{r as d,j as e,B as j,L as f,b as v}from"./index-CfdYcqRM.js";import{P as _}from"./PageHeader-BObHFn0i.js";import{C as o}from"./Card-Cw-T_-oU.js";import{B as m}from"./Badge-B9VFkofy.js";function R(){const[s,t]=d.useState({txn_id:"",sender_name:"",sender_country:"",receiver_name:"",receiver_country:"",amount_cents:0,currency:"USD"}),[a,r]=d.useState(null),[i,l]=d.useState(!1),[p,x]=d.useState(""),c=(n,g)=>t({...s,[n]:g}),h=async()=>{if(s.sender_name.trim()){l(!0),x(""),r(null);try{const n=await v.post("/txn/screen",s);r(n)}catch(n){x(n instanceof Error?n.message:"Screening failed")}finally{l(!1)}}};return e.jsxs("div",{children:[e.jsx(_,{title:"Transaction Screening",description:"Screen payment sender & receiver against sanctions + FATF lists"}),e.jsxs(o,{className:"mb-lg",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-md mb-md",children:[e.jsx("input",{placeholder:"Sender name *",value:s.sender_name,onChange:n=>c("sender_name",n.target.value),className:"input-field"}),e.jsx("input",{placeholder:"Sender country (e.g. IR)",value:s.sender_country,onChange:n=>c("sender_country",n.target.value),className:"input-field"}),e.jsx("input",{placeholder:"Receiver name",value:s.receiver_name,onChange:n=>c("receiver_name",n.target.value),className:"input-field"}),e.jsx("input",{placeholder:"Receiver country",value:s.receiver_country,onChange:n=>c("receiver_country",n.target.value),className:"input-field"}),e.jsx("input",{placeholder:"Amount (cents)",type:"number",value:s.amount_cents||"",onChange:n=>c("amount_cents",+n.target.value),className:"input-field"}),e.jsx("select",{value:s.currency,onChange:n=>c("currency",n.target.value),className:"input-field",children:["USD","EUR","GBP","ILS","CHF","JPY"].map(n=>e.jsx("option",{children:n},n))})]}),e.jsx(j,{onClick:h,disabled:i||!s.sender_name.trim(),className:"w-full",children:i?"Screening...":"Screen Transaction"})]}),i&&e.jsx(f,{}),p&&e.jsx(o,{children:e.jsx("p",{role:"alert",className:"text-apple-red sf-body",children:p})}),a&&e.jsx(N,{result:a})]})}function N({result:s}){var a,r,i;const t=s.decision==="CLEAR";return e.jsxs(o,{children:[e.jsxs("div",{className:"flex items-center justify-between mb-lg",children:[e.jsx("span",{className:`text-2xl font-bold ${t?"text-apple-green":"text-apple-red"}`,children:s.decision}),e.jsxs("span",{className:"sf-caption text-white/40",children:[s.processing_ms,"ms"]})]}),((a=s.risk_flags)==null?void 0:a.length)>0&&e.jsx("div",{className:"flex flex-wrap gap-sm mb-lg",children:s.risk_flags.map(l=>e.jsx(m,{color:"red",size:"sm",children:l},l))}),s.case_id&&e.jsx("div",{className:"p-md bg-apple-orange/10 border border-apple-orange/20 rounded-apple-md mb-lg",children:e.jsxs("p",{className:"sf-caption text-apple-orange",children:["Case auto-created: ",e.jsx("strong",{children:s.case_id})]})}),((r=s.sender_hits)==null?void 0:r.length)>0&&e.jsx(u,{title:"Sender Matches",hits:s.sender_hits}),((i=s.receiver_hits)==null?void 0:i.length)>0&&e.jsx(u,{title:"Receiver Matches",hits:s.receiver_hits}),t&&e.jsxs("div",{className:"text-center py-lg",children:[e.jsx("span",{className:"text-3xl",children:"✓"}),e.jsx("p",{className:"sf-headline text-apple-green mt-sm",children:"Transaction cleared"})]})]})}function u({title:s,hits:t}){return e.jsxs("div",{className:"mb-lg",children:[e.jsx("p",{className:"sf-caption text-white/50 mb-sm",children:s}),t.map((a,r)=>e.jsxs("div",{className:"p-md bg-apple-red/5 border border-apple-red/10 rounded-apple-md mb-sm",children:[e.jsx("p",{className:"sf-headline",children:a.entity_name}),e.jsxs("div",{className:"flex gap-sm mt-xs",children:[e.jsx(m,{color:"red",size:"sm",children:a.list_id}),e.jsxs(m,{color:"blue",size:"sm",children:[Math.round((a.confidence??0)*100),"%"]})]})]},r))]})}export{R as TxnScreening,R as default};
@@ -0,0 +1 @@
1
+ import{u as o,i as x,r as l,b as p,j as e}from"./index-CfdYcqRM.js";function d(){const{t}=o("compliance"),{id:a}=x(),[c,n]=l.useState([]),[i,r]=l.useState(0);return l.useEffect(()=>{a&&p.get(`/ubo/${a}`).then(s=>{n((s==null?void 0:s.owners)??[]),r((s==null?void 0:s.total_ownership_pct)??0)}).catch(()=>{n([]),r(0)})},[a]),e.jsxs("div",{className:"px-md py-lg sm:p-8 max-w-4xl mx-auto",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-semibold mb-2",children:t("ubo.title")}),e.jsxs("p",{className:"text-apple-label-secondary mb-6",children:[t("ubo.organization")," ",a]}),e.jsxs("div",{className:"card-vibrancy p-6 mb-4",children:[e.jsxs("div",{className:"flex justify-between items-center mb-4",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:t("ubo.total_identified")}),e.jsxs("span",{className:"text-lg font-bold",children:[i.toFixed(1),"%"]})]}),e.jsx("div",{className:"w-full bg-apple-bg-tertiary rounded-full h-3 mb-6",children:e.jsx("div",{className:"bg-apple-blue h-3 rounded-full",style:{width:`${Math.min(i,100)}%`}})}),c.map(s=>e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between py-3 border-b border-white/10 gap-xs",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:s.owner_name}),e.jsxs("p",{className:"text-xs text-apple-label-secondary",children:[s.nationality," ",s.is_direct_owner?t("ubo.direct"):t("ubo.indirect")]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[s.is_pep&&e.jsx("span",{className:"text-xs px-2 py-0.5 bg-apple-orange/20 text-apple-orange rounded",children:t("ubo.pep_badge")}),e.jsxs("span",{className:"font-mono text-sm",children:[s.ownership_pct,"%"]})]})]},s.id))]})]})}export{d as UBOChain};
@@ -0,0 +1 @@
1
+ import{u as p,r as t,b as f,j as e,L as j}from"./index-CfdYcqRM.js";import{P as u}from"./PageHeader-BObHFn0i.js";import{B as c}from"./Badge-B9VFkofy.js";import{S as g}from"./SearchField-CulFKdiI.js";const o={admin:"red",analyst:"blue",auditor:"orange",viewer:"gray"};function S(){const{t:s}=p("platform"),[r,a]=t.useState([]),[n,m]=t.useState(""),[x,h]=t.useState(!0);if(t.useEffect(()=>{f.get("/platform/users").then(l=>a((l==null?void 0:l.users)??[])).catch(()=>a([])).finally(()=>h(!1))},[]),x)return e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(j,{})});const d=n.toLowerCase(),i=r.filter(l=>(l.email??"").toLowerCase().includes(d)||(l.name??"").toLowerCase().includes(d));return e.jsxs("div",{children:[e.jsx(u,{title:s("users.title"),description:`${r.length} users`}),e.jsx("div",{className:"mb-lg",children:e.jsx(g,{placeholder:s("users.search_placeholder"),value:n,onChange:m})}),e.jsx("div",{className:"hidden md:block",children:e.jsx(b,{users:i,t:s})}),e.jsx("div",{className:"md:hidden space-y-sm",children:i.map(l=>e.jsx(N,{user:l},l.id))}),i.length===0&&e.jsx("p",{className:"text-center py-xl text-apple-label-tertiary sf-body",children:"No users found"})]})}function b({users:s,t:r}){return e.jsx("div",{className:"glass-panel rounded-apple-lg overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"text-left text-apple-label-secondary border-b border-white/10",children:[e.jsx("th",{className:"px-lg py-md",children:r("users.email")}),e.jsx("th",{className:"px-lg py-md",children:"Name"}),e.jsx("th",{className:"px-lg py-md",children:r("users.role")})]})}),e.jsx("tbody",{children:s.map(a=>e.jsxs("tr",{className:"border-b border-white/5 hover:bg-white/5 transition-colors",children:[e.jsx("td",{className:"px-lg py-md sf-body text-white",children:a.email}),e.jsx("td",{className:"px-lg py-md sf-body text-white",children:a.name??"—"}),e.jsx("td",{className:"px-lg py-md",children:e.jsx(c,{size:"sm",color:o[a.role]??"gray",children:a.role})})]},a.id))})]})})}function N({user:s}){const r=(s.name??s.email).slice(0,2).toUpperCase();return e.jsx("div",{className:"glass-panel rounded-apple-lg p-lg",children:e.jsxs("div",{className:"flex items-center gap-md",children:[e.jsx("div",{className:"flex-shrink-0 w-10 h-10 rounded-full bg-apple-blue/20 flex items-center justify-center",children:e.jsx("span",{className:"text-sm font-semibold text-apple-blue",children:r})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"sf-body text-white font-medium truncate",children:s.name??"—"}),e.jsx("p",{className:"sf-caption text-apple-label-secondary truncate",children:s.email})]}),e.jsx(c,{size:"sm",color:o[s.role]??"gray",children:s.role})]})})}export{S as default};
@@ -0,0 +1 @@
1
+ import{r as a,b as x,j as s,B as h,L as g}from"./index-CfdYcqRM.js";import{P as j}from"./PageHeader-BObHFn0i.js";import{C as f}from"./Card-Cw-T_-oU.js";import{B as w}from"./Badge-B9VFkofy.js";import{E as v}from"./EmptyState-Do0xJAT9.js";const k=["screening.completed","screening.match_found","alert.created","alert.resolved","case.created","case.escalated","list.updated","entity.added","entity.removed"];function B(){const[i,p]=a.useState([]),[c,o]=a.useState(!0),[d,t]=a.useState(""),[m,n]=a.useState(!1),r=a.useCallback(async()=>{try{const e=await x.get("/webhooks/subscriptions");p((e==null?void 0:e.subscriptions)??[])}catch(e){t(e instanceof Error?e.message:"Failed to load")}finally{o(!1)}},[]);a.useEffect(()=>{r()},[r]);const u=async e=>{if(confirm("Delete this webhook?"))try{await x.del(`/webhooks/subscriptions/${e}`),r()}catch(l){t(l instanceof Error?l.message:"Delete failed")}},b=async()=>{try{await x.post("/webhooks/test",{}),alert("Test webhook sent!")}catch(e){t(e instanceof Error?e.message:"Test failed")}};return s.jsxs("div",{children:[s.jsx(j,{title:"Webhooks",description:"Receive real-time notifications when events occur"}),s.jsx(f,{className:"mb-lg",children:s.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-md",children:[s.jsx("p",{className:"sf-body text-white/60",children:"Get notified on screening matches, alerts, and list updates"}),s.jsxs("div",{className:"flex gap-sm w-full sm:w-auto",children:[s.jsx(h,{variant:"secondary",onClick:b,className:"flex-1 sm:flex-none",children:"Test"}),s.jsx(h,{onClick:()=>n(!0),className:"flex-1 sm:flex-none",children:"Add Webhook"})]})]})}),m&&s.jsx(y,{onSave:()=>{n(!1),r()},onCancel:()=>n(!1),setError:t}),d&&s.jsx(f,{className:"mb-lg",children:s.jsx("p",{role:"alert",className:"text-apple-red sf-body",children:d})}),c&&s.jsx(g,{}),!c&&i.length===0&&!m&&s.jsx(v,{title:"No webhooks configured"}),!c&&i.length>0&&s.jsx(f,{children:i.map(e=>s.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between px-lg py-md border-b border-white/[0.04] last:border-0 gap-sm",children:[s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("code",{className:"text-sm text-white/80 break-all block",children:e.url}),s.jsx("div",{className:"flex gap-xs mt-xs flex-wrap",children:(e.events??[]).map(l=>s.jsx(w,{size:"sm",color:"blue",children:l},l))})]}),s.jsx("button",{onClick:()=>u(e.id),className:"text-apple-red/60 hover:text-apple-red text-sm cursor-pointer self-end sm:self-center shrink-0",children:"Delete"})]},e.id))})]})}function y({onSave:i,onCancel:p,setError:c}){const[o,d]=a.useState(""),[t,m]=a.useState(["screening.match_found"]),[n,r]=a.useState(!1),u=e=>m(t.includes(e)?t.filter(l=>l!==e):[...t,e]),b=async()=>{if(o.trim()){r(!0);try{await x.post("/webhooks/subscribe",{url:o,events:t}),i()}catch(e){c(e instanceof Error?e.message:"Save failed")}finally{r(!1)}}};return s.jsxs(f,{className:"mb-lg",children:[s.jsx("input",{value:o,onChange:e=>d(e.target.value),placeholder:"https://your-server.com/webhook",className:"input-field w-full mb-md"}),s.jsx("p",{className:"sf-caption text-white/50 mb-sm",children:"Events:"}),s.jsx("div",{className:"flex flex-wrap gap-sm mb-lg",children:k.map(e=>s.jsx("button",{onClick:()=>u(e),className:`px-md py-xs rounded-full text-xs cursor-pointer transition-colors ${t.includes(e)?"bg-apple-blue text-white":"bg-white/[0.04] text-white/50"}`,children:e},e))}),s.jsxs("div",{className:"flex gap-sm",children:[s.jsx(h,{onClick:b,disabled:n||!o.trim(),children:n?"Saving...":"Save"}),s.jsx(h,{variant:"secondary",onClick:p,children:"Cancel"})]})]})}export{B as Webhooks,B as default};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const t=e("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);export{t as A};
@@ -0,0 +1 @@
1
+ import{j as a,b as o}from"./index-CfdYcqRM.js";import{B as n}from"./Badge-B9VFkofy.js";function c({status:e,priority:r,type:t="status"}){if(t==="status"&&e){const s={open:"blue",investigating:"orange",resolved:"green",archived:"gray"},i={open:"Open",investigating:"Investigating",resolved:"Resolved",archived:"Archived"};return a.jsx(n,{color:s[e],children:i[e]})}if(t==="priority"&&r){const s={critical:"red",high:"orange",medium:"orange",low:"gray"};return a.jsx(n,{color:s[r],children:r.toUpperCase()})}return null}const d={list:()=>o.get("/alerts"),get:e=>o.get(`/alerts/${e}`),resolve:(e,r)=>o.put(`/alerts/${e}/resolve`,r)};export{c as S,d as a};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const t=e("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);export{t as A};
@@ -0,0 +1,6 @@
1
+ import{c}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const o=c("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);export{o as C};
@@ -0,0 +1,6 @@
1
+ import{c}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const r=c("CheckCircle2",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);export{r as C};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const t=e("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);export{t as C};
@@ -0,0 +1,6 @@
1
+ import{c as a}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const t=a("Fingerprint",[["path",{d:"M2 12C2 6.5 6.5 2 12 2a10 10 0 0 1 8 4",key:"1jc9o5"}],["path",{d:"M5 19.5C5.5 18 6 15 6 12c0-.7.12-1.37.34-2",key:"1mxgy1"}],["path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02",key:"ptglia"}],["path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4",key:"1nerag"}],["path",{d:"M8.65 22c.21-.66.45-1.32.57-2",key:"13wd9y"}],["path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88",key:"o46ks0"}],["path",{d:"M2 16h.01",key:"1gqxmh"}],["path",{d:"M21.8 16c.2-2 .131-5.354 0-6",key:"drycrb"}],["path",{d:"M9 6.8a6 6 0 0 1 9 5.2c0 .47 0 1.17-.02 2",key:"1fgabc"}]]);export{t as F};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-CfdYcqRM.js";/**
2
+ * @license lucide-react v0.294.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const c=e("Flag",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);export{c as F};