{"version":3,"file":"index-Cu73TYxE.js","sources":["../../../../core/auth.tsx","../../../../core/config.ts","../../../../core/apm.ts","../../../../core/errors.ts","../../../../core/api/base.ts","../../../../core/api/user.ts","../../../../core/api/claims.ts","../../../../ui/Spinner/index.tsx","../../../../ui/Loadable/index.tsx","../../../../types/index.ts","../../../../ui/Page/footer.tsx","../../../../ui/Page/index.tsx","../../../../ui/ErrorBoundary/index.tsx","../../../../core/window.tsx","../../../../ui/Logo/index.tsx","../../pages/PolicyholderDashboard/navbar/desktop.tsx","../../pages/PolicyholderDashboard/navbar/mobile.tsx","../../pages/PolicyholderDashboard/navbar/index.tsx","../../../../ui/Button/index.tsx","../../../../ui/Table/index.tsx","../../../../ui/VerticalLayout/index.tsx","../../../../core/dynamicRefs.ts","../../../../ui/Form/datepicker.tsx","../../../../ui/Form/checkbox.tsx","../../../../ui/Form/radio.tsx","../../../../ui/Card/index.tsx","../../../../ui/Form/text.tsx","../../../../ui/common.tsx","../../../../core/policy.tsx","../../pages/PolicyholderDashboard/claims/attachment.tsx","../../../../core/mapbox.tsx","../../../../ui/Form/builder.tsx","../../../../ui/Form/address.tsx","../../../../ui/Form/switch.tsx","../../pages/PolicyholderDashboard/claims/sections/index.tsx","../../../../ui/Modal/index.tsx","../../../../ui/Badge/index.tsx","../../pages/PolicyholderDashboard/claims/index.tsx","../../../../core/statics.ts","../../../../ui/Box/index.tsx","../../pages/PolicyholderDashboard/policy.tsx","../../pages/PolicyholderDashboard/policies.tsx","../../pages/PolicyholderDashboard/index.tsx","../../../../core/api/auth.ts","../../../../ui/Form/digits.tsx","../../pages/SignIn.tsx","../../../../core/debounce.ts","../../../../core/hubspot.tsx","../../index.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MerchantUser, User } from '@oysterjs/types';\n\ninterface Auth {\n Token?: string;\n // TODO: the backend currently returns a separate field, `MerchantUser`\n // for merchant users. We should unify these based on the typing here.\n User?: T;\n MerchantUser?: MerchantUser;\n}\n\nexport type SetAuthFn = (auth: Auth) => void;\n\nexport const useAuth = (): [Auth, SetAuthFn] => {\n const getAuth = () => {\n const data = window.localStorage.getItem('oyster_token');\n if (data) {\n const auth: Auth = JSON.parse(data);\n return auth;\n }\n\n return {};\n };\n\n const setAuth = (auth: Auth) => {\n window.localStorage.setItem('oyster_token', JSON.stringify(auth));\n _setAuth(auth);\n };\n\n const [auth, _setAuth] = React.useState(getAuth());\n\n React.useEffect(() => {\n const updateAuth = () => setAuth(getAuth());\n window.addEventListener('storage', updateAuth);\n return () => window.removeEventListener('storage', updateAuth);\n }, []);\n\n return [auth, setAuth];\n};\n\nexport const getToken = (): string | null => {\n const data = window.localStorage.getItem('oyster_token');\n return !data ? null : JSON.parse(data)?.Token;\n};\n\nexport const getUser = (): T | null => {\n const data = window.localStorage.getItem('oyster_token');\n return !data ? null : JSON.parse(data)?.User || JSON.parse(data)?.MerchantUser;\n};\n\nexport const resetToken = (redirect?: string): void => {\n window.localStorage.removeItem('oyster_token');\n window.location.href = `/signin${redirect ? `?redirect=${encodeURIComponent(redirect)}` : ''}`;\n};\n","export type Environment = 'production' | 'staging' | 'dev' | 'local';\n\nexport type Service = 'getoyster' | 'dashboard' | 'partners' | 'oysterjs' | 'webhooks';\nexport type Backend = 'admin' | 'api' | 'merchant' | 'integrate' | 'metrics' | 'statics';\n\nconst getEnvironment = (): Environment => {\n if (typeof window === 'undefined') {\n return 'local';\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const environment = process.env.OYSTER_ENVIRONMENT || window?.oyster?.opts?.environment;\n switch (environment) {\n case 'production':\n case 'staging':\n case 'dev':\n case 'local':\n return environment;\n default:\n return 'local';\n }\n};\n\nconst getApiBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://api.withoyster.com';\n case 'staging':\n return 'https://api.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('api');\n case 'local':\n return 'http://localhost:8080';\n }\n};\n\nconst getAdminBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://admin.oysterinc.net';\n case 'staging':\n return 'https://admin.staging.oysterinc.net';\n case 'dev':\n return devServiceUrl('admin');\n case 'local':\n return 'http://localhost:8080';\n }\n};\n\nconst getMerchantBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://merchant.withoyster.com';\n case 'staging':\n return 'https://merchant.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('merchant');\n case 'local':\n return 'http://localhost:8084';\n }\n};\n\nconst getMetricsBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://mtx.withoyster.com';\n case 'staging':\n return 'https://mtx.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('metrics');\n case 'local':\n return 'http://localhost:8083';\n }\n};\n\nconst getStaticsBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://s.withoyster.com';\n case 'staging':\n return 'https://s.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('statics');\n case 'local':\n return 'http://localhost:8081';\n }\n};\n\nconst getIntegrateBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://integrate.withoyster.com';\n case 'staging':\n return 'https://integrate.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('integrate');\n case 'local':\n return 'http://localhost:8085';\n }\n};\n\nconst getOysterJsBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://js.withoyster.com';\n case 'staging':\n return 'https://js.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('oysterjs');\n case 'local':\n return 'http://localhost:8001';\n }\n};\n\nconst getDashboardBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://dashboard.withoyster.com';\n case 'staging':\n return 'https://dashboard.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('dashboard');\n case 'local':\n return 'http://localhost:8180';\n }\n};\n\nconst getGetOysterBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://get.withoyster.com';\n case 'staging':\n return 'https://get.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('getoyster');\n case 'local':\n return 'http://localhost:8181';\n }\n};\n\nconst getPartnersBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://partners.withoyster.com';\n case 'staging':\n return 'https://partners.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('partners');\n case 'local':\n return 'http://localhost:8182';\n }\n};\n\nconst getWebhooksBaseUrl = (): string => {\n switch (getEnvironment()) {\n case 'production':\n return 'https://webhooks.withoyster.com';\n case 'staging':\n return 'https://webhooks.staging.withoyster.com';\n case 'dev':\n return devServiceUrl('webhooks');\n case 'local':\n return 'http://localhost:8080';\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst getServiceName = (): Service => (process.env.SERVICE_NAME as Service) || '';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst getServiceVersion = (): string => process.env.SERVICE_VERSION || '';\n\nconst devServiceUrl = (service: string) => {\n // Get the user from the URL\n const [, user] = window.location.host.split('.');\n\n // Host will be in the format of {service}.{user}.dev.oysterinc.net\n return `https://${service}.${user}.dev.oysterinc.net`;\n};\n\nconst getSecret = (secretName: string, devSecret?: string) =>\n devSecret || window?.['oyster']?.['opts']?.[secretName];\n\n// Configuration defines the various configuration values that can\n// be set on the app\ntype StaticConfiguration = {\n readonly serviceName: Service;\n readonly serviceVersion: string;\n readonly environment: Environment;\n readonly serviceBaseUrl: { [K in Service]: string };\n readonly backendBaseUrl: { [K in Backend]: string };\n readonly secrets: {\n readonly mapboxPublicKey?: string;\n readonly shopifyPublicKey?: string;\n readonly stripePublicKey?: string;\n readonly coterieStripePublicKey?: string;\n readonly sentryDsn?: string;\n };\n};\n\ntype DynamicConfiguration = {\n readonly merchant?: {\n readonly id?: string;\n readonly apiKey?: string;\n readonly integrationId?: string;\n };\n};\n\nlet dynamicConfig: DynamicConfiguration = {};\nexport const configure = (opts: DynamicConfiguration) => {\n dynamicConfig = opts;\n};\n\nexport type Configuration = StaticConfiguration & DynamicConfiguration;\n\n// config builds and exports the configuration for usage.\nexport default (): Configuration => ({\n serviceName: getServiceName(),\n serviceVersion: getServiceVersion(),\n environment: getEnvironment(),\n serviceBaseUrl: {\n dashboard: getDashboardBaseUrl(),\n getoyster: getGetOysterBaseUrl(),\n partners: getPartnersBaseUrl(),\n oysterjs: getOysterJsBaseUrl(),\n webhooks: getWebhooksBaseUrl()\n },\n backendBaseUrl: {\n admin: getAdminBaseUrl(),\n api: getApiBaseUrl(),\n merchant: getMerchantBaseUrl(),\n integrate: getIntegrateBaseUrl(),\n metrics: getMetricsBaseUrl(),\n statics: getStaticsBaseUrl()\n },\n secrets: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n mapboxPublicKey: getSecret('mapboxPublicKey', process.env.MAPBOX_PUBLIC_KEY),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n shopifyPublicKey: getSecret('shopifyPublicKey', process.env.SHOPIFY_PUBLIC_KEY),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n stripePublicKey: getSecret('stripePublicKey', process.env.STRIPE_PUBLIC_KEY),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n coterieStripePublicKey: getSecret(\n 'coterieStripePublicKey',\n process.env.COTERIE_STRIPE_PUBLIC_KEY\n ),\n sentryDsn: process.env.SENTRY_DSN\n },\n ...dynamicConfig\n});\n","import * as Sentry from '@sentry/react';\nimport { getUser } from './auth';\nimport config from './config';\n\nclass Apm {\n constructor(private session: Session) {}\n\n // eslint-disable-next-line\n captureError(error: any) {\n if (Sentry.isInitialized()) {\n Sentry.captureException(error);\n }\n }\n\n setUserContext(userObject: { id?: string; email?: string }) {\n if (Sentry.isInitialized()) {\n Sentry.setUser(userObject);\n }\n this.session.userId = userObject.id?.toString() || this.session.userId;\n }\n\n getSessionId() {\n return Sentry.getReplay()?.getReplayId();\n }\n}\n\nlet apm: Apm;\n\ninterface Session {\n userId: string;\n pageLoadId: string;\n merchantId?: string;\n}\n\nconst initSession = (): Session => {\n const getRandomString = (len: number): string => {\n const characters = '0123456789abcdef';\n let str = '';\n for (let i = 0; i < len; i++) {\n str += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return str;\n };\n\n // Check if we have an authenticated user ID\n let userId = getUser()?.ID;\n\n // Check if we already stored an ID locally\n if (!userId) {\n userId = window.localStorage.getItem('oyster_user_id') || undefined;\n }\n\n // Otherwise, generate an ID and store it\n if (!userId) {\n userId = getRandomString(24);\n window.localStorage.setItem('oyster_user_id', userId);\n }\n\n return {\n userId,\n pageLoadId: getRandomString(24)\n };\n};\n\nexport const init = (): void => {\n const session = initSession();\n\n Sentry.init({\n dsn: config().secrets.sentryDsn,\n integrations: [\n Sentry.browserTracingIntegration(),\n Sentry.browserProfilingIntegration(),\n Sentry.captureConsoleIntegration({\n levels: ['error']\n }),\n Sentry.extraErrorDataIntegration(),\n Sentry.httpClientIntegration(),\n Sentry.reactRouterV5BrowserTracingIntegration({ history }),\n Sentry.replayIntegration({\n networkDetailAllowUrls: [\n window.location.origin,\n config().backendBaseUrl.api,\n config().backendBaseUrl.integrate,\n config().backendBaseUrl.merchant,\n config().backendBaseUrl.metrics,\n config().backendBaseUrl.statics\n ],\n networkCaptureBodies: true,\n networkRequestHeaders: ['X-Merchant-Integration-ID', 'X-Merchant-API-Key'],\n maskAllText: false,\n blockAllMedia: false\n }),\n Sentry.sessionTimingIntegration()\n ],\n\n autoSessionTracking: true,\n enabled: true,\n enableTracing: true,\n\n environment: config().environment,\n release: config().serviceVersion,\n\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n tracesSampleRate: 1.0,\n\n // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled\n tracePropagationTargets: [\n config().backendBaseUrl.api,\n config().backendBaseUrl.integrate,\n config().backendBaseUrl.merchant,\n config().backendBaseUrl.metrics,\n config().backendBaseUrl.statics\n ],\n\n // Capture Replay for 100% of all sessions,\n // plus for 100% of sessions with an error\n replaysSessionSampleRate: 1.0,\n replaysOnErrorSampleRate: 1.0\n });\n\n apm = new Apm(session);\n};\n\n// eslint-disable-next-line\n// @ts-ignore\nexport default (): Apm => apm;\n","import { GraphQLErrors } from '@apollo/client/errors';\nimport { ValidationError } from '@oysterjs/types';\n\nexport enum ErrorCode {\n unknown = '',\n unsupportedGeo = 'unsupported_geo',\n riskRejected = 'risk_rejected',\n alreadySubmitted = 'already_submitted',\n submissionFailed = 'submission_failed'\n}\n\nexport enum ErrorType {\n unknown = '',\n\n networkError = 'js.fetch.network_error',\n unknownApiError = 'js.api.unknown_error',\n\n validationError = 'validation_error',\n processingError = 'processing_error',\n underwritingError = 'underwriting_error',\n preconditionFailed = 'precondition_failed'\n}\n\nexport interface WrappedErrorOptions {\n code: ErrorCode;\n type: ErrorType;\n details?: string;\n metadata?: Record;\n cause?: WrappedError | Error;\n}\n\nexport class WrappedError extends Error {\n constructor(\n message: string,\n public opts: WrappedErrorOptions = { code: ErrorCode.unknown, type: ErrorType.unknown }\n ) {\n super(message);\n this.name = 'WrappedError';\n }\n\n type = () => {\n return this.opts.type;\n };\n\n code = () => {\n return this.opts.code;\n };\n\n details = () => {\n return this.opts.details;\n };\n\n cause = () => {\n return this.opts.cause;\n };\n\n metadata = () => {\n return this.opts.metadata || {};\n };\n\n getValidationError = () => {\n return {\n Field: this.opts.metadata?.Field || '',\n SubField: this.opts.metadata?.SubField || '',\n Message: this.message\n };\n };\n\n getGraphQLSchemaValidationError = () => {\n return {\n field: this.opts.metadata?.Field || '',\n subField: this.opts.metadata?.SubField || '',\n message: this.message\n };\n };\n\n // Figure out how to type this better\n // eslint-disable-next-line\n static fromApiError(err: any): WrappedError {\n const x = new WrappedError(err.Message, {\n code: err.Code || ErrorCode.unknown,\n type: err.Type || ErrorType.unknown,\n metadata: {\n Field: err.Field,\n SubField: err.SubField,\n RequestID: err.RequestID\n }\n });\n return x;\n }\n\n static fromValidationError(validationError: ValidationError): WrappedError {\n return new WrappedError(validationError.Message, {\n code: ErrorCode.unknown,\n type: ErrorType.validationError,\n metadata: {\n Field: validationError.Field,\n SubField: validationError.SubField || ''\n }\n });\n }\n\n static fromGraphQLError(errors: GraphQLErrors): WrappedError {\n return new WrappedError(errors.join(''), {\n code: ErrorCode.unknown,\n type: ErrorType.networkError\n });\n }\n\n // Figure out how to type this better\n // eslint-disable-next-line\n static asWrappedError(err: any): WrappedError {\n // TODO: this does not yet handle converting non-WrappedErrors\n // to WrappedError, as Javascript is weird about `instanceof`\n // mixed with catch blocks.\n return err;\n }\n}\n","import { getToken, resetToken } from '@oysterjs/core/auth';\nimport config from '@oysterjs/core/config';\nimport { ErrorCode, ErrorType, WrappedError } from '@oysterjs/core/errors';\n\nexport const getEncodedQueryString = (m: Record): string => {\n const params = new URLSearchParams();\n Object.entries(m).forEach(([key, value]) => {\n if (value) {\n params.set(key, value.toString());\n }\n });\n\n return params.toString();\n};\n\ninterface RequestOpts extends RequestInit {\n redirectUrl?: string;\n disableUnauthorizedRedirect?: boolean;\n}\n\nexport const Get = (path: RequestInfo, init?: RequestOpts) =>\n request(path, undefined, { ...init, method: 'GET' });\n\nexport const Post = (path: RequestInfo, json?: unknown, opts?: RequestOpts) =>\n request(path, json ? JSON.stringify(json) : undefined, { ...opts, method: 'POST' });\n\nexport const Put = (path: RequestInfo, json?: unknown, opts?: RequestOpts) =>\n request(path, json ? JSON.stringify(json) : undefined, { ...opts, method: 'PUT' });\n\nexport const Delete = (path: RequestInfo, json?: unknown, opts?: RequestOpts) =>\n request(path, json ? JSON.stringify(json) : undefined, { ...opts, method: 'DELETE' });\n\nconst request = (path: RequestInfo, json: string | undefined, opts: RequestOpts): Promise =>\n fetch(config().backendBaseUrl.api + path, {\n ...opts,\n mode: 'cors',\n credentials: 'include',\n headers: {\n ...(json ? { 'Content-Type': 'application/json' } : {}),\n ...(getToken() ? { Authorization: `Bearer ${getToken()}` } : {}),\n ...opts.headers\n },\n body: opts.body || json\n })\n .catch((err) => {\n throw new WrappedError('Error performing network request', {\n code: ErrorCode.unknown,\n type: ErrorType.networkError,\n details: `Error performing ${opts.method} ${path}`,\n cause: err\n });\n })\n .then((res) =>\n res.json().then((data) => {\n if (res.status < 300 && data) {\n return data;\n }\n\n if (!opts.disableUnauthorizedRedirect && res.status === 401) {\n resetToken(opts.redirectUrl);\n return data;\n }\n\n if (data.Error) {\n throw WrappedError.fromApiError(data.Error);\n }\n\n throw new WrappedError(`An unknown error with status ${res.status} occurred`, {\n type: ErrorType.unknownApiError,\n code: ErrorCode.unknown,\n details: data.toString()\n });\n })\n );\n","import { AccountSummary, Policy } from '@oysterjs/types';\nimport { Get, Post } from './base';\n\nexport const getPolicies = () => Get<{ Policies: Policy[] }>('/user/policies');\n\nexport const getPolicy = (policyId: string) =>\n Get<{ Policy: Policy }>(`/user/policies/${policyId}`);\n\nexport const getAccountSummary = (redirectUrl?: string) =>\n Get('/user/account', { redirectUrl });\n\nexport const userIdentify = (email?: string, firstName?: string, lastName?: string) =>\n Post<{ Token: string; Email: string }>(`/user/identify`, {\n Email: email,\n FirstName: firstName,\n LastName: lastName\n });\n","import { Claim, ValidationError } from '@oysterjs/types';\nimport { Delete, Get, Post, Put } from './base';\n\nexport const getClaims = () => Get<{ Claims: Claim[] }>('/user/claims');\n\nexport const getClaim = (claimId: string) => Get<{ Claim: Claim }>(`/user/claims/${claimId}`);\n\nexport const createClaim = (policyId: string, productId: string) =>\n Post<{ Claim: Claim }>('/user/claims', { PolicyID: policyId, ProductID: productId });\n\nexport const resetClaim = (claimId: string, policyId: string, productId: string) =>\n Post<{ Claim: Claim }>(`/user/claims/${claimId}/reset`, {\n PolicyID: policyId,\n ProductID: productId\n });\n\nexport const updateClaim = (claim: Claim): Promise<{ Claim: Claim; NextError?: ValidationError }> =>\n Put<{ Claim: Claim; NextError?: ValidationError }>(`/user/claims/${claim.ID}`, { Claim: claim });\n\nexport const deleteClaim = (claimId: string) => Delete(`/user/claims/${claimId}`);\n\nexport const submitClaim = (claimId: string) =>\n Post<{ Claim: Claim }>(`/user/claims/${claimId}/submit`);\n\nexport const createClaimAttachments = (claimId: string, group: string, files: File[]) => {\n const form = new FormData();\n form.set('group', group);\n files.forEach((file) => form.append('files[]', file));\n return Post<{ Claim: Claim }>(`/user/claims/${claimId}/attachments`, undefined, { body: form });\n};\n\nexport const deleteClaimAttachment = (claimId: string, attachmentId: string) =>\n Delete(`/user/claims/${claimId}/attachments/${attachmentId}`);\n","export const Spinner = ({\n color,\n size,\n centerHorizontal\n}: {\n color?: string;\n size?: number;\n centerHorizontal?: boolean;\n}): JSX.Element => (\n \n \n \n \n \n);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport { Spinner } from '../Spinner';\n\ninterface Props {\n request: Promise;\n exactlyOnce?: boolean;\n hideSpinner?: boolean;\n inline?: boolean;\n children: (data: T) => JSX.Element | null;\n}\n\nexport const LoadableContainer = styled.div<{ inline?: boolean }>`\n width: 100%;\n box-sizing: border-box;\n ${(props) =>\n props.inline\n ? ''\n : `\n padding: 40px 0px;display: flex;\n flex-direction: row;\n justify-content: center;\n `}\n`;\n\nexport function Loadable(props: Props): JSX.Element | null {\n const [data, setData] = React.useState(null);\n\n React.useEffect(() => {\n if (!props.exactlyOnce || !data) {\n props.request.then(setData);\n }\n }, [props.request]);\n\n if (!data) {\n return props.hideSpinner ? null : (\n \n \n \n );\n }\n\n return props.children(data);\n}\n","///////////////////////////////////////////////////////\n// SDK-specific types //\n///////////////////////////////////////////////////////\n\nexport type EcommercePlatform = 'shopify' | 'magento' | 'custom';\n\nexport type DeepPartial = T extends Date | File | number | string\n ? T\n : T extends object\n ? {\n [P in keyof T]?: DeepPartial;\n }\n : T;\n\nexport interface InitOptions {\n apiKey: string;\n integrationID?: string;\n platform?: EcommercePlatform;\n apiBaseUrl?: string;\n metricsBaseUrl?: string;\n staticsBaseUrl?: string;\n environment?: string;\n}\n\n///////////////////////////////////////////////////////\n// Types corresponding to product models //\n///////////////////////////////////////////////////////\n\nexport enum ProductType {\n bike = 'bike',\n offroad = 'offroad_vehicle',\n motorcycle = 'motorcycle',\n jewelry = 'jewelry',\n phone = 'phone',\n electronics = 'electronics'\n}\n\nexport enum AdditionalMerchantProductType {\n collectibles = 'collectibles',\n furniture = 'furniture',\n fashion = 'fashion',\n food_and_beverage = 'food_and_beverage',\n beauty_and_supplements = 'beauty_and_supplements',\n outdoor_sports = 'outdoor_sports',\n other = 'other'\n}\n\nexport type MerchantProductType = ProductType | AdditionalMerchantProductType;\n\nexport interface Product {\n ID?: string;\n Type: ProductType;\n SKU: string;\n Name: string;\n Description: string;\n ImageURL: string;\n Quantity: number;\n Price: Price;\n Pending?: boolean;\n HasNotReceived?: boolean;\n Details: T;\n}\n\nexport enum BikeType {\n roadTrack = 'road_track',\n mountain = 'mountain',\n hybridCruiser = 'hybrid_cruiser',\n recumbent = 'recumbent',\n tandem = 'tandem',\n bmx = 'bmx',\n tricycle = 'tricycle',\n electric = 'electric'\n}\n\nexport enum BikeFrameType {\n none = '',\n aluminum = 'aluminum',\n carbonFiber = 'carbon_fiber',\n steel = 'steel',\n titatium = 'titanium',\n wood = 'wood',\n other = 'other'\n}\n\nexport enum BikePowerSource {\n none = '',\n throttleAssist20MPH = 'throttle_assist_20_mph',\n pedalAssist20MPH = 'pedal_assist_20_mph',\n pedalAssist28MPH = 'pedal_assist_28_mph',\n other = 'other'\n}\n\nexport enum MotorProductType {\n // Motorcycles\n preferred_tour = 'preferred_tour',\n tour = 'tour',\n sport_tour = 'sport_tour',\n non_touring_bmw = 'non_touring_bmw',\n big_twin = 'big_twin',\n low_surcharge = 'low_surcharge',\n high_surcharge = 'high_surcharge',\n professional_racing_surcharge = 'professional_racing_surcharge',\n naked_sport = 'naked_sport',\n sportster = 'sportster',\n cruiser = 'cruiser',\n high_performance_cruiser = 'high_performance_cruiser',\n moped = 'moped',\n scooter = 'scooter',\n street_bike = 'street_bike',\n off_road_trail_bike = 'off_road_trail_bike',\n tour_trike = 'tour_trike',\n\n // Offroad vehicles\n sport_performance_atv = 'sport_performance_atv',\n recreation_utility_atv = 'recreation_utility_atv',\n super_utility_atv = 'super_utility_atv',\n golf_cart = 'golf_cart'\n}\n\nexport enum ActivationSource {\n TrackingNumber = 'TrackingNumber',\n SetStartDate = 'SetStartDate',\n ManuallyActivate = 'ManuallyActivate'\n}\n\nexport interface ActivationTrigger {\n Source: ActivationSource;\n TrackingNumber?: string;\n StartDate?: string;\n}\n\nexport interface MotorProduct {\n ModelYear: string;\n PurchaseYear: string;\n\n Type: MotorProductType;\n Make: string;\n Model: string;\n VIN: string;\n CCSize: string;\n\n EstimatedAnnualMileage: string;\n AccessoryValue?: Price;\n\n HasElectronicAlarm?: boolean;\n HasTrackingSystem?: boolean;\n HasLienHolder?: boolean;\n IsPerformanceEnhanced?: boolean;\n IsStructurallyModified?: boolean;\n}\n\nexport const MotorProductValidationKeys: (keyof MotorProduct)[] = [\n 'ModelYear',\n 'PurchaseYear',\n\n 'Type',\n 'Make',\n 'Model',\n 'VIN',\n 'CCSize',\n\n // 'EstimatedAnnualMileage', - this one is checked on a later page\n 'AccessoryValue'\n];\n\nexport interface BikeProduct {\n Type: BikeType;\n FrameType: BikeFrameType;\n PowerSource?: BikePowerSource;\n CanUnlock?: boolean;\n IsPendingSerialNumber?: boolean;\n StartLater?: boolean;\n\n ModelYear: string;\n PurchaseYear: string;\n Make: string;\n Model: string;\n FrameSerialNumber: string;\n IsSecondHandPurchase: boolean;\n\n TotalInsuredValue?: Price;\n}\n\nexport const BikeProductValidationKeys: (keyof BikeProduct)[] = [\n 'Type',\n 'FrameType',\n 'PowerSource',\n 'CanUnlock',\n 'ModelYear',\n 'PurchaseYear',\n 'Make',\n 'Model',\n 'FrameSerialNumber',\n 'TotalInsuredValue'\n];\n\nexport enum ElectronicsType {\n laptop = 'laptop',\n iPhone = 'iphone',\n smartPhone = 'smartphone',\n iPad = 'ipad',\n smallElectronics = 'small_electronics',\n gamingSystem = 'gaming_system',\n eReaderKindle = 'ereader_kindle',\n tablet = 'tablet'\n}\n\nexport interface ElectronicsProduct {\n Type: ElectronicsType;\n Manufacturer: string;\n Model: string;\n SerialNumber: string;\n PurchaseReceiptFileIDs?: string[];\n\n _PurchaseReceiptFiles?: File[];\n}\n\nexport const ElectronicsProductValidationKeys: (keyof ElectronicsProduct)[] = [\n 'Type',\n 'Manufacturer',\n 'Model',\n 'SerialNumber'\n];\n\nexport interface JewelryProduct {\n Type: string;\n Metal: string;\n Brand: string;\n StoneType: string;\n StoneWeight: string;\n StoneCarat: string;\n StoneColor: string;\n StoneClarity: string;\n InSafe: boolean;\n IsNewPurchase: boolean;\n AppraisalFileIDs?: string[];\n\n _AppraisalFiles?: File[];\n}\n\nexport const JewelryProductValidationKeys: (keyof JewelryProduct)[] = [\n 'Type',\n 'Metal',\n 'Brand',\n 'StoneType',\n 'StoneWeight',\n 'StoneCarat',\n 'StoneColor',\n 'StoneClarity'\n];\n\n///////////////////////////////////////////////////////\n// Types corresponding to policy models //\n///////////////////////////////////////////////////////\n\nexport enum Cadence {\n year = 'year',\n month = 'month'\n}\n\nexport enum PolicyState {\n unknown = '',\n offerSubmitted = 'offer_submitted',\n applicationSubmitted = 'application_submitted',\n quoteActive = 'quote_active',\n quoteSigned = 'quote_signed',\n policyBinding = 'policy_binding',\n policyInforce = 'policy_inforce',\n policyCanceled = 'policy_canceled',\n policyExpired = 'policy_expired'\n}\n\nexport enum PolicyType {\n bike = 'bike',\n markelBike = 'markel_bike',\n markelOffroad = 'markel_offroad',\n markelMotorcycle = 'markel_motorcycle',\n minicoJewelry = 'minico_jewelry',\n chubbJewelry = 'chubb_jewelry',\n worthAveElectronics = 'worth_ave_electronics'\n}\n\nexport interface PolicyTableValues {\n CreatedAt: Date;\n InsuredItems: Product[];\n}\n\nexport interface Policy {\n ID: string;\n Name: string;\n UserID: string;\n MerchantID: string;\n\n Type: PolicyType;\n State: PolicyState;\n\n InsuredItems: Product[];\n Underwriting: Underwriting;\n Coverage: Coverage;\n ReferralChannelInfo?: PolicyReferralChannelInfo;\n\n Price?: Price;\n PaymentCadence: Cadence;\n DisableAutoRenew: boolean;\n\n CreatedAt: Date;\n StartedAt: Date;\n ExpiresAt: Date;\n}\n\nexport interface Price {\n Amount: number;\n Currency: string;\n}\n\nexport interface Coverage {\n Deductible: DiscreteOption;\n Options: Option[];\n ActivationTrigger?: ActivationTrigger;\n}\n\nexport interface PolicyReferralChannelInfo {\n ReferralChannel: ReferralChannelType;\n ReferralSubChannel: ReferralSubChannel;\n Settings: MerchantReferralSettings | MarketingCampaignSettings | DirectReferralSettings;\n}\n\nexport enum ReferralSubChannel {\n product = 'ProductPage',\n addToCartButton = 'AddToCartButton',\n cart = 'CartPage',\n confirm = 'OrderConfirmationPage',\n defaultInsurance = 'DefaultInsurance',\n unknown = ''\n}\n\nexport interface MerchantReferralSettings {\n MerchantID: string;\n IntegrationID: string;\n}\n\nexport interface MarketingCampaignSettings {\n Source: string;\n Campaign: string;\n Term: string;\n Medium: string;\n PageHistory: string[];\n}\n\nexport interface DirectReferralSettings {\n Parameters: string;\n PageHistory: string[];\n}\n\nexport enum ReferralChannelType {\n ReferralChannelMerchant = 'Merchant',\n ReferralChannelMarketingCampaign = 'Marketing Campaign',\n ReferralChannelDirect = 'Direct'\n}\n\nexport enum BikeUsageType {\n casual = 'casual',\n fitness = 'fitness',\n commute = 'commute',\n competition = 'competition'\n}\n\nexport enum MarkelPersonalCharacteristicFlag {\n homeowner = 'homeowner',\n motorcycle_endorsed = 'motorcycle_endorsed',\n taken_safety_course = 'taken_safety_course',\n taken_mature_driver_course = 'taken_mature_driver_course'\n}\n\nexport interface MarkelMotorCriteria {\n ZipCode: string;\n\n YearsOfExperience: string;\n MinorViolations: string;\n MajorViolations: string;\n AtFaultAccidents: string;\n\n DriversLicenseNumber: string;\n DriversLicenseState: string;\n\n PersonalCharacteristicFlags: MarkelPersonalCharacteristicFlag[];\n}\n\nexport interface BikeCriteria {\n ZipCode: string;\n UsageTypes: BikeUsageType[];\n\n StorageAddressLine1: string;\n StorageAddressLine2: string;\n StorageCity: string;\n StorageState: string;\n StorageZipCode: string;\n ResidentialIsStorage: boolean;\n}\n\nexport interface MarkelBikeCriteria {\n ZipCode: string;\n UsageTypes: BikeUsageType[];\n\n StorageAddressLine1: string;\n StorageAddressLine2: string;\n StorageCity: string;\n StorageState: string;\n StorageZipCode: string;\n ResidentialIsStorage: boolean;\n YearsOfExperience: string;\n}\n\nexport enum JewelryUnderwritingFlag {\n default = 'default',\n exhibition = 'exhibition',\n bankruptcy = 'bankruptcy',\n judgment = 'judgment',\n conviction = 'conviction'\n}\n\nexport enum JewelryStorageLocationFlag {\n central_station_fire = 'central_station_fire',\n burglar_alarm = 'burglar_alarm',\n central_station_burglar_alarm = 'central_station_burglar_alarm',\n deadbolts = 'deadbolts',\n below_ground = 'below_ground',\n off_the_ground = 'off_the_ground',\n near_fire_hydrant = 'near_fire_hydrant',\n flood_zone = 'flood_zone',\n has_doorman = 'has_doorman',\n storage_climate_controlled = 'storage_climate_controlled'\n}\n\nexport interface JewelryPriorLoss {\n lossIdentifier: string;\n dateOfLoss: Date;\n lossAmount: number;\n description: string;\n}\n\nexport interface JewelryCriteria {\n ZipCode: string;\n PriorLosses: JewelryPriorLoss[];\n UnderwritingFlags: JewelryUnderwritingFlag[];\n UnderwritingJustification: string;\n\n StorageStreetAddress: string;\n StorageAptFloor: string;\n StorageAptUnit: string;\n StorageCity: string;\n StorageState: string;\n StorageZipCode: string;\n StorageIsResidential: boolean;\n\n ConstructionType: string;\n ConstructionYear: string;\n StorageLocationFlags: JewelryStorageLocationFlag[];\n\n HasAdditionalInsured: boolean;\n AdditionalInsuredFirstName: string;\n AdditionalInsuredLastName: string;\n\n IsCurrentlyInsured: boolean;\n CurrentInsurerName: string;\n}\n\nexport interface ChubbAddress {\n line1: string;\n line2: string;\n city: string;\n postalCode: string;\n stateOrProvinceName: string;\n}\n\nexport interface ChubbLoss {\n lossIdentifier: string;\n causeOfLossCode: string;\n sourceOfLossCode: string;\n causeOfLossDescription: string;\n dateOfLoss: string;\n lossPaidDate: string;\n lossPaidAmount: number;\n lossType: string;\n lossCatastrophe: boolean;\n lossStatus: string;\n}\nexport interface ChubbJewelryCriteria {\n ZipCode: string;\n PriorLosses: ChubbLoss[];\n\n StorageAddress: ChubbAddress;\n StorageIsResidential: boolean;\n\n ConstructionType: string;\n ResidenceType: string;\n\n AcceptConsumerDisclosure: string;\n\n HasAdditionalInsured: boolean;\n AdditionalInsuredFirstName: string;\n AdditionalInsuredLastName: string;\n AdditionalInsuredOccupation: string;\n AdditionalInsuredOccupationDetails: string;\n AdditionalInsuredDateOfBirth: { Day: string; Month: string; Year: string };\n\n IsCoveredItemsElevated: boolean;\n IsStoredInClimateControlledStorage: boolean;\n\n OccupationDetails: string;\n OtherOccupationDetails: string;\n\n CentralStationFireAlarm: boolean;\n TwentyFourHourSecurity: boolean;\n SignalContinuity: boolean;\n FullTimeCaretaker: boolean;\n GatedCommunity: boolean;\n GatedCommunityPatrol: boolean;\n FiftyPercentJewelryKeptInVault: boolean;\n SafeAtHome: boolean;\n HasInHouseEmployees: boolean;\n InHouseEmployees: string;\n InsuredTravel: string;\n AverageJewelryValueOnTravel: number;\n JewelrySafeguardOnTravel: string;\n JewelrySafeguardAtHomeInsuredOnTravel: string;\n}\n\nexport interface Underwriting {\n Criteria:\n | MarkelMotorCriteria\n | BikeCriteria\n | MarkelBikeCriteria\n | JewelryCriteria\n | ChubbJewelryCriteria;\n Insured: Insured;\n Underwriter?: string;\n}\n\nexport type OptionDetails =\n | BooleanOption\n | DiscreteOption\n | MultiDiscreteOption\n | RangeOption\n | TextOption;\n\nexport enum OptionType {\n boolean = 'boolean',\n discrete = 'discrete',\n multi_discrete = 'multi_discrete',\n range = 'range',\n text = 'text'\n}\n\nexport interface Option {\n ID: string;\n Name: string;\n Description: string;\n Required: boolean;\n Enabled: boolean;\n Type: OptionType;\n Option: OptionDetails;\n}\n\nexport interface BooleanOption {\n ValueLabel: string;\n}\n\nexport interface DiscreteOption {\n Value: string;\n AllowedValues: string[];\n AllowedValueDescriptions: Record;\n}\n\nexport interface MultiDiscreteOption {\n Values: string[];\n AllowedValues: string[];\n AllowedValueDescriptions?: Record;\n}\n\nexport interface RangeOption {\n Value: number;\n MinValue: number;\n MaxValue: number;\n Step: number;\n}\n\nexport interface TextOption {\n Value: string;\n Validators: string[];\n}\n\nexport enum Gender {\n male = 'male',\n female = 'female',\n non_binary = 'non_binary',\n other = 'other'\n}\n\nexport interface Insured {\n FirstName: string;\n LastName: string;\n Email: string;\n Phone?: string;\n Occupation?: string;\n Gender?: Gender;\n MaritalStatus?:\n | 'married'\n | 'single'\n | 'divorced'\n | 'separated'\n | 'widowed'\n | 'civil_union'\n | 'domestic_partnership';\n DateOfBirth?: { Day: string; Month: string; Year: string };\n\n AddressLine1?: string;\n AddressLine2?: string;\n AddressCity?: string;\n AddressState?: string;\n AddressZipCode?: string;\n}\n\n///////////////////////////////////////////////////////\n// Types corresponding to files and metadata //\n///////////////////////////////////////////////////////\n\nexport interface AttachmentFile {\n ID: string;\n Name: string;\n Type: string;\n Size: number;\n\n Attachment?: AttachmentDetails;\n}\n\nexport interface AttachmentDetails {\n FileID: string;\n RefID: string;\n Role: DefaultFileRoles;\n EntityType: string;\n\n CreatedAt: Date;\n UpdatedAt: Date;\n}\n\nexport enum DefaultFileRoles {\n jewelryAppraisal = 'JewelryAppraisal',\n purchaseReceipt = 'PurchaseReceipt',\n\n waiverClaimAttachment = 'WaiverClaimAttachment',\n waiverLDWDocument = 'LossDamageWaiver',\n signedRentalAgreement = 'SignedRentalAgreement',\n merchantRentalPDTA = 'ProgramDescriptionTermsAccepance',\n\n commercialDocument = 'CommercialDocument',\n unknown = 'Unknown'\n}\n\n///////////////////////////////////////////////////////\n// Types corresponding to claim models //\n///////////////////////////////////////////////////////\n\nexport enum ClaimState {\n unknown = '',\n awaitingProcessing = 'awaiting_processing',\n collectingInformation = 'collecting_information',\n settled = 'settled',\n denied = 'denied'\n}\n\nexport enum ClaimType {\n // General claim types\n unknown = '',\n theft = 'theft',\n damage = 'damage', // for electronics: includes cracked screen and spills\n injury = 'injury', // bike only\n liability = 'liability', // bike only\n other = 'other',\n\n // Electronics-specific claim types\n electricalBreakdown = 'electrical_breakdown', // only if caused by lightning\n mechanicalBreakdown = 'mechanical_breakdown', // only if warranty is added\n naturalDisaster = 'natural_disaster', // fire, flood, lightning, natural disaster, wind\n waterDamage = 'water_damage' // includes spill\n}\n\nexport interface Claim {\n ID: string;\n State: ClaimState;\n UserID: string;\n Policy: Policy;\n Product: Product;\n\n Types: ClaimType[];\n Sections: ClaimSection[];\n\n IncidentDate: Date;\n Attachments: Record;\n Data: Record;\n\n CreatedAt: Date;\n UpdatedAt: Date;\n}\n\nexport enum ClaimSectionItemType {\n checkbox = 'checkbox',\n select = 'select',\n text = 'text',\n date = 'date',\n location = 'location',\n longText = 'long_text',\n upload = 'upload',\n confirm = 'confirm'\n}\n\nexport type ClaimSectionItemDetails =\n | CheckboxItem\n | SelectItem\n | TextItem\n | DateItem\n | LocationItem\n | LongTextItem\n | UploadItem\n | ConfirmItem;\n\nexport interface ClaimSection {\n ID: string;\n Field: string;\n Title: string;\n Description: string;\n Items: ClaimSectionItem[];\n}\n\nexport interface ClaimSectionItem {\n SubField: string;\n SubTitle?: string;\n Description?: string;\n Type: ClaimSectionItemType;\n Item: ClaimSectionItemDetails;\n}\n\n// eslint-disable-next-line\nexport interface CheckboxItem {}\n\nexport interface SectionItemDescription {\n Title: string;\n Description: string;\n Value: string;\n Icon: string;\n}\n\nexport interface SelectItem {\n AllowedValues: SectionItemDescription[];\n}\n\nexport interface TextItem {\n Required?: boolean;\n}\n\n// eslint-disable-next-line\nexport interface DateItem {}\n\nexport interface LocationItem {\n AddressField: string;\n LongitudeField: string;\n LatitudeField: string;\n}\n\nexport interface LongTextItem {\n Field: string;\n}\n\nexport interface UploadItem {\n Name: string;\n Description: string;\n AllowedTypes: string[];\n MaxSize: number;\n NumRequired: number;\n}\n\nexport interface Confirmation {\n Title: string;\n Description: string;\n}\n\nexport interface ConfirmItem {\n Confirmation: Confirmation[];\n}\nexport interface ClaimAttachment {\n ID: string;\n Name: string;\n Type: string;\n Size: number;\n URL: string;\n}\n\n///////////////////////////////////////////////////////\n// Types corresponding to user models //\n///////////////////////////////////////////////////////\n\nexport interface User {\n ID: string;\n FirstName: string;\n LastName: string;\n Email: string;\n PublicHandle: string;\n CreatedAt: Date;\n}\n\nexport enum ReferralStatus {\n created = 'created',\n fulfilled = 'fulfilled'\n}\n\nexport interface UserReferral {\n ID: string;\n Referrer: {\n UserID: string;\n FirstName: string;\n LastName: string;\n Email: string;\n BusinessName: string;\n };\n Referee: {\n UserID: string;\n FirstName: string;\n LastName: string;\n Email: string;\n BusinessName: string;\n };\n Status: ReferralStatus;\n Reward: number;\n CreatedAt: Date;\n UpdatedAt: Date;\n}\n\nexport interface AccountSummary {\n User?: User;\n}\n\nexport enum VerificationStatus {\n RequiresInput = 'requires_input',\n Processing = 'processing',\n Verified = 'verified',\n Canceled = 'canceled'\n}\n\n///////////////////////////////////////////////////////\n// Types corresponding to general models //\n///////////////////////////////////////////////////////\n\nexport interface ValidationError {\n Field: string;\n SubField?: string;\n Message: string;\n}\n\n///////////////////////////////////////////////////////\n// Types corresponding to merchant models //\n///////////////////////////////////////////////////////\n\nexport interface Address {\n AddressLine1: string;\n AddressLine2?: string;\n\n // Level 1 administrative division depending on country. For example, this is\n // the state in the U.S., the province in Canada, etc.\n Zone: string;\n\n // Level 2 administrative division depending on country. For example, this is\n // the county in the U.S., prefectural city in China, division in India, etc.\n SubZone?: string;\n\n // Level 3 administrative division depending on country. For example, this is\n // the city in the U.S., a muncipality in Austria, a ward in Singapore, etc.\n City: string;\n\n // Country-specific mailing identifier, e.g. ZIP Code in the U.S., Post Code\n // in the U.K., etc.\n PostalCode: string;\n}\n\nexport enum PaymentMethodType {\n Electronic = 'Electronic',\n Check = 'Check',\n Unknown = ''\n}\n\nexport enum SalesChannelType {\n Online = 'Online',\n Dealer = 'Dealer',\n InStore = 'InStore',\n Rental = 'Rental'\n}\n\nexport enum OnlineSalesChannelType {\n Shopify = 'Shopify',\n WooCommerce = 'WooCommerce',\n BigCommerce = 'BigCommerce',\n Lightspeed = 'Lightspeed eCommerce',\n Checkfront = 'Checkfront',\n Adobe = 'Adobe Commerce (Magento)',\n Custom = 'Custom',\n Other = 'Other'\n}\n\nexport enum InStoreSalesChannelType {\n ShopifyPOS = 'Shopify PoS',\n LightspeedRSeries = 'Lightspeed R-Series',\n LightspeedXSeries = 'Lightspeed X-Series',\n Ascend = 'Ascend',\n Edge = 'EDGE',\n Square = 'Square',\n Other = 'Other'\n}\n\nexport enum BusinessOperationType {\n RetailECommerce = 'Retail or E-Commerce',\n Wholesale = 'Wholesale',\n Manufacturing = 'Manufacturing',\n ServiceOrRepair = 'Service or Repair',\n Rental = 'Rental',\n Other = 'Other'\n}\n\nexport enum BusinessInsuranceType {\n BusinessOwners = 'Business Owners',\n CommercialAuto = 'Commercial Auto',\n Cyber = 'Cyber',\n DirectorsAndOfficers = 'Directors and Officers',\n GeneralLiability = 'General Liability',\n JewelersBlock = 'Jewelers Block',\n Other = 'Other',\n Property = 'Property',\n Rental = 'Rental',\n ShippingAndTransportation = 'Shipping and Transportation',\n UmbrellaExcess = 'Umbrella or Excess',\n WorkersCompensation = 'Workers Compensation'\n}\n\nexport enum RentalProductType {\n BikesAndEbikes = 'Bikes and eBikes',\n Kayaks = 'Kayaks',\n Other = 'Other',\n Paddleboards = 'Paddleboards'\n}\n\nexport interface Personalization {\n // Toggle the various types of insurance in the onboarding flow\n BusinessInsuranceEnabled: boolean;\n ProductInsuranceEnabled: boolean;\n RentalInsuranceEnabled: boolean;\n\n // Business insurance settings\n BusinessOperationTypes?: BusinessOperationType[];\n BusinessOperationTypesOtherDesc: string;\n\n BusinessRevenueBreakdownRetail: string;\n BusinessRevenueBreakdownWholesale: string;\n BusinessRevenueBreakdownManufacturing: string;\n BusinessRevenueBreakdownServiceOrRepair: string;\n BusinessRevenueBreakdownRental: string;\n BusinessRevenueBreakdownOther: string;\n BusinessRevenueBreakdownRentalPercentGuided: string;\n\n BusinessTotalPayroll: string;\n\n BusinessManufactureOrWholesaleOwnBrand?: boolean;\n\n BusinessInsuranceTypes?: BusinessInsuranceType[];\n BusinessInsuranceTypesOtherDesc: string;\n\n BusinessNumberOfPriorLosses?: string;\n\n BusinessInsuranceFilloutFormSubmitted: boolean;\n\n // Personal insurance settings\n SalesChannels?: SalesChannelType[];\n\n OnlineSalesChannelType?: OnlineSalesChannelType;\n OnlineSalesChannelName?: string;\n ShopifyAdminURL?: string;\n\n InStoreSalesChannelType?: InStoreSalesChannelType;\n InStoreSalesChannelName?: string;\n\n RentalChannelName?: string;\n\n ProductAnnualRevenue: string;\n\n // Rental insurance settings\n RentalProductTypes?: RentalProductType[];\n RentalProductTypeOtherDesc: string;\n\n RentalMotorizedAssetsExceedEBikeClassification?: boolean;\n\n RentalMaximumAssetValue: string;\n RentalAverageAssetValue: string;\n\n RentalAnnualRevenue: string;\n RentalAnnualVolume: string;\n\n RentalPlatformName: string;\n RentalPointOfSaleName: string;\n}\n\nexport interface BusinessProfile {\n Name: string;\n DBA: string;\n Email: string;\n Phone: string;\n Domain: string;\n Address: Address;\n PaymentMethod: PaymentMethodType;\n\n ProductVerticals?: ProductType[];\n Personalization: Personalization;\n}\n\nexport interface Merchant {\n ID: string;\n MercuryRecipientID: string;\n BusinessProfile: BusinessProfile;\n CreatedAt: Date;\n PublicHandle: string;\n}\n\nexport interface MerchantUser {\n ID: string;\n MerchantID: string;\n\n FirstName: string;\n LastName: string;\n Email: string;\n Phone: string;\n\n ActivationToken?: string;\n CreatedAt: Date;\n}\n\nexport interface MerchantIntegration {\n ID: string;\n Type: MerchantIntegrationType;\n Settings: MerchantIntegrationSettings;\n Status: MerchantIntegrationStatus;\n}\n\nexport enum MerchantIntegrationStatus {\n active = 'Active',\n pending = 'Pending',\n disabled = 'Disabled',\n inactive = 'Inactive'\n}\n\nexport enum MerchantIntegrationType {\n qr_code = 'QRCode',\n referral_link = 'ReferralLink',\n embeddable_marketing_page = 'EmbeddableMarketingPage',\n shopify = 'Shopify',\n custom = 'Custom',\n checkfront = 'Checkfront',\n lsretail_rseries = 'LSRetailRSeries',\n woocommerce = 'WooCommerce',\n not_available = ''\n}\n\nexport type MerchantIntegrationSettings =\n | ShopifyIntegrationSettings\n | LSRetailRSeriesIntegrationSettings\n | QRCodeIntegrationSettings\n | ReferralLinkIntegrationSettings\n | EmbeddableMarketingPageIntegrationSettings\n | WooCommerceIntegrationSettings\n | CustomIntegrationSettings;\n\nexport interface ShopifyIntegrationSettings {\n ShopName: string;\n InsuranceProductID?: string;\n CartPageWidgetEnabled: boolean;\n OrderConfirmationPageWidgetEnabled: boolean;\n ProductPageAddToCartTriggerEnabled: boolean;\n ProductPageWidgetEnabled: boolean;\n UseOysterProductAsIndicator?: boolean;\n OrderConfirmationPageWidgetFirstLoad: Date;\n}\n\nexport interface LSRetailRSeriesIntegrationSettings {\n AccountID: string;\n AccountName: string;\n EmailMarketingEnabled: boolean;\n EmailMarketingRequiresOptIn: boolean;\n EmailMarketingCategoriesEnabled: string[] | null;\n}\n\nexport interface QRCodeIntegrationSettings {\n ReferralLink: string;\n BrandColor?: string;\n FirstDownload?: string;\n}\n\nexport interface ReferralLinkIntegrationSettings {\n ReferralLink: string;\n BrandColor?: string;\n FirstPageLoad?: string;\n}\n\nexport interface EmbeddableMarketingPageIntegrationSettings {\n ReferralLink: string;\n FirstPageLoad?: string;\n}\n\nexport interface WooCommerceIntegrationSettings {\n BaseURL: string;\n OysterVirtualProductID?: number;\n CartPageWidgetEnabled: boolean;\n OrderConfirmationPageWidgetEnabled: boolean;\n ProductPageAddToCartTriggerEnabled: boolean;\n ProductPageWidgetEnabled: boolean;\n}\n\nexport interface CustomIntegrationSettings {\n Data: string;\n}\n\nexport interface MerchantRentalConfiguration {\n ID: string;\n MerchantID: string;\n Details: MerchantRentalConfigurationDetails;\n}\n\nexport interface PublicMerchantRentalConfiguration {\n BillingMode: BillingMode;\n UnifiedWaiverFlowEnabled: boolean;\n AutoRenewWaiver: boolean;\n}\n\nexport enum BillingMode {\n Customer = 'Customer',\n Merchant = 'Merchant'\n}\n\nexport interface MerchantRentalConfigurationDetails {\n BillingMode: BillingMode;\n Pricing: RentalPricingConfiguration;\n State: RentalPolicyState;\n PolicyDocument: AttachmentFile;\n AutoRenewWaiver: boolean;\n UnifiedWaiverFlowEnabled: boolean;\n}\n\nexport enum RentalPolicyState {\n unknown = 'Unknown',\n registered = 'Registered',\n submitted = 'Submitted',\n approved = 'Approved',\n approved_blanket = 'ApprovedBlanketPolicy',\n denied = 'Denied'\n}\n\nexport interface RentalPricingConfiguration {\n Currency: string;\n AssetValueUnitDenominator: number;\n DailyRatingPerValueUnit: number;\n WeeklyRatingPerValueUnit: number;\n MonthlyRatingPerValueUnit: number;\n MinimumPremium: number;\n\n MerchantFeePercent: number;\n MerchantFeeAbs: number;\n MerchantDeductible: number;\n PlatformFeePercent: number;\n PlatformFeeAbs: number;\n}\n\nexport enum MercuryPaymentTypes {\n electronic = 'electronic',\n check = 'check',\n unknown = ''\n}\n\nexport interface ReferralLinkIntegration {\n MerchantName: string;\n IntegrationID: string;\n IntegrationType: MerchantIntegrationType;\n Settings: ReferralLinkIntegrationSettings;\n Disabled?: boolean;\n}\n\nexport enum FeatureFlagExperiments {\n oneliner_widget = 'force_render_oneliner_widget',\n single_click_flow = 'single_click_flow',\n show_logo_on_widget = 'show_logo_on_widget'\n}\n\nexport interface FeatureFlag {\n ID: string;\n Value: boolean;\n}\n\nexport enum MerchantAppType {\n rental = 'rental',\n unknown = ''\n}\n\nexport interface WaiverEntry {\n Waiver?: RentalWaiver;\n Booking?: RentalBooking;\n}\n\nexport enum WaiverState {\n pending = 'Pending',\n canceled = 'Canceled',\n active = 'Active',\n expired = 'Expired',\n upcoming_renewal = 'UpcomingRenewal',\n renewal_canceled = 'RenewalCanceled',\n unknown = ''\n}\n\nexport interface RentalWaiver {\n ID: string;\n MerchantID: string;\n RentalBookingID: string;\n State: WaiverState;\n Details: WaiverDetails;\n}\n\nexport interface WaiverDetails {\n BillingMode: BillingMode;\n WaiverReferenceNumber: string;\n Assets: WaiverAsset[];\n Premium: WaiverPremium;\n PremiumRounding: Price;\n SignatureReference?: AttachmentFile;\n}\n\nexport interface WaiverAsset {\n // Either Asset or BookingLineItem will be present\n Asset?: RentalAsset;\n Premium: WaiverPremium;\n Accessories: AssetAccessory[];\n BookingLineItem?: BookingLineItem;\n}\n\nexport interface WaiverPremium {\n Currency: string;\n Base: number;\n Total: number;\n\n ProcessingFeeAmount: number;\n MerchantFeeAmount: number;\n OysterFeeAmount: number;\n}\n\nexport interface RentalAsset {\n ID: string;\n MerchantID: string;\n\n Type: AssetType;\n Name: string;\n Description: string;\n Value: number;\n Details: AssetDetails;\n}\n\nexport enum AssetType {\n bicycle = 'Bicycle',\n kayak = 'Kayak',\n paddleboard = 'Paddleboard',\n scooter = 'Scooter',\n motorcycle = 'Motorcycle',\n atv = 'ATV',\n other = 'Other'\n}\n\nexport interface AssetDetails {\n SerialNumber: string;\n AvailableAccessories: AssetAccessory[];\n}\n\nexport interface AssetAccessory {\n Name: string;\n Value: number;\n}\n\nexport interface RentalBooking {\n ID: string;\n MerchantID: string;\n\n State: RentalBookingState;\n Details: RentalBookingDetails;\n StartTime: Date;\n EndTime: Date;\n}\n\nexport enum RentalBookingState {\n Unknown = '',\n Confirmed = 'Confirmed'\n}\n\nexport interface BookingLineItem {\n Name: string;\n SKU: string;\n ExternalID: string;\n SerialNumber: string;\n StartDate: Date;\n EndDate: Date;\n Total: number;\n SubTotal: number;\n TaxTotal: number;\n Quantity: number;\n}\n\nexport interface RentalBookingDetails {\n BookingReference: string;\n Insured: Insured;\n Assets?: RentalAsset[];\n Accessories: AssetAccessory[];\n AutoRenew: boolean;\n BookingPlatformDomain?: string;\n BookingLineItems?: BookingLineItem[];\n}\n\nexport interface RentalClaim {\n ID: string;\n MerchantID: string;\n RentalWaiverID: string;\n\n State: RentalClaimState;\n Details: RentalClaimDetails;\n}\n\nexport enum RentalClaimState {\n unknown = '',\n logged = 'Logged',\n submitted = 'Submitted',\n approved = 'Approved',\n denied = 'Denied',\n requires_information = 'RequiresInformation'\n}\n\nexport enum RentalDamageType {\n unknown = '',\n fire = 'Fire',\n theft = 'Theft',\n water = 'Water',\n accident = 'Accident',\n other = 'Other'\n}\n\nexport interface RentalClaimDetails {\n ClaimNumber: string;\n Assets: WaiverAsset[];\n\n IncidentDate: Date;\n IncidentCause: string;\n IncidentAddress: RentalClaimAddress;\n\n DamageType: RentalDamageType;\n\n PoliceReportFiled?: boolean;\n NameOfEmergencyDepartment?: string;\n ReportOrIncidentNumber?: string;\n SourceOfWaterDamage?: string;\n EquipmentExposedToRain?: boolean;\n HasOtherInsuranceCoverage?: boolean;\n}\n\nexport interface RentalClaimAddress {\n AddressLine1?: string;\n AddressLine2?: string;\n AddressCity?: string;\n AddressState?: string;\n AddressZipCode?: string;\n}\n\nexport enum TransactionType {\n credit = 'Credit',\n debit = 'Debit'\n}\n\nexport enum TransactionState {\n created = 'Created',\n pending = 'Pending',\n success = 'Success',\n failure = 'Failure',\n canceled = 'Canceled',\n unknown = ''\n}\n\nexport enum TransactionProcessor {\n stripe = 'Stripe',\n mercury_ach = 'MercuryACH',\n mercury_check = 'MercuryCheck'\n}\n\nexport interface Transaction {\n ID: string;\n PaymentAccountID: string;\n\n Type: TransactionType;\n State: TransactionState;\n Processor: TransactionProcessor;\n ProcessorID: string;\n\n Amount: number;\n Currency: string;\n\n CreatedAt: Date;\n UpdatedAt: Date;\n ClearedAt: Date;\n}\n","import config from '@oysterjs/core/config';\nimport { PolicyType } from '@oysterjs/types';\nimport styled from 'styled-components';\n\nconst FooterStandardContainer = styled.div`\n display: flex;\n justify-content: space-between;\n\n @media (max-width: 500px) {\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n gap: 10px;\n }\n`;\n\nconst FooterContainer = styled.div`\n padding: 20px 40px;\n display: flex;\n flex-direction: column;\n font-size: 0.8em;\n justify-content: space-between;\n gap: 10px;\n`;\n\nconst FooterLinksContainer = styled.div`\n display: flex;\n\n a {\n &:not(:last-child) {\n margin-right: 20px;\n }\n }\n`;\n\nconst OysterCopyright = (props: { color?: string }) => (\n
\n © 2024 Oyster Technologies, Inc.\n
\n);\n\nconst CustomFooter = (props: { policyType?: PolicyType }) => {\n switch (props.policyType) {\n case PolicyType.chubbJewelry:\n return (\n
\n Insurance described is offered by Oyster Insurance Agency, LLC (California license no.\n 6006158). Insurance is underwritten and provided by Federal Insurance Company (Whitehouse\n Station, NJ), a Chubb ® company. Chubb is the marketing name used to refer to\n subsidiaries of Chubb Limited providing insurance and related services. Coverage is\n subject to the language of the policies as actually issued.\n
\n );\n default:\n return <>;\n }\n};\n\nexport const FooterStandard = (props: { policyType?: PolicyType; color?: string }): JSX.Element => (\n \n \n \n \n \n Contact Us\n \n \n Terms\n \n \n Privacy\n \n \n \n \n \n);\n\nconst FooterMinimalContainer = styled.div`\n padding: 20px 40px;\n display: flex;\n font-size: 0.8em;\n justify-content: space-around;\n`;\n\nexport const FooterMinimal = (props: { color?: string }): JSX.Element => (\n \n \n \n);\n","import React from 'react';\nimport { PolicyType } from '@oysterjs/types';\nimport styled from 'styled-components';\nimport { FooterMinimal, FooterStandard } from './footer';\n\nconst PaneContainer = styled.div<{ gap: number }>`\n display: flex;\n flex-direction: row;\n width: 100%;\n gap: ${(props) => props.gap}px;\n\n @media (max-width: 700px) {\n display: block;\n }\n`;\n\nconst Pane = styled.div<{ gap: number; paneWidth: number }>`\n width: calc(${(props) => props.paneWidth}% - ${(props) => props.gap / 2}px);\n\n @media (max-width: 700px) {\n width: 100%;\n }\n`;\n\nexport const TwoPaneContainer: React.FunctionComponent<\n React.PropsWithChildren<{\n gap?: number;\n leftPaneWidth?: number;\n rightPane: JSX.Element;\n }>\n> = (props) => (\n \n \n {props.children}\n \n \n {props.rightPane}\n \n \n);\n\nexport enum FooterStyle {\n none,\n minimal,\n standard\n}\n\nconst PageContainerDiv = styled.div<{\n width?: number | string;\n marginTop?: number;\n marginRight?: number;\n marginLeft?: number;\n marginBottom?: number;\n}>`\n max-width: ${(props) =>\n props.width ? (isNaN(Number(props.width)) ? props.width : `${props.width}px`) : '1000px'};\n width: 100%;\n margin-top: ${(props) => (props.marginTop !== undefined ? `${props.marginTop}px` : 'auto')};\n margin-right: ${(props) => (props.marginRight !== undefined ? `${props.marginRight}px` : 'auto')};\n margin-bottom: ${(props) =>\n props.marginBottom !== undefined ? `${props.marginBottom}px` : 'auto'};\n margin-left: ${(props) => (props.marginLeft !== undefined ? `${props.marginLeft}px` : 'auto')};\n`;\n\nexport const PageContainer: React.FunctionComponent<\n React.PropsWithChildren<{\n width?: number | string;\n footerStyle?: FooterStyle;\n marginTop?: number;\n marginRight?: number;\n marginLeft?: number;\n marginBottom?: number;\n policyType?: PolicyType;\n footerTextColor?: string;\n }>\n> = (props) => {\n return (\n \n {props.children}\n {(props.footerStyle === undefined || props.footerStyle === FooterStyle.standard) && (\n \n )}\n {props.footerStyle === FooterStyle.minimal && }\n \n );\n};\n\nexport const PageSection = styled.div<{\n noBorder?: boolean;\n noPadding?: boolean;\n centered?: boolean;\n customPadding?: string;\n}>`\n padding: ${(props) =>\n props.customPadding ? props.customPadding : props.noPadding ? '0px 40px' : '20px 40px'};\n border-bottom: ${(props) => (props.noBorder ? '0' : '1px solid #f8f8f8')};\n ${(props) =>\n !props.centered\n ? ``\n : `\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n `}\n\n h2 {\n color: #666666;\n }\n`;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport apm from '@oysterjs/core/apm';\nimport { WrappedError } from '@oysterjs/core/errors';\nimport { IoCheckmark, IoClipboard } from 'react-icons/io5';\n\nconst ErrorIllustration = styled.img<{ forceMobile?: boolean }>`\n border-radius: 8px;\n width: 100%;\n max-width: ${(props) => (props.forceMobile ? '400px' : '300px')};\n transform: scaleX(-1);\n\n @media (max-width: 700px) {\n max-width: 250px;\n }\n\n @media (max-width: 600px) {\n max-width: 400px;\n }\n`;\n\nconst ErrorContainer = styled.div<{ forceMobile?: boolean }>`\n padding: 40px;\n display: flex;\n max-width: 1000px;\n box-sizing: border-box;\n margin: 0 auto;\n flex-direction: ${(props) => (props.forceMobile ? 'column' : 'row')};\n gap: 20px;\n align-items: flex-start;\n\n @media (max-width: 600px) {\n flex-direction: column;\n }\n`;\n\nconst ErrorDetailsContainer = styled.div`\n position: relative;\n border-radius: 8px;\n padding: 20px;\n box-sizing: border-box;\n max-width: 500px;\n width: 100%;\n background: #eaeaea;\n display: flex;\n flex-direction: column;\n gap: 20px;\n`;\n\nconst ErrorDetailContainer = styled.div`\n gap: 10px;\n`;\n\nconst ErrorDetailTitle = styled.div`\n text-transform: uppercase;\n color: #666666;\n font-size: 0.7em;\n font-weight: 600;\n padding-bottom: 4px;\n`;\nconst ErrorDetailDescription = styled.pre`\n font-size: 1em;\n font-family: monospace;\n white-space: pre-wrap;\n`;\n\nexport const ErrorDetail = (props: { title: string; description: string }) => (\n \n {props.title}\n {props.description}\n \n);\n\nconst ErrorCopyData = styled.button`\n border: 1px solid #e8e8e8;\n position: absolute;\n top: 0;\n right: 0;\n border-top-right-radius: 8px;\n border-bottom-left-radius: 8px;\n background: rgba(255, 255, 255, 0.65);\n color: #666666;\n padding: 10px;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: 0.15s ease-in-out all;\n cursor: pointer;\n\n &:hover:not(.active) {\n background: rgba(255, 255, 255, 0.85);\n color: #333333;\n }\n\n &:active:not(.active) {\n background: rgba(255, 255, 255, 1);\n }\n`;\n\nexport const ErrorDetails = (\n props: React.PropsWithChildren & { errorData: string }>\n) => {\n const [copied, setCopied] = React.useState(false);\n\n React.useEffect(() => {\n if (!copied) {\n return;\n }\n\n navigator.clipboard.writeText(props.errorData);\n setTimeout(() => setCopied(false), 3000);\n }, [copied]);\n\n return (\n \n setCopied(true)}>\n {copied ? : }\n \n {props.children}\n \n );\n};\n\nconst ErrorComponent = (props: { error: Error | WrappedError; forceMobile?: boolean }) => {\n const message = props.error.toString();\n const errorData = [{ title: 'Error', description: message }].filter(\n ({ description }) => !!description\n );\n\n return (\n \n \n
\n

Something went wrong.

\n

\n There was an error while trying to perform your requested action. If the issue persists,\n please contact our team at{' '}\n support@withoyster.com and include this error\n for reference.\n

\n `${d.title}\\n${d.description}`).join('\\n\\n')}>\n {errorData.map((data) => (\n \n ))}\n \n
\n
\n );\n};\n\n/*\n position: relative;\n border-radius: 8px;\n padding: 20px;\n box-sizing: border-box;\n max-width: 500px;\n width: 100%;\n background: #eaeaea;\n display: flex;\n flex-direction: column;\n gap: 20px;\n */\n\nconst ErrorDetailsV2 = (\n props: React.PropsWithChildren & { errorData: string }>\n) => {\n const [copied, setCopied] = React.useState(false);\n\n React.useEffect(() => {\n if (!copied) {\n return;\n }\n\n navigator.clipboard.writeText(props.errorData);\n setTimeout(() => setCopied(false), 3000);\n }, [copied]);\n\n return (\n
\n setCopied(true)}>\n {copied ? : }\n \n {props.children}\n
\n );\n};\n\nexport const ErrorComponentV2 = (props: { error: Error | WrappedError; forceMobile?: boolean }) => {\n const message = props.error.toString();\n const transaction = apm().getSessionId();\n const errorData = [\n { title: 'Error', description: message },\n { title: 'Session ID', description: transaction || '' }\n ].filter(({ description }) => !!description);\n\n return (\n
\n

Application error

\n

Something went wrong

\n

\n There was an error while trying to perform your requested action. If the issue persists,\n please contact our team via the chat widget or via email at{' '}\n support@withoyster.com and include this error\n for reference.\n

\n\n
\n
\n `${d.title}\\n${d.description}`).join('\\n\\n')}\n >\n {errorData\n .filter((d) => !!d.description)\n .map((data) => (\n \n ))}\n \n
\n
\n
\n );\n};\n\nexport default class ErrorBoundary extends React.Component<\n React.PropsWithChildren<{ forceMobile?: boolean }>,\n { error?: Error | WrappedError }\n> {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n static getDerivedStateFromError(err: Error) {\n return { error: err };\n }\n\n componentDidCatch(error) {\n apm().captureError(error);\n }\n\n render(): React.ReactNode {\n if (this.state.error) {\n return ;\n }\n\n return this.props.children;\n }\n}\n\nexport class ErrorBoundaryV2 extends React.Component<\n React.PropsWithChildren,\n { error?: Error | WrappedError }\n> {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n static getDerivedStateFromError(err: Error) {\n return { error: err };\n }\n\n componentDidCatch(error) {\n apm().captureError(error);\n }\n\n render(): React.ReactNode {\n if (this.state.error) {\n return ;\n }\n\n return this.props.children;\n }\n}\n","import React from 'react';\n\nexport const useWindowScrollPosition = (): {\n scrollPosX: number;\n scrollPosY: number;\n} => {\n const [scrollPosX, setScrollPosX] = React.useState(window.scrollX);\n const [scrollPosY, setScrollPosY] = React.useState(window.scrollY);\n\n React.useEffect(() => {\n const onscroll = () => {\n setScrollPosX(window.scrollX);\n setScrollPosY(window.scrollY);\n };\n\n window.addEventListener('scroll', onscroll);\n return () => window.removeEventListener('scroll', onscroll);\n }, [setScrollPosX, setScrollPosY]);\n\n return { scrollPosX, scrollPosY };\n};\n\nexport const useWindowDimensions = (): {\n innerWidth: number;\n innerHeight: number;\n} => {\n const [innerWidth, setInnerWidth] = React.useState(window.innerWidth);\n const [innerHeight, setInnerHeight] = React.useState(window.innerHeight);\n\n React.useEffect(() => {\n const onresize = () => {\n setInnerWidth(window.innerWidth);\n setInnerHeight(window.innerHeight);\n };\n\n window.addEventListener('resize', onresize);\n return () => window.removeEventListener('resize', onresize);\n }, [setInnerWidth, setInnerHeight]);\n\n return { innerWidth, innerHeight };\n};\n\nexport const openPageInNewTab = (url: string): Window | null => {\n return window.open(url, '_blank');\n};\n\nexport const openAsyncPageInNewTab = (\n urlPromise: Promise\n): Window | null => {\n // First open an empty tab synchronously\n const w = openPageInNewTab('');\n if (w != null) {\n // Resolve location when promise is finished\n urlPromise.then((url) => {\n // If the URL is resolved correctly, set the location, otherwise close the window\n if (url) {\n w.location = url;\n } else {\n w.close();\n }\n });\n }\n\n return w;\n};\n","import styled from 'styled-components';\n\nconst OysterLogoOldContainer = styled.div<{ inline?: boolean }>`\n display: ${(props) => (props.inline ? 'inline-block' : 'flex')};\n vertical-align: middle;\n justify-content: left;\n align-items: center;\n padding: ${(props) => (props.inline ? '0' : '10px 10px 10px 0px')};\n\n svg {\n vertical-align: middle;\n }\n`;\n\nconst OysterWordMarkContainer = styled.div`\n display: inline-block;\n vertical-align: middle;\n justify-content: left;\n align-items: center;\n padding: 0;\n\n svg {\n vertical-align: middle;\n }\n`;\n\nexport const OysterLogo = ({\n scale,\n color,\n className\n}: {\n scale?: number;\n color?: string;\n className?: string;\n}): JSX.Element => (\n
\n \n \n \n \n \n \n
\n);\n\nexport const OysterLogoOld = ({\n scale,\n inline,\n verticalAlign,\n light,\n color,\n textTransform\n}: {\n scale?: number;\n verticalAlign?: string;\n inline?: boolean;\n light?: boolean;\n color?: string;\n textTransform?: string;\n}): JSX.Element => (\n \n \n \n \n \n \n \n \n \n);\n\nexport const OysterWordMark = ({\n scale,\n forceLight\n}: {\n scale?: number;\n forceLight?: boolean;\n}): JSX.Element => (\n \n \n \n \n \n \n \n \n \n);\n","import styled from 'styled-components';\nimport { useRouteMatch, NavLink } from 'react-router-dom';\n\nimport { OysterLogoOld } from '@oysterjs/ui/Logo';\n\nconst LeftMenuContainer = styled.div`\n display: flex;\n flex-direction: row;\n gap: 40px;\n`;\n\nconst NavItem = styled.li`\n padding: 16px 0px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n font-size: 1em;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease-in-out;\n\n :hover {\n color: #0ea5e9;\n }\n\n :active {\n color: #269985;\n }\n`;\n\nexport const DesktopNavBar = () => {\n const { url } = useRouteMatch();\n\n return (\n <>\n \n \n \n \n \n \n \n \n Policies\n \n \n \n \n Claims\n \n \n \n \n );\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { useRouteMatch, NavLink } from 'react-router-dom';\n\nimport { IoMenu } from 'react-icons/io5';\nimport { OysterLogoOld } from '@oysterjs/ui/Logo';\n\nconst LeftMenuContainer = styled.div`\n display: flex;\n flex-direction: row;\n gap: 40px;\n`;\n\nconst NavItem = styled.li`\n padding: 18px 0px;\n display: flex;\n font-size: 1.5em;\n font-weight: 500;\n cursor: pointer;\n`;\n\nconst RightMenuContainer = styled.div`\n display: flex;\n gap: 40px;\n`;\n\nconst HamburgerMenu = styled.div`\n position: absolute;\n width: 100%;\n top: 80px;\n right: 0px;\n background: white;\n border-top: 2px solid #fafafa;\n border-bottom: 2px solid #f2f2f2;\n z-index: 998;\n`;\n\nconst HamburgerMenuItemContainer = styled.div`\n padding: 20px 40px;\n box-sizing: border-box;\n width: 100%;\n font-size: 1em;\n font-weight: 500;\n\n &:hover {\n background: #fafafa;\n }\n`;\n\nconst HamburgerMenuItem = (props: { label: string; link: string; onClick: () => void }) => (\n
  • \n \n {props.label}\n \n
  • \n);\n\nexport const MobileNavBar = () => {\n const [expanded, setExpanded] = React.useState(false);\n const { url } = useRouteMatch();\n\n return (\n <>\n \n \n \n \n \n \n \n \n setExpanded((prev) => !prev)}\n onKeyPress={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setExpanded((prev) => !prev);\n return false;\n }\n return true;\n }}\n >\n \n \n \n setExpanded(false)}\n />\n setExpanded(false)}\n />\n \n \n \n );\n};\n","import styled from 'styled-components';\n\nimport { useWindowDimensions } from '@oysterjs/core/window';\n\nimport { DesktopNavBar } from './desktop';\nimport { MobileNavBar } from './mobile';\n\nconst TopBarContainer = styled.ol`\n display: flex;\n margin: 0;\n list-style: none;\n justify-content: space-between;\n border-bottom: 2px solid #fafafa;\n box-sizing: border-box;\n padding: 0px 40px;\n\n a,\n a:visited {\n color: #333333;\n text-decoration: none;\n }\n\n a.active-tab {\n color: #0ea5e9;\n }\n`;\n\nexport const NavBar = () => (\n \n);\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { Spinner } from '../Spinner';\n\nconst UnstyledLink = styled.a`\n color: inherit;\n text-decoration: inherit;\n\n &:visited {\n color: inherit;\n text-decoration: inherit;\n }\n`;\n\nconst ButtonContainerComponent = styled.div`\n display: flex;\n flex-direction: row;\n gap: 0px 6px;\n\n width: 100%;\n justify-content: ${(props) => (props.center ? 'center' : 'left')};\n`;\n\ninterface ButtonContainerProps {\n center?: boolean;\n}\n\nexport const ButtonContainer = (\n props: React.PropsWithChildren & ButtonContainerProps>\n) => {props.children};\n\nconst ButtonComponent = styled.button<{\n primary?: boolean;\n loading?: boolean;\n}>`\n border: 0;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 5px;\n\n padding: 10px 15px;\n border-radius: 30px;\n user-select: none;\n\n font-size: 0.8em;\n font-weight: 500;\n\n min-width: 100px;\n justify-content: center;\n\n color: ${(props) => (props.primary ? 'white' : '#333333')};\n background: ${(props) => (props.primary ? '#0ea5e9' : '#fafafa')};\n border: ${(props) => (props.primary ? '1px solid transparent' : '1px solid #DADADA')};\n font-family: 'Rubik', 'Helvetica Neue', 'Helvetica', Arial, sans-serif;\n\n opacity: ${(props) => (props.loading || props.disabled ? 0.6 : 1)};\n cursor: ${(props) => (props.loading || props.disabled ? 'default' : 'pointer')};\n\n transition: all 0.15s ease-in-out;\n\n &:active {\n transform: ${(props) => {\n if (props.loading || props.disabled) {\n return 'none';\n }\n return 'translateY(2px)';\n }};\n background: ${(props) => {\n if (props.loading || props.disabled) {\n return props.primary ? '#0ea5e9' : '#fafafa';\n }\n return props.primary ? '#269985' : 'rgb(212, 212, 212)';\n }};\n }\n\n &:first-child {\n margin-left: 0;\n }\n\n &:last-child {\n margin-right: 0;\n }\n`;\n\nconst ButtonDivComponent = styled.div<{\n primary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n}>`\n border: 0;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 5px;\n\n padding: 10px 15px;\n border-radius: 30px;\n user-select: none;\n\n font-size: 0.8em;\n font-weight: 500;\n\n color: ${(props) => (props.primary ? 'white' : '#333333')};\n background: ${(props) => (props.primary ? '#0ea5e9' : '#fafafa')};\n border: ${(props) => (props.primary ? '1px solid transparent' : '1px solid #DADADA')};\n font-family: 'Rubik', 'Helvetica Neue', 'Helvetica', Arial, sans-serif;\n\n opacity: ${(props) => (props.loading || props.disabled ? 0.6 : 1)};\n cursor: ${(props) => (props.loading || props.disabled ? 'default' : 'pointer')};\n\n transition: all 0.15s ease-in-out;\n\n :active {\n transform: translateY(2px);\n background: ${(props) => {\n if (props.loading || props.disabled) {\n return props.primary ? '#0ea5e9' : '#fafafa';\n }\n return props.primary ? '#269985' : 'rgb(212, 212, 212)';\n }};\n }\n\n :first-child {\n margin-left: 0;\n }\n\n :last-child {\n margin-right: 0;\n }\n`;\n\ninterface ButtonProps {\n primary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n icon?: JSX.Element;\n leftIcon?: JSX.Element;\n style?: React.CSSProperties;\n}\n\ninterface LinkProps {\n href: string;\n target?: string;\n onClick?: () => void;\n}\n\nexport const ButtonLink = (props: React.PropsWithChildren) =>\n props.disabled ? (\n \n \n );\n};\n\nexport const Card = (props: {\n title: string;\n description: string;\n image: JSX.Element;\n badge?: JSX.Element;\n comingSoon?: boolean;\n onClick?: () => void;\n}): JSX.Element => {\n const ref = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n\n React.useEffect(() => {\n if (!ref || !ref.current || !props.comingSoon) {\n return;\n }\n\n ref.current.scroll({\n top: mouseOver ? 300 : 0,\n left: 0,\n behavior: 'smooth'\n });\n }, [mouseOver]);\n\n return (\n setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n aria-label={props.title}\n >\n \n {props.image}\n \n

    {props.title}

    \n

    {props.description}

    \n
    \n {props.comingSoon && }\n \n {props.badge && {props.badge}}\n \n );\n};\n\nconst SlimCardContainer = styled.div<{ selected?: boolean; disabled?: boolean }>`\n position: relative;\n display: flex;\n max-width: 320px;\n width: 100%;\n border-radius: 8px;\n transition: 0.15s all;\n cursor: pointer;\n opacity: ${(props) => (props.disabled ? 0.5 : 1.0)};\n border: ${(props) => (props.selected ? '1px solid transparent' : '1px dashed #C8C8C8')};\n box-shadow: ${(props) =>\n props.disabled && props.selected\n ? '0 0 0 1px #666666'\n : !props.disabled && props.selected\n ? '0 0 0 2px #0ea5e9'\n : '0 0 0 0px #C8C8C8'};\n`;\n\nconst SlimCardImage = styled.div`\n padding: 20px 10px 20px 20px;\n box-sizing: border-box;\n border-radius: 8px;\n text-align: center;\n\n img {\n width: 100%;\n border-radius: 8px;\n }\n\n svg {\n color: #4c617f;\n font-size: 1.8em;\n }\n`;\n\nconst SlimCardContents = styled(CardContents)`\n width: 100%;\n padding: 20px 20px 20px 10px;\n flex-grow: 1;\n\n h3 {\n margin: 0 0 2px 0;\n }\n`;\n\nconst CheckmarkBox = styled.div<{ selected?: boolean; disabled?: boolean }>`\n position: absolute;\n height: 30px;\n width: 30px;\n text-align: center;\n top: -2px;\n right: -2px;\n line-height: 32px;\n color: white;\n background: ${(props) => (props.disabled ? '#666666' : '#0EA5E9')};\n border-top-right-radius: 8px;\n border-bottom-left-radius: 8px;\n transition: 0.15s all;\n\n visibility: ${(props) => (props.selected ? 'visible' : 'hidden')};\n opacity: ${(props) => (props.selected ? 1 : 0)};\n`;\n\nconst TitleBadge = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const SelectableOptionCard = (props: {\n title: string;\n description: string;\n image: JSX.Element;\n badge?: JSX.Element;\n titleAction?: JSX.Element;\n selected?: boolean;\n loading?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n style?: React.CSSProperties;\n}): JSX.Element => (\n \n {props.image}\n \n \n

    \n {props.title}\n

    \n {(props.badge || props.titleAction) && (\n \n {props.badge}\n {props.titleAction}\n \n )}\n
    \n

    {props.description}

    \n
    \n \n {!props.loading && }\n {props.loading && }\n \n \n);\n\nconst SelectableCheckboxCardContainer = styled.div<{ selected?: boolean; disabled?: boolean }>`\n position: relative;\n display: flex;\n max-width: 100%;\n width: 100%;\n border-radius: 8px;\n transition: 0.15s all;\n cursor: pointer;\n border: ${(props) => (props.selected ? '1px solid #0EA5E9' : '1px solid #E2E2E2')};\n`;\n\nconst SelectableCheckboxCardContents = styled.div`\n display: flex;\n gap: 8px;\n cursor: pointer;\n padding: 20px;\n flex-grow: 1;\n`;\n\nexport const SelectableCheckboxCard = (props: {\n title: string;\n subTitle: JSX.Element;\n description: JSX.Element;\n selected?: boolean;\n loading?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n style?: React.CSSProperties;\n}): JSX.Element => (\n \n \n \n
    \n {props.title}\n {props.subTitle}\n {props.description}\n
    \n
    \n \n);\n\nconst ItemizedItemsCardContainer = styled.div`\n position: relative;\n display: flex;\n max-width: 100%;\n width: 100%;\n border-radius: 8px;\n border: 1px solid #e2e2e2;\n`;\n\nconst ItemizedItemsCardContents = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 20px;\n flex-grow: 1;\n`;\n\nconst ItemContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nconst ItemizedItemsCardDivider = styled.div`\n width: 100%;\n height: 1.5px;\n border: 0;\n background-color: #e2e2e2;\n`;\n\ntype Items = {\n title: string;\n link?: string;\n price: number;\n};\n\ntype FeeDetails = {\n title: string;\n price: number;\n};\n\ntype PriceBreakdown = {\n subTotal: number;\n fees?: FeeDetails[];\n grandTotal: number;\n};\n\nexport const ItemizedItemsCard = (props: {\n items: Items[];\n price: PriceBreakdown;\n style?: React.CSSProperties;\n}): JSX.Element => (\n \n \n {props.items.map((item) => {\n return (\n
    \n \n {item.title}\n {'$' + item.price}\n \n {item.link && (\n \n View quote document\n \n )}\n
    \n );\n })}\n \n
    \n \n Subtotal\n {'$' + props.price.subTotal}\n \n {props.price.fees &&\n props.price.fees.map((fee) => {\n return (\n \n {fee.title}\n {'$' + fee.price}\n \n );\n })}\n \n Total Due\n {'$' + props.price.grandTotal}\n \n
    \n
    \n
    \n);\n\nconst RadioSelectableCardContainer = styled.div<{ selected?: boolean; disabled?: boolean }>`\n position: relative;\n flex-direction: column;\n display: flex;\n max-width: calc(33% - 16px);\n width: 100%;\n border-radius: 8px;\n transition: 0.15s all;\n cursor: pointer;\n border: ${(props) => (props.selected ? '1px solid #0EA5E9' : '1px solid #E2E2E2')};\n\n @media (max-width: 600px) {\n max-width: 100%;\n }\n`;\n\nconst RadioSelectableCardContents = styled.div`\n display: flex;\n gap: 8px;\n cursor: pointer;\n padding: 20px 20px 20px 20px;\n flex-grow: 1;\n`;\n\nconst RadioSelectableListItems = styled.div`\n display: flex;\n flex-direction: column;\n padding: 15px 15px 15px 20px;\n`;\n\nconst RadioSelectableCardDivider = styled.div<{ selected?: boolean }>`\n font-size: 12px;\n display: flex;\n align-items: center;\n color: ${(props) => (props.selected ? '#0EA5E9' : '#666666')};\n\n &::before,\n &::after {\n flex-grow: 1;\n content: '';\n border: 0;\n background-color: ${(props) => (props.selected ? '#0EA5E9' : '#E2E2E2')};\n height: 1.5px;\n }\n\n &::before {\n margin-right: 5px;\n }\n\n &::after {\n margin-left: 5px;\n }\n`;\n\nexport const RadioSelectableCard = (props: {\n title: string;\n subTitle: JSX.Element;\n description: JSX.Element;\n selected?: boolean;\n loading?: boolean;\n disabled?: boolean;\n checkItems?: string[];\n onClick?: () => void;\n style?: React.CSSProperties;\n}): JSX.Element => (\n \n \n \n
    \n {props.title}\n {props.subTitle}\n {props.description}\n
    \n
    \n {props.checkItems && (\n <>\n \n What's covered\n \n \n {props.checkItems.map((label) => {\n return (\n \n \n {label}\n \n );\n })}\n \n \n )}\n \n);\n\nconst ShadowCardContainer = styled.div`\n background: #f6f6f6;\n border: 2px dashed #dfdfdf;\n height: 260px;\n width: 240px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n border-radius: 8px;\n transition: 0.15s all;\n cursor: pointer;\n\n color: #b2b2b2;\n\n svg {\n font-size: 3em;\n color: #b2b2b2;\n }\n\n :hover {\n border: 2px solid #dfdfdf;\n transform: scale(1.02);\n }\n`;\n\nexport const ShadowCard = (props: {\n icon: JSX.Element;\n description: string;\n onClick?: () => void;\n}): JSX.Element => (\n \n
    {props.icon}
    \n
    {props.description}
    \n
    \n);\n\nexport const WidgetCardGallery = styled.ul`\n list-style: none;\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n gap: 10px;\n font-size: 0.8em;\n width: 400px;\n flex-wrap: wrap;\n padding-inline-start: 5px;\n\n a {\n text-decoration: none;\n }\n`;\n\nconst WidgetCardContainer = styled.div<{ selected?: boolean; disabled?: boolean }>`\n position: relative;\n display: flex;\n max-width: 160px;\n width: 100%;\n border-radius: 8px;\n transition: 0.15s all;\n cursor: pointer;\n opacity: ${(props) => (props.disabled ? 0.5 : 1.0)};\n border: ${(props) => (props.selected ? '1px solid transparent' : '1px dashed #C8C8C8')};\n background-color: ${(props) => (props.selected ? '#0ea5e930' : 'transparent')};\n box-shadow: ${(props) =>\n props.disabled && props.selected\n ? '0 0 0 1px #666666'\n : !props.disabled && props.selected\n ? '0 0 0 2px #0ea5e9'\n : '0 0 0 0px #C8C8C8'};\n`;\n\nconst WidgetCardContents = styled(CardContents)`\n width: 100%;\n padding: 8px;\n`;\n\nexport const WidgetOptionCard = (props: {\n title: JSX.Element;\n subtitle: JSX.Element;\n description: () => string | undefined;\n selected?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n style?: React.CSSProperties;\n}): JSX.Element => (\n \n \n \n \n {props.title}\n {props.subtitle}\n \n \n {!!props.description() &&

    {props.description()}

    }\n
    \n \n);\n","import React from 'react';\nimport styled from 'styled-components';\nimport { NumericFormat, OnValueChange } from 'react-number-format';\n\nexport const ErrorDisplay = styled.div`\n font-size: 0.8em;\n margin-top: 5px;\n color: #d1344b;\n`;\n\nexport const TextInputComponent = styled.input<{\n error?: string | null | false | true;\n currency?: boolean | false;\n}>`\n border: 0;\n outline: none;\n\n border-radius: 20px;\n border: ${(props) => (props.error ? '2px solid #d1344b' : '2px solid #e8e8e8')};\n box-sizing: border-box;\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 1em;\n padding: 8px 16px;\n\n padding-left: ${(props) => props.currency && '30px'};\n\n width: 100%;\n\n transition: 0.15s all;\n\n &:focus {\n border: 2px solid #0ea5e9;\n }\n\n &:focus + .suggestions-container {\n display: block;\n }\n`;\n\nexport const TextInput = React.forwardRef(\n (\n props: React.AllHTMLAttributes & {\n error?: string | null | false | true;\n currency?: boolean | false;\n },\n ref: React.Ref\n ) => (\n <>\n
    \n {props.currency && (\n \n $\n \n )}\n \n {props.error && props.error !== true && {props.error}}\n
    \n \n )\n);\n\nexport const CurrencyComponent = styled(NumericFormat)<{\n error?: string | null | false | true;\n currency?: boolean | false;\n}>`\n border: 0;\n outline: none;\n\n border-radius: 20px;\n border: ${(props) => (props.error ? '2px solid #d1344b' : '2px solid #e8e8e8')};\n box-sizing: border-box;\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 1em;\n padding: 8px 16px;\n\n width: 100%;\n\n transition: 0.15s all;\n\n &:focus {\n border: 2px solid #0ea5e9;\n }\n\n &:focus + .suggestions-container {\n display: block;\n }\n`;\n\nexport const CurrencyInput = (\n props: React.AllHTMLAttributes & {\n error?: string | null | false | true;\n currency?: boolean | false;\n value?: string | number;\n onValueChange?: OnValueChange;\n style?: React.CSSProperties;\n }\n) => {\n return (\n
    \n \n {props.error && props.error !== true && {props.error}}\n
    \n );\n};\n\nconst SuggestionsContainer = styled.div`\n position: absolute;\n display: none;\n box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.25);\n box-sizing: border-box;\n border-radius: 8px;\n z-index: 100;\n background: white;\n font-size: 0.9em;\n\n &:hover {\n display: block;\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n ul li {\n padding: 10px 20px;\n\n &:first-child {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n &:last-child {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n\n &:hover {\n background: #0ea5e9;\n color: white;\n cursor: pointer;\n }\n }\n`;\n\nconst Suggestions = (props: {\n suggestions: string[];\n onSelect?: (suggestion: string, index: number) => void;\n}) => (\n \n
      \n {props.suggestions.map((s, i) => (\n
    • (props.onSelect ? props.onSelect(s, i) : null)}>\n {s}\n
    • \n ))}\n
    \n
    \n);\n\ninterface AutocompleteTextInputProps {\n suggestions: string[];\n id?: string;\n value?: string;\n error?: boolean;\n disabled?: boolean;\n onChange?: (value: string) => void;\n onSelectSuggestion?: (suggestion: string, index: number) => void;\n}\n\nexport const AutocompleteTextInput = (props: AutocompleteTextInputProps): JSX.Element => {\n const [selectedSuggestion, setSelectedSuggestion] = React.useState(false);\n return (\n
    \n {\n setSelectedSuggestion(false);\n props.onChange?.(e.currentTarget.value);\n }}\n disabled={props.disabled}\n />\n {props.suggestions.length > 0 && !selectedSuggestion && (\n {\n setSelectedSuggestion(true);\n props.onSelectSuggestion?.(suggestion, index);\n }}\n />\n )}\n
    \n );\n};\nexport const TextAreaInputComponent = styled.textarea<{ error?: string | null | false }>`\n border: 0;\n outline: none;\n\n border-radius: 20px;\n border: ${(props) => (props.error ? '2px solid #d1344b' : '2px solid #e8e8e8')};\n box-sizing: border-box;\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 1em;\n padding: 12px 16px;\n\n width: 100%;\n\n transition: 0.15s all;\n\n &:focus {\n border: 2px solid #0ea5e9;\n }\n`;\n\nexport const TextAreaInput: React.FunctionComponent<\n React.AllHTMLAttributes & { error?: string | null | false }\n> = (props) => (\n <>\n \n {props.error && {props.error}}\n \n);\n","import styled from 'styled-components';\nimport { IoArrowForward } from 'react-icons/io5';\nimport { Button, ButtonContainer } from '@oysterjs/ui/Button';\nimport { Checkbox } from '@oysterjs/ui/Form/checkbox';\n\nexport const RequirementItem = (props: { name: string; description: string }): JSX.Element => (\n \n \n \n \n \n {props.name}\n {props.description}\n \n \n);\n\nexport const RequirementPage = ({\n items,\n onNext\n}: {\n items: Array<{ name: string; description: string }>;\n onNext: () => void;\n}): JSX.Element => (\n <>\n {items.map((item) => (\n \n ))}\n \n \n \n \n);\n\nexport const RequirementItemContainer = styled.div`\n padding: 16px 0px;\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n`;\n\nexport const RequirementCheckboxContainer = styled.div`\n width: 30px;\n`;\n\nexport const RequirementContentContainer = styled.div`\n width: calc(100% - 30px);\n`;\n\nexport const RequirementDescription = styled.div<{ marginTop?: string }>`\n color: #999999;\n font-size: 0.9em;\n margin-top: ${(props) => (props.marginTop ? props.marginTop : '5px')};\n`;\n\nexport const RequirementTitle = styled.div`\n font-weight: 500;\n`;\n\nexport const RequirementError = styled.div`\n font-size: 0.8em;\n margin-top: 10px;\n color: #d1344b;\n`;\n","import { Comparison } from '@oysterjs/ui/Table/comparison';\nimport { ElectronicsType } from '@oysterjs/types';\nimport { BikeProduct, Policy, PolicyType, Product, ProductType } from '@oysterjs/types';\n\nexport const getPolicyDisplayName = (policy: Policy): string => {\n switch (policy.Type) {\n case PolicyType.bike:\n return 'Bike';\n case PolicyType.markelOffroad:\n return 'Offroad';\n case PolicyType.markelMotorcycle:\n return 'Motorcycle';\n case PolicyType.markelBike:\n return 'Bike';\n case PolicyType.minicoJewelry:\n case PolicyType.chubbJewelry:\n return 'Jewelry';\n case PolicyType.worthAveElectronics:\n if (\n [ElectronicsType.iPhone, ElectronicsType.smartPhone].includes(\n policy.InsuredItems[0]?.Details?.Type as ElectronicsType\n )\n ) {\n return 'Phone';\n }\n return 'Electronics';\n }\n};\n\nexport const getPolicyHref = (policy: Policy): string => {\n return `/policies/${policy.ID}`;\n};\n\nexport const getPolicyDisplayImage = (policyType: PolicyType, productType?: string): string => {\n switch (policyType) {\n case PolicyType.markelOffroad:\n return 'https://dashboard.withoyster.com/images/atv_insurance.svg';\n case PolicyType.markelMotorcycle:\n return 'https://dashboard.withoyster.com/images/motorcycle_insurance.svg';\n case PolicyType.bike:\n case PolicyType.markelBike:\n return 'https://dashboard.withoyster.com/images/bike_insurance.svg';\n case PolicyType.minicoJewelry:\n case PolicyType.chubbJewelry:\n return 'https://dashboard.withoyster.com/images/jewelry_insurance.svg';\n case PolicyType.worthAveElectronics:\n return productType === ProductType.phone ||\n productType === ElectronicsType.iPhone ||\n productType === ElectronicsType.smartPhone\n ? 'https://dashboard.withoyster.com/images/phone_insurance.svg'\n : 'https://dashboard.withoyster.com/images/electronics_insurance.svg';\n }\n};\n\nexport const getProductDisplayName = (type: ProductType, product?: Product): string => {\n switch (type) {\n case ProductType.offroad:\n return 'ATV';\n case ProductType.motorcycle:\n return 'Motorcycle';\n case ProductType.bike:\n if (product) {\n const bikeProduct = product.Details as BikeProduct;\n if (bikeProduct.PowerSource) {\n return 'Electric Bike';\n }\n }\n return 'Bicycle';\n case ProductType.jewelry:\n return 'Jewelry';\n case ProductType.phone:\n return 'Phone';\n case ProductType.electronics:\n // TODO: use ProductType.phone type for phone product routing (asana: https://app.asana.com/0/1200762684494204/1203949127097148/f))\n if (\n product &&\n [ElectronicsType.iPhone, ElectronicsType.smartPhone].includes(\n product.Details.Type as ElectronicsType\n )\n ) {\n return 'Phone';\n }\n return 'Electronics';\n }\n};\n\nexport const getProductDisplayImage = (type: ProductType, overrideUrl?: string): string => {\n if (overrideUrl) {\n return overrideUrl;\n }\n\n return getPolicyDisplayImage(getPolicyFromProduct(type), type);\n};\n\nexport const getPolicyFromProduct = (type: ProductType): PolicyType => {\n switch (type) {\n case ProductType.offroad:\n return PolicyType.markelOffroad;\n case ProductType.motorcycle:\n return PolicyType.markelMotorcycle;\n case ProductType.bike:\n return PolicyType.markelBike;\n case ProductType.jewelry:\n return PolicyType.minicoJewelry; // default to minico for now\n case ProductType.phone:\n case ProductType.electronics:\n return PolicyType.worthAveElectronics;\n }\n};\n\nexport const getProductFromPolicy = (type: PolicyType): ProductType | undefined => {\n switch (type) {\n case PolicyType.bike:\n case PolicyType.markelBike:\n return ProductType.bike;\n case PolicyType.chubbJewelry:\n case PolicyType.minicoJewelry:\n return ProductType.jewelry;\n case PolicyType.worthAveElectronics:\n return ProductType.electronics;\n default:\n return;\n }\n};\n\nexport const getPolicyComparison = (type: PolicyType): Comparison => {\n switch (type) {\n case PolicyType.bike:\n case PolicyType.markelOffroad: // TODO: FIX THIS\n case PolicyType.markelMotorcycle: // TODO: FIX THIS\n case PolicyType.markelBike:\n return {\n headers: ['Oyster Insurance', 'Homeowners or renters insurance', 'Extended warranty'],\n sections: [\n {\n title: 'Coverage',\n items: [\n {\n name: 'Full-value coverage',\n enabled: [1, 0, 0]\n },\n {\n name: 'Theft',\n enabled: [1, 0.5, 0]\n },\n {\n name: 'Crash damage',\n enabled: [1, 0, 0]\n },\n {\n name: 'Damage or loss in transit',\n enabled: [1, 0, 0]\n },\n {\n name: 'Medical payments',\n enabled: [1, 0, 0]\n },\n {\n name: 'Liability protection',\n enabled: [1, 0.5, 0]\n },\n {\n name: 'eBike cover',\n enabled: [1, 0, 1]\n },\n {\n name: 'Worldwide coverage',\n enabled: [1, 0, 1]\n },\n {\n name: 'Racing coverage',\n enabled: [1, 0, 0]\n },\n {\n name: 'Replacement bike rental',\n enabled: [1, 0, 0]\n }\n ]\n },\n {\n title: 'Features',\n items: [\n {\n name: 'A.M. Best A rated policy',\n enabled: [1, 0.5, 0]\n },\n {\n name: 'No impact of claims on homeowner insurance',\n enabled: [1, 0, 1]\n },\n {\n name: 'Referral discounts',\n enabled: [1, 0, 0]\n }\n ]\n }\n ]\n };\n\n case PolicyType.minicoJewelry:\n case PolicyType.chubbJewelry:\n return {\n headers: ['Oyster Insurance', 'Homeowners or renters insurance', 'Extended warranty'],\n sections: [\n {\n title: 'Coverage',\n items: [\n {\n name: 'Full-value coverage',\n enabled: [1, 0, 0]\n },\n {\n name: 'Theft',\n enabled: [1, 0.5, 0]\n },\n {\n name: 'Loss',\n enabled: [1, 0, 0]\n },\n {\n name: 'Mysterious disappearance',\n enabled: [1, 0, 0]\n },\n {\n name: 'Accidental damage',\n enabled: [1, 0.5, 0.5]\n },\n {\n name: 'Worldwide coverage',\n enabled: [1, 1, 1]\n }\n ]\n },\n {\n title: 'Features',\n items: [\n {\n name: '$0 deductible',\n enabled: [1, 0, 0.5]\n },\n {\n name: 'A.M. Best A+ rated policy',\n enabled: [1, 0.5, 0]\n },\n {\n name: 'No impact of claims on homeowner insurance',\n enabled: [1, 0, 1]\n },\n {\n name: 'Referral discounts',\n enabled: [1, 0, 0]\n },\n {\n name: '30-day free cancellation',\n enabled: [1, 0, 0]\n }\n ]\n }\n ]\n };\n\n case PolicyType.worthAveElectronics:\n return {\n headers: ['Oyster Insurance', 'Typical Homeowners'],\n sections: [\n {\n title: 'Coverage',\n items: [\n {\n name: 'Full-value coverage',\n enabled: [1, 0]\n },\n {\n name: 'Theft',\n enabled: [1, 0.5]\n },\n {\n name: 'Loss',\n enabled: [1, 0]\n },\n {\n name: 'Accidental damage',\n enabled: [1, 0.5]\n }\n ]\n },\n {\n title: 'Features',\n items: [\n {\n name: '$0 deductible',\n enabled: [1, 0]\n },\n {\n name: 'A.M. Best A+ rated policy',\n enabled: [1, 0.5]\n },\n {\n name: 'Claims do not increase premiums',\n enabled: [1, 0]\n },\n {\n name: '30-day free cancellation',\n enabled: [1, 0]\n },\n {\n name: 'Referral discount',\n enabled: [1, 0]\n }\n ]\n }\n ]\n };\n }\n};\n\nexport const getPolicyOptionalCoverageItem = (\n itemId: string\n): { title: string; description: string } => {\n switch (itemId) {\n case 'coverage_medical_payments':\n return {\n title: 'Medical Payments',\n description:\n \"We'll cover your medical bills up to the coverage limit if you're hurt while riding your bike.\"\n };\n case 'coverage_liability_protection':\n return {\n title: 'Liability Protection',\n description:\n \"We'll protect you from being personally liable up to the coverage limit for any injury or damage you may cause while riding your bike.\"\n };\n case 'coverage_vehicle_contact_protection':\n return {\n title: 'Vehicle Contact Protection',\n description:\n \"We'll protect you from damages in case you are hit by a vehicle that doesn’t carry proper insurance to cover your losses.\"\n };\n case 'coverage_worldwide':\n return {\n title: 'Worldwide Coverage',\n description: \"We'll cover your bike wherever in the world you travel with it.\"\n };\n\n case 'coverage_extended_warranty':\n return {\n title: 'Extended Warranty',\n description:\n \"For new devices, we'll extend any existing OEM's warranty and cover mechanical failures and manufacturing defects.\"\n };\n\n case 'motor_coverage_medical_payments':\n return {\n title: 'Medical Payments',\n description:\n \"We'll cover up to $1k of medical bills if you're hurt while riding your vehicle.\"\n };\n case 'motor_coverage_comprehensive':\n return {\n title: 'Comprehensive Coverage',\n description:\n \"We'll cover loss of or damage to your vehicle as a result of events like fire, theft, vandalism, or hitting an animal, subject to the deductible.\"\n };\n case 'motor_coverage_collision':\n return {\n title: 'Collision Coverage',\n description:\n \"We'll cover damage to your vehicle as a result of a hit, crash, fall, or other collision, subject to the deductible.\"\n };\n case 'motor_coverage_roadside_assistance':\n return {\n title: 'Roadside Assistance',\n description:\n 'Get access to our nationwide roadside assistance program, including 24-hour emergency support, supply delivery, tire and battery service, locksmith, and more.'\n };\n\n default:\n return {\n title: '',\n description: ''\n };\n }\n};\n\nexport const getPolicyCoverageItems = (\n type: PolicyType\n): Array<{ title: string; description: string }> => {\n switch (type) {\n case PolicyType.bike:\n return [\n {\n title: 'Theft',\n description: \"Your bike is covered if it's stolen from or away from home.\"\n },\n {\n title: 'Loss',\n description: \"Your bike is covered if it's lost in transport or left behind.\"\n },\n {\n title: 'Accidental Damage',\n description: \"Your bike is covered if it's accidentally damaged.\"\n },\n {\n title: 'Emergency Travel',\n description: 'Your travel costs are covered if your bike suffers a covered loss.'\n },\n {\n title: 'Worldwide Coverage',\n description: 'Your bike is covered while traveling anywhere in the world.'\n },\n {\n title: 'Spare Parts and Apparel',\n description: 'Spare parts and cycle apparel are also covered from theft and damage.'\n }\n ];\n\n case PolicyType.markelBike:\n return [\n {\n title: 'Bikes and eBikes',\n description: 'Bikes and eBikes (class 1, 2, and 3) are fully covered on this policy.'\n },\n {\n title: 'Full Value Coverage',\n description: 'Your bike is covered for its full replacement value.'\n },\n {\n title: 'Theft',\n description: 'Your bike is covered if it is stolen from or away from home.'\n },\n {\n title: 'Damage or Loss in Transit',\n description: 'Your bike is covered if it is lost or damaged in transit by third parties.'\n },\n {\n title: 'Crash Damage',\n description: 'Your bike is covered if it is damaged in an accident or crash.'\n },\n {\n title: 'Spare Parts and Apparel',\n description: 'Spare parts and cycle apparel are also covered from theft and damage.'\n },\n {\n title: 'Racing Coverage',\n description: 'Your coverages also apply when competing in a race or event.'\n }\n ];\n\n case PolicyType.markelOffroad:\n case PolicyType.markelMotorcycle:\n return [\n {\n title: 'Passenger Liability',\n description:\n \"You're covered if you're required to pay for injuries to passengers up to a limit.\"\n },\n {\n title: 'Uninsured Motorist Injury',\n description:\n \"You're covered if an unininsured motorist is at-fault in an accident up to a limit.\"\n },\n {\n title: 'Property Damage',\n description: \"You're covered if your ATV causes property damage for up to $5k.\"\n },\n {\n title: 'Pedestrian Injury',\n description: \"You're covered if you hit or injure a pedestrian for up to $50k.\"\n },\n {\n title: 'Bodily Injury',\n description: \"You're covered if you cause bodily injury to another person up to a limit.\"\n }\n ];\n\n case PolicyType.minicoJewelry:\n case PolicyType.chubbJewelry:\n return [\n {\n title: 'Full Value Coverage',\n description: 'Your jewelry is covered for its full-value repair or replacement value.'\n },\n {\n title: 'Theft',\n description: \"Your jewelry is covered if it's stolen from or away from home.\"\n },\n {\n title: 'Loss and Disappearance',\n description: \"Your jewelry is covered if it's lost and you cannot find it.\"\n },\n {\n title: 'Accidental Damage',\n description: \"Your jewelry is covered if it's damaged, cracked, or it snags.\"\n },\n {\n title: 'Natural Disaster',\n description: 'Your jewelry is covered in events like fire, earthquake, and floods.'\n },\n {\n title: 'Worldwide Coverage',\n description: 'Your jewelry is covered while traveling anywhere in the world.'\n }\n ];\n\n case PolicyType.worthAveElectronics:\n return [\n {\n title: 'Full Value Coverage',\n description: 'Your device is covered for the full replacement value.'\n },\n {\n title: 'Cracked Screens',\n description: 'Your device is covered if your screen is cracked partially or entirely.'\n },\n {\n title: 'Theft',\n description: 'Your device is covered if it is stolen from your home or outside of home.'\n },\n {\n title: 'Accidental Damage',\n description: \"Your device is covered if you've dropped or damaged it accidentally.\"\n },\n {\n title: 'Liquid Submersion',\n description:\n 'Your device is covered if it malfunctions due to spills or liquid submersion.'\n },\n {\n title: 'Natural Disaster',\n description: 'Your device is covered from fire, flood, earthquake, lightning, and more.'\n },\n {\n title: 'Used and Refurbished',\n description: 'Your device is covered even if it was purchased as used or refurbished.'\n },\n {\n title: 'Worldwide Coverage',\n description: 'Your device is covered while traveling anywhere in the world.'\n }\n ];\n }\n};\n\nexport const getPolicyCoverageItemsLongDescription = (\n type: PolicyType\n): Array<{ title: string; description: string }> => {\n switch (type) {\n case PolicyType.markelBike:\n return [\n {\n title: 'Bikes and eBikes',\n description: 'Bikes and eBikes (class 1, 2, and 3) are fully covered on this policy.'\n },\n {\n title: 'Full Value Coverage',\n description: 'Your bike is covered for its full replacement value.'\n },\n {\n title: 'Theft',\n description:\n 'Your bike is covered if it is stolen from or away from home. If away from home, it needs to be secured to an immovable object with an appropriate lock.'\n },\n {\n title: 'Damage or Loss in Transit',\n description: 'Your bike is covered if it is lost or damaged in transit by third parties.'\n },\n {\n title: 'Crash Damage',\n description: 'Your bike is covered if it is damaged in an accident or crash.'\n },\n {\n title: 'Spare Parts and Apparel',\n description:\n 'Spare parts and cycle apparel are covered up to $500 each per claim and $1,000 in any policy period. This coverage is for actual cash value and not replacement value.'\n },\n {\n title: 'Racing Coverage',\n description:\n 'Your coverages also apply when competing in a race or event. There is also additional cover of up to $250 for renting a temporary substitute bike if your bike is stolen or damaged while at the event, plus coverage for any non-refundable pre-paid event entry fees up to $500.'\n }\n ];\n\n default:\n return getPolicyCoverageItems(type);\n }\n};\n","import styled from 'styled-components';\n\nimport { IoAttachOutline, IoClose } from 'react-icons/io5';\n\nconst AttachmentContainer = styled.div<{ uploading?: boolean }>`\n opacity: ${(props) => (props.uploading ? 0.5 : 1.0)};\n pointer-events: ${(props) => (props.uploading ? 'none' : 'auto')};\n transition: all 0.15s ease-in-out;\n\n font-size: 0.8em;\n padding: 5px 10px;\n background: #eaeaea;\n border-radius: 30px;\n color: #333333;\n\n * {\n vertical-align: middle;\n }\n\n .close-icon {\n color: #666666;\n cursor: pointer;\n\n &:hover {\n color: #000000;\n }\n }\n`;\n\nconst formatSize = (size: number) => {\n if (size < 1024) {\n return `${size}B`;\n }\n if (size < 1024 * 1024) {\n return `${Math.round(size / 1024)}KB`;\n }\n if (size < 1024 * 1024 * 1024) {\n return `${Math.round(size / (1024 * 1024))}MB`;\n }\n return 'big';\n};\n\nexport const Attachment = (props: {\n name: string;\n url?: string;\n size?: number;\n uploading?: boolean;\n onRemove?: () => void;\n}): JSX.Element => (\n e.stopPropagation()}\n >\n \n {props.name}\n {props.size && (\n <>\n {' '}({formatSize(props.size)})\n \n )}\n {props.onRemove && (\n {\n e.stopPropagation();\n if (props.onRemove) {\n props.onRemove();\n }\n }}\n />\n )}\n \n);\n","import config from './config';\n\nexport const MAPBOX_PUBLIC_KEY = () => config().secrets.mapboxPublicKey || '';\n\nexport const getLocationSuggestions = (\n address: string\n): Promise<{ address: string; coordinates: [number, number] }[]> =>\n // TODO: add proximity to user zip code\n fetch(\n `https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURI(\n address\n )}.json?access_token=${MAPBOX_PUBLIC_KEY()}&autocomplete=true&country=us&types=locality,neighborhood,address,poi`\n ).then((res) =>\n res.json().then((data) => {\n if (res.status === 200 && data) {\n // parse data\n return data.features.map((f) => ({ address: f.place_name, coordinates: f.center }));\n }\n if (data) {\n throw new Error(JSON.stringify(data));\n }\n throw new Error('ugh?');\n })\n );\n\nexport const getMapURL = (\n longitude: number,\n latitude: number,\n opts?: { zoomLevel?: number; height?: number; width?: number }\n): string =>\n `https://api.mapbox.com/styles/v1/mapbox/streets-v11/static/pin-l+0EA5E9(${longitude},${latitude})/${longitude},${latitude},${\n opts?.zoomLevel || 12\n },0/${opts?.width || 400}x${opts?.height || 280}@2x?access_token=${MAPBOX_PUBLIC_KEY()}`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { useId } from 'react-id-generator';\n\nexport const FormContainer = styled.form`\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n`;\n\nexport const FormRowContainer = styled.div<{\n breakMobile?: boolean;\n alignItems?: string;\n singleItem?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: ${(props) => (props.alignItems ? props.alignItems : 'normal')};\n gap: 16px;\n width: 100%;\n max-width: ${(props) => (props.singleItem ? 'calc(50% - 8px)' : '100%')};\n\n @media (max-width: 600px) {\n max-width: 100%;\n flex-direction: ${(props) => (props.breakMobile ? 'column' : 'row')};\n }\n`;\n\nconst FormRowHeaderContainer = styled.div<{ paddingTop?: string }>`\n padding-top: ${(props) => (props.paddingTop ? props.paddingTop : '24px')};\n`;\n\nconst FormRowHeaderDescription = styled.div`\n color: #999999;\n font-size: 0.9em;\n padding-top: 4px;\n`;\n\nconst FormRowHeaderTitle = styled.div`\n font-size: 1.1em;\n font-weight: 500;\n`;\n\nconst FormRowError = styled.div`\n font-size: 0.8em;\n color: #d1344b;\n`;\n\ninterface FormRowProps {\n error?: string | false;\n breakMobile?: boolean;\n alignItems?: string;\n singleItem?: boolean;\n}\n\nexport const FormRow: React.FunctionComponent<\n React.PropsWithChildren & FormRowProps>\n> = (props) => (\n <>\n {props.children}\n {props.error && {props.error}}\n \n);\n\ninterface FormRowHeaderProps {\n title?: string;\n description?: string;\n paddingTop?: string;\n}\n\nexport const FormRowHeader: React.FunctionComponent> = (\n props\n) => (\n \n {props.title && {props.title}}\n {props.description && {props.description}}\n \n);\n\nconst FormColumnContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1 1 0;\n`;\n\nconst FormColumnTitle = styled.label`\n font-weight: 500;\n`;\n\nconst FormColumnDescription = styled.div`\n padding-bottom: 8px;\n font-size: 0.8em;\n color: #666666;\n`;\n\nconst FormColumnContents = styled.div``;\n\n// Temporary enum to distinguish the desired style\n// on the merchant form vs. the consumer forms. we'll\n// unify these styles once we have a design language.\nexport enum FormColumnStyle {\n merchant = 'merchant'\n}\n\ninterface FormColumnProps {\n title?: string;\n description?: string;\n label?: string;\n optional?: boolean;\n formColumnStyle?: FormColumnStyle;\n}\n\nexport const FormColumn: React.FunctionComponent<\n React.PropsWithChildren & FormColumnProps>\n> = (props) => {\n const [id] = useId();\n\n return (\n \n \n {props.title || props.label}\n {props.optional && (opt.)}\n \n {props.description && {props.description}}\n \n {React.Children.map(props.children, (child) =>\n React.isValidElement(child) ? React.cloneElement(child as JSX.Element, { id }) : child\n )}\n \n \n );\n};\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { ValidationError } from '@oysterjs/types';\n\nimport { AutocompleteTextInput, TextInput } from './text';\nimport { getLocationSuggestions, getMapURL, MAPBOX_PUBLIC_KEY } from '@oysterjs/core/mapbox';\nimport { FormColumn, FormRow } from './builder';\nimport { AddressAutofill } from '@mapbox/search-js-react';\nimport config from '@oysterjs/core/config';\n\nconst ErrorDisplay = styled.div`\n font-size: 0.8em;\n margin-top: 5px;\n color: #d1344b;\n`;\n\ninterface AddressInputProps {\n id: string;\n\n onChange: (address: string, longitude: number, latitude: number) => void;\n disabled?: boolean;\n\n initialAddress?: [string, number, number];\n validationError?: ValidationError;\n}\n\nexport const AddressInput: React.FunctionComponent> = (\n props\n) => {\n const [state, setState] = React.useState<[string, number, number]>(\n props.initialAddress || ['', 0, 0]\n );\n const [suggestions, setSuggestions] = React.useState<\n {\n address: string;\n coordinates: [number, number];\n }[]\n >([]);\n const [validationError, setValidationError] = React.useState(props.validationError);\n\n React.useEffect(() => {\n setValidationError(props.validationError);\n }, [props.validationError]);\n\n const setData = (address: string, longitude: number, latitude: number) => {\n setState([address, longitude, latitude]);\n props.onChange(address, longitude, latitude);\n };\n\n return (\n <>\n s.address)}\n error={!!validationError}\n value={state[0]}\n onChange={(value) => {\n setData(value, 0, 0);\n setValidationError(undefined);\n getLocationSuggestions(value).then(setSuggestions);\n }}\n onSelectSuggestion={(suggestion, index) => {\n setData(suggestion, suggestions[index].coordinates[0], suggestions[index].coordinates[1]);\n setValidationError(undefined);\n }}\n disabled={props.disabled}\n />\n {validationError && {validationError?.Message}}\n {state[1] !== 0 && state[2] !== 0 && (\n \n )}\n \n );\n};\n\ninterface Address {\n businessName?: string;\n streetAddress?: string;\n streetAddressLine2?: string;\n aptFloor?: string;\n aptUnit?: string;\n city?: string;\n state?: string;\n zipCode?: string;\n}\n\ninterface AddressInputFormProps {\n showBusinessName?: boolean;\n showSecondLine?: boolean;\n singleSecondLine?: boolean;\n initialValue?: Address;\n validationError?: Partial>;\n onChange: (address: Address) => void;\n disabled?: boolean;\n}\n\nconst ConditionalWrapper = ({ condition, wrap, children }) =>\n condition ? wrap(children) : children;\n\nexport const AddressInputForm: React.FunctionComponent<\n React.PropsWithChildren\n> = (props) => {\n const [state, setState] = React.useState
    (\n props.initialValue || {\n businessName: '',\n streetAddress: '',\n streetAddressLine2: '',\n aptFloor: '',\n aptUnit: '',\n city: '',\n state: '',\n zipCode: ''\n }\n );\n\n const onChange = (fn: (prev: Address) => Address) =>\n setState((prev) => {\n const next = fn(prev);\n props.onChange(next);\n return next;\n });\n\n return (\n <>\n {props.showBusinessName && (\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, businessName: value }));\n }}\n autoComplete=\"organization\"\n />\n \n \n )}\n \n \n (\n {child}\n )}\n >\n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, streetAddress: value }));\n }}\n autoComplete=\"address-line1\"\n />\n \n \n \n {props.showSecondLine && props.singleSecondLine && (\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, streetAddressLine2: value }));\n }}\n autoComplete=\"address-line2\"\n />\n \n \n )}\n {props.showSecondLine && !props.singleSecondLine && (\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, aptFloor: value }));\n }}\n />\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, aptUnit: value }));\n }}\n />\n \n \n )}\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, city: value }));\n }}\n autoComplete=\"address-level2\"\n />\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, state: value }));\n }}\n autoComplete=\"address-level1\"\n />\n \n \n {\n const value = e.currentTarget.value;\n onChange((prev) => ({ ...prev, zipCode: value }));\n }}\n inputMode=\"numeric\"\n autoComplete=\"postal-code\"\n />\n \n \n \n );\n};\n","import styled from 'styled-components';\n\nconst SwitchContainer = styled.div``;\n\nconst SwitchLabel = styled.label<{ disabled?: boolean }>`\n position: relative;\n display: inline-block;\n width: 48px;\n height: 26px;\n\n opacity: ${(props) => (props.disabled ? 0.5 : 1.0)};\n transition: 0.15s all ease-in-out;\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n .slider {\n position: absolute;\n cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 1px solid rgba(200, 200, 200, 0.8);\n transition: 0.15s all ease-in-out;\n border-radius: 34px;\n background: white;\n }\n\n .slider:before {\n position: absolute;\n content: '';\n height: 18px;\n width: 18px;\n left: 4px;\n bottom: 3px;\n background-color: rgba(200, 200, 200, 0.8);\n transition: 0.15s all ease-in-out;\n border-radius: 50%;\n }\n\n input:checked + .slider {\n background-color: #0ea5e9;\n border: 1px solid #0ea5e9;\n }\n\n input:checked + .slider:before {\n transform: translateX(20px);\n background-color: white;\n }\n`;\n\nexport const Switch = (props: {\n enabled?: boolean;\n disabled?: boolean;\n loading?: boolean;\n onChange?: (checked: boolean) => void;\n}): JSX.Element => (\n \n \n {\n props.onChange?.(e.currentTarget.checked);\n }}\n />\n \n \n \n);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nimport { DatePicker } from '@oysterjs/ui/Form/datepicker';\n\nimport {\n IoAirplane,\n IoBandage,\n IoBonfire,\n IoCheckmarkCircle,\n IoCheckmarkSharp,\n IoCloseSharp,\n IoCog,\n IoEllipseOutline,\n IoFlame,\n IoFlash,\n IoHammer,\n IoHome,\n IoLayers,\n IoLocation,\n IoMedkit,\n IoRainy,\n IoSad,\n IoShield,\n IoWater\n} from 'react-icons/io5';\n\nimport { createClaimAttachments, deleteClaimAttachment } from '@oysterjs/core/api/claims';\nimport { CardGallery, SelectableOptionCard } from '@oysterjs/ui/Card';\nimport { TextAreaInput, TextInput } from '@oysterjs/ui/Form/text';\nimport { Spinner } from '@oysterjs/ui/Spinner';\nimport { RequirementItem } from '@oysterjs/ui/common';\nimport { getProductDisplayName } from '@oysterjs/core/policy';\nimport {\n Claim,\n ClaimAttachment,\n ClaimSection,\n ClaimSectionItem,\n ClaimType,\n ConfirmItem,\n LocationItem,\n Product,\n SelectItem,\n TextItem,\n UploadItem,\n ValidationError\n} from '@oysterjs/types';\n\nimport { Attachment } from '../attachment';\nimport { ClaimSectionItemFunction } from './section';\nimport { AddressInput } from '@oysterjs/ui/Form/address';\nimport { Switch } from '@oysterjs/ui/Form/switch';\nimport { useId } from 'react-id-generator';\nimport { ErrorType, WrappedError } from '@oysterjs/core/errors';\n\nexport const ErrorDisplay = styled.div`\n font-size: 0.8em;\n margin-top: 5px;\n color: #d1344b;\n`;\n\nexport const ProductSection = (props: {\n products: Product[];\n loading?: boolean;\n selectedProductId?: string;\n validationError?: ValidationError;\n onContinue: (product: Product) => void;\n}) => {\n const [selectedProductId, setSelectedProductId] = React.useState(props.selectedProductId);\n\n React.useEffect(() => {\n setSelectedProductId(props.selectedProductId);\n }, [props.selectedProductId]);\n\n if (props.products.length === 0) {\n return

    You don't have any items you can file a claim for.

    ;\n }\n\n return (\n \n {props.products.map((product) => (\n {\n setSelectedProductId(product.ID);\n props.onContinue(product);\n }}\n image={}\n />\n ))}\n {props.validationError && {props.validationError.Message}}\n \n );\n};\n\nexport const getFieldKey = (...fields: string[]): string => fields.join('.').replace(/\\.+$/g, '');\n\nexport const getData = (claim: Claim, ...fields: string[]): T => {\n const key = getFieldKey(...fields);\n if (claim[key]) {\n return claim[key];\n }\n\n // eslint-disable-next-line\n // @ts-ignore\n return claim.Data[key] as T;\n};\n\nconst getClaimIcon = (claimType: string) =>\n ({\n // claim type icons\n [ClaimType.theft]: ,\n [ClaimType.damage]: ,\n [ClaimType.injury]: ,\n [ClaimType.liability]: ,\n [ClaimType.other]: ,\n [ClaimType.electricalBreakdown]: ,\n [ClaimType.mechanicalBreakdown]: ,\n [ClaimType.naturalDisaster]: ,\n [ClaimType.waterDamage]: ,\n // damage type icons\n CrackedScreen: ,\n SpillOrLiquid: ,\n SomethingElse: ,\n Fire: ,\n Flood: ,\n Lightning: ,\n Wind: ,\n\n // theft type icons\n TheftFromHome: ,\n TheftAwayFromHome: ,\n LostInTransport: ,\n\n // boolean icons\n Yes: ,\n No: \n })[claimType] || <>;\n\nexport const SelectSection: ClaimSectionItemFunction = {\n autoContinue: true,\n getData: (claim) => [claim.Types.length > 0],\n component: (props) => {\n const sectionItem = props.sectionItem.Item as SelectItem;\n const [selected, setSelected] = React.useState(\n getData(props.claim, props.section.Field, props.sectionItem.SubField) || []\n );\n\n React.useEffect(() => {\n setSelected(getData(props.claim, props.section.Field, props.sectionItem.SubField) || []);\n }, [props.claim, props.section, props.sectionItem]);\n\n return (\n \n {sectionItem.AllowedValues.map((type) => (\n {\n setSelected([type.Value]);\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField),\n type.Value\n );\n }}\n image={getClaimIcon(type.Icon)}\n />\n ))}\n \n );\n }\n};\n\nexport const CheckboxSection: ClaimSectionItemFunction = {\n getData: () => [],\n component: (props) => {\n const [selected, setSelected] = React.useState(\n getData(props.claim, props.section.Field, props.sectionItem.SubField) || ''\n );\n\n React.useEffect(() => {\n setSelected(getData(props.claim, props.section.Field, props.sectionItem.SubField) || '');\n }, [props.claim, props.section, props.sectionItem]);\n\n return (\n {\n setSelected(selected ? '' : '1');\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField),\n selected ? '' : '1'\n );\n }}\n />\n );\n }\n};\n\nexport const TextSection: ClaimSectionItemFunction = {\n getData: (claim, section, sectionItem) =>\n (sectionItem.Item as TextItem).Required\n ? [getData(claim, section.Field, sectionItem.SubField)]\n : [],\n onContinue: (claim, section, sectionItem, setData) => {\n if (\n !(sectionItem.Item as TextItem).Required &&\n !getData(claim, section.Field, sectionItem.SubField)\n ) {\n setData(getFieldKey(section.Field, sectionItem.SubField), '');\n }\n },\n component: (props) => {\n const [id] = useId();\n const [text, setText] = React.useState(\n getData(props.claim, props.section.Field, props.sectionItem.SubField) || ''\n );\n const [validationError, setValidationError] = React.useState(props.validationError);\n\n React.useEffect(() => {\n setValidationError(props.validationError);\n }, [props.validationError]);\n\n React.useEffect(() => {\n setText(getData(props.claim, props.section.Field, props.sectionItem.SubField) || '');\n }, [props.claim, props.section, props.sectionItem]);\n\n return (\n
    \n \n {\n setValidationError(undefined);\n setText(e.currentTarget.value);\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField),\n e.currentTarget.value\n );\n }}\n disabled={props.loading}\n />\n
    \n );\n }\n};\n\nexport const DateSection: ClaimSectionItemFunction = {\n getData: (claim, section, sectionItem) => [\n new Date(getData(claim, section.Field, sectionItem.SubField) || '').valueOf() > 0\n ],\n component: (props) => {\n const [date, setDate] = React.useState(\n new Date(getData(props.claim, props.section.Field, props.sectionItem.SubField) || '')\n );\n const [validationError, setValidationError] = React.useState(props.validationError);\n\n React.useEffect(() => {\n setValidationError(props.validationError);\n }, [props.validationError]);\n\n React.useEffect(() => {\n setDate(\n new Date(getData(props.claim, props.section.Field, props.sectionItem.SubField) || '')\n );\n }, [props.claim, props.section, props.sectionItem]);\n\n return (\n <>\n {\n setValidationError(undefined);\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField),\n date.toISOString()\n );\n }}\n selected={date}\n disabled={(day) => {\n const today = new Date(new Date().setHours(0, 0, 0, 0));\n return day.getTime() >= today.setDate(today.getDate() + 1);\n }}\n />\n {validationError && {validationError?.Message}}\n \n );\n }\n};\n\nconst getLocationSectionState = (\n claim: Claim,\n section: ClaimSection,\n sectionItem: ClaimSectionItem\n): [string, number, number] => [\n getData(\n claim,\n section.Field,\n sectionItem.SubField,\n (sectionItem.Item as LocationItem).AddressField\n ),\n parseFloat(\n getData(\n claim,\n section.Field,\n sectionItem.SubField,\n (sectionItem.Item as LocationItem).LongitudeField\n ) || '0'\n ),\n parseFloat(\n getData(\n claim,\n section.Field,\n sectionItem.SubField,\n (sectionItem.Item as LocationItem).LatitudeField\n ) || '0'\n )\n];\n\nexport const LocationSection: ClaimSectionItemFunction = {\n getData: getLocationSectionState,\n component: (props) => {\n const [id] = useId();\n\n const sectionItem = props.sectionItem.Item as LocationItem;\n const [state, setState] = React.useState<[string, number, number]>(\n getLocationSectionState(props.claim, props.section, props.sectionItem)\n );\n\n React.useEffect(() => {\n setState(getLocationSectionState(props.claim, props.section, props.sectionItem));\n }, [props.claim, props.section, props.sectionItem]);\n\n const setData = (address: string, longitude: number, latitude: number) => {\n setState([address, longitude, latitude]);\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField, sectionItem.AddressField),\n address\n );\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField, sectionItem.LongitudeField),\n longitude.toString()\n );\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField, sectionItem.LatitudeField),\n latitude.toString()\n );\n };\n\n return (\n <>\n \n \n \n );\n }\n};\n\nexport const LongTextSection: ClaimSectionItemFunction = {\n getData: (claim, section, sectionItem) => [getData(claim, section.Field, sectionItem.SubField)],\n component: (props) => {\n const [id] = useId();\n const [text, setText] = React.useState(\n getData(props.claim, props.section.Field, props.sectionItem.SubField)\n );\n const [validationError, setValidationError] = React.useState(props.validationError);\n\n React.useEffect(() => {\n setValidationError(props.validationError);\n }, [props.validationError]);\n\n React.useEffect(() => {\n setText(getData(props.claim, props.section.Field, props.sectionItem.SubField));\n }, [props.claim, props.section, props.sectionItem]);\n\n return (\n
    \n \n {\n setValidationError(undefined);\n setText(e.currentTarget.value);\n props.setData(\n getFieldKey(props.section.Field, props.sectionItem.SubField),\n e.currentTarget.value\n );\n }}\n disabled={props.loading}\n />\n
    \n );\n }\n};\n\nconst UploadGroupContainer = styled.div<{ enabled?: boolean; error?: boolean; dragging?: boolean }>`\n box-shadow: ${(props) =>\n props.error ? '0 0 0 2px #d1344b' : props.enabled ? '0 0 0 2px #0ea5e9' : '0 0 0 0px #C8C8C8'};\n border: ${(props) =>\n props.enabled || props.error ? '1px solid transparent' : '1px dashed #C8C8C8'};\n border-radius: 8px;\n transition: 0.15s all ease-in-out;\n padding: 16px;\n box-sizing: border-box;\n background: ${(props) => (props.dragging ? '#e2e2e2' : 'white')};\n\n display: flex;\n flex-direction: row;\n margin: 0px;\n\n * {\n pointer-events: none;\n }\n`;\n\nconst UploadGroupCheckboxContainer = styled.div`\n width: 30px;\n`;\n\nconst UploadGroupContentContainer = styled.div`\n width: calc(100% - 30px);\n`;\n\nconst UploadGroupDescription = styled.div`\n color: #999999;\n font-size: 0.9em;\n margin-top: 5px;\n`;\n\nconst UploadGroupContent = styled.div`\n font-size: 0.9em;\n margin-top: 5px;\n padding: 10px 0px 5px 0px;\n\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 5px;\n\n * {\n pointer-events: auto;\n }\n`;\n\nconst UploadGroupHeaderContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n font-weight: 500;\n`;\n\nconst getFilesFromEvent = (dataTransfer?: DataTransfer): File[] => {\n const files: File[] = [];\n\n if (dataTransfer && dataTransfer.items) {\n // Use DataTransferItemList interface to access the file(s)\n for (let i = 0; i < dataTransfer.items.length; i++) {\n // If dropped items aren't files, reject them\n if (dataTransfer.items[i].kind === 'file') {\n const file = dataTransfer.items[i].getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n } else if (dataTransfer && dataTransfer.files) {\n // Use DataTransfer interface to access the file(s)\n for (let i = 0; i < dataTransfer.files.length || 0; i++) {\n const file = dataTransfer.files[i];\n if (file) {\n files.push(file);\n }\n }\n }\n\n return files;\n};\n\nexport const UploadSection: ClaimSectionItemFunction = {\n getData: () => [],\n component: (props) => {\n const sectionItem = props.sectionItem.Item as UploadItem;\n const [loading, setLoading] = React.useState(false);\n const [dragging, setDragging] = React.useState(false);\n\n const attachRef = React.useRef(null);\n const [claimAttachments, setClaimAttachments] = React.useState(\n props.claim.Attachments[getFieldKey(props.section.Field, props.sectionItem.SubField)] || []\n );\n const [fileList, setFileList] = React.useState([]);\n\n const [validationErrors, setValidationErrors] = React.useState([]);\n\n React.useEffect(() => {\n setValidationErrors(\n props.validationError?.SubField === props.sectionItem.SubField\n ? [props.validationError]\n : []\n );\n }, [props.validationError]);\n\n const completed = !loading && fileList.length === 0 && claimAttachments.length > 0;\n\n const uploadFiles = (files: File[]) => {\n if (files.length === 0) {\n setLoading(false);\n return Promise.resolve();\n }\n\n return createClaimAttachments(props.claim.ID, props.sectionItem.SubField, [files[0]])\n .catch((e) => {\n const err = WrappedError.asWrappedError(e);\n if (err.type() === ErrorType.validationError) {\n setValidationErrors((prev) => [...prev, err.getValidationError()]);\n } else {\n setValidationErrors((prev) => [\n ...prev,\n { Field: '', SubField: '', Message: err.message }\n ]);\n }\n })\n .then(() =>\n props\n .updateClaim()\n .then((claim) =>\n setClaimAttachments(\n claim.Attachments[getFieldKey(props.section.Field, props.sectionItem.SubField)] ||\n []\n )\n )\n )\n .then(() =>\n setFileList((prev) => {\n const newList = prev.filter((f) => f.name !== files[0].name);\n return newList;\n })\n )\n .then(() => uploadFiles(files.slice(1)));\n };\n\n const addFiles = (files: File[]) => {\n setValidationErrors([]);\n setFileList((prev) => [...prev, ...files]);\n setLoading(true);\n uploadFiles(files);\n };\n\n const onDragEnter = (e: { dataTransfer?: DataTransfer; preventDefault: () => void }) => {\n e.preventDefault();\n setDragging(true);\n };\n\n const onDragLeave = (e: { dataTransfer?: DataTransfer; preventDefault: () => void }) => {\n e.preventDefault();\n setDragging(false);\n };\n\n const onDragOver = (e: { dataTransfer?: DataTransfer; preventDefault: () => void }) => {\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'copy';\n }\n };\n\n const onDrop = (e: { dataTransfer?: DataTransfer; preventDefault: () => void }) => {\n e.preventDefault();\n setDragging(false);\n\n const files = getFilesFromEvent(e.dataTransfer);\n if (files.length > 0) {\n addFiles(files);\n }\n };\n\n return (\n
    \n addFiles(Array.from(e.currentTarget?.files || []))}\n />\n 0}\n onDragEnter={onDragEnter}\n onDragLeave={onDragLeave}\n onDragOver={onDragOver}\n onDrop={onDrop}\n onClick={() => attachRef?.current?.click()}\n >\n \n {!loading && !completed && (\n \n )}\n {!loading && completed && (\n \n )}\n {loading && }\n \n \n {sectionItem.Name}\n {sectionItem.Description}\n {fileList.length + claimAttachments.length > 0 && (\n \n {claimAttachments.map((f) => (\n {\n setLoading(true);\n deleteClaimAttachment(props.claim.ID, f.ID)\n .then(() =>\n props\n .updateClaim()\n .then((claim) =>\n setClaimAttachments(\n claim.Attachments[\n getFieldKey(props.section.Field, props.sectionItem.SubField)\n ] || []\n )\n )\n )\n .then(() => setLoading(false));\n }}\n />\n ))}\n {fileList.map((f) => (\n \n ))}\n \n )}\n {validationErrors.map((err) => (\n {err.Message}\n ))}\n \n \n \n );\n }\n};\n\nexport const ConfirmSection: ClaimSectionItemFunction = {\n submit: true,\n getData: () => [],\n component: (props) => {\n const sectionItem = props.sectionItem.Item as ConfirmItem;\n const [validationError, setValidationError] = React.useState(props.validationError);\n\n React.useEffect(() => {\n setValidationError(props.validationError);\n }, [props.validationError]);\n\n return (\n <>\n {sectionItem.Confirmation.map((item) => (\n \n ))}\n {validationError && {validationError?.Message}}\n \n );\n }\n};\n","import * as React from 'react';\nimport { IoArrowBack, IoClose } from 'react-icons/io5';\nimport styled from 'styled-components';\n\nconst Overlay = styled.div<{ disableMobileView?: boolean }>`\n background: radial-gradient(rgba(45, 45, 45, 0.25), rgba(0, 0, 0, 0.6));\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n\n ${(props) =>\n !props.disableMobileView &&\n `@media (max-width: 600px) {\n .outer {\n margin: 0 !important\n }\n .inner {\n margin: 0 !important;\n min-height: 100% !important;\n }\n }`}\n`;\n\nconst Popup = styled.div<{ disableMobileView?: boolean }>`\n font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n background: white;\n box-shadow: 0px 0px 24px rgba(80, 80, 80, 0.5);\n border-radius: 8px;\n width: 90%;\n min-width: 500px;\n max-width: 600px;\n box-sizing: border-box;\n\n ${(props) =>\n !props.disableMobileView &&\n `@media (max-width: 600px) {\n top: 0;\n min-height: 100%;\n width: 100%;\n min-width: 100%;\n max-width: 100%;\n border-radius: 0px;\n }`}\n`;\n\nconst ContentBox = styled.div`\n box-sizing: border-box;\n padding: 40px 60px;\n`;\n\nconst CloseIcon = styled.div`\n font-size: 1.4em;\n position: absolute;\n top: 0;\n right: 0;\n color: #999999;\n\n :hover {\n color: #333333;\n cursor: pointer;\n }\n`;\n\nconst BackIcon = styled.div`\n font-size: 1.4em;\n position: absolute;\n top: 0;\n left: 0;\n color: #999999;\n\n :hover {\n color: #333333;\n cursor: pointer;\n }\n`;\n\nconst Header = (props: {\n headerContents: JSX.Element;\n onClose: () => void;\n onBack?: () => void;\n}) => (\n \n {props.headerContents}\n \n \n \n {props.onBack && (\n \n \n \n )}\n \n);\n\ninterface ModalProps {\n headerContents: JSX.Element;\n disableMobileView?: boolean;\n\n onClose: () => void;\n onBack?: () => void;\n}\n\nexport const Modal: React.FunctionComponent<\n React.AllHTMLAttributes & ModalProps\n> = (props) => (\n \n
    \n \n \n e.stopPropagation()} {...props}>\n \n \n {props.children}\n \n \n
    \n \n \n
    \n);\n\nexport const CustomModal: React.FunctionComponent> = (\n props\n) => (\n \n
    \n \n \n e.stopPropagation()} {...props}>\n {props.children}\n \n
    \n \n \n
    \n);\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst BadgeContainer = styled.div<{ color: string }>`\n display: flex;\n gap: 5px;\n justify-content: center;\n align-items: center;\n border-radius: 20px;\n padding: 4px 12px;\n background: ${(props) => props.color};\n box-sizing: border-box;\n font-size: 0.75em;\n font-weight: 500;\n color: #333333;\n`;\n\nexport const Badge = (\n props: React.PropsWithChildren<{\n icon?: JSX.Element;\n label: string;\n color: string;\n textColor?: string;\n display?: string;\n }>\n) => (\n
    \n \n {props.icon && (\n
    \n {props.icon}\n
    \n )}\n
    {props.label}
    \n
    \n
    \n);\n","import * as React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport {\n IoArrowForward,\n IoCalendarClear,\n IoCloudUpload,\n IoDocumentText,\n IoFlag,\n IoLocation,\n IoPencil,\n IoTrailSign,\n IoTrashOutline\n} from 'react-icons/io5';\n\nimport {\n createClaim,\n deleteClaim,\n getClaim,\n getClaims,\n resetClaim,\n submitClaim,\n updateClaim\n} from '@oysterjs/core/api/claims';\nimport { Button, ButtonContainer, ButtonLink, UnstyledButton } from '@oysterjs/ui/Button';\nimport { PageSection, TwoPaneContainer } from '@oysterjs/ui/Page';\nimport { Table } from '@oysterjs/ui/Table';\nimport { VerticalLayout, VerticalLayoutItem } from '@oysterjs/ui/VerticalLayout';\nimport { useDynamicRefs } from '@oysterjs/core/dynamicRefs';\nimport { useWindowDimensions, useWindowScrollPosition } from '@oysterjs/core/window';\nimport {\n Claim,\n ClaimSection,\n ClaimSectionItemType,\n ClaimState,\n ClaimType,\n LocationItem,\n LongTextItem,\n Policy,\n PolicyState,\n SelectItem,\n UploadItem,\n ValidationError\n} from '@oysterjs/types';\n\nimport {\n CheckboxSection,\n ConfirmSection,\n DateSection,\n ErrorDisplay,\n getData,\n getFieldKey,\n LocationSection,\n LongTextSection,\n ProductSection,\n SelectSection,\n TextSection,\n UploadSection\n} from './sections';\nimport { Attachment } from './attachment';\nimport { getMapURL } from '@oysterjs/core/mapbox';\nimport { ClaimSectionItemFunction } from './sections/section';\nimport { Modal } from '@oysterjs/ui/Modal';\nimport { Badge } from '@oysterjs/ui/Badge/index';\nimport { ErrorType, WrappedError } from '@oysterjs/core/errors';\nimport { Loadable } from '@oysterjs/ui/Loadable';\nimport { getAccountSummary } from '@oysterjs/core/api/user';\n\nconst HeaderContainer = styled.div`\n display: flex;\n\n h1 {\n width: 100%;\n }\n`;\n\nconst ClaimActionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-end;\n min-width: 150px;\n`;\n\nconst getClaimBadge = (state: ClaimState): JSX.Element => {\n switch (state) {\n case ClaimState.collectingInformation:\n case ClaimState.unknown:\n return ;\n case ClaimState.awaitingProcessing:\n return ;\n case ClaimState.denied:\n return ;\n case ClaimState.settled:\n return ;\n default:\n return ;\n }\n};\n\nconst relativeTimeString = (start: Date, end: Date): string => {\n const formatter = new Intl.RelativeTimeFormat('en', { style: 'narrow' });\n const units = [\n { div: 1000, unit: 'seconds' },\n { div: 60, unit: 'minutes' },\n { div: 60, unit: 'hours' },\n { div: 24, unit: 'days' },\n { div: 30, unit: 'months' },\n { div: 12, unit: 'years' },\n { div: 1000, unit: '' }\n ];\n\n // start with time difference in milliseconds\n let diff = start.getTime() - end.getTime();\n\n // iteratively divide by the divisor of each unit while there\n // is a whole next unit\n for (let i = 0; i < units.length; i++) {\n diff /= units[i].div;\n if (Math.abs(diff) < units[i + 1].div) {\n // We need the RelativeTimeFormatUnit type to make this typecheck\n // but that type definition isn't available (hence the any, hence\n // the eslint disable).\n // eslint-disable-next-line\n return formatter.format(Math.floor(diff), units[i].unit as any);\n }\n }\n\n return 'a long time ago';\n};\n\nconst ClaimsTable = (props: { claims: Claim[] }) => {\n const [claims, setClaims] = React.useState(props.claims);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState();\n\n React.useEffect(() => {\n setClaims(props.claims);\n }, [props.claims]);\n\n const [showDeleteClaimConfirmation, setShowDeleteClaimConfirmation] = React.useState('');\n const history = useHistory();\n\n return (\n <>\n {showDeleteClaimConfirmation && (\n setShowDeleteClaimConfirmation('')}\n headerContents={

    Confirm delete

    }\n >\n

    \n Are you sure you want to delete this claim? This cannot be undone.\n

    \n \n \n }\n loading={loading}\n onClick={() => {\n setLoading(true);\n deleteClaim(showDeleteClaimConfirmation)\n .then(getClaims)\n .then(({ Claims }) => setClaims(Claims))\n .then(() => setShowDeleteClaimConfirmation(''))\n .catch((err) => setError(err.message))\n .finally(() => setLoading(false));\n }}\n >\n Confirm\n \n \n {error && {error}}\n \n )}\n \n \n \n \n \n \n \n \n \n {claims.map((claim) => (\n history.push(`/claims/${claim.ID}`)}\n style={{ cursor: 'pointer' }}\n >\n \n \n \n \n \n ))}\n \n
    Insured ItemStatusLast Updated\n
    \n
    {claim.Product?.Name}
    \n
    {claim.Types?.join(', ') || 'Unknown'}
    \n
    \n {getClaimBadge(claim.State)}\n \n {relativeTimeString(new Date(claim.UpdatedAt), new Date())}\n \n
    \n {claim.State === ClaimState.collectingInformation && (\n {\n setShowDeleteClaimConfirmation(claim.ID);\n e.stopPropagation();\n }}\n aria-label=\"Delete Claim\"\n >\n \n \n )}\n {\n history.push(`/claims/${claim.ID}`);\n e.stopPropagation();\n }}\n aria-label=\"View or Edit Claim\"\n >\n \n \n
    \n
    \n \n );\n};\n\nexport const ResumeClaimsPage = (props: { claims: Claim[] }): JSX.Element => {\n const history = useHistory();\n const startClaim = () => history.push(`/claims/start`);\n\n const claimsPhrase = props.claims.length === 1 ? 'a claim' : 'some claims';\n return (\n \n \n

    Resume a claim?

    \n \n \n \n
    \n

    \n It looks like you already have {claimsPhrase} open. Would you like to resume or close one of\n those instead? You can still create a new claim if this claim is for an different insured\n item.\n

    \n \n
    \n );\n};\n\nexport const ClaimsPage = (props: { claims: Claim[]; policies: Policy[] }): JSX.Element => {\n const policies = props.policies.filter((p) => p.State === PolicyState.policyInforce);\n\n return (\n \n \n {() => {\n const hasNoClaims = (props.claims?.length || 0) === 0;\n const requireVerification = false;\n const verificationPending = false;\n\n const shouldDisableClaimCTA = policies.length === 0 || verificationPending;\n let startClaimCTALabel = 'Start a claim';\n if (verificationPending) {\n startClaimCTALabel = 'Identity verification in progress';\n } else if (requireVerification) {\n startClaimCTALabel = 'Verify your identity to start a claim';\n }\n\n const getClaimURL = (): string => {\n if (requireVerification) {\n return '/account/profile';\n }\n\n if (hasNoClaims) {\n return '/claims/start';\n } else {\n // Check if there is an existing claim\n if (\n props.claims.find(\n (c) => c.State != ClaimState.denied && c.State != ClaimState.settled\n )\n ) {\n return '/claims/resume';\n } else {\n return '/claims/start';\n }\n }\n };\n\n return (\n <>\n \n

    Your Claims

    \n {(props.claims?.length || 0) > 0 && (\n \n 0 && !shouldDisableClaimCTA ? (\n \n ) : undefined\n }\n href={getClaimURL()}\n >\n {policies.length > 0 ? startClaimCTALabel : 'No active policies'}\n \n \n )}\n
    \n {hasNoClaims && (\n
    \n
    \n \n

    You don't have any claims.

    \n \n 0 && !shouldDisableClaimCTA ? (\n \n ) : undefined\n }\n href={getClaimURL()}\n >\n {policies.length > 0 ? startClaimCTALabel : 'No active policies'}\n \n \n
    \n
    \n )}\n {(props.claims?.length || 0) > 0 && }\n \n );\n }}\n
    \n
    \n );\n};\n\nconst ClaimSectionOuter = (\n props: React.PropsWithChildren<{\n active: boolean;\n icon: JSX.Element;\n title: string;\n description?: string;\n }>\n) => (\n \n

    {props.title}

    \n {props.description &&

    {props.description}

    }\n {props.children}\n \n);\n\nconst ClaimSectionItem = (\n props: React.PropsWithChildren<{\n subTitle?: string;\n description?: string;\n }>\n) => (\n
    \n {props.subTitle && (\n

    \n {props.subTitle}\n

    \n )}\n {props.description && (\n

    {props.description}

    \n )}\n {props.children}\n
    \n);\n\ninterface ClaimPageProps {\n claim?: Claim;\n policies: Policy[];\n}\n\nexport const ClaimPage = (props: ClaimPageProps): JSX.Element => {\n const { scrollPosY } = useWindowScrollPosition();\n const { innerHeight } = useWindowDimensions();\n const history = useHistory();\n\n // loading indicates that a request is in progress. all elements will respond\n // to this state by preventing data entry.\n const [loading, setLoading] = React.useState(false);\n\n // claim stores the current claim object, starting with the initial claim. this\n // is updated after each section is completed.\n const [claim, setClaim] = React.useState(props.claim);\n\n // validationError stores any validation error that may have occured, while editing\n // an in-progress claim or at claim submission. Claim sections will receive this\n // if the `Field` property matches the section's ID.\n const [validationError, setValidationError] = React.useState();\n\n // dynamic refs hook let us dynamically create and retrieve references to the\n // dom, without knowing in advance how many refs we need. this is particularly\n // useful here because we render claim sections based on the claim object, which\n // can vary, and then use the refs to scroll between sections.\n const { getRef, setRef } = useDynamicRefs();\n\n // sections stores each claim section that is displayed on the page. this is updated\n // any time the claim object changes.\n const [sections, setSections] = React.useState<{ key: string; section: JSX.Element }[]>([]);\n\n // sectionContinued indicates the key of the section that the user last completed\n // and clicked \"continue\" (or equivalent option) on. This is then used to scroll to\n // the next section.\n const [sectionContinued, setSectionContinued] = React.useState('');\n\n // computes the key of the section `offset` away from the section given by\n // `section`. It will return the empty string if that section does not exist.\n const sectionAtOffset = (section: string, offset: number): string => {\n const sectionIndex = sections.findIndex((s) => s.key === section);\n const nextSectionKey = sections[sectionIndex + offset]?.key;\n return nextSectionKey || '';\n };\n\n // determines if a given section is active or not\n const isInactive = (sectionKey: string) => {\n const bottom = scrollPosY + innerHeight;\n\n const sectionIndex = sections.findIndex((s) => s.key === sectionKey);\n const elem = getRef(sectionKey)?.current?.offsetTop || 0;\n\n const nextSectionKey = sections[sectionIndex + 1]?.key;\n const nextElem = getRef(nextSectionKey)?.current?.offsetTop || bottom;\n\n if (sectionIndex <= 0) {\n return elem < scrollPosY;\n }\n\n if (elem < scrollPosY && nextElem < bottom) {\n return true;\n }\n\n return !isInactive(sections[sectionIndex - 1].key);\n };\n\n // sets update the local claim object with the given field and data, and then\n // performs a remote update if specified.\n const setData = (section: ClaimSection, field: string, value: string, updateClaim: boolean) => {\n if (field === 'Types') {\n setClaim((prev) => {\n const newClaim = {\n ...(prev as Claim),\n Types: value.split(',') as ClaimType[]\n };\n\n if (updateClaim) {\n doUpdateClaim(section.ID, newClaim);\n }\n\n return newClaim;\n });\n } else {\n setClaim((prev) => {\n const newClaim = {\n ...(prev as Claim),\n [field]: value,\n Data: {\n ...(prev?.Data || {}),\n [field]: value\n }\n };\n\n if (updateClaim) {\n doUpdateClaim(section.ID, newClaim);\n }\n\n return newClaim;\n });\n }\n };\n\n // updates the given claim and sets the section that was just completed, if successful\n const doUpdateClaim = (sectionKey: string, claim: Claim) => {\n setLoading(true);\n return updateClaim(claim)\n .then((data) => {\n // don't set an error if the sections have changed\n const currentSections = claim.Sections.flatMap((s) => s.Items.map((i) => i.SubField));\n const newSections = data.Claim.Sections.flatMap((s) => s.Items.map((i) => i.SubField));\n const equal =\n currentSections.length === newSections.length &&\n newSections.reduce((prev, curr, i) => prev && curr === currentSections[i], true);\n\n if (!equal || data.NextError?.Field !== sectionKey) {\n setValidationError(undefined);\n setSectionContinued(sectionKey);\n } else {\n const prevSection = sectionAtOffset(sectionKey, -1);\n setValidationError(data.NextError);\n if (prevSection) {\n setSectionContinued(prevSection);\n }\n }\n\n setClaim(data.Claim);\n })\n .catch((err) => {\n setSectionContinued(sectionKey);\n setValidationError({\n Field: sectionKey,\n SubField: '',\n Message: err.message || err.toString()\n });\n })\n .finally(() => setLoading(false));\n };\n\n // submits the claim\n const doSubmit = (section: ClaimSection) => {\n setLoading(true);\n submitClaim(claim?.ID || '')\n .then(({ Claim }) => {\n setValidationError(undefined);\n setClaim(Claim);\n })\n .catch((e) => {\n const err = WrappedError.asWrappedError(e);\n if (err.type() === ErrorType.validationError) {\n const sectionKey = sectionAtOffset(err.metadata().Field, -1);\n setValidationError(err.getValidationError());\n if (sectionKey) {\n setSectionContinued(sectionKey);\n }\n } else {\n setValidationError({\n Field: section.Field,\n SubField: '',\n Message: err.message\n });\n }\n })\n .finally(() => setLoading(false));\n };\n\n // creates or resets a claim, depending on the current claim state.\n const createOrResetClaim = (product) => {\n const policyId =\n props.policies.find((p) => !!p.InsuredItems.find((pr) => pr.ID === product.ID))?.ID || '';\n const productId = product.ID || '';\n setLoading(true);\n\n if (claim) {\n resetClaim(claim.ID, policyId, productId)\n .then(({ Claim }) => setClaim(Claim))\n .then(() => setSectionContinued('start'))\n .then(() => setValidationError(undefined))\n .catch((err) =>\n setValidationError({\n Field: 'start',\n Message: err.message\n })\n )\n .finally(() => setLoading(false));\n } else {\n createClaim(policyId, productId)\n .then(({ Claim }) => {\n history.replace('/claims/' + Claim.ID);\n setClaim(Claim);\n })\n .then(() => setSectionContinued('start'))\n .then(() => setValidationError(undefined))\n .catch((err) =>\n setValidationError({\n Field: 'start',\n Message: err.message\n })\n )\n .finally(() => setLoading(false));\n }\n };\n\n // creates a section based on a claim section description, creating all input\n // elements inside.\n const createSection = (section: ClaimSection) => {\n if (!claim) {\n return {\n key: section.ID,\n section: <>\n };\n }\n\n const sectionIcons = {\n [ClaimSectionItemType.select]: ,\n [ClaimSectionItemType.date]: ,\n [ClaimSectionItemType.location]: ,\n [ClaimSectionItemType.longText]: ,\n [ClaimSectionItemType.upload]: ,\n [ClaimSectionItemType.confirm]: \n };\n\n const sectionTypeMap: Record = {\n [ClaimSectionItemType.checkbox]: CheckboxSection,\n [ClaimSectionItemType.select]: SelectSection,\n [ClaimSectionItemType.text]: TextSection,\n [ClaimSectionItemType.date]: DateSection,\n [ClaimSectionItemType.location]: LocationSection,\n [ClaimSectionItemType.longText]: LongTextSection,\n [ClaimSectionItemType.upload]: UploadSection,\n [ClaimSectionItemType.confirm]: ConfirmSection\n };\n\n const sectionItems = section.Items.map((sectionItem) => ({\n sectionItem,\n data: sectionTypeMap[sectionItem.Type]\n }));\n\n const needsContinueButton = sectionItems.findIndex((item) => !item.data.autoContinue) >= 0;\n const needsSubmitButton = sectionItems.findIndex((item) => !!item.data.submit) >= 0;\n\n return {\n key: section.ID,\n section: (\n
    \n }\n title={section.Title}\n description={section.Description}\n >\n {sectionItems.map((item) => (\n \n {React.createElement(item.data.component, {\n claim,\n section,\n sectionItem: item.sectionItem,\n loading,\n setData: (field: string, value: string) =>\n setData(section, field, value, !!item.data.autoContinue),\n validationError:\n validationError?.Field === section.Field &&\n validationError?.SubField === item.sectionItem.SubField &&\n item.sectionItem.SubField\n ? validationError\n : undefined,\n updateClaim: () => getClaim(claim.ID || '').then((d) => d.Claim)\n })}\n \n ))}\n {validationError?.Field === section.Field && !validationError?.SubField && (\n {validationError?.Message}\n )}\n {needsContinueButton && !needsSubmitButton && (\n
    \n \n }\n disabled={\n sectionItems.findIndex(\n (item) =>\n item.data\n .getData(claim, section, item.sectionItem)\n .findIndex((v) => !v) >= 0\n ) >= 0\n }\n loading={loading}\n onClick={() =>\n doUpdateClaim(\n section.ID,\n sectionItems.reduce(\n (prev, curr) => {\n let next = { ...prev };\n curr.data.onContinue?.(\n claim,\n section,\n curr.sectionItem,\n (field: string, value: string) => {\n next = {\n ...next,\n [field]: value,\n Data: {\n ...(next.Data || {}),\n [field]: value\n }\n };\n }\n );\n return next;\n },\n { ...claim }\n )\n )\n }\n >\n Continue\n \n \n
    \n )}\n {needsSubmitButton && (\n
    \n \n }\n loading={loading}\n onClick={() => doSubmit(section)}\n >\n Submit Claim\n \n \n
    \n )}\n \n
    \n )\n };\n };\n\n // scrolls to the next section if a section was continued on and there is a next section\n React.useEffect(() => {\n setTimeout(() => {\n if (!sectionContinued) {\n return;\n }\n\n const nextSectionKey = sectionAtOffset(sectionContinued, 1);\n if (getRef(nextSectionKey)?.current?.offsetTop) {\n window.scrollTo({\n top: (getRef(nextSectionKey)?.current?.offsetTop || 0) - 120,\n behavior: 'smooth'\n });\n }\n\n setSectionContinued('');\n }, 10);\n }, [JSON.stringify([sectionContinued, validationError, ...sections.map((s) => s.key)])]);\n\n // creates the sections to render every time a meaningful update happens to the claim state\n React.useEffect(() => {\n setSections([\n {\n key: 'start',\n section: (\n
    \n }\n title=\"Start a claim\"\n description=\"Insurance is for protection and peace of mind, and the claim filing process should reflect that. To get started, select the insured item you want to file a claim for.\"\n >\n policy.State === PolicyState.policyInforce)\n .flatMap((policy) => policy.InsuredItems.filter((item) => !item.Pending))}\n selectedProductId={claim?.Product?.ID}\n loading={loading}\n onContinue={createOrResetClaim}\n validationError={validationError?.Field === 'start' ? validationError : undefined}\n />\n \n
    \n )\n },\n ...(claim?.Sections || []).map(createSection)\n ]);\n }, [\n JSON.stringify([claim, loading, validationError, ...sections.map((s) => isInactive(s.key))])\n ]);\n\n // short circuit the rest of this component if the claim was updated and now is\n // in a non-editable state\n if (claim && claim.State !== ClaimState.collectingInformation) {\n return ;\n }\n\n return (\n \n
    \n {sections.map((s) => s.section)}\n
    \n
    \n );\n};\n\nconst PropertyList = styled.ul`\n list-style: none;\n padding: 10px 0px;\n border-top: 2px solid #f2f2f2;\n font-size: 0.8em;\n color: #999999;\n`;\n\nconst PropertyListItem = (props: { name: string; value: string }) => (\n
  • \n {props.name}\n {props.value}\n
  • \n);\n\nconst ViewClaimPage = (props: { claim: Claim }) => {\n return (\n \n \n

    Claim Summary

    \n\n
    \n
    \n

    Insured Product

    \n

    {props.claim.Product.Name}

    \n
    \n\n {props.claim.Sections.flatMap((section) =>\n section.Items.map((item) => {\n switch (item.Type) {\n case ClaimSectionItemType.select:\n return (\n
    \n

    {item.SubTitle || section.Title}

    \n

    \n {(section.Field === 'Types'\n ? props.claim.Types\n : [getData(props.claim, section.Field, item.SubField) || '']\n )\n ?.map(\n (t) =>\n (item.Item as SelectItem).AllowedValues.find(\n (tt) => tt.Value === t\n )?.Title || ''\n )\n .join(', ')}\n

    \n
    \n );\n\n case ClaimSectionItemType.text:\n return (\n
    \n

    {item.SubTitle || section.Title}

    \n

    \n {getData(props.claim, section.Field, item.SubField)}\n

    \n
    \n );\n\n case ClaimSectionItemType.date:\n return (\n
    \n

    {item.SubTitle || section.Title}

    \n

    \n {new Date(props.claim.IncidentDate).toLocaleDateString()}\n

    \n
    \n );\n\n case ClaimSectionItemType.location:\n return (\n
    \n

    {item.SubTitle || section.Title}

    \n

    \n {\n props.claim.Data[\n getFieldKey(\n section.Field,\n item.SubField,\n (item.Item as LocationItem).AddressField\n )\n ]\n }\n

    \n \n
    \n );\n\n case ClaimSectionItemType.longText:\n return (\n
    \n

    {item.SubTitle || section.Title}

    \n {props.claim.Data[\n getFieldKey(\n section.Field,\n item.SubField,\n (item.Item as LongTextItem).Field\n )\n ]\n .trim()\n .split('\\n')\n .map((paragraph) => (\n

    \n {paragraph}\n

    \n ))}\n
    \n );\n\n case ClaimSectionItemType.upload:\n if (!props.claim.Attachments[getFieldKey(section.Field, item.SubField)]) {\n return null;\n }\n return (\n
    \n

    {(item.Item as UploadItem).Name}

    \n \n {props.claim.Attachments[getFieldKey(section.Field, item.SubField)].map(\n (f) => (\n \n )\n )}\n
    \n
    \n );\n }\n })\n )}\n\n \n \n \n \n \n \n \n }\n >\n

    Your claim

    \n {getClaimBadge(props.claim.State)}\n

    \n Your claim has been successfully submitted! You'll receive a response from the insurance\n carrier as soon as your claim is being processed. Please reach out to our team at\n support@withoyster.com if you have any questions in the meantime.\n

    \n \n \n
    \n );\n};\n","import config from './config';\n\nconst getStaticFileUrl = (path: string): string =>\n `${config().backendBaseUrl.statics}/${path.replace(/^\\/+/, '')}`;\n\nexport const getDocumentUrl = (id: string): string => {\n return getStaticFileUrl(`/doc/${id}`);\n};\n\nexport const getPolicyDocumentUrl = (id: string): string => {\n return getStaticFileUrl(`/policy/doc/${id}`);\n};\n\nexport const getRentalDocumentUrl = (id: string): string => {\n return getStaticFileUrl(`/rental/doc/${id}`);\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nexport const BoxContainer = styled.ul`\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n list-style: none;\n margin: 20px 0px;\n padding: 0px;\n gap: 40px;\n`;\n\nexport const Box = styled.li`\n padding: 30px;\n border: 1px solid #f2f2f2;\n border-radius: 10px;\n background: #fafafa;\n margin: 0;\n\n max-width: calc(33% - 20px);\n flex: 1 0 calc(33% - 30px);\n box-sizing: border-box;\n\n &.endorsement-price {\n max-width: calc(50% - 20px);\n }\n\n &.insured-item-box-item {\n width: 280px;\n }\n\n &.policy-box-item {\n width: 280px;\n display: flex;\n flex-direction: column;\n }\n\n &.coverage-box-item {\n max-width: 500px;\n width: 66%;\n flex: 1 0 calc(50% - 20px);\n }\n\n @media (max-width: 800px) {\n &.coverage-box-item {\n max-width: 100%;\n flex: 1 0 100%;\n }\n }\n\n @media (max-width: 600px) {\n max-width: 100%;\n flex: 1 0 100%;\n\n &.insured-item-box-item {\n max-width: 340px;\n }\n\n &.policy-box-item {\n max-width: 340px;\n }\n }\n\n @media (max-width: 360px) {\n &.insured-item-box-item {\n width: 100%;\n }\n\n &.policy-box-item {\n width: 100%;\n }\n }\n`;\n\nexport const BoxBadgeHeader = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n padding-bottom: 20px;\n`;\n\nexport const BoxItemImage = styled.img`\n width: 100%;\n height: 180px;\n box-sizing: border-box;\n background: transparent;\n object-fit: contain;\n border-radius: 6px;\n margin-bottom: 20px;\n`;\n\nexport const AlternateBoxTitle = styled.div`\n font-size: 1.4em;\n font-weight: 500;\n`;\n\nconst BoxTitle = styled.div`\n font-size: 1em;\n font-weight: 500;\n padding: 0px 20px;\n box-sizing: border-box;\n color: #666666;\n text-align: center;\n width: 100%;\n`;\n\nconst BoxContents = styled.div`\n padding: 20px 10px 0px 10px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 20px;\n`;\n\nconst BoxDescription = styled.div`\n text-align: center;\n width: 100%;\n font-size: 0.8em;\n`;\n\nexport const LeftAlignBoxContents = styled.div`\n padding: 10px 0px 0px 0px;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n align-items: start;\n justify-content: space-between;\n height: 100%;\n`;\n\nexport const BoxItem = (\n props: React.PropsWithChildren<{\n title: string;\n description?: string | JSX.Element;\n className?: string;\n }>\n) => (\n \n {props.title}\n \n {props.children}\n {props.description && {props.description}}\n \n \n);\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport {\n IoAlertCircleSharp,\n IoBan,\n IoCloudOffline,\n IoDownload,\n IoHelp,\n IoHourglass,\n IoPencilSharp,\n IoShieldCheckmark,\n IoTime\n} from 'react-icons/io5';\n\nimport { PageSection } from '@oysterjs/ui/Page';\nimport { getPolicyDisplayName } from '@oysterjs/core/policy';\nimport { Policy, PolicyState } from '@oysterjs/types';\nimport { Redirect, Route as BrowserRoute, Switch, useRouteMatch } from 'react-router-dom';\nimport * as Sentry from '@sentry/react';\nconst Route = Sentry.withSentryRouting(BrowserRoute);\nimport { NavLink } from 'react-router-dom';\nimport { getPolicyDocumentUrl } from '@oysterjs/core/statics';\nimport { BoxContainer, BoxItem } from '@oysterjs/ui/Box';\n\nexport const getPolicyStatus = (\n policy: Policy\n): {\n noDocument?: boolean;\n backgroundColor: string;\n badgeColor: string;\n badge: JSX.Element;\n description: JSX.Element;\n premiumText: JSX.Element;\n stateText: string;\n buttonText?: string;\n} => {\n switch (policy.State) {\n case PolicyState.unknown:\n return {\n noDocument: true,\n backgroundColor: '#e6e6e6',\n badgeColor: 'rgba(0, 0, 0, 0.5)',\n badge: ,\n description: (\n <>\n Your application was started but not completed.\n \n ),\n premiumText: <>Your premium will be determined after you submit your application.,\n stateText: 'In Progress',\n buttonText: 'Continue Application'\n };\n\n case PolicyState.offerSubmitted:\n return {\n noDocument: true,\n backgroundColor: 'rgba(252, 227, 193)',\n badgeColor: 'rgba(214, 131, 0)',\n badge: ,\n description: (\n <>\n We need more information to process your policy.\n \n ),\n premiumText: <>Your payment will be processed when your policy activates.,\n stateText: 'Pending Submission',\n buttonText: 'Finish Application'\n };\n\n case PolicyState.applicationSubmitted:\n case PolicyState.policyBinding:\n if (policy.Coverage.ActivationTrigger && policy.InsuredItems.some((i) => i.HasNotReceived)) {\n return {\n noDocument: true,\n backgroundColor: 'rgba(252, 227, 193)',\n badgeColor: 'rgba(214, 131, 0)',\n badge: ,\n description: (\n <>\n Your application has been submitted, but it has not been activated.\n \n ),\n premiumText: <>Your payment will be processed when your policy activates.,\n stateText: 'Pending Activation',\n buttonText: 'Activate Policy'\n };\n }\n return {\n noDocument: true,\n backgroundColor: 'rgba(178,243,252,0.4)',\n badgeColor: 'rgb(16,98,110,0.4)',\n badge: ,\n description: (\n <>\n Your policy is being processed. Our team is reviewing your information.\n \n ),\n premiumText: <>Your payment will be processed when your policy activates.,\n stateText: 'Processing',\n buttonText: 'View Policy'\n };\n\n case PolicyState.policyInforce:\n return {\n backgroundColor: 'rgba(189, 234, 205)',\n badgeColor: 'rgba(57, 145, 88)',\n badge: ,\n description: (\n <>\n Your policy is active and your items are protected.\n \n ),\n premiumText: (\n <>\n Your policy is effective until {new Date(policy.ExpiresAt).toLocaleDateString()}.\n \n ),\n stateText: 'Active',\n buttonText: 'View Policy'\n };\n\n case PolicyState.policyCanceled:\n return {\n backgroundColor: 'rgb(255, 193, 185)',\n badgeColor: 'rgb(201, 67, 48)',\n badge: ,\n description: (\n <>\n Your policy has been canceled. Contact support for more information.\n \n ),\n premiumText: <>You won't be charged anymore.,\n stateText: 'Canceled',\n buttonText: 'View Policy'\n };\n\n case PolicyState.policyExpired:\n return {\n backgroundColor: '#e6e6e6',\n badgeColor: 'rgba(0, 0, 0, 0.5)',\n badge: ,\n description: (\n <>\n Your policy has expired. Contact support for more information.\n \n ),\n premiumText: <>You won't be charged anymore.,\n stateText: 'Expired',\n buttonText: 'View Policy'\n };\n\n default:\n return {\n backgroundColor: '#e6e6e6',\n badgeColor: 'rgba(0, 0, 0, 0.5)',\n badge: ,\n description: <>There's an issue with your policy. Contact support for more information.,\n premiumText: <>You won't be charged anymore.,\n stateText: 'Unknown',\n buttonText: 'View Policy'\n };\n }\n};\n\nconst PolicyDocument = styled.a`\n display: block;\n border: 1px solid rgba(33, 160, 253, 0.2);\n background: rgba(33, 160, 253, 0.2);\n color: rgba(0, 110, 191, 0.75);\n border-radius: 50%;\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.6em;\n cursor: pointer;\n transition: 0.15s all ease-in-out;\n text-decoration: none;\n\n &:hover {\n border: 1px solid rgba(33, 160, 253, 0.33);\n background: rgba(33, 160, 253, 0.33);\n color: rgba(0, 110, 191, 0.83);\n }\n\n &:active {\n border: 1px solid rgba(33, 160, 253, 0.5);\n background: rgba(33, 160, 253, 0.5);\n color: rgba(0, 110, 191, 1);\n }\n\n &:visited {\n color: rgba(0, 110, 191, 0.75);\n }\n`;\n\nconst PolicyDocumentNotAvailable = styled.div`\n border: 1px dashed #d2d2d2;\n background: #eaeaea;\n color: rgba(0, 0, 0, 0.2);\n border-radius: 50%;\n width: 70px;\n height: 70px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.6em;\n`;\n\nconst PolicyOverview = (props: { policy: Policy }): JSX.Element => {\n const [policy, setPolicy] = React.useState(props.policy);\n const status = getPolicyStatus(policy);\n\n React.useEffect(() => {\n setPolicy(policy);\n }, [props.policy]);\n\n return (\n <>\n \n \n {status.noDocument ? (\n \n {' '}\n \n ) : (\n \n \n \n )}\n \n \n \n );\n};\n\nconst PolicyNavigationContainer = styled.ul`\n list-style: none;\n display: flex;\n margin: 0;\n padding: 0 0 0 0;\n flex-direction: row;\n gap: 24px;\n width: 100%;\n box-shadow: 0 1px 0 0 #f6f6f6;\n`;\n\nconst PolicyNavigationItemContainer = styled.li`\n display: block;\n text-align: center;\n\n a,\n a:visited {\n display: block;\n height: 100%;\n padding: 0px 0px 10px 0px;\n box-sizing: border-box;\n font-size: 0.9em;\n color: #666666;\n text-decoration: none;\n }\n\n a.active {\n color: #0ea5e9;\n font-weight: bold;\n box-shadow: 0 2px 0 0 #0ea5e9;\n }\n`;\n\nexport const PolicyPage = (props: { policy: Policy }) => {\n const { url, path } = useRouteMatch();\n const [policy, setPolicy] = React.useState(props.policy);\n\n React.useEffect(() => {\n setPolicy(props.policy);\n }, [props.policy]);\n\n return (\n \n

    {getPolicyDisplayName(policy)} Insurance

    \n \n
    \n \n \n \n \n \n \n
    \n
    \n );\n};\n","import { PageSection } from '@oysterjs/ui/Page';\nimport { Policy } from '@oysterjs/types';\nimport { getPolicyDisplayImage, getPolicyDisplayName, getPolicyHref } from '@oysterjs/core/policy';\nimport { Badge } from '@oysterjs/ui/Badge';\nimport { IoArrowForward } from 'react-icons/io5';\nimport { getPolicyStatus } from './policy';\nimport { ButtonLink } from '@oysterjs/ui/Button';\nimport {\n Box,\n BoxBadgeHeader,\n BoxItemImage,\n AlternateBoxTitle,\n LeftAlignBoxContents,\n BoxContainer\n} from '@oysterjs/ui/Box';\n\nconst getPolicyBadge = (policy: Policy): JSX.Element => {\n const status = getPolicyStatus(policy);\n return ;\n};\n\nconst getProductTypeFromPolicy = (policy: Policy): string => {\n return policy.InsuredItems[0]?.Details?.Type;\n};\n\nexport const PoliciesPage = ({ policies }: { policies: Policy[] }): JSX.Element => {\n return (\n <>\n \n

    Your Policies

    \n {policies.length === 0 && (\n
    \n \n

    You don't have any policies yet.

    \n
    \n )}\n {policies.length > 0 && (\n \n {policies.map((policy) => (\n \n {getPolicyBadge(policy)}\n \n {getPolicyDisplayName(policy) + ' Insurance'}\n
    \n \n
    \n {getPolicyStatus(policy).description}\n
    \n }>\n {getPolicyStatus(policy).buttonText}\n \n
    \n
    \n
    \n ))}\n
    \n )}\n
    \n \n );\n};\n","import * as Sentry from '@sentry/react';\nimport {\n Switch,\n Route as BrowserRoute,\n Redirect,\n useRouteMatch,\n useHistory\n} from 'react-router-dom';\n\nconst Route = Sentry.withSentryRouting(BrowserRoute);\n\nimport { getPolicies, getPolicy } from '@oysterjs/core/api/user';\nimport { getClaim, getClaims } from '@oysterjs/core/api/claims';\nimport { Loadable } from '@oysterjs/ui/Loadable';\nimport { PageContainer } from '@oysterjs/ui/Page';\nimport { ClaimState } from '@oysterjs/types';\nimport ErrorBoundary from '@oysterjs/ui/ErrorBoundary';\n\nimport { NavBar } from './navbar';\n\nimport { ClaimPage, ClaimsPage, ResumeClaimsPage } from './claims';\nimport { PoliciesPage } from './policies';\nimport { PolicyPage } from './policy';\n\nconst AsyncPoliciesPage = () => (\n \n {([policies]) => }\n \n);\n\nconst AsyncClaimsPage = () => (\n \n {([d, p]) => }\n \n);\n\nconst AsyncPolicyPage = ({ policyId }: { policyId: string }) => (\n \n {([policy]) => }\n \n);\n\nconst AsyncClaimPage = ({ claimId }: { claimId?: string }) => (\n \n {([d, p]) => }\n \n);\n\nconst AsyncResumeClaimPage = () => {\n const history = useHistory();\n return (\n \n {(d) => {\n const notFinished = d.Claims.filter(\n (c) => c.State != ClaimState.denied && c.State != ClaimState.settled\n );\n if (notFinished.length === 0) {\n history.push('/claims/start');\n return null;\n }\n\n return ;\n }}\n \n );\n};\n\nexport default (): JSX.Element => {\n const { path } = useRouteMatch();\n\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","import { User } from '@oysterjs/types';\nimport { Post } from './base';\n\nexport const userSignInInit = (email: string, redirect?: string) =>\n Post(\n '/user/signin/init',\n { Email: email, Redirect: redirect },\n { disableUnauthorizedRedirect: true }\n );\n\nexport const userSignInComplete = (email: string, code: string) =>\n Post<{ Token: string; User: User }>(\n '/user/signin/complete',\n { Email: email, LoginCode: code },\n { disableUnauthorizedRedirect: true }\n );\n\nexport const userSignOut = () => Post('/user/signout', { disableUnauthorizedRedirect: true });\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst DigitsInputContainer = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst Digit = styled.input`\n border: 0;\n outline: none;\n box-shadow: none;\n appearance: none;\n\n border-radius: 15px;\n border: 2px solid #e8e8e8;\n box-sizing: border-box;\n font-size: 1.8em;\n font-weight: 500;\n\n width: 60px;\n height: 72px;\n text-align: center;\n\n transition: 0.15s border ease-in-out;\n\n &:not(:last-child) {\n margin-right: 10px;\n }\n\n &:focus {\n border: 2px solid #0ea5e9;\n }\n\n @media (max-width: 500px) {\n width: 48px;\n height: 58px;\n font-size: 1.4em;\n }\n\n @media (max-width: 400px) {\n width: 42px;\n height: 50px;\n font-size: 1.2em;\n }\n`;\n\nexport const DigitsInput = (props: {\n digits: number;\n initialDigits?: string;\n disabled?: boolean;\n onComplete: (value: string) => void;\n onInputChange: (value: string) => void;\n}): JSX.Element => {\n const refs = [...new Array(props.digits)].map(() => React.useRef(null));\n const [digits, setDigits] = React.useState(\n (() => {\n const digits = new Array(props.digits).fill('');\n (props.initialDigits || '').split('').forEach((v, i) => {\n if (i < digits.length) {\n digits[i] = v;\n }\n });\n return digits;\n })()\n );\n\n React.useEffect(() => {\n refs[0].current?.focus();\n }, []);\n\n return (\n \n {[...new Array(props.digits)].map((_, i) => (\n \n \n {\n if (e.key === 'Backspace') {\n refs[i - 1]?.current?.focus();\n }\n }}\n onFocus={(e) => {\n e.currentTarget.select();\n }}\n onChange={(e) => {\n const value = e.currentTarget.value;\n setDigits((prev) => {\n const next = [...prev];\n next[i] = '';\n value.split('').forEach((v, j) => {\n if (i + j < next.length) {\n next[i + j] = v;\n }\n });\n props.onInputChange(next.join(''));\n if (i + value.length >= next.length) {\n props.onComplete(next.join(''));\n }\n if (next[i]) {\n refs[i]?.current?.blur();\n refs[i + value.length]?.current?.focus();\n }\n return next;\n });\n }}\n >\n \n ))}\n \n );\n};\n","import * as React from 'react';\nimport styled from 'styled-components';\nimport { IoArrowForward, IoLockClosed } from 'react-icons/io5';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { Button, ButtonContainer } from '@oysterjs/ui/Button';\nimport { userSignInComplete, userSignInInit } from '@oysterjs/core/api/auth';\nimport { useAuth } from '@oysterjs/core/auth';\nimport { OysterLogoOld } from '@oysterjs/ui/Logo';\nimport { PageContainer, PageSection } from '@oysterjs/ui/Page';\nimport { DigitsInput } from '@oysterjs/ui/Form/digits';\nimport { TextInput } from '@oysterjs/ui/Form/text';\nimport { FormColumn, FormContainer } from '@oysterjs/ui/Form/builder';\nimport { FormRow } from '@oysterjs/ui/Form/builder';\nimport { Spinner } from '@oysterjs/ui/Spinner';\nimport { getAccountSummary } from '@oysterjs/core/api/user';\nimport ErrorBoundary from '@oysterjs/ui/ErrorBoundary';\n\nconst SignInContainer = styled.div`\n width: 100%;\n display: flex;\n margin: 40px 0px;\n gap: 20px;\n\n @media (max-width: 700px) {\n flex-direction: column;\n align-items: center;\n gap: 40px;\n }\n`;\n\nconst SignInPane = styled.div`\n width: 50%;\n max-width: 360px;\n\n @media (max-width: 700px) {\n width: 100%;\n }\n`;\n\nconst SignInImage = styled.img`\n display: block;\n margin: auto;\n width: 100%;\n max-width: 320px;\n max-height: 400px;\n\n @media (max-width: 550px) {\n width: 100%;\n }\n`;\n\nconst SignInPage = (props: { redirect?: string }) => {\n const history = useHistory();\n\n const [email, setEmail] = React.useState('');\n\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState('');\n\n const handleLogin = () => {\n setLoading(true);\n setTimeout(\n () =>\n userSignInInit(email)\n .then(() =>\n history.push(\n `/signin?email=${encodeURIComponent(email)}${\n props.redirect ? `&redirect=${encodeURIComponent(props.redirect)}` : ''\n }`\n )\n )\n .catch((err) => setError(err.message))\n .finally(() => setLoading(false)),\n 500\n );\n };\n\n const onSubmit = (e) => {\n e.preventDefault();\n handleLogin();\n };\n\n return (\n \n \n \n

    Sign In

    \n \n \n \n setEmail(e.currentTarget.value)}\n />\n \n \n \n }\n icon={}\n loading={loading}\n onClick={() => handleLogin()}\n >\n Sign In\n \n \n \n {error &&

    {error}

    }\n
    \n\n \n
    \n
    \n );\n};\n\nconst SignInCompletePage = (props: { email: string; redirect?: string; code?: string }) => {\n const history = useHistory();\n\n const [code, setCode] = React.useState(props.code);\n const [loading, setLoading] = React.useState(false);\n const [resending, setResending] = React.useState(false);\n const [error, setError] = React.useState('');\n const [, setAuth] = useAuth();\n\n const resendCode = () => {\n setResending(true);\n setTimeout(\n () =>\n userSignInInit(props.email, props.redirect)\n .catch((err) => setError(err.message))\n .finally(() => setResending(false)),\n 500\n );\n };\n\n const handleLogin = (code?: string) => {\n if (code === undefined || code.length !== 6) {\n return;\n }\n\n setLoading(true);\n setTimeout(\n () =>\n userSignInComplete(props.email, code)\n .then((res) => {\n setLoading(false);\n setAuth(res);\n history.push(props.redirect ? props.redirect : '/');\n })\n .catch((err) => {\n setLoading(false);\n setError(err.message);\n }),\n 500\n );\n };\n\n React.useEffect(() => {\n handleLogin(props.code);\n }, [props.code]);\n\n return (\n <>\n
    \n \n

    Check your email

    \n

    \n We've sent a magic link to {props.email}. Click the link in the email to finish\n signing in, or enter the 6-digit code from the email here. The code is valid for 15\n minutes.\n

    \n
    \n \n \n \n \n \n \n }\n icon={}\n onClick={() => handleLogin(code)}\n loading={loading}\n >\n Continue\n \n \n \n\n {error &&

    {error}

    }\n
    \n \n \n \n );\n};\n\nconst AuthSignIn = (props: { token: string; redirect?: string }) => {\n const history = useHistory();\n const [error, setError] = React.useState('');\n\n const handleLogin = (token: string) => {\n window.localStorage.setItem(\n 'oyster_token',\n JSON.stringify({\n Token: token\n })\n );\n setTimeout(\n () =>\n getAccountSummary()\n .then((res) => {\n if (res.User) {\n window.localStorage.setItem(\n 'oyster_token',\n JSON.stringify({\n Token: token,\n User: res.User\n })\n );\n history.push(props.redirect ? props.redirect : '/policies');\n }\n })\n .catch((err) => {\n setError(err.message);\n }),\n 500\n );\n };\n\n React.useEffect(() => {\n handleLogin(props.token);\n }, [props.token]);\n\n return (\n \n \n {error &&

    {error}

    }\n
    \n );\n};\n\nconst SignInCompleteWrapper = (props: {\n children: (data: {\n code?: string;\n email?: string;\n redirect?: string;\n token?: string;\n }) => JSX.Element | null;\n}) => {\n // Triggers a re-render when the URL changes, but does not contain the query string\n useRouteMatch();\n\n const params = new URLSearchParams(window.location.search);\n const email = params.get('email') || undefined;\n const redirect = params.get('redirect') || undefined;\n const code = params.get('code') || undefined;\n const token = params.get('token') || undefined;\n\n return (\n \n \n \n \n {props.children({ code, email, redirect, token })}\n \n );\n};\n\nexport const SignIn = (): JSX.Element => (\n \n {({ code, email, redirect, token }) => {\n if (email) {\n return ;\n }\n\n if (token) {\n return ;\n }\n\n return ;\n }}\n \n);\n","/**\n * Debounces a function\n */\nexport default ) => ReturnType>(func: F, waitFor: number) => {\n let timeout: NodeJS.Timeout;\n\n const debounced = (...args: Parameters) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => func(...args), waitFor);\n };\n\n return debounced;\n};\n","import React from 'react';\nimport { Cookies } from 'react-cookie';\nimport { userIdentify } from './api/user';\nimport debounce from './debounce';\n\n/**\n * The tracking script ID used to connect this instance to our account.\n */\nconst PORTAL_ID = '22383747';\n\n/**\n * Hubspot chat properties that can be accessed through the context.\n */\ninterface HubspotChatContextProps {\n /**\n * Manually identify the current user based on the provided information.\n */\n identify: (email: string, firstName?: string, lastName?: string) => void;\n}\n\n/**\n * Hubspot chat context which gives access to HubspotChatContextProps.\n */\nexport const HubspotChatContext = React.createContext(null);\n\n/**\n * Provider that allows child elements to access HubspotChatContext. Also\n * initializes and renders the chat widget.\n */\nexport const HubspotChatContextProvider = (props: React.PropsWithChildren) => {\n const chat = useHubspotChat(PORTAL_ID);\n return {props.children};\n};\n\n/**\n * Implements the interface to the Hubspot chat widget and manages its lifecycle.\n *\n * @param portalId the script ID to use to initialize Hubspot\n */\nexport const useHubspotChat = (portalId): HubspotChatContextProps => {\n // Indicates that the Hubspot script has loaded (not necessarily the widget)\n const [scriptLoaded, setScriptLoaded] = React.useState(false);\n // Indicates that we are manually identifying the user based on information\n // they have entered, and that this should take precedence over the absense\n // of any automatic user identification.\n const [manualIdentification, setManualIdentification] = React.useState(false);\n\n /**\n * Updates the Hubspot identification of the user based on a response\n * from the API server. It returns true if the identification changed\n * and false otherwise.\n */\n const updateIdentification = (email: string, token: string): boolean => {\n if (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsSettings.identificationEmail !== email ||\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsSettings.identificationToken !== token\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (email && email !== window.hsConversationsSettings.identificationEmail) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window._hsq = window._hsq || [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window._hsq.push(['identify', { email }]);\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n } else if (!email && email !== window.hsConversationsSettings.identificationEmail) {\n new Cookies().remove('hubspotutk');\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsSettings.identificationEmail = email;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsSettings.identificationToken = token;\n\n return true;\n }\n\n return false;\n };\n\n const trackPageView = () => {\n const path = location.pathname + location.search;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window._hsq = window._hsq || [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window._hsq.push(['setPath', path]);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window._hsq.push(['trackPageView']);\n };\n\n /**\n * Performs identification with the API server, using either the provided\n * credentials or falling back to the session cookie which authenticates\n * the current user. It returns true if the identification changed and false\n * otherwise.\n */\n const identify = async (\n email?: string,\n firstName?: string,\n lastName?: string,\n manual?: boolean\n ): Promise => {\n if (!scriptLoaded) {\n return false;\n }\n\n try {\n // get token\n const res = await userIdentify(email, firstName, lastName);\n setManualIdentification((prev) => prev || !!manual);\n return updateIdentification(res.Email, res.Token);\n } catch (e) {\n // Only reset the identification if the user was not identified manually\n if (manualIdentification || manual) {\n return false;\n }\n\n return updateIdentification('', '');\n }\n };\n\n /**\n * Resets the widget state and reloads it. Call this when the identification\n * changes in order to reflect the latest state. This function is debounced\n * so that the latest state is always available and to respect the 1-second\n * throttle that the Hubspot SDK applies.\n */\n const refreshWidget = debounce(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.HubSpotConversations.clear({ resetWidget: true });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.HubSpotConversations.widget.load();\n }, 500);\n\n /**\n * Effect that controls the initial load of the hook. It adds the\n * Hubspot script tag and sets `scriptLoaded` to `true` when the\n * script finishes loading and is ready.\n */\n React.useEffect(() => {\n // Set HubSpot chat settings\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsSettings = {\n loadImmediately: false,\n identificationEmail: '',\n identificationToken: ''\n };\n\n // Add event listener.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsOnReady = [() => setScriptLoaded(true)];\n\n // Create script component.\n const script = document.createElement('script');\n script.src = `//js.hs-scripts.com/${portalId}.js`;\n script.defer = true;\n\n // Add the script to the DOM\n document.head.appendChild(script);\n\n // Cleanup when the component is component is unmounted\n return () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.hsConversationsOnReady = [];\n document.head.removeChild(script);\n };\n }, []);\n\n /**\n * Effect controls the initial load of the widget by identifying\n * the current user (using the automatic, cookie-based method) and\n * then loads the widget.\n */\n React.useEffect(() => {\n if (scriptLoaded) {\n identify().then(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window.HubSpotConversations.widget.load();\n });\n }\n }, [scriptLoaded]);\n\n /**\n * Effect controls subsequent page route changes by re-performing\n * identification and refreshing the widget if identification changes.\n */\n React.useEffect(() => {\n if (scriptLoaded) {\n identify()\n .then((updatedIdentification) => {\n if (updatedIdentification) {\n refreshWidget();\n }\n })\n .finally(trackPageView);\n }\n\n // This effect intentionally omits `loaded` from the array\n // so that identification and refresh only runs on subsequent\n // page changes. The effect above should take care of the\n // initial render and loading of the chat widget.\n }, [location.pathname, location.search]);\n\n return {\n identify: async (email, firstName, lastName) => {\n const updatedIdentification = await identify(email, firstName, lastName, true);\n if (updatedIdentification) {\n refreshWidget();\n }\n }\n };\n};\n","import './style.scss';\n\nimport { init as initApm } from '@oysterjs/core/apm';\ninitApm();\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport {\n BrowserRouter as Router,\n Switch,\n Route,\n useRouteMatch,\n useHistory\n} from 'react-router-dom';\n\nimport PolicyholderDashboardPage from './pages/PolicyholderDashboard';\nimport { SignIn } from './pages/SignIn';\nimport { useAuth } from '@oysterjs/core/auth';\nimport { HubspotChatContextProvider } from '@oysterjs/core/hubspot';\n\nconst Authenticated = (props: React.PropsWithChildren) => {\n const [auth] = useAuth();\n const history = useHistory();\n const match = useRouteMatch();\n\n React.useEffect(() => {\n if (!auth.Token && match.path !== '/signin') {\n history.push('/signin');\n }\n }, [auth.Token]);\n\n if (!auth.Token && match.path !== '/signin') {\n return null;\n }\n\n return <>{props.children};\n};\n\nconst App = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n

    404

    \n
    \n
    \n
    \n );\n};\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n"],"names":["useAuth","getAuth","data","window","localStorage","getItem","JSON","parse","setAuth","auth","setItem","stringify","_setAuth","React","updateAuth","addEventListener","removeEventListener","getToken","Token","getUser","User","MerchantUser","resetToken","redirect","removeItem","location","href","encodeURIComponent","getEnvironment","environment","_b","_a","getApiBaseUrl","devServiceUrl","getAdminBaseUrl","getMerchantBaseUrl","getMetricsBaseUrl","getStaticsBaseUrl","getIntegrateBaseUrl","getOysterJsBaseUrl","getDashboardBaseUrl","getGetOysterBaseUrl","getPartnersBaseUrl","getWebhooksBaseUrl","getServiceName","getServiceVersion","service","user","getSecret","secretName","devSecret","dynamicConfig","config","Apm","session","error","Sentry.isInitialized","Sentry.captureException","userObject","Sentry.setUser","Sentry.getReplay","apm","initSession","getRandomString","len","characters","str","i","userId","init","Sentry.init","Sentry.browserTracingIntegration","Sentry.browserProfilingIntegration","Sentry.captureConsoleIntegration","Sentry.extraErrorDataIntegration","Sentry.httpClientIntegration","Sentry.reactRouterV5BrowserTracingIntegration","Sentry.replayIntegration","Sentry.sessionTimingIntegration","apm$1","ErrorCode","ErrorType","WrappedError","message","opts","err","validationError","errors","Get","path","request","Post","json","Put","Delete","res","getPolicies","getPolicy","policyId","getAccountSummary","redirectUrl","userIdentify","email","firstName","lastName","getClaims","getClaim","claimId","createClaim","productId","resetClaim","updateClaim","claim","deleteClaim","submitClaim","createClaimAttachments","group","files","form","file","deleteClaimAttachment","attachmentId","Spinner","color","size","centerHorizontal","jsx","background","width","undefined","LoadableContainer","styled","div","props","inline","Loadable","setData","exactlyOnce","then","children","hideSpinner","ProductType","ElectronicsType","PolicyState","PolicyType","ClaimState","ClaimType","ClaimSectionItemType","FooterStandardContainer","FooterContainer","FooterLinksContainer","OysterCopyright","opacity","CustomFooter","policyType","chubbJewelry","Fragment","FooterStandard","jsxs","serviceName","FooterMinimalContainer","FooterMinimal","PaneContainer","gap","Pane","paneWidth","TwoPaneContainer","leftPaneWidth","rightPane","PageContainerDiv","isNaN","Number","marginTop","marginRight","marginBottom","marginLeft","PageContainer","footerStyle","FooterStyle","footerTextColor","PageSection","customPadding","noPadding","noBorder","centered","ErrorIllustration","img","forceMobile","ErrorContainer","ErrorDetailsContainer","ErrorDetailContainer","ErrorDetailTitle","ErrorDetailDescription","pre","ErrorDetail","title","description","ErrorCopyData","button","ErrorDetails","copied","setCopied","clipboard","writeText","errorData","setTimeout","IoCheckmark","IoClipboard","ErrorComponent","toString","filter","margin","map","d","join","ErrorBoundary","constructor","state","getDerivedStateFromError","componentDidCatch","captureError","render","useWindowScrollPosition","scrollPosX","setScrollPosX","useState","scrollX","scrollPosY","setScrollPosY","scrollY","useEffect","onscroll","useWindowDimensions","innerWidth","setInnerWidth","innerHeight","setInnerHeight","onresize","OysterLogoOldContainer","OysterLogoOld","scale","verticalAlign","light","textTransform","LeftMenuContainer","NavItem","li","DesktopNavBar","url","useRouteMatch","NavLink","display","alignItems","replace","RightMenuContainer","HamburgerMenu","HamburgerMenuItemContainer","HamburgerMenuItem","link","onClick","label","MobileNavBar","expanded","setExpanded","prev","e","key","preventDefault","IoMenu","cursor","borderRadius","padding","TopBarContainer","ol","NavBar","UnstyledLink","a","ButtonContainerComponent","center","ButtonContainer","ButtonComponent","primary","loading","disabled","ButtonDivComponent","ButtonLink","Button","match","target","Link","textDecoration","ButtonDiv","leftIcon","icon","cloneElement","onPointerUp","style","UnstyledButton","Table","table","VerticalLayoutContainer","invertedIcon","activeIconColor","VerticalLayoutItemContainer","inactive","last","VerticalLayoutIconContainer","VerticalLayoutDetailsContainer","VerticalLayout","VerticalLayoutItem","ref","useDynamicRefs","refs","setRefs","getRef","existingRef","DatePickerContainer","DatePicker","DayPicker","CheckboxContainer","checked","Checkbox","id","useId","onChange","CardGallery","ul","comingSoon","CardContents","SlimCardContainer","selected","SlimCardImage","SlimCardContents","CheckmarkBox","TitleBadge","SelectableOptionCard","image","paddingBottom","badge","titleAction","justifyContent","flex","fontSize","IoCheckmarkSharp","ErrorDisplay","TextInputComponent","input","currency","TextInput","forwardRef","position","left","top","NumericFormat","SuggestionsContainer","Suggestions","suggestions","s","onSelect","AutocompleteTextInput","selectedSuggestion","setSelectedSuggestion","value","currentTarget","length","suggestion","index","onSelectSuggestion","TextAreaInputComponent","textarea","TextAreaInput","RequirementItem","RequirementItemContainer","RequirementCheckboxContainer","name","RequirementContentContainer","RequirementTitle","RequirementDescription","getPolicyDisplayName","policy","Type","bike","markelOffroad","markelMotorcycle","markelBike","minicoJewelry","worthAveElectronics","iPhone","smartPhone","includes","InsuredItems","Details","getPolicyHref","ID","getPolicyDisplayImage","productType","phone","getProductDisplayName","type","product","offroad","motorcycle","jewelry","electronics","AttachmentContainer","uploading","formatSize","Math","round","Attachment","stopPropagation","IoAttachOutline","paddingRight","onRemove","IoClose","paddingLeft","MAPBOX_PUBLIC_KEY","secrets","mapboxPublicKey","getLocationSuggestions","address","fetch","encodeURI","status","features","f","place_name","coordinates","Error","getMapURL","longitude","latitude","zoomLevel","height","FormContainer","FormRowContainer","singleItem","breakMobile","paddingTop","FormRowError","FormRow","FormColumnContainer","FormColumnTitle","FormColumnDescription","FormColumnContents","FormColumn","formColumnStyle","FormColumnStyle","optional","fontWeight","Children","isValidElement","child","AddressInput","setState","initialAddress","setSuggestions","setValidationError","Message","maxWidth","SwitchContainer","SwitchLabel","Switch","enabled","ProductSection","selectedProductId","setSelectedProductId","products","Name","onContinue","ImageURL","getFieldKey","fields","getData","Data","getClaimIcon","claimType","theft","IoShield","damage","IoBandage","injury","IoMedkit","liability","IoHammer","other","IoSad","electricalBreakdown","IoFlash","mechanicalBreakdown","IoCog","naturalDisaster","IoBonfire","waterDamage","IoWater","CrackedScreen","IoLayers","SpillOrLiquid","SomethingElse","Fire","IoFlame","Flood","Lightning","Wind","IoRainy","TheftFromHome","IoHome","TheftAwayFromHome","IoLocation","LostInTransport","IoAirplane","Yes","No","IoCloseSharp","SelectSection","autoContinue","Types","component","sectionItem","Item","setSelected","section","Field","SubField","AllowedValues","Title","Description","Value","Icon","CheckboxSection","TextSection","Required","text","setText","DateSection","Date","valueOf","date","setDate","toISOString","day","today","setHours","getTime","getDate","getLocationSectionState","AddressField","parseFloat","LongitudeField","LatitudeField","LocationSection","LongTextSection","resize","UploadGroupContainer","dragging","UploadGroupCheckboxContainer","UploadGroupContentContainer","UploadGroupDescription","UploadGroupContent","UploadGroupHeaderContainer","getFilesFromEvent","dataTransfer","items","kind","getAsFile","push","UploadSection","setLoading","setDragging","attachRef","claimAttachments","setClaimAttachments","Attachments","fileList","setFileList","validationErrors","setValidationErrors","completed","uploadFiles","Promise","resolve","catch","asWrappedError","getValidationError","slice","addFiles","onDragEnter","onDragLeave","onDragOver","dropEffect","onDrop","Array","from","current","click","IoEllipseOutline","IoCheckmarkCircle","Size","ConfirmSection","submit","Confirmation","item","Overlay","disableMobileView","Popup","ContentBox","CloseIcon","BackIcon","Header","headerContents","onClose","onBack","IoArrowBack","Modal","flexWrap","overflow","transform","flexDirection","flexGrow","minHeight","BadgeContainer","Badge","textColor","HeaderContainer","ClaimActionsContainer","getClaimBadge","collectingInformation","unknown","awaitingProcessing","denied","settled","relativeTimeString","start","end","formatter","Intl","RelativeTimeFormat","units","unit","diff","abs","format","floor","ClaimsTable","claims","setClaims","setError","showDeleteClaimConfirmation","setShowDeleteClaimConfirmation","history","useHistory","textAlign","IoArrowForward","Claims","finally","Product","State","UpdatedAt","IoTrashOutline","ResumeClaimsPage","startClaim","claimsPhrase","ClaimsPage","policies","p","policyInforce","hasNoClaims","shouldDisableClaimCTA","startClaimCTALabel","getClaimURL","find","c","ClaimSectionOuter","active","ClaimSectionItem","subTitle","ClaimPage","setClaim","setRef","sections","setSections","sectionContinued","setSectionContinued","sectionAtOffset","offset","sectionIndex","findIndex","isInactive","sectionKey","bottom","elem","offsetTop","nextSectionKey","nextElem","field","newClaim","split","doUpdateClaim","currentSections","Sections","flatMap","Items","newSections","Claim","reduce","curr","NextError","prevSection","doSubmit","metadata","createOrResetClaim","pr","createSection","sectionIcons","select","IoTrailSign","IoCalendarClear","longText","IoDocumentText","upload","IoCloudUpload","confirm","IoPencil","sectionTypeMap","checkbox","sectionItems","needsContinueButton","needsSubmitButton","IoFlag","SubTitle","v","next","scrollTo","behavior","Pending","ViewClaimPage","PropertyList","PropertyListItem","tt","t","IncidentDate","toLocaleDateString","trim","paragraph","URL","Policy","toLocaleString","getStaticFileUrl","getPolicyDocumentUrl","BoxContainer","Box","BoxBadgeHeader","BoxItemImage","AlternateBoxTitle","BoxTitle","BoxContents","BoxDescription","LeftAlignBoxContents","BoxItem","className","Route","Sentry","BrowserRoute","getPolicyStatus","noDocument","backgroundColor","badgeColor","IoPencilSharp","premiumText","stateText","buttonText","offerSubmitted","IoAlertCircleSharp","applicationSubmitted","policyBinding","Coverage","ActivationTrigger","some","HasNotReceived","IoHourglass","IoShieldCheckmark","ExpiresAt","policyCanceled","IoBan","policyExpired","IoTime","IoHelp","PolicyDocument","PolicyDocumentNotAvailable","PolicyOverview","setPolicy","IoCloudOffline","IoDownload","PolicyNavigationContainer","PolicyNavigationItemContainer","PolicyPage","Redirect","getPolicyBadge","getProductTypeFromPolicy","PoliciesPage","minWidth","AsyncPoliciesPage","all","Policies","AsyncClaimsPage","AsyncPolicyPage","AsyncClaimPage","AsyncResumeClaimPage","notFinished","PolicyholderDashboardPage","params","userSignInInit","userSignInComplete","code","DigitsInputContainer","Digit","DigitsInput","digits","setDigits","fill","initialDigits","forEach","focus","_","React.Fragment","j","onInputChange","onComplete","blur","SignInContainer","SignInPane","SignInImage","SignInPage","setEmail","handleLogin","onSubmit","IoLockClosed","SignInCompletePage","setCode","resending","setResending","resendCode","AuthSignIn","token","SignInCompleteWrapper","URLSearchParams","search","get","SignIn","debounce","func","waitFor","timeout","args","PORTAL_ID","HubspotChatContext","createContext","HubspotChatContextProvider","chat","useHubspotChat","portalId","scriptLoaded","setScriptLoaded","manualIdentification","setManualIdentification","updateIdentification","hsConversationsSettings","identificationEmail","identificationToken","_hsq","Cookies","remove","trackPageView","pathname","identify","manual","Email","refreshWidget","HubSpotConversations","clear","resetWidget","widget","load","loadImmediately","hsConversationsOnReady","script","document","createElement","src","defer","head","appendChild","removeChild","updatedIdentification","initApm","Authenticated","App","ReactDOM","Router","getElementById"],"mappings":"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"}