@mindbill/react 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -115,6 +115,7 @@ type BillReviewClinician = {
115
115
  active?: boolean;
116
116
  };
117
117
  type BillReviewLocation = {
118
+ billingProviderId?: string;
118
119
  name: string;
119
120
  nickname?: string;
120
121
  street: string;
package/dist/index.js CHANGED
@@ -101,6 +101,7 @@ function mindBillAppearanceStyle(appearance, style) {
101
101
  }
102
102
 
103
103
  // src/native-bill-review.tsx
104
+ import { sanitizeBillReviewSaveInput } from "@mindbill/browser";
104
105
  import { useEffect, useId, useMemo, useRef, useState } from "react";
105
106
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
106
107
  var EMPTY_PROCEDURE_LINE = {
@@ -204,7 +205,7 @@ function toDraft(data) {
204
205
  };
205
206
  }
206
207
  function buildBillReviewSaveInput(draft) {
207
- return {
208
+ return sanitizeBillReviewSaveInput({
208
209
  claimsAdminId: draft.claimsAdminId,
209
210
  patientOverrides: {
210
211
  firstName: draft.patientFirstName.trim(),
@@ -236,7 +237,7 @@ function buildBillReviewSaveInput(draft) {
236
237
  ...serviceDateEnd ? { serviceDateEnd } : {},
237
238
  ...diagnosisPointers?.length ? { diagnosisPointers } : {}
238
239
  }))
239
- };
240
+ });
240
241
  }
