{"version":3,"file":"js/application-4e962d9fb8fa79f88bc8.js","mappings":"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","sources":["webpack://solosuit/./app/javascript/components/collectors_dashboard/PrivateRoute.jsx","webpack://solosuit/./app/javascript/components/shared/Popover.jsx","webpack://solosuit/./app/javascript/utils/cookies.js","webpack://solosuit/./app/javascript/components/collectors_dashboard/Sidebar.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/Layout.jsx","webpack://solosuit/./app/javascript/components/shared/Tooltip.jsx","webpack://solosuit/./app/javascript/other/money.js","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/Filters.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/AccountDetails.jsx","webpack://solosuit/./app/javascript/components/shared/CurrencyInput.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/actions/AcceptOrCounteroffer.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/actions/SendPaymentDetails.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/actions/UploadSettlementAgreement.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/AccountRow.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/accounts/AccountsTable.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/Accounts.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/DirectDeposit.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/PaymentDetails.jsx","webpack://solosuit/./app/javascript/components/shared/Alert.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/Users.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/Login.jsx","webpack://solosuit/./app/javascript/components/collectors_dashboard/InviteAccept.jsx","webpack://solosuit/./app/javascript/components/CollectorsDashboardRoot.jsx","webpack://solosuit/./app/javascript/components/ui/Card.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/CallToActionCards.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/CreditReportCard.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/CreditReportCTA.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/CreditReport.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/ProgressChecklist.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/DocumentCard.jsx","webpack://solosuit/./app/javascript/components/shared/ProgressCircle.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/PaymentPlanSummary.jsx","webpack://solosuit/./app/javascript/utils/form.ts","webpack://solosuit/./app/javascript/components/shared/GooglePlacesAutocomplete.jsx","webpack://solosuit/./app/javascript/components/shared/SSNInput.jsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/ProfileEdit.jsx","webpack://solosuit/./app/javascript/components/ui/Badge.tsx","webpack://solosuit/./app/javascript/components/consumer_dashboard/Dashboard.jsx","webpack://solosuit/./app/javascript/components/ConsumerDashboardRoot.jsx","webpack://solosuit/./app/javascript/controllers/application.js","webpack://solosuit/./app/javascript/controllers/inputs/currency_controller.js","webpack://solosuit/./app/javascript/controllers/inputs/textarea_controller.js","webpack://solosuit/./app/javascript/controllers/pilot/anchor_controller.js","webpack://solosuit/./app/javascript/bundles/Pilot/types.ts","webpack://solosuit/./app/javascript/bundles/Pilot/utils/url.ts","webpack://solosuit/./app/javascript/bundles/Pilot/utils/json.ts","webpack://solosuit/./app/javascript/bundles/Pilot/components/markdownRenderers/AnchorRenderer.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/components/Markdown.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/Bubble.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/hooks.ts","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/selectors.ts","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/ListItem.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/utils/toast.ts","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/actions.ts","webpack://solosuit/./app/javascript/bundles/Pilot/components/Loading.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/List.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/components/ChannelStateDot.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/Footer.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/utils/channels.ts","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/slice.ts","webpack://solosuit/./app/javascript/bundles/Pilot/features/completions/Channel.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/reducers.ts","webpack://solosuit/./app/javascript/bundles/Pilot/store.ts","webpack://solosuit/./app/javascript/bundles/Pilot/utils/env.ts","webpack://solosuit/./app/javascript/bundles/Pilot/PilotApp.tsx","webpack://solosuit/./app/javascript/bundles/Pilot/Page.tsx","webpack://solosuit/./app/javascript/controllers/pilot_controller.js","webpack://solosuit/./app/javascript/controllers/index.js","webpack://solosuit/./app/javascript/theme/bootstrap.js","webpack://solosuit/./app/javascript/theme/navbar-dropdown.js","webpack://solosuit/./app/javascript/other/stripe.js.erb","webpack://solosuit/./app/javascript/other/constants.js","webpack://solosuit/./app/javascript/other/domHelpers.js","webpack://solosuit/./app/javascript/other/commento.js","webpack://solosuit/./app/javascript/other/customScrollSpy.js","webpack://solosuit/./app/javascript/other/toc.js","webpack://solosuit/./app/javascript/application.js","webpack://solosuit/./app/javascript/other/direct_uploads.js","webpack://solosuit/./app/javascript/other/document_editor.js","webpack://solosuit/./app/javascript/other/phone_number_input_formatter.js","webpack://solosuit/./app/javascript/other/ssn_input_formatter.js","webpack://solosuit/./app/javascript/other/ssn_toggle.js","webpack://solosuit/./app/javascript/theme/card-stack.js","webpack://solosuit/./app/javascript/theme/password.js","webpack://solosuit/./app/javascript/other/document_download_link_polling.js.erb"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { Navigate, useLocation } from 'react-router-dom';\n\nconst PrivateRoute = ({ children }) => {\n const [isAuthenticated, setIsAuthenticated] = useState(null);\n const location = useLocation();\n\n useEffect(() => {\n const checkAuth = async () => {\n try {\n const response = await fetch('/collectors/api/check_auth');\n if (response.ok) {\n const data = await response.json();\n setIsAuthenticated(true);\n } else {\n setIsAuthenticated(false);\n }\n } catch (error) {\n console.error('Error checking authentication:', error);\n setIsAuthenticated(false);\n }\n };\n\n checkAuth();\n }, []);\n\n if (isAuthenticated === null) {\n // Still checking authentication\n return null;\n }\n\n return isAuthenticated ? (\n children\n ) : (\n \n );\n};\n\nexport default PrivateRoute; ","import React, { useEffect, useState } from 'react';\n\nconst Popover = ({ title, content, isVisible, onClose, placement = 'right' }) => {\n const [animate, setAnimate] = useState(false);\n\n useEffect(() => {\n if (isVisible) {\n const timer = setTimeout(() => {\n setAnimate(true);\n }, 100);\n\n return () => clearTimeout(timer);\n }\n }, [isVisible]);\n\n const getPlacementStyles = () => {\n const baseStyles = {\n position: 'absolute',\n zIndex: 1000,\n };\n\n switch (placement) {\n case 'right':\n return {\n ...baseStyles,\n left: '100%',\n top: '50%',\n transform: 'translateY(-50%)',\n marginLeft: '15px',\n };\n default:\n return baseStyles;\n }\n };\n\n const getCaretStyles = () => {\n const baseStyles = {\n position: 'absolute',\n width: '12px',\n height: '12px',\n backgroundColor: '#f8f9fa', // Light background to match header\n border: '1px solid rgba(0,0,0,0.1)',\n transform: 'rotate(45deg)',\n boxShadow: '-2px -2px 2px rgba(0,0,0,0.03)',\n };\n\n switch (placement) {\n case 'right':\n return {\n ...baseStyles,\n left: '-7px',\n top: 'calc(50% - 6px)',\n borderRight: 'none',\n borderTop: 'none',\n };\n default:\n return baseStyles;\n }\n };\n\n if (!isVisible) return null;\n\n return (\n
\n \n\n {/* Caret */}\n
\n \n {/* Header */}\n
\n
{title}
\n
\n \n {/* Content */}\n
\n

\n {content}\n

\n
\n \n
\n
\n
\n );\n};\n\nexport default Popover; ","export const getCookieValue = (name) => {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop().split(';').shift();\n }\n return '0';\n};\n\nexport const setCookie = (name, value) => {\n // Set cookie to expire in 1 year\n const date = new Date();\n date.setFullYear(date.getFullYear() + 1);\n document.cookie = `${name}=${value};expires=${date.toUTCString()};path=/`;\n}; ","import React, { useEffect, useState } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport Popover from '../shared/Popover';\nimport { getCookieValue, setCookie } from '../../utils/cookies';\n\nconst POPOVER_COOKIE_NAME = 'users_popover_views';\nconst MAX_POPOVER_VIEWS = 2;\n\nconst Sidebar = ({ horizontal = false }) => {\n const [showUsersPopover, setShowUsersPopover] = useState(false);\n const navigate = useNavigate();\n const [error, setError] = React.useState(null);\n const [scope, setScope] = React.useState(null);\n\n useEffect(() => {\n const initializePopover = () => {\n const viewCount = parseInt(getCookieValue(POPOVER_COOKIE_NAME));\n \n if (viewCount < MAX_POPOVER_VIEWS) {\n // Show popover after 1 second delay\n const timer = setTimeout(() => {\n setShowUsersPopover(true);\n }, 1000);\n\n return () => clearTimeout(timer);\n }\n };\n\n fetchAuthInfo().then(() => {\n if (scope === 'admin') {\n initializePopover();\n }\n });\n }, [scope]);\n\n const handlePopoverClose = () => {\n setShowUsersPopover(false);\n \n // Update cookie\n const viewCount = parseInt(getCookieValue(POPOVER_COOKIE_NAME));\n setCookie(POPOVER_COOKIE_NAME, viewCount + 1);\n };\n\n const fetchAuthInfo = async () => {\n const response = await fetch('/collectors/api/check_auth', {\n headers: {\n 'Accept': 'application/json'\n }\n });\n const data = await response.json();\n setScope(data.scope);\n };\n\n const links = React.useMemo(() => {\n const baseLinks = [\n { name: 'Accounts', path: '/collectors/accounts' },\n { name: 'Direct Deposit', path: '/collectors/direct_deposit' },\n { name: 'Payment Details', path: '/collectors/payment_details' },\n ];\n \n if (scope === 'admin') {\n baseLinks.push({ \n name: 'Users',\n path: '/collectors/users',\n popover: {\n title: 'Manage Users',\n content: (\n <>\n Add or remove users and control their access to your organization.{' '}\n \n Go to Users →\n \n \n )\n }\n });\n }\n \n return baseLinks;\n }, [scope]);\n\n const handleLogout = async () => {\n try {\n const response = await fetch('/collectors/api/logout', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n }\n });\n\n if (response.ok) {\n navigate('/collectors');\n } else {\n setError('Logout failed. Please try again.');\n setTimeout(() => setError(null), 5000); // Clear error after 5 seconds\n }\n } catch (error) {\n setError('Network error during logout. Please try again.');\n setTimeout(() => setError(null), 5000); // Clear error after 5 seconds\n }\n };\n\n const isCurrentPage = (path) => {\n return window.location.pathname === path;\n };\n\n const renderError = () => {\n if (!error) return null;\n \n return (\n
\n {error}\n \n
\n );\n };\n\n if (horizontal) {\n return (\n <>\n {renderError()}\n
\n
    \n {links.map((link) => (\n
  • \n \n {link.name}\n \n {link.popover && showUsersPopover && (\n \n )}\n
  • \n ))}\n
  • \n \n
  • \n
\n
\n \n );\n }\n\n return (\n
\n {renderError()}\n
\n
\n {links.map((link) => (\n
\n \n {link.name}\n \n {link.popover && showUsersPopover && (\n \n )}\n
\n ))}\n \n Logout\n \n
\n
\n
\n );\n};\n\nexport default Sidebar;","import React from 'react';\nimport Sidebar from './Sidebar';\n\nconst Layout = ({ children }) => {\n return (\n
\n
\n
\n \n
\n\n
\n
\n \n
\n \n {children}\n
\n
\n
\n );\n};\n\nexport default Layout;","import React, { useState } from 'react';\n\nconst Tooltip = ({ text, width, position = 'top', children }) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const tooltipStyle = {\n position: 'absolute',\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n color: 'white',\n padding: '5px 10px',\n borderRadius: '4px',\n fontSize: '14px',\n textTransform: 'none',\n letterSpacing: '0px',\n fontFamily: '\"DM Sans\", sans-serif',\n fontWeight: '400',\n zIndex: 1000,\n whiteSpace: width ? 'normal' : 'nowrap',\n width: width || undefined,\n ...(position === 'top' ? {\n bottom: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginBottom: '5px',\n } : {\n top: '100%',\n left: '50%',\n transform: 'translateX(-50%)',\n marginTop: '5px',\n })\n };\n\n const containerStyle = {\n position: 'relative',\n display: 'inline-block',\n maxWidth: '250px',\n whiteSpace: 'normal',\n wordWrap: 'break-word',\n };\n\n return (\n
setIsVisible(true)}\n onMouseLeave={() => setIsVisible(false)}\n >\n {isVisible && (\n
\n {text}\n
\n )}\n {children}\n
\n );\n};\n\nexport default Tooltip; ","// input, if int, is cents\n// input, if string, is dollars\n// output is a string that with dollar sign and commas\nexport function formatDollars(input, showCents = true) {\n let rawFloat;\n if (typeof input === 'string') {\n rawFloat = parseFloat(input.replace(/[^\\d.]/g, ''));\n } else {\n rawFloat = showCents ? (input / 100).toFixed(2) : Math.round(input / 100);\n }\n \n // Convert to string and split into whole/decimal parts\n const [whole, decimal] = rawFloat.toString().split('.');\n \n // Add commas to whole number part using regex\n const withCommas = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n \n // Combine with decimal part and add dollar sign\n return `$${withCommas}${showCents ? (decimal ? '.' + decimal : '.00') : ''}`;\n}\n\n// $100.00 -> 10000\n// $100 -> 10000\n// 100 -> 10000\nexport function extractCentsFromDollarString(input) {\n if (typeof input === 'number') {\n return input * 100;\n }\n \n // Remove dollar sign and any commas\n const cleanedInput = input.replace(/[$,]/g, '');\n \n // Convert to float and multiply by 100 to get cents\n const dollars = parseFloat(cleanedInput);\n return Math.round(dollars * 100);\n}","import React from 'react';\n\nconst Chevron = () => (\n \n \n \n);\n\nconst RangeFilter = ({ name, values, currentValue, onChange, onRemove, filterKey, unit }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const dropdownRef = React.useRef(null);\n const [localMin, setLocalMin] = React.useState(currentValue?.min || '');\n const [localMax, setLocalMax] = React.useState(currentValue?.max || '');\n\n React.useEffect(() => {\n const handleClickOutside = (event) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n const handleSave = () => {\n onChange(filterKey, { min: localMin, max: localMax });\n setIsOpen(false);\n };\n\n const handleClear = () => {\n setLocalMin('');\n setLocalMax('');\n onRemove(filterKey);\n setIsOpen(false);\n };\n\n const formatValue = (value) => {\n if (!value) return '∞';\n if (unit.value === 'DATE') {\n const date = new Date(value * 1000);\n const tzOffset = date.getTimezoneOffset() * 60000;\n const adjustedDate = new Date(date.getTime() + tzOffset);\n return adjustedDate.toLocaleDateString();\n }\n return unit.location === 'before' ? `${unit.value}${value}` : `${value}${unit.value}`;\n };\n\n const renderInput = (value, setValue, placeholder) => {\n if (unit.value === 'DATE') {\n return (\n {\n const selectedDate = new Date(e.target.value + 'T00:00:00.000Z');\n const timestamp = Math.floor(selectedDate.getTime() / 1000);\n setValue(timestamp);\n }}\n placeholder={placeholder}\n min={values?.min ? new Date(values.min * 1000).toISOString().slice(0, 10) : undefined}\n max={values?.max ? new Date(values.max * 1000).toISOString().slice(0, 10) : undefined}\n />\n );\n }\n\n return (\n
\n {unit.location === 'before' && {unit.value}}\n setValue(e.target.value)}\n placeholder={placeholder}\n />\n {unit.location === 'after' && {unit.value}}\n
\n );\n };\n\n const displayValue = currentValue \n ? `${formatValue(currentValue.min)} - ${formatValue(currentValue.max)}`\n : name;\n\n return (\n
\n \n \n {isOpen && (\n
\n
\n \n {renderInput(\n localMin,\n setLocalMin,\n values?.min ? \n unit.value === 'DATE' ? \n new Date(values.min).toISOString().split('T')[0] : \n values.min.toLocaleString() \n : 'Min'\n )}\n
\n
\n \n {renderInput(\n localMax,\n setLocalMax,\n values?.max ? \n unit.value === 'DATE' ? \n new Date(values.max).toISOString().split('T')[0] : \n values.max.toLocaleString() \n : 'Max'\n )}\n
\n
\n \n \n
\n
\n )}\n
\n );\n};\n\nconst EnumFilter = ({ name, values, currentValue=[], onChange, onRemove, filterKey }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const dropdownRef = React.useRef(null);\n const [localSelections, setLocalSelections] = React.useState(currentValue);\n\n React.useEffect(() => {\n const handleClickOutside = (event) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n setIsOpen(false);\n setLocalSelections(currentValue);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [currentValue]);\n\n const handleToggle = (val) => {\n setLocalSelections(prev => \n prev.includes(val) \n ? prev.filter(v => v !== val)\n : [...prev, val]\n );\n };\n\n const handleSave = () => {\n onChange(filterKey, localSelections);\n setIsOpen(false);\n };\n\n const handleClear = () => {\n setLocalSelections([]);\n onRemove(filterKey);\n setIsOpen(false);\n };\n\n const displayValue = currentValue.length > 0 ? `${name} (${currentValue.length})` : name;\n\n return (\n
\n \n \n
\n
\n
\n
    \n {values?.map((val) => (\n
  • \n
    handleToggle(val)}\n role=\"button\"\n >\n
    \n \n
    \n {val}\n
    \n
  • \n ))}\n
\n
\n
\n \n \n
\n
\n
\n
\n );\n};\n\nconst TextFilter = ({ name, currentValue='', onChange, onRemove, filterKey }) => {\n const [localValue, setLocalValue] = React.useState(currentValue);\n const debounceTimeout = React.useRef(null);\n\n React.useEffect(() => {\n return () => {\n if (debounceTimeout.current) {\n clearTimeout(debounceTimeout.current);\n }\n };\n }, []);\n\n const handleInputChange = (value) => {\n setLocalValue(value);\n \n if (debounceTimeout.current) {\n clearTimeout(debounceTimeout.current);\n }\n\n debounceTimeout.current = setTimeout(() => {\n if (value === '') {\n onRemove(filterKey);\n } else {\n onChange(filterKey, value);\n }\n }, 250);\n };\n\n const handleClear = () => {\n setLocalValue('');\n onRemove(filterKey);\n };\n\n return (\n
\n handleInputChange(e.target.value)}\n placeholder={name}\n />\n {localValue && (\n \n ×\n \n )}\n
\n );\n};\n\n/**\n * \n * @param {*} filters: example: [{ name: 'State', key: 'state', type: 'enum', values: ['CA', 'NY', 'TX'] }]\n * @param {*} setFilter: setFilter(key, newValue)\n * @returns \n */\nconst Filters = ({ filters=[], filterValues={}, setFilter, removeFilter, clearAll }) => {\n const hasActiveFilters = Object.keys(filterValues).length > 0;\n\n return (\n <>\n
\n {filters.map((filter) => {\n switch (filter.type) {\n case 'enum':\n return (\n \n );\n case 'range':\n return (\n \n );\n case 'text':\n return (\n \n );\n default:\n return null;\n }\n })}\n
\n {hasActiveFilters && (\n
\n \n
\n )}\n \n );\n};\n\nexport default Filters;\n","import React from 'react';\nimport { formatDollars } from '../../../other/money';\n\nexport const ArrowIcon = () => (\n \n \n \n \n \n);\n\n\nconst AccountDetails = ({ account: info }) => {\n const downloadAuthorizationLetter = async (event, documentId) => {\n event.preventDefault();\n const linkElement = event.target;\n const statusElement = document.getElementById(`download-status-${documentId}`);\n const errorElement = document.getElementById(`download-error-${documentId}`);\n \n errorElement.querySelector('span').textContent = '';\n errorElement.classList.add('d-none');\n \n linkElement.classList.add('d-none');\n statusElement.classList.remove('d-none');\n \n try {\n const response = await fetch('/collectors/api/render_document', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({ customer_document_id: documentId })\n });\n \n if (!response.ok) {\n throw new Error('Failed to download file');\n }\n\n // Get the blob from the response\n const blob = await response.blob();\n \n // Create a URL for the blob\n const url = window.URL.createObjectURL(blob);\n \n // Create a sanitized customer name for the filename\n const sanitizedName = info.civil_number\n ? info.civil_number.replace(/[^a-z0-9]/gi, '_').toLowerCase()\n : 'authorization_letter';\n \n // Create and trigger download\n const downloadLink = document.createElement('a');\n downloadLink.href = url;\n downloadLink.download = `authorization_letter__${sanitizedName}.pdf`;\n document.body.appendChild(downloadLink);\n downloadLink.click();\n \n // Cleanup\n document.body.removeChild(downloadLink);\n window.URL.revokeObjectURL(url);\n \n } catch (error) {\n console.error('Error:', error);\n errorElement.querySelector('span').textContent = error.message;\n errorElement.classList.remove('d-none');\n } finally {\n statusElement.classList.add('d-none');\n linkElement.classList.remove('d-none');\n }\n };\n\n const downloadHistoryCSV = (documentId, referenceNumber, events) => {\n const sanitizeForCSV = (str) => {\n if (!str) return '';\n return `\"${str.toString().replace(/\"/g, '\"\"').replace(/[\\n\\r]+/g, ' ')}\"`;\n };\n\n // Updated header row order\n const csvRows = [\n ['Account Information', '', '', '', ''].join(','),\n ['Plaintiff Name', sanitizeForCSV(info.plaintiff_name || 'n/a'), '', '', ''].join(','),\n ['Lawsuit State', sanitizeForCSV(info.lawsuit_state || 'n/a'), '', '', ''].join(','),\n ['Consumer Name', sanitizeForCSV(info.customer_name || 'n/a'), '', '', ''].join(','),\n ['Reference Number', sanitizeForCSV(info.civil_number || 'n/a'), '', '', ''].join(','),\n ['', '', '', '', ''].join(','),\n ['Activity Log', '', '', '', ''].join(','),\n ['Date', 'Time', 'Party', 'Reference', 'Action'].join(',') // Reordered columns\n ];\n \n events.forEach(event => {\n const date = new Date(event.created_at);\n let actionText = info.event_id_to_english_text[event.id];\n \n if (event.disclosures?.length > 0) {\n actionText += ' The collector made the following disclosures: ';\n actionText += event.disclosures.map(disclosure => disclosure.text).join(' ');\n }\n\n // Reordered row data to match new column order\n const row = [\n sanitizeForCSV(date.toLocaleDateString('en-US', { month: 'numeric', day: 'numeric', year: 'numeric' })),\n sanitizeForCSV(date.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' })),\n sanitizeForCSV(event.party === 'customer' ? 'Consumer' : event.party.charAt(0).toUpperCase() + event.party.slice(1)),\n sanitizeForCSV(referenceNumber),\n sanitizeForCSV(actionText)\n ];\n csvRows.push(row.join(','));\n });\n\n // Create and trigger download\n const csvContent = csvRows.join('\\n');\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `activity_log_${documentId}.csv`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n };\n\n return (\n
\n

Account Information

\n

Plaintiff Name: {info.plaintiff_name || 'n/a'}

\n

Lawsuit State: {info.lawsuit_state || 'n/a'}

\n

Consumer Name: {info.customer_name || 'n/a'}

\n

Reference Number: {info.civil_number || 'n/a'}

\n

Social Security Number: {info?.social_security_number?.social_security_number || (info?.social_security_number?.social_security_number_last_four ? `XXX-XX-${info.social_security_number.social_security_number_last_four}` : 'n/a')}

\n

Date of Birth: {info.birthdate}

\n

\n Address:{' '}\n {info.customer_mailing_address ? (\n `${info.customer_mailing_address.customer_street}, ${info.customer_mailing_address.customer_city}, ${info.customer_mailing_address.customer_state} ${info.customer_mailing_address.customer_zip_code}`\n ) : (\n 'n/a'\n )}\n

\n

SoloSettle Email: {info.email || 'n/a'}

\n

{info.lawsuit_exists ? 'Litigation Account' : 'Pre-litigation Account'}

\n \n {info.settlement_negotiation_events?.length > 0 && (\n

\n downloadAuthorizationLetter(e, info.customer_document.id)}\n >\n Download authorization letter\n \n

\n \n Downloading... \n \n
\n
\n \n
\n

\n )}\n \n

Hardship Information

\n {Object.entries(info.hardship || {})\n .filter(([_, value]) => value !== \"0\")\n .map(([key, value]) => (\n

{value}

\n ))}\n \n {info.monthly_income_total && (\n

\n Monthly Income: {formatDollars(info.monthly_income_total)}\n

\n )}\n \n {info.monthly_expenses_total && (\n

\n Monthly Expenses: {formatDollars(info.monthly_expenses_total)}\n

\n )}\n \n

