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
package/.env.example
ADDED
package/.env.production
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VITE_API_URL=https://api.amliq.finance
|
package/Dockerfile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Build stage
|
|
2
|
+
FROM node:18-alpine AS builder
|
|
3
|
+
|
|
4
|
+
WORKDIR /app
|
|
5
|
+
|
|
6
|
+
COPY package*.json ./
|
|
7
|
+
RUN npm ci
|
|
8
|
+
|
|
9
|
+
COPY . .
|
|
10
|
+
RUN npm run build
|
|
11
|
+
|
|
12
|
+
# Runtime stage
|
|
13
|
+
FROM node:18-alpine
|
|
14
|
+
|
|
15
|
+
WORKDIR /app
|
|
16
|
+
|
|
17
|
+
RUN npm install -g serve
|
|
18
|
+
|
|
19
|
+
COPY --from=builder /app/dist ./dist
|
|
20
|
+
|
|
21
|
+
EXPOSE 3000
|
|
22
|
+
|
|
23
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
24
|
+
CMD wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
|
|
25
|
+
|
|
26
|
+
CMD ["serve", "-s", "dist", "-l", "3000"]
|
package/QUICK_START.md
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# AMLIQ AML Platform - Quick Start Guide
|
|
2
|
+
|
|
3
|
+
## What's New
|
|
4
|
+
|
|
5
|
+
A complete public marketing website and authenticated billing dashboard have been added to the AMLIQ AML platform.
|
|
6
|
+
|
|
7
|
+
## Routes
|
|
8
|
+
|
|
9
|
+
### Public Pages (No Authentication)
|
|
10
|
+
- **`/`** - Landing page with full marketing site
|
|
11
|
+
- **`/pricing`** - Pricing section (same landing page)
|
|
12
|
+
|
|
13
|
+
### Dashboard Pages (Requires Authentication)
|
|
14
|
+
- **`/billing`** - Billing & subscription management
|
|
15
|
+
- All existing routes unchanged (`/alerts`, `/screen`, `/config`, etc.)
|
|
16
|
+
|
|
17
|
+
## Testing Locally
|
|
18
|
+
|
|
19
|
+
### 1. Run the Development Server
|
|
20
|
+
```bash
|
|
21
|
+
cd web
|
|
22
|
+
npm install
|
|
23
|
+
npm run dev
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. View Marketing Site
|
|
27
|
+
Open [http://localhost:5173](http://localhost:5173) to see the landing page with:
|
|
28
|
+
- Hero section
|
|
29
|
+
- Features showcase
|
|
30
|
+
- Interactive matching demo
|
|
31
|
+
- Pricing comparison (monthly/annual toggle)
|
|
32
|
+
- Testimonials
|
|
33
|
+
- FAQs
|
|
34
|
+
- Footer
|
|
35
|
+
|
|
36
|
+
### 3. View Billing Page
|
|
37
|
+
Open [http://localhost:5173/billing](http://localhost:5173/billing) to see:
|
|
38
|
+
- Current subscription info
|
|
39
|
+
- Usage meters (screenings & API calls)
|
|
40
|
+
- 12-month usage history chart
|
|
41
|
+
- Invoice table
|
|
42
|
+
- Plan comparison
|
|
43
|
+
- Upgrade options
|
|
44
|
+
|
|
45
|
+
## File Locations
|
|
46
|
+
|
|
47
|
+
### Marketing Site Components
|
|
48
|
+
All in `/src/pages/marketing/`:
|
|
49
|
+
- `LandingPage.tsx` - Main page composition
|
|
50
|
+
- `HeroSection.tsx` - Hero with CTAs
|
|
51
|
+
- `FeaturesGrid.tsx` - 6-feature grid
|
|
52
|
+
- `PricingSection.tsx` - 3-tier pricing
|
|
53
|
+
- `TestimonialsSection.tsx` - Social proof
|
|
54
|
+
- `FAQSection.tsx` - Accordion FAQ
|
|
55
|
+
- `FooterSection.tsx` - Footer
|
|
56
|
+
|
|
57
|
+
### Billing Components
|
|
58
|
+
All in `/src/pages/billing/`:
|
|
59
|
+
- `BillingPage.tsx` - Main dashboard
|
|
60
|
+
- `CurrentPlan.tsx` - Subscription info
|
|
61
|
+
- `UsageOverview.tsx` - Usage meters
|
|
62
|
+
- `UsageHistory.tsx` - Usage chart
|
|
63
|
+
- `InvoiceList.tsx` - Invoice table
|
|
64
|
+
- `PlanComparison.tsx` - Upgrade cards
|
|
65
|
+
|
|
66
|
+
### API & Data
|
|
67
|
+
- `/src/api/billing.ts` - API client (mock delays)
|
|
68
|
+
- `/src/mocks/billing.ts` - Mock data (plans, usage, invoices)
|
|
69
|
+
- `/src/types/billing.ts` - TypeScript interfaces
|
|
70
|
+
|
|
71
|
+
## Key Features
|
|
72
|
+
|
|
73
|
+
### Marketing Site
|
|
74
|
+
✅ Premium dark aesthetic with gradient accents
|
|
75
|
+
✅ Fully responsive (mobile → tablet → desktop)
|
|
76
|
+
✅ Interactive pricing toggle (monthly/annual)
|
|
77
|
+
✅ Live matching demo with cascade animation
|
|
78
|
+
✅ Competitor comparison table
|
|
79
|
+
✅ Trust badges (SOC 2, ISO 27001, PCI DSS)
|
|
80
|
+
✅ Mobile hamburger menu
|
|
81
|
+
|
|
82
|
+
### Billing Dashboard
|
|
83
|
+
✅ Active subscription card
|
|
84
|
+
✅ Real-time usage meters with color coding
|
|
85
|
+
✅ 12-month usage history
|
|
86
|
+
✅ Complete invoice history
|
|
87
|
+
✅ Plan upgrade flow with modal confirmation
|
|
88
|
+
✅ Payment failure alerts
|
|
89
|
+
✅ Responsive grid layouts
|
|
90
|
+
|
|
91
|
+
## Customization
|
|
92
|
+
|
|
93
|
+
### Change Pricing
|
|
94
|
+
Edit `/src/mocks/billing.ts`:
|
|
95
|
+
```typescript
|
|
96
|
+
export const mockPlans: Plan[] = [
|
|
97
|
+
{
|
|
98
|
+
id: 'plan_starter',
|
|
99
|
+
tier: 'starter',
|
|
100
|
+
name: 'Starter',
|
|
101
|
+
monthlyPriceCents: 49900, // Change this
|
|
102
|
+
annualPriceCents: 479000, // And this
|
|
103
|
+
screeningLimit: 10000,
|
|
104
|
+
features: ['Feature 1', 'Feature 2'], // Update features
|
|
105
|
+
// ...
|
|
106
|
+
},
|
|
107
|
+
// ...
|
|
108
|
+
]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Change Colors
|
|
112
|
+
Update Tailwind classes throughout components. Key colors:
|
|
113
|
+
- `blue-600` → Primary CTA
|
|
114
|
+
- `indigo-600`, `purple-600` → Accent gradients
|
|
115
|
+
- `green-500`, `amber-600`, `red-600` → Status indicators
|
|
116
|
+
|
|
117
|
+
### Change Features List
|
|
118
|
+
Edit marketing section components directly:
|
|
119
|
+
```typescript
|
|
120
|
+
// In FeaturesGrid.tsx
|
|
121
|
+
const features = [
|
|
122
|
+
{ title: 'Your Feature', description: 'Your description' },
|
|
123
|
+
// ...
|
|
124
|
+
]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Change Testimonials
|
|
128
|
+
Edit `/src/pages/marketing/TestimonialsSection.tsx`:
|
|
129
|
+
```typescript
|
|
130
|
+
const testimonials = [
|
|
131
|
+
{
|
|
132
|
+
quote: 'Your testimonial',
|
|
133
|
+
author: 'Author name',
|
|
134
|
+
title: 'Their title',
|
|
135
|
+
company: 'Company name'
|
|
136
|
+
},
|
|
137
|
+
// ...
|
|
138
|
+
]
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## API Integration
|
|
142
|
+
|
|
143
|
+
When ready to connect to real backend:
|
|
144
|
+
|
|
145
|
+
### 1. Update `/src/api/billing.ts`
|
|
146
|
+
Replace mock delays with real HTTP calls:
|
|
147
|
+
```typescript
|
|
148
|
+
async getPlans(): Promise<Plan[]> {
|
|
149
|
+
const response = await fetch('/api/plans')
|
|
150
|
+
return response.json()
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 2. Update `/src/mocks/billing.ts`
|
|
155
|
+
Replace with real data from database
|
|
156
|
+
|
|
157
|
+
### 3. Add Authentication
|
|
158
|
+
Wrap `/billing` route with auth guard
|
|
159
|
+
|
|
160
|
+
## Component Structure
|
|
161
|
+
|
|
162
|
+
### Smallest Components (Reusable building blocks)
|
|
163
|
+
- `FeatureDetail` - Icon + title + description
|
|
164
|
+
- `PricingFeatureRow` - Checkmark + label
|
|
165
|
+
- `InvoiceRow` - One invoice row
|
|
166
|
+
- `TestimonialCard` - One testimonial
|
|
167
|
+
- `FAQItem` - Expandable FAQ item
|
|
168
|
+
|
|
169
|
+
### Mid-Level Components (Containers)
|
|
170
|
+
- `FeaturesGrid` - Multiple features
|
|
171
|
+
- `PricingCard` - Single pricing tier
|
|
172
|
+
- `InvoiceList` - Multiple invoices
|
|
173
|
+
- `TestimonialsSection` - Multiple testimonials
|
|
174
|
+
- `FAQSection` - Multiple FAQ items
|
|
175
|
+
|
|
176
|
+
### Page Components
|
|
177
|
+
- `LandingPage` - Entire marketing site
|
|
178
|
+
- `BillingPage` - Entire billing dashboard
|
|
179
|
+
|
|
180
|
+
## Performance Tips
|
|
181
|
+
|
|
182
|
+
1. **Code Splitting**: Landing page and billing page are already separate (non-critical path)
|
|
183
|
+
2. **Mock Delays**: Simulate real API latency (300-800ms) for realistic UX testing
|
|
184
|
+
3. **Image Optimization**: Placeholder gradients avoid image loading delays
|
|
185
|
+
4. **Lazy Loading**: Components are ready for React.lazy() wrapping
|
|
186
|
+
|
|
187
|
+
## Browser Support
|
|
188
|
+
|
|
189
|
+
✅ Chrome/Edge (latest)
|
|
190
|
+
✅ Firefox (latest)
|
|
191
|
+
✅ Safari (latest)
|
|
192
|
+
✅ Mobile browsers (iOS Safari, Chrome Mobile)
|
|
193
|
+
|
|
194
|
+
## Common Tasks
|
|
195
|
+
|
|
196
|
+
### Add a New FAQ Item
|
|
197
|
+
```typescript
|
|
198
|
+
// In FAQSection.tsx
|
|
199
|
+
const faqs = [
|
|
200
|
+
{
|
|
201
|
+
q: 'Your question?',
|
|
202
|
+
a: 'Your answer.'
|
|
203
|
+
},
|
|
204
|
+
// ...
|
|
205
|
+
]
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Change Billing Renewal Date Format
|
|
209
|
+
```typescript
|
|
210
|
+
// In CurrentPlan.tsx
|
|
211
|
+
const renewalDate = new Date(subscription.currentPeriodEnd).toLocaleDateString('en-US', {
|
|
212
|
+
year: 'numeric',
|
|
213
|
+
month: 'long',
|
|
214
|
+
day: 'numeric'
|
|
215
|
+
})
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Add a New Feature to Grid
|
|
219
|
+
```typescript
|
|
220
|
+
// In FeaturesGrid.tsx
|
|
221
|
+
const features = [
|
|
222
|
+
{
|
|
223
|
+
icon: <YourIcon />,
|
|
224
|
+
title: 'Feature Name',
|
|
225
|
+
description: 'Feature description'
|
|
226
|
+
},
|
|
227
|
+
// ...
|
|
228
|
+
]
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Troubleshooting
|
|
232
|
+
|
|
233
|
+
### Pricing not updating after toggle
|
|
234
|
+
Check `PricingSection.tsx` - ensure `annual` state is passed to all `PricingCard` components
|
|
235
|
+
|
|
236
|
+
### Usage bar colors not changing
|
|
237
|
+
Verify `UsageMeter.tsx` color logic:
|
|
238
|
+
- `< 80%`: green
|
|
239
|
+
- `80-95%`: amber
|
|
240
|
+
- `> 95%`: red
|
|
241
|
+
|
|
242
|
+
### Mobile menu not closing
|
|
243
|
+
Check `MobileMenu.tsx` - ensure `onClose` callback is passed to all links
|
|
244
|
+
|
|
245
|
+
### Images not loading
|
|
246
|
+
All components use CSS gradients instead of images - no image assets required
|
|
247
|
+
|
|
248
|
+
## Next Steps
|
|
249
|
+
|
|
250
|
+
1. **Test locally** - Run `npm run dev` and visit `/` and `/billing`
|
|
251
|
+
2. **Connect API** - Replace mock calls with real API endpoints
|
|
252
|
+
3. **Add authentication** - Protect `/billing` route with auth
|
|
253
|
+
4. **Customize branding** - Update colors, copy, testimonials
|
|
254
|
+
5. **Deploy** - Push to staging/production
|
|
255
|
+
|
|
256
|
+
## Support
|
|
257
|
+
|
|
258
|
+
For questions or issues:
|
|
259
|
+
- Check `MARKETING_BILLING_PAGES.md` for detailed documentation
|
|
260
|
+
- Review `IMPLEMENTATION_SUMMARY.md` for architecture overview
|
|
261
|
+
- All components are under 100 LOC and well-commented
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
**Total Files Created**: 38 components + 2 documentation files + 1 App.tsx update
|
|
266
|
+
**Total Lines of Code**: ~3,200 LOC (all components < 100 LOC each)
|
|
267
|
+
**Design System**: Apple HIG compliant with dark mode support
|
package/README.md
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# AMLIQ AML Dashboard v2
|
|
2
|
+
|
|
3
|
+
A production-ready, Apple HIG-compliant AML (Anti-Money Laundering) platform dashboard built with React, TypeScript, and Tailwind CSS.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### Core Functionality
|
|
8
|
+
- **Alert Management** — Investigate sanctions match alerts with full entity details
|
|
9
|
+
- **Entity Screening** — Manual screening against OFAC, EU, UN, and custom lists
|
|
10
|
+
- **Configuration** — Threshold tuning and screening layer management
|
|
11
|
+
- **Analytics** — Real-time dashboards with volume trends and risk distribution
|
|
12
|
+
- **Audit Logging** — Complete activity trail for compliance
|
|
13
|
+
- **Batch Processing** — Bulk entity screening operations
|
|
14
|
+
- **Monitoring** — System health and task tracking
|
|
15
|
+
|
|
16
|
+
### Design Excellence
|
|
17
|
+
- **Apple HIG Compliance** — Native macOS/iOS look and feel with vibrancy effects
|
|
18
|
+
- **Fully Responsive** — Optimized for desktop, tablet, and mobile
|
|
19
|
+
- **Dark Mode Only** — Premium Apple-inspired dark interface
|
|
20
|
+
- **Smooth Animations** — 60fps transitions and interactions
|
|
21
|
+
- **Accessibility** — Full keyboard navigation and semantic HTML
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### Install Dependencies
|
|
26
|
+
```bash
|
|
27
|
+
npm install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Development Server
|
|
31
|
+
```bash
|
|
32
|
+
npm run dev
|
|
33
|
+
```
|
|
34
|
+
Open http://localhost:3000
|
|
35
|
+
|
|
36
|
+
### Production Build
|
|
37
|
+
```bash
|
|
38
|
+
npm run build
|
|
39
|
+
npm run preview
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Project Structure
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
src/
|
|
46
|
+
├── components/
|
|
47
|
+
│ ├── layout/ # AppShell, Sidebar, Toolbar
|
|
48
|
+
│ ├── ui/ # Primitives: Button, Card, Badge, etc.
|
|
49
|
+
│ ├── data/ # Data display: ConfidenceScore, StatusBadge
|
|
50
|
+
│ ├── alerts/ # Alert cards and filters
|
|
51
|
+
│ ├── screening/ # Screening forms (expandable)
|
|
52
|
+
│ ├── config/ # Configuration UI (expandable)
|
|
53
|
+
│ └── charts/ # Recharts components
|
|
54
|
+
├── pages/ # Full page components
|
|
55
|
+
├── hooks/ # useApi, useMockData, useMediaQuery, etc.
|
|
56
|
+
├── api/ # Fetch client and API methods
|
|
57
|
+
├── types/ # TypeScript interfaces
|
|
58
|
+
├── mocks/ # Mock data for development
|
|
59
|
+
├── styles/ # Global CSS and design tokens
|
|
60
|
+
└── App.tsx # Router configuration
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Apple HIG Design System
|
|
64
|
+
|
|
65
|
+
### Colors (Dark Mode)
|
|
66
|
+
- **Background**: #1C1C1E (systemBackground)
|
|
67
|
+
- **Secondary**: #2C2C2E (systemBackgroundSecondary)
|
|
68
|
+
- **Tertiary**: #3A3A3C (systemBackgroundTertiary)
|
|
69
|
+
- **Accents**: systemBlue (#0A84FF), systemGreen (#30D158), systemRed (#FF453A)
|
|
70
|
+
|
|
71
|
+
### Typography
|
|
72
|
+
- **SF Pro Display/Text** — System font stack
|
|
73
|
+
- **Title**: 34px bold
|
|
74
|
+
- **Headline**: 17px semibold
|
|
75
|
+
- **Body**: 17px regular
|
|
76
|
+
- **Caption**: 12px regular
|
|
77
|
+
|
|
78
|
+
### Components
|
|
79
|
+
All UI components follow Apple HIG guidelines:
|
|
80
|
+
- 44px minimum tap targets (mobile)
|
|
81
|
+
- Rounded corners (6px-20px)
|
|
82
|
+
- Vibrancy backgrounds with backdrop blur
|
|
83
|
+
- Subtle shadows and separators
|
|
84
|
+
- Smooth 0.2s transitions
|
|
85
|
+
|
|
86
|
+
## Key Pages
|
|
87
|
+
|
|
88
|
+
| Page | Route | Purpose |
|
|
89
|
+
|------|-------|---------|
|
|
90
|
+
| Dashboard | `/` | Overview with KPIs and charts |
|
|
91
|
+
| Alert Queue | `/alerts` | Investigation workbench with filters |
|
|
92
|
+
| Alert Detail | `/alerts/:id` | Full alert investigation view |
|
|
93
|
+
| Screen Entity | `/screen` | Manual entity screening form |
|
|
94
|
+
| Configuration | `/config` | Threshold tuning UI |
|
|
95
|
+
| Analytics | `/analytics` | Advanced metrics and trends |
|
|
96
|
+
| Monitoring | `/monitoring` | System health and tasks |
|
|
97
|
+
| Audit Trail | `/audit` | Activity log viewer |
|
|
98
|
+
| Batch Jobs | `/batch` | Bulk screening operations |
|
|
99
|
+
| Sanctions Lists | `/lists` | List management and sync |
|
|
100
|
+
|
|
101
|
+
## Responsive Behavior
|
|
102
|
+
|
|
103
|
+
### Mobile (<640px)
|
|
104
|
+
- Bottom is handled by sidebar collapse
|
|
105
|
+
- Full-width stacked cards
|
|
106
|
+
- Touch-friendly (44px taps)
|
|
107
|
+
- Simplified layouts
|
|
108
|
+
|
|
109
|
+
### Tablet (640px-1024px)
|
|
110
|
+
- Collapsible sidebar with toggle
|
|
111
|
+
- 2-column layouts
|
|
112
|
+
- Medium charts
|
|
113
|
+
|
|
114
|
+
### Desktop (>1024px)
|
|
115
|
+
- Fixed sidebar with vibrancy
|
|
116
|
+
- Multi-column layouts
|
|
117
|
+
- Full feature set with hover states
|
|
118
|
+
|
|
119
|
+
## API Integration
|
|
120
|
+
|
|
121
|
+
The dashboard uses mock data by default. To connect to a real API:
|
|
122
|
+
|
|
123
|
+
1. Set `VITE_API_URL` environment variable
|
|
124
|
+
2. Mock data will be replaced with real API calls
|
|
125
|
+
3. All API methods are in `src/api/`
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// Example: custom backend
|
|
129
|
+
VITE_API_URL=http://localhost:8080/api npm run dev
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Customization
|
|
133
|
+
|
|
134
|
+
### Add a New Page
|
|
135
|
+
1. Create component in `src/pages/YourPage.tsx`
|
|
136
|
+
2. Add route in `src/App.tsx`
|
|
137
|
+
3. Add navigation item in `src/components/layout/Sidebar.tsx`
|
|
138
|
+
|
|
139
|
+
### Customize Colors
|
|
140
|
+
Edit `tailwind.config.js` color definitions
|
|
141
|
+
|
|
142
|
+
### Add Charts
|
|
143
|
+
Use Recharts components in `src/components/charts/`
|
|
144
|
+
|
|
145
|
+
## Performance
|
|
146
|
+
|
|
147
|
+
- Tree-shaken dependencies (React Router, Recharts)
|
|
148
|
+
- Code splitting by route
|
|
149
|
+
- Image optimization
|
|
150
|
+
- CSS minification
|
|
151
|
+
- Gzip compression ready
|
|
152
|
+
|
|
153
|
+
## Browser Support
|
|
154
|
+
|
|
155
|
+
- Chrome/Edge 90+
|
|
156
|
+
- Safari 14+
|
|
157
|
+
- Firefox 88+
|
|
158
|
+
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
Proprietary - AMLIQ Platform
|