241
242
  function money(value) {
242
243
  return new Intl.NumberFormat("en-US", {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/appearance.ts","../src/native-bill-review.tsx","../src/connected-bill-status.tsx","../src/connected-bill-lifecycle.tsx"],"sourcesContent":["\"use client\";\n\nimport \"@mindbill/embed\";\nimport type { CSSProperties, ReactElement } from \"react\";\nimport { createElement, useEffect, useRef } from \"react\";\nimport type {\n MindBillAppearance,\n MindBillErrorDetail,\n MindBillEventDetail,\n} from \"@mindbill/embed\";\n\nexport type MindBillWidgetProps = {\n sessionToken: string;\n embedUrl: string;\n appearance?: MindBillAppearance;\n className?: string;\n style?: CSSProperties;\n onMindBill?: (event: CustomEvent<MindBillEventDetail>) => void;\n onMindBillError?: (event: CustomEvent<MindBillErrorDetail>) => void;\n};\n\nfunction widget(tagName: string, props: MindBillWidgetProps): ReactElement {\n const ref = useRef<HTMLElement | null>(null);\n const { onMindBill, onMindBillError } = props;\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const handleEvent = (event: Event) =>\n onMindBill?.(event as CustomEvent<MindBillEventDetail>);\n const handleError = (event: Event) =>\n onMindBillError?.(event as CustomEvent<MindBillErrorDetail>);\n element.addEventListener(\"mindbill\", handleEvent);\n element.addEventListener(\"mindbill-error\", handleError);\n return () => {\n element.removeEventListener(\"mindbill\", handleEvent);\n element.removeEventListener(\"mindbill-error\", handleError);\n };\n }, [onMindBill, onMindBillError]);\n\n return createElement(tagName, {\n ref,\n \"session-token\": props.sessionToken,\n \"embed-url\": props.embedUrl,\n theme: props.appearance?.theme,\n \"accent-color\": props.appearance?.accentColor,\n \"background-color\": props.appearance?.backgroundColor,\n \"surface-color\": props.appearance?.surfaceColor,\n \"text-color\": props.appearance?.textColor,\n \"muted-color\": props.appearance?.mutedColor,\n \"border-color\": props.appearance?.borderColor,\n \"font-family\": props.appearance?.fontFamily,\n \"border-radius\": props.appearance?.borderRadius,\n locale: props.appearance?.locale,\n class: props.className,\n style: props.style,\n });\n}\n\nexport function MindBillBillTimeline(props: MindBillWidgetProps): ReactElement {\n return widget(\"mindbill-bill-timeline\", props);\n}\nexport function MindBillBillReview(props: MindBillWidgetProps): ReactElement {\n return widget(\"mindbill-bill-review\", props);\n}\n\n\nexport type {\n MindBillAppearance,\n MindBillErrorDetail,\n MindBillEventDetail,\n} from \"@mindbill/embed\";\n\nexport {\n mindBillAppearanceStyle,\n mindBillThemePresets,\n resolveMindBillAppearance,\n} from \"./appearance\";\nexport type {\n MindBillReactAppearance,\n MindBillThemePreset,\n} from \"./appearance\";\n\nexport {\n BillReviewForm,\n BillStatusSummary,\n buildBillReviewSaveInput,\n ensureTrailingProcedureLine,\n} from \"./native-bill-review\";\nexport type {\n BillReviewAttachment,\n BillReviewBillingProvider,\n BillReviewClinician,\n BillReviewData,\n BillReviewDocumentType,\n BillReviewDraft,\n BillReviewFormProps,\n BillReviewFeatures,\n BillReviewLineItem,\n BillReviewLocation,\n BillReviewPayer,\n BillReviewSaveInput,\n BillStatusSummaryProps,\n BillStatusAction,\n BillSubmissionRoute,\n} from \"./native-bill-review\";\n\nexport {\n ConnectedBillStatus,\n createBillStatusClient,\n useBillStatus,\n} from \"./connected-bill-status\";\n\nexport {\n ConnectedBillLifecycle,\n createBillLifecycleClient,\n useBillLifecycle,\n} from \"./connected-bill-lifecycle\";\nexport type {\n BillEorDocument,\n BillLifecycleAction,\n BillLifecycleActionId,\n BillLifecycleClient,\n BillLifecycleClientOptions,\n BillLifecycleData,\n BillLifecycleSession,\n BillLifecycleSessionProvider,\n BillLifecycleSessionRequest,\n CloseBillInput,\n ConnectedBillLifecycleProps,\n PostBillPaymentInput,\n SubmitSecondReviewInput,\n UseBillLifecycleOptions,\n UseBillLifecycleResult,\n} from \"./connected-bill-lifecycle\";\nexport type {\n BillStatusClient,\n BillStatusClientOptions,\n BillStatusData,\n BillStatusSession,\n BillStatusSessionProvider,\n BillStatusSessionRequest,\n ConnectedBillStatusProps,\n UseBillStatusOptions,\n UseBillStatusResult,\n} from \"./connected-bill-status\";\n","import type { CSSProperties } from \"react\";\nimport type { MindBillAppearance } from \"@mindbill/embed\";\n\nexport type MindBillThemePreset =\n | \"mindbill\"\n | \"qme-companion\"\n | \"orange-bright\"\n | \"clinical-blue\";\n\nexport type MindBillReactAppearance = MindBillAppearance & {\n /** A complete starting point. Individual tokens below always win. */\n preset?: MindBillThemePreset;\n accentTextColor?: string;\n inputBackgroundColor?: string;\n controlRadius?: string;\n shadow?: string;\n dangerColor?: string;\n successColor?: string;\n warningColor?: string;\n};\n\nexport const mindBillThemePresets = {\n mindbill: {\n accentColor: \"#238dbd\",\n accentTextColor: \"#ffffff\",\n backgroundColor: \"#f3f8fa\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#203743\",\n mutedColor: \"#657982\",\n borderColor: \"#dbe6ea\",\n borderRadius: \"14px\",\n controlRadius: \"8px\",\n shadow: \"0 8px 24px rgba(28,58,72,.04)\",\n dangerColor: \"#b63d35\",\n successColor: \"#217449\",\n warningColor: \"#8a5c17\",\n },\n \"qme-companion\": {\n accentColor: \"#53b5dc\",\n accentTextColor: \"#173542\",\n backgroundColor: \"#f2f8fb\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#1d3440\",\n mutedColor: \"#617783\",\n borderColor: \"#d7e5eb\",\n borderRadius: \"12px\",\n controlRadius: \"8px\",\n shadow: \"0 1px 2px rgba(29,52,64,.05)\",\n dangerColor: \"#b83f3a\",\n successColor: \"#21835d\",\n warningColor: \"#9a6418\",\n fontFamily: \"Inter, ui-sans-serif, system-ui, sans-serif\",\n },\n \"orange-bright\": {\n accentColor: \"#ff4f0a\",\n accentTextColor: \"#ffffff\",\n backgroundColor: \"#fffaf6\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#111827\",\n mutedColor: \"#626a73\",\n borderColor: \"#e5e1dc\",\n borderRadius: \"8px\",\n controlRadius: \"6px\",\n shadow: \"0 4px 18px rgba(17,24,39,.06)\",\n dangerColor: \"#b42318\",\n successColor: \"#16794f\",\n warningColor: \"#9a5b13\",\n fontFamily: \"Inter, ui-sans-serif, system-ui, sans-serif\",\n },\n \"clinical-blue\": {\n accentColor: \"#1677ff\",\n accentTextColor: \"#ffffff\",\n backgroundColor: \"#f5f7fa\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#1f2d3d\",\n mutedColor: \"#66788a\",\n borderColor: \"#d9e2ec\",\n borderRadius: \"8px\",\n controlRadius: \"6px\",\n shadow: \"0 2px 8px rgba(31,45,61,.06)\",\n dangerColor: \"#d4380d\",\n successColor: \"#389e0d\",\n warningColor: \"#d48806\",\n fontFamily: \"Inter, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif\",\n },\n} as const satisfies Record<MindBillThemePreset, MindBillReactAppearance>;\n\nexport function resolveMindBillAppearance(\n appearance: MindBillReactAppearance | undefined,\n): MindBillReactAppearance {\n const preset = appearance?.preset ?? \"mindbill\";\n return { ...mindBillThemePresets[preset], ...appearance, preset };\n}\n\nexport function mindBillAppearanceStyle(\n appearance: MindBillReactAppearance | undefined,\n style?: CSSProperties,\n): CSSProperties {\n const resolved = resolveMindBillAppearance(appearance);\n return {\n \"--mb-accent\": resolved.accentColor,\n \"--mb-accent-contrast\": resolved.accentTextColor,\n \"--mb-text\": resolved.textColor,\n \"--mb-muted\": resolved.mutedColor,\n \"--mb-border\": resolved.borderColor,\n \"--mb-soft\": resolved.backgroundColor,\n \"--mb-surface\": resolved.surfaceColor,\n \"--mb-input\": resolved.inputBackgroundColor,\n \"--mb-font\": resolved.fontFamily,\n \"--mb-radius\": resolved.borderRadius,\n \"--mb-control-radius\": resolved.controlRadius,\n \"--mb-shadow\": resolved.shadow,\n \"--mb-danger\": resolved.dangerColor,\n \"--mb-success\": resolved.successColor,\n \"--mb-warning\": resolved.warningColor,\n ...style,\n } as CSSProperties;\n}\n","\"use client\";\n\nimport type { MindBillReactAppearance } from \"./appearance\";\nimport { mindBillAppearanceStyle } from \"./appearance\";\nimport type { CSSProperties, FormEvent, KeyboardEvent, ReactElement } from \"react\";\nimport { useEffect, useId, useMemo, useRef, useState } from \"react\";\n\nexport type BillReviewDocumentType =\n | \"final_report\"\n | \"letter_of_attestation\"\n | \"proof_of_service\"\n | \"form_122\"\n | \"return_to_work_voucher\"\n | \"w9\"\n | \"medical_records\"\n | \"appeal\"\n | \"other\";\n\nexport type BillReviewBillingProvider = {\n name: string;\n taxId: string;\n npi: string;\n billType: \"Professional\" | \"Institutional\";\n phone?: string;\n billingStreet?: string;\n billingCity?: string;\n billingState?: string;\n billingZip?: string;\n};\n\nexport type BillReviewClinician = {\n name: string;\n specialty: string;\n npi: string;\n taxonomy?: string;\n licenseNumber?: string;\n licenseState?: string;\n signaturePng?: string;\n signatureKey?: string;\n isQME?: boolean;\n isAME?: boolean;\n email?: string;\n active?: boolean;\n};\n\nexport type BillReviewLocation = {\n name: string;\n nickname?: string;\n street: string;\n city: string;\n state: string;\n zip: string;\n county?: string;\n posCode?: string;\n isPrimary?: boolean;\n active?: boolean;\n};\n\nexport type BillReviewLineItem = {\n id?: string;\n code: string;\n modifiers: string[];\n units: number;\n charge: number;\n feeSchedule?: number;\n serviceDate?: string | null;\n serviceDateEnd?: string | null;\n diagnosisPointers?: number[];\n};\n\nconst EMPTY_PROCEDURE_LINE: BillReviewLineItem = {\n code: \"\",\n modifiers: [],\n units: 1,\n charge: 0,\n};\n\nfunction isEmptyProcedureLine(line: BillReviewLineItem): boolean {\n return !line.code.trim() && line.modifiers.length === 0 && line.units === 1 && !line.serviceDate && !line.serviceDateEnd && !line.charge && !(line.diagnosisPointers?.length);\n}\n\n/** Keeps completed/partial lines plus one keyboard-ready empty row. */\nexport function ensureTrailingProcedureLine(\n lines: readonly BillReviewLineItem[],\n): BillReviewLineItem[] {\n const entered = lines\n .filter((line) => !isEmptyProcedureLine(line))\n .map((line) => ({ ...line, modifiers: [...line.modifiers] }));\n\n return entered.length < 50\n ? [...entered, { ...EMPTY_PROCEDURE_LINE, modifiers: [] }]\n : entered;\n}\n\nexport type BillReviewAttachment = {\n id: string;\n filename: string;\n description?: string | null;\n documentType: string;\n reportType?: string | null;\n source?: string;\n addedAt?: string;\n contentUrl?: string;\n};\n\nexport type BillReviewPayer = {\n id: string;\n name: string;\n hasElectronic?: boolean;\n states?: string[];\n confidence?: \"high\" | \"medium\" | \"directory\";\n recommended?: boolean;\n signals?: Array<{\n kind: \"name\" | \"claim_number\";\n state: \"match\" | \"warning\";\n label: string;\n }>;\n};\n\nexport type BillReviewFeatures = {\n authorizationNumber?: boolean;\n serviceDateRange?: boolean;\n wcabNumber?: boolean;\n codingPresets?: boolean;\n};\n\nexport type BillReviewClaimPatternStatus = {\n state: \"match\" | \"warning\" | \"unknown\";\n label: string;\n detail?: string;\n suggestion?: string;\n};\n\nexport type BillReviewData = {\n bill: {\n id: string;\n billingMode: \"med_legal\" | \"professional\";\n billNumber: string | number;\n status: string;\n transmissionState?: string;\n dos: string;\n dosEnd?: string | null;\n authorizationNumber?: string | null;\n billingSnapshot?: {\n billingProvider?: BillReviewBillingProvider;\n renderingProvider?: BillReviewClinician;\n placeOfService?: BillReviewLocation;\n } | null;\n lineItems: BillReviewLineItem[];\n attachments: BillReviewAttachment[];\n totalCharge: number;\n totalPaid: number;\n balanceDue: number;\n };\n patient: {\n name: string;\n firstName?: string;\n middleName?: string;\n lastName?: string;\n dob?: string;\n };\n injury: {\n claimNumber?: string;\n employer?: string;\n doi?: string;\n injuryEndDate?: string;\n cumulativeTrauma?: boolean;\n adjNumber?: string;\n claimsAdminId?: string;\n claimsAdminName?: string;\n claimPatternStatus?: BillReviewClaimPatternStatus;\n };\n};\n\nexport type BillReviewSaveInput = {\n claimsAdminId: string;\n patientOverrides?: {\n firstName: string;\n middleName?: string;\n lastName: string;\n dob?: string;\n };\n injuryOverrides?: {\n claimNumber?: string;\n employer?: string;\n doi?: string;\n injuryEndDate?: string;\n cumulativeTrauma?: boolean;\n adjNumber?: string;\n };\n dos: string;\n dosEnd?: string | null;\n authorizationNumber?: string | null;\n billingProvider?: BillReviewBillingProvider;\n renderingProvider?: BillReviewClinician;\n placeOfService?: BillReviewLocation;\n lineItems: Array<{\n id?: string;\n code: string;\n modifiers: string[];\n units: number;\n charge?: number;\n serviceDate?: string | null;\n serviceDateEnd?: string | null;\n diagnosisPointers?: number[];\n }>;\n};\n\nexport type BillSubmissionRoute = \"ebill\" | \"fax\" | \"mail\" | \"email\";\n\nexport type BillDeliveryOption = {\n route: BillSubmissionRoute;\n label: string;\n detail: string;\n fallback: boolean;\n confidence: string;\n payerName: string;\n target?: string;\n chKey?: string;\n payerId?: string;\n printAndMail?: boolean;\n costUsd?: number;\n};\n\nexport type BillDeliveryOptions = {\n payerName: string;\n recommended: BillDeliveryOption;\n options: BillDeliveryOption[];\n contacts: {\n faxNumber?: string | null;\n claimsEmail?: string | null;\n portalUrl?: string | null;\n mailingAddress?: string | null;\n };\n};\n\nexport type BillSubmissionInput = {\n route: BillSubmissionRoute;\n destination?: {\n faxNumber?: string;\n email?: string;\n mailingAddress?: string;\n };\n attention?: string;\n subject?: string;\n note?: string;\n};\n\nexport type BillReviewFormProps = {\n data: BillReviewData;\n onSave: (input: BillReviewSaveInput) => Promise<BillReviewData | void>;\n onSubmit: (\n input: BillReviewSaveInput,\n submission: BillSubmissionInput,\n ) => Promise<void>;\n onGetDeliveryOptions: () => Promise<BillDeliveryOptions>;\n onAddAttachment: (\n file: File,\n documentType: BillReviewDocumentType,\n description?: string,\n ) => Promise<void>;\n onRemoveAttachment: (attachmentId: string) => Promise<void>;\n onOpenAttachment?: (attachment: BillReviewAttachment) => void;\n onSearchClaimsAdministrators?: (\n query: string,\n claimNumber?: string,\n ) => Promise<BillReviewPayer[]>;\n className?: string;\n style?: CSSProperties;\n appearance?: MindBillReactAppearance;\n features?: BillReviewFeatures;\n disabled?: boolean;\n};\n\nexport type BillReviewDraft = {\n claimsAdminId: string;\n claimsAdminName: string;\n patientFirstName: string;\n patientMiddleName: string;\n patientLastName: string;\n patientDob: string;\n claimNumber: string;\n employer: string;\n doi: string;\n injuryEndDate: string;\n cumulativeTrauma: boolean;\n adjNumber: string;\n dos: string;\n dosEnd: string;\n authorizationNumber: string;\n billingProvider: BillReviewBillingProvider;\n clinician: BillReviewClinician;\n location: BillReviewLocation;\n lineItems: BillReviewLineItem[];\n};\n\nconst EMPTY_BILLING_PROVIDER: BillReviewBillingProvider = {\n name: \"\",\n taxId: \"\",\n npi: \"\",\n billType: \"Professional\",\n};\nconst EMPTY_CLINICIAN: BillReviewClinician = {\n name: \"\",\n specialty: \"\",\n npi: \"\",\n};\nconst EMPTY_LOCATION: BillReviewLocation = {\n name: \"\",\n street: \"\",\n city: \"\",\n state: \"\",\n zip: \"\",\n posCode: \"11\",\n};\n\nconst DOCUMENT_LABELS: Record<BillReviewDocumentType, string> = {\n final_report: \"Final medical-legal report\",\n letter_of_attestation: \"Letter of attestation\",\n proof_of_service: \"Proof of service\",\n form_122: \"DWC Form 122\",\n return_to_work_voucher: \"Return-to-work voucher\",\n w9: \"W-9\",\n medical_records: \"Medical records\",\n appeal: \"Appeal or review support\",\n other: \"Other supporting document\",\n};\n\nconst US_STATES = [\"AL\",\"AK\",\"AZ\",\"AR\",\"CA\",\"CO\",\"CT\",\"DE\",\"FL\",\"GA\",\"HI\",\"ID\",\"IL\",\"IN\",\"IA\",\"KS\",\"KY\",\"LA\",\"ME\",\"MD\",\"MA\",\"MI\",\"MN\",\"MS\",\"MO\",\"MT\",\"NE\",\"NV\",\"NH\",\"NJ\",\"NM\",\"NY\",\"NC\",\"ND\",\"OH\",\"OK\",\"OR\",\"PA\",\"RI\",\"SC\",\"SD\",\"TN\",\"TX\",\"UT\",\"VT\",\"VA\",\"WA\",\"WV\",\"WI\",\"WY\",\"DC\"];\nconst PROCEDURES = [\n [\"ML200\", \"Missed med-legal appointment\"],\n [\"ML201\", \"Comprehensive med-legal evaluation\"],\n [\"ML202\", \"Follow-up med-legal evaluation\"],\n [\"ML203\", \"Supplemental med-legal evaluation\"],\n [\"ML204\", \"Medical-legal testimony\"],\n [\"ML205\", \"Sub rosa recording review\"],\n [\"MLPRR\", \"Medical record review\"],\n] as const;\nconst MODIFIERS = [\n [\"92\", \"Primary treating physician\"], [\"93\", \"Interpreter required\"],\n [\"94\", \"Agreed medical evaluator (AME)\"], [\"95\", \"Qualified medical evaluator (QME)\"],\n [\"96\", \"Psychiatric or psychological evaluation\"], [\"97\", \"Toxicology evaluation\"],\n [\"98\", \"Oncology evaluation\"],\n] as const;\ntype CodingPreset = \"qme\" | \"ame\" | \"psych_qme\";\nconst MANAGED_EVALUATOR_MODIFIERS = new Set([\"94\", \"95\", \"96\"]);\nconst MODIFIER_CODES: Record<string, readonly string[]> = {\n \"92\": [\"ML201\", \"ML202\", \"ML203\"],\n \"93\": [\"ML201\", \"ML202\"],\n \"94\": [\"ML201\", \"ML202\", \"ML203\"],\n \"95\": [\"ML200\", \"ML201\", \"ML202\", \"ML203\", \"MLPRR\"],\n \"96\": [\"ML201\", \"ML202\", \"ML203\"],\n \"97\": [\"ML201\", \"ML202\", \"ML203\"],\n \"98\": [\"ML201\", \"ML202\", \"ML203\"],\n};\n\nfunction toDraft(data: BillReviewData): BillReviewDraft {\n const snapshot = data.bill.billingSnapshot;\n const nameParts = data.patient.name.trim().split(/\\s+/);\n return {\n claimsAdminId: data.injury.claimsAdminId || \"\",\n claimsAdminName: data.injury.claimsAdminName || \"\",\n patientFirstName: data.patient.firstName || nameParts[0] || \"\",\n patientMiddleName: data.patient.middleName || (nameParts.length > 2 ? nameParts.slice(1, -1).join(\" \") : \"\"),\n patientLastName: data.patient.lastName || (nameParts.length > 1 ? (nameParts.at(-1) || \"\") : \"\"),\n patientDob: data.patient.dob || \"\",\n claimNumber: data.injury.claimNumber || \"\",\n employer: data.injury.employer || \"\",\n doi: data.injury.doi || \"\",\n injuryEndDate: data.injury.injuryEndDate || \"\",\n cumulativeTrauma: Boolean(data.injury.cumulativeTrauma),\n adjNumber: data.injury.adjNumber || \"\",\n dos: data.bill.dos || \"\",\n dosEnd: data.bill.dosEnd || \"\",\n authorizationNumber: data.bill.authorizationNumber || \"\",\n billingProvider: {\n ...EMPTY_BILLING_PROVIDER,\n ...(snapshot?.billingProvider ?? {}),\n },\n clinician: { ...EMPTY_CLINICIAN, ...(snapshot?.renderingProvider ?? {}) },\n location: { ...EMPTY_LOCATION, ...(snapshot?.placeOfService ?? {}) },\n lineItems: ensureTrailingProcedureLine(data.bill.lineItems),\n };\n}\n\nexport function buildBillReviewSaveInput(\n draft: BillReviewDraft,\n): BillReviewSaveInput {\n return {\n claimsAdminId: draft.claimsAdminId,\n patientOverrides: {\n firstName: draft.patientFirstName.trim(),\n ...(draft.patientMiddleName.trim() ? { middleName: draft.patientMiddleName.trim() } : {}),\n lastName: draft.patientLastName.trim(),\n ...(draft.patientDob ? { dob: draft.patientDob } : {}),\n },\n injuryOverrides: {\n ...(draft.claimNumber.trim() ? { claimNumber: draft.claimNumber.trim() } : {}),\n ...(draft.employer.trim() ? { employer: draft.employer.trim() } : {}),\n ...(draft.doi ? { doi: draft.doi } : {}),\n ...(draft.injuryEndDate ? { injuryEndDate: draft.injuryEndDate } : {}),\n cumulativeTrauma: draft.cumulativeTrauma,\n ...(draft.adjNumber.trim() ? { adjNumber: draft.adjNumber.trim().toUpperCase().replace(/\\s+/g, \"\") } : {}),\n },\n dos: draft.dos,\n dosEnd: draft.dosEnd || null,\n authorizationNumber: draft.authorizationNumber.trim() || null,\n billingProvider: { ...draft.billingProvider },\n renderingProvider: { ...draft.clinician },\n placeOfService: { ...draft.location },\n lineItems: draft.lineItems.filter((line) => line.code.trim()).map(({ id, code, modifiers, units, charge, serviceDate, serviceDateEnd, diagnosisPointers }) => ({\n ...(id ? { id } : {}),\n code: code.trim().toUpperCase(),\n modifiers,\n units,\n ...(charge ? { charge } : {}),\n ...(serviceDate ? { serviceDate } : {}),\n ...(serviceDateEnd ? { serviceDateEnd } : {}),\n ...(diagnosisPointers?.length ? { diagnosisPointers } : {}),\n })),\n };\n}\n\nfunction money(value: number): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(value);\n}\n\nfunction Field({\n label,\n value,\n onChange,\n type = \"text\",\n optional,\n required,\n disabled,\n hint,\n}: {\n label: string;\n value: string;\n onChange: (value: string) => void;\n type?: string;\n optional?: boolean;\n required?: boolean;\n disabled?: boolean;\n hint?: string;\n}): ReactElement {\n return (\n <label className=\"mb-native-field\">\n <span>\n {label} {optional ? <small>Optional</small> : null}\n </span>\n <input\n type={type}\n value={value}\n required={required}\n disabled={disabled}\n autoComplete=\"off\"\n onChange={(event) => onChange(event.target.value)}\n />\n {hint ? <small className=\"mb-native-hint\">{hint}</small> : null}\n </label>\n );\n}\n\ntype ComboOption = {\n value: string;\n label: string;\n detail?: string;\n badge?: string;\n};\n\nfunction Combobox({ label, value, options, onChange, placeholder, required, disabled, name }: {\n label: string;\n value: string;\n options: ComboOption[];\n onChange: (value: string, option?: ComboOption) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n}): ReactElement {\n const listId = useId();\n const root = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [active, setActive] = useState(0);\n const filtered = useMemo(() => {\n const query = value.trim().toLowerCase();\n return options.filter((option) => !query || option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query)).slice(0, 40);\n }, [options, value]);\n useEffect(() => {\n const close = (event: MouseEvent) => {\n if (!root.current?.contains(event.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", close);\n return () => document.removeEventListener(\"mousedown\", close);\n }, []);\n const select = (option: ComboOption) => {\n onChange(option.value, option);\n setOpen(false);\n setActive(0);\n };\n const keyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") { event.preventDefault(); setOpen(true); setActive((value) => Math.min(value + 1, filtered.length - 1)); }\n if (event.key === \"ArrowUp\") { event.preventDefault(); setActive((value) => Math.max(value - 1, 0)); }\n if (event.key === \"Enter\" && open && filtered[active]) { event.preventDefault(); select(filtered[active]); }\n if (event.key === \"Escape\") setOpen(false);\n };\n return <div className=\"mb-native-combo\" ref={root}>\n <label className=\"mb-native-field\">\n <span>{label}</span>\n <input\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={listId}\n aria-expanded={open && filtered.length > 0}\n aria-activedescendant={open && filtered[active] ? `${listId}-${active}` : undefined}\n name={name || \"mindbill-search-value\"}\n autoComplete=\"new-password\"\n data-1p-ignore=\"true\"\n data-lpignore=\"true\"\n value={value}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n onFocus={() => setOpen(true)}\n onKeyDown={keyDown}\n onChange={(event) => { onChange(event.target.value); setOpen(true); setActive(0); }}\n />\n </label>\n {open && filtered.length ? <ul id={listId} role=\"listbox\" className=\"mb-native-combo-list\">\n {filtered.map((option, index) => <li id={`${listId}-${index}`} role=\"option\" aria-selected={index === active} key={`${option.value}-${index}`}>\n <button type=\"button\" className={index === active ? \"active\" : \"\"} onMouseDown={(event) => event.preventDefault()} onClick={() => select(option)}>\n <span className=\"mb-native-combo-title\"><strong>{option.label}</strong>{option.badge ? <em>{option.badge}</em> : null}</span>{option.detail ? <span>{option.detail}</span> : null}\n </button>\n </li>)}\n </ul> : null}\n </div>;\n}\n\nfunction StateCombobox({ label, value, onChange, required, disabled }: { label: string; value: string; onChange: (value: string) => void; required?: boolean; disabled?: boolean }): ReactElement {\n return <Combobox\n label={label}\n value={value}\n onChange={(next) => onChange(next.toUpperCase().slice(0, 2))}\n options={US_STATES.map((state) => ({ value: state, label: state }))}\n {...(required === undefined ? {} : { required })}\n {...(disabled === undefined ? {} : { disabled })}\n name=\"mindbill-state-value\"\n />;\n}\n\nfunction inferPreset(lines: BillReviewLineItem[]): CodingPreset {\n const modifiers = new Set(lines.flatMap((line) => line.modifiers));\n return modifiers.has(\"94\") ? \"ame\" : modifiers.has(\"96\") ? \"psych_qme\" : \"qme\";\n}\n\nfunction presetModifiersForCode(preset: CodingPreset, code: string): string[] {\n if (code === \"MLPRR\") return [\"95\"];\n if (preset === \"qme\" && [\"ML200\", \"ML201\", \"ML202\", \"ML203\"].includes(code)) return [\"95\"];\n if (preset === \"ame\" && [\"ML201\", \"ML202\", \"ML203\"].includes(code)) return [\"94\"];\n if (preset === \"psych_qme\") {\n if (code === \"ML200\") return [\"95\"];\n if ([\"ML201\", \"ML202\", \"ML203\"].includes(code)) return [\"96\"];\n }\n return [];\n}\n\nfunction modifierAppliesToCode(modifier: string, code: string): boolean {\n return !code || (MODIFIER_CODES[modifier]?.includes(code) ?? true);\n}\n\nfunction applyPreset(lines: BillReviewLineItem[], preset: CodingPreset): BillReviewLineItem[] {\n return lines.map((line) => {\n const preserved = line.modifiers.filter(\n (value) => !MANAGED_EVALUATOR_MODIFIERS.has(value) && modifierAppliesToCode(value, line.code),\n );\n return {\n ...line,\n modifiers: [...new Set([...presetModifiersForCode(preset, line.code), ...preserved])],\n };\n });\n}\n\nexport function BillReviewForm({\n data,\n onSave,\n onSubmit,\n onGetDeliveryOptions,\n onAddAttachment,\n onRemoveAttachment,\n onOpenAttachment,\n onSearchClaimsAdministrators,\n className,\n style,\n appearance,\n features,\n disabled = false,\n}: BillReviewFormProps): ReactElement {\n const [draft, setDraft] = useState(() => toDraft(data));\n const [payerQuery, setPayerQuery] = useState(\n () => data.injury.claimsAdminName || \"\",\n );\n const [payerResults, setPayerResults] = useState<BillReviewPayer[]>([]);\n const [payerBusy, setPayerBusy] = useState(false);\n const [deliveryOptions, setDeliveryOptions] = useState<BillDeliveryOptions | null>(null);\n const [submission, setSubmission] = useState<BillSubmissionInput>({ route: \"ebill\" });\n const [showSubmit, setShowSubmit] = useState(false);\n const [deliveryBusy, setDeliveryBusy] = useState(false);\n const [file, setFile] = useState<File | null>(null);\n const [documentType, setDocumentType] =\n useState<BillReviewDocumentType>(\"other\");\n const [busy, setBusy] = useState<\"save\" | \"submit\" | \"attachment\" | \"\">(\"\");\n const [error, setError] = useState(\"\");\n const [notice, setNotice] = useState(\"\");\n const editable = data.bill.status === \"incomplete\" && !disabled;\n\n useEffect(() => {\n setDraft(toDraft(data));\n setPayerQuery(data.injury.claimsAdminName || \"\");\n }, [data]);\n\n useEffect(() => {\n const query = payerQuery.trim();\n const claimNumber = draft.claimNumber.trim();\n if (\n !onSearchClaimsAdministrators ||\n (query.length < 2 && claimNumber.length < 4)\n ) {\n setPayerResults([]);\n setPayerBusy(false);\n return;\n }\n let current = true;\n const timer = window.setTimeout(() => {\n setPayerBusy(true);\n void onSearchClaimsAdministrators(query, claimNumber)\n .then((results) => {\n if (!current) return;\n setPayerResults(results);\n const recommendation = results.find(\n (payer) => payer.recommended && payer.confidence === \"high\",\n );\n if (!draft.claimsAdminId && recommendation) {\n setDraft((currentDraft) => ({\n ...currentDraft,\n claimsAdminId: recommendation.id,\n claimsAdminName: recommendation.name,\n }));\n setPayerQuery(recommendation.name);\n setNotice(\n \"Claims administrator matched from the case data. Review and save to keep it on this bill.\",\n );\n }\n })\n .catch((cause) => {\n if (current) {\n setPayerResults([]);\n setError(\n cause instanceof Error\n ? cause.message\n : \"Claims administrator search is unavailable.\",\n );\n }\n })\n .finally(() => {\n if (current) setPayerBusy(false);\n });\n }, 200);\n return () => {\n current = false;\n window.clearTimeout(timer);\n };\n }, [\n draft.claimNumber,\n draft.claimsAdminId,\n onSearchClaimsAdministrators,\n payerQuery,\n ]);\n\n const selectedPayer = payerResults.find(\n (payer) => payer.id === draft.claimsAdminId,\n );\n\n const adjFormatValid =\n !draft.adjNumber ||\n /^ADJ\\d{7,}$/i.test(draft.adjNumber.replace(/[\\s-]/g, \"\"));\n const blockers = useMemo(() => {\n const result: string[] = [];\n if (!draft.patientFirstName.trim() || !draft.patientLastName.trim()) result.push(\"Patient name\");\n if (!draft.claimsAdminId) result.push(\"Claims administrator\");\n if (!draft.claimNumber.trim()) result.push(\"Claim number\");\n if (!draft.doi) result.push(\"Date of injury\");\n if (!adjFormatValid) result.push(\"Valid WCAB / ADJ number\");\n if (data.bill.billingMode === \"med_legal\" && !draft.dos) result.push(\"Date of service\");\n if (!draft.billingProvider.name.trim()) result.push(\"Practice name\");\n if (!draft.billingProvider.taxId.trim()) result.push(\"Tax ID\");\n if (!draft.billingProvider.npi.trim()) result.push(\"Billing NPI\");\n if (!draft.clinician.name.trim() || !draft.clinician.npi.trim()) result.push(\"Clinician and NPI\");\n if (![draft.location.name, draft.location.street, draft.location.city, draft.location.state, draft.location.zip].every((value) => value.trim())) result.push(\"Service location\");\n const completedLines = draft.lineItems.filter((line) => line.code.trim());\n if (!completedLines.length || completedLines.some((line) => line.units <= 0)) result.push(\"Valid procedure line\");\n if (data.bill.billingMode === \"professional\" && completedLines.some((line) => !line.serviceDate || line.charge <= 0)) {\n result.push(\"Service date and charge on every procedure line\");\n }\n return result;\n }, [adjFormatValid, data.bill.billingMode, draft]);\n const canSubmit = blockers.length === 0;\n\n const updateBillingProvider = <K extends keyof BillReviewBillingProvider>(\n key: K,\n value: BillReviewBillingProvider[K],\n ) =>\n setDraft((current) => ({\n ...current,\n billingProvider: { ...current.billingProvider, [key]: value },\n }));\n const updateClinician = <K extends keyof BillReviewClinician>(\n key: K,\n value: BillReviewClinician[K],\n ) =>\n setDraft((current) => ({\n ...current,\n clinician: { ...current.clinician, [key]: value },\n }));\n const updateLocation = <K extends keyof BillReviewLocation>(\n key: K,\n value: BillReviewLocation[K],\n ) =>\n setDraft((current) => ({\n ...current,\n location: { ...current.location, [key]: value },\n }));\n\n async function run(action: \"save\" | \"submit\", task: () => Promise<void>) {\n setBusy(action);\n setError(\"\");\n setNotice(\"\");\n try {\n await task();\n setNotice(action === \"save\" ? \"Changes saved.\" : \"Bill submitted.\");\n } catch (cause) {\n setError(\n cause instanceof Error\n ? cause.message\n : \"The billing request could not be completed.\",\n );\n } finally {\n setBusy(\"\");\n }\n }\n\n const handleSave = (event: FormEvent) => {\n event.preventDefault();\n void run(\"save\", async () => {\n const updated = await onSave(buildBillReviewSaveInput(draft));\n if (updated) setDraft(toDraft(updated));\n });\n };\n\n const openSubmit = async () => {\n setDeliveryBusy(true);\n setError(\"\");\n try {\n const next = await onGetDeliveryOptions();\n setDeliveryOptions(next);\n const recommended = next.recommended ?? next.options[0];\n if (!recommended) throw new Error(\"No delivery route is available for this payer.\");\n setSubmission({ route: recommended.route });\n setShowSubmit(true);\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : \"Delivery routes could not be loaded.\");\n } finally {\n setDeliveryBusy(false);\n }\n };\n\n const selectedDelivery = deliveryOptions?.options.find((option) => option.route === submission.route);\n const destinationLabel = submission.route === \"fax\"\n ? \"Fax number\"\n : submission.route === \"email\"\n ? \"Email address\"\n : submission.route === \"mail\"\n ? \"Mailing address\"\n : \"\";\n const destinationValue = submission.route === \"fax\"\n ? submission.destination?.faxNumber ?? selectedDelivery?.target ?? deliveryOptions?.contacts.faxNumber ?? \"\"\n : submission.route === \"email\"\n ? submission.destination?.email ?? selectedDelivery?.target ?? deliveryOptions?.contacts.claimsEmail ?? \"\"\n : submission.route === \"mail\"\n ? submission.destination?.mailingAddress ?? selectedDelivery?.target ?? deliveryOptions?.contacts.mailingAddress ?? \"\"\n : \"\";\n const setDestination = (value: string) => setSubmission((current) => {\n const destination = current.route === \"fax\"\n ? { faxNumber: value }\n : current.route === \"email\"\n ? { email: value }\n : { mailingAddress: value };\n return { ...current, destination };\n });\n const handleSubmit = () => run(\"submit\", async () => {\n await onSubmit(buildBillReviewSaveInput(draft), submission);\n setShowSubmit(false);\n });\n\n const attach = async () => {\n if (!file) return;\n setBusy(\"attachment\");\n setError(\"\");\n try {\n await onAddAttachment(file, documentType, DOCUMENT_LABELS[documentType]);\n setFile(null);\n setDocumentType(\"other\");\n setNotice(\"Document added to the payer packet.\");\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : \"Document could not be attached.\");\n } finally {\n setBusy(\"\");\n }\n };\n\n const sectionClass = \"mb-native-section\";\n return (\n <form\n className={[\"mb-native-review\", className].filter(Boolean).join(\" \")}\n style={mindBillAppearanceStyle(appearance, style)}\n onSubmit={handleSave}\n >\n <style>{NATIVE_BILL_REVIEW_STYLES}</style>\n <style>{NATIVE_THEME_OVERRIDE_STYLES}</style>\n <style>{NATIVE_SUBMISSION_DIALOG_STYLES}</style>\n <header className=\"mb-native-heading\">\n <div>\n <span className=\"mb-native-eyebrow\">Billing review</span>\n <h2>Bill #{data.bill.billNumber}</h2>\n <p>Review the prefilled claim and payer packet, then submit.</p>\n </div>\n <div className=\"mb-native-total\">\n <span>{data.bill.status}</span>\n <strong>{money(data.bill.totalCharge)}</strong>\n </div>\n </header>\n\n <dl className=\"mb-native-summary\">\n <div><dt>Patient</dt><dd>{[draft.patientFirstName, draft.patientMiddleName, draft.patientLastName].filter(Boolean).join(\" \") || \"—\"}</dd></div>\n <div><dt>Claim</dt><dd>{draft.claimNumber || \"—\"}</dd></div>\n <div><dt>Employer</dt><dd>{draft.employer || \"—\"}</dd></div>\n <div><dt>Date of injury</dt><dd>{draft.doi || \"—\"}</dd></div>\n </dl>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\">\n <div>\n <h3>Claims administrator</h3>\n <p>Select the carrier or administrator that should receive this bill.</p>\n </div>\n {draft.claimsAdminId ? <span>Selected</span> : <span>Required</span>}\n </div>\n <div className=\"mb-native-payer-picker\">\n <Combobox\n label=\"Insurance company or claims administrator\"\n value={payerQuery}\n disabled={!editable}\n placeholder=\"Search by payer or administrator name\"\n name=\"mindbill-payer-query\"\n options={payerResults.map((payer) => ({\n value: payer.id,\n label: payer.name,\n ...(payer.recommended\n ? { badge: \"Recommended\" }\n : payer.confidence === \"medium\"\n ? { badge: \"Claim match\" }\n : {}),\n detail: [\n ...(payer.signals ?? []).map((signal) => signal.label),\n payer.hasElectronic\n ? \"Electronic billing available.\"\n : \"Billing route confirmed after review.\",\n ].join(\" \"),\n }))}\n onChange={(value, option) => {\n if (option) {\n setDraft((current) => ({ ...current, claimsAdminId: option.value, claimsAdminName: option.label }));\n setPayerQuery(option.label);\n setNotice(\"Claims administrator selected. Save changes to keep it on this bill.\");\n } else {\n setPayerQuery(value);\n setDraft((current) => value === current.claimsAdminName ? current : { ...current, claimsAdminId: \"\", claimsAdminName: \"\" });\n }\n }}\n />\n {payerBusy ? <span className=\"mb-native-payer-help\">Searching…</span> : null}\n {!payerBusy && payerQuery.trim().length > 1 && payerResults.length === 0 && !draft.claimsAdminId ? (\n <span className=\"mb-native-payer-help\">No matching administrator selected yet.</span>\n ) : null}\n {selectedPayer?.signals?.length ? (\n <div className=\"mb-native-payer-insight\" role=\"status\">\n {selectedPayer.signals.map((signal) => (\n <span className={signal.state} key={`${signal.kind}-${signal.label}`}>\n {signal.label}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Patient and claim</h3><p>Prefilled from the case. Correct anything that should print differently on this bill.</p></div><span>Editable</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Patient first name\" required disabled={!editable} value={draft.patientFirstName} onChange={(patientFirstName) => setDraft((current) => ({ ...current, patientFirstName }))} />\n <Field label=\"Middle name\" optional disabled={!editable} value={draft.patientMiddleName} onChange={(patientMiddleName) => setDraft((current) => ({ ...current, patientMiddleName }))} />\n <Field label=\"Patient last name\" required disabled={!editable} value={draft.patientLastName} onChange={(patientLastName) => setDraft((current) => ({ ...current, patientLastName }))} />\n <Field label=\"Date of birth\" type=\"date\" required disabled={!editable} value={draft.patientDob} onChange={(patientDob) => setDraft((current) => ({ ...current, patientDob }))} />\n <Field label=\"Claim number\" required disabled={!editable} value={draft.claimNumber} onChange={(claimNumber) => setDraft((current) => ({ ...current, claimNumber }))} {...((data.injury.claimPatternStatus?.detail || data.injury.claimPatternStatus?.label) ? { hint: data.injury.claimPatternStatus?.detail || data.injury.claimPatternStatus?.label || \"\" } : {})} />\n <Field label=\"Employer\" disabled={!editable} value={draft.employer} onChange={(employer) => setDraft((current) => ({ ...current, employer }))} />\n <Field label=\"Date of injury\" type=\"date\" required disabled={!editable} value={draft.doi} onChange={(doi) => setDraft((current) => ({ ...current, doi }))} />\n {draft.cumulativeTrauma ? <Field label=\"Cumulative trauma end date\" type=\"date\" required disabled={!editable} value={draft.injuryEndDate} onChange={(injuryEndDate) => setDraft((current) => ({ ...current, injuryEndDate }))} /> : null}\n {features?.wcabNumber === false ? null : <Field label=\"WCAB / ADJ number\" optional disabled={!editable} value={draft.adjNumber} onChange={(adjNumber) => setDraft((current) => ({ ...current, adjNumber }))} hint={adjFormatValid ? \"Use the EAMS case number shown as ADJ followed by digits.\" : \"Expected format: ADJ followed by at least 7 digits.\"} />}\n </div>\n {features?.wcabNumber === false ? null : <p className=\"mb-native-eams\">EAMS lookup requires California DWC verification. <a href=\"https://eams.dwc.ca.gov/WebEnhancement/\" target=\"_blank\" rel=\"noreferrer\">Verify in EAMS</a>.</p>}\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Service</h3><p>The service date and optional payer authorization printed on this bill.</p></div></div>\n <div className={`mb-native-grid ${features?.serviceDateRange || features?.authorizationNumber !== false ? \"three\" : \"one\"}`}>\n <Field label=\"Date of service\" type=\"date\" required disabled={!editable} value={draft.dos} onChange={(dos) => setDraft((current) => ({ ...current, dos }))} />\n {features?.serviceDateRange ? <Field label=\"Service end date\" type=\"date\" optional disabled={!editable} value={draft.dosEnd} onChange={(dosEnd) => setDraft((current) => ({ ...current, dosEnd }))} /> : null}\n {features?.authorizationNumber === false ? null : <Field label=\"Authorization number\" optional disabled={!editable} value={draft.authorizationNumber} onChange={(authorizationNumber) => setDraft((current) => ({ ...current, authorizationNumber }))} />}\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Billing practice</h3><p>Payee identity and billing address for this claim.</p></div><span>Prefilled</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Practice name\" required value={draft.billingProvider.name} onChange={(value) => updateBillingProvider(\"name\", value)} />\n <Field label=\"Tax ID\" required value={draft.billingProvider.taxId} onChange={(value) => updateBillingProvider(\"taxId\", value)} />\n <Field label=\"Billing NPI\" required value={draft.billingProvider.npi} onChange={(value) => updateBillingProvider(\"npi\", value)} />\n <Field label=\"Phone\" optional value={draft.billingProvider.phone || \"\"} onChange={(value) => updateBillingProvider(\"phone\", value)} />\n <Field label=\"Billing street\" required value={draft.billingProvider.billingStreet || \"\"} onChange={(value) => updateBillingProvider(\"billingStreet\", value)} />\n <Field label=\"City\" required value={draft.billingProvider.billingCity || \"\"} onChange={(value) => updateBillingProvider(\"billingCity\", value)} />\n <StateCombobox label=\"State\" required disabled={!editable} value={draft.billingProvider.billingState || \"\"} onChange={(value) => updateBillingProvider(\"billingState\", value)} />\n <Field label=\"ZIP\" required value={draft.billingProvider.billingZip || \"\"} onChange={(value) => updateBillingProvider(\"billingZip\", value)} />\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Clinician</h3><p>Provider identity printed on the claim.</p></div><span>Prefilled</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Clinician name\" required value={draft.clinician.name} onChange={(value) => updateClinician(\"name\", value)} />\n <Field label=\"Specialty\" value={draft.clinician.specialty} onChange={(value) => updateClinician(\"specialty\", value)} />\n <Field label=\"NPI\" required value={draft.clinician.npi} onChange={(value) => updateClinician(\"npi\", value)} />\n <Field label=\"Taxonomy\" optional value={draft.clinician.taxonomy || \"\"} onChange={(value) => updateClinician(\"taxonomy\", value)} />\n <Field label=\"License number\" optional value={draft.clinician.licenseNumber || \"\"} onChange={(value) => updateClinician(\"licenseNumber\", value)} />\n <StateCombobox label=\"License state (optional)\" disabled={!editable} value={draft.clinician.licenseState || \"\"} onChange={(value) => updateClinician(\"licenseState\", value)} />\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Service location</h3><p>The exact place of service for this bill.</p></div><span>Prefilled</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Location name\" required value={draft.location.name} onChange={(value) => updateLocation(\"name\", value)} />\n <Field label=\"Street\" required value={draft.location.street} onChange={(value) => updateLocation(\"street\", value)} />\n <Field label=\"City\" required value={draft.location.city} onChange={(value) => updateLocation(\"city\", value)} />\n <StateCombobox label=\"State\" required disabled={!editable} value={draft.location.state} onChange={(value) => updateLocation(\"state\", value)} />\n <Field label=\"ZIP\" required value={draft.location.zip} onChange={(value) => updateLocation(\"zip\", value)} />\n <Field label=\"Place of service code\" required value={draft.location.posCode || \"11\"} onChange={(value) => updateLocation(\"posCode\", value)} />\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Procedure lines</h3><p>{data.bill.billingMode === \"professional\" ? \"Enter the professional services billed. Each line may carry its own date, charge, and diagnosis pointers.\" : \"Choose a billing profile, then review the codes and modifiers.\"} A new row appears as you type.</p></div></div>\n {data.bill.billingMode === \"professional\" || features?.codingPresets === false ? null : <div className=\"mb-native-presets\" role=\"group\" aria-label=\"Evaluation billing profile\">\n {([['qme','QME'],['ame','AME'],['psych_qme','Psych QME']] as const).map(([value,label]) => <button type=\"button\" key={value} className={inferPreset(draft.lineItems) === value ? \"active\" : \"\"} disabled={!editable} onClick={() => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(applyPreset(current.lineItems, value)) }))}>{label}</button>)}\n <span>Sets evaluator modifiers across med-legal lines. You can still edit each line.</span>\n </div>}\n <div className=\"mb-native-lines\">\n {draft.lineItems.map((line, index) => (\n <div className={`mb-native-line ${data.bill.billingMode === \"professional\" ? \"professional\" : \"\"}`} key={line.id || index}>\n <label className=\"mb-native-field\"><span>Procedure</span>{data.bill.billingMode === \"professional\" ? <input disabled={!editable} placeholder=\"CPT / HCPCS code\" value={line.code} onChange={(event) => {\n const code = event.target.value.toUpperCase();\n setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, code } : item)) }));\n }} /> : <select disabled={!editable} value={line.code} onChange={(event) => {\n const code = event.target.value;\n setDraft((current) => {\n const lineItems = current.lineItems.map((item, itemIndex) => {\n if (itemIndex !== index) return item;\n const presetLine = applyPreset([{ ...item, code }], inferPreset(current.lineItems))[0];\n return { ...item, code, modifiers: presetLine?.modifiers || [] };\n });\n return { ...current, lineItems: ensureTrailingProcedureLine(lineItems) };\n });\n }}><option value=\"\">Select code…</option>{PROCEDURES.map(([code,label]) => <option value={code} key={code}>{code} — {label}</option>)}</select>}{data.bill.billingMode === \"med_legal\" && line.code ? <small>{PROCEDURES.find(([code]) => code === line.code)?.[1]}</small> : null}</label>\n <div className=\"mb-native-modifiers\">{data.bill.billingMode === \"professional\" ? <label className=\"mb-native-field\"><span>Modifiers</span><input disabled={!editable} placeholder=\"e.g. 25, 59\" value={line.modifiers.join(\", \")} onChange={(event) => {\n const modifiers = event.target.value.toUpperCase().split(/[ ,]+/).map((value) => value.replace(/^-/, \"\")).filter(Boolean);\n setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, modifiers } : item)) }));\n }} /></label> : <label className=\"mb-native-field\"><span>Modifiers</span><select disabled={!editable} value=\"\" onChange={(event) => {\n const modifier = event.target.value;\n if (!modifier) return;\n setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, modifiers: [...new Set([...item.modifiers, modifier])] } : item)) }));\n }}><option value=\"\">Add modifier…</option>{MODIFIERS.filter(([value]) => !line.modifiers.includes(value) && modifierAppliesToCode(value, line.code)).map(([value,label]) => <option value={value} key={value}>-{value} — {label}</option>)}</select></label>}<div className=\"mb-native-chips\">{data.bill.billingMode === \"med_legal\" ? line.modifiers.map((modifier) => <button type=\"button\" disabled={!editable} key={modifier} onClick={() => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, modifiers: item.modifiers.filter((value) => value !== modifier) } : item)) }))}>-{modifier} ×</button>) : null}</div></div>\n <label className=\"mb-native-field\"><span>Units</span><input type=\"number\" min=\"1\" required disabled={!editable} value={line.units} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, units: Number(event.target.value) } : item)) }))} /></label>\n {data.bill.billingMode === \"professional\" ? <>\n <label className=\"mb-native-field\"><span>Service date</span><input type=\"date\" required={Boolean(line.code)} disabled={!editable} value={line.serviceDate || \"\"} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, serviceDate: event.target.value } : item)) }))} /></label>\n <label className=\"mb-native-field\"><span>End date <small>Optional</small></span><input type=\"date\" disabled={!editable} value={line.serviceDateEnd || \"\"} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, serviceDateEnd: event.target.value } : item)) }))} /></label>\n <label className=\"mb-native-field\"><span>Charge</span><input type=\"number\" min=\"0.01\" step=\"0.01\" required={Boolean(line.code)} disabled={!editable} value={line.charge || \"\"} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, charge: Number(event.target.value) } : item)) }))} /></label>\n <label className=\"mb-native-field\"><span>Diagnosis pointers <small>1–12</small></span><input inputMode=\"numeric\" disabled={!editable} value={(line.diagnosisPointers || []).join(\", \")} onChange={(event) => { const diagnosisPointers = event.target.value.split(/[ ,]+/).map(Number).filter((value) => Number.isInteger(value) && value >= 1 && value <= 12); setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, diagnosisPointers } : item)) })); }} /></label>\n </> : null}\n <div className=\"mb-native-allowed\"><span>Allowed</span><strong>{money(line.charge)}</strong></div>\n <button type=\"button\" className=\"mb-native-remove\" aria-label={`Remove ${line.code || \"procedure\"}`} disabled={!editable} onClick={() => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.filter((_, itemIndex) => itemIndex !== index)) }))}>×</button>\n </div>\n ))}\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Payer billing packet</h3><p>Review exactly what will be sent with this bill.</p></div><span>{data.bill.attachments.length} files</span></div>\n <div className=\"mb-native-note\"><strong>Separate from attorney report service.</strong> Final reports, proof of service, and required billing forms may be preselected. Medical records are never silently attached.</div>\n <ul className=\"mb-native-documents\">\n {data.bill.attachments.map((attachment) => (\n <li key={attachment.id}>\n <span className=\"mb-native-file\">PDF</span>\n <div><strong>{attachment.filename}</strong><span>{DOCUMENT_LABELS[attachment.documentType as BillReviewDocumentType] || attachment.description || \"Supporting document\"}</span></div>\n {onOpenAttachment ? <button type=\"button\" className=\"mb-native-button quiet\" onClick={() => onOpenAttachment(attachment)}>View</button> : null}\n <button type=\"button\" className=\"mb-native-remove\" disabled={!editable || busy === \"attachment\"} aria-label={`Remove ${attachment.filename}`} onClick={() => void onRemoveAttachment(attachment.id).catch((cause) => setError(cause instanceof Error ? cause.message : \"Document could not be removed.\"))}>×</button>\n </li>\n ))}\n </ul>\n <div className=\"mb-native-attach\">\n <div><strong>Add supporting PDF</strong><span>Choose any additional document intentionally. Up to 25 MB.</span></div>\n <select aria-label=\"Document type\" value={documentType} disabled={!editable} onChange={(event) => setDocumentType(event.target.value as BillReviewDocumentType)}>{Object.entries(DOCUMENT_LABELS).map(([value, label]) => <option key={value} value={value}>{label}</option>)}</select>\n <input aria-label=\"Choose supporting PDF\" type=\"file\" accept=\"application/pdf,.pdf\" disabled={!editable} onChange={(event) => setFile(event.target.files?.[0] || null)} />\n <button className=\"mb-native-button secondary\" type=\"button\" disabled={!editable || !file || busy === \"attachment\"} onClick={() => void attach()}>{busy === \"attachment\" ? \"Attaching…\" : \"Attach document\"}</button>\n </div>\n </section>\n\n <section className=\"mb-native-submit\">\n <div><span className=\"mb-native-eyebrow\">Delivery</span><h3>Submit this bill</h3><p>After submission, status, payments, denials, and resubmissions stay available here.</p></div>\n {error ? <div className=\"mb-native-message error\" role=\"alert\">{error}</div> : null}\n {notice ? <div className=\"mb-native-message success\" role=\"status\">{notice}</div> : null}\n {!canSubmit ? <div className=\"mb-native-blockers\" role=\"status\"><strong>Before you can submit:</strong><span>{blockers.join(\" · \")}</span></div> : null}\n <div className=\"mb-native-actions\">\n <button className=\"mb-native-button secondary\" type=\"submit\" disabled={!editable || busy !== \"\"}>{busy === \"save\" ? \"Saving…\" : \"Save changes\"}</button>\n <button className=\"mb-native-button primary\" type=\"button\" disabled={!editable || !canSubmit || busy !== \"\" || deliveryBusy} onClick={() => void openSubmit()}>{deliveryBusy ? \"Loading delivery…\" : \"Review delivery\"}</button>\n </div>\n </section>\n {showSubmit && deliveryOptions ? <div className=\"mb-native-modal-backdrop\" role=\"presentation\" onMouseDown={(event) => { if (event.target === event.currentTarget && busy !== \"submit\") setShowSubmit(false); }}>\n <section className=\"mb-native-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"mb-native-submit-title\">\n <header><div><span className=\"mb-native-eyebrow\">Send bill</span><h3 id=\"mb-native-submit-title\">Choose a delivery route</h3><p>{deliveryOptions.payerName || \"Claims administrator\"}</p></div><button type=\"button\" className=\"mb-native-close\" aria-label=\"Close\" disabled={busy === \"submit\"} onClick={() => setShowSubmit(false)}>×</button></header>\n <fieldset className=\"mb-native-delivery-options\"><legend>Available delivery routes</legend>{deliveryOptions.options.map((option) => <label className={submission.route === option.route ? \"selected\" : \"\"} key={`${option.route}-${option.target || \"default\"}`}><input type=\"radio\" name=\"mindbill-delivery-route\" checked={submission.route === option.route} onChange={() => setSubmission({ route: option.route })} /><span><strong>{option.label}</strong><small>{option.detail}</small>{option.target ? <code>{option.target}</code> : null}</span>{deliveryOptions.recommended?.route === option.route ? <em>Recommended</em> : null}</label>)}</fieldset>\n {submission.route !== \"ebill\" ? <div className=\"mb-native-grid two\"><Field label={destinationLabel} required value={destinationValue} onChange={setDestination} hint=\"You can override the payer directory value for this submission.\" /><Field label=\"Attention\" optional value={submission.attention || \"\"} onChange={(attention) => setSubmission((current) => ({ ...current, attention }))} />{submission.route === \"email\" ? <Field label=\"Subject\" optional value={submission.subject || \"\"} onChange={(subject) => setSubmission((current) => ({ ...current, subject }))} /> : null}</div> : null}\n <Field label=\"Delivery note\" optional value={submission.note || \"\"} onChange={(note) => setSubmission((current) => ({ ...current, note }))} />\n <footer><button className=\"mb-native-button secondary\" type=\"button\" disabled={busy === \"submit\"} onClick={() => setShowSubmit(false)}>Cancel</button><button className=\"mb-native-button primary\" type=\"button\" disabled={busy === \"submit\" || (submission.route !== \"ebill\" && !destinationValue.trim())} onClick={() => void handleSubmit()}>{busy === \"submit\" ? \"Submitting…\" : `Send via ${selectedDelivery?.label || submission.route}`}</button></footer>\n </section>\n </div> : null}\n </form>\n );\n}\n\nexport type BillStatusSummaryProps = {\n status: string;\n submittedAt?: string | null;\n agingDays?: number | null;\n updatedAt?: string | null;\n totalCharge: number;\n totalPaid: number;\n balanceDue: number;\n actions?: BillStatusAction[];\n className?: string;\n style?: CSSProperties;\n appearance?: MindBillReactAppearance;\n};\n\nexport type BillStatusAction = {\n id: string;\n label: string;\n onClick: () => void;\n primary?: boolean;\n disabled?: boolean;\n};\n\nexport function BillStatusSummary({ status, submittedAt, agingDays, updatedAt, totalCharge, totalPaid, balanceDue, actions = [], className, style, appearance }: BillStatusSummaryProps): ReactElement {\n return <section className={[\"mb-native-status\", className].filter(Boolean).join(\" \")} style={mindBillAppearanceStyle(appearance, style)}>\n <style>{NATIVE_BILL_REVIEW_STYLES}</style>\n <style>{NATIVE_THEME_OVERRIDE_STYLES}</style>\n <div className=\"mb-native-status-copy\"><span className=\"mb-native-eyebrow\">Bill status</span><h3>{status.replaceAll(\"_\", \" \")}</h3><p>{submittedAt ? `Submitted ${new Date(submittedAt).toLocaleDateString()}` : \"Not submitted\"}{agingDays == null ? \"\" : ` · ${agingDays} day${agingDays === 1 ? \"\" : \"s\"} old`}{updatedAt ? ` · Updated ${new Date(updatedAt).toLocaleDateString()}` : \"\"}</p></div>\n <dl><div><dt>Charged</dt><dd>{money(totalCharge)}</dd></div><div><dt>Paid</dt><dd>{money(totalPaid)}</dd></div><div><dt>Balance</dt><dd>{money(balanceDue)}</dd></div></dl>\n {actions.length ? <div className=\"mb-native-status-actions\">{actions.map((action) => <button key={action.id} type=\"button\" className={`mb-native-button ${action.primary ? \"primary\" : \"secondary\"}`} disabled={action.disabled} onClick={action.onClick}>{action.label}</button>)}</div> : null}\n </section>;\n}\n\nconst NATIVE_SUBMISSION_DIALOG_STYLES = `\n.mb-native-field select{width:100%;min-height:43px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:10px 12px}\n.mb-native-field select:focus{border-color:var(--mb-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mb-accent) 14%,transparent);outline:0}\n.mb-native-line.professional{grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) 86px 150px 150px 120px minmax(130px,1fr) 120px 28px;overflow-x:auto}\n.mb-native-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.mb-native-modal-backdrop{position:fixed;z-index:9999;inset:0;display:grid;place-items:center;padding:20px;background:rgba(20,38,46,.55);backdrop-filter:blur(3px)}\n.mb-native-modal{display:grid;gap:18px;width:min(720px,100%);max-height:min(820px,calc(100vh - 40px));overflow:auto;padding:22px;border:1px solid var(--mb-border);border-radius:16px;background:#fff;box-shadow:0 28px 80px rgba(14,35,44,.3)}\n.mb-native-modal>header,.mb-native-modal>footer{display:flex;align-items:start;justify-content:space-between;gap:16px}.mb-native-modal>footer{justify-content:flex-end}.mb-native-modal h3{margin:3px 0;font-size:22px}.mb-native-modal p{margin:0;color:var(--mb-muted)}\n.mb-native-close{border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font-size:23px;line-height:1;padding:8px 12px}\n.mb-native-delivery-options{display:grid;gap:9px;margin:0;padding:0;border:0}.mb-native-delivery-options legend{margin-bottom:8px;font-weight:800}.mb-native-delivery-options label{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:12px;padding:14px;border:1px solid var(--mb-border);border-radius:10px;cursor:pointer}.mb-native-delivery-options label.selected{border-color:var(--mb-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--mb-accent) 14%,transparent)}.mb-native-delivery-options label>span{display:grid;gap:2px}.mb-native-delivery-options small{color:var(--mb-muted)}.mb-native-delivery-options code{margin-top:4px;color:var(--mb-text);font:12px/1.4 ui-monospace,SFMono-Regular,monospace}.mb-native-delivery-options em{border-radius:999px;background:var(--mb-soft);color:var(--mb-accent-dark);font-size:10px;font-style:normal;font-weight:800;padding:5px 8px;text-transform:uppercase}\n@media(max-width:1100px){.mb-native-line.professional{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-native-line.professional .mb-native-allowed{text-align:left}}\n@media(max-width:620px){.mb-native-grid.two,.mb-native-line.professional{grid-template-columns:1fr}.mb-native-modal-backdrop{padding:0}.mb-native-modal{width:100%;max-height:100vh;border-radius:0;padding:18px}.mb-native-delivery-options label{grid-template-columns:auto 1fr}.mb-native-delivery-options em{grid-column:2}}\n`;\n\nconst NATIVE_BILL_REVIEW_STYLES = `\n.mb-native-review,.mb-native-status{font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-native-review,.mb-native-status{--mb-accent:#238dbd;--mb-accent-dark:#176f98;--mb-text:#203743;--mb-muted:#657982;--mb-border:#dbe6ea;--mb-soft:#f3f8fa;--mb-surface:#fff;color:var(--mb-text);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}.mb-native-review *,.mb-native-status *{box-sizing:border-box}.mb-native-review{display:grid;gap:16px}.mb-native-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:6px 2px}.mb-native-heading h2,.mb-native-section h3,.mb-native-submit h3,.mb-native-status h3{margin:3px 0 2px;line-height:1.2}.mb-native-heading h2{font-size:25px}.mb-native-heading p,.mb-native-section p,.mb-native-submit p,.mb-native-status p{margin:0;color:var(--mb-muted)}.mb-native-eyebrow{color:#59727d;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.mb-native-total{display:flex;align-items:center;gap:18px}.mb-native-total span,.mb-native-section-head>span{border-radius:999px;background:var(--mb-soft);color:#58717c;font-size:11px;font-weight:800;padding:6px 10px;text-transform:capitalize}.mb-native-total strong{font-size:24px}.mb-native-summary{display:grid;grid-template-columns:repeat(4,1fr);margin:0;border:1px solid var(--mb-border);border-radius:12px;background:var(--mb-surface);overflow:hidden}.mb-native-summary div{padding:17px 20px;border-right:1px solid var(--mb-border)}.mb-native-summary div:last-child{border:0}.mb-native-summary dt,.mb-native-allowed span{color:#647982;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.mb-native-summary dd{margin:5px 0 0;font-weight:750}.mb-native-section{padding:20px;border:1px solid var(--mb-border);border-radius:14px;background:var(--mb-surface);box-shadow:0 8px 24px rgba(28,58,72,.04)}.mb-native-section-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:17px}.mb-native-section h3,.mb-native-submit h3,.mb-native-status h3{font-size:19px}.mb-native-grid{display:grid;gap:14px}.mb-native-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.mb-native-field{display:grid;gap:6px;min-width:0;color:var(--mb-text);font-size:12px;font-weight:750}.mb-native-field small{color:var(--mb-muted);font-size:inherit;font-weight:500}.mb-native-field input,.mb-native-attach select,.mb-native-attach input{width:100%;min-height:43px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:10px 12px}.mb-native-field input:focus,.mb-native-attach select:focus,.mb-native-attach input:focus{border-color:var(--mb-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mb-accent) 14%,transparent);outline:0}.mb-native-lines{display:grid;gap:10px}.mb-native-line{display:grid;grid-template-columns:1.1fr 1.1fr 110px 120px 28px;align-items:end;gap:12px;padding:13px;background:var(--mb-soft);border:1px solid #e3edf0;border-radius:10px}.mb-native-allowed{display:grid;gap:5px;padding:0 8px 11px;text-align:right}.mb-native-allowed strong{font-size:16px}.mb-native-remove{border:0;background:transparent;color:#667d86;cursor:pointer;font-size:20px;padding:7px}.mb-native-note{padding:13px 15px;border:1px solid #bdd9e4;border-radius:9px;background:#f2f9fc;color:#526d78}.mb-native-note strong{color:var(--mb-text);margin-right:12px}.mb-native-documents{list-style:none;margin:14px 0;padding:0}.mb-native-documents li{display:grid;grid-template-columns:42px 1fr auto 28px;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--mb-border)}.mb-native-documents li>div{display:grid}.mb-native-documents li span{color:var(--mb-muted);font-size:12px}.mb-native-file{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;background:#eaf5f9;color:var(--mb-accent)!important;font-size:11px!important;font-weight:850}.mb-native-attach{display:grid;grid-template-columns:1fr 230px minmax(220px,1fr) auto;align-items:end;gap:12px;padding:15px;border-radius:10px;background:var(--mb-soft)}.mb-native-attach>div{display:grid;gap:3px}.mb-native-attach span{color:var(--mb-muted);font-size:12px}.mb-native-button{min-height:40px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:9px 14px}.mb-native-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:#fff}.mb-native-button.primary:hover{background:var(--mb-accent-dark)}.mb-native-button.secondary{background:#fff}.mb-native-button.quiet{min-height:auto;background:var(--mb-soft);padding:7px 11px}.mb-native-button:disabled,.mb-native-remove:disabled{cursor:not-allowed;opacity:.5}.mb-native-submit{display:grid;grid-template-columns:1fr auto;align-items:end;gap:18px;padding:22px;border:1px solid #bcd8e2;border-radius:14px;background:linear-gradient(135deg,#f3fafc,#eaf6fa)}.mb-native-submit fieldset{display:flex;gap:6px;margin:0;padding:0;border:0}.mb-native-submit legend{position:absolute;width:1px;height:1px;overflow:hidden}.mb-native-submit fieldset label{display:flex;align-items:center;gap:6px;padding:9px 11px;border:1px solid #c9dce3;border-radius:8px;background:#fff;font-weight:700}.mb-native-actions{display:flex;justify-content:flex-end;gap:10px;grid-column:1/-1}.mb-native-message{grid-column:1/-1;padding:10px 12px;border-radius:8px}.mb-native-message.error{background:#fff0ef;color:#9d3029}.mb-native-message.success{background:#edf9f2;color:#217449}.mb-native-status{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;border:1px solid var(--mb-border);border-radius:12px;background:#fff}.mb-native-status h3{text-transform:capitalize}.mb-native-status dl{display:flex;margin:0}.mb-native-status dl div{min-width:110px;padding:0 18px;border-left:1px solid var(--mb-border)}.mb-native-status dt{color:var(--mb-muted);font-size:11px}.mb-native-status dd{margin:4px 0 0;font-size:17px;font-weight:800}@media(max-width:900px){.mb-native-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-native-summary{grid-template-columns:repeat(2,1fr)}.mb-native-summary div:nth-child(2){border-right:0}.mb-native-summary div:nth-child(-n+2){border-bottom:1px solid var(--mb-border)}.mb-native-line{grid-template-columns:1fr 1fr 90px}.mb-native-allowed{align-self:center}.mb-native-attach{grid-template-columns:1fr 1fr}.mb-native-submit{grid-template-columns:1fr}.mb-native-submit fieldset,.mb-native-actions{grid-column:1}.mb-native-actions{justify-content:start}}@media(max-width:620px){.mb-native-heading,.mb-native-total,.mb-native-status{align-items:start;flex-direction:column}.mb-native-grid.three,.mb-native-summary,.mb-native-line,.mb-native-attach{grid-template-columns:1fr}.mb-native-summary div,.mb-native-summary div:nth-child(2){border-right:0;border-bottom:1px solid var(--mb-border)}.mb-native-line{align-items:stretch}.mb-native-allowed{text-align:left}.mb-native-submit fieldset{display:grid;grid-template-columns:1fr 1fr}.mb-native-status dl{width:100%}.mb-native-status dl div{min-width:0;flex:1;padding:0 10px}.mb-native-status dl div:first-child{padding-left:0;border-left:0}}\n.mb-native-status-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.mb-native-status-copy{min-width:150px}.mb-native-review,.mb-native-status{font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-native-review{padding:clamp(16px,2vw,24px)}\n.mb-native-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.mb-native-payer-picker{position:relative;max-width:760px}\n.mb-native-payer-help{display:block;margin-top:7px;color:var(--mb-muted);font-size:12px}\n.mb-native-payer-results{position:absolute;z-index:5;top:calc(100% + 6px);right:0;left:0;max-height:280px;overflow:auto;list-style:none;margin:0;padding:6px;border:1px solid var(--mb-border);border-radius:10px;background:var(--mb-surface);box-shadow:0 16px 40px rgba(28,58,72,.16)}\n.mb-native-payer-results li{margin:0;padding:0}\n.mb-native-payer-results button{display:grid;width:100%;gap:2px;padding:11px 12px;border:0;border-radius:7px;background:transparent;color:var(--mb-text);font:inherit;text-align:left;cursor:pointer}\n.mb-native-payer-results button:hover,.mb-native-payer-results button:focus{background:var(--mb-soft);outline:0}\n.mb-native-payer-results span{color:var(--mb-muted);font-size:12px}\n.mb-native-grid.one{grid-template-columns:minmax(0,1fr)}\n.mb-native-field select{width:100%;min-height:43px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:10px 36px 10px 12px}\n.mb-native-field select:focus{border-color:var(--mb-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mb-accent) 14%,transparent);outline:0}\n.mb-native-field input:disabled,.mb-native-field select:disabled{cursor:not-allowed;background:#f6f8f9;color:#667982}\n.mb-native-hint{color:var(--mb-muted);font-size:12px;font-weight:500}\n.mb-native-combo{position:relative;min-width:0}\n.mb-native-combo-list{position:absolute;z-index:20;top:calc(100% + 6px);right:0;left:0;max-height:300px;overflow:auto;list-style:none;margin:0;padding:6px;border:1px solid var(--mb-border);border-radius:10px;background:var(--mb-surface);box-shadow:0 18px 42px rgba(28,58,72,.18)}\n.mb-native-combo-list li{margin:0;padding:0}.mb-native-combo-list button{display:grid;width:100%;gap:4px;padding:11px 12px;border:0;border-radius:7px;background:transparent;color:var(--mb-text);font:inherit;text-align:left;cursor:pointer}.mb-native-combo-list button:hover,.mb-native-combo-list button.active{background:var(--mb-soft);outline:0}.mb-native-combo-list button>span{color:var(--mb-muted);font-size:12px;font-weight:500}.mb-native-combo-list .mb-native-combo-title{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--mb-text);font-size:14px}.mb-native-combo-title em{border-radius:999px;background:#e9f6f3;color:#24725f;font-size:10px;font-style:normal;font-weight:800;letter-spacing:.03em;padding:3px 7px;text-transform:uppercase}\n.mb-native-payer-insight{display:grid;gap:5px;margin-top:10px;padding:11px 13px;border:1px solid #c9dfe7;border-radius:9px;background:#f4fafc}.mb-native-payer-insight span{color:#426570;font-size:12px}.mb-native-payer-insight span.warning{color:#8a5c17}\n.mb-native-presets{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:-2px 0 14px}.mb-native-presets button{min-height:36px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:7px 13px}.mb-native-presets button.active{border-color:var(--mb-accent);background:var(--mb-accent);color:#fff}.mb-native-presets span{margin-left:5px;color:var(--mb-muted);font-size:12px}\n.mb-native-modifiers{display:grid;gap:7px}.mb-native-chips{display:flex;flex-wrap:wrap;gap:5px}.mb-native-chips button{border:1px solid #c9dce3;border-radius:999px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-size:11px;font-weight:750;padding:4px 8px}\n.mb-native-blockers{grid-column:1/-1;display:grid;gap:2px;padding:11px 13px;border:1px solid #e8cf9a;border-radius:8px;background:#fff9ea;color:#74531b}.mb-native-blockers span{font-size:12px}\n.mb-native-eams{margin-top:13px!important;font-size:12px}.mb-native-eams a{color:var(--mb-accent);font-weight:750}\n@media(max-width:620px){.mb-native-review{padding:12px}.mb-native-grid.two{grid-template-columns:1fr}}\n`;\n\nconst NATIVE_THEME_OVERRIDE_STYLES = `\n.mb-native-review,.mb-native-status{color:var(--mb-text);font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-native-review{background:var(--mb-soft)}\n.mb-native-heading>div:first-child>p,.mb-native-section>header p,.mb-native-total span,.mb-native-status-copy p,.mb-native-status dt{color:var(--mb-muted)}\n.mb-native-summary,.mb-native-section,.mb-native-status{border-color:var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface);box-shadow:var(--mb-shadow)}\n.mb-native-field input,.mb-native-field select,.mb-native-field textarea,.mb-native-attachment-form input,.mb-native-attachment-form select{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-input);color:var(--mb-text)}\n.mb-native-line,.mb-native-note,.mb-native-file,.mb-native-attachment-form,.mb-native-payer-insight,.mb-native-blockers,.mb-native-message{border-radius:var(--mb-control-radius)}\n.mb-native-line,.mb-native-note,.mb-native-attachment-form,.mb-native-payer-insight{border-color:var(--mb-border);background:var(--mb-soft)}\n.mb-native-file{border-color:var(--mb-border);background:var(--mb-surface)}\n.mb-native-button.primary,.mb-native-presets button.active{border-color:var(--mb-accent);background:var(--mb-accent);color:var(--mb-accent-contrast)}\n.mb-native-button.primary:hover,.mb-native-presets button.active:hover{filter:brightness(.96)}\n.mb-native-button.secondary,.mb-native-presets button,.mb-native-chips button{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-input);color:var(--mb-text)}\n.mb-native-message.error{background:color-mix(in srgb,var(--mb-danger) 10%,white);color:var(--mb-danger)}\n.mb-native-message.success{background:color-mix(in srgb,var(--mb-success) 10%,white);color:var(--mb-success)}\n.mb-native-blockers{border-color:color-mix(in srgb,var(--mb-warning) 35%,white);background:color-mix(in srgb,var(--mb-warning) 8%,white);color:var(--mb-warning)}\n.mb-native-combo-list{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);box-shadow:var(--mb-shadow)}\n`;\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport {\n BillStatusSummary,\n type BillStatusSummaryProps,\n} from \"./native-bill-review\";\n\nconst DEFAULT_API_BASE_URL = \"https://app.mindbill.org\";\nconst DEFAULT_SESSION_ENDPOINT = \"/api/mindbill/status-session\";\nconst DEFAULT_REFRESH_INTERVAL = 60_000;\n\nexport type BillStatusData = {\n billId: string;\n state: string;\n nativeStatus: string;\n submittedAt: string | null;\n agingDays: number | null;\n updatedAt: string | null;\n totalCharge: number;\n totalPaid: number;\n balanceDue: number;\n};\n\nexport type BillStatusSession = {\n token: string;\n expiresAt?: string;\n apiBaseUrl?: string;\n};\n\nexport type BillStatusSessionRequest = {\n billId: string;\n signal: AbortSignal;\n};\n\nexport type BillStatusSessionProvider = (\n request: BillStatusSessionRequest,\n) => Promise<BillStatusSession>;\n\nexport type BillStatusClientOptions = {\n billId: string;\n /** Same-origin route that mints a short-lived, bill-scoped browser session. */\n sessionEndpoint?: string;\n /** Advanced escape hatch for non-HTTP session exchange. */\n getSession?: BillStatusSessionProvider;\n apiBaseUrl?: string;\n fetch?: typeof globalThis.fetch;\n};\n\nexport type BillStatusClient = {\n getStatus: (signal?: AbortSignal) => Promise<BillStatusData>;\n clearSession: () => void;\n};\n\nexport type UseBillStatusOptions = BillStatusClientOptions & {\n refreshInterval?: number;\n enabled?: boolean;\n initialData?: BillStatusData | null;\n};\n\nexport type UseBillStatusResult = {\n data: BillStatusData | null;\n error: Error | null;\n isLoading: boolean;\n isRefreshing: boolean;\n refresh: () => Promise<void>;\n};\n\nasync function responseError(\n response: Response,\n fallback: string,\n): Promise<Error> {\n const body: unknown = await response.json().catch(() => null);\n const detail = body && typeof body === \"object\"\n ? (body as { detail?: unknown; error?: unknown }).detail\n ?? (body as { error?: unknown }).error\n : null;\n return new Error(typeof detail === \"string\" ? detail : fallback);\n}\n\nfunction isSessionFresh(session: BillStatusSession | null): boolean {\n if (!session) return false;\n if (!session.expiresAt) return true;\n const expiresAt = new Date(session.expiresAt).getTime();\n return Number.isFinite(expiresAt) && expiresAt > Date.now() + 30_000;\n}\n\nfunction normalizeSession(value: unknown): BillStatusSession {\n if (!value || typeof value !== \"object\") {\n throw new Error(\"The MindBill session endpoint returned an invalid response.\");\n }\n const candidate = value as {\n token?: unknown;\n expiresAt?: unknown;\n apiBaseUrl?: unknown;\n session?: unknown;\n data?: unknown;\n };\n const nested = candidate.session ?? candidate.data;\n const session = nested && typeof nested === \"object\"\n ? nested as typeof candidate\n : candidate;\n if (typeof session.token !== \"string\" || session.token.length < 8) {\n throw new Error(\"The MindBill session endpoint did not return a browser session token.\");\n }\n return {\n token: session.token,\n ...(typeof session.expiresAt === \"string\"\n ? { expiresAt: session.expiresAt }\n : {}),\n ...(typeof session.apiBaseUrl === \"string\"\n ? { apiBaseUrl: session.apiBaseUrl }\n : {}),\n };\n}\n\nfunction normalizeStatus(value: unknown, billId: string): BillStatusData {\n if (!value || typeof value !== \"object\") {\n throw new Error(\"MindBill returned an invalid bill status.\");\n }\n const status = value as Partial<BillStatusData>;\n const amounts = [status.totalCharge, status.totalPaid, status.balanceDue];\n if (\n typeof status.state !== \"string\"\n || amounts.some(\n (amount) => typeof amount !== \"number\" || !Number.isFinite(amount),\n )\n ) {\n throw new Error(\"MindBill returned an invalid bill status.\");\n }\n return {\n billId: typeof status.billId === \"string\" ? status.billId : billId,\n state: status.state,\n nativeStatus: typeof status.nativeStatus === \"string\"\n ? status.nativeStatus\n : status.state,\n submittedAt: typeof status.submittedAt === \"string\"\n ? status.submittedAt\n : null,\n agingDays: typeof status.agingDays === \"number\" ? status.agingDays : null,\n updatedAt: typeof status.updatedAt === \"string\" ? status.updatedAt : null,\n totalCharge: status.totalCharge as number,\n totalPaid: status.totalPaid as number,\n balanceDue: status.balanceDue as number,\n };\n}\n\n/**\n * Browser-safe status client used by useBillStatus. It exchanges the user's\n * authenticated same-origin session for a short-lived MindBill token, then\n * reads status directly from MindBill. It never accepts a Partner API key.\n */\nexport function createBillStatusClient({\n billId,\n sessionEndpoint = DEFAULT_SESSION_ENDPOINT,\n getSession,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n fetch: fetchOverride,\n}: BillStatusClientOptions): BillStatusClient {\n const fetcher = fetchOverride ?? globalThis.fetch;\n if (typeof fetcher !== \"function\") {\n throw new Error(\"A Fetch API implementation is required.\");\n }\n let session: BillStatusSession | null = null;\n let sessionRequest: Promise<BillStatusSession> | null = null;\n\n const mintSession = async (\n signal: AbortSignal,\n force = false,\n ): Promise<BillStatusSession> => {\n if (!force && isSessionFresh(session)) return session as BillStatusSession;\n if (!force && sessionRequest) return sessionRequest;\n\n const pending = getSession\n ? getSession({ billId, signal })\n : fetcher(sessionEndpoint, {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ billId }),\n signal,\n }).then(async (response) => {\n if (!response.ok) {\n throw await responseError(\n response,\n \"MindBill browser session could not be created.\",\n );\n }\n return response.json();\n });\n\n const request = Promise.resolve(pending)\n .then(normalizeSession)\n .then((nextSession) => {\n session = nextSession;\n return nextSession;\n })\n .finally(() => {\n if (sessionRequest === request) sessionRequest = null;\n });\n sessionRequest = request;\n return request;\n };\n\n const requestStatus = async (\n browserSession: BillStatusSession,\n signal: AbortSignal,\n ): Promise<Response> => {\n const baseUrl = (browserSession.apiBaseUrl ?? apiBaseUrl).replace(/\\/$/, \"\");\n return fetcher(`${baseUrl}/partner/v2/browser/status`, {\n headers: { authorization: `Bearer ${browserSession.token}` },\n signal,\n });\n };\n\n return {\n clearSession() {\n session = null;\n sessionRequest = null;\n },\n async getStatus(providedSignal) {\n const controller = providedSignal ? null : new AbortController();\n const signal = providedSignal ?? controller?.signal;\n if (!signal) throw new Error(\"An AbortSignal could not be created.\");\n let browserSession = await mintSession(signal);\n let response = await requestStatus(browserSession, signal);\n if (response.status === 401) {\n session = null;\n browserSession = await mintSession(signal, true);\n response = await requestStatus(browserSession, signal);\n }\n if (!response.ok) {\n throw await responseError(response, \"Bill status could not be loaded.\");\n }\n const body = await response.json() as { data?: unknown };\n return normalizeStatus(body.data, billId);\n },\n };\n}\n\nexport function useBillStatus({\n billId,\n sessionEndpoint = DEFAULT_SESSION_ENDPOINT,\n getSession,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n refreshInterval = DEFAULT_REFRESH_INTERVAL,\n enabled = true,\n initialData = null,\n fetch: fetchOverride,\n}: UseBillStatusOptions): UseBillStatusResult {\n const client = useMemo(() => createBillStatusClient({\n billId,\n sessionEndpoint,\n ...(getSession ? { getSession } : {}),\n apiBaseUrl,\n ...(fetchOverride ? { fetch: fetchOverride } : {}),\n }), [apiBaseUrl, billId, fetchOverride, getSession, sessionEndpoint]);\n const [data, setData] = useState<BillStatusData | null>(initialData);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(enabled && !initialData);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const dataRef = useRef<BillStatusData | null>(initialData);\n const initialDataRef = useRef<BillStatusData | null>(initialData);\n initialDataRef.current = initialData;\n const activeControllerRef = useRef<AbortController | null>(null);\n const requestSequence = useRef(0);\n\n useEffect(() => {\n const seed = initialDataRef.current;\n dataRef.current = seed;\n setData(seed);\n setError(null);\n setIsLoading(enabled && !seed);\n activeControllerRef.current?.abort();\n return () => activeControllerRef.current?.abort();\n }, [client, enabled]);\n\n const load = useCallback(async () => {\n if (!enabled || !billId) return;\n const sequence = ++requestSequence.current;\n activeControllerRef.current?.abort();\n const controller = new AbortController();\n activeControllerRef.current = controller;\n if (dataRef.current) setIsRefreshing(true);\n else setIsLoading(true);\n setError(null);\n\n try {\n const nextData = await client.getStatus(controller.signal);\n if (!controller.signal.aborted && sequence === requestSequence.current) {\n dataRef.current = nextData;\n setData(nextData);\n }\n } catch (cause) {\n if (controller.signal.aborted) return;\n if (sequence === requestSequence.current) {\n setError(\n cause instanceof Error\n ? cause\n : new Error(\"Bill status could not be loaded.\"),\n );\n }\n } finally {\n if (activeControllerRef.current === controller) {\n activeControllerRef.current = null;\n }\n if (!controller.signal.aborted && sequence === requestSequence.current) {\n setIsLoading(false);\n setIsRefreshing(false);\n }\n }\n }, [billId, client, enabled]);\n\n useEffect(() => {\n if (enabled) void load();\n }, [enabled, load]);\n\n useEffect(() => {\n if (!enabled || refreshInterval <= 0) return;\n const timer = window.setInterval(() => void load(), refreshInterval);\n const onFocus = () => void load();\n const onVisibility = () => {\n if (document.visibilityState === \"visible\") void load();\n };\n window.addEventListener(\"focus\", onFocus);\n document.addEventListener(\"visibilitychange\", onVisibility);\n return () => {\n window.clearInterval(timer);\n window.removeEventListener(\"focus\", onFocus);\n document.removeEventListener(\"visibilitychange\", onVisibility);\n };\n }, [enabled, load, refreshInterval]);\n\n return { data, error, isLoading, isRefreshing, refresh: load };\n}\n\nexport type ConnectedBillStatusProps = UseBillStatusOptions & {\n actions?: BillStatusSummaryProps[\"actions\"];\n appearance?: BillStatusSummaryProps[\"appearance\"];\n className?: string;\n style?: BillStatusSummaryProps[\"style\"];\n loadingFallback?: ReactNode;\n errorFallback?: (error: Error, retry: () => Promise<void>) => ReactNode;\n};\n\nexport function ConnectedBillStatus({\n actions,\n appearance,\n className,\n style,\n loadingFallback,\n errorFallback,\n ...options\n}: ConnectedBillStatusProps): ReactElement | null {\n const status = useBillStatus(options);\n if (status.isLoading && !status.data) {\n return <>{loadingFallback ?? <div role=\"status\">Loading bill status…</div>}</>;\n }\n if (status.error && !status.data) {\n return <>{errorFallback?.(status.error, status.refresh) ?? (\n <div role=\"alert\">\n {status.error.message}{\" \"}\n <button type=\"button\" onClick={() => void status.refresh()}>Retry</button>\n </div>\n )}</>;\n }\n if (!status.data) return null;\n return <BillStatusSummary\n status={status.data.state}\n submittedAt={status.data.submittedAt}\n agingDays={status.data.agingDays}\n updatedAt={status.data.updatedAt}\n totalCharge={status.data.totalCharge}\n totalPaid={status.data.totalPaid}\n balanceDue={status.data.balanceDue}\n {...(actions ? { actions } : {})}\n {...(appearance ? { appearance } : {})}\n {...(className ? { className } : {})}\n {...(style ? { style } : {})}\n />;\n}\n","\"use client\";\n\nimport type { MindBillReactAppearance } from \"./appearance\";\nimport { mindBillAppearanceStyle } from \"./appearance\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport {\n BillReviewForm,\n BillStatusSummary,\n type BillReviewAttachment,\n type BillReviewDocumentType,\n type BillReviewFeatures,\n type BillReviewSaveInput,\n type BillSubmissionInput,\n type BillSubmissionRoute,\n} from \"./native-bill-review\";\nimport {\n DEFAULT_API_BASE_URL,\n DEFAULT_SESSION_ENDPOINT,\n createBillLifecycleClient,\n type BillEorDocument,\n type BillLifecycleClient,\n type BillLifecycleClientOptions,\n type BillLifecycleData,\n type BillLifecycleActionId,\n type CloseBillInput,\n type PostBillPaymentInput,\n type SubmitSecondReviewInput,\n} from \"@mindbill/browser\";\nexport { createBillLifecycleClient } from \"@mindbill/browser\";\nexport type {\n BillEorDocument,\n BillLifecycleAction,\n BillLifecycleActionId,\n BillLifecycleClient,\n BillLifecycleClientOptions,\n BillLifecycleData,\n BillLifecycleSession,\n BillLifecycleSessionProvider,\n BillLifecycleSessionRequest,\n CloseBillInput,\n PostBillPaymentInput,\n SubmitSecondReviewInput,\n} from \"@mindbill/browser\";\n\nconst DEFAULT_REFRESH_INTERVAL = 60_000;\n\nexport type UseBillLifecycleOptions = BillLifecycleClientOptions & {\n refreshInterval?: number;\n enabled?: boolean;\n initialData?: BillLifecycleData | null;\n onBillIdChange?: (\n billId: string,\n previousBillId: string,\n ) => void | Promise<void>;\n};\n\nexport type UseBillLifecycleResult = {\n billId: string;\n data: BillLifecycleData | null;\n error: Error | null;\n isLoading: boolean;\n isRefreshing: boolean;\n isMutating: boolean;\n refresh: () => Promise<void>;\n searchClaimsAdministrators: BillLifecycleClient[\"searchClaimsAdministrators\"];\n getDeliveryOptions: BillLifecycleClient[\"getDeliveryOptions\"];\n saveReview: BillLifecycleClient[\"saveReview\"];\n submitBill: BillLifecycleClient[\"submitBill\"];\n addAttachment: BillLifecycleClient[\"addAttachment\"];\n removeAttachment: BillLifecycleClient[\"removeAttachment\"];\n openAttachment: (attachment: BillReviewAttachment) => Promise<void>;\n openEor: (document: BillEorDocument) => Promise<void>;\n closeBill: BillLifecycleClient[\"closeBill\"];\n postPayment: BillLifecycleClient[\"postPayment\"];\n submitSecondReview: BillLifecycleClient[\"submitSecondReview\"];\n startCorrection: () => Promise<BillLifecycleData>;\n};\n\nfunction openPdf(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.target = \"_blank\";\n link.rel = \"noopener noreferrer\";\n link.download = filename;\n link.click();\n window.setTimeout(() => URL.revokeObjectURL(url), 60_000);\n}\n\nexport function useBillLifecycle({\n billId: providedBillId,\n sessionEndpoint = DEFAULT_SESSION_ENDPOINT,\n getSession,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n refreshInterval = DEFAULT_REFRESH_INTERVAL,\n enabled = true,\n initialData = null,\n onBillIdChange,\n fetch: fetchOverride,\n}: UseBillLifecycleOptions): UseBillLifecycleResult {\n const [billId, setBillId] = useState(providedBillId);\n const [data, setData] = useState<BillLifecycleData | null>(initialData);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(enabled && !initialData);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [isMutating, setIsMutating] = useState(false);\n const mounted = useRef(true);\n\n useEffect(() => {\n setBillId(providedBillId);\n setData(initialData);\n setError(null);\n }, [initialData, providedBillId]);\n\n const client = useMemo(() => createBillLifecycleClient({\n billId,\n sessionEndpoint,\n getSession,\n apiBaseUrl,\n fetch: fetchOverride,\n }), [apiBaseUrl, billId, fetchOverride, getSession, sessionEndpoint]);\n\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n client.clearSession();\n };\n }, [client]);\n\n const refresh = useCallback(async () => {\n if (!enabled) return;\n setIsRefreshing(true);\n try {\n const next = await client.getLifecycle();\n if (!mounted.current) return;\n setData(next);\n setError(null);\n } catch (cause) {\n if (!mounted.current) return;\n setError(cause instanceof Error ? cause : new Error(\"Bill could not be loaded.\"));\n } finally {\n if (mounted.current) {\n setIsLoading(false);\n setIsRefreshing(false);\n }\n }\n }, [client, enabled]);\n\n useEffect(() => {\n if (!enabled) return;\n void refresh();\n const interval = refreshInterval > 0\n ? window.setInterval(() => void refresh(), refreshInterval)\n : null;\n const onFocus = () => void refresh();\n window.addEventListener(\"focus\", onFocus);\n return () => {\n if (interval) window.clearInterval(interval);\n window.removeEventListener(\"focus\", onFocus);\n };\n }, [enabled, refresh, refreshInterval]);\n\n const mutate = useCallback(async <T extends BillLifecycleData,>(\n task: () => Promise<T>,\n ): Promise<T> => {\n setIsMutating(true);\n setError(null);\n try {\n const next = await task();\n if (mounted.current) setData(next);\n return next;\n } catch (cause) {\n const nextError = cause instanceof Error\n ? cause\n : new Error(\"The billing service could not complete this request.\");\n if (mounted.current) setError(nextError);\n throw nextError;\n } finally {\n if (mounted.current) setIsMutating(false);\n }\n }, []);\n\n const saveReview = useCallback(\n (input: BillReviewSaveInput) => mutate(() => client.saveReview(input)),\n [client, mutate],\n );\n const searchClaimsAdministrators = useCallback(\n (query: string, claimNumber?: string) =>\n client.searchClaimsAdministrators(query, claimNumber),\n [client],\n );\n const getDeliveryOptions = useCallback(\n () => client.getDeliveryOptions(),\n [client],\n );\n const submitBill = useCallback(\n (input: BillReviewSaveInput, submission: BillSubmissionInput) =>\n mutate(() => client.submitBill(input, submission)),\n [client, mutate],\n );\n const addAttachment = useCallback(\n (file: File, type: BillReviewDocumentType, description?: string) =>\n mutate(() => client.addAttachment(file, type, description)),\n [client, mutate],\n );\n const removeAttachment = useCallback(\n (attachmentId: string) => mutate(() => client.removeAttachment(attachmentId)),\n [client, mutate],\n );\n const closeBill = useCallback(\n (input: CloseBillInput) => mutate(() => client.closeBill(input)),\n [client, mutate],\n );\n const postPayment = useCallback(\n (input: PostBillPaymentInput) => mutate(() => client.postPayment(input)),\n [client, mutate],\n );\n const submitSecondReview = useCallback(\n (input: SubmitSecondReviewInput) =>\n mutate(() => client.submitSecondReview(input)),\n [client, mutate],\n );\n const startCorrection = useCallback(async () => {\n setIsMutating(true);\n setError(null);\n try {\n const result = await client.startCorrection();\n const previousBillId = billId;\n await onBillIdChange?.(result.replacementBillId, previousBillId);\n setBillId(result.replacementBillId);\n setData(result.data);\n return result.data;\n } catch (cause) {\n const nextError = cause instanceof Error\n ? cause\n : new Error(\"Correction draft could not be created.\");\n setError(nextError);\n throw nextError;\n } finally {\n setIsMutating(false);\n }\n }, [billId, client, onBillIdChange]);\n const openAttachment = useCallback(async (attachment: BillReviewAttachment) => {\n openPdf(await client.getAttachment(attachment.id), attachment.filename);\n }, [client]);\n const openEor = useCallback(async (document: BillEorDocument) => {\n openPdf(await client.getEor(document.id), document.filename);\n }, [client]);\n\n return {\n billId,\n data,\n error,\n isLoading,\n isRefreshing,\n isMutating,\n refresh,\n searchClaimsAdministrators,\n getDeliveryOptions,\n saveReview,\n submitBill,\n addAttachment,\n removeAttachment,\n openAttachment,\n openEor,\n closeBill,\n postPayment,\n submitSecondReview,\n startCorrection,\n };\n}\n\nexport type ConnectedBillLifecycleProps = UseBillLifecycleOptions & {\n appearance?: MindBillReactAppearance;\n features?: BillReviewFeatures;\n className?: string;\n style?: CSSProperties;\n loadingFallback?: ReactNode;\n errorFallback?: (error: Error, retry: () => Promise<void>) => ReactNode;\n onChanged?: (data: BillLifecycleData) => void;\n};\n\ntype Panel = \"\" | \"correction\" | \"second_review\" | \"payment\" | \"close\";\n\nfunction dateInputValue(): string {\n const now = new Date();\n const offset = now.getTimezoneOffset() * 60_000;\n return new Date(now.getTime() - offset).toISOString().slice(0, 10);\n}\n\nfunction SupportingDocumentControl({\n disabled,\n onAdd,\n}: {\n disabled: boolean;\n onAdd: (\n file: File,\n type: BillReviewDocumentType,\n description?: string,\n ) => Promise<unknown>;\n}): ReactElement {\n const [file, setFile] = useState<File | null>(null);\n const [type, setType] = useState<BillReviewDocumentType>(\"appeal\");\n const [busy, setBusy] = useState(false);\n return <div className=\"mb-lifecycle-upload\">\n <select aria-label=\"Supporting document type\" value={type} disabled={disabled || busy} onChange={(event) => setType(event.target.value as BillReviewDocumentType)}>\n <option value=\"appeal\">Second Review support</option>\n <option value=\"final_report\">Final report</option>\n <option value=\"proof_of_service\">Proof of service</option>\n <option value=\"letter_of_attestation\">Letter of attestation</option>\n <option value=\"form_122\">DWC Form 122</option>\n <option value=\"w9\">W-9</option>\n <option value=\"other\">Other supporting document</option>\n </select>\n <input aria-label=\"Choose supporting PDF\" type=\"file\" accept=\"application/pdf,.pdf\" disabled={disabled || busy} onChange={(event) => setFile(event.target.files?.[0] ?? null)} />\n <button type=\"button\" className=\"mb-lifecycle-button secondary\" disabled={disabled || busy || !file} onClick={() => {\n if (!file) return;\n setBusy(true);\n void onAdd(file, type)\n .then(() => setFile(null))\n .catch(() => undefined)\n .finally(() => setBusy(false));\n }}>{busy ? \"Attaching…\" : \"Attach PDF\"}</button>\n </div>;\n}\n\nexport function ConnectedBillLifecycle({\n appearance,\n features,\n className,\n style,\n loadingFallback,\n errorFallback,\n onChanged,\n ...options\n}: ConnectedBillLifecycleProps): ReactElement {\n const lifecycle = useBillLifecycle(options);\n const { data } = lifecycle;\n const [panel, setPanel] = useState<Panel>(\"\");\n const [notice, setNotice] = useState(\"\");\n const [closeReason, setCloseReason] = useState(\"\");\n const [payment, setPayment] = useState<PostBillPaymentInput>({\n amount: 0,\n method: \"check\",\n checkNumber: \"\",\n depositDate: dateInputValue(),\n note: \"\",\n });\n const [review, setReview] = useState<SubmitSecondReviewInput>({\n reason: \"\",\n payerClaimControlNumber: \"\",\n disputedAmount: undefined,\n attachmentIds: [],\n route: \"ebill\",\n });\n const lastData = useRef<BillLifecycleData | null>(null);\n\n useEffect(() => {\n if (!data || data === lastData.current) return;\n lastData.current = data;\n onChanged?.(data);\n setPayment((current) => ({\n ...current,\n amount: current.amount > 0 ? current.amount : data.bill.balanceDue,\n }));\n setReview((current) => ({\n ...current,\n disputedAmount: current.disputedAmount ?? data.bill.balanceDue,\n attachmentIds: current.attachmentIds.length\n ? current.attachmentIds.filter((id) => data.bill.attachments.some((doc) => doc.id === id))\n : data.bill.attachments.map((doc) => doc.id),\n }));\n }, [data, onChanged]);\n\n if (lifecycle.isLoading && !data) {\n return <>{loadingFallback ?? <div className=\"mb-lifecycle-loading\">Loading billing…</div>}</>;\n }\n if (!data) {\n const error = lifecycle.error ?? new Error(\"Bill could not be loaded.\");\n return <>{errorFallback?.(error, lifecycle.refresh) ?? <div className=\"mb-lifecycle-error\" role=\"alert\"><strong>Billing is unavailable.</strong><span>{error.message}</span><button type=\"button\" onClick={() => void lifecycle.refresh()}>Try again</button></div>}</>;\n }\n\n const actionMap = new Map(data.lifecycle.actions.map((action) => [action.id, action]));\n const has = (id: BillLifecycleActionId) => actionMap.get(id);\n const selectPanel = (next: Panel) => {\n setNotice(\"\");\n setPanel((current) => current === next ? \"\" : next);\n };\n const complete = async (message: string, task: () => Promise<unknown>) => {\n setNotice(\"\");\n try {\n await task();\n setPanel(\"\");\n setNotice(message);\n } catch {\n // The hook keeps the actionable error visible in this component.\n }\n };\n const actionButtons = data.lifecycle.actions\n .filter((action) => action.id !== \"edit_and_submit\" && action.id !== \"view_eor\" && action.id !== \"independent_bill_review\")\n .map((action) => ({\n ...action,\n onClick: () => {\n if (!action.enabled) return;\n if (action.id === \"correct_and_resubmit\") selectPanel(\"correction\");\n if (action.id === \"second_review\") selectPanel(\"second_review\");\n if (action.id === \"post_payment\") selectPanel(\"payment\");\n if (action.id === \"close\") selectPanel(\"close\");\n },\n disabled: !action.enabled || lifecycle.isMutating,\n }));\n\n const canEditAndSubmit = Boolean(has(\"edit_and_submit\"));\n\n return <section className={[\"mb-connected-lifecycle\", className].filter(Boolean).join(\" \")} style={mindBillAppearanceStyle(appearance, style)}>\n <style>{CONNECTED_LIFECYCLE_STYLES}</style>\n <style>{CONNECTED_THEME_OVERRIDE_STYLES}</style>\n {canEditAndSubmit\n ? <BillReviewForm\n data={data}\n {...(appearance ? { appearance } : {})}\n {...(features ? { features } : {})}\n disabled={lifecycle.isMutating}\n onSearchClaimsAdministrators={lifecycle.searchClaimsAdministrators}\n onGetDeliveryOptions={lifecycle.getDeliveryOptions}\n onSave={lifecycle.saveReview}\n onSubmit={async (input, submission) => { await complete(\"Bill submitted.\", () => lifecycle.submitBill(input, submission)); }}\n onAddAttachment={async (file, type, description) => { await lifecycle.addAttachment(file, type, description); }}\n onRemoveAttachment={async (attachmentId) => { await lifecycle.removeAttachment(attachmentId); }}\n onOpenAttachment={(attachment) => void lifecycle.openAttachment(attachment).catch(() => undefined)}\n />\n : <BillStatusSummary\n status={data.lifecycle.state}\n submittedAt={data.lifecycle.submittedAt ?? null}\n agingDays={data.lifecycle.agingDays ?? null}\n updatedAt={data.lifecycle.updatedAt ?? null}\n totalCharge={data.bill.totalCharge}\n totalPaid={data.bill.totalPaid}\n balanceDue={data.bill.balanceDue}\n actions={actionButtons}\n {...(appearance ? { appearance } : {})}\n />}\n\n <div className=\"mb-lifecycle-toolbar\">\n <div>\n <strong>Bill #{data.bill.billNumber}</strong>\n <span>{lifecycle.isRefreshing ? \"Refreshing…\" : \"Status and actions update automatically.\"}</span>\n </div>\n <div className=\"mb-lifecycle-toolbar-actions\">\n {has(\"view_eor\") ? <button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => document.getElementById(`mb-eors-${data.bill.id}`)?.scrollIntoView({ behavior: \"smooth\", block: \"center\" })}>View EOR</button> : null}\n {canEditAndSubmit && has(\"close\") ? <button type=\"button\" className=\"mb-lifecycle-button quiet\" onClick={() => selectPanel(\"close\")}>Close bill</button> : null}\n </div>\n </div>\n\n {data.eors.length ? <section className=\"mb-lifecycle-card\" id={`mb-eors-${data.bill.id}`}>\n <header><div><h3>Explanation of Review</h3><p>Review the payer response and original PDF before posting payment.</p></div><span>{data.eors.length} PDF{data.eors.length === 1 ? \"\" : \"s\"}</span></header>\n <ul className=\"mb-lifecycle-documents\">{data.eors.map((eor) => <li key={eor.id}><div><strong>{eor.filename}</strong><span>{eor.description || `Added ${new Date(eor.addedAt).toLocaleDateString()}`}</span></div><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => void lifecycle.openEor(eor).catch(() => undefined)}>View PDF</button></li>)}</ul>\n </section> : null}\n\n {has(\"independent_bill_review\") ? <div className=\"mb-lifecycle-info\"><strong>{has(\"independent_bill_review\")?.label}</strong><span>{has(\"independent_bill_review\")?.reason}</span></div> : null}\n\n {panel === \"correction\" ? <section className=\"mb-lifecycle-panel\">\n <div><h3>Correct and resubmit</h3><p>A new correction draft will preserve this rejected bill in history. Review the copied values before submitting.</p></div>\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button primary\" disabled={lifecycle.isMutating} onClick={() => void complete(\"Correction draft created.\", lifecycle.startCorrection)}>{lifecycle.isMutating ? \"Creating…\" : \"Create correction draft\"}</button></div>\n </section> : null}\n\n {panel === \"second_review\" ? <section className=\"mb-lifecycle-panel wide\">\n <div><h3>Submit Second Review</h3><p>State why payment is disputed, confirm the payer control number, and choose the supporting documents to send.</p></div>\n <div className=\"mb-lifecycle-fields two\">\n <label><span>Reason for Second Review</span><textarea required value={review.reason} onChange={(event) => setReview((current) => ({ ...current, reason: event.target.value }))} /></label>\n <div className=\"mb-lifecycle-fields\">\n <label><span>Payer claim control number</span><input required value={review.payerClaimControlNumber} onChange={(event) => setReview((current) => ({ ...current, payerClaimControlNumber: event.target.value }))} /></label>\n <label><span>Disputed amount</span><input type=\"number\" min=\"0.01\" step=\"0.01\" value={review.disputedAmount ?? \"\"} onChange={(event) => setReview((current) => ({ ...current, disputedAmount: event.target.value ? Number(event.target.value) : undefined }))} /></label>\n <label><span>Send via</span><select value={review.route} onChange={(event) => setReview((current) => ({ ...current, route: event.target.value as BillSubmissionRoute }))}><option value=\"ebill\">E-bill</option><option value=\"fax\">Fax</option><option value=\"mail\">Mail</option><option value=\"email\">Email</option></select></label>\n </div>\n </div>\n <fieldset className=\"mb-lifecycle-packet\"><legend>Supporting packet</legend>{data.bill.attachments.map((attachment) => <label key={attachment.id}><input type=\"checkbox\" checked={review.attachmentIds.includes(attachment.id)} onChange={(event) => setReview((current) => ({ ...current, attachmentIds: event.target.checked ? [...current.attachmentIds, attachment.id] : current.attachmentIds.filter((id) => id !== attachment.id) }))} /><span><strong>{attachment.filename}</strong><small>{attachment.description || attachment.documentType}</small></span><button type=\"button\" onClick={() => void lifecycle.openAttachment(attachment).catch(() => undefined)}>View</button><button type=\"button\" aria-label={`Remove ${attachment.filename}`} onClick={() => void lifecycle.removeAttachment(attachment.id).catch(() => undefined)}>×</button></label>)}</fieldset>\n <SupportingDocumentControl disabled={lifecycle.isMutating} onAdd={async (file, type, description) => {\n const next = await lifecycle.addAttachment(file, type, description);\n setReview((current) => ({\n ...current,\n attachmentIds: Array.from(new Set([\n ...current.attachmentIds,\n ...next.bill.attachments.map((attachment) => attachment.id),\n ])),\n }));\n }} />\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button primary\" disabled={lifecycle.isMutating || !review.reason.trim() || !review.payerClaimControlNumber.trim()} onClick={() => void complete(\"Second Review submitted.\", () => lifecycle.submitSecondReview(review))}>{lifecycle.isMutating ? \"Submitting…\" : \"Submit Second Review\"}</button></div>\n </section> : null}\n\n {panel === \"payment\" ? <section className=\"mb-lifecycle-panel\">\n <div><h3>Post payment</h3><p>Record funds shown on the EOR. The balance updates and the bill closes automatically when configured.</p></div>\n <div className=\"mb-lifecycle-fields two\">\n <label><span>Amount</span><input type=\"number\" min=\"0.01\" max={data.bill.balanceDue} step=\"0.01\" required value={payment.amount || \"\"} onChange={(event) => setPayment((current) => ({ ...current, amount: Number(event.target.value) }))} /></label>\n <label><span>Method</span><select value={payment.method} onChange={(event) => setPayment((current) => ({ ...current, method: event.target.value as \"check\" | \"eft\" }))}><option value=\"check\">Check</option><option value=\"eft\">EFT</option></select></label>\n <label><span>{payment.method === \"check\" ? \"Check number\" : \"EFT reference\"}</span><input value={payment.checkNumber} onChange={(event) => setPayment((current) => ({ ...current, checkNumber: event.target.value }))} /></label>\n <label><span>Deposit date</span><input type=\"date\" required value={payment.depositDate} onChange={(event) => setPayment((current) => ({ ...current, depositDate: event.target.value }))} /></label>\n <label className=\"full\"><span>Note <small>Optional</small></span><input value={payment.note} onChange={(event) => setPayment((current) => ({ ...current, note: event.target.value }))} /></label>\n </div>\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button primary\" disabled={lifecycle.isMutating || payment.amount <= 0 || payment.amount > data.bill.balanceDue || !payment.depositDate} onClick={() => void complete(\"Payment posted.\", () => lifecycle.postPayment(payment))}>{lifecycle.isMutating ? \"Posting…\" : \"Post payment\"}</button></div>\n </section> : null}\n\n {panel === \"close\" ? <section className=\"mb-lifecycle-panel danger\">\n <div><h3>Close bill</h3><p>Closing removes this bill from active A/R. Any remaining balance will be written off and the original lifecycle is preserved.</p></div>\n <label><span>Reason for closing</span><textarea required value={closeReason} onChange={(event) => setCloseReason(event.target.value)} /></label>\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button danger\" disabled={lifecycle.isMutating || !closeReason.trim()} onClick={() => void complete(\"Bill closed.\", () => lifecycle.closeBill({ reason: closeReason }))}>{lifecycle.isMutating ? \"Closing…\" : \"Close bill\"}</button></div>\n </section> : null}\n\n {notice ? <div className=\"mb-lifecycle-message success\" role=\"status\">{notice}</div> : null}\n {lifecycle.error ? <div className=\"mb-lifecycle-message error\" role=\"alert\">{lifecycle.error.message}</div> : null}\n </section>;\n}\n\nconst CONNECTED_LIFECYCLE_STYLES = `\n.mb-connected-lifecycle{--mb-accent:#238dbd;--mb-text:#203743;--mb-muted:#657982;--mb-border:#dbe6ea;--mb-soft:#f3f8fa;--mb-surface:#fff;display:grid;gap:14px;color:var(--mb-text);font:14px/1.45 var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}.mb-connected-lifecycle *{box-sizing:border-box}.mb-lifecycle-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--mb-border);border-radius:10px;background:var(--mb-surface)}.mb-lifecycle-toolbar>div:first-child{display:grid;gap:2px}.mb-lifecycle-toolbar span,.mb-lifecycle-card p,.mb-lifecycle-panel p,.mb-lifecycle-info span{color:var(--mb-muted)}.mb-lifecycle-toolbar-actions,.mb-lifecycle-panel-actions{display:flex;justify-content:flex-end;gap:8px}.mb-lifecycle-button{min-height:38px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:8px 13px}.mb-lifecycle-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:#fff}.mb-lifecycle-button.quiet{border-color:transparent;background:transparent;color:var(--mb-muted)}.mb-lifecycle-button.danger{border-color:#b63d35;background:#b63d35;color:#fff}.mb-lifecycle-button:disabled{cursor:not-allowed;opacity:.5}.mb-lifecycle-card,.mb-lifecycle-panel{padding:18px;border:1px solid var(--mb-border);border-radius:12px;background:var(--mb-surface)}.mb-lifecycle-card header{display:flex;align-items:start;justify-content:space-between;gap:16px}.mb-lifecycle-card h3,.mb-lifecycle-panel h3{margin:0;font-size:18px}.mb-lifecycle-card p,.mb-lifecycle-panel p{margin:3px 0 0}.mb-lifecycle-card header>span{padding:5px 8px;border-radius:999px;background:var(--mb-soft);color:var(--mb-muted);font-size:11px;font-weight:800;text-transform:uppercase}.mb-lifecycle-documents{list-style:none;margin:12px 0 0;padding:0}.mb-lifecycle-documents li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 0;border-top:1px solid var(--mb-border)}.mb-lifecycle-documents li>div{display:grid}.mb-lifecycle-documents span{color:var(--mb-muted);font-size:12px}.mb-lifecycle-info{display:grid;gap:3px;padding:13px 15px;border:1px solid #cddfe5;border-radius:10px;background:var(--mb-soft)}.mb-lifecycle-panel{display:grid;gap:16px;box-shadow:0 14px 38px rgba(30,56,68,.08)}.mb-lifecycle-panel.danger{border-color:#ecc5c2}.mb-lifecycle-panel label{display:grid;gap:6px;font-size:12px;font-weight:750}.mb-lifecycle-panel label small{color:var(--mb-muted);font-size:inherit;font-weight:500}.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea,.mb-lifecycle-upload input,.mb-lifecycle-upload select{width:100%;min-height:42px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:9px 11px}.mb-lifecycle-panel textarea{min-height:100px;resize:vertical}.mb-lifecycle-fields{display:grid;gap:12px}.mb-lifecycle-fields.two{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-lifecycle-fields .full{grid-column:1/-1}.mb-lifecycle-packet{display:grid;gap:0;margin:0;padding:0;border:0}.mb-lifecycle-packet legend{margin-bottom:7px;font-size:12px;font-weight:800}.mb-lifecycle-packet>label{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid var(--mb-border)}.mb-lifecycle-packet>label>input{width:16px;min-height:16px}.mb-lifecycle-packet>label>span{display:grid}.mb-lifecycle-packet button{border:0;background:transparent;color:var(--mb-accent);cursor:pointer;font:inherit}.mb-lifecycle-upload{display:grid;grid-template-columns:220px 1fr auto;align-items:end;gap:10px;padding:12px;border-radius:9px;background:var(--mb-soft)}.mb-lifecycle-message,.mb-lifecycle-error,.mb-lifecycle-loading{padding:12px 14px;border-radius:9px}.mb-lifecycle-message.success{background:#edf9f2;color:#217449}.mb-lifecycle-message.error,.mb-lifecycle-error{background:#fff0ef;color:#9d3029}.mb-lifecycle-error{display:flex;align-items:center;gap:12px}.mb-lifecycle-error span{flex:1}.mb-lifecycle-error button{border:1px solid currentColor;border-radius:7px;background:transparent;color:inherit;padding:7px 10px}@media(max-width:760px){.mb-lifecycle-toolbar,.mb-lifecycle-card header{align-items:stretch;flex-direction:column}.mb-lifecycle-toolbar-actions,.mb-lifecycle-panel-actions{justify-content:start}.mb-lifecycle-fields.two,.mb-lifecycle-upload{grid-template-columns:1fr}.mb-lifecycle-documents li{align-items:start}.mb-lifecycle-packet>label{grid-template-columns:auto 1fr auto}}\n`;\n\nconst CONNECTED_THEME_OVERRIDE_STYLES = `\n.mb-connected-lifecycle{color:var(--mb-text);font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-lifecycle-toolbar,.mb-lifecycle-card,.mb-lifecycle-panel{border-color:var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface)}\n.mb-lifecycle-panel{box-shadow:var(--mb-shadow)}\n.mb-lifecycle-toolbar span,.mb-lifecycle-card p,.mb-lifecycle-panel p,.mb-lifecycle-info span{color:var(--mb-muted)}\n.mb-lifecycle-button{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-input);color:var(--mb-text)}\n.mb-lifecycle-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:var(--mb-accent-contrast)}\n.mb-lifecycle-button.primary:hover{filter:brightness(.96)}\n.mb-lifecycle-button.danger{border-color:var(--mb-danger);background:var(--mb-danger);color:white}\n.mb-lifecycle-card header>span,.mb-lifecycle-info,.mb-lifecycle-upload{background:var(--mb-soft)}\n.mb-lifecycle-info,.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea,.mb-lifecycle-upload input,.mb-lifecycle-upload select{border-color:var(--mb-border);border-radius:var(--mb-control-radius)}\n.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea,.mb-lifecycle-upload input,.mb-lifecycle-upload select{background:var(--mb-input);color:var(--mb-text)}\n.mb-lifecycle-message,.mb-lifecycle-error,.mb-lifecycle-loading,.mb-lifecycle-upload{border-radius:var(--mb-control-radius)}\n.mb-lifecycle-message.success{background:color-mix(in srgb,var(--mb-success) 10%,white);color:var(--mb-success)}\n.mb-lifecycle-message.error,.mb-lifecycle-error{background:color-mix(in srgb,var(--mb-danger) 10%,white);color:var(--mb-danger)}\n`;\n"],"mappings":"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","names":["useEffect","useRef","value","useEffect","useMemo","useRef","useState","Fragment","jsx","jsxs","useMemo","useState","useRef","useEffect","useCallback","useEffect","useMemo","useRef","useState","DEFAULT_API_BASE_URL","DEFAULT_SESSION_ENDPOINT","createBillLifecycleClient","Fragment","jsx","jsxs","DEFAULT_REFRESH_INTERVAL","useState","useRef","useEffect","useMemo","useCallback","document","useRef","useEffect"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/appearance.ts","../src/native-bill-review.tsx","../src/connected-bill-status.tsx","../src/connected-bill-lifecycle.tsx"],"sourcesContent":["\"use client\";\n\nimport \"@mindbill/embed\";\nimport type { CSSProperties, ReactElement } from \"react\";\nimport { createElement, useEffect, useRef } from \"react\";\nimport type {\n MindBillAppearance,\n MindBillErrorDetail,\n MindBillEventDetail,\n} from \"@mindbill/embed\";\n\nexport type MindBillWidgetProps = {\n sessionToken: string;\n embedUrl: string;\n appearance?: MindBillAppearance;\n className?: string;\n style?: CSSProperties;\n onMindBill?: (event: CustomEvent<MindBillEventDetail>) => void;\n onMindBillError?: (event: CustomEvent<MindBillErrorDetail>) => void;\n};\n\nfunction widget(tagName: string, props: MindBillWidgetProps): ReactElement {\n const ref = useRef<HTMLElement | null>(null);\n const { onMindBill, onMindBillError } = props;\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const handleEvent = (event: Event) =>\n onMindBill?.(event as CustomEvent<MindBillEventDetail>);\n const handleError = (event: Event) =>\n onMindBillError?.(event as CustomEvent<MindBillErrorDetail>);\n element.addEventListener(\"mindbill\", handleEvent);\n element.addEventListener(\"mindbill-error\", handleError);\n return () => {\n element.removeEventListener(\"mindbill\", handleEvent);\n element.removeEventListener(\"mindbill-error\", handleError);\n };\n }, [onMindBill, onMindBillError]);\n\n return createElement(tagName, {\n ref,\n \"session-token\": props.sessionToken,\n \"embed-url\": props.embedUrl,\n theme: props.appearance?.theme,\n \"accent-color\": props.appearance?.accentColor,\n \"background-color\": props.appearance?.backgroundColor,\n \"surface-color\": props.appearance?.surfaceColor,\n \"text-color\": props.appearance?.textColor,\n \"muted-color\": props.appearance?.mutedColor,\n \"border-color\": props.appearance?.borderColor,\n \"font-family\": props.appearance?.fontFamily,\n \"border-radius\": props.appearance?.borderRadius,\n locale: props.appearance?.locale,\n class: props.className,\n style: props.style,\n });\n}\n\nexport function MindBillBillTimeline(props: MindBillWidgetProps): ReactElement {\n return widget(\"mindbill-bill-timeline\", props);\n}\nexport function MindBillBillReview(props: MindBillWidgetProps): ReactElement {\n return widget(\"mindbill-bill-review\", props);\n}\n\n\nexport type {\n MindBillAppearance,\n MindBillErrorDetail,\n MindBillEventDetail,\n} from \"@mindbill/embed\";\n\nexport {\n mindBillAppearanceStyle,\n mindBillThemePresets,\n resolveMindBillAppearance,\n} from \"./appearance\";\nexport type {\n MindBillReactAppearance,\n MindBillThemePreset,\n} from \"./appearance\";\n\nexport {\n BillReviewForm,\n BillStatusSummary,\n buildBillReviewSaveInput,\n ensureTrailingProcedureLine,\n} from \"./native-bill-review\";\nexport type {\n BillReviewAttachment,\n BillReviewBillingProvider,\n BillReviewClinician,\n BillReviewData,\n BillReviewDocumentType,\n BillReviewDraft,\n BillReviewFormProps,\n BillReviewFeatures,\n BillReviewLineItem,\n BillReviewLocation,\n BillReviewPayer,\n BillReviewSaveInput,\n BillStatusSummaryProps,\n BillStatusAction,\n BillSubmissionRoute,\n} from \"./native-bill-review\";\n\nexport {\n ConnectedBillStatus,\n createBillStatusClient,\n useBillStatus,\n} from \"./connected-bill-status\";\n\nexport {\n ConnectedBillLifecycle,\n createBillLifecycleClient,\n useBillLifecycle,\n} from \"./connected-bill-lifecycle\";\nexport type {\n BillEorDocument,\n BillLifecycleAction,\n BillLifecycleActionId,\n BillLifecycleClient,\n BillLifecycleClientOptions,\n BillLifecycleData,\n BillLifecycleSession,\n BillLifecycleSessionProvider,\n BillLifecycleSessionRequest,\n CloseBillInput,\n ConnectedBillLifecycleProps,\n PostBillPaymentInput,\n SubmitSecondReviewInput,\n UseBillLifecycleOptions,\n UseBillLifecycleResult,\n} from \"./connected-bill-lifecycle\";\nexport type {\n BillStatusClient,\n BillStatusClientOptions,\n BillStatusData,\n BillStatusSession,\n BillStatusSessionProvider,\n BillStatusSessionRequest,\n ConnectedBillStatusProps,\n UseBillStatusOptions,\n UseBillStatusResult,\n} from \"./connected-bill-status\";\n","import type { CSSProperties } from \"react\";\nimport type { MindBillAppearance } from \"@mindbill/embed\";\n\nexport type MindBillThemePreset =\n | \"mindbill\"\n | \"qme-companion\"\n | \"orange-bright\"\n | \"clinical-blue\";\n\nexport type MindBillReactAppearance = MindBillAppearance & {\n /** A complete starting point. Individual tokens below always win. */\n preset?: MindBillThemePreset;\n accentTextColor?: string;\n inputBackgroundColor?: string;\n controlRadius?: string;\n shadow?: string;\n dangerColor?: string;\n successColor?: string;\n warningColor?: string;\n};\n\nexport const mindBillThemePresets = {\n mindbill: {\n accentColor: \"#238dbd\",\n accentTextColor: \"#ffffff\",\n backgroundColor: \"#f3f8fa\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#203743\",\n mutedColor: \"#657982\",\n borderColor: \"#dbe6ea\",\n borderRadius: \"14px\",\n controlRadius: \"8px\",\n shadow: \"0 8px 24px rgba(28,58,72,.04)\",\n dangerColor: \"#b63d35\",\n successColor: \"#217449\",\n warningColor: \"#8a5c17\",\n },\n \"qme-companion\": {\n accentColor: \"#53b5dc\",\n accentTextColor: \"#173542\",\n backgroundColor: \"#f2f8fb\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#1d3440\",\n mutedColor: \"#617783\",\n borderColor: \"#d7e5eb\",\n borderRadius: \"12px\",\n controlRadius: \"8px\",\n shadow: \"0 1px 2px rgba(29,52,64,.05)\",\n dangerColor: \"#b83f3a\",\n successColor: \"#21835d\",\n warningColor: \"#9a6418\",\n fontFamily: \"Inter, ui-sans-serif, system-ui, sans-serif\",\n },\n \"orange-bright\": {\n accentColor: \"#ff4f0a\",\n accentTextColor: \"#ffffff\",\n backgroundColor: \"#fffaf6\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#111827\",\n mutedColor: \"#626a73\",\n borderColor: \"#e5e1dc\",\n borderRadius: \"8px\",\n controlRadius: \"6px\",\n shadow: \"0 4px 18px rgba(17,24,39,.06)\",\n dangerColor: \"#b42318\",\n successColor: \"#16794f\",\n warningColor: \"#9a5b13\",\n fontFamily: \"Inter, ui-sans-serif, system-ui, sans-serif\",\n },\n \"clinical-blue\": {\n accentColor: \"#1677ff\",\n accentTextColor: \"#ffffff\",\n backgroundColor: \"#f5f7fa\",\n surfaceColor: \"#ffffff\",\n inputBackgroundColor: \"#ffffff\",\n textColor: \"#1f2d3d\",\n mutedColor: \"#66788a\",\n borderColor: \"#d9e2ec\",\n borderRadius: \"8px\",\n controlRadius: \"6px\",\n shadow: \"0 2px 8px rgba(31,45,61,.06)\",\n dangerColor: \"#d4380d\",\n successColor: \"#389e0d\",\n warningColor: \"#d48806\",\n fontFamily: \"Inter, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif\",\n },\n} as const satisfies Record<MindBillThemePreset, MindBillReactAppearance>;\n\nexport function resolveMindBillAppearance(\n appearance: MindBillReactAppearance | undefined,\n): MindBillReactAppearance {\n const preset = appearance?.preset ?? \"mindbill\";\n return { ...mindBillThemePresets[preset], ...appearance, preset };\n}\n\nexport function mindBillAppearanceStyle(\n appearance: MindBillReactAppearance | undefined,\n style?: CSSProperties,\n): CSSProperties {\n const resolved = resolveMindBillAppearance(appearance);\n return {\n \"--mb-accent\": resolved.accentColor,\n \"--mb-accent-contrast\": resolved.accentTextColor,\n \"--mb-text\": resolved.textColor,\n \"--mb-muted\": resolved.mutedColor,\n \"--mb-border\": resolved.borderColor,\n \"--mb-soft\": resolved.backgroundColor,\n \"--mb-surface\": resolved.surfaceColor,\n \"--mb-input\": resolved.inputBackgroundColor,\n \"--mb-font\": resolved.fontFamily,\n \"--mb-radius\": resolved.borderRadius,\n \"--mb-control-radius\": resolved.controlRadius,\n \"--mb-shadow\": resolved.shadow,\n \"--mb-danger\": resolved.dangerColor,\n \"--mb-success\": resolved.successColor,\n \"--mb-warning\": resolved.warningColor,\n ...style,\n } as CSSProperties;\n}\n","\"use client\";\n\nimport { sanitizeBillReviewSaveInput } from \"@mindbill/browser\";\nimport type { MindBillReactAppearance } from \"./appearance\";\nimport { mindBillAppearanceStyle } from \"./appearance\";\nimport type { CSSProperties, FormEvent, KeyboardEvent, ReactElement } from \"react\";\nimport { useEffect, useId, useMemo, useRef, useState } from \"react\";\n\nexport type BillReviewDocumentType =\n | \"final_report\"\n | \"letter_of_attestation\"\n | \"proof_of_service\"\n | \"form_122\"\n | \"return_to_work_voucher\"\n | \"w9\"\n | \"medical_records\"\n | \"appeal\"\n | \"other\";\n\nexport type BillReviewBillingProvider = {\n name: string;\n taxId: string;\n npi: string;\n billType: \"Professional\" | \"Institutional\";\n phone?: string;\n billingStreet?: string;\n billingCity?: string;\n billingState?: string;\n billingZip?: string;\n};\n\nexport type BillReviewClinician = {\n name: string;\n specialty: string;\n npi: string;\n taxonomy?: string;\n licenseNumber?: string;\n licenseState?: string;\n signaturePng?: string;\n signatureKey?: string;\n isQME?: boolean;\n isAME?: boolean;\n email?: string;\n active?: boolean;\n};\n\nexport type BillReviewLocation = {\n billingProviderId?: string;\n name: string;\n nickname?: string;\n street: string;\n city: string;\n state: string;\n zip: string;\n county?: string;\n posCode?: string;\n isPrimary?: boolean;\n active?: boolean;\n};\n\nexport type BillReviewLineItem = {\n id?: string;\n code: string;\n modifiers: string[];\n units: number;\n charge: number;\n feeSchedule?: number;\n serviceDate?: string | null;\n serviceDateEnd?: string | null;\n diagnosisPointers?: number[];\n};\n\nconst EMPTY_PROCEDURE_LINE: BillReviewLineItem = {\n code: \"\",\n modifiers: [],\n units: 1,\n charge: 0,\n};\n\nfunction isEmptyProcedureLine(line: BillReviewLineItem): boolean {\n return !line.code.trim() && line.modifiers.length === 0 && line.units === 1 && !line.serviceDate && !line.serviceDateEnd && !line.charge && !(line.diagnosisPointers?.length);\n}\n\n/** Keeps completed/partial lines plus one keyboard-ready empty row. */\nexport function ensureTrailingProcedureLine(\n lines: readonly BillReviewLineItem[],\n): BillReviewLineItem[] {\n const entered = lines\n .filter((line) => !isEmptyProcedureLine(line))\n .map((line) => ({ ...line, modifiers: [...line.modifiers] }));\n\n return entered.length < 50\n ? [...entered, { ...EMPTY_PROCEDURE_LINE, modifiers: [] }]\n : entered;\n}\n\nexport type BillReviewAttachment = {\n id: string;\n filename: string;\n description?: string | null;\n documentType: string;\n reportType?: string | null;\n source?: string;\n addedAt?: string;\n contentUrl?: string;\n};\n\nexport type BillReviewPayer = {\n id: string;\n name: string;\n hasElectronic?: boolean;\n states?: string[];\n confidence?: \"high\" | \"medium\" | \"directory\";\n recommended?: boolean;\n signals?: Array<{\n kind: \"name\" | \"claim_number\";\n state: \"match\" | \"warning\";\n label: string;\n }>;\n};\n\nexport type BillReviewFeatures = {\n authorizationNumber?: boolean;\n serviceDateRange?: boolean;\n wcabNumber?: boolean;\n codingPresets?: boolean;\n};\n\nexport type BillReviewClaimPatternStatus = {\n state: \"match\" | \"warning\" | \"unknown\";\n label: string;\n detail?: string;\n suggestion?: string;\n};\n\nexport type BillReviewData = {\n bill: {\n id: string;\n billingMode: \"med_legal\" | \"professional\";\n billNumber: string | number;\n status: string;\n transmissionState?: string;\n dos: string;\n dosEnd?: string | null;\n authorizationNumber?: string | null;\n billingSnapshot?: {\n billingProvider?: BillReviewBillingProvider;\n renderingProvider?: BillReviewClinician;\n placeOfService?: BillReviewLocation;\n } | null;\n lineItems: BillReviewLineItem[];\n attachments: BillReviewAttachment[];\n totalCharge: number;\n totalPaid: number;\n balanceDue: number;\n };\n patient: {\n name: string;\n firstName?: string;\n middleName?: string;\n lastName?: string;\n dob?: string;\n };\n injury: {\n claimNumber?: string;\n employer?: string;\n doi?: string;\n injuryEndDate?: string;\n cumulativeTrauma?: boolean;\n adjNumber?: string;\n claimsAdminId?: string;\n claimsAdminName?: string;\n claimPatternStatus?: BillReviewClaimPatternStatus;\n };\n};\n\nexport type BillReviewSaveInput = {\n claimsAdminId: string;\n patientOverrides?: {\n firstName: string;\n middleName?: string;\n lastName: string;\n dob?: string;\n };\n injuryOverrides?: {\n claimNumber?: string;\n employer?: string;\n doi?: string;\n injuryEndDate?: string;\n cumulativeTrauma?: boolean;\n adjNumber?: string;\n };\n dos: string;\n dosEnd?: string | null;\n authorizationNumber?: string | null;\n billingProvider?: BillReviewBillingProvider;\n renderingProvider?: BillReviewClinician;\n placeOfService?: BillReviewLocation;\n lineItems: Array<{\n id?: string;\n code: string;\n modifiers: string[];\n units: number;\n charge?: number;\n serviceDate?: string | null;\n serviceDateEnd?: string | null;\n diagnosisPointers?: number[];\n }>;\n};\n\nexport type BillSubmissionRoute = \"ebill\" | \"fax\" | \"mail\" | \"email\";\n\nexport type BillDeliveryOption = {\n route: BillSubmissionRoute;\n label: string;\n detail: string;\n fallback: boolean;\n confidence: string;\n payerName: string;\n target?: string;\n chKey?: string;\n payerId?: string;\n printAndMail?: boolean;\n costUsd?: number;\n};\n\nexport type BillDeliveryOptions = {\n payerName: string;\n recommended: BillDeliveryOption;\n options: BillDeliveryOption[];\n contacts: {\n faxNumber?: string | null;\n claimsEmail?: string | null;\n portalUrl?: string | null;\n mailingAddress?: string | null;\n };\n};\n\nexport type BillSubmissionInput = {\n route: BillSubmissionRoute;\n destination?: {\n faxNumber?: string;\n email?: string;\n mailingAddress?: string;\n };\n attention?: string;\n subject?: string;\n note?: string;\n};\n\nexport type BillReviewFormProps = {\n data: BillReviewData;\n onSave: (input: BillReviewSaveInput) => Promise<BillReviewData | void>;\n onSubmit: (\n input: BillReviewSaveInput,\n submission: BillSubmissionInput,\n ) => Promise<void>;\n onGetDeliveryOptions: () => Promise<BillDeliveryOptions>;\n onAddAttachment: (\n file: File,\n documentType: BillReviewDocumentType,\n description?: string,\n ) => Promise<void>;\n onRemoveAttachment: (attachmentId: string) => Promise<void>;\n onOpenAttachment?: (attachment: BillReviewAttachment) => void;\n onSearchClaimsAdministrators?: (\n query: string,\n claimNumber?: string,\n ) => Promise<BillReviewPayer[]>;\n className?: string;\n style?: CSSProperties;\n appearance?: MindBillReactAppearance;\n features?: BillReviewFeatures;\n disabled?: boolean;\n};\n\nexport type BillReviewDraft = {\n claimsAdminId: string;\n claimsAdminName: string;\n patientFirstName: string;\n patientMiddleName: string;\n patientLastName: string;\n patientDob: string;\n claimNumber: string;\n employer: string;\n doi: string;\n injuryEndDate: string;\n cumulativeTrauma: boolean;\n adjNumber: string;\n dos: string;\n dosEnd: string;\n authorizationNumber: string;\n billingProvider: BillReviewBillingProvider;\n clinician: BillReviewClinician;\n location: BillReviewLocation;\n lineItems: BillReviewLineItem[];\n};\n\nconst EMPTY_BILLING_PROVIDER: BillReviewBillingProvider = {\n name: \"\",\n taxId: \"\",\n npi: \"\",\n billType: \"Professional\",\n};\nconst EMPTY_CLINICIAN: BillReviewClinician = {\n name: \"\",\n specialty: \"\",\n npi: \"\",\n};\nconst EMPTY_LOCATION: BillReviewLocation = {\n name: \"\",\n street: \"\",\n city: \"\",\n state: \"\",\n zip: \"\",\n posCode: \"11\",\n};\n\nconst DOCUMENT_LABELS: Record<BillReviewDocumentType, string> = {\n final_report: \"Final medical-legal report\",\n letter_of_attestation: \"Letter of attestation\",\n proof_of_service: \"Proof of service\",\n form_122: \"DWC Form 122\",\n return_to_work_voucher: \"Return-to-work voucher\",\n w9: \"W-9\",\n medical_records: \"Medical records\",\n appeal: \"Appeal or review support\",\n other: \"Other supporting document\",\n};\n\nconst US_STATES = [\"AL\",\"AK\",\"AZ\",\"AR\",\"CA\",\"CO\",\"CT\",\"DE\",\"FL\",\"GA\",\"HI\",\"ID\",\"IL\",\"IN\",\"IA\",\"KS\",\"KY\",\"LA\",\"ME\",\"MD\",\"MA\",\"MI\",\"MN\",\"MS\",\"MO\",\"MT\",\"NE\",\"NV\",\"NH\",\"NJ\",\"NM\",\"NY\",\"NC\",\"ND\",\"OH\",\"OK\",\"OR\",\"PA\",\"RI\",\"SC\",\"SD\",\"TN\",\"TX\",\"UT\",\"VT\",\"VA\",\"WA\",\"WV\",\"WI\",\"WY\",\"DC\"];\nconst PROCEDURES = [\n [\"ML200\", \"Missed med-legal appointment\"],\n [\"ML201\", \"Comprehensive med-legal evaluation\"],\n [\"ML202\", \"Follow-up med-legal evaluation\"],\n [\"ML203\", \"Supplemental med-legal evaluation\"],\n [\"ML204\", \"Medical-legal testimony\"],\n [\"ML205\", \"Sub rosa recording review\"],\n [\"MLPRR\", \"Medical record review\"],\n] as const;\nconst MODIFIERS = [\n [\"92\", \"Primary treating physician\"], [\"93\", \"Interpreter required\"],\n [\"94\", \"Agreed medical evaluator (AME)\"], [\"95\", \"Qualified medical evaluator (QME)\"],\n [\"96\", \"Psychiatric or psychological evaluation\"], [\"97\", \"Toxicology evaluation\"],\n [\"98\", \"Oncology evaluation\"],\n] as const;\ntype CodingPreset = \"qme\" | \"ame\" | \"psych_qme\";\nconst MANAGED_EVALUATOR_MODIFIERS = new Set([\"94\", \"95\", \"96\"]);\nconst MODIFIER_CODES: Record<string, readonly string[]> = {\n \"92\": [\"ML201\", \"ML202\", \"ML203\"],\n \"93\": [\"ML201\", \"ML202\"],\n \"94\": [\"ML201\", \"ML202\", \"ML203\"],\n \"95\": [\"ML200\", \"ML201\", \"ML202\", \"ML203\", \"MLPRR\"],\n \"96\": [\"ML201\", \"ML202\", \"ML203\"],\n \"97\": [\"ML201\", \"ML202\", \"ML203\"],\n \"98\": [\"ML201\", \"ML202\", \"ML203\"],\n};\n\nfunction toDraft(data: BillReviewData): BillReviewDraft {\n const snapshot = data.bill.billingSnapshot;\n const nameParts = data.patient.name.trim().split(/\\s+/);\n return {\n claimsAdminId: data.injury.claimsAdminId || \"\",\n claimsAdminName: data.injury.claimsAdminName || \"\",\n patientFirstName: data.patient.firstName || nameParts[0] || \"\",\n patientMiddleName: data.patient.middleName || (nameParts.length > 2 ? nameParts.slice(1, -1).join(\" \") : \"\"),\n patientLastName: data.patient.lastName || (nameParts.length > 1 ? (nameParts.at(-1) || \"\") : \"\"),\n patientDob: data.patient.dob || \"\",\n claimNumber: data.injury.claimNumber || \"\",\n employer: data.injury.employer || \"\",\n doi: data.injury.doi || \"\",\n injuryEndDate: data.injury.injuryEndDate || \"\",\n cumulativeTrauma: Boolean(data.injury.cumulativeTrauma),\n adjNumber: data.injury.adjNumber || \"\",\n dos: data.bill.dos || \"\",\n dosEnd: data.bill.dosEnd || \"\",\n authorizationNumber: data.bill.authorizationNumber || \"\",\n billingProvider: {\n ...EMPTY_BILLING_PROVIDER,\n ...(snapshot?.billingProvider ?? {}),\n },\n clinician: { ...EMPTY_CLINICIAN, ...(snapshot?.renderingProvider ?? {}) },\n location: { ...EMPTY_LOCATION, ...(snapshot?.placeOfService ?? {}) },\n lineItems: ensureTrailingProcedureLine(data.bill.lineItems),\n };\n}\n\nexport function buildBillReviewSaveInput(\n draft: BillReviewDraft,\n): BillReviewSaveInput {\n return sanitizeBillReviewSaveInput({\n claimsAdminId: draft.claimsAdminId,\n patientOverrides: {\n firstName: draft.patientFirstName.trim(),\n ...(draft.patientMiddleName.trim() ? { middleName: draft.patientMiddleName.trim() } : {}),\n lastName: draft.patientLastName.trim(),\n ...(draft.patientDob ? { dob: draft.patientDob } : {}),\n },\n injuryOverrides: {\n ...(draft.claimNumber.trim() ? { claimNumber: draft.claimNumber.trim() } : {}),\n ...(draft.employer.trim() ? { employer: draft.employer.trim() } : {}),\n ...(draft.doi ? { doi: draft.doi } : {}),\n ...(draft.injuryEndDate ? { injuryEndDate: draft.injuryEndDate } : {}),\n cumulativeTrauma: draft.cumulativeTrauma,\n ...(draft.adjNumber.trim() ? { adjNumber: draft.adjNumber.trim().toUpperCase().replace(/\\s+/g, \"\") } : {}),\n },\n dos: draft.dos,\n dosEnd: draft.dosEnd || null,\n authorizationNumber: draft.authorizationNumber.trim() || null,\n billingProvider: { ...draft.billingProvider },\n renderingProvider: { ...draft.clinician },\n placeOfService: { ...draft.location },\n lineItems: draft.lineItems.filter((line) => line.code.trim()).map(({ id, code, modifiers, units, charge, serviceDate, serviceDateEnd, diagnosisPointers }) => ({\n ...(id ? { id } : {}),\n code: code.trim().toUpperCase(),\n modifiers,\n units,\n ...(charge ? { charge } : {}),\n ...(serviceDate ? { serviceDate } : {}),\n ...(serviceDateEnd ? { serviceDateEnd } : {}),\n ...(diagnosisPointers?.length ? { diagnosisPointers } : {}),\n })),\n });\n}\n\nfunction money(value: number): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(value);\n}\n\nfunction Field({\n label,\n value,\n onChange,\n type = \"text\",\n optional,\n required,\n disabled,\n hint,\n}: {\n label: string;\n value: string;\n onChange: (value: string) => void;\n type?: string;\n optional?: boolean;\n required?: boolean;\n disabled?: boolean;\n hint?: string;\n}): ReactElement {\n return (\n <label className=\"mb-native-field\">\n <span>\n {label} {optional ? <small>Optional</small> : null}\n </span>\n <input\n type={type}\n value={value}\n required={required}\n disabled={disabled}\n autoComplete=\"off\"\n onChange={(event) => onChange(event.target.value)}\n />\n {hint ? <small className=\"mb-native-hint\">{hint}</small> : null}\n </label>\n );\n}\n\ntype ComboOption = {\n value: string;\n label: string;\n detail?: string;\n badge?: string;\n};\n\nfunction Combobox({ label, value, options, onChange, placeholder, required, disabled, name }: {\n label: string;\n value: string;\n options: ComboOption[];\n onChange: (value: string, option?: ComboOption) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n}): ReactElement {\n const listId = useId();\n const root = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [active, setActive] = useState(0);\n const filtered = useMemo(() => {\n const query = value.trim().toLowerCase();\n return options.filter((option) => !query || option.label.toLowerCase().includes(query) || option.value.toLowerCase().includes(query)).slice(0, 40);\n }, [options, value]);\n useEffect(() => {\n const close = (event: MouseEvent) => {\n if (!root.current?.contains(event.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", close);\n return () => document.removeEventListener(\"mousedown\", close);\n }, []);\n const select = (option: ComboOption) => {\n onChange(option.value, option);\n setOpen(false);\n setActive(0);\n };\n const keyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") { event.preventDefault(); setOpen(true); setActive((value) => Math.min(value + 1, filtered.length - 1)); }\n if (event.key === \"ArrowUp\") { event.preventDefault(); setActive((value) => Math.max(value - 1, 0)); }\n if (event.key === \"Enter\" && open && filtered[active]) { event.preventDefault(); select(filtered[active]); }\n if (event.key === \"Escape\") setOpen(false);\n };\n return <div className=\"mb-native-combo\" ref={root}>\n <label className=\"mb-native-field\">\n <span>{label}</span>\n <input\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={listId}\n aria-expanded={open && filtered.length > 0}\n aria-activedescendant={open && filtered[active] ? `${listId}-${active}` : undefined}\n name={name || \"mindbill-search-value\"}\n autoComplete=\"new-password\"\n data-1p-ignore=\"true\"\n data-lpignore=\"true\"\n value={value}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n onFocus={() => setOpen(true)}\n onKeyDown={keyDown}\n onChange={(event) => { onChange(event.target.value); setOpen(true); setActive(0); }}\n />\n </label>\n {open && filtered.length ? <ul id={listId} role=\"listbox\" className=\"mb-native-combo-list\">\n {filtered.map((option, index) => <li id={`${listId}-${index}`} role=\"option\" aria-selected={index === active} key={`${option.value}-${index}`}>\n <button type=\"button\" className={index === active ? \"active\" : \"\"} onMouseDown={(event) => event.preventDefault()} onClick={() => select(option)}>\n <span className=\"mb-native-combo-title\"><strong>{option.label}</strong>{option.badge ? <em>{option.badge}</em> : null}</span>{option.detail ? <span>{option.detail}</span> : null}\n </button>\n </li>)}\n </ul> : null}\n </div>;\n}\n\nfunction StateCombobox({ label, value, onChange, required, disabled }: { label: string; value: string; onChange: (value: string) => void; required?: boolean; disabled?: boolean }): ReactElement {\n return <Combobox\n label={label}\n value={value}\n onChange={(next) => onChange(next.toUpperCase().slice(0, 2))}\n options={US_STATES.map((state) => ({ value: state, label: state }))}\n {...(required === undefined ? {} : { required })}\n {...(disabled === undefined ? {} : { disabled })}\n name=\"mindbill-state-value\"\n />;\n}\n\nfunction inferPreset(lines: BillReviewLineItem[]): CodingPreset {\n const modifiers = new Set(lines.flatMap((line) => line.modifiers));\n return modifiers.has(\"94\") ? \"ame\" : modifiers.has(\"96\") ? \"psych_qme\" : \"qme\";\n}\n\nfunction presetModifiersForCode(preset: CodingPreset, code: string): string[] {\n if (code === \"MLPRR\") return [\"95\"];\n if (preset === \"qme\" && [\"ML200\", \"ML201\", \"ML202\", \"ML203\"].includes(code)) return [\"95\"];\n if (preset === \"ame\" && [\"ML201\", \"ML202\", \"ML203\"].includes(code)) return [\"94\"];\n if (preset === \"psych_qme\") {\n if (code === \"ML200\") return [\"95\"];\n if ([\"ML201\", \"ML202\", \"ML203\"].includes(code)) return [\"96\"];\n }\n return [];\n}\n\nfunction modifierAppliesToCode(modifier: string, code: string): boolean {\n return !code || (MODIFIER_CODES[modifier]?.includes(code) ?? true);\n}\n\nfunction applyPreset(lines: BillReviewLineItem[], preset: CodingPreset): BillReviewLineItem[] {\n return lines.map((line) => {\n const preserved = line.modifiers.filter(\n (value) => !MANAGED_EVALUATOR_MODIFIERS.has(value) && modifierAppliesToCode(value, line.code),\n );\n return {\n ...line,\n modifiers: [...new Set([...presetModifiersForCode(preset, line.code), ...preserved])],\n };\n });\n}\n\nexport function BillReviewForm({\n data,\n onSave,\n onSubmit,\n onGetDeliveryOptions,\n onAddAttachment,\n onRemoveAttachment,\n onOpenAttachment,\n onSearchClaimsAdministrators,\n className,\n style,\n appearance,\n features,\n disabled = false,\n}: BillReviewFormProps): ReactElement {\n const [draft, setDraft] = useState(() => toDraft(data));\n const [payerQuery, setPayerQuery] = useState(\n () => data.injury.claimsAdminName || \"\",\n );\n const [payerResults, setPayerResults] = useState<BillReviewPayer[]>([]);\n const [payerBusy, setPayerBusy] = useState(false);\n const [deliveryOptions, setDeliveryOptions] = useState<BillDeliveryOptions | null>(null);\n const [submission, setSubmission] = useState<BillSubmissionInput>({ route: \"ebill\" });\n const [showSubmit, setShowSubmit] = useState(false);\n const [deliveryBusy, setDeliveryBusy] = useState(false);\n const [file, setFile] = useState<File | null>(null);\n const [documentType, setDocumentType] =\n useState<BillReviewDocumentType>(\"other\");\n const [busy, setBusy] = useState<\"save\" | \"submit\" | \"attachment\" | \"\">(\"\");\n const [error, setError] = useState(\"\");\n const [notice, setNotice] = useState(\"\");\n const editable = data.bill.status === \"incomplete\" && !disabled;\n\n useEffect(() => {\n setDraft(toDraft(data));\n setPayerQuery(data.injury.claimsAdminName || \"\");\n }, [data]);\n\n useEffect(() => {\n const query = payerQuery.trim();\n const claimNumber = draft.claimNumber.trim();\n if (\n !onSearchClaimsAdministrators ||\n (query.length < 2 && claimNumber.length < 4)\n ) {\n setPayerResults([]);\n setPayerBusy(false);\n return;\n }\n let current = true;\n const timer = window.setTimeout(() => {\n setPayerBusy(true);\n void onSearchClaimsAdministrators(query, claimNumber)\n .then((results) => {\n if (!current) return;\n setPayerResults(results);\n const recommendation = results.find(\n (payer) => payer.recommended && payer.confidence === \"high\",\n );\n if (!draft.claimsAdminId && recommendation) {\n setDraft((currentDraft) => ({\n ...currentDraft,\n claimsAdminId: recommendation.id,\n claimsAdminName: recommendation.name,\n }));\n setPayerQuery(recommendation.name);\n setNotice(\n \"Claims administrator matched from the case data. Review and save to keep it on this bill.\",\n );\n }\n })\n .catch((cause) => {\n if (current) {\n setPayerResults([]);\n setError(\n cause instanceof Error\n ? cause.message\n : \"Claims administrator search is unavailable.\",\n );\n }\n })\n .finally(() => {\n if (current) setPayerBusy(false);\n });\n }, 200);\n return () => {\n current = false;\n window.clearTimeout(timer);\n };\n }, [\n draft.claimNumber,\n draft.claimsAdminId,\n onSearchClaimsAdministrators,\n payerQuery,\n ]);\n\n const selectedPayer = payerResults.find(\n (payer) => payer.id === draft.claimsAdminId,\n );\n\n const adjFormatValid =\n !draft.adjNumber ||\n /^ADJ\\d{7,}$/i.test(draft.adjNumber.replace(/[\\s-]/g, \"\"));\n const blockers = useMemo(() => {\n const result: string[] = [];\n if (!draft.patientFirstName.trim() || !draft.patientLastName.trim()) result.push(\"Patient name\");\n if (!draft.claimsAdminId) result.push(\"Claims administrator\");\n if (!draft.claimNumber.trim()) result.push(\"Claim number\");\n if (!draft.doi) result.push(\"Date of injury\");\n if (!adjFormatValid) result.push(\"Valid WCAB / ADJ number\");\n if (data.bill.billingMode === \"med_legal\" && !draft.dos) result.push(\"Date of service\");\n if (!draft.billingProvider.name.trim()) result.push(\"Practice name\");\n if (!draft.billingProvider.taxId.trim()) result.push(\"Tax ID\");\n if (!draft.billingProvider.npi.trim()) result.push(\"Billing NPI\");\n if (!draft.clinician.name.trim() || !draft.clinician.npi.trim()) result.push(\"Clinician and NPI\");\n if (![draft.location.name, draft.location.street, draft.location.city, draft.location.state, draft.location.zip].every((value) => value.trim())) result.push(\"Service location\");\n const completedLines = draft.lineItems.filter((line) => line.code.trim());\n if (!completedLines.length || completedLines.some((line) => line.units <= 0)) result.push(\"Valid procedure line\");\n if (data.bill.billingMode === \"professional\" && completedLines.some((line) => !line.serviceDate || line.charge <= 0)) {\n result.push(\"Service date and charge on every procedure line\");\n }\n return result;\n }, [adjFormatValid, data.bill.billingMode, draft]);\n const canSubmit = blockers.length === 0;\n\n const updateBillingProvider = <K extends keyof BillReviewBillingProvider>(\n key: K,\n value: BillReviewBillingProvider[K],\n ) =>\n setDraft((current) => ({\n ...current,\n billingProvider: { ...current.billingProvider, [key]: value },\n }));\n const updateClinician = <K extends keyof BillReviewClinician>(\n key: K,\n value: BillReviewClinician[K],\n ) =>\n setDraft((current) => ({\n ...current,\n clinician: { ...current.clinician, [key]: value },\n }));\n const updateLocation = <K extends keyof BillReviewLocation>(\n key: K,\n value: BillReviewLocation[K],\n ) =>\n setDraft((current) => ({\n ...current,\n location: { ...current.location, [key]: value },\n }));\n\n async function run(action: \"save\" | \"submit\", task: () => Promise<void>) {\n setBusy(action);\n setError(\"\");\n setNotice(\"\");\n try {\n await task();\n setNotice(action === \"save\" ? \"Changes saved.\" : \"Bill submitted.\");\n } catch (cause) {\n setError(\n cause instanceof Error\n ? cause.message\n : \"The billing request could not be completed.\",\n );\n } finally {\n setBusy(\"\");\n }\n }\n\n const handleSave = (event: FormEvent) => {\n event.preventDefault();\n void run(\"save\", async () => {\n const updated = await onSave(buildBillReviewSaveInput(draft));\n if (updated) setDraft(toDraft(updated));\n });\n };\n\n const openSubmit = async () => {\n setDeliveryBusy(true);\n setError(\"\");\n try {\n const next = await onGetDeliveryOptions();\n setDeliveryOptions(next);\n const recommended = next.recommended ?? next.options[0];\n if (!recommended) throw new Error(\"No delivery route is available for this payer.\");\n setSubmission({ route: recommended.route });\n setShowSubmit(true);\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : \"Delivery routes could not be loaded.\");\n } finally {\n setDeliveryBusy(false);\n }\n };\n\n const selectedDelivery = deliveryOptions?.options.find((option) => option.route === submission.route);\n const destinationLabel = submission.route === \"fax\"\n ? \"Fax number\"\n : submission.route === \"email\"\n ? \"Email address\"\n : submission.route === \"mail\"\n ? \"Mailing address\"\n : \"\";\n const destinationValue = submission.route === \"fax\"\n ? submission.destination?.faxNumber ?? selectedDelivery?.target ?? deliveryOptions?.contacts.faxNumber ?? \"\"\n : submission.route === \"email\"\n ? submission.destination?.email ?? selectedDelivery?.target ?? deliveryOptions?.contacts.claimsEmail ?? \"\"\n : submission.route === \"mail\"\n ? submission.destination?.mailingAddress ?? selectedDelivery?.target ?? deliveryOptions?.contacts.mailingAddress ?? \"\"\n : \"\";\n const setDestination = (value: string) => setSubmission((current) => {\n const destination = current.route === \"fax\"\n ? { faxNumber: value }\n : current.route === \"email\"\n ? { email: value }\n : { mailingAddress: value };\n return { ...current, destination };\n });\n const handleSubmit = () => run(\"submit\", async () => {\n await onSubmit(buildBillReviewSaveInput(draft), submission);\n setShowSubmit(false);\n });\n\n const attach = async () => {\n if (!file) return;\n setBusy(\"attachment\");\n setError(\"\");\n try {\n await onAddAttachment(file, documentType, DOCUMENT_LABELS[documentType]);\n setFile(null);\n setDocumentType(\"other\");\n setNotice(\"Document added to the payer packet.\");\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : \"Document could not be attached.\");\n } finally {\n setBusy(\"\");\n }\n };\n\n const sectionClass = \"mb-native-section\";\n return (\n <form\n className={[\"mb-native-review\", className].filter(Boolean).join(\" \")}\n style={mindBillAppearanceStyle(appearance, style)}\n onSubmit={handleSave}\n >\n <style>{NATIVE_BILL_REVIEW_STYLES}</style>\n <style>{NATIVE_THEME_OVERRIDE_STYLES}</style>\n <style>{NATIVE_SUBMISSION_DIALOG_STYLES}</style>\n <header className=\"mb-native-heading\">\n <div>\n <span className=\"mb-native-eyebrow\">Billing review</span>\n <h2>Bill #{data.bill.billNumber}</h2>\n <p>Review the prefilled claim and payer packet, then submit.</p>\n </div>\n <div className=\"mb-native-total\">\n <span>{data.bill.status}</span>\n <strong>{money(data.bill.totalCharge)}</strong>\n </div>\n </header>\n\n <dl className=\"mb-native-summary\">\n <div><dt>Patient</dt><dd>{[draft.patientFirstName, draft.patientMiddleName, draft.patientLastName].filter(Boolean).join(\" \") || \"—\"}</dd></div>\n <div><dt>Claim</dt><dd>{draft.claimNumber || \"—\"}</dd></div>\n <div><dt>Employer</dt><dd>{draft.employer || \"—\"}</dd></div>\n <div><dt>Date of injury</dt><dd>{draft.doi || \"—\"}</dd></div>\n </dl>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\">\n <div>\n <h3>Claims administrator</h3>\n <p>Select the carrier or administrator that should receive this bill.</p>\n </div>\n {draft.claimsAdminId ? <span>Selected</span> : <span>Required</span>}\n </div>\n <div className=\"mb-native-payer-picker\">\n <Combobox\n label=\"Insurance company or claims administrator\"\n value={payerQuery}\n disabled={!editable}\n placeholder=\"Search by payer or administrator name\"\n name=\"mindbill-payer-query\"\n options={payerResults.map((payer) => ({\n value: payer.id,\n label: payer.name,\n ...(payer.recommended\n ? { badge: \"Recommended\" }\n : payer.confidence === \"medium\"\n ? { badge: \"Claim match\" }\n : {}),\n detail: [\n ...(payer.signals ?? []).map((signal) => signal.label),\n payer.hasElectronic\n ? \"Electronic billing available.\"\n : \"Billing route confirmed after review.\",\n ].join(\" \"),\n }))}\n onChange={(value, option) => {\n if (option) {\n setDraft((current) => ({ ...current, claimsAdminId: option.value, claimsAdminName: option.label }));\n setPayerQuery(option.label);\n setNotice(\"Claims administrator selected. Save changes to keep it on this bill.\");\n } else {\n setPayerQuery(value);\n setDraft((current) => value === current.claimsAdminName ? current : { ...current, claimsAdminId: \"\", claimsAdminName: \"\" });\n }\n }}\n />\n {payerBusy ? <span className=\"mb-native-payer-help\">Searching…</span> : null}\n {!payerBusy && payerQuery.trim().length > 1 && payerResults.length === 0 && !draft.claimsAdminId ? (\n <span className=\"mb-native-payer-help\">No matching administrator selected yet.</span>\n ) : null}\n {selectedPayer?.signals?.length ? (\n <div className=\"mb-native-payer-insight\" role=\"status\">\n {selectedPayer.signals.map((signal) => (\n <span className={signal.state} key={`${signal.kind}-${signal.label}`}>\n {signal.label}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Patient and claim</h3><p>Prefilled from the case. Correct anything that should print differently on this bill.</p></div><span>Editable</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Patient first name\" required disabled={!editable} value={draft.patientFirstName} onChange={(patientFirstName) => setDraft((current) => ({ ...current, patientFirstName }))} />\n <Field label=\"Middle name\" optional disabled={!editable} value={draft.patientMiddleName} onChange={(patientMiddleName) => setDraft((current) => ({ ...current, patientMiddleName }))} />\n <Field label=\"Patient last name\" required disabled={!editable} value={draft.patientLastName} onChange={(patientLastName) => setDraft((current) => ({ ...current, patientLastName }))} />\n <Field label=\"Date of birth\" type=\"date\" required disabled={!editable} value={draft.patientDob} onChange={(patientDob) => setDraft((current) => ({ ...current, patientDob }))} />\n <Field label=\"Claim number\" required disabled={!editable} value={draft.claimNumber} onChange={(claimNumber) => setDraft((current) => ({ ...current, claimNumber }))} {...((data.injury.claimPatternStatus?.detail || data.injury.claimPatternStatus?.label) ? { hint: data.injury.claimPatternStatus?.detail || data.injury.claimPatternStatus?.label || \"\" } : {})} />\n <Field label=\"Employer\" disabled={!editable} value={draft.employer} onChange={(employer) => setDraft((current) => ({ ...current, employer }))} />\n <Field label=\"Date of injury\" type=\"date\" required disabled={!editable} value={draft.doi} onChange={(doi) => setDraft((current) => ({ ...current, doi }))} />\n {draft.cumulativeTrauma ? <Field label=\"Cumulative trauma end date\" type=\"date\" required disabled={!editable} value={draft.injuryEndDate} onChange={(injuryEndDate) => setDraft((current) => ({ ...current, injuryEndDate }))} /> : null}\n {features?.wcabNumber === false ? null : <Field label=\"WCAB / ADJ number\" optional disabled={!editable} value={draft.adjNumber} onChange={(adjNumber) => setDraft((current) => ({ ...current, adjNumber }))} hint={adjFormatValid ? \"Use the EAMS case number shown as ADJ followed by digits.\" : \"Expected format: ADJ followed by at least 7 digits.\"} />}\n </div>\n {features?.wcabNumber === false ? null : <p className=\"mb-native-eams\">EAMS lookup requires California DWC verification. <a href=\"https://eams.dwc.ca.gov/WebEnhancement/\" target=\"_blank\" rel=\"noreferrer\">Verify in EAMS</a>.</p>}\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Service</h3><p>The service date and optional payer authorization printed on this bill.</p></div></div>\n <div className={`mb-native-grid ${features?.serviceDateRange || features?.authorizationNumber !== false ? \"three\" : \"one\"}`}>\n <Field label=\"Date of service\" type=\"date\" required disabled={!editable} value={draft.dos} onChange={(dos) => setDraft((current) => ({ ...current, dos }))} />\n {features?.serviceDateRange ? <Field label=\"Service end date\" type=\"date\" optional disabled={!editable} value={draft.dosEnd} onChange={(dosEnd) => setDraft((current) => ({ ...current, dosEnd }))} /> : null}\n {features?.authorizationNumber === false ? null : <Field label=\"Authorization number\" optional disabled={!editable} value={draft.authorizationNumber} onChange={(authorizationNumber) => setDraft((current) => ({ ...current, authorizationNumber }))} />}\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Billing practice</h3><p>Payee identity and billing address for this claim.</p></div><span>Prefilled</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Practice name\" required value={draft.billingProvider.name} onChange={(value) => updateBillingProvider(\"name\", value)} />\n <Field label=\"Tax ID\" required value={draft.billingProvider.taxId} onChange={(value) => updateBillingProvider(\"taxId\", value)} />\n <Field label=\"Billing NPI\" required value={draft.billingProvider.npi} onChange={(value) => updateBillingProvider(\"npi\", value)} />\n <Field label=\"Phone\" optional value={draft.billingProvider.phone || \"\"} onChange={(value) => updateBillingProvider(\"phone\", value)} />\n <Field label=\"Billing street\" required value={draft.billingProvider.billingStreet || \"\"} onChange={(value) => updateBillingProvider(\"billingStreet\", value)} />\n <Field label=\"City\" required value={draft.billingProvider.billingCity || \"\"} onChange={(value) => updateBillingProvider(\"billingCity\", value)} />\n <StateCombobox label=\"State\" required disabled={!editable} value={draft.billingProvider.billingState || \"\"} onChange={(value) => updateBillingProvider(\"billingState\", value)} />\n <Field label=\"ZIP\" required value={draft.billingProvider.billingZip || \"\"} onChange={(value) => updateBillingProvider(\"billingZip\", value)} />\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Clinician</h3><p>Provider identity printed on the claim.</p></div><span>Prefilled</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Clinician name\" required value={draft.clinician.name} onChange={(value) => updateClinician(\"name\", value)} />\n <Field label=\"Specialty\" value={draft.clinician.specialty} onChange={(value) => updateClinician(\"specialty\", value)} />\n <Field label=\"NPI\" required value={draft.clinician.npi} onChange={(value) => updateClinician(\"npi\", value)} />\n <Field label=\"Taxonomy\" optional value={draft.clinician.taxonomy || \"\"} onChange={(value) => updateClinician(\"taxonomy\", value)} />\n <Field label=\"License number\" optional value={draft.clinician.licenseNumber || \"\"} onChange={(value) => updateClinician(\"licenseNumber\", value)} />\n <StateCombobox label=\"License state (optional)\" disabled={!editable} value={draft.clinician.licenseState || \"\"} onChange={(value) => updateClinician(\"licenseState\", value)} />\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Service location</h3><p>The exact place of service for this bill.</p></div><span>Prefilled</span></div>\n <div className=\"mb-native-grid three\">\n <Field label=\"Location name\" required value={draft.location.name} onChange={(value) => updateLocation(\"name\", value)} />\n <Field label=\"Street\" required value={draft.location.street} onChange={(value) => updateLocation(\"street\", value)} />\n <Field label=\"City\" required value={draft.location.city} onChange={(value) => updateLocation(\"city\", value)} />\n <StateCombobox label=\"State\" required disabled={!editable} value={draft.location.state} onChange={(value) => updateLocation(\"state\", value)} />\n <Field label=\"ZIP\" required value={draft.location.zip} onChange={(value) => updateLocation(\"zip\", value)} />\n <Field label=\"Place of service code\" required value={draft.location.posCode || \"11\"} onChange={(value) => updateLocation(\"posCode\", value)} />\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Procedure lines</h3><p>{data.bill.billingMode === \"professional\" ? \"Enter the professional services billed. Each line may carry its own date, charge, and diagnosis pointers.\" : \"Choose a billing profile, then review the codes and modifiers.\"} A new row appears as you type.</p></div></div>\n {data.bill.billingMode === \"professional\" || features?.codingPresets === false ? null : <div className=\"mb-native-presets\" role=\"group\" aria-label=\"Evaluation billing profile\">\n {([['qme','QME'],['ame','AME'],['psych_qme','Psych QME']] as const).map(([value,label]) => <button type=\"button\" key={value} className={inferPreset(draft.lineItems) === value ? \"active\" : \"\"} disabled={!editable} onClick={() => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(applyPreset(current.lineItems, value)) }))}>{label}</button>)}\n <span>Sets evaluator modifiers across med-legal lines. You can still edit each line.</span>\n </div>}\n <div className=\"mb-native-lines\">\n {draft.lineItems.map((line, index) => (\n <div className={`mb-native-line ${data.bill.billingMode === \"professional\" ? \"professional\" : \"\"}`} key={line.id || index}>\n <label className=\"mb-native-field\"><span>Procedure</span>{data.bill.billingMode === \"professional\" ? <input disabled={!editable} placeholder=\"CPT / HCPCS code\" value={line.code} onChange={(event) => {\n const code = event.target.value.toUpperCase();\n setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, code } : item)) }));\n }} /> : <select disabled={!editable} value={line.code} onChange={(event) => {\n const code = event.target.value;\n setDraft((current) => {\n const lineItems = current.lineItems.map((item, itemIndex) => {\n if (itemIndex !== index) return item;\n const presetLine = applyPreset([{ ...item, code }], inferPreset(current.lineItems))[0];\n return { ...item, code, modifiers: presetLine?.modifiers || [] };\n });\n return { ...current, lineItems: ensureTrailingProcedureLine(lineItems) };\n });\n }}><option value=\"\">Select code…</option>{PROCEDURES.map(([code,label]) => <option value={code} key={code}>{code} — {label}</option>)}</select>}{data.bill.billingMode === \"med_legal\" && line.code ? <small>{PROCEDURES.find(([code]) => code === line.code)?.[1]}</small> : null}</label>\n <div className=\"mb-native-modifiers\">{data.bill.billingMode === \"professional\" ? <label className=\"mb-native-field\"><span>Modifiers</span><input disabled={!editable} placeholder=\"e.g. 25, 59\" value={line.modifiers.join(\", \")} onChange={(event) => {\n const modifiers = event.target.value.toUpperCase().split(/[ ,]+/).map((value) => value.replace(/^-/, \"\")).filter(Boolean);\n setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, modifiers } : item)) }));\n }} /></label> : <label className=\"mb-native-field\"><span>Modifiers</span><select disabled={!editable} value=\"\" onChange={(event) => {\n const modifier = event.target.value;\n if (!modifier) return;\n setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, modifiers: [...new Set([...item.modifiers, modifier])] } : item)) }));\n }}><option value=\"\">Add modifier…</option>{MODIFIERS.filter(([value]) => !line.modifiers.includes(value) && modifierAppliesToCode(value, line.code)).map(([value,label]) => <option value={value} key={value}>-{value} — {label}</option>)}</select></label>}<div className=\"mb-native-chips\">{data.bill.billingMode === \"med_legal\" ? line.modifiers.map((modifier) => <button type=\"button\" disabled={!editable} key={modifier} onClick={() => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, modifiers: item.modifiers.filter((value) => value !== modifier) } : item)) }))}>-{modifier} ×</button>) : null}</div></div>\n <label className=\"mb-native-field\"><span>Units</span><input type=\"number\" min=\"1\" required disabled={!editable} value={line.units} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, units: Number(event.target.value) } : item)) }))} /></label>\n {data.bill.billingMode === \"professional\" ? <>\n <label className=\"mb-native-field\"><span>Service date</span><input type=\"date\" required={Boolean(line.code)} disabled={!editable} value={line.serviceDate || \"\"} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, serviceDate: event.target.value } : item)) }))} /></label>\n <label className=\"mb-native-field\"><span>End date <small>Optional</small></span><input type=\"date\" disabled={!editable} value={line.serviceDateEnd || \"\"} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, serviceDateEnd: event.target.value } : item)) }))} /></label>\n <label className=\"mb-native-field\"><span>Charge</span><input type=\"number\" min=\"0.01\" step=\"0.01\" required={Boolean(line.code)} disabled={!editable} value={line.charge || \"\"} onChange={(event) => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, charge: Number(event.target.value) } : item)) }))} /></label>\n <label className=\"mb-native-field\"><span>Diagnosis pointers <small>1–12</small></span><input inputMode=\"numeric\" disabled={!editable} value={(line.diagnosisPointers || []).join(\", \")} onChange={(event) => { const diagnosisPointers = event.target.value.split(/[ ,]+/).map(Number).filter((value) => Number.isInteger(value) && value >= 1 && value <= 12); setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.map((item, itemIndex) => itemIndex === index ? { ...item, diagnosisPointers } : item)) })); }} /></label>\n </> : null}\n <div className=\"mb-native-allowed\"><span>Allowed</span><strong>{money(line.charge)}</strong></div>\n <button type=\"button\" className=\"mb-native-remove\" aria-label={`Remove ${line.code || \"procedure\"}`} disabled={!editable} onClick={() => setDraft((current) => ({ ...current, lineItems: ensureTrailingProcedureLine(current.lineItems.filter((_, itemIndex) => itemIndex !== index)) }))}>×</button>\n </div>\n ))}\n </div>\n </section>\n\n <section className={sectionClass}>\n <div className=\"mb-native-section-head\"><div><h3>Payer billing packet</h3><p>Review exactly what will be sent with this bill.</p></div><span>{data.bill.attachments.length} files</span></div>\n <div className=\"mb-native-note\"><strong>Separate from attorney report service.</strong> Final reports, proof of service, and required billing forms may be preselected. Medical records are never silently attached.</div>\n <ul className=\"mb-native-documents\">\n {data.bill.attachments.map((attachment) => (\n <li key={attachment.id}>\n <span className=\"mb-native-file\">PDF</span>\n <div><strong>{attachment.filename}</strong><span>{DOCUMENT_LABELS[attachment.documentType as BillReviewDocumentType] || attachment.description || \"Supporting document\"}</span></div>\n {onOpenAttachment ? <button type=\"button\" className=\"mb-native-button quiet\" onClick={() => onOpenAttachment(attachment)}>View</button> : null}\n <button type=\"button\" className=\"mb-native-remove\" disabled={!editable || busy === \"attachment\"} aria-label={`Remove ${attachment.filename}`} onClick={() => void onRemoveAttachment(attachment.id).catch((cause) => setError(cause instanceof Error ? cause.message : \"Document could not be removed.\"))}>×</button>\n </li>\n ))}\n </ul>\n <div className=\"mb-native-attach\">\n <div><strong>Add supporting PDF</strong><span>Choose any additional document intentionally. Up to 25 MB.</span></div>\n <select aria-label=\"Document type\" value={documentType} disabled={!editable} onChange={(event) => setDocumentType(event.target.value as BillReviewDocumentType)}>{Object.entries(DOCUMENT_LABELS).map(([value, label]) => <option key={value} value={value}>{label}</option>)}</select>\n <input aria-label=\"Choose supporting PDF\" type=\"file\" accept=\"application/pdf,.pdf\" disabled={!editable} onChange={(event) => setFile(event.target.files?.[0] || null)} />\n <button className=\"mb-native-button secondary\" type=\"button\" disabled={!editable || !file || busy === \"attachment\"} onClick={() => void attach()}>{busy === \"attachment\" ? \"Attaching…\" : \"Attach document\"}</button>\n </div>\n </section>\n\n <section className=\"mb-native-submit\">\n <div><span className=\"mb-native-eyebrow\">Delivery</span><h3>Submit this bill</h3><p>After submission, status, payments, denials, and resubmissions stay available here.</p></div>\n {error ? <div className=\"mb-native-message error\" role=\"alert\">{error}</div> : null}\n {notice ? <div className=\"mb-native-message success\" role=\"status\">{notice}</div> : null}\n {!canSubmit ? <div className=\"mb-native-blockers\" role=\"status\"><strong>Before you can submit:</strong><span>{blockers.join(\" · \")}</span></div> : null}\n <div className=\"mb-native-actions\">\n <button className=\"mb-native-button secondary\" type=\"submit\" disabled={!editable || busy !== \"\"}>{busy === \"save\" ? \"Saving…\" : \"Save changes\"}</button>\n <button className=\"mb-native-button primary\" type=\"button\" disabled={!editable || !canSubmit || busy !== \"\" || deliveryBusy} onClick={() => void openSubmit()}>{deliveryBusy ? \"Loading delivery…\" : \"Review delivery\"}</button>\n </div>\n </section>\n {showSubmit && deliveryOptions ? <div className=\"mb-native-modal-backdrop\" role=\"presentation\" onMouseDown={(event) => { if (event.target === event.currentTarget && busy !== \"submit\") setShowSubmit(false); }}>\n <section className=\"mb-native-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"mb-native-submit-title\">\n <header><div><span className=\"mb-native-eyebrow\">Send bill</span><h3 id=\"mb-native-submit-title\">Choose a delivery route</h3><p>{deliveryOptions.payerName || \"Claims administrator\"}</p></div><button type=\"button\" className=\"mb-native-close\" aria-label=\"Close\" disabled={busy === \"submit\"} onClick={() => setShowSubmit(false)}>×</button></header>\n <fieldset className=\"mb-native-delivery-options\"><legend>Available delivery routes</legend>{deliveryOptions.options.map((option) => <label className={submission.route === option.route ? \"selected\" : \"\"} key={`${option.route}-${option.target || \"default\"}`}><input type=\"radio\" name=\"mindbill-delivery-route\" checked={submission.route === option.route} onChange={() => setSubmission({ route: option.route })} /><span><strong>{option.label}</strong><small>{option.detail}</small>{option.target ? <code>{option.target}</code> : null}</span>{deliveryOptions.recommended?.route === option.route ? <em>Recommended</em> : null}</label>)}</fieldset>\n {submission.route !== \"ebill\" ? <div className=\"mb-native-grid two\"><Field label={destinationLabel} required value={destinationValue} onChange={setDestination} hint=\"You can override the payer directory value for this submission.\" /><Field label=\"Attention\" optional value={submission.attention || \"\"} onChange={(attention) => setSubmission((current) => ({ ...current, attention }))} />{submission.route === \"email\" ? <Field label=\"Subject\" optional value={submission.subject || \"\"} onChange={(subject) => setSubmission((current) => ({ ...current, subject }))} /> : null}</div> : null}\n <Field label=\"Delivery note\" optional value={submission.note || \"\"} onChange={(note) => setSubmission((current) => ({ ...current, note }))} />\n <footer><button className=\"mb-native-button secondary\" type=\"button\" disabled={busy === \"submit\"} onClick={() => setShowSubmit(false)}>Cancel</button><button className=\"mb-native-button primary\" type=\"button\" disabled={busy === \"submit\" || (submission.route !== \"ebill\" && !destinationValue.trim())} onClick={() => void handleSubmit()}>{busy === \"submit\" ? \"Submitting…\" : `Send via ${selectedDelivery?.label || submission.route}`}</button></footer>\n </section>\n </div> : null}\n </form>\n );\n}\n\nexport type BillStatusSummaryProps = {\n status: string;\n submittedAt?: string | null;\n agingDays?: number | null;\n updatedAt?: string | null;\n totalCharge: number;\n totalPaid: number;\n balanceDue: number;\n actions?: BillStatusAction[];\n className?: string;\n style?: CSSProperties;\n appearance?: MindBillReactAppearance;\n};\n\nexport type BillStatusAction = {\n id: string;\n label: string;\n onClick: () => void;\n primary?: boolean;\n disabled?: boolean;\n};\n\nexport function BillStatusSummary({ status, submittedAt, agingDays, updatedAt, totalCharge, totalPaid, balanceDue, actions = [], className, style, appearance }: BillStatusSummaryProps): ReactElement {\n return <section className={[\"mb-native-status\", className].filter(Boolean).join(\" \")} style={mindBillAppearanceStyle(appearance, style)}>\n <style>{NATIVE_BILL_REVIEW_STYLES}</style>\n <style>{NATIVE_THEME_OVERRIDE_STYLES}</style>\n <div className=\"mb-native-status-copy\"><span className=\"mb-native-eyebrow\">Bill status</span><h3>{status.replaceAll(\"_\", \" \")}</h3><p>{submittedAt ? `Submitted ${new Date(submittedAt).toLocaleDateString()}` : \"Not submitted\"}{agingDays == null ? \"\" : ` · ${agingDays} day${agingDays === 1 ? \"\" : \"s\"} old`}{updatedAt ? ` · Updated ${new Date(updatedAt).toLocaleDateString()}` : \"\"}</p></div>\n <dl><div><dt>Charged</dt><dd>{money(totalCharge)}</dd></div><div><dt>Paid</dt><dd>{money(totalPaid)}</dd></div><div><dt>Balance</dt><dd>{money(balanceDue)}</dd></div></dl>\n {actions.length ? <div className=\"mb-native-status-actions\">{actions.map((action) => <button key={action.id} type=\"button\" className={`mb-native-button ${action.primary ? \"primary\" : \"secondary\"}`} disabled={action.disabled} onClick={action.onClick}>{action.label}</button>)}</div> : null}\n </section>;\n}\n\nconst NATIVE_SUBMISSION_DIALOG_STYLES = `\n.mb-native-field select{width:100%;min-height:43px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:10px 12px}\n.mb-native-field select:focus{border-color:var(--mb-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mb-accent) 14%,transparent);outline:0}\n.mb-native-line.professional{grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) 86px 150px 150px 120px minmax(130px,1fr) 120px 28px;overflow-x:auto}\n.mb-native-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.mb-native-modal-backdrop{position:fixed;z-index:9999;inset:0;display:grid;place-items:center;padding:20px;background:rgba(20,38,46,.55);backdrop-filter:blur(3px)}\n.mb-native-modal{display:grid;gap:18px;width:min(720px,100%);max-height:min(820px,calc(100vh - 40px));overflow:auto;padding:22px;border:1px solid var(--mb-border);border-radius:16px;background:#fff;box-shadow:0 28px 80px rgba(14,35,44,.3)}\n.mb-native-modal>header,.mb-native-modal>footer{display:flex;align-items:start;justify-content:space-between;gap:16px}.mb-native-modal>footer{justify-content:flex-end}.mb-native-modal h3{margin:3px 0;font-size:22px}.mb-native-modal p{margin:0;color:var(--mb-muted)}\n.mb-native-close{border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font-size:23px;line-height:1;padding:8px 12px}\n.mb-native-delivery-options{display:grid;gap:9px;margin:0;padding:0;border:0}.mb-native-delivery-options legend{margin-bottom:8px;font-weight:800}.mb-native-delivery-options label{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:12px;padding:14px;border:1px solid var(--mb-border);border-radius:10px;cursor:pointer}.mb-native-delivery-options label.selected{border-color:var(--mb-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--mb-accent) 14%,transparent)}.mb-native-delivery-options label>span{display:grid;gap:2px}.mb-native-delivery-options small{color:var(--mb-muted)}.mb-native-delivery-options code{margin-top:4px;color:var(--mb-text);font:12px/1.4 ui-monospace,SFMono-Regular,monospace}.mb-native-delivery-options em{border-radius:999px;background:var(--mb-soft);color:var(--mb-accent-dark);font-size:10px;font-style:normal;font-weight:800;padding:5px 8px;text-transform:uppercase}\n@media(max-width:1100px){.mb-native-line.professional{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-native-line.professional .mb-native-allowed{text-align:left}}\n@media(max-width:620px){.mb-native-grid.two,.mb-native-line.professional{grid-template-columns:1fr}.mb-native-modal-backdrop{padding:0}.mb-native-modal{width:100%;max-height:100vh;border-radius:0;padding:18px}.mb-native-delivery-options label{grid-template-columns:auto 1fr}.mb-native-delivery-options em{grid-column:2}}\n`;\n\nconst NATIVE_BILL_REVIEW_STYLES = `\n.mb-native-review,.mb-native-status{font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-native-review,.mb-native-status{--mb-accent:#238dbd;--mb-accent-dark:#176f98;--mb-text:#203743;--mb-muted:#657982;--mb-border:#dbe6ea;--mb-soft:#f3f8fa;--mb-surface:#fff;color:var(--mb-text);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}.mb-native-review *,.mb-native-status *{box-sizing:border-box}.mb-native-review{display:grid;gap:16px}.mb-native-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:6px 2px}.mb-native-heading h2,.mb-native-section h3,.mb-native-submit h3,.mb-native-status h3{margin:3px 0 2px;line-height:1.2}.mb-native-heading h2{font-size:25px}.mb-native-heading p,.mb-native-section p,.mb-native-submit p,.mb-native-status p{margin:0;color:var(--mb-muted)}.mb-native-eyebrow{color:#59727d;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.mb-native-total{display:flex;align-items:center;gap:18px}.mb-native-total span,.mb-native-section-head>span{border-radius:999px;background:var(--mb-soft);color:#58717c;font-size:11px;font-weight:800;padding:6px 10px;text-transform:capitalize}.mb-native-total strong{font-size:24px}.mb-native-summary{display:grid;grid-template-columns:repeat(4,1fr);margin:0;border:1px solid var(--mb-border);border-radius:12px;background:var(--mb-surface);overflow:hidden}.mb-native-summary div{padding:17px 20px;border-right:1px solid var(--mb-border)}.mb-native-summary div:last-child{border:0}.mb-native-summary dt,.mb-native-allowed span{color:#647982;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.mb-native-summary dd{margin:5px 0 0;font-weight:750}.mb-native-section{padding:20px;border:1px solid var(--mb-border);border-radius:14px;background:var(--mb-surface);box-shadow:0 8px 24px rgba(28,58,72,.04)}.mb-native-section-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:17px}.mb-native-section h3,.mb-native-submit h3,.mb-native-status h3{font-size:19px}.mb-native-grid{display:grid;gap:14px}.mb-native-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.mb-native-field{display:grid;gap:6px;min-width:0;color:var(--mb-text);font-size:12px;font-weight:750}.mb-native-field small{color:var(--mb-muted);font-size:inherit;font-weight:500}.mb-native-field input,.mb-native-attach select,.mb-native-attach input{width:100%;min-height:43px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:10px 12px}.mb-native-field input:focus,.mb-native-attach select:focus,.mb-native-attach input:focus{border-color:var(--mb-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mb-accent) 14%,transparent);outline:0}.mb-native-lines{display:grid;gap:10px}.mb-native-line{display:grid;grid-template-columns:1.1fr 1.1fr 110px 120px 28px;align-items:end;gap:12px;padding:13px;background:var(--mb-soft);border:1px solid #e3edf0;border-radius:10px}.mb-native-allowed{display:grid;gap:5px;padding:0 8px 11px;text-align:right}.mb-native-allowed strong{font-size:16px}.mb-native-remove{border:0;background:transparent;color:#667d86;cursor:pointer;font-size:20px;padding:7px}.mb-native-note{padding:13px 15px;border:1px solid #bdd9e4;border-radius:9px;background:#f2f9fc;color:#526d78}.mb-native-note strong{color:var(--mb-text);margin-right:12px}.mb-native-documents{list-style:none;margin:14px 0;padding:0}.mb-native-documents li{display:grid;grid-template-columns:42px 1fr auto 28px;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--mb-border)}.mb-native-documents li>div{display:grid}.mb-native-documents li span{color:var(--mb-muted);font-size:12px}.mb-native-file{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;background:#eaf5f9;color:var(--mb-accent)!important;font-size:11px!important;font-weight:850}.mb-native-attach{display:grid;grid-template-columns:1fr 230px minmax(220px,1fr) auto;align-items:end;gap:12px;padding:15px;border-radius:10px;background:var(--mb-soft)}.mb-native-attach>div{display:grid;gap:3px}.mb-native-attach span{color:var(--mb-muted);font-size:12px}.mb-native-button{min-height:40px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:9px 14px}.mb-native-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:#fff}.mb-native-button.primary:hover{background:var(--mb-accent-dark)}.mb-native-button.secondary{background:#fff}.mb-native-button.quiet{min-height:auto;background:var(--mb-soft);padding:7px 11px}.mb-native-button:disabled,.mb-native-remove:disabled{cursor:not-allowed;opacity:.5}.mb-native-submit{display:grid;grid-template-columns:1fr auto;align-items:end;gap:18px;padding:22px;border:1px solid #bcd8e2;border-radius:14px;background:linear-gradient(135deg,#f3fafc,#eaf6fa)}.mb-native-submit fieldset{display:flex;gap:6px;margin:0;padding:0;border:0}.mb-native-submit legend{position:absolute;width:1px;height:1px;overflow:hidden}.mb-native-submit fieldset label{display:flex;align-items:center;gap:6px;padding:9px 11px;border:1px solid #c9dce3;border-radius:8px;background:#fff;font-weight:700}.mb-native-actions{display:flex;justify-content:flex-end;gap:10px;grid-column:1/-1}.mb-native-message{grid-column:1/-1;padding:10px 12px;border-radius:8px}.mb-native-message.error{background:#fff0ef;color:#9d3029}.mb-native-message.success{background:#edf9f2;color:#217449}.mb-native-status{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;border:1px solid var(--mb-border);border-radius:12px;background:#fff}.mb-native-status h3{text-transform:capitalize}.mb-native-status dl{display:flex;margin:0}.mb-native-status dl div{min-width:110px;padding:0 18px;border-left:1px solid var(--mb-border)}.mb-native-status dt{color:var(--mb-muted);font-size:11px}.mb-native-status dd{margin:4px 0 0;font-size:17px;font-weight:800}@media(max-width:900px){.mb-native-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-native-summary{grid-template-columns:repeat(2,1fr)}.mb-native-summary div:nth-child(2){border-right:0}.mb-native-summary div:nth-child(-n+2){border-bottom:1px solid var(--mb-border)}.mb-native-line{grid-template-columns:1fr 1fr 90px}.mb-native-allowed{align-self:center}.mb-native-attach{grid-template-columns:1fr 1fr}.mb-native-submit{grid-template-columns:1fr}.mb-native-submit fieldset,.mb-native-actions{grid-column:1}.mb-native-actions{justify-content:start}}@media(max-width:620px){.mb-native-heading,.mb-native-total,.mb-native-status{align-items:start;flex-direction:column}.mb-native-grid.three,.mb-native-summary,.mb-native-line,.mb-native-attach{grid-template-columns:1fr}.mb-native-summary div,.mb-native-summary div:nth-child(2){border-right:0;border-bottom:1px solid var(--mb-border)}.mb-native-line{align-items:stretch}.mb-native-allowed{text-align:left}.mb-native-submit fieldset{display:grid;grid-template-columns:1fr 1fr}.mb-native-status dl{width:100%}.mb-native-status dl div{min-width:0;flex:1;padding:0 10px}.mb-native-status dl div:first-child{padding-left:0;border-left:0}}\n.mb-native-status-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.mb-native-status-copy{min-width:150px}.mb-native-review,.mb-native-status{font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-native-review{padding:clamp(16px,2vw,24px)}\n.mb-native-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.mb-native-payer-picker{position:relative;max-width:760px}\n.mb-native-payer-help{display:block;margin-top:7px;color:var(--mb-muted);font-size:12px}\n.mb-native-payer-results{position:absolute;z-index:5;top:calc(100% + 6px);right:0;left:0;max-height:280px;overflow:auto;list-style:none;margin:0;padding:6px;border:1px solid var(--mb-border);border-radius:10px;background:var(--mb-surface);box-shadow:0 16px 40px rgba(28,58,72,.16)}\n.mb-native-payer-results li{margin:0;padding:0}\n.mb-native-payer-results button{display:grid;width:100%;gap:2px;padding:11px 12px;border:0;border-radius:7px;background:transparent;color:var(--mb-text);font:inherit;text-align:left;cursor:pointer}\n.mb-native-payer-results button:hover,.mb-native-payer-results button:focus{background:var(--mb-soft);outline:0}\n.mb-native-payer-results span{color:var(--mb-muted);font-size:12px}\n.mb-native-grid.one{grid-template-columns:minmax(0,1fr)}\n.mb-native-field select{width:100%;min-height:43px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:10px 36px 10px 12px}\n.mb-native-field select:focus{border-color:var(--mb-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--mb-accent) 14%,transparent);outline:0}\n.mb-native-field input:disabled,.mb-native-field select:disabled{cursor:not-allowed;background:#f6f8f9;color:#667982}\n.mb-native-hint{color:var(--mb-muted);font-size:12px;font-weight:500}\n.mb-native-combo{position:relative;min-width:0}\n.mb-native-combo-list{position:absolute;z-index:20;top:calc(100% + 6px);right:0;left:0;max-height:300px;overflow:auto;list-style:none;margin:0;padding:6px;border:1px solid var(--mb-border);border-radius:10px;background:var(--mb-surface);box-shadow:0 18px 42px rgba(28,58,72,.18)}\n.mb-native-combo-list li{margin:0;padding:0}.mb-native-combo-list button{display:grid;width:100%;gap:4px;padding:11px 12px;border:0;border-radius:7px;background:transparent;color:var(--mb-text);font:inherit;text-align:left;cursor:pointer}.mb-native-combo-list button:hover,.mb-native-combo-list button.active{background:var(--mb-soft);outline:0}.mb-native-combo-list button>span{color:var(--mb-muted);font-size:12px;font-weight:500}.mb-native-combo-list .mb-native-combo-title{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--mb-text);font-size:14px}.mb-native-combo-title em{border-radius:999px;background:#e9f6f3;color:#24725f;font-size:10px;font-style:normal;font-weight:800;letter-spacing:.03em;padding:3px 7px;text-transform:uppercase}\n.mb-native-payer-insight{display:grid;gap:5px;margin-top:10px;padding:11px 13px;border:1px solid #c9dfe7;border-radius:9px;background:#f4fafc}.mb-native-payer-insight span{color:#426570;font-size:12px}.mb-native-payer-insight span.warning{color:#8a5c17}\n.mb-native-presets{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:-2px 0 14px}.mb-native-presets button{min-height:36px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:7px 13px}.mb-native-presets button.active{border-color:var(--mb-accent);background:var(--mb-accent);color:#fff}.mb-native-presets span{margin-left:5px;color:var(--mb-muted);font-size:12px}\n.mb-native-modifiers{display:grid;gap:7px}.mb-native-chips{display:flex;flex-wrap:wrap;gap:5px}.mb-native-chips button{border:1px solid #c9dce3;border-radius:999px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-size:11px;font-weight:750;padding:4px 8px}\n.mb-native-blockers{grid-column:1/-1;display:grid;gap:2px;padding:11px 13px;border:1px solid #e8cf9a;border-radius:8px;background:#fff9ea;color:#74531b}.mb-native-blockers span{font-size:12px}\n.mb-native-eams{margin-top:13px!important;font-size:12px}.mb-native-eams a{color:var(--mb-accent);font-weight:750}\n@media(max-width:620px){.mb-native-review{padding:12px}.mb-native-grid.two{grid-template-columns:1fr}}\n`;\n\nconst NATIVE_THEME_OVERRIDE_STYLES = `\n.mb-native-review,.mb-native-status{color:var(--mb-text);font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-native-review{background:var(--mb-soft)}\n.mb-native-heading>div:first-child>p,.mb-native-section>header p,.mb-native-total span,.mb-native-status-copy p,.mb-native-status dt{color:var(--mb-muted)}\n.mb-native-summary,.mb-native-section,.mb-native-status{border-color:var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface);box-shadow:var(--mb-shadow)}\n.mb-native-field input,.mb-native-field select,.mb-native-field textarea,.mb-native-attachment-form input,.mb-native-attachment-form select{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-input);color:var(--mb-text)}\n.mb-native-line,.mb-native-note,.mb-native-file,.mb-native-attachment-form,.mb-native-payer-insight,.mb-native-blockers,.mb-native-message{border-radius:var(--mb-control-radius)}\n.mb-native-line,.mb-native-note,.mb-native-attachment-form,.mb-native-payer-insight{border-color:var(--mb-border);background:var(--mb-soft)}\n.mb-native-file{border-color:var(--mb-border);background:var(--mb-surface)}\n.mb-native-button.primary,.mb-native-presets button.active{border-color:var(--mb-accent);background:var(--mb-accent);color:var(--mb-accent-contrast)}\n.mb-native-button.primary:hover,.mb-native-presets button.active:hover{filter:brightness(.96)}\n.mb-native-button.secondary,.mb-native-presets button,.mb-native-chips button{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-input);color:var(--mb-text)}\n.mb-native-message.error{background:color-mix(in srgb,var(--mb-danger) 10%,white);color:var(--mb-danger)}\n.mb-native-message.success{background:color-mix(in srgb,var(--mb-success) 10%,white);color:var(--mb-success)}\n.mb-native-blockers{border-color:color-mix(in srgb,var(--mb-warning) 35%,white);background:color-mix(in srgb,var(--mb-warning) 8%,white);color:var(--mb-warning)}\n.mb-native-combo-list{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-surface);box-shadow:var(--mb-shadow)}\n`;\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport {\n BillStatusSummary,\n type BillStatusSummaryProps,\n} from \"./native-bill-review\";\n\nconst DEFAULT_API_BASE_URL = \"https://app.mindbill.org\";\nconst DEFAULT_SESSION_ENDPOINT = \"/api/mindbill/status-session\";\nconst DEFAULT_REFRESH_INTERVAL = 60_000;\n\nexport type BillStatusData = {\n billId: string;\n state: string;\n nativeStatus: string;\n submittedAt: string | null;\n agingDays: number | null;\n updatedAt: string | null;\n totalCharge: number;\n totalPaid: number;\n balanceDue: number;\n};\n\nexport type BillStatusSession = {\n token: string;\n expiresAt?: string;\n apiBaseUrl?: string;\n};\n\nexport type BillStatusSessionRequest = {\n billId: string;\n signal: AbortSignal;\n};\n\nexport type BillStatusSessionProvider = (\n request: BillStatusSessionRequest,\n) => Promise<BillStatusSession>;\n\nexport type BillStatusClientOptions = {\n billId: string;\n /** Same-origin route that mints a short-lived, bill-scoped browser session. */\n sessionEndpoint?: string;\n /** Advanced escape hatch for non-HTTP session exchange. */\n getSession?: BillStatusSessionProvider;\n apiBaseUrl?: string;\n fetch?: typeof globalThis.fetch;\n};\n\nexport type BillStatusClient = {\n getStatus: (signal?: AbortSignal) => Promise<BillStatusData>;\n clearSession: () => void;\n};\n\nexport type UseBillStatusOptions = BillStatusClientOptions & {\n refreshInterval?: number;\n enabled?: boolean;\n initialData?: BillStatusData | null;\n};\n\nexport type UseBillStatusResult = {\n data: BillStatusData | null;\n error: Error | null;\n isLoading: boolean;\n isRefreshing: boolean;\n refresh: () => Promise<void>;\n};\n\nasync function responseError(\n response: Response,\n fallback: string,\n): Promise<Error> {\n const body: unknown = await response.json().catch(() => null);\n const detail = body && typeof body === \"object\"\n ? (body as { detail?: unknown; error?: unknown }).detail\n ?? (body as { error?: unknown }).error\n : null;\n return new Error(typeof detail === \"string\" ? detail : fallback);\n}\n\nfunction isSessionFresh(session: BillStatusSession | null): boolean {\n if (!session) return false;\n if (!session.expiresAt) return true;\n const expiresAt = new Date(session.expiresAt).getTime();\n return Number.isFinite(expiresAt) && expiresAt > Date.now() + 30_000;\n}\n\nfunction normalizeSession(value: unknown): BillStatusSession {\n if (!value || typeof value !== \"object\") {\n throw new Error(\"The MindBill session endpoint returned an invalid response.\");\n }\n const candidate = value as {\n token?: unknown;\n expiresAt?: unknown;\n apiBaseUrl?: unknown;\n session?: unknown;\n data?: unknown;\n };\n const nested = candidate.session ?? candidate.data;\n const session = nested && typeof nested === \"object\"\n ? nested as typeof candidate\n : candidate;\n if (typeof session.token !== \"string\" || session.token.length < 8) {\n throw new Error(\"The MindBill session endpoint did not return a browser session token.\");\n }\n return {\n token: session.token,\n ...(typeof session.expiresAt === \"string\"\n ? { expiresAt: session.expiresAt }\n : {}),\n ...(typeof session.apiBaseUrl === \"string\"\n ? { apiBaseUrl: session.apiBaseUrl }\n : {}),\n };\n}\n\nfunction normalizeStatus(value: unknown, billId: string): BillStatusData {\n if (!value || typeof value !== \"object\") {\n throw new Error(\"MindBill returned an invalid bill status.\");\n }\n const status = value as Partial<BillStatusData>;\n const amounts = [status.totalCharge, status.totalPaid, status.balanceDue];\n if (\n typeof status.state !== \"string\"\n || amounts.some(\n (amount) => typeof amount !== \"number\" || !Number.isFinite(amount),\n )\n ) {\n throw new Error(\"MindBill returned an invalid bill status.\");\n }\n return {\n billId: typeof status.billId === \"string\" ? status.billId : billId,\n state: status.state,\n nativeStatus: typeof status.nativeStatus === \"string\"\n ? status.nativeStatus\n : status.state,\n submittedAt: typeof status.submittedAt === \"string\"\n ? status.submittedAt\n : null,\n agingDays: typeof status.agingDays === \"number\" ? status.agingDays : null,\n updatedAt: typeof status.updatedAt === \"string\" ? status.updatedAt : null,\n totalCharge: status.totalCharge as number,\n totalPaid: status.totalPaid as number,\n balanceDue: status.balanceDue as number,\n };\n}\n\n/**\n * Browser-safe status client used by useBillStatus. It exchanges the user's\n * authenticated same-origin session for a short-lived MindBill token, then\n * reads status directly from MindBill. It never accepts a Partner API key.\n */\nexport function createBillStatusClient({\n billId,\n sessionEndpoint = DEFAULT_SESSION_ENDPOINT,\n getSession,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n fetch: fetchOverride,\n}: BillStatusClientOptions): BillStatusClient {\n const fetcher = fetchOverride ?? globalThis.fetch;\n if (typeof fetcher !== \"function\") {\n throw new Error(\"A Fetch API implementation is required.\");\n }\n let session: BillStatusSession | null = null;\n let sessionRequest: Promise<BillStatusSession> | null = null;\n\n const mintSession = async (\n signal: AbortSignal,\n force = false,\n ): Promise<BillStatusSession> => {\n if (!force && isSessionFresh(session)) return session as BillStatusSession;\n if (!force && sessionRequest) return sessionRequest;\n\n const pending = getSession\n ? getSession({ billId, signal })\n : fetcher(sessionEndpoint, {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ billId }),\n signal,\n }).then(async (response) => {\n if (!response.ok) {\n throw await responseError(\n response,\n \"MindBill browser session could not be created.\",\n );\n }\n return response.json();\n });\n\n const request = Promise.resolve(pending)\n .then(normalizeSession)\n .then((nextSession) => {\n session = nextSession;\n return nextSession;\n })\n .finally(() => {\n if (sessionRequest === request) sessionRequest = null;\n });\n sessionRequest = request;\n return request;\n };\n\n const requestStatus = async (\n browserSession: BillStatusSession,\n signal: AbortSignal,\n ): Promise<Response> => {\n const baseUrl = (browserSession.apiBaseUrl ?? apiBaseUrl).replace(/\\/$/, \"\");\n return fetcher(`${baseUrl}/partner/v2/browser/status`, {\n headers: { authorization: `Bearer ${browserSession.token}` },\n signal,\n });\n };\n\n return {\n clearSession() {\n session = null;\n sessionRequest = null;\n },\n async getStatus(providedSignal) {\n const controller = providedSignal ? null : new AbortController();\n const signal = providedSignal ?? controller?.signal;\n if (!signal) throw new Error(\"An AbortSignal could not be created.\");\n let browserSession = await mintSession(signal);\n let response = await requestStatus(browserSession, signal);\n if (response.status === 401) {\n session = null;\n browserSession = await mintSession(signal, true);\n response = await requestStatus(browserSession, signal);\n }\n if (!response.ok) {\n throw await responseError(response, \"Bill status could not be loaded.\");\n }\n const body = await response.json() as { data?: unknown };\n return normalizeStatus(body.data, billId);\n },\n };\n}\n\nexport function useBillStatus({\n billId,\n sessionEndpoint = DEFAULT_SESSION_ENDPOINT,\n getSession,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n refreshInterval = DEFAULT_REFRESH_INTERVAL,\n enabled = true,\n initialData = null,\n fetch: fetchOverride,\n}: UseBillStatusOptions): UseBillStatusResult {\n const client = useMemo(() => createBillStatusClient({\n billId,\n sessionEndpoint,\n ...(getSession ? { getSession } : {}),\n apiBaseUrl,\n ...(fetchOverride ? { fetch: fetchOverride } : {}),\n }), [apiBaseUrl, billId, fetchOverride, getSession, sessionEndpoint]);\n const [data, setData] = useState<BillStatusData | null>(initialData);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(enabled && !initialData);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const dataRef = useRef<BillStatusData | null>(initialData);\n const initialDataRef = useRef<BillStatusData | null>(initialData);\n initialDataRef.current = initialData;\n const activeControllerRef = useRef<AbortController | null>(null);\n const requestSequence = useRef(0);\n\n useEffect(() => {\n const seed = initialDataRef.current;\n dataRef.current = seed;\n setData(seed);\n setError(null);\n setIsLoading(enabled && !seed);\n activeControllerRef.current?.abort();\n return () => activeControllerRef.current?.abort();\n }, [client, enabled]);\n\n const load = useCallback(async () => {\n if (!enabled || !billId) return;\n const sequence = ++requestSequence.current;\n activeControllerRef.current?.abort();\n const controller = new AbortController();\n activeControllerRef.current = controller;\n if (dataRef.current) setIsRefreshing(true);\n else setIsLoading(true);\n setError(null);\n\n try {\n const nextData = await client.getStatus(controller.signal);\n if (!controller.signal.aborted && sequence === requestSequence.current) {\n dataRef.current = nextData;\n setData(nextData);\n }\n } catch (cause) {\n if (controller.signal.aborted) return;\n if (sequence === requestSequence.current) {\n setError(\n cause instanceof Error\n ? cause\n : new Error(\"Bill status could not be loaded.\"),\n );\n }\n } finally {\n if (activeControllerRef.current === controller) {\n activeControllerRef.current = null;\n }\n if (!controller.signal.aborted && sequence === requestSequence.current) {\n setIsLoading(false);\n setIsRefreshing(false);\n }\n }\n }, [billId, client, enabled]);\n\n useEffect(() => {\n if (enabled) void load();\n }, [enabled, load]);\n\n useEffect(() => {\n if (!enabled || refreshInterval <= 0) return;\n const timer = window.setInterval(() => void load(), refreshInterval);\n const onFocus = () => void load();\n const onVisibility = () => {\n if (document.visibilityState === \"visible\") void load();\n };\n window.addEventListener(\"focus\", onFocus);\n document.addEventListener(\"visibilitychange\", onVisibility);\n return () => {\n window.clearInterval(timer);\n window.removeEventListener(\"focus\", onFocus);\n document.removeEventListener(\"visibilitychange\", onVisibility);\n };\n }, [enabled, load, refreshInterval]);\n\n return { data, error, isLoading, isRefreshing, refresh: load };\n}\n\nexport type ConnectedBillStatusProps = UseBillStatusOptions & {\n actions?: BillStatusSummaryProps[\"actions\"];\n appearance?: BillStatusSummaryProps[\"appearance\"];\n className?: string;\n style?: BillStatusSummaryProps[\"style\"];\n loadingFallback?: ReactNode;\n errorFallback?: (error: Error, retry: () => Promise<void>) => ReactNode;\n};\n\nexport function ConnectedBillStatus({\n actions,\n appearance,\n className,\n style,\n loadingFallback,\n errorFallback,\n ...options\n}: ConnectedBillStatusProps): ReactElement | null {\n const status = useBillStatus(options);\n if (status.isLoading && !status.data) {\n return <>{loadingFallback ?? <div role=\"status\">Loading bill status…</div>}</>;\n }\n if (status.error && !status.data) {\n return <>{errorFallback?.(status.error, status.refresh) ?? (\n <div role=\"alert\">\n {status.error.message}{\" \"}\n <button type=\"button\" onClick={() => void status.refresh()}>Retry</button>\n </div>\n )}</>;\n }\n if (!status.data) return null;\n return <BillStatusSummary\n status={status.data.state}\n submittedAt={status.data.submittedAt}\n agingDays={status.data.agingDays}\n updatedAt={status.data.updatedAt}\n totalCharge={status.data.totalCharge}\n totalPaid={status.data.totalPaid}\n balanceDue={status.data.balanceDue}\n {...(actions ? { actions } : {})}\n {...(appearance ? { appearance } : {})}\n {...(className ? { className } : {})}\n {...(style ? { style } : {})}\n />;\n}\n","\"use client\";\n\nimport type { MindBillReactAppearance } from \"./appearance\";\nimport { mindBillAppearanceStyle } from \"./appearance\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport {\n BillReviewForm,\n BillStatusSummary,\n type BillReviewAttachment,\n type BillReviewDocumentType,\n type BillReviewFeatures,\n type BillReviewSaveInput,\n type BillSubmissionInput,\n type BillSubmissionRoute,\n} from \"./native-bill-review\";\nimport {\n DEFAULT_API_BASE_URL,\n DEFAULT_SESSION_ENDPOINT,\n createBillLifecycleClient,\n type BillEorDocument,\n type BillLifecycleClient,\n type BillLifecycleClientOptions,\n type BillLifecycleData,\n type BillLifecycleActionId,\n type CloseBillInput,\n type PostBillPaymentInput,\n type SubmitSecondReviewInput,\n} from \"@mindbill/browser\";\nexport { createBillLifecycleClient } from \"@mindbill/browser\";\nexport type {\n BillEorDocument,\n BillLifecycleAction,\n BillLifecycleActionId,\n BillLifecycleClient,\n BillLifecycleClientOptions,\n BillLifecycleData,\n BillLifecycleSession,\n BillLifecycleSessionProvider,\n BillLifecycleSessionRequest,\n CloseBillInput,\n PostBillPaymentInput,\n SubmitSecondReviewInput,\n} from \"@mindbill/browser\";\n\nconst DEFAULT_REFRESH_INTERVAL = 60_000;\n\nexport type UseBillLifecycleOptions = BillLifecycleClientOptions & {\n refreshInterval?: number;\n enabled?: boolean;\n initialData?: BillLifecycleData | null;\n onBillIdChange?: (\n billId: string,\n previousBillId: string,\n ) => void | Promise<void>;\n};\n\nexport type UseBillLifecycleResult = {\n billId: string;\n data: BillLifecycleData | null;\n error: Error | null;\n isLoading: boolean;\n isRefreshing: boolean;\n isMutating: boolean;\n refresh: () => Promise<void>;\n searchClaimsAdministrators: BillLifecycleClient[\"searchClaimsAdministrators\"];\n getDeliveryOptions: BillLifecycleClient[\"getDeliveryOptions\"];\n saveReview: BillLifecycleClient[\"saveReview\"];\n submitBill: BillLifecycleClient[\"submitBill\"];\n addAttachment: BillLifecycleClient[\"addAttachment\"];\n removeAttachment: BillLifecycleClient[\"removeAttachment\"];\n openAttachment: (attachment: BillReviewAttachment) => Promise<void>;\n openEor: (document: BillEorDocument) => Promise<void>;\n closeBill: BillLifecycleClient[\"closeBill\"];\n postPayment: BillLifecycleClient[\"postPayment\"];\n submitSecondReview: BillLifecycleClient[\"submitSecondReview\"];\n startCorrection: () => Promise<BillLifecycleData>;\n};\n\nfunction openPdf(blob: Blob, filename: string): void {\n const url = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.target = \"_blank\";\n link.rel = \"noopener noreferrer\";\n link.download = filename;\n link.click();\n window.setTimeout(() => URL.revokeObjectURL(url), 60_000);\n}\n\nexport function useBillLifecycle({\n billId: providedBillId,\n sessionEndpoint = DEFAULT_SESSION_ENDPOINT,\n getSession,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n refreshInterval = DEFAULT_REFRESH_INTERVAL,\n enabled = true,\n initialData = null,\n onBillIdChange,\n fetch: fetchOverride,\n}: UseBillLifecycleOptions): UseBillLifecycleResult {\n const [billId, setBillId] = useState(providedBillId);\n const [data, setData] = useState<BillLifecycleData | null>(initialData);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(enabled && !initialData);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [isMutating, setIsMutating] = useState(false);\n const mounted = useRef(true);\n\n useEffect(() => {\n setBillId(providedBillId);\n setData(initialData);\n setError(null);\n }, [initialData, providedBillId]);\n\n const client = useMemo(() => createBillLifecycleClient({\n billId,\n sessionEndpoint,\n getSession,\n apiBaseUrl,\n fetch: fetchOverride,\n }), [apiBaseUrl, billId, fetchOverride, getSession, sessionEndpoint]);\n\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n client.clearSession();\n };\n }, [client]);\n\n const refresh = useCallback(async () => {\n if (!enabled) return;\n setIsRefreshing(true);\n try {\n const next = await client.getLifecycle();\n if (!mounted.current) return;\n setData(next);\n setError(null);\n } catch (cause) {\n if (!mounted.current) return;\n setError(cause instanceof Error ? cause : new Error(\"Bill could not be loaded.\"));\n } finally {\n if (mounted.current) {\n setIsLoading(false);\n setIsRefreshing(false);\n }\n }\n }, [client, enabled]);\n\n useEffect(() => {\n if (!enabled) return;\n void refresh();\n const interval = refreshInterval > 0\n ? window.setInterval(() => void refresh(), refreshInterval)\n : null;\n const onFocus = () => void refresh();\n window.addEventListener(\"focus\", onFocus);\n return () => {\n if (interval) window.clearInterval(interval);\n window.removeEventListener(\"focus\", onFocus);\n };\n }, [enabled, refresh, refreshInterval]);\n\n const mutate = useCallback(async <T extends BillLifecycleData,>(\n task: () => Promise<T>,\n ): Promise<T> => {\n setIsMutating(true);\n setError(null);\n try {\n const next = await task();\n if (mounted.current) setData(next);\n return next;\n } catch (cause) {\n const nextError = cause instanceof Error\n ? cause\n : new Error(\"The billing service could not complete this request.\");\n if (mounted.current) setError(nextError);\n throw nextError;\n } finally {\n if (mounted.current) setIsMutating(false);\n }\n }, []);\n\n const saveReview = useCallback(\n (input: BillReviewSaveInput) => mutate(() => client.saveReview(input)),\n [client, mutate],\n );\n const searchClaimsAdministrators = useCallback(\n (query: string, claimNumber?: string) =>\n client.searchClaimsAdministrators(query, claimNumber),\n [client],\n );\n const getDeliveryOptions = useCallback(\n () => client.getDeliveryOptions(),\n [client],\n );\n const submitBill = useCallback(\n (input: BillReviewSaveInput, submission: BillSubmissionInput) =>\n mutate(() => client.submitBill(input, submission)),\n [client, mutate],\n );\n const addAttachment = useCallback(\n (file: File, type: BillReviewDocumentType, description?: string) =>\n mutate(() => client.addAttachment(file, type, description)),\n [client, mutate],\n );\n const removeAttachment = useCallback(\n (attachmentId: string) => mutate(() => client.removeAttachment(attachmentId)),\n [client, mutate],\n );\n const closeBill = useCallback(\n (input: CloseBillInput) => mutate(() => client.closeBill(input)),\n [client, mutate],\n );\n const postPayment = useCallback(\n (input: PostBillPaymentInput) => mutate(() => client.postPayment(input)),\n [client, mutate],\n );\n const submitSecondReview = useCallback(\n (input: SubmitSecondReviewInput) =>\n mutate(() => client.submitSecondReview(input)),\n [client, mutate],\n );\n const startCorrection = useCallback(async () => {\n setIsMutating(true);\n setError(null);\n try {\n const result = await client.startCorrection();\n const previousBillId = billId;\n await onBillIdChange?.(result.replacementBillId, previousBillId);\n setBillId(result.replacementBillId);\n setData(result.data);\n return result.data;\n } catch (cause) {\n const nextError = cause instanceof Error\n ? cause\n : new Error(\"Correction draft could not be created.\");\n setError(nextError);\n throw nextError;\n } finally {\n setIsMutating(false);\n }\n }, [billId, client, onBillIdChange]);\n const openAttachment = useCallback(async (attachment: BillReviewAttachment) => {\n openPdf(await client.getAttachment(attachment.id), attachment.filename);\n }, [client]);\n const openEor = useCallback(async (document: BillEorDocument) => {\n openPdf(await client.getEor(document.id), document.filename);\n }, [client]);\n\n return {\n billId,\n data,\n error,\n isLoading,\n isRefreshing,\n isMutating,\n refresh,\n searchClaimsAdministrators,\n getDeliveryOptions,\n saveReview,\n submitBill,\n addAttachment,\n removeAttachment,\n openAttachment,\n openEor,\n closeBill,\n postPayment,\n submitSecondReview,\n startCorrection,\n };\n}\n\nexport type ConnectedBillLifecycleProps = UseBillLifecycleOptions & {\n appearance?: MindBillReactAppearance;\n features?: BillReviewFeatures;\n className?: string;\n style?: CSSProperties;\n loadingFallback?: ReactNode;\n errorFallback?: (error: Error, retry: () => Promise<void>) => ReactNode;\n onChanged?: (data: BillLifecycleData) => void;\n};\n\ntype Panel = \"\" | \"correction\" | \"second_review\" | \"payment\" | \"close\";\n\nfunction dateInputValue(): string {\n const now = new Date();\n const offset = now.getTimezoneOffset() * 60_000;\n return new Date(now.getTime() - offset).toISOString().slice(0, 10);\n}\n\nfunction SupportingDocumentControl({\n disabled,\n onAdd,\n}: {\n disabled: boolean;\n onAdd: (\n file: File,\n type: BillReviewDocumentType,\n description?: string,\n ) => Promise<unknown>;\n}): ReactElement {\n const [file, setFile] = useState<File | null>(null);\n const [type, setType] = useState<BillReviewDocumentType>(\"appeal\");\n const [busy, setBusy] = useState(false);\n return <div className=\"mb-lifecycle-upload\">\n <select aria-label=\"Supporting document type\" value={type} disabled={disabled || busy} onChange={(event) => setType(event.target.value as BillReviewDocumentType)}>\n <option value=\"appeal\">Second Review support</option>\n <option value=\"final_report\">Final report</option>\n <option value=\"proof_of_service\">Proof of service</option>\n <option value=\"letter_of_attestation\">Letter of attestation</option>\n <option value=\"form_122\">DWC Form 122</option>\n <option value=\"w9\">W-9</option>\n <option value=\"other\">Other supporting document</option>\n </select>\n <input aria-label=\"Choose supporting PDF\" type=\"file\" accept=\"application/pdf,.pdf\" disabled={disabled || busy} onChange={(event) => setFile(event.target.files?.[0] ?? null)} />\n <button type=\"button\" className=\"mb-lifecycle-button secondary\" disabled={disabled || busy || !file} onClick={() => {\n if (!file) return;\n setBusy(true);\n void onAdd(file, type)\n .then(() => setFile(null))\n .catch(() => undefined)\n .finally(() => setBusy(false));\n }}>{busy ? \"Attaching…\" : \"Attach PDF\"}</button>\n </div>;\n}\n\nexport function ConnectedBillLifecycle({\n appearance,\n features,\n className,\n style,\n loadingFallback,\n errorFallback,\n onChanged,\n ...options\n}: ConnectedBillLifecycleProps): ReactElement {\n const lifecycle = useBillLifecycle(options);\n const { data } = lifecycle;\n const [panel, setPanel] = useState<Panel>(\"\");\n const [notice, setNotice] = useState(\"\");\n const [closeReason, setCloseReason] = useState(\"\");\n const [payment, setPayment] = useState<PostBillPaymentInput>({\n amount: 0,\n method: \"check\",\n checkNumber: \"\",\n depositDate: dateInputValue(),\n note: \"\",\n });\n const [review, setReview] = useState<SubmitSecondReviewInput>({\n reason: \"\",\n payerClaimControlNumber: \"\",\n disputedAmount: undefined,\n attachmentIds: [],\n route: \"ebill\",\n });\n const lastData = useRef<BillLifecycleData | null>(null);\n\n useEffect(() => {\n if (!data || data === lastData.current) return;\n lastData.current = data;\n onChanged?.(data);\n setPayment((current) => ({\n ...current,\n amount: current.amount > 0 ? current.amount : data.bill.balanceDue,\n }));\n setReview((current) => ({\n ...current,\n disputedAmount: current.disputedAmount ?? data.bill.balanceDue,\n attachmentIds: current.attachmentIds.length\n ? current.attachmentIds.filter((id) => data.bill.attachments.some((doc) => doc.id === id))\n : data.bill.attachments.map((doc) => doc.id),\n }));\n }, [data, onChanged]);\n\n if (lifecycle.isLoading && !data) {\n return <>{loadingFallback ?? <div className=\"mb-lifecycle-loading\">Loading billing…</div>}</>;\n }\n if (!data) {\n const error = lifecycle.error ?? new Error(\"Bill could not be loaded.\");\n return <>{errorFallback?.(error, lifecycle.refresh) ?? <div className=\"mb-lifecycle-error\" role=\"alert\"><strong>Billing is unavailable.</strong><span>{error.message}</span><button type=\"button\" onClick={() => void lifecycle.refresh()}>Try again</button></div>}</>;\n }\n\n const actionMap = new Map(data.lifecycle.actions.map((action) => [action.id, action]));\n const has = (id: BillLifecycleActionId) => actionMap.get(id);\n const selectPanel = (next: Panel) => {\n setNotice(\"\");\n setPanel((current) => current === next ? \"\" : next);\n };\n const complete = async (message: string, task: () => Promise<unknown>) => {\n setNotice(\"\");\n try {\n await task();\n setPanel(\"\");\n setNotice(message);\n } catch {\n // The hook keeps the actionable error visible in this component.\n }\n };\n const actionButtons = data.lifecycle.actions\n .filter((action) => action.id !== \"edit_and_submit\" && action.id !== \"view_eor\" && action.id !== \"independent_bill_review\")\n .map((action) => ({\n ...action,\n onClick: () => {\n if (!action.enabled) return;\n if (action.id === \"correct_and_resubmit\") selectPanel(\"correction\");\n if (action.id === \"second_review\") selectPanel(\"second_review\");\n if (action.id === \"post_payment\") selectPanel(\"payment\");\n if (action.id === \"close\") selectPanel(\"close\");\n },\n disabled: !action.enabled || lifecycle.isMutating,\n }));\n\n const canEditAndSubmit = Boolean(has(\"edit_and_submit\"));\n\n return <section className={[\"mb-connected-lifecycle\", className].filter(Boolean).join(\" \")} style={mindBillAppearanceStyle(appearance, style)}>\n <style>{CONNECTED_LIFECYCLE_STYLES}</style>\n <style>{CONNECTED_THEME_OVERRIDE_STYLES}</style>\n {canEditAndSubmit\n ? <BillReviewForm\n data={data}\n {...(appearance ? { appearance } : {})}\n {...(features ? { features } : {})}\n disabled={lifecycle.isMutating}\n onSearchClaimsAdministrators={lifecycle.searchClaimsAdministrators}\n onGetDeliveryOptions={lifecycle.getDeliveryOptions}\n onSave={lifecycle.saveReview}\n onSubmit={async (input, submission) => { await complete(\"Bill submitted.\", () => lifecycle.submitBill(input, submission)); }}\n onAddAttachment={async (file, type, description) => { await lifecycle.addAttachment(file, type, description); }}\n onRemoveAttachment={async (attachmentId) => { await lifecycle.removeAttachment(attachmentId); }}\n onOpenAttachment={(attachment) => void lifecycle.openAttachment(attachment).catch(() => undefined)}\n />\n : <BillStatusSummary\n status={data.lifecycle.state}\n submittedAt={data.lifecycle.submittedAt ?? null}\n agingDays={data.lifecycle.agingDays ?? null}\n updatedAt={data.lifecycle.updatedAt ?? null}\n totalCharge={data.bill.totalCharge}\n totalPaid={data.bill.totalPaid}\n balanceDue={data.bill.balanceDue}\n actions={actionButtons}\n {...(appearance ? { appearance } : {})}\n />}\n\n <div className=\"mb-lifecycle-toolbar\">\n <div>\n <strong>Bill #{data.bill.billNumber}</strong>\n <span>{lifecycle.isRefreshing ? \"Refreshing…\" : \"Status and actions update automatically.\"}</span>\n </div>\n <div className=\"mb-lifecycle-toolbar-actions\">\n {has(\"view_eor\") ? <button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => document.getElementById(`mb-eors-${data.bill.id}`)?.scrollIntoView({ behavior: \"smooth\", block: \"center\" })}>View EOR</button> : null}\n {canEditAndSubmit && has(\"close\") ? <button type=\"button\" className=\"mb-lifecycle-button quiet\" onClick={() => selectPanel(\"close\")}>Close bill</button> : null}\n </div>\n </div>\n\n {data.eors.length ? <section className=\"mb-lifecycle-card\" id={`mb-eors-${data.bill.id}`}>\n <header><div><h3>Explanation of Review</h3><p>Review the payer response and original PDF before posting payment.</p></div><span>{data.eors.length} PDF{data.eors.length === 1 ? \"\" : \"s\"}</span></header>\n <ul className=\"mb-lifecycle-documents\">{data.eors.map((eor) => <li key={eor.id}><div><strong>{eor.filename}</strong><span>{eor.description || `Added ${new Date(eor.addedAt).toLocaleDateString()}`}</span></div><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => void lifecycle.openEor(eor).catch(() => undefined)}>View PDF</button></li>)}</ul>\n </section> : null}\n\n {has(\"independent_bill_review\") ? <div className=\"mb-lifecycle-info\"><strong>{has(\"independent_bill_review\")?.label}</strong><span>{has(\"independent_bill_review\")?.reason}</span></div> : null}\n\n {panel === \"correction\" ? <section className=\"mb-lifecycle-panel\">\n <div><h3>Correct and resubmit</h3><p>A new correction draft will preserve this rejected bill in history. Review the copied values before submitting.</p></div>\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button primary\" disabled={lifecycle.isMutating} onClick={() => void complete(\"Correction draft created.\", lifecycle.startCorrection)}>{lifecycle.isMutating ? \"Creating…\" : \"Create correction draft\"}</button></div>\n </section> : null}\n\n {panel === \"second_review\" ? <section className=\"mb-lifecycle-panel wide\">\n <div><h3>Submit Second Review</h3><p>State why payment is disputed, confirm the payer control number, and choose the supporting documents to send.</p></div>\n <div className=\"mb-lifecycle-fields two\">\n <label><span>Reason for Second Review</span><textarea required value={review.reason} onChange={(event) => setReview((current) => ({ ...current, reason: event.target.value }))} /></label>\n <div className=\"mb-lifecycle-fields\">\n <label><span>Payer claim control number</span><input required value={review.payerClaimControlNumber} onChange={(event) => setReview((current) => ({ ...current, payerClaimControlNumber: event.target.value }))} /></label>\n <label><span>Disputed amount</span><input type=\"number\" min=\"0.01\" step=\"0.01\" value={review.disputedAmount ?? \"\"} onChange={(event) => setReview((current) => ({ ...current, disputedAmount: event.target.value ? Number(event.target.value) : undefined }))} /></label>\n <label><span>Send via</span><select value={review.route} onChange={(event) => setReview((current) => ({ ...current, route: event.target.value as BillSubmissionRoute }))}><option value=\"ebill\">E-bill</option><option value=\"fax\">Fax</option><option value=\"mail\">Mail</option><option value=\"email\">Email</option></select></label>\n </div>\n </div>\n <fieldset className=\"mb-lifecycle-packet\"><legend>Supporting packet</legend>{data.bill.attachments.map((attachment) => <label key={attachment.id}><input type=\"checkbox\" checked={review.attachmentIds.includes(attachment.id)} onChange={(event) => setReview((current) => ({ ...current, attachmentIds: event.target.checked ? [...current.attachmentIds, attachment.id] : current.attachmentIds.filter((id) => id !== attachment.id) }))} /><span><strong>{attachment.filename}</strong><small>{attachment.description || attachment.documentType}</small></span><button type=\"button\" onClick={() => void lifecycle.openAttachment(attachment).catch(() => undefined)}>View</button><button type=\"button\" aria-label={`Remove ${attachment.filename}`} onClick={() => void lifecycle.removeAttachment(attachment.id).catch(() => undefined)}>×</button></label>)}</fieldset>\n <SupportingDocumentControl disabled={lifecycle.isMutating} onAdd={async (file, type, description) => {\n const next = await lifecycle.addAttachment(file, type, description);\n setReview((current) => ({\n ...current,\n attachmentIds: Array.from(new Set([\n ...current.attachmentIds,\n ...next.bill.attachments.map((attachment) => attachment.id),\n ])),\n }));\n }} />\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button primary\" disabled={lifecycle.isMutating || !review.reason.trim() || !review.payerClaimControlNumber.trim()} onClick={() => void complete(\"Second Review submitted.\", () => lifecycle.submitSecondReview(review))}>{lifecycle.isMutating ? \"Submitting…\" : \"Submit Second Review\"}</button></div>\n </section> : null}\n\n {panel === \"payment\" ? <section className=\"mb-lifecycle-panel\">\n <div><h3>Post payment</h3><p>Record funds shown on the EOR. The balance updates and the bill closes automatically when configured.</p></div>\n <div className=\"mb-lifecycle-fields two\">\n <label><span>Amount</span><input type=\"number\" min=\"0.01\" max={data.bill.balanceDue} step=\"0.01\" required value={payment.amount || \"\"} onChange={(event) => setPayment((current) => ({ ...current, amount: Number(event.target.value) }))} /></label>\n <label><span>Method</span><select value={payment.method} onChange={(event) => setPayment((current) => ({ ...current, method: event.target.value as \"check\" | \"eft\" }))}><option value=\"check\">Check</option><option value=\"eft\">EFT</option></select></label>\n <label><span>{payment.method === \"check\" ? \"Check number\" : \"EFT reference\"}</span><input value={payment.checkNumber} onChange={(event) => setPayment((current) => ({ ...current, checkNumber: event.target.value }))} /></label>\n <label><span>Deposit date</span><input type=\"date\" required value={payment.depositDate} onChange={(event) => setPayment((current) => ({ ...current, depositDate: event.target.value }))} /></label>\n <label className=\"full\"><span>Note <small>Optional</small></span><input value={payment.note} onChange={(event) => setPayment((current) => ({ ...current, note: event.target.value }))} /></label>\n </div>\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button primary\" disabled={lifecycle.isMutating || payment.amount <= 0 || payment.amount > data.bill.balanceDue || !payment.depositDate} onClick={() => void complete(\"Payment posted.\", () => lifecycle.postPayment(payment))}>{lifecycle.isMutating ? \"Posting…\" : \"Post payment\"}</button></div>\n </section> : null}\n\n {panel === \"close\" ? <section className=\"mb-lifecycle-panel danger\">\n <div><h3>Close bill</h3><p>Closing removes this bill from active A/R. Any remaining balance will be written off and the original lifecycle is preserved.</p></div>\n <label><span>Reason for closing</span><textarea required value={closeReason} onChange={(event) => setCloseReason(event.target.value)} /></label>\n <div className=\"mb-lifecycle-panel-actions\"><button type=\"button\" className=\"mb-lifecycle-button secondary\" onClick={() => setPanel(\"\")}>Cancel</button><button type=\"button\" className=\"mb-lifecycle-button danger\" disabled={lifecycle.isMutating || !closeReason.trim()} onClick={() => void complete(\"Bill closed.\", () => lifecycle.closeBill({ reason: closeReason }))}>{lifecycle.isMutating ? \"Closing…\" : \"Close bill\"}</button></div>\n </section> : null}\n\n {notice ? <div className=\"mb-lifecycle-message success\" role=\"status\">{notice}</div> : null}\n {lifecycle.error ? <div className=\"mb-lifecycle-message error\" role=\"alert\">{lifecycle.error.message}</div> : null}\n </section>;\n}\n\nconst CONNECTED_LIFECYCLE_STYLES = `\n.mb-connected-lifecycle{--mb-accent:#238dbd;--mb-text:#203743;--mb-muted:#657982;--mb-border:#dbe6ea;--mb-soft:#f3f8fa;--mb-surface:#fff;display:grid;gap:14px;color:var(--mb-text);font:14px/1.45 var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}.mb-connected-lifecycle *{box-sizing:border-box}.mb-lifecycle-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--mb-border);border-radius:10px;background:var(--mb-surface)}.mb-lifecycle-toolbar>div:first-child{display:grid;gap:2px}.mb-lifecycle-toolbar span,.mb-lifecycle-card p,.mb-lifecycle-panel p,.mb-lifecycle-info span{color:var(--mb-muted)}.mb-lifecycle-toolbar-actions,.mb-lifecycle-panel-actions{display:flex;justify-content:flex-end;gap:8px}.mb-lifecycle-button{min-height:38px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);cursor:pointer;font:inherit;font-weight:750;padding:8px 13px}.mb-lifecycle-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:#fff}.mb-lifecycle-button.quiet{border-color:transparent;background:transparent;color:var(--mb-muted)}.mb-lifecycle-button.danger{border-color:#b63d35;background:#b63d35;color:#fff}.mb-lifecycle-button:disabled{cursor:not-allowed;opacity:.5}.mb-lifecycle-card,.mb-lifecycle-panel{padding:18px;border:1px solid var(--mb-border);border-radius:12px;background:var(--mb-surface)}.mb-lifecycle-card header{display:flex;align-items:start;justify-content:space-between;gap:16px}.mb-lifecycle-card h3,.mb-lifecycle-panel h3{margin:0;font-size:18px}.mb-lifecycle-card p,.mb-lifecycle-panel p{margin:3px 0 0}.mb-lifecycle-card header>span{padding:5px 8px;border-radius:999px;background:var(--mb-soft);color:var(--mb-muted);font-size:11px;font-weight:800;text-transform:uppercase}.mb-lifecycle-documents{list-style:none;margin:12px 0 0;padding:0}.mb-lifecycle-documents li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 0;border-top:1px solid var(--mb-border)}.mb-lifecycle-documents li>div{display:grid}.mb-lifecycle-documents span{color:var(--mb-muted);font-size:12px}.mb-lifecycle-info{display:grid;gap:3px;padding:13px 15px;border:1px solid #cddfe5;border-radius:10px;background:var(--mb-soft)}.mb-lifecycle-panel{display:grid;gap:16px;box-shadow:0 14px 38px rgba(30,56,68,.08)}.mb-lifecycle-panel.danger{border-color:#ecc5c2}.mb-lifecycle-panel label{display:grid;gap:6px;font-size:12px;font-weight:750}.mb-lifecycle-panel label small{color:var(--mb-muted);font-size:inherit;font-weight:500}.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea,.mb-lifecycle-upload input,.mb-lifecycle-upload select{width:100%;min-height:42px;border:1px solid var(--mb-border);border-radius:8px;background:#fff;color:var(--mb-text);font:inherit;padding:9px 11px}.mb-lifecycle-panel textarea{min-height:100px;resize:vertical}.mb-lifecycle-fields{display:grid;gap:12px}.mb-lifecycle-fields.two{grid-template-columns:repeat(2,minmax(0,1fr))}.mb-lifecycle-fields .full{grid-column:1/-1}.mb-lifecycle-packet{display:grid;gap:0;margin:0;padding:0;border:0}.mb-lifecycle-packet legend{margin-bottom:7px;font-size:12px;font-weight:800}.mb-lifecycle-packet>label{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:10px 2px;border-top:1px solid var(--mb-border)}.mb-lifecycle-packet>label>input{width:16px;min-height:16px}.mb-lifecycle-packet>label>span{display:grid}.mb-lifecycle-packet button{border:0;background:transparent;color:var(--mb-accent);cursor:pointer;font:inherit}.mb-lifecycle-upload{display:grid;grid-template-columns:220px 1fr auto;align-items:end;gap:10px;padding:12px;border-radius:9px;background:var(--mb-soft)}.mb-lifecycle-message,.mb-lifecycle-error,.mb-lifecycle-loading{padding:12px 14px;border-radius:9px}.mb-lifecycle-message.success{background:#edf9f2;color:#217449}.mb-lifecycle-message.error,.mb-lifecycle-error{background:#fff0ef;color:#9d3029}.mb-lifecycle-error{display:flex;align-items:center;gap:12px}.mb-lifecycle-error span{flex:1}.mb-lifecycle-error button{border:1px solid currentColor;border-radius:7px;background:transparent;color:inherit;padding:7px 10px}@media(max-width:760px){.mb-lifecycle-toolbar,.mb-lifecycle-card header{align-items:stretch;flex-direction:column}.mb-lifecycle-toolbar-actions,.mb-lifecycle-panel-actions{justify-content:start}.mb-lifecycle-fields.two,.mb-lifecycle-upload{grid-template-columns:1fr}.mb-lifecycle-documents li{align-items:start}.mb-lifecycle-packet>label{grid-template-columns:auto 1fr auto}}\n`;\n\nconst CONNECTED_THEME_OVERRIDE_STYLES = `\n.mb-connected-lifecycle{color:var(--mb-text);font-family:var(--mb-font,Inter,ui-sans-serif,system-ui,sans-serif)}\n.mb-lifecycle-toolbar,.mb-lifecycle-card,.mb-lifecycle-panel{border-color:var(--mb-border);border-radius:var(--mb-radius);background:var(--mb-surface)}\n.mb-lifecycle-panel{box-shadow:var(--mb-shadow)}\n.mb-lifecycle-toolbar span,.mb-lifecycle-card p,.mb-lifecycle-panel p,.mb-lifecycle-info span{color:var(--mb-muted)}\n.mb-lifecycle-button{border-color:var(--mb-border);border-radius:var(--mb-control-radius);background:var(--mb-input);color:var(--mb-text)}\n.mb-lifecycle-button.primary{border-color:var(--mb-accent);background:var(--mb-accent);color:var(--mb-accent-contrast)}\n.mb-lifecycle-button.primary:hover{filter:brightness(.96)}\n.mb-lifecycle-button.danger{border-color:var(--mb-danger);background:var(--mb-danger);color:white}\n.mb-lifecycle-card header>span,.mb-lifecycle-info,.mb-lifecycle-upload{background:var(--mb-soft)}\n.mb-lifecycle-info,.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea,.mb-lifecycle-upload input,.mb-lifecycle-upload select{border-color:var(--mb-border);border-radius:var(--mb-control-radius)}\n.mb-lifecycle-panel input,.mb-lifecycle-panel select,.mb-lifecycle-panel textarea,.mb-lifecycle-upload input,.mb-lifecycle-upload select{background:var(--mb-input);color:var(--mb-text)}\n.mb-lifecycle-message,.mb-lifecycle-error,.mb-lifecycle-loading,.mb-lifecycle-upload{border-radius:var(--mb-control-radius)}\n.mb-lifecycle-message.success{background:color-mix(in srgb,var(--mb-success) 10%,white);color:var(--mb-success)}\n.mb-lifecycle-message.error,.mb-lifecycle-error{background:color-mix(in srgb,var(--mb-danger) 10%,white);color:var(--mb-danger)}\n`;\n"],"mappings":"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","names":["useEffect","useRef","value","useEffect","useMemo","useRef","useState","Fragment","jsx","jsxs","useMemo","useState","useRef","useEffect","useCallback","useEffect","useMemo","useRef","useState","DEFAULT_API_BASE_URL","DEFAULT_SESSION_ENDPOINT","createBillLifecycleClient","Fragment","jsx","jsxs","DEFAULT_REFRESH_INTERVAL","useState","useRef","useEffect","useMemo","useCallback","document","useRef","useEffect"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindbill/react",
3
- "version": "0.14.0",
3
+ "version": "0.14.2",
4
4
  "description": "Native React components and hosted workflows for MindBill billing",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "react": ">=18"
21
21
  },
22
22
  "dependencies": {
23
- "@mindbill/browser": "^0.2.0",
23
+ "@mindbill/browser": "^0.2.1",
24
24
  "@mindbill/embed": "^0.6.0"
25
25
  },
26
26
  "keywords": [
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
45
- "provenance": true
45
+ "provenance": false
46
46
  },
47
47
  "sideEffects": true,
48
48
  "scripts": {