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.
- package/.env.example +3 -0
- package/.env.production +1 -0
- package/Dockerfile +26 -0
- package/QUICK_START.md +267 -0
- package/README.md +161 -0
- package/TESTING_GUIDE.md +322 -0
- package/dist/.well-known/ai-plugin.json +15 -0
- package/dist/_headers +8 -0
- package/dist/_redirects +1 -0
- package/dist/assets/APIKeys-BvwFauIs.js +6 -0
- package/dist/assets/APIKeys-DaMSBZQL.js +1 -0
- package/dist/assets/AdverseMedia-DckXfMzS.js +4 -0
- package/dist/assets/AlertDetailPage-Bc2_zwu_.js +1 -0
- package/dist/assets/AlertQueue-DFtBiRoM.js +8 -0
- package/dist/assets/Analytics-DtruB5lQ.js +1 -0
- package/dist/assets/AuditTrail-BK68ePu0.js +1 -0
- package/dist/assets/AuthDivider-gRHEt7gx.js +1 -0
- package/dist/assets/Badge-B9VFkofy.js +1 -0
- package/dist/assets/BatchJobs-Bz6KFnXD.js +6 -0
- package/dist/assets/BillingPage-R9nQ5nFb.js +11 -0
- package/dist/assets/Card-Cw-T_-oU.js +1 -0
- package/dist/assets/CaseDetail-DYs7Zg_y.js +7 -0
- package/dist/assets/CaseManagement-B1Q4Dp1Y.js +1 -0
- package/dist/assets/ComplianceReport-Dhssqc9T.js +1 -0
- package/dist/assets/Configuration-B92kl9T0.js +1 -0
- package/dist/assets/CryptoScreening-C7yFlskC.js +1 -0
- package/dist/assets/Dashboard-w4-Nhv9q.js +17 -0
- package/dist/assets/DataSources-u3-Ri_5_.js +3 -0
- package/dist/assets/EDDWorkflow-CFzlEO0e.js +1 -0
- package/dist/assets/EmptyState-Do0xJAT9.js +6 -0
- package/dist/assets/ForgotPassword-BPYyQFQp.js +1 -0
- package/dist/assets/LandingPage-CjaP0zw4.js +41 -0
- package/dist/assets/ListsMarketplace-CG6KkT9B.js +6 -0
- package/dist/assets/Login-677LEGP1.js +1 -0
- package/dist/assets/MFASetup-BxqCPvui.js +1 -0
- package/dist/assets/Monitoring-9TN9MK4y.js +1 -0
- package/dist/assets/Onboarding-Cf0Y83lX.js +1 -0
- package/dist/assets/Operations-CcXwc2xw.js +10 -0
- package/dist/assets/Overview-B_Ky0VWV.js +1 -0
- package/dist/assets/PEPScreening-pUQjTH9c.js +1 -0
- package/dist/assets/PageHeader-BObHFn0i.js +1 -0
- package/dist/assets/PrivacyPolicy-DZ2xrKir.js +1 -0
- package/dist/assets/ResetPassword-AtxtpIG1.js +1 -0
- package/dist/assets/RiskAssessment-Dzuh1Usv.js +1 -0
- package/dist/assets/SARForm-D8w2ZGe-.js +1 -0
- package/dist/assets/SanctionsLists-CPA3UH2v.js +1 -0
- package/dist/assets/ScheduledTasks-Dsjk-6UR.js +1 -0
- package/dist/assets/ScreenEntity-D1U0YL7v.js +3 -0
- package/dist/assets/ScreeningProgress-BW49PzoB.js +66 -0
- package/dist/assets/SearchField-CulFKdiI.js +1 -0
- package/dist/assets/Signup-C0FmFOo_.js +1 -0
- package/dist/assets/SystemHealth-B_8u4eva.js +1 -0
- package/dist/assets/TaskHistory-BCmEM89q.js +3 -0
- package/dist/assets/Team-CUo_FlU7.js +1 -0
- package/dist/assets/TenantDetail-CgZQHUY8.js +1 -0
- package/dist/assets/Tenants-RB9E9ick.js +2 -0
- package/dist/assets/TermsOfService-BfL-kndX.js +1 -0
- package/dist/assets/TransactionMonitoring-DGh_T22s.js +14 -0
- package/dist/assets/TxnScreening-B7cm2-eh.js +1 -0
- package/dist/assets/UBOChain-falXAsCo.js +1 -0
- package/dist/assets/Users-Doakpg9c.js +1 -0
- package/dist/assets/Webhooks-BZpAfaxv.js +1 -0
- package/dist/assets/alert-triangle-YCFVm7B_.js +6 -0
- package/dist/assets/alerts-COUnTwWY.js +1 -0
- package/dist/assets/arrow-left-9ApLqP95.js +6 -0
- package/dist/assets/check-VTcvVtIU.js +6 -0
- package/dist/assets/check-circle-2-Dn-lG5YQ.js +6 -0
- package/dist/assets/code-DIJRWFVv.js +6 -0
- package/dist/assets/fingerprint-C0MGVtax.js +6 -0
- package/dist/assets/flag-B8_Gwxh6.js +6 -0
- package/dist/assets/index-CfdYcqRM.js +289 -0
- package/dist/assets/index-HPU_Rhdu.css +1 -0
- package/dist/assets/layers-zHz2o4vo.js +6 -0
- package/dist/assets/loader-B9_dNihg.js +6 -0
- package/dist/assets/mail-BijL2qwp.js +6 -0
- package/dist/assets/plus-i0oBIIPS.js +6 -0
- package/dist/assets/refresh-cw-CSuAwutt.js +6 -0
- package/dist/assets/useAnalytics-Bj8IONcw.js +72 -0
- package/dist/assets/x-circle-DLGKvijE.js +6 -0
- package/dist/favicon.svg +15 -0
- package/dist/index.html +51 -0
- package/dist/llms.txt +28 -0
- package/dist/logo.png +0 -0
- package/dist/logo.svg +17 -0
- package/dist/manifest.json +44 -0
- package/dist/robots.txt +15 -0
- package/dist/schema.json +13 -0
- package/dist/sitemap.xml +28 -0
- package/dist/sw.js +67 -0
- package/e2e/auth-setup.ts +20 -0
- package/e2e/billing.spec.ts +50 -0
- package/e2e/cases.spec.ts +53 -0
- package/e2e/compliance.spec.ts +65 -0
- package/e2e/config.spec.ts +56 -0
- package/e2e/dashboard.spec.ts +47 -0
- package/e2e/fixtures.ts +33 -0
- package/e2e/lists.spec.ts +43 -0
- package/e2e/login.spec.ts +64 -0
- package/e2e/media.spec.ts +48 -0
- package/e2e/mocks.ts +51 -0
- package/e2e/monitoring.spec.ts +44 -0
- package/e2e/navigation.spec.ts +56 -0
- package/e2e/onboarding.spec.ts +49 -0
- package/e2e/responsive.spec.ts +40 -0
- package/e2e/risk.spec.ts +61 -0
- package/e2e/screening.spec.ts +76 -0
- package/e2e/team.spec.ts +53 -0
- package/index.html +50 -0
- package/package.json +47 -0
- package/playwright.config.ts +35 -0
- package/postcss.config.js +6 -0
- package/public/.well-known/ai-plugin.json +15 -0
- package/public/_headers +8 -0
- package/public/_redirects +1 -0
- package/public/favicon.svg +15 -0
- package/public/llms.txt +28 -0
- package/public/logo.png +0 -0
- package/public/logo.svg +17 -0
- package/public/manifest.json +44 -0
- package/public/robots.txt +15 -0
- package/public/schema.json +13 -0
- package/public/sitemap.xml +28 -0
- package/public/sw.js +67 -0
- package/scripts/test-runner.sh +152 -0
- package/src/App.tsx +48 -0
- package/src/api/alerts.ts +19 -0
- package/src/api/analytics.ts +6 -0
- package/src/api/audit.ts +11 -0
- package/src/api/auth.ts +26 -0
- package/src/api/billing.ts +54 -0
- package/src/api/cases.ts +48 -0
- package/src/api/client.ts +50 -0
- package/src/api/config.ts +30 -0
- package/src/api/edd.ts +25 -0
- package/src/api/enforcement.ts +33 -0
- package/src/api/lists.ts +24 -0
- package/src/api/monitoring.ts +82 -0
- package/src/api/pep.ts +30 -0
- package/src/api/risk.ts +26 -0
- package/src/api/screening.ts +37 -0
- package/src/api/team.ts +27 -0
- package/src/api/transactions.ts +37 -0
- package/src/components/admin/TenantCards.tsx +51 -0
- package/src/components/alerts/AlertActions.test.tsx +80 -0
- package/src/components/alerts/AlertActions.tsx +68 -0
- package/src/components/alerts/AlertCard.test.tsx +86 -0
- package/src/components/alerts/AlertCard.tsx +60 -0
- package/src/components/alerts/AlertDetailSidebar.tsx +63 -0
- package/src/components/alerts/AlertFilters.test.tsx +73 -0
- package/src/components/alerts/AlertFilters.tsx +88 -0
- package/src/components/alerts/EntityDetailsCard.test.tsx +61 -0
- package/src/components/alerts/EntityDetailsCard.tsx +37 -0
- package/src/components/alerts/NotesCard.test.tsx +39 -0
- package/src/components/alerts/NotesCard.tsx +28 -0
- package/src/components/auth/AuthDivider.tsx +18 -0
- package/src/components/auth/LoginForm.tsx +62 -0
- package/src/components/auth/LoginLeftPanel.tsx +43 -0
- package/src/components/auth/PasswordStrength.tsx +26 -0
- package/src/components/auth/SignInButtons.tsx +46 -0
- package/src/components/auth/SignupLeftPanel.tsx +35 -0
- package/src/components/auth/countries.ts +17 -0
- package/src/components/charts/AreaChart.tsx +45 -0
- package/src/components/charts/BarChart.tsx +48 -0
- package/src/components/charts/DonutChart.tsx +47 -0
- package/src/components/compliance/CaseActions.tsx +74 -0
- package/src/components/compliance/CaseTimeline.tsx +68 -0
- package/src/components/compliance/MediaResultCard.tsx +87 -0
- package/src/components/compliance/PEPResultCard.tsx +78 -0
- package/src/components/config/MatchingModesCard.test.tsx +75 -0
- package/src/components/config/MatchingModesCard.tsx +40 -0
- package/src/components/config/ScreeningLayersCard.test.tsx +57 -0
- package/src/components/config/ScreeningLayersCard.tsx +36 -0
- package/src/components/config/ThresholdsCard.test.tsx +79 -0
- package/src/components/config/ThresholdsCard.tsx +51 -0
- package/src/components/dashboard/ActivityFeed.tsx +93 -0
- package/src/components/dashboard/DashboardGreeting.tsx +23 -0
- package/src/components/dashboard/DashboardSkeleton.tsx +35 -0
- package/src/components/dashboard/QuickActions.tsx +52 -0
- package/src/components/dashboard/TopEntitiesTable.tsx +63 -0
- package/src/components/data/ComplianceMetrics.test.tsx +32 -0
- package/src/components/data/ComplianceMetrics.tsx +40 -0
- package/src/components/data/ConfidenceScore.test.tsx +62 -0
- package/src/components/data/ConfidenceScore.tsx +27 -0
- package/src/components/data/StatCard.test.tsx +72 -0
- package/src/components/data/StatCard.tsx +63 -0
- package/src/components/data/StatusBadge.test.tsx +63 -0
- package/src/components/data/StatusBadge.tsx +39 -0
- package/src/components/layout/AppShell.tsx +48 -0
- package/src/components/layout/Breadcrumbs.tsx +48 -0
- package/src/components/layout/CommandPalette.tsx +81 -0
- package/src/components/layout/DashboardLayout.tsx +19 -0
- package/src/components/layout/MobileHeader.tsx +30 -0
- package/src/components/layout/NavGroup.test.tsx +63 -0
- package/src/components/layout/NavGroup.tsx +64 -0
- package/src/components/layout/NotificationBell.tsx +89 -0
- package/src/components/layout/PageHeader.test.tsx +61 -0
- package/src/components/layout/PageHeader.tsx +19 -0
- package/src/components/layout/ProtectedRoute.tsx +31 -0
- package/src/components/layout/PublicLayout.tsx +17 -0
- package/src/components/layout/Sidebar.test.tsx +67 -0
- package/src/components/layout/Sidebar.tsx +92 -0
- package/src/components/layout/Toolbar.test.tsx +47 -0
- package/src/components/layout/Toolbar.tsx +68 -0
- package/src/components/layout/navItems.ts +94 -0
- package/src/components/lists/ListCard.tsx +78 -0
- package/src/components/lists/ListMarketplaceCard.tsx +77 -0
- package/src/components/screening/CircularConfidence.tsx +38 -0
- package/src/components/screening/LimitReachedBanner.tsx +31 -0
- package/src/components/screening/ListSelector.tsx +64 -0
- package/src/components/screening/MatchDetailHeader.tsx +64 -0
- package/src/components/screening/MatchEntityInfo.tsx +56 -0
- package/src/components/screening/MatchEvidenceBars.tsx +65 -0
- package/src/components/screening/MatchMetadata.tsx +95 -0
- package/src/components/screening/ScreenResults.tsx +49 -0
- package/src/components/screening/ScreeningForm.test.tsx +83 -0
- package/src/components/screening/ScreeningForm.tsx +100 -0
- package/src/components/screening/ScreeningLayersList.test.tsx +33 -0
- package/src/components/screening/ScreeningLayersList.tsx +46 -0
- package/src/components/screening/ScreeningProgress.tsx +91 -0
- package/src/components/screening/ScreeningQuotaBanner.tsx +64 -0
- package/src/components/screening/ScreeningResultCard.tsx +47 -0
- package/src/components/screening/ScreeningResultRow.tsx +45 -0
- package/src/components/screening/ScreeningResults.test.tsx +37 -0
- package/src/components/screening/ScreeningResults.tsx +33 -0
- package/src/components/screening/ShareResults.tsx +103 -0
- package/src/components/screening/ThresholdSlider.tsx +23 -0
- package/src/components/transactions/WebhookCTA.tsx +63 -0
- package/src/components/ui/Avatar.test.tsx +47 -0
- package/src/components/ui/Avatar.tsx +35 -0
- package/src/components/ui/Badge.test.tsx +49 -0
- package/src/components/ui/Badge.tsx +33 -0
- package/src/components/ui/Button.test.tsx +56 -0
- package/src/components/ui/Button.tsx +46 -0
- package/src/components/ui/Card.test.tsx +61 -0
- package/src/components/ui/Card.tsx +29 -0
- package/src/components/ui/ConfirmModal.tsx +67 -0
- package/src/components/ui/Divider.test.tsx +24 -0
- package/src/components/ui/Divider.tsx +5 -0
- package/src/components/ui/EmptyState.test.tsx +49 -0
- package/src/components/ui/EmptyState.tsx +22 -0
- package/src/components/ui/ErrorBoundary.tsx +44 -0
- package/src/components/ui/ExportMenu.tsx +71 -0
- package/src/components/ui/LanguageSwitcher.tsx +37 -0
- package/src/components/ui/LoadingSpinner.test.tsx +41 -0
- package/src/components/ui/LoadingSpinner.tsx +21 -0
- package/src/components/ui/MetricCard.tsx +63 -0
- package/src/components/ui/ScoreRing.tsx +51 -0
- package/src/components/ui/SearchField.test.tsx +55 -0
- package/src/components/ui/SearchField.tsx +31 -0
- package/src/components/ui/SeverityBadge.tsx +57 -0
- package/src/components/ui/ThemeToggle.tsx +37 -0
- package/src/components/ui/Toast.test.tsx +79 -0
- package/src/components/ui/Toast.tsx +75 -0
- package/src/components/ui/Toggle.test.tsx +85 -0
- package/src/components/ui/Toggle.tsx +46 -0
- package/src/context/AuthContext.tsx +71 -0
- package/src/data/pepProfiles.ts +76 -0
- package/src/data/pepProfilesExtra.ts +58 -0
- package/src/hooks/useAlerts.ts +36 -0
- package/src/hooks/useAnalytics.ts +23 -0
- package/src/hooks/useApi.test.ts +79 -0
- package/src/hooks/useApi.ts +33 -0
- package/src/hooks/useAudit.ts +28 -0
- package/src/hooks/useBilling.ts +38 -0
- package/src/hooks/useConfig.ts +35 -0
- package/src/hooks/useDebounce.test.ts +84 -0
- package/src/hooks/useDebounce.ts +15 -0
- package/src/hooks/useDirection.ts +15 -0
- package/src/hooks/useLists.ts +34 -0
- package/src/hooks/useMediaQuery.test.ts +97 -0
- package/src/hooks/useMediaQuery.ts +28 -0
- package/src/hooks/useScreening.ts +33 -0
- package/src/hooks/useSidebar.ts +18 -0
- package/src/hooks/useUsage.ts +27 -0
- package/src/i18n/config.ts +33 -0
- package/src/i18n/locales/ar/admin.json +19 -0
- package/src/i18n/locales/ar/alerts.json +52 -0
- package/src/i18n/locales/ar/analytics.json +9 -0
- package/src/i18n/locales/ar/audit.json +12 -0
- package/src/i18n/locales/ar/auth.json +60 -0
- package/src/i18n/locales/ar/batch.json +5 -0
- package/src/i18n/locales/ar/billing.json +41 -0
- package/src/i18n/locales/ar/common.json +65 -0
- package/src/i18n/locales/ar/compliance.json +83 -0
- package/src/i18n/locales/ar/config.json +13 -0
- package/src/i18n/locales/ar/dashboard.json +19 -0
- package/src/i18n/locales/ar/errors.json +9 -0
- package/src/i18n/locales/ar/index.ts +29 -0
- package/src/i18n/locales/ar/legal.json +10 -0
- package/src/i18n/locales/ar/lists.json +6 -0
- package/src/i18n/locales/ar/marketing.json +110 -0
- package/src/i18n/locales/ar/monitoring.json +15 -0
- package/src/i18n/locales/ar/nav.json +35 -0
- package/src/i18n/locales/ar/onboarding.json +25 -0
- package/src/i18n/locales/ar/platform.json +23 -0
- package/src/i18n/locales/ar/screening.json +26 -0
- package/src/i18n/locales/ar/team.json +11 -0
- package/src/i18n/locales/en/admin.json +21 -0
- package/src/i18n/locales/en/alerts.json +52 -0
- package/src/i18n/locales/en/analytics.json +9 -0
- package/src/i18n/locales/en/audit.json +12 -0
- package/src/i18n/locales/en/auth.json +60 -0
- package/src/i18n/locales/en/batch.json +5 -0
- package/src/i18n/locales/en/billing.json +87 -0
- package/src/i18n/locales/en/common.json +65 -0
- package/src/i18n/locales/en/compliance.json +83 -0
- package/src/i18n/locales/en/config.json +29 -0
- package/src/i18n/locales/en/dashboard.json +23 -0
- package/src/i18n/locales/en/errors.json +9 -0
- package/src/i18n/locales/en/index.ts +29 -0
- package/src/i18n/locales/en/legal.json +114 -0
- package/src/i18n/locales/en/lists.json +6 -0
- package/src/i18n/locales/en/marketing.json +174 -0
- package/src/i18n/locales/en/monitoring.json +15 -0
- package/src/i18n/locales/en/nav.json +35 -0
- package/src/i18n/locales/en/onboarding.json +31 -0
- package/src/i18n/locales/en/platform.json +25 -0
- package/src/i18n/locales/en/screening.json +26 -0
- package/src/i18n/locales/en/team.json +12 -0
- package/src/i18n/locales/he/admin.json +19 -0
- package/src/i18n/locales/he/alerts.json +52 -0
- package/src/i18n/locales/he/analytics.json +9 -0
- package/src/i18n/locales/he/audit.json +12 -0
- package/src/i18n/locales/he/auth.json +60 -0
- package/src/i18n/locales/he/batch.json +5 -0
- package/src/i18n/locales/he/billing.json +41 -0
- package/src/i18n/locales/he/common.json +65 -0
- package/src/i18n/locales/he/compliance.json +83 -0
- package/src/i18n/locales/he/config.json +13 -0
- package/src/i18n/locales/he/dashboard.json +19 -0
- package/src/i18n/locales/he/errors.json +9 -0
- package/src/i18n/locales/he/index.ts +29 -0
- package/src/i18n/locales/he/legal.json +10 -0
- package/src/i18n/locales/he/lists.json +6 -0
- package/src/i18n/locales/he/marketing.json +110 -0
- package/src/i18n/locales/he/monitoring.json +15 -0
- package/src/i18n/locales/he/nav.json +35 -0
- package/src/i18n/locales/he/onboarding.json +25 -0
- package/src/i18n/locales/he/platform.json +23 -0
- package/src/i18n/locales/he/screening.json +26 -0
- package/src/i18n/locales/he/team.json +11 -0
- package/src/index.css +112 -0
- package/src/main.tsx +15 -0
- package/src/pages/APIKeys.tsx +120 -0
- package/src/pages/AddMonitorModal.tsx +30 -0
- package/src/pages/AdverseMedia.test.tsx +18 -0
- package/src/pages/AdverseMedia.tsx +89 -0
- package/src/pages/AlertDetailPage.tsx +64 -0
- package/src/pages/AlertQueue.test.tsx +48 -0
- package/src/pages/AlertQueue.tsx +63 -0
- package/src/pages/Analytics.tsx +50 -0
- package/src/pages/AuditTrail.tsx +64 -0
- package/src/pages/BatchJobs.tsx +79 -0
- package/src/pages/CaseDetail.tsx +72 -0
- package/src/pages/CaseManagement.test.tsx +31 -0
- package/src/pages/CaseManagement.tsx +92 -0
- package/src/pages/Configuration.test.tsx +96 -0
- package/src/pages/Configuration.tsx +123 -0
- package/src/pages/CryptoScreening.tsx +109 -0
- package/src/pages/Dashboard.test.tsx +51 -0
- package/src/pages/Dashboard.tsx +66 -0
- package/src/pages/EDDWorkflow.test.tsx +29 -0
- package/src/pages/EDDWorkflow.tsx +73 -0
- package/src/pages/ForgotPassword.test.tsx +49 -0
- package/src/pages/ForgotPassword.tsx +67 -0
- package/src/pages/ListsMarketplace.tsx +102 -0
- package/src/pages/Login.test.tsx +100 -0
- package/src/pages/Login.tsx +57 -0
- package/src/pages/MFASetup.tsx +114 -0
- package/src/pages/MonitorProfileCard.tsx +27 -0
- package/src/pages/Monitoring.tsx +68 -0
- package/src/pages/Onboarding.test.tsx +36 -0
- package/src/pages/Onboarding.tsx +60 -0
- package/src/pages/PEPScreening.test.tsx +15 -0
- package/src/pages/PEPScreening.tsx +100 -0
- package/src/pages/ResetPassword.tsx +81 -0
- package/src/pages/RiskAssessment.test.tsx +15 -0
- package/src/pages/RiskAssessment.tsx +108 -0
- package/src/pages/SanctionsLists.tsx +74 -0
- package/src/pages/ScreenEntity.test.tsx +82 -0
- package/src/pages/ScreenEntity.tsx +76 -0
- package/src/pages/Signup.test.tsx +98 -0
- package/src/pages/Signup.tsx +92 -0
- package/src/pages/TaskHistory.tsx +183 -0
- package/src/pages/Team.test.tsx +15 -0
- package/src/pages/Team.tsx +140 -0
- package/src/pages/TransactionMonitoring.test.tsx +18 -0
- package/src/pages/TransactionMonitoring.tsx +118 -0
- package/src/pages/TxnScreening.tsx +125 -0
- package/src/pages/UBOChain.test.tsx +35 -0
- package/src/pages/UBOChain.tsx +65 -0
- package/src/pages/Webhooks.tsx +137 -0
- package/src/pages/admin/DataSources.tsx +230 -0
- package/src/pages/admin/Operations.tsx +103 -0
- package/src/pages/admin/ScheduledTasks.tsx +155 -0
- package/src/pages/admin/SystemHealth.tsx +58 -0
- package/src/pages/admin/TenantDetail.tsx +62 -0
- package/src/pages/admin/Tenants.test.tsx +20 -0
- package/src/pages/admin/Tenants.tsx +63 -0
- package/src/pages/admin/opsRunners.ts +81 -0
- package/src/pages/admin/opsTerminal.tsx +63 -0
- package/src/pages/billing/ActiveSubscriptions.tsx +41 -0
- package/src/pages/billing/AddProductModal.tsx +99 -0
- package/src/pages/billing/BillingPage.test.tsx +30 -0
- package/src/pages/billing/BillingPage.tsx +67 -0
- package/src/pages/billing/CurrentPlan.tsx +50 -0
- package/src/pages/billing/InvoiceList.tsx +104 -0
- package/src/pages/billing/InvoiceRow.tsx +37 -0
- package/src/pages/billing/LemonSqueezySetup.tsx +51 -0
- package/src/pages/billing/PaymentAlert.tsx +33 -0
- package/src/pages/billing/PlanComparison.tsx +53 -0
- package/src/pages/billing/ProductUsage.tsx +43 -0
- package/src/pages/billing/PromoCodeInput.tsx +58 -0
- package/src/pages/billing/SeatManager.tsx +80 -0
- package/src/pages/billing/SeatRow.tsx +32 -0
- package/src/pages/billing/SubscriptionCard.tsx +73 -0
- package/src/pages/billing/UpgradeModal.tsx +53 -0
- package/src/pages/billing/UsageHistory.tsx +37 -0
- package/src/pages/billing/UsageMeter.tsx +26 -0
- package/src/pages/billing/UsageOverview.tsx +38 -0
- package/src/pages/legal/PrivacyPolicy.tsx +25 -0
- package/src/pages/legal/TermsOfService.tsx +25 -0
- package/src/pages/marketing/BundleCallout.tsx +24 -0
- package/src/pages/marketing/CTASection.tsx +48 -0
- package/src/pages/marketing/CaseStudy.tsx +37 -0
- package/src/pages/marketing/ComparisonTable.tsx +66 -0
- package/src/pages/marketing/CompetitiveEdge.tsx +55 -0
- package/src/pages/marketing/DataCoverage.tsx +54 -0
- package/src/pages/marketing/DataRain.tsx +30 -0
- package/src/pages/marketing/EnterpriseCTA.tsx +26 -0
- package/src/pages/marketing/FAQItem.tsx +27 -0
- package/src/pages/marketing/FAQSchema.tsx +43 -0
- package/src/pages/marketing/FAQSection.tsx +19 -0
- package/src/pages/marketing/FeatureDetail.tsx +19 -0
- package/src/pages/marketing/FeaturesGrid.tsx +60 -0
- package/src/pages/marketing/FeaturesSpotlight.tsx +68 -0
- package/src/pages/marketing/FooterSection.tsx +92 -0
- package/src/pages/marketing/GradientOrbs.tsx +26 -0
- package/src/pages/marketing/HeroSearch.tsx +113 -0
- package/src/pages/marketing/HeroSection.tsx +72 -0
- package/src/pages/marketing/LandingPage.tsx +45 -0
- package/src/pages/marketing/LogoCloud.tsx +31 -0
- package/src/pages/marketing/LogoMarquee.tsx +45 -0
- package/src/pages/marketing/MarketingNav.tsx +80 -0
- package/src/pages/marketing/MatchingLayers.tsx +78 -0
- package/src/pages/marketing/MobileMenu.tsx +45 -0
- package/src/pages/marketing/PricingCard.tsx +57 -0
- package/src/pages/marketing/PricingFeatureRow.tsx +16 -0
- package/src/pages/marketing/PricingSection.tsx +103 -0
- package/src/pages/marketing/PricingToggle.tsx +40 -0
- package/src/pages/marketing/ProductPricingCards.tsx +23 -0
- package/src/pages/marketing/ProductShowcase.tsx +81 -0
- package/src/pages/marketing/ProductTabs.tsx +45 -0
- package/src/pages/marketing/QuoteRotator.tsx +56 -0
- package/src/pages/marketing/StatsBar.tsx +81 -0
- package/src/pages/marketing/StatsSection.tsx +44 -0
- package/src/pages/marketing/TestimonialCard.tsx +38 -0
- package/src/pages/marketing/TestimonialsSection.tsx +32 -0
- package/src/pages/marketing/animations.tsx +56 -0
- package/src/pages/onboarding/CountryStep.tsx +38 -0
- package/src/pages/onboarding/ListsStep.tsx +44 -0
- package/src/pages/onboarding/StepIndicator.tsx +34 -0
- package/src/pages/onboarding/ThresholdStep.tsx +49 -0
- package/src/pages/platform/APIKeys.tsx +102 -0
- package/src/pages/platform/Overview.tsx +58 -0
- package/src/pages/platform/Users.tsx +110 -0
- package/src/pages/reporting/ComplianceReport.tsx +99 -0
- package/src/pages/reporting/SARForm.tsx +99 -0
- package/src/routes/appRoutes.tsx +60 -0
- package/src/routes/compliance.tsx +28 -0
- package/src/routes/lazyCompliance.ts +34 -0
- package/src/routes/lazyPages.ts +35 -0
- package/src/routes/lazyPlatform.ts +5 -0
- package/src/routes/platform.tsx +15 -0
- package/src/styles/effects.css +76 -0
- package/src/test/setup.ts +25 -0
- package/src/test/utils.tsx +49 -0
- package/src/types/alert.ts +31 -0
- package/src/types/analytics.ts +16 -0
- package/src/types/audit.ts +11 -0
- package/src/types/billing.ts +60 -0
- package/src/types/common.ts +15 -0
- package/src/types/config.ts +19 -0
- package/src/types/entity.ts +34 -0
- package/src/types/index.ts +8 -0
- package/src/types/list.ts +15 -0
- package/src/types/screening.ts +32 -0
- package/src/vite-env.d.ts +1 -0
- package/tailwind.config.js +65 -0
- package/tsconfig.json +22 -0
- package/vite.config.ts +11 -0
- package/vitest.config.ts +19 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import{c as u,j as e,a as c,u as p,r as d,b,d as j,S as v,C as w,A as f,e as _,f as x,g as N,U as k,W as y,Z as S,F as C,P as A}from"./index-CfdYcqRM.js";import{u as D,A as E,D as T,B as $}from"./useAnalytics-Bj8IONcw.js";import{B}from"./Badge-B9VFkofy.js";import"./Card-Cw-T_-oU.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 M=u("TrendingDown",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/**
|
|
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 R=u("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]),U={blue:"shadow-[0_0_32px_rgba(10,132,255,0.15)]",green:"shadow-[0_0_32px_rgba(48,209,88,0.15)]",orange:"shadow-[0_0_32px_rgba(255,159,10,0.15)]",red:"shadow-[0_0_32px_rgba(255,69,58,0.15)]"},G={up:"text-apple-green drop-shadow-[0_0_6px_rgba(48,209,88,0.6)]",down:"text-apple-red drop-shadow-[0_0_6px_rgba(255,69,58,0.6)]"},L={blue:"bg-apple-blue/10",green:"bg-apple-green/10",orange:"bg-apple-orange/10",red:"bg-apple-red/10"};function i({title:t,value:s,trend:a,description:l,color:r="blue"}){const n=a!==void 0?a>0?"up":"down":null;return e.jsxs("div",{className:c("card-vibrancy p-xl rounded-apple-lg transition-all hover:scale-[1.02]",U[r]),children:[e.jsxs("div",{className:"flex items-center justify-between mb-md",children:[e.jsx("p",{className:"sf-caption tracking-wide uppercase text-[11px]",children:t}),e.jsx("div",{className:c("w-8 h-8 rounded-full flex items-center justify-center animate-pulse",L[r]),children:e.jsx("div",{className:c("w-2 h-2 rounded-full",`bg-apple-${r}`)})})]}),e.jsx("h3",{className:"text-4xl font-extrabold tracking-tight text-transparent bg-clip-text bg-gradient-to-r from-white to-white/70 mb-sm",children:s}),e.jsxs("div",{className:"flex items-center justify-between",children:[l&&e.jsx("p",{className:"sf-caption",children:l}),n&&e.jsxs("div",{className:c("flex items-center gap-xs font-bold text-sm",G[n]),children:[n==="up"?e.jsx(R,{className:"w-5 h-5"}):e.jsx(M,{className:"w-5 h-5"}),e.jsxs("span",{children:[Math.abs(a),"%"]})]})]})]})}function P(){const{t}=p("dashboard"),[s,a]=d.useState(null);return d.useEffect(()=>{b.get("/dashboard/compliance").then(l=>a(l??null)).catch(()=>a(null))},[]),s?e.jsxs("div",{children:[e.jsx("h3",{className:"sf-headline mb-lg",children:t("compliance_overview")}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-lg",children:[e.jsx(i,{title:t("open_cases"),value:s.openCases,color:"orange"}),e.jsx(i,{title:t("active_monitors"),value:s.activeMonitors}),e.jsx(i,{title:t("high_risk"),value:s.highRiskEntities,color:"red"}),e.jsx(i,{title:t("pending_edd"),value:s.pendingEDD,color:"orange"}),e.jsx(i,{title:t("unreviewed_media"),value:s.unreviewedMedia}),e.jsx(i,{title:t("txn_alerts"),value:s.txnAlerts,color:"red"})]})]}):null}function F(){var g;const{user:t}=j(),s=new Date,a=s.getHours(),l=a<12?"Good morning":a<18?"Good afternoon":"Good evening",r=s.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric"}),n=s.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"}),o=(g=t==null?void 0:t.email)==null?void 0:g.split("@")[0];return e.jsxs("div",{className:"mb-xxl",children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight text-white mb-xs",children:o?`${l}, ${o}`:"Welcome back"}),e.jsxs("p",{className:"sf-caption",children:[r," · ",n]})]})}function V(){return e.jsxs("div",{className:"card-vibrancy p-xl",children:[e.jsx("div",{className:"skeleton h-3 w-20 mb-md"}),e.jsx("div",{className:"skeleton h-8 w-24 mb-sm"}),e.jsx("div",{className:"skeleton h-3 w-16"})]})}function W(){return e.jsxs("div",{children:[e.jsxs("div",{className:"mb-xxl",children:[e.jsx("div",{className:"skeleton h-8 w-56 mb-sm"}),e.jsx("div",{className:"skeleton h-3 w-40"})]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-lg mb-xxl",children:Array.from({length:4}).map((t,s)=>e.jsx(V,{},s))}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-lg",children:[e.jsx("div",{className:"lg:col-span-2 card-vibrancy p-xl",children:e.jsx("div",{className:"skeleton h-48 w-full"})}),e.jsx("div",{className:"card-vibrancy p-xl",children:e.jsx("div",{className:"skeleton h-48 w-full"})})]})]})}const I={critical:"red",high:"orange",medium:"orange",low:"green"},Z={critical:"shadow-[0_0_10px_rgba(255,69,58,0.3)]",high:"shadow-[0_0_10px_rgba(255,159,10,0.3)]",medium:"shadow-[0_0_8px_rgba(255,159,10,0.2)]",low:"shadow-[0_0_8px_rgba(48,209,88,0.2)]"};function z({entities:t}){const{t:s}=p("dashboard");return e.jsxs("div",{className:"card-vibrancy p-xl",children:[e.jsx("h3",{className:"sf-headline mb-lg",children:s("top_entities")}),e.jsx("div",{className:"space-y-sm",children:t.map((a,l)=>e.jsxs("div",{className:`flex items-center justify-between p-md rounded-apple-md bg-white/[0.03]
|
|
12
|
+
hover:bg-white/[0.06] hover:shadow-[0_0_20px_rgba(255,255,255,0.03)]
|
|
13
|
+
transition-all cursor-default group`,children:[e.jsxs("div",{className:"flex items-center gap-md",children:[e.jsx("span",{className:"text-[13px] font-bold text-transparent bg-clip-text bg-gradient-to-b from-white to-white/40 w-6 text-center font-mono",children:String(l+1).padStart(2,"0")}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[14px] font-medium text-white group-hover:text-apple-blue transition-colors",children:a.name}),e.jsxs("p",{className:"text-[11px] text-apple-label-tertiary",children:[a.alerts," ",s("alerts")]})]})]}),e.jsx("div",{className:Z[(a.risk??"").toLowerCase()]??"",children:e.jsx(B,{size:"sm",color:I[(a.risk??"").toLowerCase()]??"blue",children:a.risk??"Unknown"})})]},a.name))})]})}const H={screening:x,alert_resolved:_,alert_escalated:f,alert_created:w},m={screening:"bg-apple-blue shadow-[0_0_8px_rgba(10,132,255,0.6)]",alert_resolved:"bg-apple-green shadow-[0_0_8px_rgba(48,209,88,0.6)]",alert_escalated:"bg-apple-orange shadow-[0_0_8px_rgba(255,159,10,0.6)]",alert_created:"bg-apple-label-tertiary"},h={screening:"text-apple-blue",alert_resolved:"text-apple-green",alert_escalated:"text-apple-orange",alert_created:"text-apple-label-tertiary"};function J(t){const s=Date.now()-new Date(t).getTime(),a=Math.floor(s/6e4);if(a<1)return"just now";if(a<60)return`${a}m ago`;const l=Math.floor(a/60);return l<24?`${l}h ago`:`${Math.floor(l/24)}d ago`}function Q(){const{t}=p("dashboard"),[s,a]=d.useState([]);d.useEffect(()=>{b.get("/audit?limit=8").then(r=>a((r==null?void 0:r.entries)??[])).catch(()=>a([]))},[]);const l=s.length>0;return e.jsxs("div",{className:"card-vibrancy p-xl h-full",children:[e.jsx("h3",{className:"sf-headline mb-lg",children:t("recent_activity")||"Recent Activity"}),!l&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-xl text-center",children:[e.jsx(v,{className:"w-8 h-8 text-apple-label-tertiary mb-md"}),e.jsx("p",{className:"sf-caption text-apple-label-tertiary",children:"No activity yet. Start screening to see results here."})]}),l&&e.jsxs("div",{className:"relative ml-2",children:[e.jsx("div",{className:"absolute left-[5px] top-1 bottom-1 w-px bg-gradient-to-b from-white/20 via-white/10 to-transparent"}),e.jsx("div",{className:"space-y-lg",children:s.map(r=>{const n=r.action??"screening",o=H[n]??x;return e.jsxs("div",{className:`relative flex items-start gap-md pl-6 py-sm rounded-apple-md
|
|
14
|
+
hover:bg-white/[0.04] transition-all cursor-default`,children:[e.jsx("div",{className:`absolute left-0 top-[10px] w-[11px] h-[11px] rounded-full ${m[n]??m.screening}`}),e.jsx(o,{className:`w-4 h-4 mt-0.5 flex-shrink-0 ${h[n]??h.screening}`}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-[13px] text-white truncate",children:r.entity_name??r.description??r.action}),e.jsxs("p",{className:"text-[11px] text-apple-label-tertiary/60 mt-px",children:[r.action," · ",J(r.created_at)]})]})]},r.id)})})]})]})}const q=[{icon:x,label:"Screen Entity",description:"Run 6-layer sanctions screening",path:"/screen",color:"from-apple-blue/20 to-apple-blue/5"},{icon:k,label:"PEP Check",description:"Screen politically exposed persons",path:"/compliance/pep",color:"from-apple-green/20 to-apple-green/5"},{icon:y,label:"Crypto Scan",description:"Screen wallet addresses",path:"/compliance/crypto",color:"from-apple-orange/20 to-apple-orange/5"},{icon:S,label:"Transaction Screen",description:"Screen payment sender & receiver",path:"/compliance/txn",color:"from-apple-purple/20 to-apple-purple/5"},{icon:C,label:"Freetext Scan",description:"Paste a document, extract & screen names",path:"/screen",color:"from-apple-teal/20 to-apple-teal/5"},{icon:A,label:"Batch Jobs",description:"Screen customer lists in bulk",path:"/batch",color:"from-apple-indigo/20 to-apple-indigo/5"}];function K(){const t=N();return e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-md",children:q.map(({icon:s,label:a,description:l,path:r,color:n})=>e.jsxs("button",{onClick:()=>t(r),className:`text-left p-lg rounded-apple-lg bg-gradient-to-br ${n}
|
|
15
|
+
border border-white/[0.06] hover:border-white/[0.12]
|
|
16
|
+
transition-all cursor-pointer group`,children:[e.jsx("div",{className:`w-10 h-10 rounded-apple-md bg-white/[0.06] flex items-center justify-center mb-md
|
|
17
|
+
group-hover:bg-white/[0.1] transition-colors`,children:e.jsx(s,{className:"w-5 h-5 text-white/80"})}),e.jsx("p",{className:"sf-headline text-sm mb-xs",children:a}),e.jsx("p",{className:"sf-caption text-white/50 text-xs",children:l})]},r+a))})}function se(){const{t}=p("dashboard"),{analytics:s,loading:a}=D();if(a)return e.jsx(W,{});const l={totalAlerts:(s==null?void 0:s.totalAlerts)??0,clearedAlerts:(s==null?void 0:s.clearedAlerts)??0,escalatedAlerts:(s==null?void 0:s.escalatedAlerts)??0,avgResolutionTime:(s==null?void 0:s.avgResolutionTime)??0,screeningVolume:(s==null?void 0:s.screeningVolume)??[],dispositionBreakdown:(s==null?void 0:s.dispositionBreakdown)??[],riskDistribution:(s==null?void 0:s.riskDistribution)??[],topEntities:(s==null?void 0:s.topEntities)??[]};return e.jsxs("div",{className:"space-y-xxl",children:[e.jsx(F,{}),e.jsx(K,{}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-lg",children:[e.jsx(i,{title:t("total_alerts"),value:l.totalAlerts,trend:12,color:"blue"}),e.jsx(i,{title:t("cleared_today"),value:l.clearedAlerts,trend:8,color:"green"}),e.jsx(i,{title:t("escalated"),value:l.escalatedAlerts,trend:-3,color:"red"}),e.jsx(i,{title:t("avg_resolution"),value:`${l.avgResolutionTime}h`,description:t("time_in_hours"),color:"orange"})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-lg",children:[e.jsxs("div",{className:"lg:col-span-2 space-y-lg",children:[e.jsx("div",{className:"glass-panel rounded-apple-lg p-md glow-blue",children:e.jsx(E,{title:t("screening_volume"),data:l.screeningVolume})}),e.jsx("div",{className:"glass-panel rounded-apple-lg p-md",children:e.jsx(T,{title:t("disposition_breakdown"),data:l.dispositionBreakdown})})]}),e.jsx(Q,{})]}),e.jsx(P,{}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-lg",children:[e.jsx("div",{className:"glass-panel rounded-apple-lg p-md",children:e.jsx($,{title:t("risk_distribution"),data:l.riskDistribution})}),e.jsx(z,{entities:l.topEntities})]})]})}export{se as Dashboard};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{r as a,j as e,L as P,B as L,b as v}from"./index-CfdYcqRM.js";import{P as U}from"./PageHeader-BObHFn0i.js";import{C as c}from"./Card-Cw-T_-oU.js";import{B as R}from"./Badge-B9VFkofy.js";function q(){var S;const[s,l]=a.useState(null),[i,t]=a.useState(!0),[o,n]=a.useState(!1),[m,h]=a.useState(null),[x,d]=a.useState(""),[g,j]=a.useState(!1),b=a.useRef(null),[y,_]=a.useState("icij_offshore"),u=async()=>{try{const p=await v.get("/admin/data-sources");l(p)}catch{d("Failed to load data sources")}finally{t(!1)}};a.useEffect(()=>{u()},[]);const C=async()=>{var N,w;const p=(w=(N=b.current)==null?void 0:N.files)==null?void 0:w[0];if(p){n(!0),h(null),d("");try{const r=new FormData;r.append("file",p),r.append("list_id",y);const I=await A(r);h(I),u()}catch(r){d(r instanceof Error?r.message:"Upload failed")}finally{n(!1)}}},E=async()=>{j(!0);try{await v.post("/admin/lists/refresh",{}),u()}catch{d("Refresh failed")}finally{j(!1)}};return i?e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(P,{})}):e.jsxs("div",{children:[e.jsx(U,{title:"Data Sources",description:"Manage sanctions lists, PEP databases, and custom entity sources"}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-lg mb-xl",children:[e.jsx(f,{label:"Total Entities",value:(s==null?void 0:s.total_entities)??0}),e.jsx(f,{label:"PEP Profiles",value:(s==null?void 0:s.total_peps)??0}),e.jsx(f,{label:"Total Profiles",value:(s==null?void 0:s.total_profiles)??0,color:"blue"}),e.jsx(f,{label:"Active Lists",value:((S=s==null?void 0:s.loaded)==null?void 0:S.length)??0})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-lg",children:[e.jsx("div",{className:"lg:col-span-2",children:e.jsx(B,{sources:(s==null?void 0:s.loaded)??[]})}),e.jsxs("div",{className:"space-y-lg",children:[e.jsx(k,{fileRef:b,listId:y,setListId:_,uploading:o,onUpload:C,result:m}),e.jsxs(c,{children:[e.jsx("h3",{className:"sf-headline mb-md",children:"Sync Lists"}),e.jsx("p",{className:"sf-caption text-white/60 mb-lg",children:"Re-download all sanctions lists from official sources"}),e.jsx(L,{onClick:E,disabled:g,className:"w-full",children:g?"Syncing...":"Sync All Lists"})]})]})]}),x&&e.jsx(c,{className:"mt-lg",children:e.jsx("p",{className:"text-apple-red sf-body",children:x})})]})}function f({label:s,value:l,color:i="green"}){const t=i==="blue"?"text-apple-blue":"text-apple-green";return e.jsxs(c,{children:[e.jsx("p",{className:"sf-caption text-white/60",children:s}),e.jsx("p",{className:`sf-headline text-2xl ${t}`,children:l.toLocaleString()})]})}function B({sources:s}){return e.jsxs(c,{children:[e.jsx("h3",{className:"sf-headline mb-lg",children:"Loaded Sources"}),e.jsx("div",{className:"space-y-sm",children:s.map(l=>e.jsxs("div",{className:"flex items-center justify-between p-md rounded-apple-md bg-white/[0.03]",children:[e.jsx("div",{className:"flex items-center gap-md",children:e.jsx(R,{color:l.list_id.startsWith("ofac")?"red":"blue",size:"sm",children:l.list_id})}),e.jsx("span",{className:"sf-body font-semibold",children:l.count.toLocaleString()})]},l.list_id))})]})}function k({fileRef:s,listId:l,setListId:i,uploading:t,onUpload:o,result:n}){return e.jsxs(c,{children:[e.jsx("h3",{className:"sf-headline mb-md",children:"Upload CSV"}),e.jsx("p",{className:"sf-caption text-white/60 mb-lg",children:"Import ICIJ, custom lists, or any CSV with entity names"}),e.jsx("input",{ref:s,type:"file",accept:".csv",className:`w-full mb-md text-sm text-white/60 file:mr-4 file:py-2 file:px-4
|
|
2
|
+
file:rounded-apple file:border-0 file:bg-apple-blue/20 file:text-apple-blue
|
|
3
|
+
file:font-semibold file:cursor-pointer`}),e.jsx("input",{type:"text",value:l,onChange:m=>i(m.target.value),placeholder:"List ID (e.g. icij_offshore)",className:"input-field w-full mb-md"}),e.jsx(L,{onClick:o,disabled:t,className:"w-full",children:t?"Uploading...":"Upload & Import"}),n&&e.jsx("div",{className:"mt-md p-md rounded-apple-md bg-apple-green/10",children:e.jsxs("p",{className:"sf-caption text-apple-green",children:["Imported ",n.imported.toLocaleString()," entities from ",n.filename]})})]})}async function A(s){const l="https://api.amliq.finance",i=localStorage.getItem("amliq_token"),t=await fetch(`${l}/api/v1/admin/data-sources/upload`,{method:"POST",headers:i?{Authorization:`Bearer ${i}`}:{},body:s});if(!t.ok){const n=await t.json().catch(()=>({}));throw new Error(n.message||"Upload failed")}const o=await t.json();return o.data??o}export{q as DataSources,q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as m,i as u,r as d,b as x,j as e}from"./index-CfdYcqRM.js";const o={identity_verified:"edd.identity",source_of_funds:"edd.source_of_funds",source_of_wealth:"edd.source_of_wealth",pep_screening:"edd.pep_screening",adverse_media_check:"edd.adverse_media",sanctions_screening:"edd.sanctions",ubo_verification:"edd.ubo_verification",country_risk_assessment:"edd.country_risk"};function f(){const{t:a}=m("compliance"),{id:l}=u(),[t,i]=d.useState(null);if(d.useEffect(()=>{l&&x.get(`/edd/${l}`).then(s=>i(s??null)).catch(()=>i(null))},[l]),!t)return e.jsx("div",{className:"p-lg",role:"status","aria-live":"polite",children:"Loading..."});const n=Object.values(t.checklist).filter(Boolean).length,r=Object.keys(t.checklist).length,p=r>0?n/r*100:0;return 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:a("edd.title")}),e.jsx("p",{className:"text-apple-label-secondary mb-6",children:t.entity_name}),e.jsxs("div",{className:"card-vibrancy p-6",children:[e.jsxs("div",{className:"flex justify-between mb-2 text-sm",children:[e.jsx("span",{children:a("edd.progress")}),e.jsxs("span",{children:[n,"/",r," ",a("edd.checks")]})]}),e.jsx("div",{className:"w-full bg-apple-bg-tertiary rounded-full h-2 mb-6",children:e.jsx("div",{className:"bg-apple-green h-2 rounded-full",style:{width:`${p}%`}})}),e.jsx("div",{className:"space-y-3",children:Object.entries(t.checklist).map(([s,c])=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${c?"bg-apple-green border-apple-green":"border-apple-label-tertiary"}`,children:c&&e.jsx("span",{className:"text-white text-xs",children:"✓"})}),e.jsx("span",{className:c?"text-apple-label-tertiary line-through":"",children:o[s]?a(o[s]):s})]},s))})]})]})}export{f as EDDWorkflow};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{c as x,j 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=x("Inbox",[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]]);function m({title:t,description:s,icon:a,action:l}){return e.jsxs("div",{className:"flex flex-col items-center justify-center py-xxl px-lg text-center",children:[e.jsx("div",{className:"mb-lg text-apple-label-tertiary",children:a||e.jsx(c,{className:"w-12 h-12 mx-auto"})}),e.jsx("h3",{className:"sf-headline mb-sm",children:t}),s&&e.jsx("p",{className:"sf-caption mb-lg max-w-xs",children:s}),l]})}export{m as E};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as x,r as s,j as e,l as f,b}from"./index-CfdYcqRM.js";import{A as g}from"./arrow-left-9ApLqP95.js";import{M as h}from"./mail-BijL2qwp.js";function w(){const{t}=x("auth"),[a,m]=s.useState(""),[p,d]=s.useState(!1),[l,o]=s.useState(!1),[i,n]=s.useState(""),u=async r=>{r.preventDefault(),o(!0),n("");try{await b.post("/auth/forgot-password",{email:a}),d(!0)}catch(c){n(c instanceof Error?c.message:"Request failed")}finally{o(!1)}};return e.jsx("div",{className:"min-h-screen bg-apple-bg-primary flex items-center justify-center px-4",children:e.jsxs("div",{className:"w-full max-w-sm",children:[e.jsxs(f,{to:"/login",className:"inline-flex items-center gap-1.5 text-sm text-apple-label-secondary hover:text-white mb-8",children:[e.jsx(g,{size:16}),t("forgot.back_to_login")]}),e.jsx("h1",{className:"text-2xl font-bold text-white mb-2",children:t("forgot.title")}),e.jsx("p",{className:"text-sm text-apple-label-secondary mb-8",children:t("forgot.description")}),p?e.jsxs("div",{className:"rounded-apple-lg bg-green-500/10 border border-green-500/30 p-6 text-center",children:[e.jsx(h,{size:32,className:"text-green-400 mx-auto mb-3"}),e.jsx("p",{className:"text-white font-medium mb-1",children:t("forgot.success_title")}),e.jsx("p",{className:"text-sm text-apple-label-secondary",children:t("forgot.success_message",{email:a})})]}):e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsx("input",{type:"email",required:!0,value:a,onChange:r=>m(r.target.value),"aria-label":t("forgot.email_placeholder"),placeholder:t("forgot.email_placeholder"),className:"input-field w-full",autoComplete:"email",autoFocus:!0}),i&&e.jsx("p",{role:"alert",className:"text-apple-red text-sm",children:i}),e.jsx("button",{type:"submit",disabled:l,className:"w-full py-2.5 rounded-apple-md bg-apple-blue text-white font-medium hover:bg-apple-blue/90 transition-colors cursor-pointer disabled:opacity-50",children:l?"Sending...":t("forgot.submit")})]})]})})}export{w as ForgotPassword,w as default};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import{c as S,q as I,s as v,r as m,M as se,t as V,v as $,w as K,x as j,y as E,z as ne,E as ae,H as ie,I as re,J as le,j as t,K as c,g as L,Z as M,G as O,S as A,N as oe,D as T,O as ce,Q as de}from"./index-CfdYcqRM.js";import{L as xe}from"./layers-zHz2o4vo.js";import{C as me}from"./check-VTcvVtIU.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 J=S("Brain",[["path",{d:"M9.5 2A2.5 2.5 0 0 1 12 4.5v15a2.5 2.5 0 0 1-4.96.44 2.5 2.5 0 0 1-2.96-3.08 3 3 0 0 1-.34-5.58 2.5 2.5 0 0 1 1.32-4.24 2.5 2.5 0 0 1 1.98-3A2.5 2.5 0 0 1 9.5 2Z",key:"1mhkh5"}],["path",{d:"M14.5 2A2.5 2.5 0 0 0 12 4.5v15a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 14.5 2Z",key:"1d6s00"}]]);/**
|
|
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 ue=S("DollarSign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);/**
|
|
12
|
+
* @license lucide-react v0.294.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const pe=S("FileCheck",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}],["path",{d:"m9 15 2 2 4-4",key:"1grp1n"}]]);/**
|
|
17
|
+
* @license lucide-react v0.294.0 - ISC
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the ISC license.
|
|
20
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/const he=S("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);function fe(e){const s=I(()=>v(e)),{isStatic:a}=m.useContext(se);if(a){const[,n]=m.useState(e);m.useEffect(()=>s.on("change",n),[])}return s}const ge=e=>e&&typeof e=="object"&&e.mix,be=e=>ge(e)?e.mix:void 0;function ye(...e){const s=!Array.isArray(e[0]),a=s?0:-1,n=e[0+a],i=e[1+a],r=e[2+a],l=e[3+a],o=V(i,r,{mixer:be(r[0]),...l});return s?o(n):o}function _(e,s){const a=fe(s()),n=()=>a.set(s());return n(),$(()=>{const i=()=>j.update(n,!1,!0),r=e.map(l=>l.on("change",i));return()=>{r.forEach(l=>l()),K(n)}}),a}function ve(e){E.current=[],e();const s=_(E.current,e);return E.current=void 0,s}function je(e,s,a,n){if(typeof e=="function")return ve(e);const i=typeof s=="function"?s:ye(s,a,n);return Array.isArray(e)?z(e,i):z([e],([r])=>i(r))}function z(e,s){const a=I(()=>[]);return _(e,()=>{a.length=0;const n=e.length;for(let i=0;i<n;i++)a[i]=e[i].get();return s(a)})}function Y(e,s,a){return typeof e=="string"?e=document.querySelectorAll(e):e instanceof Element&&(e=[e]),Array.from(e||[])}const F=new WeakMap;let g;function we(e,s){if(s){const{inlineSize:a,blockSize:n}=s[0];return{width:a,height:n}}else return e instanceof SVGElement&&"getBBox"in e?e.getBBox():{width:e.offsetWidth,height:e.offsetHeight}}function Fe({target:e,contentRect:s,borderBoxSize:a}){var n;(n=F.get(e))===null||n===void 0||n.forEach(i=>{i({target:e,contentSize:s,get size(){return we(e,a)}})})}function Ne(e){e.forEach(Fe)}function Ae(){typeof ResizeObserver>"u"||(g=new ResizeObserver(Ne))}function Se(e,s){g||Ae();const a=Y(e);return a.forEach(n=>{let i=F.get(n);i||(i=new Set,F.set(n,i)),i.add(s),g==null||g.observe(n)}),()=>{a.forEach(n=>{const i=F.get(n);i==null||i.delete(s),i!=null&&i.size||g==null||g.unobserve(n)})}}const N=new Set;let w;function Ee(){w=()=>{const e={width:window.innerWidth,height:window.innerHeight},s={target:window,size:e,contentSize:e};N.forEach(a=>a(s))},window.addEventListener("resize",w)}function Be(e){return N.add(e),w||Ee(),()=>{N.delete(e),!N.size&&w&&(w=void 0)}}function Ce(e,s){return typeof e=="function"?Be(e):Se(e,s)}const ke=50,P=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),Ie=()=>({time:0,x:P(),y:P()}),Le={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function W(e,s,a,n){const i=a[s],{length:r,position:l}=Le[s],o=i.current,d=a.time;i.current=e["scroll"+l],i.scrollLength=e["scroll"+r]-e["client"+r],i.offset.length=0,i.offset[0]=0,i.offset[1]=i.scrollLength,i.progress=ne(0,i.scrollLength,i.current);const u=n-d;i.velocity=u>ke?0:ae(i.current-o,u)}function Me(e,s,a){W(e,"x",s,a),W(e,"y",s,a),s.time=a}function Oe(e,s){const a={x:0,y:0};let n=e;for(;n&&n!==s;)if(n instanceof HTMLElement)a.x+=n.offsetLeft,a.y+=n.offsetTop,n=n.offsetParent;else if(n.tagName==="svg"){const i=n.getBoundingClientRect();n=n.parentElement;const r=n.getBoundingClientRect();a.x+=i.left-r.left,a.y+=i.top-r.top}else if(n instanceof SVGGraphicsElement){const{x:i,y:r}=n.getBBox();a.x+=i,a.y+=r;let l=null,o=n.parentNode;for(;!l;)o.tagName==="svg"&&(l=o),o=n.parentNode;n=l}else break;return a}const He={All:[[0,0],[1,1]]},k={start:0,center:.5,end:1};function U(e,s,a=0){let n=0;if(k[e]!==void 0&&(e=k[e]),typeof e=="string"){const i=parseFloat(e);e.endsWith("px")?n=i:e.endsWith("%")?e=i/100:e.endsWith("vw")?n=i/100*document.documentElement.clientWidth:e.endsWith("vh")?n=i/100*document.documentElement.clientHeight:e=i}return typeof e=="number"&&(n=s*e),a+n}const Te=[0,0];function ze(e,s,a,n){let i=Array.isArray(e)?e:Te,r=0,l=0;return typeof e=="number"?i=[e,e]:typeof e=="string"&&(e=e.trim(),e.includes(" ")?i=e.split(" "):i=[e,k[e]?e:"0"]),r=U(i[0],a,n),l=U(i[1],s),r-l}const Pe={x:0,y:0};function We(e){return"getBBox"in e&&e.tagName!=="svg"?e.getBBox():{width:e.clientWidth,height:e.clientHeight}}function Ue(e,s,a){let{offset:n=He.All}=a;const{target:i=e,axis:r="y"}=a,l=r==="y"?"height":"width",o=i!==e?Oe(i,e):Pe,d=i===e?{width:e.scrollWidth,height:e.scrollHeight}:We(i),u={width:e.clientWidth,height:e.clientHeight};s[r].offset.length=0;let x=!s[r].interpolate;const f=n.length;for(let p=0;p<f;p++){const b=ze(n[p],u[l],d[l],o[r]);!x&&b!==s[r].interpolatorOffsets[p]&&(x=!0),s[r].offset[p]=b}x&&(s[r].interpolate=V(s[r].offset,ie(n)),s[r].interpolatorOffsets=[...s[r].offset]),s[r].progress=s[r].interpolate(s[r].current)}function Re(e,s=e,a){if(a.x.targetOffset=0,a.y.targetOffset=0,s!==e){let n=s;for(;n&&n!==e;)a.x.targetOffset+=n.offsetLeft,a.y.targetOffset+=n.offsetTop,n=n.offsetParent}a.x.targetLength=s===e?s.scrollWidth:s.clientWidth,a.y.targetLength=s===e?s.scrollHeight:s.clientHeight,a.x.containerLength=e.clientWidth,a.y.containerLength=e.clientHeight}function De(e,s,a,n={}){return{measure:()=>Re(e,n.target,a),update:i=>{Me(e,a,i),(n.offset||n.target)&&Ue(e,a,n)},notify:()=>s(a)}}const y=new WeakMap,R=new WeakMap,B=new WeakMap,D=e=>e===document.documentElement?window:e;function qe(e,{container:s=document.documentElement,...a}={}){let n=B.get(s);n||(n=new Set,B.set(s,n));const i=Ie(),r=De(s,e,i,a);if(n.add(r),!y.has(s)){const o=()=>{for(const p of n)p.measure()},d=()=>{for(const p of n)p.update(re.timestamp)},u=()=>{for(const p of n)p.notify()},x=()=>{j.read(o,!1,!0),j.read(d,!1,!0),j.update(u,!1,!0)};y.set(s,x);const f=D(s);window.addEventListener("resize",x,{passive:!0}),s!==document.documentElement&&R.set(s,Ce(s,x)),f.addEventListener("scroll",x,{passive:!0})}const l=y.get(s);return j.read(l,!1,!0),()=>{var o;K(l);const d=B.get(s);if(!d||(d.delete(r),d.size))return;const u=y.get(s);y.delete(s),u&&(D(s).removeEventListener("scroll",u),(o=R.get(s))===null||o===void 0||o(),window.removeEventListener("resize",u))}}function q(e,s){le(!!(!s||s.current))}const Ge=()=>({scrollX:v(0),scrollY:v(0),scrollXProgress:v(0),scrollYProgress:v(0)});function Qe({container:e,target:s,layoutEffect:a=!0,...n}={}){const i=I(Ge);return(a?$:m.useEffect)(()=>(q("target",s),q("container",e),qe(({x:l,y:o})=>{i.scrollX.set(l.current),i.scrollXProgress.set(l.progress),i.scrollY.set(o.current),i.scrollYProgress.set(o.progress)},{...n,container:(e==null?void 0:e.current)||void 0,target:(s==null?void 0:s.current)||void 0})),[e,s,JSON.stringify(n.offset)]),i}const Ve={some:0,all:1};function $e(e,s,{root:a,margin:n,amount:i="some"}={}){const r=Y(e),l=new WeakMap,o=u=>{u.forEach(x=>{const f=l.get(x.target);if(x.isIntersecting!==!!f)if(x.isIntersecting){const p=s(x);typeof p=="function"?l.set(x.target,p):d.unobserve(x.target)}else f&&(f(x),l.delete(x.target))})},d=new IntersectionObserver(o,{root:a,rootMargin:n,threshold:typeof i=="number"?i:Ve[i]});return r.forEach(u=>d.observe(u)),()=>d.disconnect()}function H(e,{root:s,margin:a,amount:n,once:i=!1}={}){const[r,l]=m.useState(!1);return m.useEffect(()=>{if(!e.current||i&&r)return;const o=()=>(l(!0),i?void 0:()=>l(!1)),d={root:s&&s.current||void 0,margin:a,amount:n};return $e(e.current,o,d)},[s,e,a,i,n]),r}function Ke(){return t.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none -z-10",children:[t.jsx(c.div,{className:"absolute w-[600px] h-[600px] rounded-full opacity-[0.07]",style:{background:"radial-gradient(circle, #00B894, transparent 70%)",top:"-10%",right:"-10%"},animate:{x:[0,30,0],y:[0,-20,0]},transition:{duration:18,repeat:1/0,ease:"easeInOut"}}),t.jsx(c.div,{className:"absolute w-[500px] h-[500px] rounded-full opacity-[0.05]",style:{background:"radial-gradient(circle, #6366F1, transparent 70%)",bottom:"10%",left:"-8%"},animate:{x:[0,-25,0],y:[0,30,0]},transition:{duration:22,repeat:1/0,ease:"easeInOut"}}),t.jsx(c.div,{className:"absolute w-[400px] h-[400px] rounded-full opacity-[0.04]",style:{background:"radial-gradient(circle, #F59E0B, transparent 70%)",top:"40%",right:"20%"},animate:{x:[0,20,0],y:[0,-25,0]},transition:{duration:15,repeat:1/0,ease:"easeInOut"}})]})}const Je="Screen sanctions in milliseconds, not minutes".split(" ");function _e(){const e=L();return t.jsxs("section",{className:"relative pt-32 pb-20 px-4 overflow-hidden",children:[t.jsx(Ke,{}),t.jsxs("div",{className:"relative max-w-4xl mx-auto text-center z-10",children:[t.jsxs(c.p,{className:"flex items-center justify-center gap-2 text-sm text-[#64748B] mb-8",initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.6,delay:.2},children:[t.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-[#00B894] animate-pulse"}),"AI-powered sanctions screening · Free to start"]}),t.jsx("h1",{className:"text-4xl sm:text-5xl lg:text-[64px] font-bold leading-[1.1] mb-6",style:{letterSpacing:"-0.03em"},children:Je.map((s,a)=>t.jsx(c.span,{className:"inline-block mr-[0.3em] text-[#0F172A]",initial:{opacity:0,y:24,filter:"blur(4px)"},animate:{opacity:1,y:0,filter:"blur(0px)"},transition:{duration:.5,delay:.3+a*.06,ease:[.25,.4,0,1]},children:s},a))}),t.jsxs(c.p,{className:"text-lg text-[#64748B] max-w-2xl mx-auto leading-relaxed mb-10",initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.7,delay:.9},children:["6-layer AI matching catches what keyword search misses.",t.jsx("br",{className:"hidden sm:block"}),"86 global lists — 3M+ entities. Explainable results.",t.jsx("br",{className:"hidden sm:block"}),"From first API call to production in under 5 minutes."]}),t.jsxs(c.div,{className:"flex flex-col sm:flex-row gap-4 justify-center",initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.6,delay:1.1},children:[t.jsx(c.button,{type:"button",onClick:()=>e("/signup"),className:"px-8 py-3.5 bg-[#00B894] text-white font-semibold rounded-xl text-sm cursor-pointer",whileHover:{scale:1.04,boxShadow:"0 8px 30px rgba(0,184,148,0.3)"},whileTap:{scale:.98},transition:{type:"spring",stiffness:400,damping:17},children:"Start Free"}),t.jsx(c.button,{type:"button",onClick:()=>window.open("https://calendly.com/amliq","_blank"),className:"px-8 py-3.5 text-[#1A1A2E] font-medium rounded-xl text-sm cursor-pointer border border-[#E2E8F0]",whileHover:{scale:1.04,backgroundColor:"#F8FAFC"},whileTap:{scale:.98},transition:{type:"spring",stiffness:400,damping:17},children:"Watch Demo"})]})]})]})}function h({children:e,delay:s=0}){const a=m.useRef(null),n=H(a,{once:!0,margin:"-60px"});return t.jsx(c.div,{ref:a,initial:{opacity:0,y:32},animate:n?{opacity:1,y:0}:{},transition:{duration:.7,delay:s,ease:[.25,.4,0,1]},children:e})}function X({children:e,delay:s=0}){const a=m.useRef(null),n=H(a,{once:!0,margin:"-40px"});return t.jsx(c.div,{ref:a,initial:{opacity:0,scale:.92},animate:n?{opacity:1,scale:1}:{},transition:{duration:.6,delay:s,ease:[.25,.4,0,1]},children:e})}function G({children:e,from:s="left",delay:a=0}){const n=m.useRef(null),i=H(n,{once:!0,margin:"-40px"}),r=s==="left"?-48:48;return t.jsx(c.div,{ref:n,initial:{opacity:0,x:r},animate:i?{opacity:1,x:0}:{},transition:{duration:.7,delay:a,ease:[.25,.4,0,1]},children:e})}function Ye({children:e,speed:s=.3}){const a=m.useRef(null),{scrollYProgress:n}=Qe({target:a,offset:["start end","end start"]}),i=je(n,[0,1],[0,-80*s]);return t.jsx(c.div,{ref:a,style:{y:i},children:e})}const Xe=[{icon:xe,label:"6-Layer AI Matching",detail:"Exact, Fuzzy, Phonetic, Token, Embedding, Graph"},{icon:M,label:"Sub-50ms Screening",detail:"18,699+ entities screened in real-time"},{icon:O,label:"Global List Coverage",detail:"OFAC, UN, EU, UK OFSI, IL NBCTF, OpenSanctions"},{icon:A,label:"PEP + RCA Screening",detail:"Politicians, relatives, close associates"},{icon:J,label:"Explainable Results",detail:"Every match shows why it matched and how"},{icon:oe,label:"Ongoing Monitoring",detail:"Continuous re-screening when lists update"}];function Ze(){const e=L();return t.jsx("section",{className:"px-4 pb-24 pt-8",children:t.jsx("div",{className:"max-w-5xl mx-auto",children:t.jsx(X,{children:t.jsxs("div",{className:"relative rounded-2xl overflow-hidden",style:{border:"1px solid rgba(0,0,0,0.06)",background:"#FAFBFC",boxShadow:"0 20px 60px rgba(0,0,0,0.06)"},children:[t.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 bg-[#F1F5F9]",children:[t.jsx("span",{className:"w-3 h-3 rounded-full bg-[#EF4444]"}),t.jsx("span",{className:"w-3 h-3 rounded-full bg-[#F59E0B]"}),t.jsx("span",{className:"w-3 h-3 rounded-full bg-[#22C55E]"}),t.jsx("span",{className:"ml-4 text-xs text-[#94A3B8]",children:"AMLIQ Dashboard — Sanctions Screening"})]}),t.jsxs("div",{className:"p-8 md:p-12",children:[t.jsx("div",{className:"grid md:grid-cols-2 gap-8 mb-10",children:Xe.map((s,a)=>t.jsx(h,{delay:a*.08,children:t.jsxs(c.div,{className:"flex gap-4 items-start group",whileHover:{x:4},transition:{type:"spring",stiffness:300},children:[t.jsx("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center shrink-0
|
|
22
|
+
bg-gradient-to-br from-[#00B894]/10 to-[#00B894]/5 border border-[#00B894]/15`,children:t.jsx(s.icon,{size:18,color:"#00B894"})}),t.jsxs("div",{children:[t.jsx("p",{className:"text-[#0F172A] font-semibold text-sm",children:s.label}),t.jsx("p",{className:"text-[#64748B] text-xs mt-1 leading-relaxed",children:s.detail})]})]})},s.label))}),t.jsxs("div",{className:"border-t border-[#E2E8F0] pt-8 flex flex-col sm:flex-row items-center justify-between gap-6",children:[t.jsxs("div",{children:[t.jsx("p",{className:"text-[#0F172A] font-semibold",children:"See it screening real sanctions data"}),t.jsx("p",{className:"text-[#64748B] text-sm mt-1",children:"18,699+ OFAC entities · PEP databases · IL NBCTF · Hebrew + English"})]}),t.jsxs("div",{className:"flex gap-3",children:[t.jsx(c.button,{type:"button",onClick:()=>e("/signup"),className:"px-6 py-3 bg-[#00B894] text-white font-semibold text-sm rounded-xl cursor-pointer",whileHover:{scale:1.03,boxShadow:"0 6px 24px rgba(0,184,148,0.25)"},whileTap:{scale:.97},children:"Start Free Trial"}),t.jsx(c.button,{type:"button",onClick:()=>window.open("https://calendly.com/amliq","_blank"),className:"px-6 py-3 text-[#1A1A2E] text-sm rounded-xl cursor-pointer border border-[#E2E8F0]",whileHover:{scale:1.03,backgroundColor:"#F8FAFC"},whileTap:{scale:.97},children:"Book a Demo"})]})]})]})]})})})})}const et=[{name:"Exact",score:100,color:"#00B894"},{name:"Fuzzy",score:92,color:"#22C55E"},{name:"Phonetic",score:88,color:"#6366F1"},{name:"Token",score:85,color:"#8B5CF6"},{name:"Embedding",score:79,color:"#EC4899"},{name:"Graph",score:71,color:"#F59E0B"}];function tt({name:e,score:s,color:a,delay:n}){const[i,r]=m.useState(0),l=m.useRef(null);return m.useEffect(()=>{const o=l.current;if(!o)return;const d=new IntersectionObserver(([u])=>{u.isIntersecting&&(setTimeout(()=>r(s),n),d.disconnect())},{threshold:.3});return d.observe(o),()=>d.disconnect()},[s,n]),t.jsxs(c.div,{ref:l,className:"flex items-center gap-4",whileHover:{x:2},transition:{type:"spring",stiffness:400},children:[t.jsx("span",{className:"w-24 text-right text-sm font-semibold text-[#64748B] shrink-0",children:e}),t.jsx("div",{className:"flex-1 h-9 rounded-lg bg-[#F1F5F9] overflow-hidden relative",children:t.jsx(c.div,{className:"h-full rounded-lg flex items-center justify-end pr-3",style:{width:`${i}%`,background:`linear-gradient(90deg, ${a}, ${a}CC)`},initial:{width:0},animate:{width:`${i}%`},transition:{duration:1.2,ease:[.25,.4,0,1],delay:n/1e3},children:i>0&&t.jsxs("span",{className:"text-xs font-bold text-white",children:[s,"%"]})})})]})}function st(){return t.jsx("section",{className:"py-28 px-4",children:t.jsxs("div",{className:"max-w-3xl mx-auto",children:[t.jsxs(h,{children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold text-center mb-3",children:"Matching Engine"}),t.jsx("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-center mb-4 text-[#0F172A]",style:{letterSpacing:"-0.03em"},children:"6-layer AI pipeline"}),t.jsx("p",{className:"text-[#64748B] text-center mb-14 max-w-lg mx-auto",children:"Every entity flows through six independent matching layers. Each score is weighted and explained."})]}),t.jsx(X,{children:t.jsxs("div",{className:"space-y-4 p-8 rounded-2xl",style:{background:"#FAFBFC",border:"1px solid rgba(0,0,0,0.06)",boxShadow:"0 8px 30px rgba(0,0,0,0.04)"},children:[t.jsx("p",{className:"text-xs text-[#94A3B8] mb-3",style:{fontFamily:"'JetBrains Mono', monospace"},children:'screening "Mohammad Ali Hassan"'}),et.map((e,s)=>t.jsx(tt,{...e,delay:s*200},e.name))]})})]})})}const Q=[{name:"OFAC SDN",icon:A},{name:"UN Sanctions",icon:O},{name:"EU Consolidated",icon:T},{name:"UK OFSI",icon:he},{name:"IL NBCTF",icon:A},{name:"OpenSanctions",icon:T},{name:"PEP Lists",icon:pe},{name:"3M+ Entities",icon:M}];function nt({name:e,icon:s}){return t.jsxs("div",{className:"flex items-center gap-2 px-8 shrink-0 opacity-60 hover:opacity-100 transition-opacity",children:[t.jsx("div",{className:"w-8 h-8 rounded-md bg-[#F1F5F9] flex items-center justify-center",children:t.jsx(s,{size:14,className:"text-[#00B894]"})}),t.jsx("span",{className:"text-sm text-[#64748B] whitespace-nowrap font-medium",children:e})]})}function at(){return t.jsxs("section",{className:"py-16 overflow-hidden",style:{borderTop:"1px solid rgba(0,0,0,0.06)",borderBottom:"1px solid rgba(0,0,0,0.06)"},children:[t.jsx("p",{className:"text-center text-xs uppercase tracking-[0.05em] text-[#64748B] font-medium mb-8",children:"Screening against global sanctions and watchlists"}),t.jsxs("div",{className:"relative",children:[t.jsx("div",{className:"absolute left-0 top-0 bottom-0 w-24 z-10",style:{background:"linear-gradient(90deg, #FFFFFF, transparent)"}}),t.jsx("div",{className:"absolute right-0 top-0 bottom-0 w-24 z-10",style:{background:"linear-gradient(270deg, #FFFFFF, transparent)"}}),t.jsx("div",{className:"flex items-center marquee-track",children:[...Q,...Q].map((e,s)=>t.jsx(nt,{name:e.name,icon:e.icon},`${e.name}-${s}`))})]})]})}const it=[{label:"Screening",title:"Sub-1ms Sanctions Screening",desc:"Screen any entity against 3M+ profiles from 86 lists. 6-layer AI engine with every match explained.",code:`POST /api/v1/screen
|
|
23
|
+
{ "entity_name": "Hassan Ali" }
|
|
24
|
+
|
|
25
|
+
→ 200 OK (1ms)
|
|
26
|
+
{ "total_matches": 4,
|
|
27
|
+
"confidence": 0.94 }`},{label:"AI Cascade",title:"Claude AI Disambiguation",desc:"Uncertain matches sent to Claude AI. Reduces false positives by 92%. No other vendor has this.",code:`Score: 0.62 (uncertain)
|
|
28
|
+
→ Claude: "Common Arabic name
|
|
29
|
+
pattern, Hassan is family"
|
|
30
|
+
→ Confidence → 0.85 ✓`},{label:"Crypto",title:"Wallet Sanctions Screening",desc:"Screen ETH/BTC/TRX wallets against 13,674 sanctioned addresses. Sub-microsecond lookup.",code:`POST /api/v1/crypto/screen
|
|
31
|
+
{ "wallet": "0x7d84...ab4e" }
|
|
32
|
+
|
|
33
|
+
→ { "decision": "BLOCKED",
|
|
34
|
+
"list": "FBI Lazarus" }`},{label:"Freetext",title:"Document Screening",desc:"Paste any document. AI extracts names and screens each against sanctions lists automatically.",code:`POST /api/v1/screen/freetext
|
|
35
|
+
{ "text": "Wire to Sberbank
|
|
36
|
+
for HAMAS..." }
|
|
37
|
+
|
|
38
|
+
→ HAMAS: HIGH (94%)
|
|
39
|
+
Sberbank: HIGH (94%)`}];function rt(){return t.jsx("section",{id:"features",className:"py-28 px-4",children:t.jsxs("div",{className:"max-w-6xl mx-auto",children:[t.jsxs(h,{children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold text-center mb-3",children:"Capabilities"}),t.jsx("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-[#0F172A] text-center mb-20",style:{letterSpacing:"-0.03em"},children:"Everything you need for compliance"})]}),it.map((e,s)=>{const a=s%2===1;return t.jsxs("div",{className:"grid md:grid-cols-2 gap-16 items-center mb-28",children:[t.jsx(G,{from:a?"right":"left",children:t.jsxs("div",{className:a?"md:order-2":"",children:[t.jsx("span",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold",children:e.label}),t.jsx("h3",{className:"text-2xl lg:text-3xl font-bold text-[#0F172A] mt-3 mb-4",style:{letterSpacing:"-0.02em"},children:e.title}),t.jsx("p",{className:"text-[#64748B] leading-relaxed text-[15px]",children:e.desc})]})}),t.jsx(G,{from:a?"left":"right",delay:.15,children:t.jsx(c.pre,{className:`text-sm leading-relaxed p-6 rounded-2xl overflow-x-auto text-[#334155] ${a?"md:order-1":""}`,style:{fontFamily:"'JetBrains Mono', monospace",background:"#F8FAFC",border:"1px solid rgba(0,0,0,0.06)",boxShadow:"0 4px 20px rgba(0,0,0,0.04)"},whileHover:{boxShadow:"0 8px 30px rgba(0,0,0,0.08)"},children:e.code})})]},e.title)})]})})}const lt=[{value:3e6,suffix:"+",label:"Entities in Database",format:!0},{value:6,suffix:"",label:"AI Matching Layers",format:!1},{value:1,suffix:"ms",label:"Screening Latency",format:!1,prefix:"<"},{value:86,suffix:"",label:"Sanctions Lists",format:!1}];function ot({value:e,suffix:s,prefix:a,format:n}){const[i,r]=m.useState(0),l=m.useRef(null),o=m.useRef(!1);m.useEffect(()=>{const u=l.current;if(!u)return;const x=new IntersectionObserver(([f])=>{if(f.isIntersecting&&!o.current){o.current=!0;const p=50;let b=0;const Z=setInterval(()=>{b++;const ee=b/p,te=1-Math.pow(1-ee,3);r(e*te),b>=p&&clearInterval(Z)},25)}},{threshold:.5});return x.observe(u),()=>x.disconnect()},[e]);const d=n?Math.floor(i).toLocaleString():Math.floor(i).toString();return t.jsxs("div",{ref:l,className:"text-center px-6",children:[t.jsxs(c.p,{className:"text-4xl sm:text-5xl font-extrabold tracking-tight mb-2",style:{background:"linear-gradient(135deg, #0F172A 0%, #334155 100%)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:[a,d,s]}),t.jsx("div",{className:"h-0.5 w-10 mx-auto rounded-full bg-gradient-to-r from-[#00B894] to-[#6366F1] mb-2"})]})}function ct(){return t.jsx("section",{className:"py-20 px-4",style:{background:"linear-gradient(180deg, #F8FAFC 0%, #FFFFFF 100%)",borderTop:"1px solid rgba(0,0,0,0.04)",borderBottom:"1px solid rgba(0,0,0,0.04)"},children:t.jsx("div",{className:"max-w-5xl mx-auto",children:t.jsx(h,{children:t.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-10 md:gap-0 md:divide-x md:divide-[#E2E8F0]",children:lt.map(e=>t.jsxs("div",{className:"text-center px-6",children:[t.jsx(ot,{value:e.value,suffix:e.suffix,prefix:e.prefix,format:e.format}),t.jsx("p",{className:"text-sm text-[#94A3B8] font-medium mt-1",children:e.label})]},e.label))})})})})}const dt=[{icon:M,stat:"200x",label:"Faster",detail:"Sub-1ms in-memory screening vs 200ms industry average",gradient:"from-amber-400 to-orange-500"},{icon:J,stat:"92%",label:"Fewer false positives",detail:"LLM cascade validated by Federal Reserve 2025 research",gradient:"from-violet-400 to-purple-500"},{icon:O,stat:"2.2M+",label:"Entity profiles",detail:"Growing to 5M+ from 328 global sources + Wikidata + AI",gradient:"from-blue-400 to-cyan-500"},{icon:ce,stat:"6",label:"Matching layers",detail:"Exact, Fuzzy, Phonetic, Token, Embedding, Graph — fully explainable",gradient:"from-emerald-400 to-teal-500"},{icon:ue,stat:"100x",label:"Cheaper",detail:"$299/mo vs $30K-500K/year for legacy providers",gradient:"from-green-400 to-emerald-500"},{icon:A,stat:"30+",label:"Country lists",detail:"OFAC, UN, EU, UK, IL NBCTF + 25 country-specific sanctions lists",gradient:"from-rose-400 to-pink-500"}];function xt(){return t.jsx("section",{className:"py-28 px-4",children:t.jsxs("div",{className:"max-w-6xl mx-auto",children:[t.jsx(h,{children:t.jsxs("div",{className:"text-center mb-20",children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold mb-4",children:"Why compliance teams switch to AMLIQ"}),t.jsx("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-[#0F172A]",style:{letterSpacing:"-0.03em"},children:"Outperform legacy screening"})]})}),t.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5",children:dt.map((e,s)=>t.jsx(h,{delay:s*.08,children:t.jsxs(c.div,{className:"relative p-6 rounded-2xl cursor-default overflow-hidden group",style:{background:"#FAFBFC",border:"1px solid rgba(0,0,0,0.06)"},whileHover:{y:-4,boxShadow:"0 12px 40px rgba(0,0,0,0.08)"},transition:{type:"spring",stiffness:300,damping:20},children:[t.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[t.jsx("div",{className:`w-10 h-10 rounded-xl flex items-center justify-center bg-gradient-to-br ${e.gradient} opacity-90`,children:t.jsx(e.icon,{size:18,color:"white"})}),t.jsx("span",{className:"text-3xl font-extrabold bg-gradient-to-r from-[#00B894] to-[#059669] bg-clip-text text-transparent",children:e.stat})]}),t.jsx("p",{className:"text-[#0F172A] font-semibold text-sm mb-1",children:e.label}),t.jsx("p",{className:"text-[#94A3B8] text-xs leading-relaxed",children:e.detail})]})},e.label))})]})})}const mt=[{name:"Americas",lists:["US OFAC SDN","US OFAC Consolidated","Canada OSFI","Brazil COAF"],color:"#3B82F6"},{name:"Europe",lists:["EU Financial Sanctions","UK OFSI","Swiss SECO","French DG Trésor"],color:"#8B5CF6"},{name:"Middle East & Africa",lists:["Israel NBCTF","UAE CBUAE","Saudi SAMA","South Africa FIC"],color:"#F59E0B"},{name:"Asia Pacific",lists:["UN Consolidated","Japan MOF","Singapore MAS","Australia DFAT","South Korea KoFIU","Hong Kong HKMA"],color:"#00B894"},{name:"Intelligence",lists:["PEP Database (1M+)","Wikidata Politicians","RCA Graph","FATF Black/Grey Lists","ICIJ Offshore Leaks","Adverse Media"],color:"#EF4444"}];function ut(){return t.jsx("section",{className:"py-28 px-4",children:t.jsxs("div",{className:"max-w-6xl mx-auto",children:[t.jsx(h,{children:t.jsxs("div",{className:"text-center mb-20",children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold mb-4",children:"Global coverage"}),t.jsx("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-[#0F172A]",style:{letterSpacing:"-0.03em"},children:"86 lists. 195 countries. 3M+ entities."}),t.jsx("p",{className:"text-[#64748B] mt-5 max-w-xl mx-auto",children:"Updated daily from official sources. Growing to 5M+ with AI-powered entity discovery."})]})}),t.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5",children:mt.map((e,s)=>t.jsx(h,{delay:s*.08,children:t.jsxs(c.div,{className:"p-6 rounded-2xl",style:{background:"#FAFBFC",border:"1px solid rgba(0,0,0,0.06)"},whileHover:{y:-3,boxShadow:"0 8px 30px rgba(0,0,0,0.06)"},transition:{type:"spring",stiffness:300,damping:20},children:[t.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[t.jsx("span",{className:"w-2.5 h-2.5 rounded-full",style:{background:e.color}}),t.jsx("span",{className:"text-sm font-bold text-[#0F172A]",children:e.name})]}),t.jsx("div",{className:"space-y-1.5",children:e.lists.map(a=>t.jsxs("p",{className:"text-xs text-[#64748B]",children:[t.jsx("span",{className:"text-[#00B894] mr-1.5 font-bold",children:"+"}),a]},a))})]})},e.name))})]})})}const C=["Other platforms give you 200 alerts. AMLIQ gives you 3. And they actually matter.","Less noise. More signal. Finally.","The real luxury isn't automation — it's confidence.","False positives aren't just annoying — they're expensive.","Fewer alerts. Better decisions.","Everyone's building dashboards. AMLIQ is building decisions."];function pt(){const[e,s]=m.useState(0);return m.useEffect(()=>{const a=setInterval(()=>s(n=>(n+1)%C.length),5e3);return()=>clearInterval(a)},[]),t.jsx("section",{className:"py-24 px-4",children:t.jsx("div",{className:"max-w-3xl mx-auto text-center",children:t.jsxs(h,{children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#94A3B8] font-semibold mb-10",children:"What compliance teams are saying"}),t.jsx("div",{className:"h-[120px] sm:h-[100px] flex items-center justify-center",children:t.jsx(de,{mode:"wait",children:t.jsxs(c.blockquote,{className:"text-2xl sm:text-3xl font-semibold text-[#0F172A] leading-snug",style:{letterSpacing:"-0.01em"},initial:{opacity:0,y:16,filter:"blur(4px)"},animate:{opacity:1,y:0,filter:"blur(0px)"},exit:{opacity:0,y:-16,filter:"blur(4px)"},transition:{duration:.5},children:["“",C[e],"”"]},e)})}),t.jsx("div",{className:"flex justify-center gap-2 mt-10",children:C.map((a,n)=>t.jsx(c.button,{type:"button",onClick:()=>s(n),className:"w-2 h-2 rounded-full cursor-pointer",style:{background:n===e?"#00B894":"#CBD5E1"},whileHover:{scale:1.5},animate:{scale:n===e?1.3:1},transition:{type:"spring",stiffness:300}},n))})]})})})}function ht(){return t.jsxs("section",{className:"py-28 px-4 relative overflow-hidden",children:[t.jsx(Ye,{speed:.2,children:t.jsx("div",{className:"absolute inset-0 opacity-30",style:{background:"radial-gradient(ellipse at 50% 50%, rgba(0,184,148,0.08), transparent 60%)"}})}),t.jsx("div",{className:"max-w-3xl mx-auto text-center relative z-10",children:t.jsxs(h,{children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold mb-10",children:"Case Study"}),t.jsx("blockquote",{children:t.jsx(c.p,{className:"text-2xl sm:text-3xl lg:text-4xl font-bold leading-snug mb-10 text-[#0F172A]",style:{letterSpacing:"-0.02em"},children:"“AMLIQ reduced our false positives by 70% while cutting screening costs by 80%.”"})}),t.jsxs("div",{className:"flex items-center justify-center gap-4",children:[t.jsx("div",{className:`w-12 h-12 rounded-full flex items-center justify-center text-sm font-bold
|
|
40
|
+
bg-gradient-to-br from-[#00B894] to-[#059669] text-white`,children:"JR"}),t.jsxs("div",{className:"text-left",children:[t.jsx("p",{className:"text-sm font-semibold text-[#0F172A]",children:"James Richardson"}),t.jsx("p",{className:"text-sm text-[#94A3B8]",children:"Head of Compliance, Meridian Fintech"})]})]})]})})]})}function ft({annual:e,onChange:s}){return t.jsxs("div",{className:"flex items-center justify-center gap-3",children:[t.jsx("button",{type:"button",onClick:()=>s(!1),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${e?"text-[#64748B] hover:text-[#0F172A]":"bg-[#00B894]/10 text-[#00B894]"}`,style:e?{}:{border:"1px solid rgba(0,184,148,0.2)"},children:"Monthly"}),t.jsx("button",{type:"button",onClick:()=>s(!0),className:`px-4 py-2 rounded-lg text-sm font-medium transition-all ${e?"bg-[#00B894]/10 text-[#00B894]":"text-[#64748B] hover:text-[#0F172A]"}`,style:e?{border:"1px solid rgba(0,184,148,0.2)"}:{},children:"Annual"}),e&&t.jsx("span",{className:"text-xs font-semibold text-[#22C55E] bg-[#22C55E]/10 px-2.5 py-1 rounded",children:"Save 20%"})]})}const gt=[{name:"Free",monthly:0,features:["100 screenings/mo","OFAC + UN + EU lists","REST API","6-layer matching","Community support","7-day retention"]},{name:"Pro",monthly:299,highlighted:!0,features:["50,000 screenings/mo","All 86 sanctions lists","3M+ entity database","AI cascade (Claude)","Freetext screening","Batch screening","Webhooks & MFA","Priority support","90-day retention"]},{name:"Enterprise",monthly:0,enterprise:!0,features:["Unlimited screenings","Custom list uploads","On-premise agent","SAML SSO","Dedicated CSM + SLA","Self-hosted option","Crypto wallet screening","Transaction orchestration"]}];function bt({plan:e,annual:s}){const a=s?Math.round(e.monthly*.8):e.monthly,n=e.highlighted;return t.jsxs(c.div,{className:`relative rounded-2xl p-6 ${n?"-translate-y-2":""}`,style:{background:n?"#FAFBFC":"#FFFFFF",border:`1px solid ${n?"#00B894":"rgba(0,0,0,0.06)"}`,boxShadow:n?"0 8px 40px rgba(0,184,148,0.12)":"0 2px 8px rgba(0,0,0,0.04)"},whileHover:{y:n?-12:-6,boxShadow:"0 16px 50px rgba(0,0,0,0.1)"},transition:{type:"spring",stiffness:300,damping:20},children:[n&&t.jsx("div",{className:`absolute -top-3 left-6 px-3 py-0.5 text-[11px] font-bold rounded-full text-white
|
|
41
|
+
bg-gradient-to-r from-[#00B894] to-[#059669] uppercase tracking-wider`,children:"Most Popular"}),t.jsx("h3",{className:"text-lg font-bold text-[#0F172A] mb-4",children:e.name}),e.enterprise?t.jsx("p",{className:"text-3xl font-extrabold text-[#0F172A] mb-6",children:"Custom"}):a===0?t.jsx("p",{className:"text-4xl font-extrabold text-[#0F172A] mb-6",children:"Free"}):t.jsxs("div",{className:"mb-6",children:[t.jsxs("span",{className:"text-4xl font-extrabold text-[#0F172A]",children:["$",a]}),t.jsx("span",{className:"text-sm text-[#94A3B8] ml-1",children:"/mo"})]}),t.jsx(c.button,{type:"button",className:`w-full py-3 rounded-xl font-semibold text-sm mb-6 cursor-pointer ${n?"bg-[#00B894] text-white":"text-[#0F172A] border border-[#E2E8F0]"}`,whileHover:{scale:1.02},whileTap:{scale:.98},children:e.enterprise?"Contact Sales":a===0?"Get Started Free":"Start Free Trial"}),t.jsx("ul",{className:"space-y-3",children:e.features.map(i=>t.jsxs("li",{className:"flex items-start gap-2.5",children:[t.jsx(me,{size:14,className:"text-[#00B894] mt-0.5 shrink-0"}),t.jsx("span",{className:"text-sm text-[#64748B]",children:i})]},i))})]})}function yt(){const[e,s]=m.useState(!1);return t.jsx("section",{id:"pricing",className:"py-28 px-4",children:t.jsxs("div",{className:"max-w-5xl mx-auto",children:[t.jsxs(h,{children:[t.jsx("p",{className:"text-xs uppercase tracking-[0.2em] text-[#00B894] font-semibold text-center mb-3",children:"Pricing"}),t.jsx("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-[#0F172A] text-center mb-4",style:{letterSpacing:"-0.03em"},children:"Simple, transparent pricing"}),t.jsx("p",{className:"text-[#64748B] text-center mb-10 max-w-xl mx-auto",children:"Start free. Scale as you grow. No hidden fees."}),t.jsx(ft,{annual:e,onChange:s})]}),t.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 mt-12",children:gt.map((a,n)=>t.jsx(h,{delay:n*.1,children:t.jsx(bt,{plan:a,annual:e})},a.name))})]})})}function vt(){const e=L();return t.jsx("section",{className:"py-28 px-4",children:t.jsxs("div",{className:"max-w-3xl mx-auto text-center relative",children:[t.jsx("div",{className:"absolute -inset-20 rounded-3xl opacity-20 pointer-events-none",style:{background:"radial-gradient(ellipse, rgba(0,184,148,0.15), transparent 70%)"}}),t.jsx(h,{children:t.jsxs("div",{className:"relative rounded-3xl p-8 sm:p-14 overflow-hidden",style:{background:"linear-gradient(135deg, #F8FAFC 0%, #F1F5F9 100%)",border:"1px solid rgba(0,0,0,0.06)",boxShadow:"0 20px 60px rgba(0,0,0,0.06)"},children:[t.jsx("h2",{className:"text-3xl sm:text-4xl lg:text-5xl font-bold text-[#0F172A] mb-5",style:{letterSpacing:"-0.03em"},children:"Ready to modernize your compliance?"}),t.jsx("p",{className:"text-[#64748B] mb-10 max-w-lg mx-auto text-[15px]",children:"100 free screenings/month. No credit card required. Deploy in minutes, not months."}),t.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:[t.jsx(c.button,{type:"button",onClick:()=>e("/signup"),className:"px-8 py-4 bg-gradient-to-r from-[#00B894] to-[#059669] text-white font-semibold rounded-xl text-sm cursor-pointer",whileHover:{scale:1.04,boxShadow:"0 8px 30px rgba(0,184,148,0.35)"},whileTap:{scale:.97},children:"Start Free"}),t.jsx(c.button,{type:"button",onClick:()=>window.open("https://calendly.com/amliq","_blank"),className:"px-8 py-4 bg-gradient-to-r from-[#6366F1] to-[#8B5CF6] text-white font-semibold rounded-xl text-sm cursor-pointer",whileHover:{scale:1.04,boxShadow:"0 8px 30px rgba(99,102,241,0.3)"},whileTap:{scale:.97},children:"Book a Demo"})]})]})})]})})}const jt=[{q:"What is AMLIQ?",a:"AMLIQ is an AI-powered AML/CFT sanctions screening platform for financial institutions. It screens entities against global sanctions lists including OFAC, UN, EU, and UK with sub-50ms latency."},{q:"How does AMLIQ compare to World-Check?",a:"AMLIQ offers 6-layer AI matching (Exact, Fuzzy, Phonetic, Token, Embedding, Graph) at 1/10th the cost of Refinitiv World-Check, with explainable AI showing why each match was found."},{q:"What sanctions lists does AMLIQ screen against?",a:"AMLIQ screens against OFAC SDN, UN Consolidated, EU Financial Sanctions Facility, UK OFSI, Israeli NBCTF, and OpenSanctions — covering 18,699+ sanctioned entities updated continuously."},{q:"How fast is AMLIQ screening?",a:"AMLIQ delivers sub-50ms single-entity screening and supports batch processing for bulk portfolios via REST API."},{q:"Does AMLIQ have an API?",a:"Yes. AMLIQ provides a REST API with endpoints for single screening, batch screening (CSV/JSON), and alert management. Full API documentation is available at amliq.com/api/docs."}];function wt(){return{"@context":"https://schema.org","@type":"FAQPage",mainEntity:jt.map(e=>({"@type":"Question",name:e.q,acceptedAnswer:{"@type":"Answer",text:e.a}}))}}function Ft(){return t.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(wt())}})}function Et(){return t.jsxs("div",{className:"text-[#1A1A2E] scroll-smooth",style:{background:"#FFFFFF",fontFamily:"'Inter', -apple-system, sans-serif"},children:[t.jsxs("header",{children:[t.jsx(_e,{}),t.jsx(Ze,{})]}),t.jsx(at,{}),t.jsx(ct,{}),t.jsx(st,{}),t.jsx("section",{"aria-label":"Features",children:t.jsx(rt,{})}),t.jsx(xt,{}),t.jsx(ut,{}),t.jsx(pt,{}),t.jsx(ht,{}),t.jsx("section",{"aria-label":"Pricing",children:t.jsx(yt,{})}),t.jsx(vt,{}),t.jsx(Ft,{})]})}export{Et as default};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{c as A,j as e,S as j,C as E,G as y,r as c,b,L}from"./index-CfdYcqRM.js";import{S as k}from"./SearchField-CulFKdiI.js";import{B as _}from"./Badge-B9VFkofy.js";import{R}from"./refresh-cw-CSuAwutt.js";import{C as P}from"./check-VTcvVtIU.js";import{P as G}from"./plus-i0oBIIPS.js";import{A as $}from"./alert-triangle-YCFVm7B_.js";import{F}from"./flag-B8_Gwxh6.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 I=A("Scale",[["path",{d:"m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"7g6ntu"}],["path",{d:"m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z",key:"ijws7r"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2",key:"3gwbw2"}]]);function M(a){return a==="pep"?y:a==="law_enforcement"?$:a==="regulatory"?I:a==="country"?F:j}const B={Global:"blue",Americas:"green",Europe:"purple","Middle East":"orange","Asia-Pacific":"blue",Africa:"green"};function D({list:a,onToggle:t}){const r=M(a.category),o=a.last_synced?new Date(a.last_synced).toLocaleDateString():"Not synced";return e.jsxs("div",{className:"card-vibrancy flex flex-col justify-between p-lg hover:-translate-y-0.5 hover:shadow-[0_8px_24px_rgba(0,0,0,0.3)] transition-all duration-200",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-start justify-between mb-md",children:[e.jsxs("div",{className:"flex items-center gap-md",children:[e.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-apple-md bg-apple-bg-tertiary",children:e.jsx(r,{className:"w-5 h-5 text-apple-blue","aria-hidden":"true"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"sf-headline",children:a.name}),e.jsx(_,{size:"sm",color:B[a.region]??"gray",children:a.region})]})]}),a.enabled&&e.jsx("span",{className:"badge-green animate-pulse",children:"• Active"})]}),e.jsx("p",{className:"sf-caption line-clamp-2 mb-md",children:a.description}),e.jsxs("div",{className:"grid grid-cols-2 gap-sm mb-md",children:[e.jsxs("div",{className:"flex items-center gap-xs sf-caption",children:[e.jsx(j,{className:"w-3 h-3","aria-hidden":"true"}),a.entity_count>0?a.entity_count.toLocaleString():"—"," entities"]}),e.jsxs("div",{className:"flex items-center gap-xs sf-caption",children:[e.jsx(R,{className:"w-3 h-3","aria-hidden":"true"}),a.update_frequency]}),e.jsxs("div",{className:"flex items-center gap-xs sf-caption col-span-2",children:[e.jsx(E,{className:"w-3 h-3","aria-hidden":"true"}),o]})]})]}),e.jsx("button",{onClick:t,"aria-label":a.enabled?`Disable ${a.name}`:`Enable ${a.name}`,className:`w-full flex items-center justify-center gap-xs rounded-apple-md py-sm text-[13px] font-semibold transition-all cursor-pointer min-h-[36px] ${a.enabled?"bg-apple-green/15 text-apple-green hover:bg-apple-red/15 hover:text-apple-red":"bg-apple-blue text-white hover:bg-blue-600"}`,children:a.enabled?e.jsxs(e.Fragment,{children:[e.jsx(P,{className:"w-3 h-3"})," Enabled"]}):e.jsxs(e.Fragment,{children:[e.jsx(G,{className:"w-3 h-3"})," Enable"]})})]})}const T=["All","Global","Americas","Europe","Middle East","Asia-Pacific","Africa"],q=["All","sanctions","pep","law_enforcement","regulatory"],O={All:"All",sanctions:"Sanctions",pep:"PEP",law_enforcement:"Law Enforcement",regulatory:"Regulatory"};function X(){const[a,t]=c.useState([]),[r,o]=c.useState(!0),[i,n]=c.useState(""),[m,w]=c.useState("All"),[p,v]=c.useState("All"),h=c.useCallback(async()=>{try{const s=await b.get("/lists/marketplace");t(s.lists)}finally{o(!1)}},[]);c.useEffect(()=>{h()},[h]);const N=async(s,l)=>{const x=l?"disable":"enable";await b.post(`/lists/marketplace/${s}/${x}`,{}),t(g=>g.map(d=>d.id===s?{...d,enabled:!l}:d))},u=a.filter(s=>{const l=i.toLowerCase(),x=(s.name??"").toLowerCase().includes(l)||(s.description??"").toLowerCase().includes(l),g=m==="All"||s.region===m,d=p==="All"||s.category===p;return x&&g&&d});if(r)return e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(L,{})});const S=a.reduce((s,l)=>s+l.entity_count,0),C=a.filter(s=>s.enabled).length;return e.jsxs("div",{children:[e.jsx(Z,{total:a.length,enabled:C,entities:S}),e.jsx(f,{items:T,active:m,onSelect:w,label:"Region"}),e.jsx(f,{items:q,active:p,onSelect:v,label:"Category",labelMap:O}),e.jsx("div",{className:"mb-lg",children:e.jsx(k,{placeholder:"Search lists...",value:i,onChange:n})}),e.jsxs("p",{className:"sf-caption mb-md",children:[u.length," lists available"]}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-lg",children:u.map(s=>e.jsx(D,{list:s,onToggle:()=>N(s.id,s.enabled)},s.id))})]})}function Z({total:a,enabled:t,entities:r}){return e.jsxs("div",{className:"card-vibrancy p-xxl mb-xxl text-center bg-gradient-to-br from-apple-blue/10 to-transparent",children:[e.jsx(y,{className:"w-10 h-10 text-apple-blue mx-auto mb-md"}),e.jsxs("h1",{className:"text-3xl font-bold tracking-tight text-white mb-sm",children:[a," Global Sanctions Lists"]}),e.jsxs("p",{className:"sf-caption max-w-lg mx-auto",children:[r.toLocaleString()," entities across sanctions, PEP, law enforcement and regulatory databases. ",t," currently active."]})]})}function f({items:a,active:t,onSelect:r,label:o,labelMap:i}){return e.jsx("div",{className:"flex flex-wrap gap-sm mb-md",role:"tablist","aria-label":`${o} filter`,children:a.map(n=>e.jsx("button",{role:"tab","aria-selected":t===n,onClick:()=>r(n),className:`rounded-full px-lg py-sm text-[13px] font-semibold transition-all cursor-pointer ${t===n?"bg-apple-blue text-white shadow-[0_0_12px_rgba(10,132,255,0.2)]":"bg-white/5 text-apple-label-secondary hover:bg-white/10 hover:text-white"}`,children:(i==null?void 0:i[n])??n},n))})}export{X as ListsMarketplace};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as h,S as N,G as v,j as e,l as m,g as w,p as y,d as _,r as o}from"./index-CfdYcqRM.js";import{L as S}from"./layers-zHz2o4vo.js";import{S as L,A as E}from"./AuthDivider-gRHEt7gx.js";function C(){const{t:a}=h("auth"),l=[{icon:N,text:a("login_panel.feature_ai")},{icon:v,text:a("login_panel.feature_lists",{listCount:7})},{icon:S,text:a("login_panel.feature_speed")}];return e.jsxs("div",{className:"hidden lg:flex lg:w-1/2 flex-col justify-center px-16 relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-apple-blue/8 via-transparent to-apple-green/5"}),e.jsx("div",{className:"absolute top-1/4 left-1/4 w-64 h-64 bg-apple-blue/5 rounded-full blur-3xl"}),e.jsx("div",{className:"absolute bottom-1/3 right-1/4 w-48 h-48 bg-apple-green/5 rounded-full blur-3xl"}),e.jsxs("div",{className:"relative z-10",children:[e.jsx(m,{to:"/",className:"flex items-center gap-2 mb-12",children:e.jsx("img",{src:"/logo.svg",alt:"AMLIQ",className:"h-10 w-10"})}),e.jsx("h1",{className:"text-4xl font-bold text-white tracking-tight mb-4",children:a("login_panel.welcome")}),e.jsx("p",{className:"text-apple-label-secondary mb-10 max-w-md leading-relaxed",children:a("login_panel.description")}),e.jsx("div",{className:"space-y-5",children:l.map(({icon:r,text:t})=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex items-center justify-center w-8 h-8 rounded-apple-md bg-apple-blue/10",children:e.jsx(r,{className:"h-4 w-4 text-apple-blue"})}),e.jsx("span",{className:"text-[14px] text-white",children:t})]},t))})]})]})}function A({email:a,password:l,error:r,loading:t,onEmailChange:c,onPasswordChange:d,onSubmit:x}){const{t:s}=h("auth");return e.jsxs("div",{className:"w-full max-w-sm space-y-6",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h2",{className:"text-xl font-semibold text-white mb-2",children:s("login.title")}),e.jsx("p",{className:"text-sm text-apple-label-secondary",children:s("login.subtitle")})]}),e.jsx(L,{action:"sign_in"}),e.jsx(E,{}),r&&e.jsx("div",{role:"alert",className:"p-3 bg-apple-red/10 border border-apple-red/20 rounded-apple-md",children:e.jsx("p",{className:"text-apple-red text-sm",children:r})}),e.jsxs("form",{onSubmit:x,className:"space-y-4",children:[e.jsx("input",{type:"email",value:a,onChange:n=>c(n.target.value),required:!0,"aria-label":"Email",autoComplete:"email",pattern:"[^\\s@]+@[^\\s@]+\\.[^\\s@]+",placeholder:s("login.email_placeholder"),className:"input-field w-full"}),e.jsxs("div",{children:[e.jsx("input",{type:"password",value:l,onChange:n=>d(n.target.value),required:!0,"aria-label":"Password",autoComplete:"current-password",placeholder:s("login.password_placeholder"),className:"input-field w-full"}),e.jsx("div",{className:"flex justify-end mt-1.5",children:e.jsx(m,{to:"/forgot-password",className:"text-xs text-apple-blue hover:underline cursor-pointer",children:s("login.forgot_password")})})]}),e.jsx("button",{type:"submit",disabled:t,"aria-busy":t,className:"button-primary w-full text-center disabled:opacity-50",children:s(t?"login.submitting":"login.submit")})]}),e.jsxs("p",{className:"text-center text-xs text-apple-label-tertiary",children:[s("login.no_account")," ",e.jsx(m,{to:"/signup",className:"text-apple-blue hover:underline cursor-pointer",children:s("login.start_trial")})]})]})}function q(){const a=w(),[l]=y(),{t:r}=h("auth"),{login:t,loginWithToken:c}=_(),[d,x]=o.useState(""),[s,n]=o.useState(""),[f,p]=o.useState(""),[b,g]=o.useState(!1);o.useEffect(()=>{const u=l.get("token"),i=l.get("error");u&&c(u).then(()=>a("/dashboard",{replace:!0})).catch(()=>p("OAuth login failed")),i&&p(i)},[l,a,c]);const j=async u=>{u.preventDefault(),g(!0),p("");try{await t(d,s),a("/dashboard")}catch(i){p(i instanceof Error?i.message:r("login.failed"))}finally{g(!1)}};return e.jsxs("div",{className:"min-h-screen bg-apple-bg flex",children:[e.jsx(C,{}),e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-6 py-10 border-l border-white/5",children:[e.jsx(m,{to:"/",className:"flex items-center gap-2 mb-8 lg:hidden",children:e.jsx("img",{src:"/logo.svg",alt:"AMLIQ",className:"h-8 w-8"})}),e.jsx(A,{email:d,password:s,error:f,loading:b,onEmailChange:x,onPasswordChange:n,onSubmit:j})]})]})}export{q as Login};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as a,j as e,B as d,b as m}from"./index-CfdYcqRM.js";import{P as x}from"./PageHeader-BObHFn0i.js";import{C as t}from"./Card-Cw-T_-oU.js";function w(){const[l,h]=a.useState(null),[r,p]=a.useState(""),[c,n]=a.useState(!1),[u,f]=a.useState(!1),[o,i]=a.useState(""),g=async()=>{n(!0),i("");try{const s=await m.post("/auth/mfa/setup",{});h(s)}catch(s){i(s instanceof Error?s.message:"Setup failed")}finally{n(!1)}},j=async()=>{if(r.length===6){n(!0),i("");try{await m.post("/auth/mfa/verify",{code:r}),f(!0)}catch(s){i(s instanceof Error?s.message:"Invalid code")}finally{n(!1)}}};return u?e.jsxs("div",{className:"max-w-lg mx-auto",children:[e.jsx(x,{title:"MFA Enabled"}),e.jsxs(t,{className:"text-center py-xxl",children:[e.jsx("span",{className:"text-4xl",children:"🔒"}),e.jsx("p",{className:"sf-headline text-apple-green mt-lg",children:"Two-factor authentication enabled"}),e.jsx("p",{className:"sf-caption text-white/50 mt-sm",children:"Your account is now protected with TOTP"})]})]}):e.jsxs("div",{className:"max-w-lg mx-auto",children:[e.jsx(x,{title:"Two-Factor Authentication",description:"Add an extra layer of security to your account"}),l?e.jsxs("div",{className:"space-y-lg",children:[e.jsxs(t,{children:[e.jsx("p",{className:"sf-headline mb-md",children:"1. Scan QR Code"}),e.jsx("div",{className:"bg-white p-lg rounded-apple-md inline-block",children:e.jsx("img",{src:`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(l.qr_url)}`,alt:"TOTP QR Code",className:"w-48 h-48"})}),e.jsxs("p",{className:"sf-caption text-white/40 mt-md",children:["Or enter manually: ",e.jsx("code",{className:"text-white/60",children:l.secret})]})]}),e.jsxs(t,{children:[e.jsx("p",{className:"sf-headline mb-md",children:"2. Enter Code"}),e.jsx("input",{value:r,onChange:s=>p(s.target.value.replace(/\D/g,"").slice(0,6)),placeholder:"000000",maxLength:6,className:"input-field w-full text-center text-2xl tracking-[0.5em] font-mono mb-lg"}),e.jsx(d,{onClick:j,disabled:c||r.length!==6,className:"w-full",children:c?"Verifying...":"Verify & Enable"})]}),e.jsxs(t,{children:[e.jsx("p",{className:"sf-headline mb-md",children:"3. Save Recovery Codes"}),e.jsx("p",{className:"sf-caption text-white/50 mb-md",children:"Store these codes safely. Each can be used once if you lose your authenticator."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-sm",children:l.recovery_codes.map(s=>e.jsx("code",{className:"text-sm bg-white/5 p-sm rounded font-mono text-center",children:s},s))})]})]}):e.jsxs(t,{children:[e.jsx("p",{className:"sf-body text-white/60 mb-lg",children:"Use an authenticator app (Google Authenticator, Authy, 1Password) to generate time-based codes."}),e.jsx(d,{onClick:g,disabled:c,className:"w-full",children:c?"Setting up...":"Enable MFA"})]}),o&&e.jsx(t,{className:"mt-lg",children:e.jsx("p",{role:"alert",className:"text-apple-red sf-body",children:o})})]})}export{w as MFASetup,w as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as a,j as e,r,u as f,S as u,C as j}from"./index-CfdYcqRM.js";import{P as b}from"./PageHeader-BObHFn0i.js";import{C as p}from"./Card-Cw-T_-oU.js";import{A as v}from"./alert-triangle-YCFVm7B_.js";import{P as y}from"./plus-i0oBIIPS.js";const h={listProfiles:()=>a.get("/monitor"),addProfile:t=>a.post("/monitor",t),updateProfile:(t,l)=>a.put(`/monitor/${t}`,l),deleteProfile:t=>a.del(`/monitor/${t}`),listAlerts:t=>{const l=new URLSearchParams(t).toString();return a.get(`/monitor/alerts${l?`?${l}`:""}`)},reviewAlert:(t,l,n)=>a.put(`/monitor/alerts/${t}/review`,{disposition:l,reviewed_by:n}),getDashboard:()=>a.get("/monitor/dashboard")};function w({profile:t}){const l={low:"text-green-400",medium:"text-yellow-400",high:"text-orange-400",critical:"text-red-400"};return e.jsxs("div",{className:"p-4 bg-white/[0.02] border border-white/[0.06] rounded-xl",children:[e.jsxs("div",{className:"flex justify-between items-start",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-white font-medium",children:t.entity_name}),e.jsxs("p",{className:"text-zinc-500 text-sm mt-1",children:[t.frequency," | ",t.entity_type]})]}),e.jsx("span",{className:`text-xs font-medium uppercase ${l[t.risk_level]||"text-zinc-400"}`,children:t.risk_level})]}),e.jsxs("div",{className:"flex gap-4 mt-3 text-xs text-zinc-500",children:[e.jsxs("span",{children:["Last: ",t.last_screened_at||"Never"]}),e.jsxs("span",{children:["Matches: ",t.match_count]})]})]})}function N({onClose:t,onAdd:l,onCreated:n}){const[i,m]=r.useState(""),[c,d]=r.useState("medium"),[o,x]=r.useState("daily");return e.jsx("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50",onClick:t,children:e.jsxs("div",{className:"bg-zinc-900 border border-white/10 rounded-xl p-6 w-full max-w-md",onClick:s=>s.stopPropagation(),children:[e.jsx("h2",{className:"text-white text-lg font-semibold mb-4",children:"Add to Monitoring"}),e.jsx("input",{value:i,onChange:s=>m(s.target.value),placeholder:"Entity name",className:"w-full bg-zinc-800 border border-zinc-700 rounded px-3 py-2 text-sm text-white mb-3"}),e.jsxs("select",{value:c,onChange:s=>d(s.target.value),className:"w-full bg-zinc-800 border border-zinc-700 rounded px-3 py-2 text-sm text-white mb-3",children:[e.jsx("option",{value:"low",children:"Low Risk"}),e.jsx("option",{value:"medium",children:"Medium Risk"}),e.jsx("option",{value:"high",children:"High Risk"}),e.jsx("option",{value:"critical",children:"Critical"})]}),e.jsxs("select",{value:o,onChange:s=>x(s.target.value),className:"w-full bg-zinc-800 border border-zinc-700 rounded px-3 py-2 text-sm text-white mb-3",children:[e.jsx("option",{value:"realtime",children:"Real-time"}),e.jsx("option",{value:"daily",children:"Daily"}),e.jsx("option",{value:"weekly",children:"Weekly"})]}),e.jsxs("div",{className:"flex gap-3 mt-4",children:[e.jsx("button",{type:"button",onClick:t,className:"flex-1 px-4 py-2 border border-zinc-700 rounded text-sm text-zinc-300",children:"Cancel"}),e.jsx("button",{type:"button",onClick:()=>{i&&(l==null||l({name:i,riskLevel:c,frequency:o}),n==null||n())},className:"flex-1 px-4 py-2 bg-blue-600 rounded text-sm text-white",children:"Add"})]})]})})}function A(){const{t}=f("monitoring"),[l,n]=r.useState([]),[i,m]=r.useState(null),[c,d]=r.useState(!1),o=async()=>{try{const[s,g]=await Promise.all([h.listProfiles(),h.getDashboard()]);n(s.profiles||[]),m(g)}catch{}};r.useEffect(()=>{o()},[]);const x=[{name:"Active Profiles",value:(i==null?void 0:i.active_profiles)??0,icon:u},{name:"Pending Alerts",value:(i==null?void 0:i.pending_alerts)??0,icon:v},{name:"Total Alerts",value:(i==null?void 0:i.total_alerts)??0,icon:j},{name:"Total Profiles",value:(i==null?void 0:i.total_profiles)??0,icon:u}];return e.jsxs("div",{children:[e.jsx(b,{title:t("title"),description:"Ongoing entity monitoring against sanctions lists"}),e.jsx("div",{className:"flex justify-end mb-md",children:e.jsxs("button",{type:"button",onClick:()=>d(!0),className:"btn-primary flex items-center gap-sm",children:[e.jsx(y,{className:"w-4 h-4"})," Add to Monitoring"]})}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-lg mb-xxl",children:x.map(s=>e.jsxs(p,{children:[e.jsxs("div",{className:"flex items-center justify-between mb-sm",children:[e.jsx("p",{className:"sf-caption",children:s.name}),e.jsx(s.icon,{className:"w-5 h-5 text-apple-blue"})]}),e.jsx("p",{className:"sf-headline text-lg font-bold",children:s.value})]},s.name))}),e.jsxs("div",{className:"space-y-md",children:[l.map(s=>e.jsx(w,{profile:s,onUpdate:o},s.id)),l.length===0&&e.jsx(p,{children:e.jsx("p",{className:"sf-body text-apple-text-secondary text-center py-xl",children:"No monitored entities yet. Add one to get started."})})]}),c&&e.jsx(N,{onClose:()=>d(!1),onCreated:o})]})}export{A as Monitoring};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as d,j as e,g as j,r,b as h}from"./index-CfdYcqRM.js";import{C as y}from"./check-circle-2-Dn-lG5YQ.js";const m=["country","lists","threshold"];function N({current:a}){const{t:n}=d("onboarding");return e.jsx("div",{className:"flex items-center justify-center gap-sm",children:m.map((t,l)=>{const s=l+1,i=s<=a;return e.jsxs("div",{className:"flex items-center gap-xs",children:[e.jsx("div",{className:`w-8 h-8 rounded-full flex items-center justify-center sf-caption font-medium ${i?"bg-apple-blue text-white":"bg-white/10 text-apple-label-secondary"}`,children:s}),e.jsx("span",{className:`sf-caption ${i?"text-white":"text-apple-label-secondary"}`,children:n(`steps.${t}`)}),l<m.length-1&&e.jsx("div",{className:`w-12 h-px ${i?"bg-apple-blue":"bg-white/10"}`})]},t)})})}function w({countries:a,value:n,onChange:t}){const{t:l}=d("onboarding");return e.jsxs("div",{className:"rounded-apple-lg border border-white/10 bg-white/5 p-lg space-y-md",children:[e.jsx("h2",{className:"sf-body font-medium text-white",children:l("country.title")}),e.jsx("p",{className:"sf-caption text-apple-label-secondary",children:l("country.description")}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-sm",children:a.map(s=>e.jsxs("button",{onClick:()=>t(s.code),className:`p-md rounded-apple-md border text-left transition-colors ${n===s.code?"border-apple-blue bg-apple-blue/10 text-white":"border-white/10 bg-white/5 text-apple-label-secondary hover:border-white/20"}`,children:[e.jsx("span",{className:"sf-body font-medium",children:s.label}),e.jsx("span",{className:"sf-caption block mt-xs",children:s.code})]},s.code))})]})}function v({lists:a,onNext:n}){const{t}=d("onboarding");return e.jsxs("div",{className:"rounded-apple-lg border border-white/10 bg-white/5 p-lg space-y-md",children:[e.jsx("h2",{className:"sf-body font-medium text-white",children:t("lists.title")}),e.jsx("p",{className:"sf-caption text-apple-label-secondary",children:t("lists.description")}),e.jsx("div",{className:"space-y-sm",children:a.map(l=>e.jsxs("div",{className:"flex items-center gap-sm p-md rounded-apple-md border border-white/10 bg-white/5",children:[e.jsx(y,{className:"w-5 h-5 text-green-400 shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"sf-body text-white uppercase",children:l.list_id}),e.jsxs("span",{className:"sf-caption text-apple-label-secondary block",children:[t("lists.threshold")," ",(l.threshold*100).toFixed(0),"%"]})]})]},l.list_id))}),a.length===0&&e.jsx("p",{className:"sf-caption text-apple-label-secondary text-center py-md",children:t("lists.loading")}),e.jsx("button",{onClick:n,disabled:a.length===0,className:"w-full py-md bg-apple-blue hover:bg-apple-blue/80 text-white rounded-apple-md sf-body font-medium transition-colors disabled:opacity-50",children:t("continue")})]})}function S({value:a,onChange:n,onFinish:t,saving:l}){const{t:s}=d("onboarding");return e.jsxs("div",{className:"rounded-apple-lg border border-white/10 bg-white/5 p-lg space-y-md",children:[e.jsx("h2",{className:"sf-body font-medium text-white",children:s("threshold.title")}),e.jsx("p",{className:"sf-caption text-apple-label-secondary",children:s("threshold.description")}),e.jsxs("div",{className:"space-y-sm",children:[e.jsxs("div",{className:"flex justify-between sf-caption text-apple-label-secondary",children:[e.jsx("span",{children:s("threshold.low")}),e.jsxs("span",{children:[s("threshold.current")," ",a,"%"]}),e.jsx("span",{children:s("threshold.high")})]}),e.jsx("input",{type:"range",min:50,max:95,step:5,value:a,"aria-valuetext":`${a}%`,"aria-label":s("threshold.title"),onChange:i=>n(Number(i.target.value)),className:"w-full accent-apple-blue"}),e.jsx("p",{className:"sf-caption text-apple-label-secondary text-center",children:a<65?s("threshold.hint_more"):a>85?s("threshold.hint_fewer"):s("threshold.hint_balanced")})]}),e.jsx("button",{onClick:t,disabled:l,className:"w-full py-md bg-apple-blue hover:bg-apple-blue/80 text-white rounded-apple-md sf-body font-medium transition-colors disabled:opacity-50",children:s(l?"threshold.starting":"threshold.start")})]})}const C=[{code:"US",label:"United States"},{code:"IL",label:"Israel"},{code:"GB",label:"United Kingdom"},{code:"DE",label:"Germany"},{code:"CH",label:"Switzerland"},{code:"JP",label:"Japan"}];function $(){const{t:a}=d("onboarding"),n=j(),[t,l]=r.useState(1),[s,i]=r.useState(""),[x,b]=r.useState([]),[c,u]=r.useState(70),[f,p]=r.useState(!1);r.useEffect(()=>{s&&h.get(`/onboarding/lists?country=${s}`).then(o=>b(o.lists??[]))},[s]);const g=async()=>{p(!0);try{await h.put("/config",{default_threshold:c/100}),n("/dashboard")}catch{p(!1)}};return e.jsx("div",{className:"min-h-screen bg-apple-bg/50 flex items-center justify-center p-lg",children:e.jsxs("div",{className:"max-w-lg w-full space-y-xl",children:[e.jsx("h1",{className:"sf-title text-white text-center",children:a("welcome")}),e.jsx(N,{current:t}),t===1&&e.jsx(w,{countries:C,value:s,onChange:o=>{i(o),l(2)}}),t===2&&e.jsx(v,{lists:x,onNext:()=>l(3)}),t===3&&e.jsx(S,{value:c,onChange:u,onFinish:g,saving:f})]})})}export{$ as default};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{c as f,j as e,h as p,b as u,r as c,D as h,W as g,G as y}from"./index-CfdYcqRM.js";import{P as w}from"./PageHeader-BObHFn0i.js";import{R as b}from"./refresh-cw-CSuAwutt.js";import{F as j}from"./fingerprint-C0MGVtax.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 F=f("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);function $(){return e.jsxs("div",{className:"flex items-center gap-sm px-md py-sm border-b border-white/10",style:{background:"#161B22"},children:[e.jsxs("div",{className:"flex gap-[6px]",children:[e.jsx("span",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),e.jsx("span",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),e.jsx("span",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),e.jsxs("div",{className:"flex items-center gap-xs ml-md",children:[e.jsx(F,{className:"w-3.5 h-3.5 text-white/40"}),e.jsx("span",{className:"text-xs text-white/40 font-mono",children:"amliq-admin"})]})]})}function k({line:r}){const n={cmd:"#58A6FF",out:"#C9D1D9",err:"#F85149",ok:"#3FB950"};return e.jsxs("div",{className:"flex gap-sm items-start",children:[e.jsx("span",{className:"text-white/20 text-[11px] shrink-0 select-none w-[52px] text-right",children:r.ts}),r.type==="cmd"&&e.jsx(p,{className:"w-3.5 h-3.5 shrink-0 mt-[2px]",style:{color:"#3FB950"}}),e.jsx("span",{style:{color:n[r.type]},className:r.type==="cmd"?"font-semibold":"",children:r.text})]})}function N(){return e.jsxs("div",{className:"flex gap-sm items-center mt-xs",children:[e.jsx("span",{className:"text-white/20 text-[11px] w-[52px] text-right select-none",children:d()}),e.jsx(p,{className:"w-3.5 h-3.5 text-[#3FB950]"}),e.jsx("span",{className:"w-2 h-4 bg-[#58A6FF] animate-pulse rounded-sm"})]})}function d(){return new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}async function v(r,n,s){const o=await u.post(r,{});s(`Task queued: ${(o==null?void 0:o.task_id)??"unknown"}`),s("Polling for result..."),await B((o==null?void 0:o.task_id)??"",n,s)}async function A(r,n){const s=await u.get(r);if(!(s!=null&&s.results)){n("No results returned","err");return}n(`Testing ${s.total} Israeli gov sources...`),n("");for(const t of s.results)t.status==="OK"?n(`OK ${t.name}: ${t.bytes} bytes (${t.elapsed})`,"ok"):n(`FAIL ${t.name}: ${t.error??"unknown"} (${t.elapsed})`,"err");n("");const o=s.results.filter(t=>t.status==="OK").length,a=s.results.length-o;a===0?n(`All ${o} sources reachable`,"ok"):n(`${o} OK, ${a} FAILED out of ${s.results.length}`,"err")}async function B(r,n,s){for(let o=0;o<30;o++){await new Promise(a=>setTimeout(a,2e3));try{const a=await u.get("/admin/tasks?limit=20"),t=((a==null?void 0:a.tasks)??[]).find(m=>m.id===r);if(!t){s(`Waiting for ${n}...`);continue}if(t.status==="running"){s(`[${n}] still running... (${(o+1)*2}s)`);continue}if(t.status==="success"){t.output&&s(t.output),s(`[${n}] completed in ${t.duration_ms}ms`,"ok");return}if(t.status==="failed"){s(`[${n}] FAILED: ${t.error||"unknown"}`,"err");return}}catch{s("Poll error, retrying...","err")}}s(`[${n}] timed out after 60s`,"err")}const D=[{id:"migrate",name:"migrate",label:"Run Migrations",desc:"Apply pending DB schema migrations",icon:h,endpoint:"/admin/ops/migrate",color:"#60A5FA",method:"post"},{id:"seed",name:"seed_extra",label:"Seed Extra",desc:"Normalize & enrich entity metadata",icon:b,endpoint:"/admin/ops/seed",color:"#34D399",method:"post"},{id:"sync-fp",name:"sync_fingerprints",label:"Sync Fingerprints",desc:"Rebuild search fingerprint index",icon:j,endpoint:"/admin/ops/sync-fingerprints",color:"#FBBF24",method:"post"},{id:"sync-crypto",name:"sync_crypto",label:"Sync Crypto Wallets",desc:"Sync sanctioned wallet addresses (OFAC + NBCTF)",icon:g,endpoint:"/admin/ops/sync-crypto",color:"#A78BFA",method:"post"},{id:"test-il",name:"test_il_sources",label:"Test IL Sources",desc:"Test connectivity to Israeli gov sanctions sources",icon:y,endpoint:"/admin/ops/test-fetch",color:"#F472B6",method:"get"}];function I(){const[r,n]=c.useState([{ts:d(),text:"AMLIQ Admin Console v2.0 — ready",type:"out"}]),[s,o]=c.useState(null),a=c.useRef(null);c.useEffect(()=>{var i;(i=a.current)==null||i.scrollTo(0,a.current.scrollHeight)},[r]);const t=(i,l="out")=>n(x=>[...x,{ts:d(),text:i,type:l}]),m=async i=>{if(!s){o(i.id),t(`$ amliq ${i.name}`,"cmd"),t(`Starting ${i.label}...`);try{i.method==="get"?await A(i.endpoint,t):await v(i.endpoint,i.name,t)}catch(l){t(l instanceof Error?l.message:"Request failed","err")}finally{o(null)}}};return e.jsxs("div",{children:[e.jsx(w,{title:"Admin Operations",description:"System maintenance console (admin only)"}),e.jsx("div",{className:"flex flex-wrap gap-sm mb-lg",children:D.map(i=>e.jsx(T,{op:i,running:s,onClick:()=>m(i)},i.id))}),e.jsxs("div",{className:"rounded-apple-lg overflow-hidden border border-white/10",style:{background:"#0D1117"},children:[e.jsx($,{}),e.jsxs("div",{ref:a,className:`p-md font-mono text-[13px] leading-relaxed overflow-y-auto
|
|
7
|
+
max-h-[60vh] min-h-[300px] scroll-smooth`,style:{color:"#C9D1D9"},children:[r.map((i,l)=>e.jsx(k,{line:i},l)),s&&e.jsx(N,{})]})]})]})}function T({op:r,running:n,onClick:s}){const o=r.icon,a=n===r.id;return e.jsxs("button",{onClick:s,disabled:n!==null,className:`flex items-center gap-sm px-lg py-sm rounded-apple-lg
|
|
8
|
+
border border-white/10 hover:border-white/20
|
|
9
|
+
disabled:opacity-40 disabled:cursor-not-allowed
|
|
10
|
+
transition-all cursor-pointer`,style:{borderColor:a?r.color:void 0},children:[e.jsx(o,{className:"w-4 h-4",style:{color:r.color}}),e.jsx("span",{className:"text-sm font-medium",children:r.label}),a&&e.jsx("span",{className:"w-2 h-2 rounded-full animate-pulse",style:{background:r.color}})]})}export{I as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as x,r as l,b as m,j as e,L as p}from"./index-CfdYcqRM.js";import{P as u}from"./PageHeader-BObHFn0i.js";function j(){const{t}=x("platform"),[s,i]=l.useState(null),[c,o]=l.useState(!0),[r,d]=l.useState("");return l.useEffect(()=>{m.get("/platform/overview").then(a=>i(a??null)).catch(a=>d((a==null?void 0:a.message)||"Failed to load")).finally(()=>o(!1))},[]),c?e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(p,{})}):r?e.jsxs("div",{className:"p-xl text-center",children:[e.jsx("p",{className:"sf-body text-apple-red mb-md",children:r}),e.jsx("p",{className:"sf-caption text-apple-label-secondary",children:"This page requires admin access."})]}):e.jsxs("div",{children:[e.jsx(u,{title:t("overview.title")}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-lg",children:[e.jsx(n,{label:t("overview.total_tenants"),value:(s==null?void 0:s.total_tenants)??0}),e.jsx(n,{label:t("overview.total_screenings"),value:(s==null?void 0:s.total_screenings)??0})]})]})}function n({label:t,value:s}){return e.jsxs("div",{className:"card-vibrancy p-xl",children:[e.jsx("p",{className:"sf-caption mb-xs",children:t}),e.jsx("p",{className:"text-3xl font-bold",children:s.toLocaleString()})]})}export{j as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,k as g,j as e,B as P,b as j}from"./index-CfdYcqRM.js";import{P as y}from"./PageHeader-BObHFn0i.js";import{C as d}from"./Card-Cw-T_-oU.js";import{S as E}from"./SearchField-CulFKdiI.js";import{S as N,L as v,a as B,b as w}from"./ScreeningProgress-BW49PzoB.js";import{B as L}from"./Badge-B9VFkofy.js";import"./mail-BijL2qwp.js";import"./check-VTcvVtIU.js";import"./fingerprint-C0MGVtax.js";function F(){const[t,S]=n.useState(""),[u,b]=n.useState(null),[l,p]=n.useState(null),[a,f]=n.useState(!1),[r,o]=n.useState(null),x=r instanceof g&&r.status===402,h=async()=>{if(t.trim()){f(!0),o(null),p(null);try{const[s,i]=await Promise.allSettled([j.post("/screen",{entity_name:t.trim()}),j.post("/pep/screen",{name:t.trim()})]);if(s.status==="fulfilled"&&b(s.value),i.status==="fulfilled"&&p(i.value),s.status==="rejected"){const m=s.reason instanceof Error?s.reason:new Error(String(s.reason));m instanceof g&&m.status===402&&o(m)}}catch(s){o(s instanceof Error?s:new Error(String(s)))}finally{f(!1)}}},c=(l==null?void 0:l.results)??[];return e.jsxs("div",{children:[e.jsx(y,{title:"PEP & Sanctions Screening",description:"Screen against PEP databases and global sanctions lists simultaneously"}),e.jsx("div",{className:"mb-lg",children:e.jsx(N,{})}),e.jsxs(d,{className:"mb-lg",children:[e.jsx(E,{placeholder:"Enter name (e.g. Benjamin Netanyahu, Vladimir Putin)",value:t,onChange:S,onSubmit:h}),e.jsx(P,{onClick:h,disabled:a||!t.trim(),className:"w-full mt-lg",children:a?"Screening...":"Screen PEP & Sanctions"})]}),r&&x&&e.jsx(v,{error:r}),r&&!x&&e.jsx(d,{className:"mb-lg",children:e.jsx("p",{role:"alert",className:"text-apple-red sf-body",children:r.message})}),a&&e.jsx("div",{className:"mt-xxl",children:e.jsx(B,{query:t})}),!a&&c.length>0&&e.jsxs(d,{className:"mb-lg",children:[e.jsxs("h3",{className:"sf-headline mb-md",children:["PEP Results — ",c.length," profiles"]}),e.jsx("div",{className:"space-y-sm",children:c.map((s,i)=>e.jsxs("div",{className:"flex items-center justify-between p-md bg-white/[0.03] rounded-apple-md",children:[e.jsxs("div",{children:[e.jsx("p",{className:"sf-body font-medium",children:s.entity_id}),e.jsxs("p",{className:"sf-caption text-apple-label-tertiary",children:[s.position," — ",s.country]})]}),e.jsxs(L,{color:s.tier<=2?"red":"orange",size:"sm",children:["Tier ",s.tier]})]},i))})]}),!a&&u&&e.jsx(w,{data:u})]})}export{F as PEPScreening};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./index-CfdYcqRM.js";function x({title:m,description:s,action:l}){return e.jsxs("div",{className:"flex flex-col md:flex-row md:items-center md:justify-between gap-lg mb-xxl",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"sf-title mb-sm",children:m}),s&&e.jsx("p",{className:"sf-caption",children:s})]}),l&&e.jsx("div",{className:"flex-shrink-0",children:l})]})}export{x as P};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as l,j as t}from"./index-CfdYcqRM.js";function n(){const{t:e}=l("legal"),a=e("privacy.sections",{returnObjects:!0});return t.jsxs("article",{className:"max-w-3xl mx-auto px-6 py-20",children:[t.jsx("h1",{className:"text-4xl font-bold text-white mb-2",children:e("privacy.title")}),t.jsx("p",{className:"text-sm text-zinc-400 mb-12",children:e("privacy.last_updated")}),t.jsx("div",{className:"space-y-8 text-zinc-400 leading-relaxed",children:a.map((s,i)=>t.jsxs("section",{children:[t.jsx("h2",{className:"text-lg font-semibold text-white mb-3",children:s.title}),t.jsx("p",{children:s.body})]},i))})]})}export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as b,r as t,j as e,l,e as g,b as j}from"./index-CfdYcqRM.js";import{A as N}from"./arrow-left-9ApLqP95.js";function S(){const[m]=b(),n=m.get("token")||"",[a,u]=t.useState(""),[o,x]=t.useState(""),[h,f]=t.useState(!1),[i,c]=t.useState(!1),[d,r]=t.useState(""),w=async s=>{if(s.preventDefault(),a.length<8){r("Password must be at least 8 characters");return}if(a!==o){r("Passwords do not match");return}c(!0),r("");try{await j.post("/auth/reset-password",{token:n,password:a}),f(!0)}catch(p){r(p instanceof Error?p.message:"Reset failed")}finally{c(!1)}};return n?e.jsx("div",{className:"min-h-screen bg-apple-bg-primary flex items-center justify-center px-4",children:e.jsxs("div",{className:"w-full max-w-sm",children:[e.jsxs(l,{to:"/login",className:"inline-flex items-center gap-1.5 text-sm text-apple-label-secondary hover:text-white mb-8",children:[e.jsx(N,{size:16})," Back to login"]}),h?e.jsxs("div",{className:"rounded-apple-lg bg-green-500/10 border border-green-500/30 p-6 text-center",children:[e.jsx(g,{size:32,className:"text-green-400 mx-auto mb-3"}),e.jsx("p",{className:"text-white font-medium mb-1",children:"Password updated"}),e.jsx(l,{to:"/login",className:"text-apple-blue text-sm",children:"Sign in with your new password"})]}):e.jsxs(e.Fragment,{children:[e.jsx("h1",{className:"text-2xl font-bold text-white mb-2",children:"Set new password"}),e.jsx("p",{className:"text-sm text-apple-label-secondary mb-8",children:"Enter your new password below."}),e.jsxs("form",{onSubmit:w,className:"space-y-4",children:[e.jsx("input",{type:"password",required:!0,value:a,minLength:8,onChange:s=>u(s.target.value),placeholder:"New password (8+ characters)",className:"input-field w-full",autoFocus:!0}),e.jsx("input",{type:"password",required:!0,value:o,onChange:s=>x(s.target.value),placeholder:"Confirm password",className:"input-field w-full"}),d&&e.jsx("p",{role:"alert",className:"text-apple-red text-sm",children:d}),e.jsx("button",{type:"submit",disabled:i,className:"w-full py-2.5 rounded-apple-md bg-apple-blue text-white font-medium hover:bg-apple-blue/90 transition-colors cursor-pointer disabled:opacity-50",children:i?"Updating...":"Update Password"})]})]})]})}):e.jsx("div",{className:"min-h-screen bg-apple-bg-primary flex items-center justify-center px-4",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-apple-red sf-headline",children:"Invalid reset link"}),e.jsx(l,{to:"/forgot-password",className:"text-apple-blue text-sm mt-md inline-block",children:"Request a new reset link"})]})})}export{S as ResetPassword,S as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as j,r,j as e,B as f,L as b,b as y}from"./index-CfdYcqRM.js";import{P as N}from"./PageHeader-BObHFn0i.js";import{C as o}from"./Card-Cw-T_-oU.js";function C(){const{t:s}=j("compliance"),[l,i]=r.useState(""),[a,c]=r.useState(""),[d,p]=r.useState(null),[n,m]=r.useState(!1),[x,u]=r.useState(""),h=async()=>{if(l.trim()){m(!0),u("");try{const t=await y.post("/risk/score",{entity_id:l,country:a,sanctions_score:0,pep_score:0,adverse_media_score:0,industry_score:0});p(t??null)}catch(t){u(t instanceof Error?t.message:"Calculation failed"),p(null)}finally{m(!1)}}},g={critical:"text-apple-red",high:"text-apple-orange",medium:"text-apple-yellow",low:"text-apple-green"};return e.jsxs("div",{className:"max-w-4xl mx-auto",children:[e.jsx(N,{title:s("risk.title"),description:"Calculate composite risk scores"}),e.jsxs(o,{className:"mb-lg",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-lg mb-lg",children:[e.jsx("input",{placeholder:s("risk.entity_placeholder"),value:l,"aria-label":s("risk.entity_placeholder"),onChange:t=>i(t.target.value),className:"input-field"}),e.jsx("input",{placeholder:s("risk.country_placeholder"),value:a,"aria-label":s("risk.country_placeholder"),onChange:t=>c(t.target.value),className:"input-field"})]}),e.jsx(f,{onClick:h,disabled:n||!l.trim(),className:"w-full",children:n?"Calculating...":s("risk.calculate")})]}),n&&e.jsx(b,{}),x&&e.jsx(o,{className:"mb-lg",children:e.jsx("p",{role:"alert",className:"text-apple-red sf-body",children:x})}),d&&e.jsx(k,{result:d,levelColor:g,t:s})]})}function k({result:s,levelColor:l,t:i}){return e.jsxs(o,{children:[e.jsxs("div",{className:"flex items-baseline gap-md mb-lg",children:[e.jsx("span",{className:"text-4xl font-bold",children:(s.composite_score*100).toFixed(0)}),e.jsx("span",{className:`text-lg font-medium ${l[s.risk_level]}`,children:s.risk_level.toUpperCase()})]}),(s.factors??[]).length>0&&e.jsxs("div",{className:"mb-lg",children:[e.jsx("p",{className:"sf-caption text-white/60 mb-sm",children:i("risk.risk_factors")}),e.jsx("div",{className:"flex flex-wrap gap-sm",children:s.factors.map(a=>e.jsx("span",{className:"px-2 py-0.5 bg-apple-red/20 text-apple-red text-xs rounded",children:a},a))})]}),e.jsxs("div",{children:[e.jsx("p",{className:"sf-caption text-white/60 mb-sm",children:i("risk.score_breakdown")}),Object.entries(s.breakdown).map(([a,c])=>e.jsxs("div",{className:"flex justify-between text-sm py-sm border-b border-white/[0.06]",children:[e.jsx("span",{className:"capitalize",children:a.replace("_"," ")}),e.jsxs("span",{children:[(c*100).toFixed(1),"%"]})]},a))]})]})}export{C as RiskAssessment};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,j as e,b as f}from"./index-CfdYcqRM.js";const S=[{value:"structuring",label:"Structuring"},{value:"money_laundering",label:"Money Laundering"},{value:"terrorist_financing",label:"Terrorist Financing"},{value:"fraud",label:"Fraud"},{value:"identity_theft",label:"Identity Theft"}],w=["FinCEN","FCA","MAS"],C={draft:"bg-apple-gray/20 text-apple-gray",review:"bg-apple-orange/20 text-apple-orange",filed:"bg-apple-green/20 text-apple-green",acknowledged:"bg-apple-blue/20 text-apple-blue"};function A(){const[l,m]=t.useState(""),[n,b]=t.useState(""),[r,g]=t.useState("individual"),[c,v]=t.useState("structuring"),[i,h]=t.useState("FinCEN"),[j,y]=t.useState(""),[u,p]=t.useState("draft"),[o,d]=t.useState(!1),N=async a=>{var x;a.preventDefault(),d(!0);try{const s=await f.post("/reports/sar",{case_id:l,subject_name:n,subject_type:r,activity_type:c,regulator:i});p(((x=s==null?void 0:s.sar)==null?void 0:x.filing_status)??"draft")}catch{}d(!1)};return e.jsxs("div",{className:"px-md py-lg sm:p-8 max-w-3xl mx-auto",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-semibold mb-6",children:"Suspicious Activity Report"}),e.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[e.jsx("span",{className:"text-sm",children:"Status:"}),e.jsx("span",{className:`px-2 py-1 text-xs rounded-full ${C[u]??""}`,children:u.toUpperCase()})]}),e.jsxs("form",{onSubmit:N,className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:"Case ID"}),e.jsx("input",{className:"input-apple w-full",value:l,onChange:a=>m(a.target.value),required:!0})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:"Subject Name"}),e.jsx("input",{className:"input-apple w-full",value:n,onChange:a=>b(a.target.value),required:!0})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:"Subject Type"}),e.jsxs("select",{className:"input-apple w-full",value:r,onChange:a=>g(a.target.value),children:[e.jsx("option",{value:"individual",children:"Individual"}),e.jsx("option",{value:"entity",children:"Entity"})]})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:"Activity Type"}),e.jsx("select",{className:"input-apple w-full",value:c,onChange:a=>v(a.target.value),children:S.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:"Regulatory Body"}),e.jsx("select",{className:"input-apple w-full",value:i,onChange:a=>h(a.target.value),children:w.map(a=>e.jsx("option",{value:a,children:a},a))})]})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-sm text-apple-label-secondary",children:"Narrative Summary"}),e.jsx("textarea",{className:"input-apple w-full h-32",value:j,onChange:a=>y(a.target.value),placeholder:"AI-generated narrative will appear here. You can edit before filing."})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsx("button",{type:"submit",className:"btn-apple-primary w-full sm:w-auto",disabled:o,children:o?"Generating...":"Generate SAR"}),e.jsx("button",{type:"button",className:"btn-apple-secondary w-full sm:w-auto",onClick:()=>p("review"),children:"Submit for Review"})]})]})]})}export{A as SARForm};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as p,r as i,j as e,S as b,B as g,u as S,g as v,L as C,o as w}from"./index-CfdYcqRM.js";import{P as L}from"./PageHeader-BObHFn0i.js";import{C as E}from"./Card-Cw-T_-oU.js";import{B as _}from"./Badge-B9VFkofy.js";import{R as j}from"./refresh-cw-CSuAwutt.js";const u={list:()=>p.get("/lists"),get:s=>p.get(`/lists/${s}`),sync:s=>p.post(`/lists/${s}/sync`,{})};function k(){const[s,o]=i.useState([]),[a,l]=i.useState(!0),[c,m]=i.useState(null),n=i.useCallback(async()=>{l(!0);try{const t=await u.list();o(t.lists||[])}catch(t){m(t instanceof Error?t:new Error(String(t)))}finally{l(!1)}},[]);i.useEffect(()=>{n()},[n]);const d=i.useCallback(async t=>{await u.sync(t),await n()},[n]);return{lists:s,loading:a,error:c,refetch:n,triggerSync:d}}const R={"ofac-sdn":"OFAC SDN",ofac:"OFAC SDN",opensanctions_default:"OpenSanctions Global",un:"UN Security Council","un-consolidated":"UN Consolidated",eu_fsf:"EU Financial Sanctions","eu-sanctions":"EU Sanctions",uk_ofsi:"UK OFSI","gb-fcdo":"UK FCDO","ch-seco":"Swiss SECO","il-nbctf":"Israel NBCTF","il-mod-terrorists":"Israeli MoD Terror List",icij_offshore:"ICIJ Offshore Leaks",gleif_lei:"GLEIF LEI Registry"};function F({list:s,triggerSync:o,t:a}){const l=R[s.id]??s.id.replace(/[-_]/g," ").replace(/\b\w/g,c=>c.toUpperCase());return e.jsxs(E,{children:[e.jsxs("div",{className:"flex items-start justify-between mb-md",children:[e.jsxs("div",{className:"flex items-center gap-md",children:[e.jsx("div",{className:"flex h-9 w-9 items-center justify-center rounded-apple-md bg-apple-blue/10",children:e.jsx(b,{className:"w-4 h-4 text-apple-blue"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"sf-headline",children:l}),e.jsx("p",{className:"sf-caption text-apple-label-tertiary mt-xs",children:s.id})]})]}),e.jsx(_,{size:"sm",color:s.sync_enabled?"green":"gray",children:s.sync_enabled?"Active":"Disabled"})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-md",children:[e.jsxs("div",{children:[e.jsx("p",{className:"sf-caption text-apple-label-tertiary",children:a("entities")}),e.jsx("p",{className:"sf-body font-semibold",children:s.entity_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"sf-caption text-apple-label-tertiary",children:a("threshold")}),e.jsxs("p",{className:"sf-body font-semibold",children:[(s.threshold*100).toFixed(0),"%"]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"sf-caption text-apple-label-tertiary",children:a("last_synced")}),e.jsx("p",{className:"sf-body",children:s.last_synced&&s.last_synced>0?new Date(s.last_synced*1e3).toLocaleDateString():"Never"})]}),e.jsx("div",{className:"flex items-end justify-end",children:e.jsxs(g,{variant:"secondary",size:"sm",onClick:()=>o(s.id),className:"flex items-center gap-xs",children:[e.jsx(j,{className:"w-3 h-3"})," Sync"]})})]})]})}function O(){const{t:s}=S("lists"),o=v(),{lists:a,loading:l,error:c,refetch:m,triggerSync:n}=k(),[d,t]=i.useState(!1),[f,x]=i.useState(""),y=i.useCallback(async()=>{t(!0),x("");try{await p.post("/admin/lists/refresh",{}),x("Reload started. Lists will update in the background."),setTimeout(()=>m(),3e3)}catch(r){const h=r instanceof Error?r.message:String(r);x(`Error: ${h}`)}finally{t(!1)}},[m]);if(l)return e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(C,{})});const N=a.reduce((r,h)=>r+h.entity_count,0);return e.jsxs("div",{children:[e.jsx(L,{title:s("title"),description:`${a.length} lists • ${N.toLocaleString()} ${s("entities")}`}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-stretch sm:items-center gap-sm mb-md",children:[e.jsxs(g,{variant:"secondary",size:"sm",onClick:()=>o("/lists/marketplace"),className:"flex items-center justify-center gap-xs",children:[e.jsx(w,{className:"w-4 h-4"})," Browse Marketplace"]}),e.jsxs(g,{variant:"primary",size:"sm",onClick:y,disabled:d,className:"flex items-center justify-center gap-xs",children:[e.jsx(j,{className:`w-4 h-4 ${d?"animate-spin":""}`}),d?"Reloading...":"Reload All Lists"]}),f&&e.jsx("span",{className:`sf-caption ${f.startsWith("Error")?"text-apple-red":"text-apple-green"}`,children:f})]}),c&&e.jsx("p",{className:"text-apple-red sf-caption mb-md",role:"alert",children:c.message}),e.jsx("div",{className:"space-y-md",children:a.map(r=>e.jsx(F,{list:r,triggerSync:n,t:s},r.id))})]})}export{O as SanctionsLists};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,j as e,L as m,b as x,C as p,e as u}from"./index-CfdYcqRM.js";import{P as h}from"./PageHeader-BObHFn0i.js";import{B as c}from"./Badge-B9VFkofy.js";import{X as g}from"./x-circle-DLGKvijE.js";import{L as j}from"./loader-B9_dNihg.js";function T(){const[s,a]=n.useState([]),[r,l]=n.useState(!0),i=()=>{x.get("/admin/tasks?limit=100").then(t=>a((t==null?void 0:t.tasks)??[])).catch(()=>a([])).finally(()=>l(!1))};return n.useEffect(()=>{i();const t=setInterval(i,1e4);return()=>clearInterval(t)},[]),r?e.jsx("div",{className:"flex items-center justify-center h-96",children:e.jsx(m,{})}):e.jsxs("div",{children:[e.jsx(h,{title:"Scheduled Tasks",description:`${s.length} task executions`}),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:"Trigger"}),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("th",{className:"px-lg py-md",children:"Output"})]})}),e.jsx("tbody",{children:s.map(t=>e.jsx(f,{task:t},t.id))})]})}),e.jsx("div",{className:"md:hidden space-y-sm",children:s.map(t=>e.jsx(y,{task:t},t.id))}),s.length===0&&e.jsx("p",{className:"text-center py-xl text-apple-label-tertiary sf-body",children:"No task executions yet"})]})}function f({task:s}){return e.jsxs("tr",{className:"border-b border-white/5 hover:bg-white/5",children:[e.jsx("td",{className:"px-lg py-md font-medium",children:s.task_name}),e.jsx("td",{className:"px-lg py-md",children:e.jsx(c,{size:"sm",color:s.trigger==="manual"?"blue":"gray",children:s.trigger})}),e.jsx("td",{className:"px-lg py-md",children:e.jsx(d,{status:s.status})}),e.jsx("td",{className:"px-lg py-md",children:o(s.duration_ms)}),e.jsx("td",{className:"px-lg py-md text-apple-label-secondary text-xs",children:new Date(s.started_at).toLocaleString()}),e.jsx("td",{className:"px-lg py-md text-xs max-w-[200px] truncate",children:s.error||s.output||"—"})]})}function y({task:s}){return e.jsxs("div",{className:"glass-panel rounded-apple-lg p-lg",children:[e.jsxs("div",{className:"flex items-center justify-between mb-sm",children:[e.jsx("span",{className:"font-medium text-sm",children:s.task_name}),e.jsx(d,{status:s.status})]}),e.jsxs("div",{className:"flex items-center gap-sm mb-xs",children:[e.jsx(c,{size:"sm",color:s.trigger==="manual"?"blue":"gray",children:s.trigger}),e.jsx("span",{className:"sf-caption text-apple-label-secondary",children:o(s.duration_ms)})]}),(s.output||s.error)&&e.jsx("p",{className:"sf-caption text-apple-label-tertiary mt-xs truncate",children:s.error||s.output})]})}function d({status:s}){const a={running:{color:"blue",Icon:j},success:{color:"green",Icon:u},failed:{color:"red",Icon:g},canceled:{color:"gray",Icon:p}},{color:r,Icon:l}=a[s]??a.canceled;return e.jsxs(c,{size:"sm",color:r,children:[e.jsx(l,{className:"w-3 h-3 mr-1 inline"}),s]})}function o(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"—"}export{T as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{u as g,r as d,j as e,f as h,a as b,R as y,S as N,G as j,D as v,g as w,k as _}from"./index-CfdYcqRM.js";import{C as S}from"./Card-Cw-T_-oU.js";import{F as C}from"./flag-B8_Gwxh6.js";import{s as k,S as E,L,a as D,b as q}from"./ScreeningProgress-BW49PzoB.js";import"./Badge-B9VFkofy.js";import"./mail-BijL2qwp.js";import"./check-VTcvVtIU.js";import"./fingerprint-C0MGVtax.js";function R({onSubmit:i,loading:n}){const{t}=g("screening"),[a,m]=d.useState("individual"),[r,u]=d.useState({}),[s,c]=d.useState({firstName:"",lastName:"",companyName:"",dob:"",nationality:""}),o=l=>`flex-1 py-md text-center text-[14px] font-semibold rounded-apple-md transition-all cursor-pointer ${l?"bg-gradient-to-r from-apple-blue to-[#00D4AA] text-white shadow-[0_0_16px_rgba(10,132,255,0.3)]":"text-apple-label-secondary hover:text-white hover:bg-white/[0.04]"}`,p=()=>{const l={};return a==="individual"?(s.firstName.trim()||(l.firstName="First name is required"),s.lastName.trim()||(l.lastName="Last name is required")):s.companyName.trim()||(l.companyName="Company name is required"),u(l),Object.keys(l).length===0},x=l=>{l.preventDefault(),p()&&i(s,a)},f=l=>`input-field w-full ${r[l]?"border-apple-red":""}`;return e.jsxs("div",{className:"card-vibrancy p-xl",children:[e.jsxs("div",{className:"flex gap-sm p-xs bg-white/[0.03] rounded-apple-md mb-xl border border-white/[0.04]",children:[e.jsx("button",{type:"button",className:o(a==="individual"),onClick:()=>m("individual"),children:t("form.individual")}),e.jsx("button",{type:"button",className:o(a==="company"),onClick:()=>m("company"),children:t("form.company")})]}),e.jsxs("form",{onSubmit:x,className:"space-y-lg",children:[a==="individual"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-lg",children:[e.jsxs("div",{children:[e.jsx("input",{type:"text",required:!0,"aria-label":t("form.first_name"),placeholder:t("form.first_name"),className:f("firstName"),value:s.firstName,onChange:l=>c({...s,firstName:l.target.value})}),r.firstName&&e.jsx("p",{className:"text-apple-red text-xs mt-1",children:r.firstName})]}),e.jsxs("div",{children:[e.jsx("input",{type:"text",required:!0,"aria-label":t("form.last_name"),placeholder:t("form.last_name"),className:f("lastName"),value:s.lastName,onChange:l=>c({...s,lastName:l.target.value})}),r.lastName&&e.jsx("p",{className:"text-apple-red text-xs mt-1",children:r.lastName})]})]}),e.jsx("input",{type:"date","aria-label":t("form.dob"),className:"input-field w-full",value:s.dob,onChange:l=>c({...s,dob:l.target.value})}),e.jsx("input",{type:"text","aria-label":t("form.nationality"),placeholder:t("form.nationality"),className:"input-field w-full",value:s.nationality,onChange:l=>c({...s,nationality:l.target.value})})]}):e.jsxs("div",{children:[e.jsx("input",{type:"text",required:!0,"aria-label":t("form.company_name"),placeholder:t("form.company_name"),className:f("companyName"),value:s.companyName,onChange:l=>c({...s,companyName:l.target.value})}),r.companyName&&e.jsx("p",{className:"text-apple-red text-xs mt-1",children:r.companyName})]}),e.jsxs("button",{type:"submit",disabled:n,className:"button-primary w-full flex items-center justify-center gap-sm disabled:opacity-50 text-[15px] font-bold tracking-wide",children:[e.jsx(h,{className:"w-5 h-5"}),t(n?"form.submitting":"form.submit")]})]})]})}function $({checked:i,onChange:n,label:t,disabled:a}){const m=r=>{(r.key===" "||r.key==="Enter")&&(r.preventDefault(),a||n(!i))};return e.jsxs("label",{className:"flex items-center gap-md cursor-pointer",children:[e.jsx("div",{role:"switch","aria-checked":i,"aria-disabled":a,"aria-label":t,tabIndex:a?-1:0,onClick:()=>!a&&n(!i),onKeyDown:m,className:b("relative inline-flex h-8 w-14 items-center rounded-full transition-colors","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-apple-blue",i?"bg-apple-green":"bg-apple-bg-tertiary",a&&"opacity-50 cursor-not-allowed"),children:e.jsx("span",{className:b("inline-block h-7 w-7 transform rounded-full bg-white transition-transform",i?"translate-x-7":"translate-x-0.5")})}),t&&e.jsx("span",{className:"sf-body",children:t})]})}const A=[{key:"ofac",icon:N,color:"text-apple-red",glow:"shadow-[0_0_12px_rgba(255,69,58,0.15)]",label:"layers.ofac_sdn"},{key:"eu",icon:j,color:"text-apple-blue",glow:"shadow-[0_0_12px_rgba(10,132,255,0.15)]",label:"layers.eu_sanctions"},{key:"un",icon:C,color:"text-apple-orange",glow:"shadow-[0_0_12px_rgba(255,159,10,0.15)]",label:"layers.un_consolidated"},{key:"custom",icon:v,color:"text-apple-green",glow:"shadow-[0_0_12px_rgba(48,209,88,0.15)]",label:"layers.custom_lists"}];function F(){const{t:i}=g("screening"),[n,t]=y.useState({ofac:!0,eu:!0,un:!0,custom:!0});return e.jsxs(S,{children:[e.jsx("h3",{className:"sf-headline mb-lg",children:i("layers.title")}),e.jsx("div",{className:"space-y-sm",children:A.map(({key:a,icon:m,color:r,glow:u,label:s})=>e.jsxs("div",{className:`flex items-center gap-md p-md rounded-apple-md bg-white/[0.03]
|
|
2
|
+
border border-white/[0.04] transition-all hover:bg-white/[0.06]
|
|
3
|
+
${n[a]?u:""}`,children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-white/[0.06] flex items-center justify-center flex-shrink-0",children:e.jsx(m,{className:`w-4 h-4 ${r}`})}),e.jsx("div",{className:"flex-1",children:e.jsx($,{checked:n[a],onChange:c=>t({...n,[a]:c}),label:i(s)})})]},a))})]})}function Q(){const[i,n]=d.useState(null),[t,a]=d.useState(!1),[m,r]=d.useState(null),u=d.useCallback(async c=>{a(!0),r(null),n(null);try{const o=await k.screen(c);return n(o),o}catch(o){const p=o instanceof Error?o:new Error(String(o));throw r(p),p}finally{a(!1)}},[]),s=d.useCallback(()=>{n(null),r(null)},[]);return{result:i,loading:t,error:m,screen:u,clear:s}}function z(){const{t:i}=g("screening");w();const{result:n,loading:t,error:a,screen:m}=Q(),[r,u]=d.useState(""),s=a instanceof _&&a.status===402,c=async(o,p)=>{const x=p==="individual"?`${o.firstName} ${o.lastName}`.trim():o.companyName;u(x);try{await m({entity_name:x,entity_type:p,dob:o.dob||void 0,nationality:o.nationality||void 0})}catch{}};return e.jsxs("div",{children:[e.jsxs("div",{className:"text-center mb-xxl",children:[e.jsxs("div",{className:"relative inline-flex items-center justify-center w-16 h-16 rounded-full bg-apple-blue/10 mb-lg",children:[e.jsx("div",{className:"absolute inset-0 rounded-full bg-apple-blue/20 blur-xl"}),e.jsx("img",{src:"/logo.svg",alt:"AMLIQ",className:"relative w-10 h-10"})]}),e.jsx("h1",{className:"text-3xl font-bold tracking-tight gradient-text mb-sm",children:i("title")}),e.jsx("p",{className:"sf-caption max-w-md mx-auto",children:i("description")})]}),e.jsx("div",{className:"max-w-4xl mx-auto mb-lg",children:e.jsx(E,{})}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-lg max-w-4xl mx-auto",children:[e.jsx("div",{className:"lg:col-span-2 glass-panel rounded-apple-lg p-lg glow-blue",children:e.jsx(R,{onSubmit:c,loading:t})}),e.jsx(F,{})]}),a&&s&&e.jsx(L,{error:a}),a&&!s&&e.jsx("p",{className:"text-apple-red sf-caption mt-md text-center",role:"alert",children:a.message}),t&&e.jsx("div",{className:"mt-xxl",children:e.jsx(D,{query:r})}),n&&e.jsx("div",{className:"max-w-4xl mx-auto mt-xl",children:e.jsx(q,{data:n})})]})}export{z as ScreenEntity};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import{c as m,j as e,a as S,r as p,V as C,b as g,g as N,k as M,f as $,S as A}from"./index-CfdYcqRM.js";import{C as v}from"./Card-Cw-T_-oU.js";import{B as x}from"./Badge-B9VFkofy.js";import{M as _}from"./mail-BijL2qwp.js";import{C as k}from"./check-VTcvVtIU.js";import{F as E}from"./fingerprint-C0MGVtax.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 I=m("ArrowUpCircle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]]);/**
|
|
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 L=m("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
|
|
12
|
+
* @license lucide-react v0.294.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const R=m("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);/**
|
|
17
|
+
* @license lucide-react v0.294.0 - ISC
|
|
18
|
+
*
|
|
19
|
+
* This source code is licensed under the ISC license.
|
|
20
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
+
*/const z=m("MessageCircle",[["path",{d:"m3 21 1.9-5.7a8.5 8.5 0 1 1 3.8 3.8z",key:"v2veuj"}]]);/**
|
|
22
|
+
* @license lucide-react v0.294.0 - ISC
|
|
23
|
+
*
|
|
24
|
+
* This source code is licensed under the ISC license.
|
|
25
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
+
*/const F=m("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/**
|
|
27
|
+
* @license lucide-react v0.294.0 - ISC
|
|
28
|
+
*
|
|
29
|
+
* This source code is licensed under the ISC license.
|
|
30
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
+
*/const D=m("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);/**
|
|
32
|
+
* @license lucide-react v0.294.0 - ISC
|
|
33
|
+
*
|
|
34
|
+
* This source code is licensed under the ISC license.
|
|
35
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
+
*/const U=m("Sparkles",[["path",{d:"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z",key:"17u4zn"}],["path",{d:"M5 3v4",key:"bklmnn"}],["path",{d:"M19 17v4",key:"iiml17"}],["path",{d:"M3 5h4",key:"nem4j1"}],["path",{d:"M17 19h4",key:"lbex7p"}]]);/**
|
|
37
|
+
* @license lucide-react v0.294.0 - ISC
|
|
38
|
+
*
|
|
39
|
+
* This source code is licensed under the ISC license.
|
|
40
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
41
|
+
*/const q=m("Volume2",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}],["path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14",key:"1kegas"}]]);function Q({score:s,size:t="md"}){const n=i=>i>=80?"text-apple-red bg-apple-red/20":i>=60?"text-apple-orange bg-apple-orange/20":"text-apple-green bg-apple-green/20",a={sm:"text-xs px-md py-xs",md:"text-sm px-lg py-md",lg:"text-base px-xl py-lg"};return e.jsxs("div",{className:S("rounded-full font-semibold inline-block",n(s),a[t]),children:[s.toFixed(0),"%"]})}const B={OFAC:"red",EU:"blue",UN:"purple",UKOFSI:"orange",SECO:"green",SDFM:"gray",NBCTF:"gray",IsraeliMoD:"gray"};function O(s){const t=s.toUpperCase();for(const[n,a]of Object.entries(B))if(t.startsWith(n.toUpperCase()))return a;return"gray"}const P={Individual:"👤",Company:"🏢",Vessel:"🚢",Aircraft:"✈️"};function T({match:s}){const t=Math.round(s.confidence*100),n=s.type??s.entity_type??"Individual",a=P[n]??"📋";return e.jsxs("div",{className:"flex items-start justify-between gap-md",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"sf-headline text-lg truncate",children:s.entity_name}),e.jsxs("div",{className:"flex flex-wrap gap-sm mt-sm",children:[e.jsxs(x,{color:"gray",size:"sm",children:[a," ",n]}),e.jsx(x,{color:O(s.list_id),size:"sm",children:s.list_id}),s.disposition&&e.jsx(x,{color:s.disposition==="AutoEscalate"?"red":"orange",size:"sm",children:s.disposition})]})]}),e.jsx(Q,{score:t,size:"md"})]})}function y({label:s,value:t}){return e.jsxs("div",{className:"flex items-baseline gap-sm",children:[e.jsx("span",{className:"sf-caption text-white/40 w-24 shrink-0",children:s}),e.jsx("span",{className:"sf-body text-white/90 truncate",children:t})]})}function V({match:s}){var d;const t=s.given_name&&s.given_name.trim(),n=s.family_name&&s.family_name.trim(),a=s.date_of_birth&&s.date_of_birth.trim(),i=s.nationalities&&s.nationalities.length>0,c=s.original_script??((d=s.metadata)==null?void 0:d.original_script),o=c&&c.trim();return t||n||a||i||o?e.jsxs("div",{className:"space-y-xs",children:[(t||n)&&e.jsx(y,{label:"Name",value:[s.given_name,s.family_name].filter(Boolean).join(" ")}),a&&e.jsx(y,{label:"Date of Birth",value:s.date_of_birth}),o&&e.jsxs("div",{className:"flex items-baseline gap-sm",children:[e.jsx("span",{className:"sf-caption text-white/40 w-24 shrink-0",children:"Script"}),e.jsx("span",{className:"sf-body text-white/50 italic truncate",children:c})]}),i&&e.jsxs("div",{className:"flex items-center gap-sm flex-wrap",children:[e.jsx("span",{className:"sf-caption text-white/40 w-24 shrink-0",children:"Nationality"}),s.nationalities.map(l=>e.jsx(x,{color:"gray",size:"sm",children:l},l))]})]}):null}function H(s){return s>=80?"from-apple-red to-apple-orange":s>=50?"from-apple-orange to-apple-yellow":"from-apple-green to-apple-teal"}function J({layer:s}){const t=Math.round(s.score*100);return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-xs",children:[e.jsx("span",{className:"sf-caption font-semibold text-white/80",children:s.layer}),e.jsxs("span",{className:"sf-caption text-white/50",children:[s.algorithm," — ",t,"%"]})]}),e.jsx("div",{className:"h-1.5 bg-white/[0.06] rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full bg-gradient-to-r ${H(t)} transition-all duration-500`,style:{width:`${t}%`},role:"progressbar","aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":100,"aria-label":`${s.layer} score`})}),s.matched&&e.jsxs("p",{className:"sf-caption text-white/30 mt-xs truncate",children:["Matched: “",s.matched,"”"]})]})}function W({layers:s}){return!s||s.length===0?null:e.jsxs("div",{className:"space-y-md",children:[e.jsx("h4",{className:"sf-caption font-semibold text-white/50 uppercase tracking-wider",children:"Evidence Layers"}),s.map((t,n)=>e.jsx(J,{layer:t},`${t.layer}-${n}`))]})}function b({label:s,value:t}){return e.jsxs("div",{className:"flex items-baseline gap-sm py-xs",children:[e.jsx("span",{className:"sf-caption text-white/40 w-32 shrink-0 capitalize",children:s.replace(/_/g," ")}),e.jsx("span",{className:"sf-caption text-white/70 break-words min-w-0",children:t})]})}function Y(s){return s==null?"-":Array.isArray(s)?s.join(", "):typeof s=="object"?JSON.stringify(s):String(s)}function f(s,t){const n=s[t];return Array.isArray(n)?n.map(String):typeof n=="string"&&n.trim()?[n]:[]}function G({metadata:s}){const[t,n]=p.useState(!1);if(!s||Object.keys(s).length===0)return null;const a=f(s,"aliases"),i=f(s,"programs"),c=f(s,"addresses"),o=f(s,"identifiers"),r=Object.keys(s).filter(l=>!["aliases","programs","addresses","identifiers","original_script"].includes(l));return a.length>0||i.length>0||c.length>0||o.length>0||r.length>0?e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:()=>n(!t),className:"w-full flex items-center justify-between cursor-pointer group",children:[e.jsx("h4",{className:"sf-caption font-semibold text-white/50 uppercase tracking-wider",children:"Metadata"}),e.jsx("span",{className:"sf-caption text-white/30 group-hover:text-white/50 transition-colors",children:t?"Hide":"Show"})]}),t&&e.jsxs("div",{className:"mt-md space-y-sm animate-fade-in",children:[a.length>0&&e.jsxs("div",{className:"flex flex-wrap items-center gap-sm",children:[e.jsx("span",{className:"sf-caption text-white/40 w-32 shrink-0",children:"Aliases"}),a.map(l=>e.jsx(x,{color:"gray",size:"sm",children:l},l))]}),i.length>0&&e.jsxs("div",{className:"flex flex-wrap items-center gap-sm",children:[e.jsx("span",{className:"sf-caption text-white/40 w-32 shrink-0",children:"Programs"}),i.map(l=>e.jsx(x,{color:"blue",size:"sm",children:l},l))]}),c.length>0&&c.map((l,h)=>e.jsx(b,{label:"Address",value:l},`addr-${h}`)),o.length>0&&o.map((l,h)=>e.jsx(b,{label:"ID",value:l},`id-${h}`)),r.map(l=>e.jsx(b,{label:l,value:Y(s[l])},l))]})]}):null}function K({match:s,index:t=0}){const n=`${t*60}ms`;return e.jsx("div",{className:"animate-fade-in",style:{animationDelay:n},children:e.jsx(v,{children:e.jsxs("div",{className:"space-y-lg",children:[e.jsx(T,{match:s}),e.jsx("div",{className:"border-t border-white/[0.06] pt-md",children:e.jsx(V,{match:s})}),e.jsx("div",{className:"border-t border-white/[0.06] pt-md",children:e.jsx(W,{layers:s.layers})}),s.explanation&&e.jsx("p",{className:"sf-caption text-white/50 italic",children:s.explanation}),e.jsx("div",{className:"border-t border-white/[0.06] pt-md",children:e.jsx(G,{metadata:s.metadata})})]})})})}function X(s){const t=s.matches??[];if(t.length===0)return`AMLIQ Screening Report
|
|
42
|
+
|
|
43
|
+
Entity: ${s.query}
|
|
44
|
+
Result: CLEAR - No sanctions matches found
|
|
45
|
+
Processing: ${s.processing_time_ms??0}ms
|
|
46
|
+
|
|
47
|
+
Screened by AMLIQ - AI-Enhanced Sanctions Screening
|
|
48
|
+
https://amliq.finance`;const a=t.slice(0,3).map(i=>`- ${i.entity_name} (${i.list_id}) — ${(i.confidence*100).toFixed(0)}% confidence`);return`AMLIQ Screening Report
|
|
49
|
+
|
|
50
|
+
Entity: ${s.query}
|
|
51
|
+
Matches: ${s.total_matches??t.length}
|
|
52
|
+
${a.join(`
|
|
53
|
+
`)}
|
|
54
|
+
Processing: ${s.processing_time_ms??0}ms
|
|
55
|
+
|
|
56
|
+
Screened by AMLIQ - AI-Enhanced Sanctions Screening
|
|
57
|
+
https://amliq.finance`}function Z(s){var n;const t=s.total_matches??((n=s.matches)==null?void 0:n.length)??0;return t===0?`AMLIQ: ${s.query} — CLEAR`:`AMLIQ: ${s.query} — ${t} match${t>1?"es":""} found`}function j({data:s}){const[t,n]=p.useState(!1),[a,i]=p.useState(!1),c=X(s),o=Z(s),r=encodeURIComponent(c),d=encodeURIComponent(o),l=()=>{navigator.clipboard.writeText(c),n(!0),setTimeout(()=>n(!1),2e3)},h=[{name:"WhatsApp",icon:z,color:"hover:bg-[#25D366]/20 hover:text-[#25D366]",href:`https://wa.me/?text=${r}`},{name:"LinkedIn",icon:C,color:"hover:bg-[#0A66C2]/20 hover:text-[#0A66C2]",href:`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent("https://amliq.finance")}&summary=${r}`},{name:"Email",icon:_,color:"hover:bg-apple-blue/20 hover:text-apple-blue",href:`mailto:?subject=${d}&body=${r}`}];return e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>i(!a),className:"flex items-center gap-xs px-md py-sm rounded-apple-md border border-white/10 hover:bg-white/5 text-apple-label-secondary hover:text-white transition-colors cursor-pointer text-sm",children:[e.jsx(D,{className:"w-4 h-4"}),"Share"]}),a&&e.jsxs("div",{className:"absolute right-0 top-full mt-sm z-50 w-56 rounded-apple-lg border border-white/10 bg-apple-bg-secondary shadow-xl p-sm",children:[e.jsx("p",{className:"text-xs text-apple-label-tertiary px-md py-xs mb-xs",children:"Share screening results"}),h.map(u=>e.jsxs("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",onClick:()=>i(!1),className:`flex items-center gap-md px-md py-sm rounded-apple-md text-sm text-apple-label-secondary transition-colors ${u.color}`,children:[e.jsx(u.icon,{className:"w-4 h-4"}),u.name]},u.name)),e.jsxs("button",{onClick:l,className:"flex items-center gap-md px-md py-sm rounded-apple-md text-sm text-apple-label-secondary hover:bg-white/10 hover:text-white transition-colors w-full cursor-pointer",children:[t?e.jsx(k,{className:"w-4 h-4 text-apple-green"}):e.jsx(L,{className:"w-4 h-4"}),t?"Copied!":"Copy to clipboard"]})]})]})}function le({data:s}){const t=s.matches??[],n=s.total_matches??t.length;return n===0?e.jsxs(v,{className:"text-center py-xxl",children:[e.jsx("div",{className:"text-apple-green text-3xl mb-md",children:"✓"}),e.jsx("p",{className:"sf-headline text-apple-green",children:"No Matches Found"}),e.jsxs("p",{className:"sf-caption mt-sm",children:["No sanctions matches for “",s.query,"”"]}),e.jsx("div",{className:"mt-lg flex justify-center",children:e.jsx(j,{data:s})})]}):e.jsxs("div",{className:"space-y-md",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("p",{className:"sf-body",children:[e.jsx("span",{className:"sf-headline",children:n})," matches"]}),e.jsxs("div",{className:"flex items-center gap-md",children:[e.jsxs("span",{className:"sf-caption text-white/50",children:[s.processing_time_ms??0,"ms"]}),e.jsx(j,{data:s})]})]}),t.map((a,i)=>e.jsx(K,{match:a,index:i},a.entity_id))]})}const ee={screen:s=>g.post("/screen",s),screenFast:s=>g.post("/screen/fast",{name:s}),getResult:s=>g.get(`/screen/${s}`),getQuota:()=>g.get("/screening/quota")};function ce(){const s=N(),[t,n]=p.useState(null);if(p.useEffect(()=>{ee.getQuota().then(n).catch(()=>null)},[]),!t||t.limit<0)return null;const a=t.limit>0?t.used/t.limit*100:0,i=a>=80,c=t.remaining<=0,o=c?"bg-apple-red":i?"bg-amber-500":"bg-apple-green",r=c?"border-apple-red/20":i?"border-amber-500/20":"border-white/[0.06]";return e.jsxs("div",{className:`rounded-apple-md border ${r} bg-white/[0.02] px-lg py-md`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-xs",children:[e.jsxs("span",{className:"text-xs text-apple-label-secondary",children:[t.used.toLocaleString()," / ",t.limit.toLocaleString()," screenings used"]}),c?e.jsx("button",{onClick:()=>s("/billing"),className:"text-xs text-apple-blue hover:underline cursor-pointer font-medium",children:"Upgrade Plan"}):i?e.jsxs("span",{className:"text-xs text-amber-400",children:[t.remaining.toLocaleString()," remaining"]}):e.jsxs("span",{className:"text-xs text-apple-label-tertiary",children:[t.remaining.toLocaleString()," remaining"]})]}),e.jsx("div",{className:"w-full h-1.5 bg-white/10 rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full ${o} rounded-full transition-all duration-500`,style:{width:`${Math.min(a,100)}%`}})})]})}function oe({error:s}){const t=N(),a=(s instanceof M?s.code:"")==="FREE_TIER_EXHAUSTED";return e.jsxs("div",{className:"max-w-md mx-auto mt-lg p-lg rounded-apple-lg border border-amber-500/20 bg-amber-500/5 text-center",role:"alert",children:[e.jsx(I,{className:"w-8 h-8 text-amber-400 mx-auto mb-sm"}),e.jsx("p",{className:"text-white font-semibold mb-xs",children:a?"Free tier limit reached":"Screening limit reached"}),e.jsx("p",{className:"sf-caption text-apple-label-secondary mb-md",children:a?"You've used all 100 free screenings this month. Subscribe to unlock more.":"You've used all screenings on your current plan. Upgrade to continue."}),e.jsx("button",{type:"button",onClick:()=>t("/billing"),className:"px-6 py-2 bg-apple-blue hover:bg-apple-blue/90 text-white text-sm font-semibold rounded-apple transition-colors cursor-pointer",children:a?"View Plans":"Upgrade Plan"})]})}const w=[{icon:$,label:"Exact Match",desc:"Unicode normalized comparison"},{icon:E,label:"Fuzzy Match",desc:"Jaro-Winkler similarity"},{icon:q,label:"Phonetic",desc:"Soundex + Double Metaphone"},{icon:R,label:"Token Match",desc:"Jaccard coefficient"},{icon:U,label:"AI Embeddings",desc:"pgvector semantic search"},{icon:F,label:"Graph",desc:"Relationship traversal"}];function de({query:s}){const[t,n]=p.useState(0),[a,i]=p.useState(new Set);return p.useEffect(()=>{const c=setInterval(()=>{n(o=>{const r=o+1;return r>=w.length?0:(i(d=>new Set([...d,o])),r)})},120);return()=>clearInterval(c)},[]),e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsxs("div",{className:"text-center mb-xl",children:[e.jsxs("div",{className:"relative inline-flex items-center justify-center w-20 h-20 mb-md",children:[e.jsx("div",{className:"absolute inset-0 rounded-full bg-apple-blue/20 blur-2xl animate-pulse"}),e.jsx("div",{className:"absolute inset-0 rounded-full border-2 border-apple-blue/30 animate-ping"}),e.jsx(A,{className:"relative w-10 h-10 text-apple-blue"})]}),e.jsx("h3",{className:"sf-headline text-white mb-xs",children:"Screening in Progress"}),e.jsxs("p",{className:"sf-caption text-apple-label-secondary",children:["Analyzing ",e.jsx("span",{className:"text-apple-blue font-medium",children:s})," across 2.17M entities"]})]}),e.jsx("div",{className:"space-y-sm",children:w.map((c,o)=>{const r=o===t,d=a.has(o),l=c.icon;return e.jsxs("div",{className:`flex items-center gap-md p-md rounded-apple-md transition-all duration-300
|
|
58
|
+
${r?"bg-apple-blue/10 border border-apple-blue/30 scale-[1.02]":""}
|
|
59
|
+
${d&&!r?"bg-white/[0.02] border border-white/[0.04]":""}
|
|
60
|
+
${!r&&!d?"bg-white/[0.01] border border-white/[0.02]":""}
|
|
61
|
+
`,children:[e.jsx("div",{className:`flex items-center justify-center w-9 h-9 rounded-apple-md transition-all
|
|
62
|
+
${r?"bg-apple-blue text-white":""}
|
|
63
|
+
${d&&!r?"bg-apple-green/15 text-apple-green":""}
|
|
64
|
+
${!r&&!d?"bg-white/5 text-apple-label-tertiary":""}
|
|
65
|
+
`,children:d&&!r?e.jsx(k,{className:"w-4 h-4"}):e.jsx(l,{className:`w-4 h-4 ${r?"animate-pulse":""}`})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:`text-sm font-medium transition-colors
|
|
66
|
+
${r?"text-white":"text-apple-label-secondary"}`,children:c.label}),e.jsx("p",{className:"text-xs text-apple-label-tertiary",children:c.desc})]}),r&&e.jsxs("div",{className:"flex gap-xs",children:[e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-apple-blue animate-pulse"}),e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-apple-blue animate-pulse",style:{animationDelay:"0.2s"}}),e.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-apple-blue animate-pulse",style:{animationDelay:"0.4s"}})]}),d&&!r&&e.jsx("span",{className:"text-xs text-apple-green font-medium",children:"Done"})]},o)})})]})}export{oe as L,ce as S,de as a,le as b,ee as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as r,f as n}from"./index-CfdYcqRM.js";function p({placeholder:t="Search...",value:s,onChange:l,onSubmit:e}){return r.jsxs("div",{className:"relative",children:[r.jsx(n,{className:"absolute left-md top-1/2 transform -translate-y-1/2 w-4 h-4 text-apple-label-tertiary","aria-hidden":"true"}),r.jsx("input",{type:"search","aria-label":t,placeholder:t,value:s,onChange:a=>l(a.target.value),onKeyDown:a=>a.key==="Enter"&&(e==null?void 0:e()),className:"input-field pl-10 w-full"})]})}export{p as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as g,j as e,l as i,e as j,g as N,d as f,r as u}from"./index-CfdYcqRM.js";import{S as y,A as w}from"./AuthDivider-gRHEt7gx.js";const v=[{code:"US",name:"United States"},{code:"GB",name:"United Kingdom"},{code:"IL",name:"Israel"},{code:"DE",name:"Germany"},{code:"FR",name:"France"},{code:"CH",name:"Switzerland"},{code:"SG",name:"Singapore"},{code:"HK",name:"Hong Kong"},{code:"AE",name:"United Arab Emirates"},{code:"AU",name:"Australia"},{code:"CA",name:"Canada"},{code:"JP",name:"Japan"},{code:"NL",name:"Netherlands"},{code:"LU",name:"Luxembourg"},{code:"IE",name:"Ireland"}];function _(){const{t:s}=g("auth"),a=[s("signup_panel.perk_ai"),s("signup_panel.perk_lists",{listCount:7}),s("signup_panel.perk_compliance"),s("signup_panel.perk_speed")];return e.jsxs("div",{className:"hidden lg:flex lg:w-1/2 flex-col justify-center px-16 border-r border-white/10",children:[e.jsx(i,{to:"/",className:"mb-12",children:e.jsx("img",{src:"/logo.svg",alt:"AMLIQ",className:"h-10 w-10"})}),e.jsx("h1",{className:"text-4xl font-bold text-white tracking-tight mb-4",children:s("signup_panel.tagline")}),e.jsx("p",{className:"text-apple-label-secondary mb-8 max-w-md leading-relaxed",children:s("signup_panel.description")}),e.jsx("div",{className:"space-y-4",children:a.map(r=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(j,{className:"h-4 w-4 text-apple-green shrink-0"}),e.jsx("span",{className:"text-sm text-white",children:r})]},r))})]})}function k({password:s}){const a=s.length>=8,r=/[A-Z]/.test(s),t=/\d/.test(s),p=[{ok:a,label:"At least 8 characters"},{ok:r,label:"One uppercase letter"},{ok:t,label:"One number"}];return s?e.jsx("ul",{className:"mt-1.5 ml-1 space-y-0.5",children:p.map(l=>e.jsxs("li",{className:`text-xs ${l.ok?"text-apple-green":"text-apple-label-tertiary"}`,children:[l.ok?"✓":"•"," ",l.label]},l.label))}):null}const C=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function E(){const s=N(),{t:a}=g("auth"),{signup:r}=f(),[t,p]=u.useState({orgName:"",email:"",password:"",country:"US"}),[l,c]=u.useState(""),[m,x]=u.useState(!1),o=n=>d=>p(b=>({...b,[n]:d.target.value})),h=async n=>{if(n.preventDefault(),!C.test(t.email)){c("Please enter a valid email address.");return}if(t.password.length<8){c("Password must be at least 8 characters.");return}x(!0),c("");try{await r(t.email,t.password,t.orgName,t.country),s("/onboarding")}catch(d){c(d instanceof Error?d.message:a("signup.failed"))}finally{x(!1)}};return e.jsxs("div",{className:"min-h-screen bg-[#1C1C1E] flex",children:[e.jsx(_,{}),e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center px-6 py-10",children:[e.jsx(i,{to:"/",className:"mb-8 lg:hidden",children:e.jsx("img",{src:"/logo.svg",alt:"AMLIQ",className:"h-8 w-8"})}),e.jsxs("div",{className:"w-full max-w-sm space-y-6",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("h2",{className:"text-xl font-semibold text-white mb-2",children:a("signup.title")}),e.jsx("p",{className:"text-sm text-apple-label-secondary",children:a("signup.subtitle")})]}),e.jsx(y,{action:"sign_up"}),e.jsx(w,{}),l&&e.jsx("div",{role:"alert",className:"p-3 bg-apple-red/10 border border-apple-red/20 rounded-lg",children:e.jsx("p",{className:"text-apple-red text-sm",children:l})}),e.jsxs("form",{onSubmit:h,className:"space-y-3",children:[e.jsx("input",{type:"text",value:t.orgName,onChange:o("orgName"),required:!0,"aria-label":"Organization name",autoComplete:"organization",placeholder:a("signup.org_placeholder"),className:"input-field w-full"}),e.jsx("input",{type:"email",value:t.email,onChange:o("email"),required:!0,"aria-label":"Email",autoComplete:"email",pattern:"[^\\s@]+@[^\\s@]+\\.[^\\s@]+",placeholder:a("signup.email_placeholder"),className:"input-field w-full"}),e.jsxs("div",{children:[e.jsx("input",{type:"password",value:t.password,onChange:o("password"),required:!0,"aria-label":"Password",autoComplete:"new-password",minLength:8,placeholder:a("signup.password_placeholder"),className:"input-field w-full"}),e.jsx(k,{password:t.password})]}),e.jsx("select",{value:t.country,onChange:o("country"),"aria-label":"Country",className:"input-field w-full",children:v.map(n=>e.jsx("option",{value:n.code,children:n.name},n.code))}),e.jsx("button",{type:"submit",disabled:m,"aria-busy":m,className:"button-primary w-full text-center disabled:opacity-50",children:a(m?"signup.submitting":"signup.submit")})]}),e.jsxs("p",{className:"text-center text-xs text-apple-label-secondary leading-relaxed",children:[a("signup.agree_prefix")," ",e.jsx(i,{to:"/terms",className:"text-apple-blue hover:underline",children:a("signup.terms_link")})," ",a("signup.and")," ",e.jsx(i,{to:"/privacy",className:"text-apple-blue hover:underline",children:a("signup.privacy_link")}),"."]}),e.jsxs("p",{className:"text-center text-xs text-apple-label-tertiary",children:[a("signup.have_account")," ",e.jsx(i,{to:"/login",className:"text-apple-blue hover:underline",children:a("signup.sign_in_link")})]})]})]})]})}export{E as Signup};
|