History

\n
\n
\n {\n e.preventDefault();\n downloadHistoryCSV(info.customer_document.id, info.civil_number, info.settlement_negotiation_events || []);\n }}\n >\n \n \n
\n \n \n \n \n \n \n \n \n \n \n {(info.settlement_negotiation_events || []).map((event, index) => {\n const disclosures = event.disclosures?.map(d => d.text) || [];\n return (\n \n \n \n \n \n \n );\n })}\n \n
DATETIMEPARTYACTION
{new Date(event.created_at).toLocaleDateString('en-US', { month: 'numeric', day: 'numeric', year: 'numeric' })}{new Date(event.created_at).toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' })}{event.party === 'customer' ? 'Consumer' : event.party.charAt(0).toUpperCase() + event.party.slice(1)}\n {info.event_id_to_english_text[event.id]}\n \n {disclosures.length > 0 && (\n
The collector made the following disclosures:
\n )}\n {disclosures.map(disclosureText => (\n
{disclosureText}
\n ))}\n
\n
\n
\n );\n };\n\nexport default AccountDetails;\n","import React from 'react';\nimport Tooltip from './Tooltip';\n\nconst CurrencyInput = ({ value, onChange, tooltipText, ...props }) => {\n const [isFocused, setIsFocused] = React.useState(false);\n\n const formatCurrency = (value) => {\n if (!value) return '';\n const numberValue = parseFloat(value);\n if (isNaN(numberValue)) return '';\n\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n }).format(numberValue);\n };\n\n const handleChange = (e) => {\n let inputValue = e.target.value;\n // Remove everything except digits and decimal point\n const rawValue = inputValue.replace(/[^0-9.]/g, '');\n \n onChange({\n target: {\n name: e.target.name,\n value: rawValue\n }\n });\n };\n\n return tooltipText ? (\n \n setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n {...props}\n />\n \n ) : (\n setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n {...props}\n />\n );\n};\n\nexport default CurrencyInput;","import React, { useState, useEffect } from 'react';\nimport CurrencyInput from '../../../shared/CurrencyInput';\nimport Tooltip from '../../../shared/Tooltip';\nimport ActionSelector from './ActionSelector';\n\nconst DEFAULT_ACCEPTANCE_DISCLOSURE = 'This acceptance is a communication from a debt collector';\nconst DEFAULT_COUNTEROFFER_DISCLOSURE = 'This counteroffer is a communication from a debt collector';\n\nconst AcceptOrCounteroffer = ({ account, validFirstPaymentDate, onSuccess }) => {\n const [selectedAction, setSelectedAction] = useState(\n account.latest_historical_offer?.first_payment_date >= validFirstPaymentDate \n ? 'accept' \n : 'counteroffer'\n );\n \n const [activeDropdown, setActiveDropdown] = useState(null);\n const [isDisabled, setIsDisabled] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [formData, setFormData] = useState({\n total_amount: '',\n payments: '',\n first_payment_date: '',\n disclosures: [selectedAction === 'accept' ? \n DEFAULT_ACCEPTANCE_DISCLOSURE :\n DEFAULT_COUNTEROFFER_DISCLOSURE, '']\n });\n\n useEffect(() => {\n const disclosuresCpy = [...formData.disclosures];\n disclosuresCpy[0] = selectedAction === 'accept' ? \n DEFAULT_ACCEPTANCE_DISCLOSURE :\n DEFAULT_COUNTEROFFER_DISCLOSURE;\n setFormData({ ...formData, disclosures: disclosuresCpy });\n }, [selectedAction]);\n\n // Add a unique row identifier\n const rowId = `action-row-${account.customer_document.id}`;\n\n // Modify useEffect to run once on mount\n useEffect(() => {\n // Adjust textareas\n setTimeout(() => {\n document.querySelectorAll('textarea').forEach(adjustTextareaHeight);\n }, 0);\n }, []); // Empty dependency array - runs once on mount\n\n // Add useEffect for click outside handler\n useEffect(() => {\n const handleClickOutside = (event) => {\n const dropdowns = document.querySelectorAll(`#${rowId} .action-dropdown`);\n const buttons = document.querySelectorAll(`#${rowId} .action-button`);\n \n // Don't close if clicking on any button in this row\n if (Array.from(buttons).some(button => button.contains(event.target))) {\n return;\n }\n \n // Close if clicking outside dropdowns\n if (!Array.from(dropdowns).some(dropdown => dropdown.contains(event.target))) {\n setTimeout(() => {\n setActiveDropdown(null);\n }, 0);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [rowId]);\n\n const handleAcceptOffer = async (event) => {\n event.preventDefault();\n setIsLoading(true);\n setIsDisabled(true);\n \n if (!confirm(\"Are you sure you want to accept this offer?\")) {\n setIsLoading(false);\n setIsDisabled(false);\n return;\n }\n\n const response = await fetch('/collectors/api/accept_offer', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({ \n customer_document_id: account.customer_document.id,\n disclosures: formData.disclosures.filter(d => d.trim() !== '')\n })\n });\n const data = await response.json();\n if (data.success) {\n onSuccess?.(data);\n return data;\n } else {\n alert(data.error || 'Error processing request');\n setIsLoading(false);\n setIsDisabled(false);\n }\n };\n\n const handleCounterOffer = async (event) => {\n event.preventDefault();\n setIsLoading(true);\n setIsDisabled(true);\n\n if (!confirm(\"Are you sure you want to submit this counteroffer?\")) {\n setIsLoading(false);\n setIsDisabled(false);\n return;\n }\n\n const response = await fetch('/collectors/api/create_counteroffer', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({\n customer_document_id: account.customer_document.id,\n total_amount: formData.total_amount,\n payments: formData.payments,\n first_payment_date: formData.first_payment_date,\n disclosures: formData.disclosures.filter(d => d.trim() !== '')\n })\n });\n\n const data = await response.json();\n if (data.success) {\n onSuccess?.(data);\n return data;\n } else {\n alert(data.error || 'Error processing request');\n setIsLoading(false);\n setIsDisabled(false);\n }\n };\n \n // Add form change handler\n const handleFormChange = (e) => {\n const { name, value } = e.target;\n setFormData(prev => ({\n ...prev,\n [name]: value\n }));\n };\n\n // Add this new function to handle dropdown visibility\n const ensureDropdownVisible = () => {\n const tableContainer = document.getElementById('table-container');\n const dropdown = document.querySelector(`#${rowId} .action-dropdown`);\n \n if (tableContainer && dropdown) {\n const dropdownRect = dropdown.getBoundingClientRect();\n const containerRect = tableContainer.getBoundingClientRect();\n \n // Calculate if dropdown extends beyond visible area\n const overflowAmount = (dropdownRect.bottom - containerRect.bottom) + 20; // 20px buffer\n \n if (overflowAmount > 0) {\n const scrollOptions = {\n top: tableContainer.scrollTop + overflowAmount,\n behavior: 'smooth'\n };\n tableContainer.scroll(scrollOptions);\n }\n }\n };\n\n // Update handleDisclosureChange to include scrolling\n const handleDisclosureChange = (index, value) => {\n if (index === 0) return;\n \n setFormData(prev => {\n const newDisclosures = [...prev.disclosures];\n newDisclosures[index] = value;\n \n if (index === newDisclosures.length - 1 && value.trim() !== '') {\n newDisclosures.push('');\n }\n \n return {\n ...prev,\n disclosures: newDisclosures\n };\n });\n\n // Add setTimeout to ensure the DOM has updated\n setTimeout(ensureDropdownVisible, 0);\n };\n\n // Update adjustTextareaHeight to include scrolling\n const adjustTextareaHeight = (textarea) => {\n if (!textarea) return;\n const originalHeight = textarea.style.height;\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n \n // Only trigger scroll if height actually changed\n if (originalHeight !== textarea.style.height) {\n setTimeout(ensureDropdownVisible, 0);\n }\n };\n\n // Update click handler for buttons\n const handleButtonClick = (action) => {\n // If clicking the same button that's already active, close it\n if (activeDropdown === action) {\n setActiveDropdown(null);\n } else {\n // If clicking a different button, switch to it immediately\n setActiveDropdown(action);\n \n // Scroll to make dropdown visible\n setTimeout(() => {\n document.querySelectorAll('textarea').forEach(adjustTextareaHeight);\n ensureDropdownVisible();\n }, 0);\n }\n setSelectedAction(action);\n };\n\n const handleDeleteDisclosure = (index) => {\n if (index === 0) return; // Don't allow deletion of the first disclosure\n \n setFormData(prev => ({\n ...prev,\n disclosures: prev.disclosures.filter((_, i) => i !== index)\n }));\n\n // Ensure dropdown remains visible after deletion\n setTimeout(ensureDropdownVisible, 0);\n };\n\n const showAcceptButton = account.latest_historical_offer?.first_payment_date >= validFirstPaymentDate;\n\n return (\n
\n
\n \n {showAcceptButton && (\n \n handleButtonClick('accept')}\n >\n Accept\n \n \n )}\n\n {/* Accept dropdown */}\n {activeDropdown === 'accept' && (\n
\n
\n
\n \n
\n {/* Disclosures section */}\n
\n \n

Disclosures

\n
\n {formData.disclosures.map((disclosure, index) => (\n
\n {\n handleDisclosureChange(index, e.target.value);\n adjustTextareaHeight(e.target);\n }}\n onFocus={(e) => adjustTextareaHeight(e.target)}\n className=\"form-control form-control-sm\"\n placeholder={`Disclosure ${index + 1}`}\n rows={1}\n style={{ overflow: 'hidden', resize: 'none' }}\n readOnly={index === 0}\n />\n handleDeleteDisclosure(index)}\n style={{ \n minWidth: '24px',\n visibility: formData.disclosures.length > 1 && disclosure.trim() !== '' && index !== 0\n ? 'visible' \n : 'hidden'\n }}\n >\n ×\n \n
\n ))}\n
\n
\n
\n )}\n
\n\n {showAcceptButton && (\n  \n )}\n\n \n \n handleButtonClick('counteroffer')}\n >\n Counteroffer\n \n \n\n {/* Counteroffer dropdown */}\n {activeDropdown === 'counteroffer' && (\n
\n
\n
\n
\n \n \n \n \n \n \n \n
\n \n \n \n
\n {/* Disclosures section */}\n
\n \n

Disclosures

\n
\n {formData.disclosures.map((disclosure, index) => (\n
\n {\n handleDisclosureChange(index, e.target.value);\n adjustTextareaHeight(e.target);\n }}\n onFocus={(e) => adjustTextareaHeight(e.target)}\n className=\"form-control form-control-sm\"\n placeholder={`Disclosure ${index + 1}`}\n rows={1}\n style={{ overflow: 'hidden', resize: 'none' }}\n readOnly={index === 0}\n />\n handleDeleteDisclosure(index)}\n style={{ \n minWidth: '24px',\n visibility: formData.disclosures.length > 1 && disclosure.trim() !== '' && index !== 0\n ? 'visible' \n : 'hidden'\n }}\n >\n ×\n \n
\n ))}\n
\n
\n
\n )}\n
\n
\n
\n );\n};\n\nexport default AcceptOrCounteroffer;","import React, { useState, useEffect } from 'react';\nimport Tooltip from '../../../shared/Tooltip';\n\nconst SendPaymentDetails = ({ account, onSuccess }) => {\n const [formData, setFormData] = useState({\n file_number: '',\n payee: '',\n recipient: '',\n mailing_address: ''\n });\n const [formState, setFormState] = useState({\n isSubmitting: false,\n isSubmitted: false,\n error: null\n });\n const [activeDropdown, setActiveDropdown] = useState(false);\n \n // Add a unique row identifier\n const rowId = `payment-details-row-${account.customer_document.id}`;\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n const dropdown = document.querySelector(`#${rowId} .action-dropdown`);\n const button = document.querySelector(`#${rowId} .action-button`);\n \n // Don't close if clicking on the button\n if (button?.contains(event.target)) {\n return;\n }\n \n // Close if clicking outside dropdown\n if (!dropdown?.contains(event.target)) {\n setActiveDropdown(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [rowId]);\n\n // Add this new function to handle dropdown visibility\n const ensureDropdownVisible = () => {\n const tableContainer = document.getElementById('table-container');\n const dropdown = document.querySelector(`#${rowId} .action-dropdown`);\n \n if (tableContainer && dropdown) {\n const dropdownRect = dropdown.getBoundingClientRect();\n const containerRect = tableContainer.getBoundingClientRect();\n \n // Calculate if dropdown extends beyond visible area\n const overflowAmount = (dropdownRect.bottom - containerRect.bottom) + 20; // 20px buffer\n \n if (overflowAmount > 0) {\n const scrollOptions = {\n top: tableContainer.scrollTop + overflowAmount,\n behavior: 'smooth'\n };\n tableContainer.scroll(scrollOptions);\n }\n }\n };\n\n const handleButtonClick = () => {\n setActiveDropdown(!activeDropdown);\n \n // Scroll when opening dropdown\n if (!activeDropdown) {\n const tableContainer = document.getElementById('table-container');\n if (tableContainer) {\n const scrollOptions = {\n left: tableContainer.scrollWidth,\n behavior: 'smooth'\n };\n setTimeout(() => {\n tableContainer.scroll(scrollOptions);\n ensureDropdownVisible();\n }, 0);\n }\n }\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setFormState({ ...formState, isSubmitting: true, error: null });\n\n if (!confirm(\"Are you sure you want to submit?\")) {\n setFormState({ ...formState, isSubmitting: false, isSubmitted: false });\n return;\n }\n \n try {\n const response = await fetch('/collectors/api/update_payment_details', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({\n customer_document_id: account.customer_document.id,\n ...formData\n })\n });\n\n if (response.ok) {\n setFormState({ isSubmitting: false, isSubmitted: true, error: null });\n onSuccess();\n } else {\n const data = await response.json();\n alert(data.error);\n setFormState({ isSubmitting: false, isSubmitted: false });\n }\n } catch (e) {\n alert(e.message);\n setFormState({ isSubmitting: false, isSubmitted: false });\n }\n };\n\n const handleChange = (e) => {\n setFormData(prev => ({\n ...prev,\n [e.target.name]: e.target.value\n }));\n };\n\n return (\n
\n
\n \n \n \n Enter Payment Details\n \n \n\n {activeDropdown && (\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n )}\n
\n
\n
\n );\n};\n\nexport default SendPaymentDetails;","import React, { useState, useEffect } from 'react';\nimport Tooltip from '../../../shared/Tooltip';\n\nconst UploadSettlementAgreement = ({ account, onSuccess }) => {\n const [file, setFile] = useState(null);\n const [isUploaded, setIsUploaded] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [activeDropdown, setActiveDropdown] = useState(false);\n const [disclosures, setDisclosures] = useState(['This document is a communication from a debt collector.', '']);\n \n // Add unique row identifier\n const rowId = `upload-settlement-row-${account.customer_document.id}`;\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n const dropdown = document.querySelector(`#${rowId} .action-dropdown`);\n const button = document.querySelector(`#${rowId} .action-button`);\n \n if (button?.contains(event.target)) {\n return;\n }\n \n if (!dropdown?.contains(event.target)) {\n setActiveDropdown(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [rowId]);\n\n // Add this new function to handle dropdown visibility\n const ensureDropdownVisible = () => {\n const tableContainer = document.getElementById('table-container');\n const dropdown = document.querySelector(`#${rowId} .action-dropdown`);\n \n if (tableContainer && dropdown) {\n const dropdownRect = dropdown.getBoundingClientRect();\n const containerRect = tableContainer.getBoundingClientRect();\n \n // Calculate if dropdown extends beyond visible area\n const overflowAmount = (dropdownRect.bottom - containerRect.bottom) + 20; // 20px buffer\n \n if (overflowAmount > 0) {\n const scrollOptions = {\n top: tableContainer.scrollTop + overflowAmount,\n behavior: 'smooth'\n };\n tableContainer.scroll(scrollOptions);\n }\n }\n };\n\n const handleButtonClick = () => {\n setActiveDropdown(!activeDropdown);\n \n if (!activeDropdown) {\n const tableContainer = document.getElementById('table-container');\n if (tableContainer) {\n const scrollOptions = {\n left: tableContainer.scrollWidth,\n behavior: 'smooth'\n };\n setTimeout(() => {\n tableContainer.scroll(scrollOptions);\n ensureDropdownVisible();\n }, 0);\n }\n }\n };\n\n const handleFileChange = (e) => {\n setFile(e.target.files[0]);\n };\n\n // Update adjustTextareaHeight to include scrolling\n const adjustTextareaHeight = (textarea) => {\n if (!textarea) return;\n const originalHeight = textarea.style.height;\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n \n // Only trigger scroll if height actually changed\n if (originalHeight !== textarea.style.height) {\n setTimeout(ensureDropdownVisible, 0);\n }\n };\n\n // Update handleDisclosureChange to include scrolling\n const handleDisclosureChange = (index, value) => {\n const newDisclosures = [...disclosures];\n newDisclosures[index] = value;\n \n // Add new empty disclosure if typing in last field\n if (index === newDisclosures.length - 1 && value.trim() !== '') {\n newDisclosures.push('');\n }\n \n setDisclosures(newDisclosures);\n \n // Add setTimeout to ensure the DOM has updated\n setTimeout(ensureDropdownVisible, 0);\n };\n\n // Update handleDeleteDisclosure to include scrolling\n const handleDeleteDisclosure = (index) => {\n const disclosure = disclosures[index];\n if (!disclosure || disclosure.trim() === '') {\n return;\n }\n setDisclosures(disclosures.filter((_, i) => i !== index));\n \n // Ensure dropdown remains visible after deletion\n setTimeout(ensureDropdownVisible, 0);\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n if (!confirm(\"Are you sure you want to submit?\")) {\n return;\n }\n \n setIsSubmitting(true);\n\n const formData = new FormData();\n formData.append('file', file);\n formData.append('customer_document_id', account.customer_document.id);\n \n // Fix: Append each disclosure separately\n const filteredDisclosures = disclosures.filter(d => d.trim() !== '');\n filteredDisclosures.forEach(disclosure => {\n formData.append('disclosures[]', disclosure);\n });\n\n try {\n const response = await fetch('/collectors/api/upload_settlement_agreement', {\n method: 'POST',\n headers: {\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content,\n },\n body: formData,\n });\n\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n \n setIsUploaded(true);\n onSuccess();\n } catch (error) {\n console.error('Error uploading settlement agreement:', error);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n if (isUploaded) {\n return (\n
\n \n
\n );\n }\n\n return (\n
\n
\n \n \n \n Upload Settlement Agreement\n \n \n\n {activeDropdown && (\n
\n
\n
\n
\n \n \n \n
\n \n \n {isSubmitting ? (\n <>\n \n Submitting...\n \n ) : 'Submit'}\n \n \n
\n\n {/* Updated Disclosures section */}\n
\n {disclosures.map((disclosure, index) => (\n
\n {\n handleDisclosureChange(index, e.target.value);\n adjustTextareaHeight(e.target);\n }}\n onFocus={(e) => adjustTextareaHeight(e.target)}\n className=\"form-control form-control-sm\"\n placeholder={`Disclosure ${index + 1}`}\n rows={1}\n style={{ overflow: 'hidden', resize: 'none' }}\n />\n handleDeleteDisclosure(index)}\n style={{ \n minWidth: '24px',\n visibility: disclosures.length > 1 && disclosure.trim() !== '' \n ? 'visible' \n : 'hidden'\n }}\n >\n ×\n \n
\n ))}\n
\n
\n
\n )}\n
\n
\n
\n );\n};\n\nexport default UploadSettlementAgreement;","import React, { useState, useEffect } from 'react';\nimport { formatDollars, extractCentsFromDollarString } from '../../../other/money';\nimport AccountDetails from './AccountDetails';\n\nimport AcceptOrCounteroffer from './actions/AcceptOrCounteroffer';\nimport SendPaymentDetails from './actions/SendPaymentDetails';\nimport UploadSettlementAgreement from './actions/UploadSettlementAgreement';\n\nconst AccountRow = ({ validFirstPaymentDate, account, columnsToShow }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [currentAction, setCurrentAction] = useState(null);\n const [isArchived, setIsArchived] = useState(false);\n\n useEffect(() => {\n setCurrentAction(account.current_action);\n setIsLoading(false);\n }, [account.current_action]);\n\n useEffect(() => {\n setIsExpanded(false);\n }, [account.current_action]);\n\n function handleRefreshCurrentAction() {\n setIsLoading(true);\n fetch(`/collectors/api/get_current_action?customer_document_id=${account.customer_document.id}`)\n .then(response => response.json())\n .then(data => {\n setCurrentAction(data);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n\n const handleArchive = () => {\n if (window.confirm('Are you sure you want to archive this account?')) {\n setIsLoading(true);\n fetch(`/collectors/api/archive_document`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content')\n },\n body: JSON.stringify({\n customer_document_id: account.customer_document.id\n })\n })\n .then(response => {\n if (!response.ok) throw new Error('Archive failed');\n setIsArchived(true);\n return response.json();\n })\n .catch(error => {\n alert('Failed to archive document');\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n };\n\n return (\n <>\n setIsExpanded(!isExpanded)}\n >\n {columnsToShow.includes('Name') && (\n \n \n \n )}\n {columnsToShow.includes('Birthdate') && (\n \n {account.birthdate && new Date(account.birthdate).toLocaleDateString()}\n \n )}\n {columnsToShow.includes('Reference') && (\n \n {account.civil_number || 'n/a'}\n \n )}\n {columnsToShow.includes('Lawsuit State') && (\n \n {account.lawsuit_state || 'n/a'}\n \n )}\n {columnsToShow.includes('Plaintiff') && (\n \n {account.plaintiff_name || 'n/a'}\n \n )}\n {columnsToShow.includes('Amount') && (\n \n {account.lawsuit_amount && formatDollars(account.lawsuit_amount)}\n \n )}\n {columnsToShow.includes('Status') && (\n \n {account.last_action || '-'}\n \n )}\n {columnsToShow.includes('Status Date') && (\n \n {account.latest_event?.created_at && new Date(account.latest_event.created_at).toLocaleDateString()}\n \n )}\n {columnsToShow.includes('Offer Amount') && (\n \n {account.latest_historical_offer?.total_amount_cents && \n formatDollars(account.latest_historical_offer.total_amount_cents)}\n \n )}\n {columnsToShow.includes('# Pays') && (\n \n {account.latest_historical_offer?.payments || '-'}\n \n )}\n {columnsToShow.includes('%') && (\n \n {account.latest_historical_offer?.total_amount_cents && account.lawsuit_amount && (\n `${Math.round((account.latest_historical_offer.total_amount_cents / extractCentsFromDollarString(account.lawsuit_amount)) * 100)}%`\n )}\n \n )}\n {columnsToShow.includes('First Payment') && (\n \n
\n {account.latest_historical_offer?.first_payment_date < validFirstPaymentDate && [\"offer\", \"counteroffer\", \"sent_confusing_response_to_offer\"].includes(account.latest_event?.action) && (\n
\n
!
\n
\n First payment date must be on or after {account.latest_historical_offer?.first_payment_date}. You'll need to counteroffer with a new payment date.\n
\n
\n )}\n \n {account.latest_historical_offer?.first_payment_date && \n new Date(account.latest_historical_offer.first_payment_date + 'T00:00:00').toLocaleDateString('en-US', {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric'\n })\n }\n \n
\n \n )}\n \n
\n \n
    \n
  • \n \n
  • \n
\n
\n \n {isLoading &&
}\n {!isLoading && \n {currentAction.type == \"accept_or_counteroffer\" &&
e.stopPropagation()}>
}\n {currentAction.type == \"waiting_for_customer\" &&
Waiting on customer response to counteroffer.
}\n \n {currentAction.type == \"request_payment_details\" &&
e.stopPropagation()}>
}\n {currentAction.type == \"request_settlement_agreement\" &&
e.stopPropagation()}>
}\n\n {currentAction.type == \"waiting_for_signed_settlement_agreement\" &&
Waiting for signed settlement agreement.
}\n {currentAction.type == \"waiting_for_payment\" &&
Waiting for first payment.
}\n \n {/* Payment status */}\n {currentAction.type == \"payment_setup_complete\" &&
Consumer set up auto-pay but hasn't made a payment yet.
}\n {currentAction.type == \"first_payment_made\" &&
Consumer made their first payment on {new Date(currentAction.params.latest_payment_intent.created_at).toLocaleDateString()}.
}\n }\n \n {isExpanded && (\n \n \n \n \n \n )}\n \n );\n};\n\nexport default AccountRow;","import React, { useState, useEffect } from 'react';\nimport AccountRow from './AccountRow';\nimport Tooltip from '../../shared/Tooltip';\nimport { extractCentsFromDollarString } from '../../../other/money';\n\nconst SortIcon = ({ column, currentSort }) => {\n const isActive = currentSort.column === column;\n const direction = currentSort.direction;\n\n return (\n \n \n \n \n );\n};\n\nconst AccountsTable = ({ \n accounts, \n setAccounts,\n selectedFilterValues, \n onLoadMore, \n hasMorePages, \n hasPaymentDetails, \n validFirstPaymentDate \n}) => {\n const [activeDropdownId, setActiveDropdownId] = useState(null);\n const [sortConfig, setSortConfig] = React.useState({\n column: null,\n direction: 'asc'\n });\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n const dropdowns = document.querySelectorAll('.action-dropdown');\n const buttons = document.querySelectorAll('.action-button');\n \n if (\n !Array.from(dropdowns).some(dropdown => dropdown.contains(event.target)) &&\n !Array.from(buttons).some(button => button.contains(event.target))\n ) {\n setActiveDropdownId(null);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleSort = (column) => {\n const direction = sortConfig.column === column && sortConfig.direction === 'asc' ? 'desc' : 'asc';\n setSortConfig({ column, direction });\n\n const actionOrder = [\n \"Consumer Offer\",\n \"Lawyer Sent Confusing Response to Offer\",\n \"Consumer Counteroffer\",\n \"Lawyer Counteroffer\",\n \"Lawyer Accept\",\n \"Consumer Accept\",\n \"Lawyer Sent Confusing Response To Payment Details Request\",\n \"Lawyer Sent Payment Details\",\n \"Lawyer Sent Settlement Agreement\",\n \"Consumer Signed Settlement Agreement\"\n ];\n\n const sortedAccounts = [...accounts].sort((a, b) => {\n const compareValue = (val1, val2) => {\n if (val1 < val2) return -1;\n if (val1 > val2) return 1;\n return 0;\n };\n\n let comparison = 0;\n switch (column) {\n case 'name':\n comparison = compareValue(a.customer_name?.toLowerCase(), b.customer_name?.toLowerCase());\n break;\n case 'birthdate':\n comparison = compareValue(new Date(a.birthdate), new Date(b.birthdate));\n break;\n case 'reference':\n comparison = compareValue(a.civil_number?.toLowerCase(), b.civil_number?.toLowerCase());\n break;\n case 'lawsuitState':\n comparison = compareValue(a.lawsuit_state?.toLowerCase(), b.lawsuit_state?.toLowerCase());\n break;\n case 'plaintiff':\n comparison = compareValue(a.plaintiff_name?.toLowerCase(), b.plaintiff_name?.toLowerCase());\n break;\n case 'amount':\n comparison = compareValue(parseFloat(a.lawsuit_amount?.replace(/[$,]/g, '')) || 0, parseFloat(b.lawsuit_amount?.replace(/[$,]/g, '')) || 0);\n break;\n case 'status':\n const indexA = actionOrder.indexOf(a.last_action);\n const indexB = actionOrder.indexOf(b.last_action);\n comparison = compareValue(indexA, indexB);\n break;\n case 'statusDate':\n comparison = compareValue(new Date(a.latest_event.created_at), new Date(b.latest_event.created_at));\n break;\n case 'offerAmount':\n comparison = compareValue(parseFloat(a.latest_historical_offer?.total_amount_cents) || 0, parseFloat(b.latest_historical_offer?.total_amount_cents) || 0);\n break;\n case 'numberOfPayments':\n comparison = compareValue(parseInt(a.latest_historical_offer?.payments) || 0, parseInt(b.latest_historical_offer?.payments) || 0);\n break;\n case 'percentage':\n comparison = compareValue(\n (a.latest_historical_offer?.total_amount_cents && a.lawsuit_amount ? \n Math.round((a.latest_historical_offer.total_amount_cents / extractCentsFromDollarString(a.lawsuit_amount)) * 100) : 0),\n (b.latest_historical_offer?.total_amount_cents && b.lawsuit_amount ?\n Math.round((b.latest_historical_offer.total_amount_cents / extractCentsFromDollarString(b.lawsuit_amount)) * 100) : 0)\n );\n break;\n case 'firstPayment':\n comparison = compareValue(new Date(a.latest_historical_offer?.first_payment_date), new Date(b.latest_historical_offer?.first_payment_date));\n break;\n default:\n comparison = 0;\n }\n\n return direction === 'asc' ? comparison : -comparison;\n });\n\n setAccounts(sortedAccounts);\n };\n\n const columnsToShow = selectedFilterValues.columns || [];\n \n return (\n <>\n
\n \n \n \n {columnsToShow.includes('Name') && (\n \n )}\n {columnsToShow.includes('Birthdate') && (\n \n )}\n {columnsToShow.includes('Reference') && (\n \n )}\n {columnsToShow.includes('Lawsuit State') && (\n \n )}\n {columnsToShow.includes('Plaintiff') && (\n \n )}\n {columnsToShow.includes('Amount') && (\n \n )}\n {columnsToShow.includes('Status') && (\n \n )}\n {columnsToShow.includes('Status Date') && (\n \n )}\n {columnsToShow.includes('Offer Amount') && (\n \n )}\n {columnsToShow.includes('# Pays') && (\n \n )}\n {columnsToShow.includes('%') && (\n \n )}\n {columnsToShow.includes('First Payment') && (\n \n )}\n \n \n \n \n \n {accounts.map(account => (\n \n ))}\n \n
handleSort('name')} style={{ cursor: 'pointer' }}>\n
\n Name \n
\n
handleSort('birthdate')} style={{ cursor: 'pointer' }}>\n
\n Birthdate \n
\n
handleSort('reference')} style={{ cursor: 'pointer' }}>\n \n
\n Reference \n
\n
\n
handleSort('lawsuitState')} style={{ cursor: 'pointer' }}>\n
\n Lawsuit State \n
\n
handleSort('plaintiff')} style={{ cursor: 'pointer' }}>\n
\n Plaintiff \n
\n
handleSort('amount')} style={{ cursor: 'pointer' }}>\n \n
\n Amount \n
\n
\n
handleSort('status')} style={{ cursor: 'pointer' }}>\n \n
\n Status \n
\n
\n
handleSort('statusDate')} style={{ cursor: 'pointer' }}>\n \n
\n Status Date \n
\n
\n
handleSort('offerAmount')} style={{ cursor: 'pointer' }}>\n \n
\n Offer Amount \n
\n
\n
handleSort('numberOfPayments')} style={{ cursor: 'pointer' }}>\n \n
\n # Pays \n
\n
\n
handleSort('percentage')} style={{ cursor: 'pointer' }}>\n \n
\n % \n
\n
\n
handleSort('firstPayment')} style={{ cursor: 'pointer' }}>\n \n
\n First Payment \n
\n
\n
handleSort('status')} style={{ cursor: 'pointer' }}>\n \n
\n Action \n
\n
\n
\n\n {hasMorePages && (\n
\n \n
\n )}\n
\n \n );\n};\n\nexport default AccountsTable;\n","import React, { useEffect, useState } from 'react';\nimport Layout from './Layout';\nimport Tooltip from '../shared/Tooltip';\n\nimport { formatDollars } from '../../other/money';\n\nimport Filters from './accounts/Filters';\nimport AccountsTable from './accounts/AccountsTable';\n\nconst FILTERS_NOT_IN_URL_BAR = ['columns'];\nconst DEFAULT_SHOWN_COLUMNS = ['Name', 'Reference', 'Amount', 'Status', 'Status Date', 'Offer Amount', '# Pays', '%', 'First Payment']\n\nconst Accounts = () => {\n const [basicStats, setBasicStats] = useState(null);\n const [accountsData, setAccountsData] = useState(null);\n const [scope, setScope] = useState(null);\n const [numPages, setNumPages] = useState(() => {\n const urlParams = new URLSearchParams(window.location.search);\n return parseInt(urlParams.get('num_pages')) || 1;\n });\n const [collectorMetrics, setCollectorMetrics] = useState(null);\n\n const [selectedFilterValues, setSelectedFilterValues] = useState(() => {\n const urlParams = new URLSearchParams(window.location.search);\n const initialValues = {\n columns: DEFAULT_SHOWN_COLUMNS // Set default columns\n };\n \n // First check for search parameter specifically\n const searchValue = urlParams.get('filters[search]');\n if (searchValue) {\n initialValues.search = searchValue;\n }\n \n // Extract all other filter parameters from URL\n for (const [key, value] of urlParams.entries()) {\n // Only process parameters that start with \"filters[\"\n if (key.startsWith('filters[') && key.endsWith(']')) {\n // Extract the filter name from the key\n const matches = key.match(/filters\\[([^\\]]+)\\]\\[([^\\]]+)\\]/);\n if (!matches) continue;\n \n const [, filterName, arrayIndexOrKey] = matches;\n \n // Skip if this is the search parameter (already handled)\n if (filterName === 'search') continue;\n \n // Initialize the filter if it doesn't exist\n if (!initialValues[filterName]) {\n initialValues[filterName] = Number.isInteger(parseInt(arrayIndexOrKey)) ? [] : {};\n }\n \n // Handle array-type filters (numeric indices)\n if (Number.isInteger(parseInt(arrayIndexOrKey))) {\n if (Array.isArray(initialValues[filterName])) {\n initialValues[filterName].push(value);\n }\n } \n // Handle object-type filters (named keys like 'min'/'max')\n else {\n if (!Array.isArray(initialValues[filterName])) {\n initialValues[filterName][arrayIndexOrKey] = value;\n }\n }\n }\n }\n \n return initialValues;\n });\n\n useEffect(() => {\n const fetchCollectorMetrics = async () => {\n const collectorMetricsResponse = await fetch(`/collectors/api/calculate_collector_metrics`, {\n headers: {\n 'Accept': 'application/json',\n },\n });\n const collectorMetricsJson = await collectorMetricsResponse.json();\n setCollectorMetrics(collectorMetricsJson);\n };\n fetchCollectorMetrics();\n }, []);\n \n\n const [filters, setFilters] = useState([]);\n\n useEffect(() => {\n const urlParams = new URLSearchParams();\n urlParams.set('num_pages', numPages);\n \n Object.entries(selectedFilterValues)\n .filter(([key]) => key !== 'columns') // Exclude columns from URL parameters\n .forEach(([key, value]) => {\n if (typeof value === 'object') {\n // Handle range filters\n Object.entries(value).forEach(([rangeKey, rangeValue]) => {\n urlParams.set(`filters[${key}][${rangeKey}]`, rangeValue);\n });\n } else {\n // Handle regular filters\n urlParams.set(`filters[${key}]`, value);\n }\n });\n \n const newUrl = `${window.location.pathname}${urlParams.toString() ? '?' + urlParams.toString() : ''}`;\n window.history.pushState({}, '', newUrl);\n }, [selectedFilterValues, numPages]);\n\n const fetchAccountData = async () => {\n const urlParams = new URLSearchParams();\n urlParams.set('num_pages', numPages);\n \n const filtersString = Object.entries(selectedFilterValues)\n .filter(([key]) => !FILTERS_NOT_IN_URL_BAR.includes(key))\n .map(([key, value]) => {\n if (typeof value === 'object') {\n // Handle range filters\n return Object.entries(value)\n .map(([rangeKey, rangeValue]) => `filters[${key}][${rangeKey}]=${rangeValue}`)\n .join('&');\n }\n // Handle regular filters\n return `filters[${key}]=${value}`;\n }).join('&');\n \n const accountsDataResponse = await fetch(`/collectors/api/apply_filters?${urlParams.toString()}&${filtersString}`, {\n headers: {\n 'Accept': 'application/json'\n }\n });\n const accountsDataJson = await accountsDataResponse.json();\n setAccountsData(accountsDataJson);\n };\n\n const fetchFilterValues = async () => {\n const filterValuesResponse = await fetch(`/collectors/api/filter_values`, {\n headers: {\n 'Accept': 'application/json'\n }\n });\n const filterValuesJson = await filterValuesResponse.json();\n setFilters(filterValuesJson.filters);\n };\n\n const fetchBasicStats = async () => {\n const basicStatsResponse = await fetch(`/collectors/api/basic_stats`, {\n headers: {\n 'Accept': 'application/json'\n }\n });\n const basicStatsJson = await basicStatsResponse.json();\n setBasicStats(basicStatsJson);\n };\n\n useEffect(() => {\n setAccountsData(null);\n fetchAccountData();\n }, [numPages, selectedFilterValues]);\n\n useEffect(() => {\n fetchBasicStats();\n fetchFilterValues();\n }, []);\n\n const handleFilterChange = (key, value, rangeKey = null) => {\n const clonedFilterValues = JSON.parse(JSON.stringify(selectedFilterValues));\n if (rangeKey) {\n // Handle range filters\n clonedFilterValues[key] = clonedFilterValues[key] || {};\n clonedFilterValues[key][rangeKey] = value;\n } else {\n // Handle regular filters\n clonedFilterValues[key] = value;\n }\n setSelectedFilterValues(clonedFilterValues);\n };\n\n const handleFilterRemove = (key) => {\n const clonedFilterValues = { ...selectedFilterValues };\n delete clonedFilterValues[key];\n setSelectedFilterValues(clonedFilterValues);\n };\n\n const handleClearAll = () => {\n window.location.href = '/collectors/accounts';\n };\n\n return (\n \n
\n {basicStats && (\n <>\n

Hello, {basicStats.law_firm.name}

\n\n

\n Consumers are notified that each communication is from a debt collector.\n

\n\n
\n \n {collectorMetrics === null ? (\n
\n \n
\n ) : (\n
\n
\n
\n
\n \n
Collected
\n

{formatDollars(collectorMetrics.collected_amount || 0, false)}

\n
\n
\n
\n
\n
\n
\n
\n \n
Uncollected
\n

{formatDollars(collectorMetrics.uncollected_amount || 0, false)}

\n
\n
\n
\n
\n
\n
\n
\n \n
Waiting on consumer
\n

{formatDollars(collectorMetrics.waiting_on_consumer_amount || 0, false)}

\n
\n
\n
\n
\n
\n
\n
\n \n
Waiting on you
\n

{formatDollars(collectorMetrics.waiting_on_collector_amount || 0, false)}

\n
\n
\n
\n
\n
\n
\n
\n \n
Your response rate
\n

= 90 ? 'text-success' : 'text-warning'}`}>\n {collectorMetrics.response_rate || 0}%\n

\n
\n
\n
\n
\n
\n
\n
\n \n
New offers
\n

+{collectorMetrics.offers_count || 0}

\n
\n
\n
\n
\n
\n )}\n\n

Accounts

\n\n {filters.length === 0 ? (\n
\n \n
\n ) : (\n \n )}\n \n )}\n\n {basicStats && !accountsData && (\n
\n {/* Table header placeholder */}\n
\n \n \n \n \n \n
\n {/* Table rows placeholders */}\n {[...Array(6)].map((_, i) => (\n
\n \n \n \n \n \n
\n ))}\n
\n )}\n {accountsData && (\n <>\n {\n const clonedAccounts = JSON.parse(JSON.stringify(accountsData));\n clonedAccounts.customer_info = accounts;\n setAccountsData(clonedAccounts);\n }}\n hasPaymentDetails={accountsData.has_payment_details}\n validFirstPaymentDate={accountsData.valid_first_payment_date}\n />\n\n {accountsData.more_pages && (\n
\n \n
\n )}\n\n
\n Showing {accountsData.customer_info.length} out of {accountsData.total_count} matching accounts\n
\n \n )}\n
\n
\n );\n};\n\nexport default Accounts;","import React, { useState } from 'react';\nimport Layout from './Layout';\n\nconst DirectDeposit = () => {\n const [email, setEmail] = useState('');\n const [status, setStatus] = useState({ message: '', isError: false });\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setStatus({ message: '', isError: false });\n\n try {\n const response = await fetch('/collectors/api/digital_check_email', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({ email })\n });\n\n if (response.ok) {\n setStatus({ message: 'Email saved successfully!', isError: false });\n setEmail('');\n } else {\n const data = await response.json();\n setStatus({ message: data.message, isError: true });\n }\n } catch (error) {\n setStatus({ message: error.message, isError: true });\n }\n };\n\n return (\n \n
Direct Deposit
\n

Enter an email address to receive direct deposit instructions.

\n

\n We'll email a digital check with the option to deposit it directly to your bank account.
\n Most people use an email address for their accounting department.\n

\n \n
\n {status.message && (\n
\n {status.message}\n
\n )}\n
\n setEmail(e.target.value)}\n required\n />\n
\n\n \n
\n
\n );\n};\n\nexport default DirectDeposit;","import React, { useState, useEffect } from 'react';\nimport Layout from './Layout';\n\nconst PaymentDetails = () => {\n const [formData, setFormData] = useState({\n payee: '',\n mailing_name: '',\n mailing_street: '',\n mailing_city: '',\n mailing_state: '',\n mailing_zip: ''\n });\n\n useEffect(() => {\n fetchLawFirmData();\n }, []);\n\n const fetchLawFirmData = async () => {\n try {\n const response = await fetch('/collectors/api/get_law_firm');\n const data = await response.json();\n if (data.law_firm) {\n setFormData({\n payee: data.law_firm.payee || '',\n mailing_name: data.law_firm.mailing_name || null,\n mailing_street: data.law_firm.mailing_street || '',\n mailing_city: data.law_firm.mailing_city || '',\n mailing_state: data.law_firm.mailing_state || '',\n mailing_zip: data.law_firm.mailing_zip || ''\n });\n }\n } catch (error) {\n alert('Error loading law firm data');\n }\n };\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setFormData(prev => ({\n ...prev,\n [name]: value\n }));\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n try {\n const response = await fetch('/collectors/api/update_firm_payment_details', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({ law_firm: formData })\n });\n\n const data = await response.json();\n if (response.ok) {\n alert('Payment details updated successfully');\n } else {\n alert(data.message);\n }\n } catch (error) {\n alert('Error updating payment details');\n }\n };\n\n return (\n \n

Payment Details

\n
\n

Enter your firms payment details here.

\n
\n
\n

\n If you're being paid by check, each check will be sent in accord with these payment details. Note that you may not enter a PO Box.\n

\n For faster payment, set up direct deposit.\n

\n
\n
\n\n
\n
\n
\n {Object.entries({\n payee: 'Payee Name',\n mailing_name: 'Mailing Name (optional)',\n mailing_street: 'Street Address',\n mailing_city: 'City'\n }).map(([field, label]) => (\n
\n \n \n
\n ))}\n\n
\n
\n \n \n
\n\n
\n \n \n
\n
\n\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default PaymentDetails;","import React from 'react';\n\nconst ICONS = {\n success: (\n \n ),\n danger: (\n \n )\n};\n\nconst Alert = ({ type = 'success', children }) => {\n const variant = type === 'success' ? 'success' : 'danger';\n \n return (\n
\n \n {ICONS[type]}\n \n
\n {children}\n
\n
\n );\n};\n\nexport default Alert; ","import React, { useState, useEffect } from 'react';\nimport Sidebar from './Sidebar';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\nimport Form from 'react-bootstrap/Form';\nimport Alert from '../shared/Alert';\n\nconst Users = () => {\n const [users, setUsers] = useState([]);\n const [authToken, setAuthToken] = useState('');\n const [error, setError] = useState(null);\n const [loading, setLoading] = useState(true);\n const [newUserEmail, setNewUserEmail] = useState('');\n const [newUserRole, setNewUserRole] = useState('user');\n const [formError, setFormError] = useState(null);\n const [successMessage, setSuccessMessage] = useState(null);\n const [scope, setScope] = useState(null);\n const [currentUserEmail, setCurrentUserEmail] = useState(null);\n const [hoveredRowId, setHoveredRowId] = useState(null);\n\n const fetchUsers = async () => {\n try {\n const response = await fetch('/collectors/api/users', {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n }\n });\n\n if (!response.ok) {\n throw new Error('Failed to fetch users');\n }\n\n const data = await response.json();\n setUsers(data.users);\n setAuthToken(data.auth_token);\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n };\n \n const fetchAuthInfo = async () => {\n const response = await fetch('/collectors/api/check_auth', {\n headers: {\n 'Accept': 'application/json'\n }\n });\n const data = await response.json();\n setScope(data.scope);\n setCurrentUserEmail(data.current_user.email);\n };\n\n useEffect(() => {\n fetchUsers();\n fetchAuthInfo();\n }, []);\n\n const handleAddUser = async (e) => {\n e.preventDefault();\n setFormError(null);\n setSuccessMessage(null);\n\n try {\n const response = await fetch('/collectors/api/users/create', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({\n user: {\n email: newUserEmail,\n law_firm_scope: newUserRole\n }\n })\n });\n\n const data = await response.json();\n \n if (!response.ok) {\n throw new Error(data.message || 'Failed to create user');\n }\n\n // Refresh users list\n await fetchUsers();\n \n // Reset form and show success message\n setNewUserEmail('');\n setNewUserRole('user');\n setSuccessMessage(`User added successfully. An invite has been sent to ${newUserEmail}.`);\n \n // Clear success message after 5 seconds\n setTimeout(() => {\n setSuccessMessage(null);\n }, 5000);\n } catch (err) {\n setFormError(err.message);\n }\n };\n\n const handleRemoveUser = async (userId) => {\n if (!window.confirm('Are you sure you want to remove this user?')) {\n return;\n }\n\n try {\n const response = await fetch('/collectors/api/users/remove', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({\n user_id: userId\n })\n });\n\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.message || 'Failed to remove user');\n }\n\n await fetchUsers();\n } catch (err) {\n setError(err.message);\n }\n };\n\n if (loading) return
Loading...
;\n if (error) return
Error: {error}
;\n\n return (\n
\n
\n \n
\n
\n

Users

\n
\n \n
\n

Authentication Code


\n

People in your organization can use this code to access your dashboard.

\n e.target.select()}\n />\n
\n\n
\n\n
\n {successMessage && (\n \n {successMessage}\n \n )}\n {formError && (\n \n \n \n {formError}\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n {users.map(user => (\n setHoveredRowId(user.id)}\n onMouseLeave={() => setHoveredRowId(null)}\n style={{ height: '80px' }}\n >\n \n \n \n \n ))}\n \n \n \n \n \n \n
EmailRole
{user.email}{user.law_firm_scope}\n {user.email !== currentUserEmail && hoveredRowId === user.id && (\n {\n e.preventDefault();\n handleRemoveUser(user.id);\n }}\n aria-label=\"Remove user\"\n >\n \n \n \n \n \n \n \n )}\n
\n \n setNewUserEmail(e.target.value)}\n required\n />\n \n \n setNewUserRole(e.target.value)}\n required\n >\n \n \n \n \n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Users; ","import React, { useEffect, useState } from 'react';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport Alert from '../shared/Alert';\n\nconst Login = () => {\n const navigate = useNavigate();\n const location = useLocation();\n const [errorMessage, setErrorMessage] = useState('');\n const [isEmailLogin, setIsEmailLogin] = useState(true);\n\n const handleLogin = async (credentials) => {\n try {\n const response = await fetch('/collectors/api/login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify(credentials)\n });\n\n const data = await response.json();\n \n if (!response.ok || data.error) {\n setErrorMessage(data.error || 'An unexpected error occurred');\n return;\n }\n\n // After successful login, verify the session is properly set\n const authCheckResponse = await fetch('/collectors/api/check_auth', {\n headers: {\n 'Accept': 'application/json'\n }\n });\n\n if (authCheckResponse.ok) {\n // Only navigate if both login and session check were successful\n navigate('/collectors/accounts');\n } else {\n setErrorMessage('Login succeeded but session initialization failed. Please try again.');\n }\n \n } catch (error) {\n console.error('Error during login:', error);\n setErrorMessage('A network error occurred. Please check your connection and try again.');\n }\n };\n\n useEffect(() => {\n const checkAuthAndToken = async () => {\n try {\n // First check if we're already authenticated\n const response = await fetch('/collectors/api/check_auth', {\n headers: {\n 'Accept': 'application/json'\n }\n });\n \n if (response.ok) {\n navigate('/collectors/accounts');\n return;\n }\n\n // If not authenticated, check for auth token in URL\n const params = new URLSearchParams(location.search);\n const authToken = params.get('auth_token');\n if (authToken) {\n await handleLogin({ auth_token: authToken });\n }\n } catch (error) {\n console.error('Error in authentication flow:', error);\n setErrorMessage('Error during authentication. Please try again.');\n }\n };\n\n checkAuthAndToken();\n }, [navigate, location]);\n\n const handleSubmit = (e) => {\n e.preventDefault();\n if (isEmailLogin) {\n const email = e.target.email.value;\n const password = e.target.password.value;\n handleLogin({ email, password });\n } else {\n const authToken = e.target.auth_token.value;\n handleLogin({ auth_token: authToken });\n }\n };\n\n return (\n
\n
\n
\n

\n {isEmailLogin \n ? 'Sign In' \n : 'Enter Authentication Code'}\n

\n\n

You can sign in with your email and password or use a login token.

\n \n {errorMessage && (\n \n {errorMessage}\n \n )}\n \n
\n {isEmailLogin ? (\n <>\n
\n \n
\n
\n \n
\n \n ) : (\n
\n \n
\n )}\n \n
\n \n
\n
\n\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default Login;","import React, { useState, useEffect } from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport Alert from '../shared/Alert';\n\nconst InviteAccept = () => {\n const [searchParams] = useSearchParams();\n const navigate = useNavigate();\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [error, setError] = useState(null);\n const [loading, setLoading] = useState(false);\n const token = searchParams.get('token');\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setError(null);\n setLoading(true);\n\n if (password !== confirmPassword) {\n setError(\"Passwords don't match\");\n setLoading(false);\n return;\n }\n\n try {\n const response = await fetch('/collectors/api/accept_invite', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({\n token,\n password\n })\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n throw new Error(data.message || 'Failed to set password');\n }\n\n // Redirect to login page\n navigate('/collectors');\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n
\n
\n
\n
\n
\n

Set Your Password

\n \n {error && (\n \n {error}\n \n )}\n\n
\n
\n \n setPassword(e.target.value)}\n required\n />\n
\n\n
\n \n setConfirmPassword(e.target.value)}\n required\n />\n
\n\n

Already have a password?

\n\n \n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default InviteAccept; ","import React from 'react';\nimport { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';\nimport PrivateRoute from './collectors_dashboard/PrivateRoute';\nimport Accounts from './collectors_dashboard/Accounts';\nimport DirectDeposit from './collectors_dashboard/DirectDeposit';\nimport PaymentDetails from './collectors_dashboard/PaymentDetails';\nimport Users from './collectors_dashboard/Users';\nimport Login from './collectors_dashboard/Login';\nimport InviteAccept from './collectors_dashboard/InviteAccept';\n\nconst CollectorsDashboardRoot = () => {\n return (\n \n \n }\n />\n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n \n \n );\n};\n\nexport default CollectorsDashboardRoot;","import React from 'react';\n\nconst Card = React.forwardRef(({ className = '', children, ...props }, ref) => (\n \n {children}\n
\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef(({ className = '', children, ...props }, ref) => (\n \n {children}\n \n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef(({ className = '', children, ...props }, ref) => (\n \n {children}\n \n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef(({ className = '', children, ...props }, ref) => (\n \n {children}\n \n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef(({ className = '', children, ...props }, ref) => (\n \n {children}\n \n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef(({ className = '', children, ...props }, ref) => (\n \n {children}\n \n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter }; ","import React, { useState, useEffect } from 'react';\nimport { Card, CardContent, CardTitle, CardDescription, CardFooter } from '../ui/Card';\n\nconst HIDE_DURATION_DAYS = 7;\n\nconst CallToActionCards = () => {\n const [hiddenCards, setHiddenCards] = useState({\n soloSettle: false,\n debtAnswer: false\n });\n\n useEffect(() => {\n Object.keys(hiddenCards).forEach(cardKey => {\n const hiddenUntil = localStorage.getItem(`hidden_${cardKey}`);\n if (hiddenUntil && new Date(hiddenUntil) > new Date()) {\n setHiddenCards(prev => ({ ...prev, [cardKey]: true }));\n } else if (hiddenUntil) {\n localStorage.removeItem(`hidden_${cardKey}`);\n }\n });\n }, []);\n\n const hideCard = (cardKey) => {\n const hiddenUntil = new Date();\n hiddenUntil.setDate(hiddenUntil.getDate() + HIDE_DURATION_DAYS);\n localStorage.setItem(`hidden_${cardKey}`, hiddenUntil.toISOString());\n setHiddenCards(prev => ({ ...prev, [cardKey]: true }));\n };\n\n if (hiddenCards.soloSettle && hiddenCards.debtAnswer) {\n return null;\n }\n\n return (\n
\n {!hiddenCards.soloSettle && (\n
\n \n \n
\n

Try SoloSettle

\n
\n \n Are you ready to resolve your debt once and for all? SoloSettle makes it easy to settle with your collector.\n \n \n Learn More\n \n
\n
\n
\n )}\n {!hiddenCards.debtAnswer && (\n
\n \n \n
\n

File an Answer on your Lawsuit

\n
\n \n You made an offer to settle but you haven't filed an Answer yet on your lawsuit. Filing an Answer is crucial for settling.\n \n \n File an Answer\n \n
\n
\n
\n )}\n
\n );\n};\n\nexport default CallToActionCards; ","import React from 'react';\nimport { Card, CardContent, CardTitle, CardDescription } from '../ui/Card';\n\nconst CreditFactor = ({ label, value, statusTier, impact }) => {\n const statusTierInfo = {\n 1: { class: 'bg-success', text: 'Excellent' },\n 2: { class: 'bg-primary', text: 'Good' },\n 3: { class: 'bg-warning', text: 'Fair' },\n 4: { class: 'bg-danger', text: 'Needs some love' },\n 5: { class: 'bg-danger', text: 'Needs extra love' }\n }\n\n return (\n
\n
\n {label}:\n \n {typeof value === 'object' ? `${value.years} yrs, ${value.months} mos` : value}\n {typeof value === 'number' && !label.includes('Accounts') && !label.includes('Marks') && !label.includes('Inquiries') ? '%' : ''}\n \n
\n
\n \n {statusTierInfo[statusTier].text}\n \n |\n {impact} Impact\n
\n
\n)};\n\nconst CreditReportCard = ({ creditReport }) => {\n const factors = [\n { key: 'payment_history', label: 'Payment History' },\n { key: 'credit_utilization', label: 'Credit Card Usage' },\n { key: 'derogatory_marks', label: 'Derogatory Marks' },\n { key: 'credit_age', label: 'Credit Age' },\n { key: 'total_accounts', label: 'Total Accounts' },\n { key: 'hard_inquiries', label: 'Hard Inquiries' },\n { key: 'available_credit', label: 'Available Credit' }\n ];\n\n return (\n \n \n \n

Credit Report

\n

{creditReport.improvement_message}

\n
\n \n

Credit Factors

\n {factors.map(({ key, label }) => (\n \n ))}\n
\n
\n
\n );\n};\n\nexport default CreditReportCard; ","import React, { useState } from 'react';\nimport { post } from '@rails/request.js'\nimport { Card, CardContent, CardTitle, CardDescription } from '../ui/Card';\n\nconst PROFILE_PAGE_URL = '/my_dashboard?activeTab=profile';\nconst CREDIT_REPORT_PAGE_URL = '/my_dashboard?activeTab=credit_report';\nconst CREDIT_REPORT_FETCH_URL = '/my_dashboard/fetch_credit_report';\n\nconst CreditReportCTA = () => {\n const [isFetching, setIsFetching] = useState(false);\n const [error, setError] = useState(null);\n\n const handleFetchCreditReport = async () => {\n setIsFetching(true);\n\n try {\n const response = await post(CREDIT_REPORT_FETCH_URL);\n\n if (response.ok) {\n window.location.href = CREDIT_REPORT_PAGE_URL;\n } else {\n setError(true);\n }\n } catch (error) {\n console.error('Error fetching credit report:', error);\n setError(true);\n } finally {\n setIsFetching(false);\n }\n }\n\n if (error) {\n return (\n \n \n \n

Sorry, there was an error fetching your credit report.

\n
\n \n

Please double-check your profile information and try again.

\n \n \n Go to profile\n \n
\n
\n
\n )\n }\n\n\n return (\n \n \n \n

Find hidden debt in collections.

\n
\n \n

Most people being sued for a debt have 4 other accounts in collections. We can help you settle every one.

\n \n \n \n

\n This won't affect your credit score. By clicking continue, you agree to a soft-credit pull as stated in our Terms of Service.\n

\n
\n
\n
\n );\n};\n\nexport default CreditReportCTA; ","import React from 'react';\nimport CreditReportCard from './CreditReportCard';\nimport CreditReportCTA from './CreditReportCTA';\nimport { Card, CardContent, CardTitle, CardDescription } from '../ui/Card';\n\nconst PROFILE_REDIRECT_URL = \"/my_dashboard?activeTab=profile&redirect_url=/my_dashboard?activeTab=credit_report\";\nconst CREDIT_REPORT_URL = \"/my_dashboard?activeTab=credit_report\";\n\nconst ErrorCard = ({ title, message, buttonText, buttonUrl }) => (\n \n \n \n

{title}

\n
\n \n

{message}

\n \n \n {buttonText}\n \n
\n
\n
\n);\n\nconst MissingMetadataCard = () => (\n \n \n \n

Find hidden debt in collections.

\n
\n \n

Most people being sued for a debt have 4 other accounts in collections. We can help you settle every one.

\n \n \n See my credit report\n \n \n

\n This won't affect your credit score. By clicking continue, you agree to a soft-credit pull as stated in our Terms of Service.\n

\n
\n
\n
\n);\n\nconst CreditReport = ({ creditReport }) => {\n switch (creditReport.status) {\n case 'error':\n return (\n \n );\n case 'available':\n return ;\n case 'missing_metadata':\n return ;\n case 'consent_required':\n return ;\n case 'fetching':\n // If fetching with no base report yet\n if (!creditReport.base_report) {\n return (\n \n );\n } \n \n if (creditReport.base_report?.error) {\n return (\n \n );\n }\n \n return ;\n default:\n return null;\n }\n};\n\nexport default CreditReport; ","import React from 'react';\n\nconst ProgressChecklist = ({ document, section, sectionIndex }) => {\n const hasSectionStarted = (section) => {\n return section.steps.some(step => step.completed || step.current);\n };\n\n const allSectionStepsCompleted = (section) => {\n return section.steps.every(step => step.completed);\n };\n\n return (\n
\n

\n \n

\n
{\n if (!el) return;\n \n el.addEventListener('show.bs.collapse', () => {\n const accordionItem = window.document.getElementById(`accordion-item-${sectionIndex}-${document.id}`);\n const shouldBeMuted = !allSectionStepsCompleted(section);\n accordionItem.classList[shouldBeMuted ? 'add' : 'remove']('muted');\n });\n\n el.addEventListener('hide.bs.collapse', () => {\n const accordionItem = window.document.getElementById(`accordion-item-${sectionIndex}-${document.id}`);\n const shouldBeMuted = !hasSectionStarted(section);\n accordionItem.classList[shouldBeMuted ? 'add' : 'remove']('muted');\n });\n }}\n >\n {section.steps.map((step, stepIndex) => (\n step.current && document.resume_url ? (\n \n ) : (\n
\n {step.title}{step.value ? `: ${step.value}` : ''}\n
\n )\n ))}\n
\n
\n );\n};\n\nexport default ProgressChecklist; ","import React from 'react';\nimport ProgressChecklist from './ProgressChecklist';\n\nconst DocumentCard = ({ document }) => {\n const formatDate = (dateString) => {\n const date = new Date(dateString);\n return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\n };\n\n return (\n
\n
\n \n

{document.title}

\n
\n

\n Started on {formatDate(document.created_at)}\n

\n
\n

Status

\n \n
\n
\n

Progress Checklist

\n
\n {document.sectioned_steps?.map((section, sectionIndex) => (\n \n ))}\n
\n
\n
\n
\n );\n};\n\nexport default DocumentCard; ","import React from 'react';\n\nfunction useAnimateValue(value, duration) {\n const [current, setCurrent] = React.useState(value);\n\n React.useLayoutEffect(() => {\n const stepDuration = 1/50;\n const totalSteps = duration / stepDuration;\n const stepSize = (value - current) / totalSteps;\n let currentStep = 0;\n\n const interval = setInterval(() => setCurrent(current => {\n currentStep++;\n if (currentStep >= totalSteps) {\n clearInterval(interval);\n return value;\n }\n return current + stepSize;\n }), stepDuration * 1000);\n\n return () => clearInterval(interval);\n }, [value, duration]);\n\n return current;\n}\n\nconst AnimatePercentage = React.memo(({ value, duration }) => {\n const v = useAnimateValue(value, duration);\n return Math.round(v * 100) / 100;\n});\n\nconst ProgressCircle = ({ \n percentage = 0,\n strokeWidth = 35,\n ballStrokeWidth = 0,\n reduction = 0,\n transitionDuration = 0.5,\n background = '#6A97F0',\n hideBall = true,\n gradient = [\n { stop: 0.6, color: '#0058F0' },\n { stop: 1, color: '#001100' }\n ],\n titleText = null\n}) => {\n const width = 200;\n const center = width / 2;\n const height = center + center * Math.cos(reduction * Math.PI);\n const [unique] = React.useState(() => Math.random().toString());\n const rotate = -90 + (180 * reduction);\n const r = center - strokeWidth / 2 - (ballStrokeWidth / 2);\n const circumference = Math.PI * r * 2;\n const offset = circumference * (100 - percentage * (1 - reduction)) / 100;\n\n return (\n
\n \n \n \n {gradient.map(({stop, color}) => (\n \n ))}\n \n \n \n \n %\n \n {titleText && {titleText}}\n \n {/* Background circle */}\n \n \n {/* Progress circle */}\n \n \n {/* Ball at the end of progress */}\n {!hideBall && (\n \n )}\n \n
\n );\n};\n\nexport default React.memo(ProgressCircle); ","import React from 'react';\nimport ProgressCircle from '../shared/ProgressCircle';\n\nconst PaymentPlanSummary = ({ paymentPlan }) => {\n if (!paymentPlan) return null;\n\n const {\n total_amount_customer_pays,\n balance_remaining,\n total_savings,\n previous_payment_date,\n next_payment_amount,\n next_payment_date,\n payment_history,\n progress_percentage,\n last_payment_date,\n total_payments_count,\n payments_remaining,\n is_subscription_active,\n subscription_needs_attention,\n subscription_latest_invoice_url\n } = paymentPlan;\n\n return (\n
\n

Payment Plan

\n\n {is_subscription_active && next_payment_amount && next_payment_date && (\n <>\n
\n \n \n \n
\n {next_payment_amount} auto-pay scheduled for {next_payment_date}.\n
\n
\n\n
\n
\n Upcoming payment: {next_payment_amount}\n
\n
\n Due {next_payment_date}\n
\n
\n \n )}\n\n {subscription_needs_attention && next_payment_amount && previous_payment_date && (\n
\n \n \n \n
\n Failed autopay of {next_payment_amount} on {previous_payment_date}. If you fail to make this payment, you will be in default. Click here to update your payment method.\n
\n
\n )}\n\n
\n\n {payment_history && payment_history.length > 0 && (\n
\n

Transactions

\n {payment_history.map((payment) => (\n
\n {payment.amount} paid on {payment.date}\n
\n ))}\n
\n
\n )}\n \n
\n

Payment Plan Summary

\n\n
\n
\n
\n Total payment amount:\n {total_amount_customer_pays}\n
\n
\n Balance remaining:\n {balance_remaining}\n
\n {total_savings && (\n
\n Total savings:\n {total_savings}\n
\n )}\n
\n Payments:\n {total_payments_count}\n
\n
\n Payments remaining:\n {payments_remaining}\n
\n {is_subscription_active && (\n
\n Last payment:\n {last_payment_date}\n
\n )}\n
\n \n
\n \n
\n
\n
\n
\n );\n};\n\nexport default PaymentPlanSummary; \n","export const nullifyEmptyFormValues = (obj: any) => {\n if (!obj || typeof obj !== 'object') {\n return obj && obj.length > 0 ? obj : null;\n }\n\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [\n key,\n nullifyEmptyFormValues(value)\n ])\n );\n};\n\nexport const setNestedFormValue = (obj: any, path: string, value: any) => {\n const keys = path.split('.');\n const lastKey = keys.pop();\n const target = keys.reduce((acc, key) => (acc[key] = acc[key] || {}), obj);\n target[lastKey] = value;\n return { ...obj };\n};","import React, { useEffect, useRef } from 'react';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\nimport Form from 'react-bootstrap/Form';\n\nconst GooglePlacesAutocomplete = ({ \n value,\n onChange,\n onPlaceSelected,\n isInvalid,\n error,\n disabled = false\n}) => {\n const inputRef = useRef(null);\n const autocompleteRef = useRef(null);\n const scriptRef = useRef(null);\n\n useEffect(() => {\n const loadGoogleMapsScript = () => {\n const apiKey = document.body.getAttribute('data-google-maps-api-key');\n scriptRef.current = document.createElement('script');\n scriptRef.current.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&loading=async&callback=initGooglePlaces`;\n scriptRef.current.async = true;\n scriptRef.current.defer = true;\n \n window.initGooglePlaces = () => {\n initAutocomplete();\n delete window.initGooglePlaces;\n };\n\n document.head.appendChild(scriptRef.current);\n };\n\n if (!window.google) {\n loadGoogleMapsScript();\n } else {\n initAutocomplete();\n }\n\n return () => {\n if (autocompleteRef.current) {\n window.google.maps.event.clearInstanceListeners(autocompleteRef.current);\n }\n if (scriptRef.current) {\n document.head.removeChild(scriptRef.current);\n }\n if (window.initGooglePlaces) {\n delete window.initGooglePlaces;\n }\n };\n }, []);\n\n const initAutocomplete = () => {\n if (!inputRef.current || !window.google) return;\n\n autocompleteRef.current = new window.google.maps.places.Autocomplete(inputRef.current, {\n componentRestrictions: { country: [\"us\", \"as\", \"gu\", \"mp\", \"pr\", \"um\", \"vi\"] },\n fields: [\"address_components\"],\n types: [\"address\"]\n });\n\n // Prevent form submission on enter\n inputRef.current.addEventListener('keypress', (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n });\n\n autocompleteRef.current.addListener('place_changed', () => {\n const place = autocompleteRef.current.getPlace();\n let address = {\n address_line1: '',\n city: '',\n state: '',\n zip_code: ''\n };\n\n for (const component of place.address_components) {\n const componentType = component.types[0];\n\n switch (componentType) {\n case \"street_number\":\n address.address_line1 = `${component.long_name} ${address.address_line1}`;\n break;\n case \"route\":\n address.address_line1 += component.short_name;\n break;\n case \"postal_code\":\n address.zip_code = component.long_name;\n break;\n case \"locality\":\n address.city = component.long_name;\n break;\n case \"administrative_area_level_1\":\n address.state = component.short_name;\n break;\n }\n }\n\n onPlaceSelected(address);\n });\n };\n\n return (\n \n \n \n {error}\n \n \n );\n};\n\nexport default GooglePlacesAutocomplete; ","import React, { useState, useEffect } from 'react';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\nimport Form from 'react-bootstrap/Form';\n\nconst formatSSN = (digits) => {\n if (digits.length >= 5) {\n return digits.slice(0, 3) + '-' + digits.slice(3, 5) + '-' + digits.slice(5, 9);\n } else if (digits.length >= 3) {\n return digits.slice(0, 3) + '-' + digits.slice(3);\n } else {\n return digits;\n }\n};\n\nconst SSNInput = ({ \n fullSSN, \n lastFour, \n onChange, \n errors = {}\n}) => {\n const [initialRender, setInitialRender] = useState(false);\n const [showFullSSN, setShowFullSSN] = useState(true);\n const [digits, setDigits] = useState('');\n const [oldDigits, setOldDigits] = useState('');\n const [isBackspace, setIsBackspace] = useState(false);\n\n useEffect(() => {\n if (lastFour && !fullSSN) {\n setShowFullSSN(false);\n }\n }, [initialRender]);\n\n useEffect(() => {\n setInitialRender(true);\n }, []);\n\n const handleToggle = (e) => {\n e.preventDefault();\n setShowFullSSN(!showFullSSN);\n };\n\n const handleKeyDown = (e) => {\n setIsBackspace(e.key === 'Backspace');\n };\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n \n if (name === 'metadata.ssn') {\n const newDigits = value.replace(/\\D/g, '');\n \n let updatedDigits;\n if (newDigits.length < oldDigits.length) {\n // deleted a digit\n updatedDigits = newDigits;\n } else if (newDigits.length > oldDigits.length) {\n // added a digit\n updatedDigits = newDigits;\n } else if (isBackspace) {\n // deleted a non-digit character (like a dash)\n updatedDigits = digits.slice(0, -1);\n } else {\n updatedDigits = digits;\n }\n\n setDigits(updatedDigits);\n setOldDigits(updatedDigits);\n setIsBackspace(false);\n\n // Update both full SSN and last four\n onChange({\n target: {\n name,\n value: formatSSN(updatedDigits)\n }\n });\n \n // Mirror last 4 digits if we have enough digits otherwise clear the last 4 digits\n if (updatedDigits.length >= 6) {\n onChange({\n target: {\n name: 'metadata.ssn_last_four',\n value: updatedDigits.slice(5, 9)\n }\n });\n } else {\n onChange({\n target: {\n name: 'metadata.ssn_last_four',\n value: ''\n }\n });\n }\n } else {\n onChange({\n target: {\n name,\n value: value.replace(/\\D/g, '').slice(0, 4)\n }\n });\n }\n };\n\n return (\n
\n {showFullSSN ? (\n \n \n \n {errors.ssn?.join(', ')}\n \n \n ) : (\n \n \n \n {errors.ssn_last_four?.join(', ')}\n \n \n )}\n \n {showFullSSN ? \"I only want to enter the last four digits.\" : \"I want to enter the full SSN.\"}\n \n
\n );\n};\n\nexport default SSNInput; ","import React, { useState, useEffect } from 'react';\nimport { FetchRequest } from '@rails/request.js';\nimport FloatingLabel from 'react-bootstrap/FloatingLabel';\nimport Form from 'react-bootstrap/Form';\nimport { Card, CardContent } from '../ui/Card';\nimport { nullifyEmptyFormValues, setNestedFormValue } from '../../utils/form';\nimport GooglePlacesAutocomplete from '../shared/GooglePlacesAutocomplete';\nimport SSNInput from '../shared/SSNInput';\nimport Alert from '../shared/Alert';\n\nconst PROFILE_EDIT_PATH = \"/users\"\n\nconst ProfileEdit = ({ initialData, onProfileUpdate }) => {\n const [formData, setFormData] = useState({\n first_name: '',\n last_name: '',\n email: '',\n current_password: '',\n password: '',\n password_confirmation: '',\n metadata: {\n address_line1: '',\n city: '',\n state: '',\n zip_code: '',\n birthdate: '',\n ssn_last_four: '',\n ssn: ''\n }\n });\n const [errors, setErrors] = useState({});\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [successMessage, setSuccessMessage] = useState('');\n const [redirectUrl, setRedirectUrl] = useState(null);\n const isOAuthUser = initialData?.is_oauth_user;\n\n useEffect(() => {\n if (initialData) {\n setFormData(prevData => ({\n ...prevData,\n first_name: initialData.first_name || '',\n last_name: initialData.last_name || '',\n email: initialData.email || '',\n metadata: {\n ...prevData.metadata,\n ...initialData.metadata\n }\n }));\n }\n }, [initialData]);\n\n useEffect(() => {\n const urlParams = new URLSearchParams(window.location.search);\n const redirectUrl = urlParams.get('redirect_url');\n if (redirectUrl) {\n setRedirectUrl(redirectUrl);\n }\n }, []);\n\n const allFieldsFilled = () => {\n return formData.first_name && formData.last_name && formData.metadata.address_line1 && formData.metadata.city && formData.metadata.state && formData.metadata.zip_code && formData.metadata.birthdate && (formData.metadata.ssn || formData.metadata.ssn_last_four);\n }\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n\n setFormData(prev => setNestedFormValue(prev, name, value));\n\n // Clear any existing error for this field\n if (name.split('.').reduce((acc, key) => acc?.[key], errors)) {\n setErrors(prev => setNestedFormValue(prev, name, null));\n }\n\n // Clear success message if exists\n if (successMessage) {\n setSuccessMessage('');\n }\n };\n\n const handlePlaceSelected = (address) => {\n setFormData(prev => ({\n ...prev,\n metadata: { ...prev.metadata, ...address }\n }));\n \n // Clear any existing errors for address fields\n if (errors.metadata) {\n const ADDRESS_FIELDS = ['address_line1', 'city', 'state', 'zip_code'];\n\n setErrors(prev => ({\n ...prev,\n metadata: {\n ...prev.metadata,\n ...Object.fromEntries(ADDRESS_FIELDS.map(field => [field, null]))\n }\n }));\n }\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setIsSubmitting(true);\n setErrors({});\n setSuccessMessage('');\n\n const userData = nullifyEmptyFormValues({\n first_name: formData.first_name,\n last_name: formData.last_name,\n metadata: formData.metadata\n });\n\n // Only include password fields for non-OAuth users\n if (!isOAuthUser) {\n userData.current_password = formData.current_password;\n \n // Only include new password fields if a new password is being set\n if (formData.password) {\n userData.password = formData.password;\n userData.password_confirmation = formData.password_confirmation;\n }\n }\n\n // Validate SSN\n if (formData.metadata.ssn) {\n const ssn = formData.metadata.ssn.replace(/\\D/g, '');\n if (ssn.length !== 9) {\n setErrors(prev => ({ ...prev, metadata: { ...prev.metadata, ssn: ['Full SSN must be 9 digits'] } }));\n setIsSubmitting(false);\n return;\n }\n }\n if (formData.metadata.ssn_last_four) {\n const ssnLastFour = formData.metadata.ssn_last_four.replace(/\\D/g, '');\n if (ssnLastFour.length !== 4) {\n setErrors(prev => ({ ...prev, metadata: { ...prev.metadata, ssn_last_four: ['Last 4 of SSN must be 4 digits'] } }));\n setIsSubmitting(false);\n return;\n }\n }\n\n try {\n const request = new FetchRequest(\"PUT\", PROFILE_EDIT_PATH, {\n body: { user: userData },\n responseKind: \"json\"\n });\n \n const response = await request.perform();\n const data = await response.json;\n \n if (response.ok) {\n setFormData(prev => ({\n ...prev,\n current_password: '',\n password: '',\n password_confirmation: ''\n }));\n setSuccessMessage('Profile updated successfully');\n \n if (onProfileUpdate) {\n onProfileUpdate(data.user);\n }\n\n if (redirectUrl) {\n window.location.href = redirectUrl;\n }\n } else {\n setErrors(data.errors || {});\n if (data.error === \"Current password can't be blank\") {\n setErrors(prev => ({\n ...prev,\n current_password: [\"Current password is required to make changes\"]\n }));\n }\n }\n } catch (error) {\n setErrors({ base: ['An error occurred while updating your profile.'] });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n \n \n
\n

Basic Information

\n \n We use AES 256-bit block-level asymmetric non-deterministic encryption to protect your data.\n \n
\n\n {successMessage && (\n
\n \n {successMessage}\n \n
\n )}\n\n {errors.base && (\n
\n \n {errors.base.join(', ')}\n \n
\n )}\n\n {redirectUrl && redirectUrl.includes('credit_report') && !allFieldsFilled() && (\n
\n \n Please fill out the basic information below to view your credit report.\n \n
\n )}\n\n
\n
\n
\n \n \n \n {errors.first_name?.join(', ')}\n \n \n
\n
\n \n \n \n {errors.last_name?.join(', ')}\n \n \n
\n
\n\n \n \n \n Contact support if you need to update your email. It cannot be changed here.\n \n \n \n
\n
\n \n
\n
\n \n \n \n {errors.metadata?.city?.join(', ')}\n \n \n
\n
\n \n \n \n {errors.metadata?.state?.join(', ')}\n \n \n
\n
\n \n \n \n {errors.metadata?.zip_code?.join(', ')}\n \n \n
\n
\n\n
\n
\n \n \n \n {errors.metadata?.birthdate?.join(', ')}\n \n \n
\n
\n \n
\n
\n\n {!isOAuthUser && (\n <>\n

Password

\n \n \n \n Enter your password to confirm changes.\n \n {errors.current_password?.join(', ')}\n \n \n\n \n \n Leave blank if you don't want to change it.\n \n {errors.password?.join(', ')}\n \n \n\n \n \n \n {errors.password_confirmation?.join(', ')}\n \n \n \n )}\n\n
\n \n
\n
\n
\n
\n );\n};\n\nexport default ProfileEdit; ","import React from 'react';\nimport classNames from 'classnames';\n\ntype BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'info';\n\ninterface BadgeProps {\n as?: React.ElementType;\n variant?: BadgeVariant;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Badge = React.forwardRef(({ \n as: Component = 'div',\n variant = 'default',\n className = '', \n children,\n ...props \n}, ref) => {\n const baseClasses = 'badge rounded-pill fs-4 border';\n \n const variantClasses = {\n default: 'bg-primary text-white',\n secondary: 'bg-secondary text-white',\n destructive: 'bg-danger text-white',\n outline: 'bg-transparent text-primary border-primary',\n success: 'bg-success text-white',\n warning: 'bg-warning text-dark',\n info: 'bg-info text-white',\n };\n\n const classes = classNames(\n baseClasses,\n variantClasses[variant],\n className,\n );\n\n return (\n \n {children}\n \n );\n});\n\nBadge.displayName = \"Badge\";\n\nexport { Badge }; ","import React, { useState, useEffect } from 'react';\nimport CallToActionCards from './CallToActionCards';\nimport CreditReport from './CreditReport';\nimport DocumentCard from './DocumentCard';\nimport PaymentPlanSummary from './PaymentPlanSummary';\nimport ProfileEdit from './ProfileEdit';\nimport { Card, CardContent, CardTitle, CardDescription } from '../ui/Card';\nimport { Badge } from '../ui/Badge';\n\nconst Dashboard = () => {\n const [cases, setCases] = useState([]);\n const [unorganizedDocuments, setUnorganizedDocuments] = useState([]);\n const [flashNotice, setFlashNotice] = useState(null);\n const [loading, setLoading] = useState(true);\n const [creditReport, setCreditReport] = useState(null);\n const [activeTab, setActiveTab] = useState('all');\n const [userProfile, setUserProfile] = useState(null);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const response = await fetch('/my_dashboard.json', {\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n credentials: 'same-origin'\n });\n const data = await response.json();\n setCases(data.cases);\n setCreditReport(data.credit_report);\n setUnorganizedDocuments(data.unorganizedDocuments);\n setFlashNotice(data.flash_notice);\n setUserProfile(data.user_profile);\n } catch (error) {\n console.error('Error fetching dashboard data:', error);\n } finally {\n setLoading(false);\n }\n };\n\n fetchData();\n }, []);\n\n useEffect(() => {\n const url = new URL(window.location);\n const activeTab = url.searchParams.get('activeTab');\n if (activeTab) {\n setActiveTab(activeTab);\n }\n }, []);\n\n const formatMoney = (amount) => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD'\n }).format(amount);\n };\n\n const CaseHeader = ({ info }) => {\n if (info.plaintiff_name && info.lawsuit_amount) {\n return (\n
\n

{info.plaintiff_name}

\n

{formatMoney(info.lawsuit_amount)}

\n
\n );\n } else if (info.civil_number) {\n return

Case {info.civil_number}

;\n } else {\n return

Case #{info.id}

;\n }\n };\n\n const handleProfileUpdate = (updatedProfile) => {\n setUserProfile(prev => ({\n ...prev,\n ...updatedProfile\n }));\n };\n\n const handleTabChange = (tab) => {\n setActiveTab(tab);\n const url = new URL(window.location);\n url.searchParams.set('activeTab', tab);\n window.history.pushState({}, '', url);\n };\n\n return (\n
\n
\n
\n

Dashboard

\n {flashNotice && (\n
{flashNotice}
\n )}\n
\n {cases.length > 0 && (\n handleTabChange('cases')}\n >\n Cases\n \n )}\n handleTabChange('profile')}\n >\n Profile\n \n {creditReport && (\n handleTabChange('credit_report')}\n >\n Credit Report\n \n )}\n {unorganizedDocuments.length > 0 && (\n handleTabChange('documents')}\n >\n Documents\n \n )}\n
\n
\n
\n\n \n\n
\n {loading ? (\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
\n ) : (\n
\n {['all', 'cases'].includes(activeTab) && cases.map((consumer_case) => (\n
\n
\n
\n \n
\n
\n {consumer_case.has_payment_plan && (\n \n \n {consumer_case.documents.map(doc => \n doc.payment_plan && \n )}\n \n \n )}\n {consumer_case.documents.map((document) => (\n \n \n \n \n \n ))}\n
\n
\n
\n
\n
\n ))}\n\n {['all', 'documents'].includes(activeTab) && unorganizedDocuments.length > 0 && (\n <>\n {cases.length > 0 && activeTab == 'all' &&
}\n {unorganizedDocuments.map((document) => (\n \n \n \n \n \n ))}\n \n )}\n\n {['all', 'profile'].includes(activeTab) && (\n <>\n {(unorganizedDocuments.length > 0 || cases.length > 0) && activeTab == 'all' &&
}\n \n \n )}\n\n {['all', 'credit_report'].includes(activeTab) && (\n <>\n {activeTab == 'all' &&
}\n \n \n )}\n
\n )}\n
\n\n
\n
\n \n \n

Create a New Document

\n \n \n \n Debt Answer\n \n

Use this document to respond to a debt collection lawsuit.

\n
\n\n \n \n SoloSettle\n \n

Use this to settle a debt.

\n
\n\n \n \n Document Generation\n \n

Generate documents with AI.

\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default Dashboard; ","import React from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport Dashboard from './consumer_dashboard/Dashboard';\n\nconst ConsumerDashboardRoot = () => {\n return (\n \n \n }\n />\n \n \n );\n};\n\nexport default ConsumerDashboardRoot; ","import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n // *** Getters\n\n get $element() {\n return $(this.element)\n }\n\n // *** Lifecycle\n\n connect() {\n this.$element.on({\n keyup: (e) => {\n const $target = $(e.target)\n\n if (0 === $target.prop(\"selectionStart\") && $target.val().length === $target.prop(\"selectionEnd\")) {\n return;\n }\n\n this.formatCurrency($(e.target));\n },\n blur: (e) => {\n this.formatCurrency($(e.target), true);\n }\n });\n }\n\n // *** Helpers\n\n formatNumber(n) {\n // format number 1234567 to 1,234,567\n return n.replace(/\\D/g, \"\").replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\n }\n\n formatCurrency(input, blur = false) {\n // appends $ to value, validates decimal side\n // and puts cursor back in right position.\n\n // get input value\n var input_val = input.val();\n\n // don't validate empty input\n if (input_val === \"\") { return; }\n\n // original length\n var original_len = input_val.length;\n\n // initial caret position \n var caret_pos = input.prop(\"selectionStart\");\n\n // check for decimal\n if (input_val.indexOf(\".\") >= 0) {\n var decimal_pos = input_val.indexOf(\".\");\n var left_side = input_val.substring(0, decimal_pos);\n var right_side = input_val.substring(decimal_pos);\n\n left_side = this.formatNumber(left_side);\n right_side = this.formatNumber(right_side);\n\n if (blur) {\n right_side += \"00\";\n }\n\n // Limit decimal to only 2 digits\n right_side = right_side.substring(0, 2);\n\n // join number by .\n input_val = \"$\" + left_side + \".\" + right_side;\n\n } else {\n // no decimal entered\n // add commas to number\n // remove all non-digits\n input_val = this.formatNumber(input_val);\n input_val = \"$\" + input_val;\n\n // final formatting\n if (blur) {\n input_val += \".00\";\n }\n }\n\n // send updated string to input\n input.val(input_val);\n\n if (!blur) {\n // put caret back in the right position\n var updated_len = input_val.length;\n caret_pos = updated_len - original_len + caret_pos;\n input[0].setSelectionRange(caret_pos, caret_pos);\n }\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport autosize from \"autosize\"\n\nexport default class extends Controller {\n connect() {\n autosize(this.element)\n }\n\n disconnect() {\n autosize.destroy(this.element)\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nconst POSTHOG_EVENT_NAME = \"pilot:completions:anchor_clicked\"\nconst SANATIZE_PARAM_KEYS = [\n \"utm_source\",\n \"utm_medium\",\n \"utm_campaign\",\n \"utm_term\",\n \"utm_content\",\n \"_gl\"\n]\n\nexport default class extends Controller {\n // *** Getters\n\n get props() {\n return JSON.parse(this.data.get(\"props\") || \"{}\")\n }\n\n // *** Lifecycle\n\n connect() {\n this.element.addEventListener(\"click\", this.handleClick.bind(this))\n }\n\n disconnect() {\n this.element.removeEventListener(\"click\", this.handleClick.bind(this))\n }\n\n // *** Events\n\n handleClick() {\n const url = this.sanitizeUrl(this.element.href)\n\n window.posthog.capture(POSTHOG_EVENT_NAME, { ...this.props, url })\n }\n\n // *** Helpers\n\n sanitizeUrl(url) {\n const urlObj = new URL(url)\n const params = new URLSearchParams(urlObj.search)\n\n SANATIZE_PARAM_KEYS.forEach(param => {\n params.delete(param)\n })\n\n urlObj.search = params.toString()\n\n return urlObj.toString()\n }\n}\n","export enum AppType {\n Card = \"CARD\",\n}\n\nexport enum ChannelState {\n Connected = \"CONNECTED\",\n Disconnected = \"DISCONNECTED\",\n}\n\nexport interface Completion {\n assistantResponse?: string;\n createdAt: number;\n id: number;\n state: CompletionState;\n userRequest: string;\n}\n\nexport interface CompletionsChannelPayload {\n data: Completion | CompletionDelta;\n type: CompletionsChannelPayloadType;\n}\n\nexport enum CompletionsChannelPayloadType {\n Delta = \"delta\",\n Object = \"object\"\n}\n\nexport interface CompletionDelta {\n id: number;\n assistantResponseDelta: string;\n}\n\nexport enum CompletionRole {\n Assistant = \"assistant\",\n User = \"user\",\n}\n\nexport enum CompletionState {\n Processing = \"processing\",\n Successful = \"successful\",\n Failed = \"failed\",\n}\n","export const addQueryParams = (url: string, params: any) => {\n try {\n const urlObj = new URL(url);\n\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n urlObj.searchParams.set(key, params[key]);\n }\n }\n\n return urlObj.toString();\n } catch (error) {\n console.error(\"Invalid URL:\", error);\n return url; // Return original URL if invalid\n }\n}\n","import JsConvertCase from 'js-convert-case'\n\nexport const snakeKeys = (obj: Object | Array): any => {\n if (Array.isArray(obj)) {\n return Object.keys(obj).map(key => snakeCaseConvert(obj[key as any]))\n }\n\n return snakeCaseConvert(obj)\n}\n\nexport const camelKeys = (obj: Object | Array): any => {\n if (Array.isArray(obj)) {\n return Object.keys(obj).map(key => camelCaseConvert(obj[key as any]))\n }\n\n return camelCaseConvert(obj)\n}\n\nconst snakeCaseConvert = (obj: Object) => JsConvertCase.snakeKeys(obj, { recursive: true, recursiveInArray: true })\nconst camelCaseConvert = (obj: Object) => JsConvertCase.camelKeys(obj, { recursive: true, recursiveInArray: true })\n","import React from 'react'\n\nimport { addQueryParams } from '../../utils/url'\nimport { snakeKeys } from '../../utils/json'\n\nconst UTM_PARAMS = {\n utm_source: \"solo\",\n utm_medium: \"pilot\",\n}\n\nconst SOLO_PRODUCT_MAPPINGS = {\n \"https://www.solosuit.com/debt_answer\": \"https://www.solosuit.com/customer_documents?document_name=debt_answer\",\n \"https://www.solosuit.com/solosettle\": \"https://www.solosuit.com/customer_documents?document_name=solosettle\",\n \"https://www.solosuit.com/document_generation\": \"https://www.solosuit.com/customer_documents?document_name=document_generation\",\n}\n\ntype Params = {\n children: React.ReactNode;\n completionId: number;\n href: string;\n}\n\nconst soloProductUrl = (url: string) => {\n return Object.keys(SOLO_PRODUCT_MAPPINGS).includes(url)\n}\n\nfunction AnchorRenderer({ children, completionId, href }: Params) {\n if (soloProductUrl(href)) {\n return (\n \n {children}\n \n )\n } else {\n return (\n \n {children}\n \n )\n }\n}\n\nexport default AnchorRenderer\n","import React from 'react'\nimport ReactMarkdown from 'react-markdown'\n\nimport AnchorRenderer from './markdownRenderers/AnchorRenderer'\n\ntype Props = {\n completionId: number;\n content: string;\n}\n\nfunction Markdown({ completionId, content }: Props) {\n if (\"\" === content) {\n return (\n

\n )\n } else {\n const components = {\n a: ({ children, href }) => (\n \n )\n }\n\n return (\n \n {content}\n \n )\n }\n}\n\nexport default Markdown\n","import React from 'react'\nimport classNames from 'classnames';\n\nimport { CompletionRole, CompletionState } from '../../types';\nimport Markdown from '../../components/Markdown';\n\ntype Props = {\n completionId?: number;\n content: string;\n role: CompletionRole;\n state: CompletionState;\n}\n\nfunction Bubble({ completionId, content, role, state }: Props) {\n const containerClassNames = classNames({\n \"pilot-completions-bubble\": true,\n \"assistant\": CompletionRole.Assistant === role,\n \"user\": CompletionRole.User === role,\n \"processing\": CompletionState.Processing === state,\n \"successful\": CompletionState.Successful === state,\n \"failed\": CompletionState.Failed === state,\n })\n\n return (\n

\n
\n {CompletionRole.Assistant === role ? : content}\n
\n
\n )\n}\n\nexport default Bubble\n","import { useDispatch, useSelector } from 'react-redux'\n\nimport type { RootState, AppDispatch } from './store'\n\nexport const useAppDispatch = useDispatch.withTypes()\nexport const useAppSelector = useSelector.withTypes()\n","import { createEntityAdapter, createSelector } from \"@reduxjs/toolkit\"\nimport { filter } from 'lodash'\n\nimport { RootState } from \"../../store\"\nimport { Completion, CompletionState } from \"../../types\"\n\nexport const completionsAdapter = createEntityAdapter({\n selectId: (completion: Completion) => completion.id,\n sortComparer: (a: Completion, b: Completion) => a.createdAt - b.createdAt,\n})\n\nconst completionsSelector = completionsAdapter.getSelectors(\n (state) => state.completions\n)\n\nexport default completionsSelector\n\nexport const getAllCompletions = (state: RootState) => completionsSelector.selectAll(state)\nexport const getAllCompletionIds = (state: RootState) => completionsSelector.selectIds(state)\nexport const getCompletionById = (state: RootState, completionId: number) => completionsSelector.selectById(state, completionId)\nexport const getChannelState = (state: RootState) => state.completions.channelState\nexport const isCreating = (state: RootState) => state.completions.creating\nexport const isFetching = (state: RootState) => state.completions.fetching\nexport const getHasNextPage = (state: RootState) => state.completions.hasNextPage\n\nexport const getProcessingCompletions = createSelector(\n [getAllCompletions],\n (completions) =>\n filter(\n completions,\n (completion: Completion) => CompletionState.Processing === completion.state\n )\n)\n\nexport const isProcessing = createSelector(\n [getProcessingCompletions],\n (completions) => 0 !== completions.length\n)\n\nexport const getOldestCompletion = createSelector(\n [getAllCompletions],\n (completions) => completions.length > 0 ? completions[0] : undefined\n)\n","import React from 'react'\nimport { isEqual } from 'lodash'\n\nimport { CompletionRole, CompletionState } from '../../types'\nimport Bubble from './Bubble'\nimport { useAppSelector } from '../../hooks';\nimport { getCompletionById } from './selectors';\n\ntype Props = {\n completionId: number;\n}\n\nfunction ListItem({ completionId }: Props) {\n const completion = useAppSelector((state) => getCompletionById(state, completionId), isEqual)\n\n return (\n <>\n \n \n \n )\n}\n\nexport default ListItem\n","import toast from 'react-hot-toast'\n\nexport const toastError = (message: string) => {\n toast.error(message, {\n duration: 10000,\n })\n}\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { FetchRequest } from \"@rails/request.js\";\n\nimport { camelKeys, snakeKeys } from \"../../utils/json\";\nimport { toastError } from \"../../utils/toast\";\n\nconst PILOT_COMPLETIONS_PATH = \"/pilot-completions.json\"\n\ntype FetchCompletionsParams = {\n createdAt?: number;\n};\n\nexport const fetchCompletions = createAsyncThunk(\n \"completions/fetchCompletions\",\n async ({ createdAt }: FetchCompletionsParams) => {\n const request = new FetchRequest(\"GET\", PILOT_COMPLETIONS_PATH, {\n responseKind: \"json\",\n query: createdAt ? snakeKeys({ createdAt }) : null,\n })\n\n const response = await request.perform()\n\n if (response.ok) {\n const json = await response.json\n\n return camelKeys(json)\n } else {\n const message = \"Unable to load messages!\\nPlease try again in a few minutes.\";\n\n toastError(message)\n console.error(message)\n throw new Error(message)\n }\n }\n)\n\ntype CreateCompletionParams = {\n userRequest: string;\n};\n\nexport const createCompletion = createAsyncThunk(\n \"completions/createCompletion\",\n async ({ userRequest }: CreateCompletionParams) => {\n const request = new FetchRequest(\"POST\", PILOT_COMPLETIONS_PATH, {\n responseKind: \"json\",\n body: snakeKeys({ pilotCompletion: { userRequest } }),\n })\n\n const response = await request.perform();\n\n if (response.ok) {\n const json = await response.json\n\n return camelKeys(json)\n } else {\n const message = \"Unable to create question!\\nPlease try again in a few minutes.\";\n\n toastError(message)\n console.error(message)\n throw new Error(message)\n }\n }\n)\n","import React from \"react\"\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons'\n\nfunction Loading() {\n return (\n
\n \n loading...\n
\n )\n}\n\nexport default Loading\n","import React from 'react'\nimport { isEqual } from 'lodash'\nimport classNames from 'classnames'\n\nimport ListItem from './ListItem'\nimport { getAllCompletionIds, isFetching } from './selectors'\nimport { useAppDispatch, useAppSelector } from '../../hooks'\nimport { fetchCompletions } from './actions'\nimport Loading from '../../components/Loading'\nimport Bubble from './Bubble'\nimport { CompletionRole, CompletionState } from '../../types'\n\nconst SCROLL_BUFFER = 20\n\nfunction List() {\n const dispatch = useAppDispatch()\n const completionIds = useAppSelector(getAllCompletionIds, isEqual)\n const fetching = useAppSelector(isFetching, isEqual)\n const scrollRef = React.useRef(null)\n const innerScrollRef = React.useRef(null)\n const [shouldScrollToBottom, setShouldScrollToBottom] = React.useState(true)\n\n const scrollToBottom = () => {\n scrollRef.current!.scrollTop = scrollRef.current!.scrollHeight\n }\n\n const calculateShouldScrollToBottom = () => {\n setShouldScrollToBottom (scrollRef.current!.scrollHeight - scrollRef.current!.scrollTop <= scrollRef.current!.clientHeight + SCROLL_BUFFER)\n }\n\n const handleScroll = () => {\n calculateShouldScrollToBottom()\n }\n\n React.useEffect(() => {\n if (!innerScrollRef.current) return\n const resizeObserver = new ResizeObserver(() => {\n if (shouldScrollToBottom) {\n scrollToBottom()\n }\n });\n resizeObserver.observe(innerScrollRef.current)\n return () => resizeObserver.disconnect()\n }, [shouldScrollToBottom])\n\n React.useEffect(() => {\n dispatch(fetchCompletions({}))\n }, [])\n\n const containerClassNames = classNames({\n \"pilot-completions-list\": true\n })\n\n return (\n
\n
\n {(0 === completionIds.length && !fetching) ? : null}\n {fetching ? : null}\n {completionIds.map((completionId) => )}\n
\n
\n )\n}\n\nexport default List\n","import React from 'react'\nimport classNames from 'classnames';\n\nimport { ChannelState } from '../types'\n\ntype Props = {\n channelState: ChannelState;\n}\n\nfunction ChannelStateDot({ channelState }: Props) {\n const dotClassNames = classNames({\n \"pilot-channel-state-dot\": true,\n \"connected\": ChannelState.Connected === channelState,\n \"disconnected\": ChannelState.Disconnected === channelState,\n })\n\n return (\n
 
\n )\n}\n\nexport default ChannelStateDot\n","import React from 'react'\nimport Button from 'react-bootstrap/Button'\nimport TextareaAutosize from 'react-textarea-autosize'\nimport { isEqual } from 'lodash'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faArrowUp, faSpinner } from '@fortawesome/free-solid-svg-icons'\nimport { isMobile } from 'react-device-detect'\n\nimport { useAppDispatch, useAppSelector } from '../../hooks'\nimport { createCompletion } from './actions'\nimport { getChannelState, isCreating, isProcessing } from './selectors'\nimport { ChannelState } from '../../types'\nimport ChannelStateDot from '../../components/ChannelStateDot'\n\nconst EMPTY_STRING = \"\"\nconst PLACE_HOLDER = \"Ask your question here...\"\nconst ENTER_KEYBOARD_EVENT = \"Enter\"\n\nfunction Footer() {\n const dispatch = useAppDispatch()\n const creating = useAppSelector(isCreating, isEqual)\n const processing = useAppSelector(isProcessing, isEqual)\n const channelState = useAppSelector(getChannelState, isEqual)\n const [userRequest, setUserRequest] = React.useState(EMPTY_STRING)\n const [loading, setLoading] = React.useState(false)\n const [disabled, setDisabled] = React.useState(true)\n const textareaRef = React.useRef(undefined)\n\n const handleSubmit = () => {\n if (!disabled) {\n dispatch(createCompletion({ userRequest }))\n setUserRequest(EMPTY_STRING)\n\n if (isMobile) {\n textareaRef!.current.blur()\n }\n }\n }\n\n const handleKeyDown = (event: any) => {\n if (ENTER_KEYBOARD_EVENT === event.key) {\n event.preventDefault()\n handleSubmit()\n }\n }\n\n React.useEffect(() => {\n setLoading(creating || processing)\n }, [creating, processing])\n\n React.useEffect(() => {\n setDisabled(\n EMPTY_STRING === userRequest\n || creating\n || processing\n || ChannelState.Connected !== channelState\n )\n }, [userRequest, creating, processing, channelState])\n\n return (\n
\n
\n setUserRequest(e.target.value)}\n placeholder={PLACE_HOLDER}\n onKeyDown={handleKeyDown}\n />\n
\n
\n \n handleSubmit()}\n size='sm'\n disabled={disabled}\n >\n \n \n
\n
\n )\n}\n\nexport default Footer\n","export const cableUrl = (): string => document.querySelector(`meta[name=\"action-cable-url\"]`)!.getAttribute(\"content\")!\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit'\n\nimport { completionsAdapter } from \"./selectors\"\nimport { fetchCompletions, createCompletion } from './actions'\nimport { ChannelState, Completion, CompletionDelta } from '../../types'\n\nexport const completionsSlice = createSlice({\n name: 'completions',\n initialState: completionsAdapter.getInitialState({\n channelState: ChannelState.Disconnected,\n creating: false,\n fetching: false,\n hasNextPage: false,\n }),\n reducers: {\n upsertCompletion: completionsAdapter.upsertOne,\n updateChannelState(state, action: PayloadAction) {\n state.channelState = action.payload\n },\n appendAssistantCompletionDelta(state, action: PayloadAction) {\n const completion = state.entities[action.payload.id]\n\n if (completion) {\n let assistantResponse = completion.assistantResponse\n\n if (assistantResponse) {\n assistantResponse += action.payload.assistantResponseDelta\n } else {\n assistantResponse = action.payload.assistantResponseDelta\n }\n\n state.entities[action.payload.id] = {\n ...completion,\n assistantResponse\n }\n }\n },\n },\n extraReducers: (builder) => {\n builder.addCase(fetchCompletions.pending, (state) => {\n state.fetching = true\n });\n builder.addCase(fetchCompletions.fulfilled, (state, action) => {\n const payload = { ...action.payload } as { data: Completion[], hasNextPage: boolean };\n\n state.fetching = false\n state.hasNextPage = payload.hasNextPage\n completionsAdapter.upsertMany(state, payload.data);\n });\n builder.addCase(fetchCompletions.rejected, (state) => {\n state.fetching = false\n });\n\n builder.addCase(createCompletion.pending, (state) => {\n state.creating = true\n });\n builder.addCase(createCompletion.fulfilled, (state, action) => {\n const payload = { ...action.payload } as { data: Completion };\n\n state.creating = false\n completionsAdapter.upsertOne(state, payload.data);\n });\n builder.addCase(createCompletion.rejected, (state) => {\n state.creating = false\n });\n }\n})\n\nexport default completionsSlice.reducer\n\nexport const { appendAssistantCompletionDelta, updateChannelState, upsertCompletion } = completionsSlice.actions\n","import * as React from 'react'\nimport { createConsumer } from \"@rails/actioncable\"\n\nimport { cableUrl } from \"../../utils/channels\"\nimport { camelKeys } from \"../../utils/json\"\nimport { ChannelState, CompletionsChannelPayload, CompletionsChannelPayloadType, CompletionDelta, Completion } from \"../../types\"\nimport { appendAssistantCompletionDelta, updateChannelState, upsertCompletion } from './slice'\nimport { useAppDispatch } from '../../hooks'\n\nconst CHANNEL_NAME = \"PilotCompletionsChannel\"\n\ntype Props = {\n children: React.ReactNode;\n}\n\nconst Channel = ({ children }: Props): React.ReactElement => {\n const dispatch = useAppDispatch()\n\n const handlePayloadReceived = (payload: CompletionsChannelPayload) => {\n switch (payload.type) {\n case CompletionsChannelPayloadType.Delta:\n dispatch(appendAssistantCompletionDelta(payload.data as CompletionDelta))\n break\n case CompletionsChannelPayloadType.Object:\n dispatch(upsertCompletion(payload.data as Completion))\n break\n }\n }\n\n const createChannel = () => {\n return createConsumer(cableUrl()).subscriptions.create({\n channel: CHANNEL_NAME,\n }, {\n connected: handleConnected,\n disconnected: handleDisconnected,\n received: handleReceived,\n })\n }\n\n const handleConnected = () => dispatch(updateChannelState(ChannelState.Connected))\n const handleDisconnected = () => dispatch(updateChannelState(ChannelState.Disconnected))\n const handleReceived = (payload: any) => handlePayloadReceived(camelKeys(payload))\n\n React.useEffect(() => {\n const channel = createChannel()\n return () => channel.unsubscribe()\n }, [])\n\n return (<>{children})\n}\n\nexport default Channel\n","import { combineReducers } from \"redux\"\n\nimport completionsReducer from \"./features/completions/slice\"\n\nconst rootReducer = combineReducers({\n completions: completionsReducer,\n});\n\nexport default rootReducer\n","import { configureStore } from \"@reduxjs/toolkit\"\nimport { createLogger } from \"redux-logger\"\n\nimport { isNotProduction } from \"./utils/env\"\nimport rootReducer from \"./reducers\"\n\nconst store = configureStore({\n reducer: rootReducer,\n devTools: isNotProduction,\n middleware: (getDefaultMiddleware) => {\n if (isNotProduction) {\n return getDefaultMiddleware().concat(createLogger());\n } else {\n return getDefaultMiddleware();\n }\n },\n})\n\nexport default store\n\nexport type RootState = ReturnType\nexport type AppDispatch = typeof store.dispatch\n","export const isNotProduction = \"production\" !== process.env.NODE_ENV\n","import React from 'react'\nimport classNames from 'classnames'\nimport Button from \"react-bootstrap/Button\"\nimport Card from \"react-bootstrap/Card\"\nimport { Toaster } from 'react-hot-toast'\nimport { Provider } from 'react-redux'\n\nimport { AppType } from './types'\nimport List from './features/completions/List'\nimport Footer from './features/completions/Footer'\nimport Channel from './features/completions/Channel'\nimport store from './store'\n\ninterface Props {\n appType: AppType;\n authenticated: boolean;\n}\n\nfunction PilotApp({ appType }: Props) {\n const containerClassNames = classNames({\n \"pilot-app\": true,\n \"pilot-app-card\": AppType.Card === appType,\n })\n\n return (\n \n \n \n \n \n \n