@cas-parser/connect 1.1.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/LICENSE +21 -0
- package/README.md +263 -0
- package/dist/PortfolioConnect.d.ts +5 -0
- package/dist/components/CDSLFetchMode.d.ts +13 -0
- package/dist/components/FetchMode.d.ts +12 -0
- package/dist/components/Modal.d.ts +12 -0
- package/dist/components/PortfolioConnectWidget.d.ts +14 -0
- package/dist/components/ShortcutLinks.d.ts +8 -0
- package/dist/components/UploadZone.d.ts +8 -0
- package/dist/imperative.d.ts +87 -0
- package/dist/index.cjs.js +1766 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.esm.js +1755 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/portfolio-connect.standalone.min.js +2 -0
- package/dist/portfolio-connect.standalone.min.js.map +1 -0
- package/dist/portfolio-connect.umd.js +1769 -0
- package/dist/portfolio-connect.umd.js.map +1 -0
- package/dist/portfolio-connect.umd.min.js +2 -0
- package/dist/portfolio-connect.umd.min.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/utils/api.d.ts +57 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/components/Modal.tsx","../src/components/ShortcutLinks.tsx","../src/components/UploadZone.tsx","../src/components/FetchMode.tsx","../src/components/CDSLFetchMode.tsx","../src/utils/api.ts","../src/components/PortfolioConnectWidget.tsx","../src/PortfolioConnect.tsx","../src/imperative.tsx","../src/index.ts"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n onBack?: () => void; // Optional back handler\n showBackButton?: boolean; // Show back arrow instead of X\n children: React.ReactNode;\n width?: number;\n isSandbox?: boolean; // Show sandbox indicator\n}\n\nexport const Modal: React.FC<ModalProps> = ({ \n isOpen, \n onClose, \n onBack,\n showBackButton = false,\n children, \n width = 400,\n isSandbox = false,\n}) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === overlayRef.current) {\n onClose();\n }\n };\n\n const handleHeaderButtonClick = () => {\n if (showBackButton && onBack) {\n onBack();\n } else {\n onClose();\n }\n };\n\n return (\n <div\n ref={overlayRef}\n onClick={handleOverlayClick}\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n padding: 16,\n }}\n >\n <div\n style={{\n backgroundColor: '#fff',\n borderRadius: 16,\n width: '100%',\n maxWidth: width,\n maxHeight: '90vh',\n overflow: 'auto',\n position: 'relative',\n boxShadow: '0 25px 80px rgba(0, 0, 0, 0.25)',\n }}\n >\n {/* Sandbox Banner */}\n {isSandbox && (\n <div style={{\n backgroundColor: '#fef3c7',\n borderBottom: '1px solid #fcd34d',\n padding: '6px 16px',\n fontSize: 12,\n fontWeight: 600,\n color: '#92400e',\n textAlign: 'center',\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n }}>\n 🧪 Sandbox Mode — Test data only\n </div>\n )}\n \n {/* Header button (Back or Close) */}\n <button\n onClick={handleHeaderButtonClick}\n style={{\n position: 'absolute',\n top: isSandbox ? 40 : 12,\n left: showBackButton ? 12 : 'auto',\n right: showBackButton ? 'auto' : 12,\n background: 'none',\n border: 'none',\n fontSize: showBackButton ? 20 : 28,\n cursor: 'pointer',\n color: '#6b7280',\n lineHeight: 1,\n padding: 8,\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n transition: 'background-color 0.15s',\n }}\n onMouseOver={(e) => e.currentTarget.style.backgroundColor = '#f3f4f6'}\n onMouseOut={(e) => e.currentTarget.style.backgroundColor = 'transparent'}\n aria-label={showBackButton ? 'Back' : 'Close'}\n >\n {showBackButton ? '←' : '×'}\n </button>\n {children}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport type { CASType } from '../types';\n\n// Search by sender emails - official CAS statement sources\nconst CAS_SENDERS = {\n 'CAMS_KFINTECH': ['donotreply@camsonline.com', 'samfs@kfintech.com'],\n 'CDSL': ['ecas@cdslstatement.com'],\n 'NSDL': ['nsdl-cas@nsdl.co.in'],\n};\n\n// Build search query for sender emails\nconst buildSearchQuery = (type?: CASType) => {\n const senders = type ? CAS_SENDERS[type] : Object.values(CAS_SENDERS).flat();\n const fromQuery = senders.map(s => `from:${s}`).join(' OR ');\n return `(${fromQuery}) has:attachment`;\n};\n\n// Official brand logos as inline SVG\nconst GmailLogo = () => (\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 24 18\" fill=\"none\">\n <path d=\"M1.636 18H5.455V8.682L0 4.91V16.364C0 17.267.733 18 1.636 18z\" fill=\"#4285F4\"/>\n <path d=\"M18.545 18h3.819c.904 0 1.636-.732 1.636-1.636V4.91l-5.455 3.772V18z\" fill=\"#34A853\"/>\n <path d=\"M18.545 1.636V8.682L24 4.91v-1.91c0-2.022-2.309-3.175-3.927-1.963l-1.528 1.109z\" fill=\"#FBBC04\"/>\n <path d=\"M5.455 8.682V1.636l6.545 4.91 6.545-4.91v7.046L12 13.592 5.455 8.682z\" fill=\"#EA4335\"/>\n <path d=\"M0 2.999v1.91l5.455 3.773V1.636L3.927.527C2.31-.685 0 .468 0 2.999z\" fill=\"#C5221F\"/>\n </svg>\n);\n\nconst OutlookLogo = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\">\n <path d=\"M19.484 7.937v5.477l1.916 1.205a.489.489 0 00.21.063.489.489 0 00.229-.063l8.088-5.234a1.455 1.455 0 00-.741-1.448H19.484z\" fill=\"#0072C6\"/>\n <path d=\"M19.484 15.457l1.747 1.2a.522.522 0 00.543 0c-.3.181 8.073-5.378 8.073-5.378v10.795a1.474 1.474 0 01-1.474 1.474h-8.889V15.457z\" fill=\"#0072C6\"/>\n <path d=\"M10.44 12.932a1.927 1.927 0 00-1.384-.543 1.9 1.9 0 00-1.387.543 1.927 1.927 0 00-.543 1.384v3.086a1.927 1.927 0 00.543 1.384 1.864 1.864 0 001.384.543 1.927 1.927 0 001.387-.543 1.9 1.9 0 00.543-1.384v-3.086a1.927 1.927 0 00-.543-1.384z\" fill=\"#0072C6\"/>\n <path d=\"M18.044 5.116H8.044a1.474 1.474 0 00-1.474 1.474v1.209l6.3 4.5 5.174-3.15V6.59a1.474 1.474 0 00-1.474-1.474H8.044z\" fill=\"#0072C6\"/>\n <path d=\"M1.474 9.789h16.842v14.737H1.474A1.474 1.474 0 010 23.053V11.263a1.474 1.474 0 011.474-1.474z\" fill=\"#0072C6\"/>\n <ellipse cx=\"9.263\" cy=\"16.842\" rx=\"3.789\" ry=\"4.421\" stroke=\"#fff\" strokeWidth=\"1.5\" fill=\"none\"/>\n </svg>\n);\n\nconst YahooLogo = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" fill=\"none\">\n <path d=\"M16 2C8.268 2 2 8.268 2 16s6.268 14 14 14 14-6.268 14-14S23.732 2 16 2z\" fill=\"#5C0DAC\"/>\n <path d=\"M22.287 10.5h-2.844l-3.118 6.066L13.178 10.5h-2.89l4.622 8.37v4.63h2.666v-4.63l4.711-8.37z\" fill=\"#fff\"/>\n </svg>\n);\n\n// Generate provider URLs based on selected CAS type\nconst getProviders = (selectedType?: CASType) => {\n const query = buildSearchQuery(selectedType);\n const encodedQuery = encodeURIComponent(query);\n \n return [\n {\n name: 'Gmail',\n Logo: GmailLogo,\n url: `https://mail.google.com/mail/u/0/#search/${encodedQuery}`\n },\n {\n name: 'Outlook',\n Logo: OutlookLogo,\n url: `https://outlook.live.com/mail/0/deeplink?version=20200615005&search=${encodedQuery}`\n },\n {\n name: 'Yahoo',\n Logo: YahooLogo,\n url: `https://mail.yahoo.com/d/search/keyword=${encodedQuery}`\n }\n ];\n};\n\ninterface ShortcutLinksProps {\n selectedType?: CASType;\n onSearchClick?: (provider: string) => void;\n}\n\nexport const ShortcutLinks: React.FC<ShortcutLinksProps> = ({ selectedType, onSearchClick }) => {\n const providers = getProviders(selectedType);\n \n return (\n <div style={{ marginBottom: 16 }}>\n <div style={{ \n fontSize: 12, \n color: '#6b7280', \n marginBottom: 10,\n fontWeight: 500 \n }}>\n Find statement in your inbox\n </div>\n <div style={{ \n display: 'grid', \n gridTemplateColumns: 'repeat(3, 1fr)', \n gap: 10 \n }}>\n {providers.map((provider) => (\n <a\n key={provider.name}\n href={provider.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => onSearchClick?.(provider.name)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 10,\n backgroundColor: '#f9fafb',\n borderRadius: 8,\n textDecoration: 'none',\n border: '1px solid #e5e7eb',\n transition: 'all 0.15s',\n cursor: 'pointer',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#eff6ff';\n e.currentTarget.style.borderColor = '#2563eb';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#f9fafb';\n e.currentTarget.style.borderColor = '#e5e7eb';\n }}\n >\n <provider.Logo />\n <span style={{ fontSize: 11, color: '#374151', fontWeight: 500, marginTop: 4 }}>\n {provider.name}\n </span>\n </a>\n ))}\n </div>\n </div>\n );\n};\n","import React, { useState, useRef, useCallback } from 'react';\n\ninterface UploadZoneProps {\n onFileSelect: (file: File, password: string) => void;\n isProcessing: boolean;\n progress: number;\n}\n\nexport const UploadZone: React.FC<UploadZoneProps> = ({ \n onFileSelect, \n isProcessing, \n progress \n}) => {\n const [file, setFile] = useState<File | null>(null);\n const [password, setPassword] = useState('');\n const [isDragOver, setIsDragOver] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n const droppedFile = e.dataTransfer.files[0];\n if (droppedFile?.type === 'application/pdf') {\n setFile(droppedFile);\n }\n }, []);\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFile = e.target.files?.[0];\n if (selectedFile) {\n setFile(selectedFile);\n }\n };\n\n const handleSubmit = () => {\n if (file) {\n onFileSelect(file, password);\n }\n };\n\n if (isProcessing) {\n return (\n <div style={{ textAlign: 'center', padding: '50px 20px' }}>\n <div style={{ \n width: 56, \n height: 56, \n backgroundColor: '#eff6ff', \n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '0 auto 20px',\n }}>\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#2563eb\" strokeWidth=\"2\">\n <path d=\"M21 12V7H5a2 2 0 0 1 0-4h14v4\"/>\n <path d=\"M3 5v14a2 2 0 0 0 2 2h16v-5\"/>\n <path d=\"M18 12a2 2 0 0 0 0 4h4v-4Z\"/>\n </svg>\n </div>\n <h3 style={{ margin: '0 0 8px', fontSize: 18, fontWeight: 600, color: '#1f2937' }}>\n Reading Your Investments\n </h3>\n <p style={{ color: '#6b7280', marginBottom: 24, fontSize: 14 }}>\n Extracting holdings, transactions & values...\n </p>\n <div style={{\n height: 6,\n backgroundColor: '#e5e7eb',\n borderRadius: 3,\n overflow: 'hidden',\n maxWidth: 240,\n margin: '0 auto',\n }}>\n <div style={{\n height: '100%',\n width: `${progress}%`,\n backgroundColor: '#2563eb',\n transition: 'width 0.3s ease',\n }} />\n </div>\n <div style={{ fontSize: 12, color: '#9ca3af', marginTop: 10 }}>\n {progress < 50 ? 'Uploading...' : progress < 90 ? 'Processing...' : 'Almost done!'}\n </div>\n </div>\n );\n }\n\n if (!file) {\n return (\n <div>\n <h3 style={{ fontSize: 18, fontWeight: 600, margin: '0 0 16px', color: '#1f2937' }}>\n Upload Your Statement\n </h3>\n <div\n onDragOver={(e) => { e.preventDefault(); setIsDragOver(true); }}\n onDragLeave={() => setIsDragOver(false)}\n onDrop={handleDrop}\n onClick={() => inputRef.current?.click()}\n style={{\n border: `2px dashed ${isDragOver ? '#2563eb' : '#d1d5db'}`,\n borderRadius: 12,\n padding: '36px 20px',\n textAlign: 'center',\n cursor: 'pointer',\n backgroundColor: isDragOver ? '#eff6ff' : '#f9fafb',\n transition: 'all 0.2s',\n }}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept=\".pdf\"\n onChange={handleFileChange}\n style={{ display: 'none' }}\n />\n <div style={{ marginBottom: 12 }}>\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#9ca3af\" strokeWidth=\"1.5\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/>\n <polyline points=\"14 2 14 8 20 8\"/>\n <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"/>\n <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"/>\n <polyline points=\"10 9 9 9 8 9\"/>\n </svg>\n </div>\n <p style={{ margin: 0, fontSize: 15, color: '#374151', fontWeight: 500 }}>\n Drop your CAS PDF here\n </p>\n <p style={{ margin: '6px 0 0', fontSize: 13, color: '#9ca3af' }}>\n or click to browse\n </p>\n </div>\n <div style={{ \n marginTop: 12, \n fontSize: 11, \n color: '#9ca3af', \n textAlign: 'center' \n }}>\n Supported: CAMS, KFintech, CDSL, NSDL statements\n </div>\n </div>\n );\n }\n\n return (\n <div>\n <h3 style={{ fontSize: 18, fontWeight: 600, margin: '0 0 16px', color: '#1f2937' }}>\n Enter Password\n </h3>\n \n {/* File preview */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n padding: 14,\n border: '1px solid #e5e7eb',\n borderRadius: 10,\n backgroundColor: '#f9fafb',\n marginBottom: 20,\n }}>\n <div style={{ \n width: 40, \n height: 40, \n backgroundColor: '#dbeafe', \n borderRadius: 8,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 12,\n }}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#2563eb\" strokeWidth=\"2\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/>\n <polyline points=\"14 2 14 8 20 8\"/>\n </svg>\n </div>\n <div style={{ flex: 1, overflow: 'hidden' }}>\n <div style={{ \n fontWeight: 500, \n whiteSpace: 'nowrap', \n overflow: 'hidden', \n textOverflow: 'ellipsis',\n fontSize: 14,\n color: '#1f2937',\n }}>\n {file.name}\n </div>\n <div style={{ fontSize: 12, color: '#9ca3af' }}>\n {(file.size / 1024 / 1024).toFixed(2)} MB\n </div>\n </div>\n <button\n onClick={() => setFile(null)}\n style={{\n background: 'none',\n border: 'none',\n color: '#6b7280',\n cursor: 'pointer',\n fontSize: 13,\n textDecoration: 'underline',\n }}\n >\n Change\n </button>\n </div>\n\n {/* Password input */}\n <div style={{ marginBottom: 20 }}>\n <label style={{ \n display: 'block', \n marginBottom: 6, \n fontWeight: 500, \n fontSize: 13,\n color: '#374151',\n }}>\n PDF Password\n </label>\n <input\n type=\"password\"\n placeholder=\"Usually your PAN (e.g. ABCDE1234F)\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n style={{\n width: '100%',\n padding: '12px 14px',\n fontSize: 16,\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n }}\n />\n <div style={{ \n fontSize: 11, \n color: '#9ca3af', \n marginTop: 6,\n display: 'flex',\n gap: 16,\n }}>\n <span>Common passwords:</span>\n <span>PAN in CAPS</span>\n <span>DOB (DDMMYYYY)</span>\n </div>\n </div>\n\n <button\n onClick={handleSubmit}\n style={{\n width: '100%',\n padding: '16px 24px',\n fontSize: 16,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 8,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n }}\n >\n Import Investments\n </button>\n </div>\n );\n};\n","import React, { useState, useEffect } from 'react';\n\ninterface FetchModeProps {\n prefill?: { pan?: string; email?: string };\n onSubmit: (pan: string, email: string) => Promise<void>;\n onBack: () => void;\n isLoading: boolean;\n}\n\nexport const FetchMode: React.FC<FetchModeProps> = ({ \n prefill, \n onSubmit, \n onBack,\n isLoading \n}) => {\n const [pan, setPan] = useState(prefill?.pan || '');\n const [email, setEmail] = useState(prefill?.email || '');\n const [error, setError] = useState('');\n\n useEffect(() => {\n if (prefill) {\n if (prefill.pan) setPan(prefill.pan);\n if (prefill.email) setEmail(prefill.email);\n }\n }, [prefill]);\n\n const validatePan = (value: string) => /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/.test(value);\n const validateEmail = (value: string) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n\n const upperPan = pan.toUpperCase();\n if (!validatePan(upperPan)) {\n setError('Invalid PAN format (e.g. ABCDE1234F)');\n return;\n }\n if (!validateEmail(email)) {\n setError('Invalid email format');\n return;\n }\n\n try {\n await onSubmit(upperPan, email);\n } catch (err: any) {\n setError(err.message || 'Failed to submit request');\n }\n };\n\n if (isLoading) {\n return (\n <div style={{ \n textAlign: 'center', \n padding: '60px 20px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}>\n <div style={{ \n width: 48, \n height: 48, \n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n marginBottom: 24,\n }} />\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n <h3 style={{ margin: 0, fontSize: 18, fontWeight: 600, color: '#1f2937' }}>\n Sending Request...\n </h3>\n <p style={{ color: '#6b7280', marginTop: 8, fontSize: 14 }}>\n You'll receive your statement via email shortly\n </p>\n </div>\n );\n }\n\n return (\n <div>\n <h2 style={{ fontSize: 20, fontWeight: 700, margin: '0 0 6px', color: '#1f2937' }}>\n Request CAS via Email\n </h2>\n <p style={{ fontSize: 14, color: '#6b7280', margin: '0 0 20px', lineHeight: 1.5 }}>\n KFintech will send your statement in 2-5 minutes\n </p>\n \n {/* Info box */}\n <div style={{\n backgroundColor: '#f9fafb',\n border: '1px solid #e5e7eb',\n borderRadius: 8,\n padding: 12,\n marginBottom: 20,\n fontSize: 12,\n color: '#6b7280',\n }}>\n <strong style={{ color: '#374151' }}>Note:</strong> Use the email registered with your mutual fund investments\n </div>\n\n <form onSubmit={handleSubmit}>\n <div style={{ marginBottom: 16 }}>\n <label style={{ \n display: 'block', \n fontSize: 13, \n fontWeight: 500, \n color: '#374151',\n marginBottom: 6,\n }}>\n PAN Number\n </label>\n <input\n type=\"text\"\n value={pan}\n onChange={(e) => setPan(e.target.value.toUpperCase())}\n placeholder=\"ABCDE1234F\"\n maxLength={10}\n style={{\n width: '100%',\n height: 46,\n padding: '0 14px',\n fontSize: 16,\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n textTransform: 'uppercase',\n }}\n />\n </div>\n\n <div style={{ marginBottom: 20 }}>\n <label style={{ \n display: 'block', \n fontSize: 13, \n fontWeight: 500, \n color: '#374151',\n marginBottom: 6,\n }}>\n Email Address\n </label>\n <input\n type=\"email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"you@example.com\"\n style={{\n width: '100%',\n height: 46,\n padding: '0 14px',\n fontSize: 16,\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n }}\n />\n <div style={{ fontSize: 11, color: '#9ca3af', marginTop: 4 }}>\n Statement will be sent to this email\n </div>\n </div>\n\n {error && (\n <div style={{ \n color: '#dc2626', \n fontSize: 13, \n marginBottom: 16,\n padding: '10px 12px',\n backgroundColor: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: 8,\n }}>\n {error}\n </div>\n )}\n\n <button\n type=\"submit\"\n style={{\n width: '100%',\n height: 50,\n fontSize: 16,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 8,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n }}\n >\n Request Statement\n </button>\n\n <div style={{ textAlign: 'center', marginTop: 16 }}>\n <button\n type=\"button\"\n onClick={onBack}\n style={{\n background: 'none',\n border: 'none',\n color: '#6b7280',\n fontSize: 13,\n cursor: 'pointer',\n textDecoration: 'underline',\n }}\n >\n ← I already have my file\n </button>\n </div>\n </form>\n </div>\n );\n};\n","import React, { useState, useEffect } from 'react';\n\ntype Step = 'INPUT' | 'OTP' | 'LOADING' | 'SUCCESS' | 'ERROR';\n\ninterface CDSLFetchModeProps {\n prefill?: { pan?: string; boId?: string; dob?: string };\n onRequestOtp: (pan: string, boId: string, dob: string) => Promise<string>; // Returns session_id\n onVerifyOtp: (sessionId: string, otp: string, pan: string) => Promise<void>; // pan passed for statement password\n onBack: () => void;\n}\n\nexport const CDSLFetchMode: React.FC<CDSLFetchModeProps> = ({\n prefill,\n onRequestOtp,\n onVerifyOtp,\n onBack,\n}) => {\n const [step, setStep] = useState<Step>('INPUT');\n const [pan, setPan] = useState(prefill?.pan || '');\n const [boId, setBoId] = useState(prefill?.boId || '');\n const [dob, setDob] = useState(prefill?.dob || '');\n const [otp, setOtp] = useState('');\n const [sessionId, setSessionId] = useState('');\n const [error, setError] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (prefill) {\n if (prefill.pan) setPan(prefill.pan);\n if (prefill.boId) setBoId(prefill.boId);\n if (prefill.dob) setDob(prefill.dob);\n }\n }, [prefill]);\n\n const validatePan = (value: string) => /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/.test(value);\n const validateBoId = (value: string) => /^\\d{16}$/.test(value);\n const validateDob = (value: string) => /^\\d{4}-\\d{2}-\\d{2}$/.test(value);\n\n const handleRequestOtp = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n\n const upperPan = pan.toUpperCase();\n if (!validatePan(upperPan)) {\n setError('Invalid PAN format (e.g. ABCDE1234F)');\n return;\n }\n if (!validateBoId(boId)) {\n setError('BO ID must be 16 digits');\n return;\n }\n if (!validateDob(dob)) {\n setError('Date of birth must be YYYY-MM-DD');\n return;\n }\n\n setIsLoading(true);\n try {\n const sid = await onRequestOtp(upperPan, boId, dob);\n setSessionId(sid);\n setStep('OTP');\n } catch (err: any) {\n setError(err.message || 'Failed to request OTP');\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleVerifyOtp = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n\n if (otp.length !== 4) {\n setError('Please enter the 4-digit OTP');\n return;\n }\n\n setIsLoading(true);\n setStep('LOADING');\n try {\n await onVerifyOtp(sessionId, otp, pan.toUpperCase()); // Pass PAN as password for parsing\n setStep('SUCCESS');\n } catch (err: any) {\n setError(err.message || 'Something went wrong. Please try again.');\n setStep('ERROR');\n setIsLoading(false);\n }\n };\n\n // Error state with retry\n if (step === 'ERROR') {\n return (\n <div style={{\n textAlign: 'center',\n padding: '40px 20px',\n }}>\n <div style={{\n width: 56,\n height: 56,\n backgroundColor: '#fef2f2',\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '0 auto 20px',\n }}>\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#dc2626\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/>\n </svg>\n </div>\n <h3 style={{ margin: '0 0 8px', fontSize: 18, fontWeight: 600, color: '#1f2937' }}>\n Import Failed\n </h3>\n <p style={{ color: '#6b7280', fontSize: 14, margin: '0 0 24px', lineHeight: 1.5 }}>\n {error || 'Something went wrong while fetching your portfolio.'}\n </p>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <button\n onClick={() => { setStep('OTP'); setError(''); setOtp(''); }}\n style={{\n width: '100%',\n height: 46,\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 8,\n cursor: 'pointer',\n }}\n >\n Try Again\n </button>\n <button\n onClick={() => { setStep('INPUT'); setError(''); setOtp(''); }}\n style={{\n width: '100%',\n height: 46,\n fontSize: 15,\n fontWeight: 500,\n backgroundColor: '#fff',\n color: '#6b7280',\n border: '1px solid #e5e7eb',\n borderRadius: 8,\n cursor: 'pointer',\n }}\n >\n Start Over\n </button>\n </div>\n </div>\n );\n }\n\n // Loading state\n if (step === 'LOADING') {\n return (\n <div style={{\n textAlign: 'center',\n padding: '60px 20px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}>\n <div style={{\n width: 48,\n height: 48,\n border: '3px solid #e5e7eb',\n borderTopColor: '#2563eb',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n marginBottom: 24,\n }} />\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n <h3 style={{ margin: 0, fontSize: 18, fontWeight: 600, color: '#1f2937' }}>\n Importing Your Portfolio\n </h3>\n <p style={{ color: '#6b7280', marginTop: 8, fontSize: 14 }}>\n Securely fetching your holdings...\n </p>\n </div>\n );\n }\n\n // Success state\n if (step === 'SUCCESS') {\n return (\n <div style={{\n textAlign: 'center',\n padding: '40px 20px',\n }}>\n <div style={{\n width: 56,\n height: 56,\n backgroundColor: '#dcfce7',\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '0 auto 20px',\n }}>\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#16a34a\" strokeWidth=\"2.5\">\n <polyline points=\"20 6 9 17 4 12\"/>\n </svg>\n </div>\n <h3 style={{ margin: '0 0 8px', fontSize: 20, fontWeight: 600, color: '#1f2937' }}>\n Portfolio Imported!\n </h3>\n <p style={{ color: '#6b7280', fontSize: 14, margin: 0 }}>\n Your demat holdings are now available\n </p>\n </div>\n );\n }\n\n // OTP input step\n if (step === 'OTP') {\n return (\n <div>\n <h2 style={{ fontSize: 20, fontWeight: 700, margin: '0 0 6px', color: '#1f2937' }}>\n Verify OTP\n </h2>\n <p style={{ fontSize: 14, color: '#6b7280', margin: '0 0 20px', lineHeight: 1.5 }}>\n CDSL has sent an OTP to your registered mobile\n </p>\n\n <form onSubmit={handleVerifyOtp}>\n <div style={{ marginBottom: 20 }}>\n <label style={{\n display: 'block',\n fontSize: 13,\n fontWeight: 500,\n color: '#374151',\n marginBottom: 6,\n }}>\n OTP Code\n </label>\n <input\n type=\"text\"\n value={otp}\n onChange={(e) => setOtp(e.target.value.replace(/\\D/g, '').slice(0, 4))}\n placeholder=\"••••\"\n maxLength={4}\n autoFocus\n style={{\n width: '100%',\n height: 50,\n padding: '0 14px',\n fontSize: 20,\n fontWeight: 600,\n letterSpacing: 8,\n textAlign: 'center',\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n {error && (\n <div style={{\n color: '#dc2626',\n fontSize: 13,\n marginBottom: 16,\n padding: '10px 12px',\n backgroundColor: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: 8,\n }}>\n {error}\n </div>\n )}\n\n <button\n type=\"submit\"\n disabled={isLoading}\n style={{\n width: '100%',\n height: 50,\n fontSize: 16,\n fontWeight: 600,\n backgroundColor: isLoading ? '#93c5fd' : '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 8,\n cursor: isLoading ? 'not-allowed' : 'pointer',\n }}\n >\n {isLoading ? 'Verifying...' : 'Import Portfolio'}\n </button>\n\n <div style={{ textAlign: 'center', marginTop: 16 }}>\n <button\n type=\"button\"\n onClick={() => { setStep('INPUT'); setError(''); }}\n style={{\n background: 'none',\n border: 'none',\n color: '#6b7280',\n fontSize: 13,\n cursor: 'pointer',\n textDecoration: 'underline',\n }}\n >\n ← Go back\n </button>\n </div>\n </form>\n </div>\n );\n }\n\n // Input step (default)\n return (\n <div>\n <h2 style={{ fontSize: 20, fontWeight: 700, margin: '0 0 6px', color: '#1f2937' }}>\n Import from CDSL\n </h2>\n <p style={{ fontSize: 14, color: '#6b7280', margin: '0 0 20px', lineHeight: 1.5 }}>\n Securely fetch your demat holdings\n </p>\n\n <div style={{\n backgroundColor: '#f9fafb',\n border: '1px solid #e5e7eb',\n borderRadius: 8,\n padding: 12,\n marginBottom: 20,\n fontSize: 12,\n color: '#6b7280',\n }}>\n <strong style={{ color: '#374151' }}>Where to find BO ID:</strong> Check your broker app under Demat Details, or any CDSL statement\n </div>\n\n <form onSubmit={handleRequestOtp}>\n <div style={{ marginBottom: 16 }}>\n <label style={{\n display: 'block',\n fontSize: 13,\n fontWeight: 500,\n color: '#374151',\n marginBottom: 6,\n }}>\n PAN Number\n </label>\n <input\n type=\"text\"\n value={pan}\n onChange={(e) => setPan(e.target.value.toUpperCase())}\n placeholder=\"ABCDE1234F\"\n maxLength={10}\n style={{\n width: '100%',\n height: 46,\n padding: '0 14px',\n fontSize: 16,\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n textTransform: 'uppercase',\n }}\n />\n </div>\n\n <div style={{ marginBottom: 16 }}>\n <label style={{\n display: 'block',\n fontSize: 13,\n fontWeight: 500,\n color: '#374151',\n marginBottom: 6,\n }}>\n BO ID (16 digits)\n </label>\n <input\n type=\"text\"\n value={boId}\n onChange={(e) => setBoId(e.target.value.replace(/\\D/g, '').slice(0, 16))}\n placeholder=\"1234567890123456\"\n maxLength={16}\n style={{\n width: '100%',\n height: 46,\n padding: '0 14px',\n fontSize: 16,\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div style={{ marginBottom: 20 }}>\n <label style={{\n display: 'block',\n fontSize: 13,\n fontWeight: 500,\n color: '#374151',\n marginBottom: 6,\n }}>\n Date of Birth\n </label>\n <input\n type=\"date\"\n value={dob}\n onChange={(e) => setDob(e.target.value)}\n style={{\n width: '100%',\n height: 46,\n padding: '0 14px',\n fontSize: 16,\n border: '1px solid #d1d5db',\n borderRadius: 8,\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n {error && (\n <div style={{\n color: '#dc2626',\n fontSize: 13,\n marginBottom: 16,\n padding: '10px 12px',\n backgroundColor: '#fef2f2',\n border: '1px solid #fecaca',\n borderRadius: 8,\n }}>\n {error}\n </div>\n )}\n\n <button\n type=\"submit\"\n disabled={isLoading}\n style={{\n width: '100%',\n height: 50,\n fontSize: 16,\n fontWeight: 600,\n backgroundColor: isLoading ? '#93c5fd' : '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 8,\n cursor: isLoading ? 'not-allowed' : 'pointer',\n }}\n >\n {isLoading ? 'Requesting OTP...' : 'Request OTP'}\n </button>\n\n <div style={{ textAlign: 'center', marginTop: 16 }}>\n <button\n type=\"button\"\n onClick={onBack}\n style={{\n background: 'none',\n border: 'none',\n color: '#6b7280',\n fontSize: 13,\n cursor: 'pointer',\n textDecoration: 'underline',\n }}\n >\n ← I already have my file\n </button>\n </div>\n </form>\n </div>\n );\n};\n","const DEFAULT_API_URL = 'https://portfolio-parser.api.casparser.in';\nconst DEFAULT_AUTH_URL = 'https://client-apis.casparser.in';\n\nexport interface ApiClient {\n baseUrl: string;\n apiKey: string;\n}\n\n/**\n * Creates an API client for making requests to CASParser API.\n * \n * @param accessToken - Your access token (get one at docs.casparser.in)\n * @param baseUrl - Optional custom API base URL\n * @returns API client instance\n */\nexport function createApiClient(accessToken: string, baseUrl?: string): ApiClient {\n return {\n baseUrl: baseUrl || DEFAULT_API_URL,\n apiKey: accessToken,\n };\n}\n\nexport interface AccessTokenResponse {\n access_token: string;\n token_type: 'api_key'; // Drop-in replacement for x-api-key header\n expires_in: number;\n}\n\n/**\n * Request a short-lived access token from the API key.\n * Use this on your backend to generate tokens for frontend use.\n * \n * @param apiKey - Your API key (do NOT expose this on frontend)\n * @param expiryMinutes - Token validity in minutes (max 60, default 60)\n * @param authUrl - Optional custom auth URL\n * @returns Access token response with SK_ prefixed token\n */\nexport async function requestAccessToken(\n apiKey: string,\n expiryMinutes: number = 60,\n authUrl?: string\n): Promise<AccessTokenResponse> {\n const url = authUrl || DEFAULT_AUTH_URL;\n \n const response = await fetch(`${url}/v1/access-token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n },\n body: JSON.stringify({\n expiry_minutes: Math.min(expiryMinutes, 60),\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new Error(errorData.detail || errorData.message || 'Failed to get access token');\n }\n\n return response.json();\n}\n\n/**\n * Check if a token is an access token (SK_ prefix)\n */\nexport function isAccessToken(token: string): boolean {\n return token?.startsWith('SK_') || false;\n}\n\nexport async function parseStatement(\n client: ApiClient,\n file: File,\n password?: string,\n onProgress?: (percent: number) => void\n): Promise<any> {\n const formData = new FormData();\n formData.append('pdf_file', file);\n if (password) {\n formData.append('password', password);\n }\n\n // Simulate progress since fetch doesn't support upload progress natively\n if (onProgress) {\n onProgress(30);\n }\n\n const response = await fetch(`${client.baseUrl}/v4/smart/parse`, {\n method: 'POST',\n headers: {\n 'x-api-key': client.apiKey,\n 'Authorization': `Token ${client.apiKey}`,\n },\n body: formData,\n });\n\n if (onProgress) {\n onProgress(80);\n }\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw { response: { data: errorData }, message: errorData.msg || 'Request failed' };\n }\n\n return response.json();\n}\n\n/**\n * Parse a statement from a URL (used for CDSL fetch results)\n */\nexport async function parseStatementFromUrl(\n client: ApiClient,\n pdfUrl: string,\n password?: string,\n onProgress?: (percent: number) => void\n): Promise<any> {\n if (onProgress) {\n onProgress(30);\n }\n\n const body: Record<string, string> = { pdf_url: pdfUrl };\n if (password) {\n body.password = password;\n }\n\n const response = await fetch(`${client.baseUrl}/v4/smart/parse`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': client.apiKey,\n 'Authorization': `Token ${client.apiKey}`,\n },\n body: JSON.stringify(body),\n });\n\n if (onProgress) {\n onProgress(80);\n }\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw { response: { data: errorData }, message: errorData.msg || 'Request failed' };\n }\n\n return response.json();\n}\n\nexport interface GeneratorOptions {\n fromDate?: string;\n toDate?: string;\n password?: string;\n}\n\nexport async function generateCAS(\n client: ApiClient,\n email: string,\n pan: string,\n options?: GeneratorOptions\n): Promise<any> {\n // Format dates as YYYY-MM-DD per API spec\n const today = new Date();\n const toDate = options?.toDate || today.toISOString().split('T')[0];\n const fromDate = options?.fromDate || '2000-01-01';\n const password = options?.password || 'Abcdefghi12$';\n \n // Using the /v4/generate endpoint from portfolio-tracking\n const response = await fetch(`${client.baseUrl}/v4/generate`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': client.apiKey,\n 'Authorization': `Token ${client.apiKey}`,\n },\n body: JSON.stringify({\n email,\n pan_no: pan,\n from_date: fromDate,\n to_date: toDate,\n password,\n cas_authority: 'kfintech',\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw { response: { data: errorData }, message: errorData.msg || errorData.message || 'Request failed' };\n }\n\n return response.json();\n}\n\n// ============================================\n// CDSL Fetch API (2-step OTP flow)\n// ============================================\n\nexport interface CdslFetchResponse {\n status: string;\n session_id: string;\n msg: string;\n}\n\nexport interface CdslVerifyResponse {\n status: string;\n msg: string;\n files: Array<{ filename: string; url: string }>;\n}\n\nexport async function cdslFetchRequestOtp(\n client: ApiClient,\n pan: string,\n boId: string,\n dob: string\n): Promise<CdslFetchResponse> {\n const response = await fetch(`${client.baseUrl}/v4/cdsl/fetch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': client.apiKey,\n 'Authorization': `Token ${client.apiKey}`,\n },\n body: JSON.stringify({\n pan: pan.toUpperCase(),\n bo_id: boId,\n dob,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw { response: { data: errorData }, message: errorData.msg || 'Failed to request OTP' };\n }\n\n return response.json();\n}\n\nexport async function cdslFetchVerifyOtp(\n client: ApiClient,\n sessionId: string,\n otp: string,\n numPeriods: number = 6\n): Promise<CdslVerifyResponse> {\n const response = await fetch(`${client.baseUrl}/v4/cdsl/fetch/${sessionId}/verify`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': client.apiKey,\n 'Authorization': `Token ${client.apiKey}`,\n },\n body: JSON.stringify({\n otp,\n num_periods: numPeriods,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw { response: { data: errorData }, message: errorData.msg || 'Failed to verify OTP' };\n }\n\n return response.json();\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport { Modal } from './Modal';\nimport { ShortcutLinks } from './ShortcutLinks';\nimport { UploadZone } from './UploadZone';\nimport { FetchMode } from './FetchMode';\nimport { CDSLFetchMode } from './CDSLFetchMode';\nimport { createApiClient, parseStatement, parseStatementFromUrl, generateCAS, cdslFetchRequestOtp, cdslFetchVerifyOtp } from '../utils/api';\nimport type { \n PortfolioConnectConfig, \n PortfolioType,\n ParsedData, \n PortfolioConnectEvent, \n PortfolioConnectError,\n BrokerInfo,\n // Backward compatible aliases used internally\n CASType,\n CASConnectEvent,\n CASConnectError,\n} from '../types';\n\nconst DEFAULT_LOGO_URL = 'https://casparser.in/assets/images/section-navigation01-image01.png';\nconst BROKER_LOGO_BASE = 'https://assets.smallcase.com/smallcase/assets/brokerLogo/small';\n\nconst CAS_PORTALS: Record<CASType, { name: string; url: string }> = {\n 'CAMS_KFINTECH': { name: 'KFintech', url: 'https://mfs.kfintech.com/investor/General/ConsolidatedAccountStatement' },\n 'CDSL': { name: 'CDSL', url: 'https://www.cdslindia.com/cas/logincas.aspx' },\n 'NSDL': { name: 'NSDL', url: 'https://nsdlcas.nsdl.com/' },\n};\n\n// Default broker list with logos (can be overridden via config.brokers)\nconst DEFAULT_BROKERS: BrokerInfo[] = ([\n { name: 'Zerodha', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/kite.svg` },\n { name: 'Groww', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/groww.svg` },\n { name: 'Angel One', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/angelbroking.svg` },\n { name: 'Upstox', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/upstox.svg` },\n { name: '5paisa', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/fivepaisa.svg` },\n { name: 'Dhan', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/dhan.svg` },\n { name: 'Alice Blue', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/aliceblue.svg` },\n { name: 'Fisdom', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/fisdom.svg` },\n { name: 'FundzBazar', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/fundzbazar.svg` },\n { name: 'HDFC SKY', depository: 'CDSL' as const, logo: `${BROKER_LOGO_BASE}/hdfcsky.svg` },\n { name: 'ICICI Direct', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/icici.svg` },\n { name: 'HDFC Securities', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/hdfc.svg` },\n { name: 'Kotak Securities', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/kotak.svg` },\n { name: 'SBI Securities', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/sbi.svg` },\n { name: 'Motilal Oswal', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/motilal.svg` },\n { name: 'IIFL Capital', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/iifl.svg` },\n { name: 'Nuvama Wealth', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/edelweiss.svg` },\n { name: 'Trustline', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/trustline.svg` },\n { name: 'AxisDirect', depository: 'NSDL' as const, logo: `${BROKER_LOGO_BASE}/axis.svg` },\n]).sort((a, b) => a.name.localeCompare(b.name));\n\ninterface PortfolioConnectWidgetProps {\n isOpen: boolean;\n onClose: () => void;\n apiKey: string;\n apiBaseUrl?: string;\n config?: PortfolioConnectConfig;\n onSuccess: (data: ParsedData, metadata: any) => void;\n onError?: (error: PortfolioConnectError) => void;\n onEvent?: (event: PortfolioConnectEvent, metadata: any) => void;\n}\n\ntype WidgetMode = 'LOCATE' | 'MF_OPTIONS' | 'SELECT_BROKER' | 'DEMAT_OPTIONS' | 'UPLOAD' | 'FETCH' | 'CDSL_FETCH';\n\nexport const PortfolioConnectWidget: React.FC<PortfolioConnectWidgetProps> = ({\n isOpen,\n onClose,\n apiKey,\n apiBaseUrl,\n config = {},\n onSuccess,\n onError,\n onEvent,\n}) => {\n const [mode, setMode] = useState<WidgetMode>('LOCATE');\n const [selectedType, setSelectedType] = useState<CASType>('CAMS_KFINTECH');\n const [isProcessing, setIsProcessing] = useState(false);\n const [progress, setProgress] = useState(0);\n const [fetchLoading, setFetchLoading] = useState(false);\n const [lastError, setLastError] = useState<CASConnectError | null>(null);\n const [selectedBroker, setSelectedBroker] = useState<string | null>(null);\n \n // Use ref to avoid stale closure issues and prevent infinite loops\n const onEventRef = useRef(onEvent);\n onEventRef.current = onEvent;\n \n // Track progress interval for cleanup on unmount\n const progressIntervalRef = useRef<NodeJS.Timeout | null>(null);\n \n // Cleanup interval on unmount to prevent memory leaks\n useEffect(() => {\n return () => {\n if (progressIntervalRef.current) {\n clearInterval(progressIntervalRef.current);\n progressIntervalRef.current = null;\n }\n };\n }, []);\n\n const apiClient = createApiClient(apiKey, apiBaseUrl);\n\n const emitEvent = (event: CASConnectEvent, metadata: any = {}) => {\n onEventRef.current?.(event, { timestamp: Date.now(), ...metadata });\n };\n\n // Determine allowed types from config, default to all\n const allowedTypes = config.allowedTypes || ['CAMS_KFINTECH', 'CDSL', 'NSDL'];\n const showGenerator = config.enableGenerator && selectedType === 'CAMS_KFINTECH';\n const showCdslFetch = config.enableCdslFetch && selectedType === 'CDSL';\n const showShortcuts = config.showShortcuts !== false; // Default true\n const showPortalLinks = config.showPortalLinks !== false; // Default true\n\n useEffect(() => {\n if (isOpen) {\n // Always start at home (LOCATE) screen\n const firstType = allowedTypes[0] || 'CAMS_KFINTECH';\n setSelectedType(firstType);\n setMode('LOCATE');\n setIsProcessing(false);\n setProgress(0);\n setLastError(null); // Clear any previous errors\n emitEvent('WIDGET_OPENED');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const handleClose = () => {\n emitEvent('WIDGET_CLOSED');\n onClose();\n };\n\n const handleModeSwitch = (newMode: WidgetMode) => {\n setMode(newMode);\n emitEvent('MODE_SWITCHED', { from: mode, to: newMode });\n };\n\n const handleBrokerSelect = (broker: BrokerInfo | null) => {\n if (broker) {\n setSelectedBroker(broker.name);\n setSelectedType(broker.depository);\n emitEvent('BROKER_SELECTED', { broker: broker.name, depository: broker.depository });\n // If CDSL and CDSL fetch is enabled, show options\n if (broker.depository === 'CDSL' && config.enableCdslFetch) {\n setMode('DEMAT_OPTIONS');\n } else {\n setMode('UPLOAD');\n }\n } else {\n // \"Other\" selected - let user choose depository manually\n setSelectedBroker('Other');\n }\n };\n\n const handleManualDepositorySelect = (depository: 'CDSL' | 'NSDL') => {\n setSelectedType(depository);\n emitEvent('BROKER_SELECTED', { broker: 'Other', depository });\n // If CDSL and CDSL fetch is enabled, show options\n if (depository === 'CDSL' && config.enableCdslFetch) {\n setMode('DEMAT_OPTIONS');\n } else {\n setMode('UPLOAD');\n }\n };\n\n const handleFileProcess = async (file: File, password: string) => {\n setIsProcessing(true);\n setProgress(10);\n emitEvent('UPLOAD_STARTED', { filename: file.name, size: file.size });\n\n progressIntervalRef.current = setInterval(() => {\n setProgress(prev => Math.min(prev + Math.random() * 10, 90));\n }, 500);\n\n try {\n const startTime = Date.now();\n const response = await parseStatement(\n apiClient,\n file,\n password,\n (percent) => setProgress(percent)\n );\n\n if (progressIntervalRef.current) {\n clearInterval(progressIntervalRef.current);\n progressIntervalRef.current = null;\n }\n setProgress(100);\n\n const metadata = {\n filename: file.name,\n parser_type: response.cas_author || 'AUTO',\n parse_duration_ms: Date.now() - startTime,\n };\n\n emitEvent('PARSE_SUCCESS', metadata);\n\n setTimeout(() => {\n onSuccess(response, metadata);\n handleClose();\n }, 500);\n\n } catch (error: any) {\n if (progressIntervalRef.current) {\n clearInterval(progressIntervalRef.current);\n progressIntervalRef.current = null;\n }\n setIsProcessing(false);\n setProgress(0);\n\n const casError: CASConnectError = {\n code: 'PARSE_ERROR',\n message: error.response?.data?.msg || error.message || 'Failed to parse statement',\n details: error.response?.data,\n };\n\n emitEvent('PARSE_ERROR', { error: casError });\n setLastError(casError); // Show error in widget, let user retry\n onError?.(casError);\n }\n };\n\n const handleRetry = () => {\n setLastError(null);\n setMode('UPLOAD');\n };\n\n const handleFetchSubmit = async (pan: string, email: string) => {\n setFetchLoading(true);\n emitEvent('GENERATOR_STARTED', { pan: pan.slice(0, 4) + '***' });\n\n try {\n // Pass generator config options (dateRange, password) if provided\n await generateCAS(apiClient, email, pan, config.generator);\n emitEvent('GENERATOR_SUCCESS');\n setFetchLoading(false);\n handleModeSwitch('LOCATE');\n } catch (error: any) {\n setFetchLoading(false);\n const casError: CASConnectError = {\n code: 'GENERATOR_ERROR',\n message: error.response?.data?.message || error.message || 'Failed to request statement',\n details: error.response?.data,\n };\n emitEvent('GENERATOR_ERROR', { error: casError });\n throw new Error(casError.message);\n }\n };\n\n // CDSL Fetch handlers\n const handleCdslRequestOtp = async (pan: string, boId: string, dob: string): Promise<string> => {\n emitEvent('CDSL_FETCH_STARTED', { pan: pan.slice(0, 4) + '***' });\n \n try {\n const response = await cdslFetchRequestOtp(apiClient, pan, boId, dob);\n emitEvent('CDSL_OTP_SENT', { session_id: response.session_id });\n return response.session_id;\n } catch (error: any) {\n const casError: CASConnectError = {\n code: 'CDSL_FETCH_ERROR',\n message: error.message || 'Failed to request OTP',\n details: error.response?.data,\n };\n emitEvent('CDSL_FETCH_ERROR', { error: casError });\n throw new Error(casError.message);\n }\n };\n\n const handleCdslVerifyOtp = async (sessionId: string, otp: string, pan: string): Promise<void> => {\n try {\n const response = await cdslFetchVerifyOtp(apiClient, sessionId, otp);\n emitEvent('CDSL_OTP_VERIFIED');\n \n // Files are ready - emit event with all file URLs for developer interception\n emitEvent('CDSL_FETCH_SUCCESS', { \n files: response.files,\n count: response.files.length,\n });\n \n // Auto-parse the most recent file (first in list) - PAN is the password\n await handleCdslAutoParse(response.files, pan);\n } catch (error: any) {\n const casError: CASConnectError = {\n code: 'CDSL_FETCH_ERROR',\n message: error.message || 'Failed to verify OTP',\n details: error.response?.data,\n };\n emitEvent('CDSL_FETCH_ERROR', { error: casError });\n throw new Error(casError.message);\n }\n };\n\n const handleCdslAutoParse = async (files: Array<{ filename: string; url: string }>, pan: string) => {\n if (!files || files.length === 0) {\n const casError: CASConnectError = {\n code: 'CDSL_FETCH_ERROR',\n message: 'No files returned from CDSL',\n };\n emitEvent('CDSL_FETCH_ERROR', { error: casError });\n onError?.(casError);\n return;\n }\n\n // Use the first (most recent) file\n const targetFile = files[0];\n setIsProcessing(true);\n setProgress(10);\n emitEvent('PARSE_STARTED', { filename: targetFile.filename, source: 'CDSL_FETCH' });\n\n try {\n const startTime = Date.now();\n \n // Parse via URL - smart parse API accepts pdf_url, PAN is the password\n const response = await parseStatementFromUrl(\n apiClient,\n targetFile.url,\n pan, // CDSL files are password protected with PAN\n (percent) => setProgress(percent)\n );\n\n setProgress(100);\n\n const metadata = {\n filename: targetFile.filename,\n parser_type: response.cas_author || 'CDSL',\n parse_duration_ms: Date.now() - startTime,\n source: 'CDSL_FETCH',\n all_files: files, // Include all file URLs for developer reference\n };\n\n emitEvent('PARSE_SUCCESS', metadata);\n\n setTimeout(() => {\n onSuccess(response, metadata);\n handleClose();\n }, 500);\n\n } catch (error: any) {\n setIsProcessing(false);\n setProgress(0);\n\n const casError: CASConnectError = {\n code: 'PARSE_ERROR',\n message: error.response?.data?.msg || error.message || 'Failed to parse CDSL statement',\n details: { ...error.response?.data, files },\n };\n\n emitEvent('PARSE_ERROR', { error: casError });\n onError?.(casError);\n }\n };\n\n const renderContent = () => {\n // Show error with retry option - don't crash the widget\n if (lastError) {\n return (\n <div style={{ textAlign: 'center', padding: '20px 0' }}>\n <div style={{ \n width: 56, \n height: 56, \n backgroundColor: '#fef2f2', \n borderRadius: '50%', \n display: 'flex', \n alignItems: 'center', \n justifyContent: 'center',\n margin: '0 auto 16px',\n }}>\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#dc2626\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/>\n </svg>\n </div>\n <h3 style={{ fontSize: 18, fontWeight: 600, color: '#111827', margin: '0 0 8px' }}>\n Something went wrong\n </h3>\n <p style={{ fontSize: 14, color: '#6b7280', margin: '0 0 20px', lineHeight: 1.5 }}>\n {lastError.message}\n </p>\n <div style={{ display: 'flex', gap: 12, justifyContent: 'center' }}>\n <button\n onClick={handleRetry}\n style={{\n padding: '12px 24px',\n fontSize: 14,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 8,\n cursor: 'pointer',\n }}\n >\n Try Again\n </button>\n <button\n onClick={handleClose}\n style={{\n padding: '12px 24px',\n fontSize: 14,\n fontWeight: 500,\n backgroundColor: '#f3f4f6',\n color: '#374151',\n border: 'none',\n borderRadius: 8,\n cursor: 'pointer',\n }}\n >\n Close\n </button>\n </div>\n </div>\n );\n }\n\n if (mode === 'FETCH' && config.enableGenerator) {\n return (\n <FetchMode\n prefill={config.prefill}\n onSubmit={handleFetchSubmit}\n onBack={() => handleModeSwitch('LOCATE')}\n isLoading={fetchLoading}\n />\n );\n }\n\n if (mode === 'CDSL_FETCH' && config.enableCdslFetch) {\n return (\n <CDSLFetchMode\n prefill={config.prefill}\n onRequestOtp={handleCdslRequestOtp}\n onVerifyOtp={handleCdslVerifyOtp}\n onBack={() => handleModeSwitch('LOCATE')}\n />\n );\n }\n\n if (mode === 'UPLOAD') {\n const currentPortal = CAS_PORTALS[selectedType];\n return (\n <div>\n <UploadZone\n onFileSelect={handleFileProcess}\n isProcessing={isProcessing}\n progress={progress}\n />\n \n {/* Show shortcuts only on upload screen when relevant */}\n {showShortcuts && (\n <div style={{ marginTop: 16 }}>\n <ShortcutLinks \n selectedType={selectedType}\n onSearchClick={(provider) => emitEvent('SEARCH_CLICKED', { provider })} \n />\n </div>\n )}\n \n {/* Portal link */}\n {showPortalLinks && (\n <div style={{ marginTop: 16, textAlign: 'center' }}>\n <a\n href={currentPortal.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={() => emitEvent('PORTAL_CLICKED', { portal: selectedType })}\n style={{ textDecoration: 'none', color: '#6b7280', fontSize: 13 }}\n >\n Don't have your statement? <span style={{ color: '#2563eb' }}>Download from {currentPortal.name}</span>\n </a>\n </div>\n )}\n </div>\n );\n }\n\n // MF_OPTIONS mode - show upload or KFintech eCAS options\n if (mode === 'MF_OPTIONS') {\n return (\n <div>\n <div style={{ textAlign: 'center', marginBottom: 20 }}>\n <h3 style={{ fontSize: 18, fontWeight: 600, color: '#111827', margin: '0 0 8px' }}>\n Mutual Funds\n </h3>\n <p style={{ fontSize: 14, color: '#6b7280', margin: 0 }}>\n CAMS & KFintech consolidated statement\n </p>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <button\n onClick={() => handleModeSwitch('UPLOAD')}\n style={{\n width: '100%',\n padding: '16px 20px',\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'block' }}>Upload Statement</span>\n <span style={{ fontSize: 12, fontWeight: 400, opacity: 0.85 }}>\n I have my CAS PDF file\n </span>\n </button>\n \n {config.enableGenerator && (\n <button\n onClick={() => handleModeSwitch('FETCH')}\n style={{\n width: '100%',\n padding: '16px 20px',\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#fff',\n color: '#166534',\n border: '2px solid #bbf7d0',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'block' }}>Request via Email</span>\n <span style={{ fontSize: 12, fontWeight: 400, color: '#6b7280' }}>\n Get CAS from KFintech\n </span>\n </button>\n )}\n </div>\n </div>\n );\n }\n\n // DEMAT_OPTIONS mode - show upload or CDSL fetch options (for CDSL only)\n if (mode === 'DEMAT_OPTIONS') {\n return (\n <div>\n <div style={{ textAlign: 'center', marginBottom: 20 }}>\n <h3 style={{ fontSize: 18, fontWeight: 600, color: '#111827', margin: '0 0 8px' }}>\n {selectedBroker ? `${selectedBroker} (CDSL)` : 'CDSL Demat'}\n </h3>\n <p style={{ fontSize: 14, color: '#6b7280', margin: 0 }}>\n How would you like to import?\n </p>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <button\n onClick={() => handleModeSwitch('UPLOAD')}\n style={{\n width: '100%',\n padding: '16px 20px',\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'block' }}>Upload Statement</span>\n <span style={{ fontSize: 12, fontWeight: 400, opacity: 0.85 }}>\n I have my CDSL CAS PDF file\n </span>\n </button>\n \n <button\n onClick={() => handleModeSwitch('CDSL_FETCH')}\n style={{\n width: '100%',\n padding: '16px 20px',\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#fff',\n color: '#1e40af',\n border: '2px solid #bfdbfe',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'block' }}>Fetch from CDSL</span>\n <span style={{ fontSize: 12, fontWeight: 400, color: '#6b7280' }}>\n OTP verification required\n </span>\n </button>\n </div>\n </div>\n );\n }\n\n // SELECT_BROKER mode - for Stocks/Bonds/ETFs\n if (mode === 'SELECT_BROKER') {\n const showManualSelection = selectedBroker === 'Other';\n \n if (showManualSelection) {\n // Show CDSL/NSDL manual selection\n return (\n <div>\n <div style={{ textAlign: 'center', marginBottom: 20 }}>\n <h3 style={{ fontSize: 18, fontWeight: 600, color: '#111827', margin: '0 0 8px' }}>\n Select Your Depository\n </h3>\n <p style={{ fontSize: 14, color: '#6b7280', margin: 0 }}>\n Check your demat account statement to find your depository\n </p>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <button\n onClick={() => handleManualDepositorySelect('CDSL')}\n style={{\n padding: '16px 20px',\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#fff',\n color: '#111827',\n border: '2px solid #e5e7eb',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'block' }}>CDSL</span>\n <span style={{ fontSize: 12, fontWeight: 400, color: '#6b7280' }}>\n Central Depository Services Limited\n </span>\n </button>\n <button\n onClick={() => handleManualDepositorySelect('NSDL')}\n style={{\n padding: '16px 20px',\n fontSize: 15,\n fontWeight: 600,\n backgroundColor: '#fff',\n color: '#111827',\n border: '2px solid #e5e7eb',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'block' }}>NSDL</span>\n <span style={{ fontSize: 12, fontWeight: 400, color: '#6b7280' }}>\n National Securities Depository Limited\n </span>\n </button>\n </div>\n </div>\n );\n }\n \n // Show broker list - use config.brokers if provided, otherwise default\n const brokerList = config.brokers || DEFAULT_BROKERS;\n \n return (\n <div>\n <div style={{ textAlign: 'center', marginBottom: 20 }}>\n <h3 style={{ fontSize: 18, fontWeight: 600, color: '#111827', margin: '0 0 8px' }}>\n Select Your Broker\n </h3>\n <p style={{ fontSize: 14, color: '#6b7280', margin: 0 }}>\n We'll automatically detect your depository\n </p>\n </div>\n <div style={{ \n display: 'grid', \n gridTemplateColumns: 'repeat(2, 1fr)', \n gap: 10,\n maxHeight: 320,\n overflowY: 'auto',\n paddingRight: 4,\n }}>\n {brokerList.map((broker) => (\n <button\n key={broker.name}\n onClick={() => handleBrokerSelect(broker)}\n style={{\n padding: '10px 12px',\n fontSize: 13,\n fontWeight: 500,\n backgroundColor: '#fff',\n color: '#111827',\n border: '1.5px solid #e5e7eb',\n borderRadius: 10,\n cursor: 'pointer',\n textAlign: 'left',\n transition: 'all 0.15s',\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n }}\n onMouseOver={(e) => {\n e.currentTarget.style.borderColor = '#2563eb';\n e.currentTarget.style.backgroundColor = '#f0f7ff';\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.borderColor = '#e5e7eb';\n e.currentTarget.style.backgroundColor = '#fff';\n }}\n >\n {broker.logo && (\n <img \n src={broker.logo} \n alt={broker.name}\n style={{ width: 24, height: 24, objectFit: 'contain', flexShrink: 0 }}\n />\n )}\n <div style={{ minWidth: 0 }}>\n <span style={{ display: 'block', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>{broker.name}</span>\n <span style={{ fontSize: 10, color: '#9ca3af' }}>{broker.depository}</span>\n </div>\n </button>\n ))}\n </div>\n <button\n onClick={() => {\n setSelectedBroker('Other');\n }}\n style={{\n width: '100%',\n marginTop: 12,\n padding: '12px',\n fontSize: 14,\n fontWeight: 500,\n backgroundColor: '#f9fafb',\n color: '#6b7280',\n border: '1.5px dashed #d1d5db',\n borderRadius: 10,\n cursor: 'pointer',\n }}\n >\n Other broker / I don't know\n </button>\n </div>\n );\n }\n\n // LOCATE mode (default)\n const logoUrl = config.logoUrl || DEFAULT_LOGO_URL;\n const currentPortal = CAS_PORTALS[selectedType];\n const title = config.title || 'Import Your Investments';\n const subtitle = config.subtitle || 'Mutual Funds, Stocks, Bonds — all in one place';\n\n // Check if MF and/or Demat are allowed\n const allowMutualFunds = allowedTypes.includes('CAMS_KFINTECH');\n const allowDemat = allowedTypes.includes('CDSL') || allowedTypes.includes('NSDL');\n \n return (\n <div>\n {/* Header with branding */}\n <div style={{ textAlign: 'center', marginBottom: 24 }}>\n <img \n src={logoUrl} \n alt=\"Logo\" \n style={{ width: 56, height: 56, marginBottom: 16, objectFit: 'contain' }}\n />\n <h2 style={{ fontSize: 22, fontWeight: 700, margin: 0, color: '#111827', letterSpacing: '-0.02em' }}>\n {title}\n </h2>\n <p style={{ color: '#6b7280', marginTop: 8, fontSize: 14, lineHeight: 1.5 }}>\n {subtitle}\n </p>\n </div>\n\n {/* Primary Options - Mutual Funds & Stocks */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n {/* Mutual Funds Option */}\n {allowMutualFunds && (\n <button\n onClick={() => {\n setSelectedType('CAMS_KFINTECH');\n setSelectedBroker(null);\n // If generator is enabled, show options; otherwise go directly to upload\n if (config.enableGenerator) {\n handleModeSwitch('MF_OPTIONS');\n } else {\n handleModeSwitch('UPLOAD');\n }\n }}\n style={{\n width: '100%',\n padding: '18px 20px',\n fontSize: 16,\n fontWeight: 600,\n backgroundColor: '#2563eb',\n color: '#fff',\n border: 'none',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n transition: 'all 0.2s',\n boxShadow: '0 4px 14px rgba(37, 99, 235, 0.25)',\n }}\n onMouseOver={(e) => { \n e.currentTarget.style.backgroundColor = '#1d4ed8';\n e.currentTarget.style.transform = 'translateY(-1px)';\n }}\n onMouseOut={(e) => { \n e.currentTarget.style.backgroundColor = '#2563eb';\n e.currentTarget.style.transform = 'translateY(0)';\n }}\n >\n <span style={{ display: 'block' }}>Mutual Funds</span>\n <span style={{ fontSize: 12, fontWeight: 400, opacity: 0.85 }}>\n CAMS & KFintech CAS\n </span>\n </button>\n )}\n\n {/* Stocks, Bonds, ETFs Option */}\n {allowDemat && (\n <button\n onClick={() => {\n setSelectedBroker(null);\n handleModeSwitch('SELECT_BROKER');\n }}\n style={{\n width: '100%',\n padding: '18px 20px',\n fontSize: 16,\n fontWeight: 600,\n backgroundColor: '#fff',\n color: '#111827',\n border: '2px solid #e5e7eb',\n borderRadius: 12,\n cursor: 'pointer',\n textAlign: 'left',\n transition: 'all 0.2s',\n }}\n onMouseOver={(e) => { \n e.currentTarget.style.borderColor = '#2563eb';\n e.currentTarget.style.backgroundColor = '#f0f7ff';\n }}\n onMouseOut={(e) => { \n e.currentTarget.style.borderColor = '#e5e7eb';\n e.currentTarget.style.backgroundColor = '#fff';\n }}\n >\n <span style={{ display: 'block' }}>Stocks, Bonds, ETFs</span>\n <span style={{ fontSize: 12, fontWeight: 400, color: '#6b7280' }}>\n Demat — CDSL & NSDL\n </span>\n </button>\n )}\n </div>\n </div>\n );\n };\n\n // Determine if we're in a sub-screen that should show back button\n const isSubScreen = mode !== 'LOCATE';\n const isSandbox = apiKey === 'sandbox-with-json-responses';\n\n const handleBack = () => {\n // Smart back navigation\n if (mode === 'UPLOAD') {\n if (selectedType === 'CAMS_KFINTECH' && config.enableGenerator) {\n setMode('MF_OPTIONS');\n } else if (selectedType === 'CDSL' && config.enableCdslFetch) {\n setMode('DEMAT_OPTIONS');\n } else if (selectedType === 'CDSL' || selectedType === 'NSDL') {\n setMode('SELECT_BROKER');\n } else {\n setMode('LOCATE');\n }\n } else if (mode === 'FETCH') {\n setMode('MF_OPTIONS');\n } else if (mode === 'CDSL_FETCH') {\n setMode('DEMAT_OPTIONS');\n } else if (mode === 'MF_OPTIONS' || mode === 'DEMAT_OPTIONS') {\n if (selectedType === 'CDSL' || selectedType === 'NSDL') {\n setMode('SELECT_BROKER');\n } else {\n setMode('LOCATE');\n }\n } else if (mode === 'SELECT_BROKER') {\n setMode('LOCATE');\n } else {\n setMode('LOCATE');\n }\n emitEvent('MODE_SWITCHED', { from: mode, to: 'LOCATE' });\n };\n\n return (\n <Modal \n isOpen={isOpen} \n onClose={handleClose} \n onBack={handleBack}\n showBackButton={isSubScreen}\n isSandbox={isSandbox}\n width={420}\n >\n <div style={{ padding: '28px 24px 20px' }}>\n {renderContent()}\n \n {/* Footer */}\n <div style={{ \n marginTop: 24, \n paddingTop: 16,\n borderTop: '1px solid #f3f4f6',\n textAlign: 'center',\n }}>\n <div style={{ fontSize: 11, color: '#9ca3af' }}>\n Encrypted • India-hosted\n </div>\n </div>\n </div>\n </Modal>\n );\n};\n","import React, { useState, useCallback } from 'react';\nimport { PortfolioConnectWidget } from './components/PortfolioConnectWidget';\nimport type { PortfolioConnectProps, RenderProps } from './types';\n\nexport const PortfolioConnect: React.FC<PortfolioConnectProps> = ({\n accessToken,\n apiKey, // deprecated, use accessToken\n apiBaseUrl,\n config,\n onSuccess,\n onError,\n onExit,\n onEvent,\n children,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n \n // Support both accessToken (new) and apiKey (deprecated) - both work with x-api-key header\n const token = accessToken || apiKey;\n\n const open = useCallback(() => {\n setIsOpen(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setIsOpen(false);\n onExit?.();\n }, [onExit]);\n\n const renderProps: RenderProps = {\n open,\n isReady: !!token,\n isOpen,\n };\n\n return (\n <>\n {children(renderProps)}\n <PortfolioConnectWidget\n isOpen={isOpen}\n onClose={handleClose}\n apiKey={token || ''}\n apiBaseUrl={apiBaseUrl}\n config={config}\n onSuccess={onSuccess}\n onError={onError}\n onEvent={onEvent}\n />\n </>\n );\n};\n\n// Backward compatibility alias\nexport const CASConnect = PortfolioConnect;\nexport default PortfolioConnect;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { PortfolioConnectWidget } from './components/PortfolioConnectWidget';\nimport type { PortfolioConnectConfig, ParsedData, ParseMetadata, PortfolioConnectError } from './types';\n\n/**\n * Configuration for the imperative open() API.\n * Used for non-React environments (Vanilla JS, Angular, Vue, etc.)\n */\nexport interface ImperativeConfig {\n /** Access token for authentication. Get yours at docs.casparser.in */\n accessToken?: string;\n /** @deprecated Use accessToken instead */\n apiKey?: string;\n /** Widget configuration options */\n config?: PortfolioConnectConfig;\n /** Called when widget is opened */\n onOpen?: () => void;\n /** Called for all widget events (useful for analytics) */\n onEvent?: (event: string, metadata: Record<string, any>) => void;\n}\n\n/**\n * Result returned from the open() promise\n */\nexport interface OpenResult {\n /** Parsed portfolio data */\n data: ParsedData;\n /** Parsing metadata (source, duration, etc.) */\n metadata: ParseMetadata;\n}\n\n/**\n * Handle returned from create() for manual control\n */\nexport interface WidgetHandle {\n /** Open the widget modal */\n open: () => void;\n /** Close the widget and cleanup */\n destroy: () => void;\n}\n\n// Track active widget instance for cleanup\nlet activeContainer: HTMLDivElement | null = null;\nlet activeRoot: ReactDOM.Root | null = null;\n\n/**\n * Cleanup any existing widget instance\n */\nfunction cleanup(): void {\n if (activeRoot) {\n activeRoot.unmount();\n activeRoot = null;\n }\n if (activeContainer && activeContainer.parentNode) {\n activeContainer.parentNode.removeChild(activeContainer);\n activeContainer = null;\n }\n}\n\n/**\n * Opens the Portfolio Connect widget and returns a promise that resolves with parsed data.\n * \n * This is the recommended API for non-React applications (Vanilla JS, Angular, Vue, etc.)\n * \n * @example\n * ```javascript\n * // Vanilla JS\n * document.getElementById('btn').onclick = async () => {\n * try {\n * const { data, metadata } = await PortfolioConnect.open({\n * apiKey: 'your_api_key',\n * config: { enableCdslFetch: true }\n * });\n * console.log('Portfolio data:', data);\n * } catch (error) {\n * if (error.message === 'Widget closed by user') {\n * console.log('User cancelled');\n * } else {\n * console.error('Error:', error);\n * }\n * }\n * };\n * ```\n * \n * @param config - Configuration options\n * @returns Promise that resolves with { data, metadata } on success, rejects on error/close\n */\nexport function open(config: ImperativeConfig): Promise<OpenResult> {\n return new Promise((resolve, reject) => {\n // Cleanup any existing instance\n cleanup();\n\n // Create container\n activeContainer = document.createElement('div');\n activeContainer.id = 'portfolio-connect-root';\n activeContainer.setAttribute('data-portfolio-connect', 'true');\n document.body.appendChild(activeContainer);\n\n // Create React root\n activeRoot = ReactDOM.createRoot(activeContainer);\n\n // Notify open\n config.onOpen?.();\n\n // Render widget\n activeRoot.render(\n React.createElement(PortfolioConnectWidget, {\n isOpen: true,\n apiKey: config.accessToken || config.apiKey || '',\n config: config.config,\n onSuccess: (data: ParsedData, metadata: ParseMetadata) => {\n cleanup();\n resolve({ data, metadata });\n },\n onClose: () => {\n cleanup();\n reject(new Error('Widget closed by user'));\n },\n onError: (error: PortfolioConnectError) => {\n cleanup();\n reject(error);\n },\n onEvent: config.onEvent,\n })\n );\n });\n}\n\n/**\n * Creates a widget handle for manual control.\n * Useful when you need to open/close the widget multiple times.\n * \n * @example\n * ```javascript\n * const widget = PortfolioConnect.create({\n * apiKey: 'your_api_key',\n * onSuccess: (data) => console.log(data),\n * });\n * \n * document.getElementById('open-btn').onclick = () => widget.open();\n * document.getElementById('close-btn').onclick = () => widget.destroy();\n * ```\n * \n * @param config - Configuration options including callbacks\n * @returns Handle with open() and destroy() methods\n */\nexport function create(config: ImperativeConfig & {\n onSuccess: (data: ParsedData, metadata: ParseMetadata) => void;\n onError?: (error: PortfolioConnectError) => void;\n onClose?: () => void;\n}): WidgetHandle {\n let container: HTMLDivElement | null = null;\n let root: ReactDOM.Root | null = null;\n let isOpen = false;\n\n function render(open: boolean): void {\n if (!container) {\n container = document.createElement('div');\n container.id = 'portfolio-connect-root';\n container.setAttribute('data-portfolio-connect', 'true');\n document.body.appendChild(container);\n root = ReactDOM.createRoot(container);\n }\n\n isOpen = open;\n\n root!.render(\n React.createElement(PortfolioConnectWidget, {\n isOpen: open,\n apiKey: config.accessToken || config.apiKey || '',\n config: config.config,\n onSuccess: (data: ParsedData, metadata: ParseMetadata) => {\n render(false);\n config.onSuccess(data, metadata);\n },\n onClose: () => {\n render(false);\n config.onClose?.();\n },\n onError: (error: PortfolioConnectError) => {\n render(false);\n config.onError?.(error);\n },\n onEvent: config.onEvent,\n })\n );\n }\n\n return {\n open: () => {\n config.onOpen?.();\n render(true);\n },\n destroy: () => {\n if (root) {\n root.unmount();\n root = null;\n }\n if (container && container.parentNode) {\n container.parentNode.removeChild(container);\n container = null;\n }\n isOpen = false;\n },\n };\n}\n","// Main exports - React components\nexport { PortfolioConnect, CASConnect } from './PortfolioConnect';\nexport { PortfolioConnectWidget } from './components/PortfolioConnectWidget';\nexport { requestAccessToken, isAccessToken } from './utils/api';\n\n// Imperative API for non-React users (Vanilla JS, Angular, Vue, etc.)\nexport { open, create } from './imperative';\nexport type { ImperativeConfig, OpenResult, WidgetHandle } from './imperative';\n\n// Backward compatibility alias\nexport { PortfolioConnectWidget as CASConnectWidget } from './components/PortfolioConnectWidget';\n\n// SDK Version\nexport const VERSION = '1.1.0';\nexport const SDK_NAME = 'Portfolio Connect';\n\n// Type exports (new names)\nexport type {\n PortfolioConnectProps,\n PortfolioConnectConfig,\n PortfolioType,\n PortfolioConnectError,\n PortfolioConnectEvent,\n ParsedData,\n InvestorInfo,\n ParseMetadata,\n EventMetadata,\n RenderProps,\n BrokerInfo,\n} from './types';\n\n// Backward compatibility type aliases\nexport type {\n CASConnectProps,\n CASConnectConfig,\n CASType,\n CASConnectError,\n CASConnectEvent,\n} from './types';\n"],"names":[],"mappings":"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"}
|