@everfur/sdk 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +1 -1
  3. package/dist/{Chat-s2vcPbw3.d.cts → Chat-Cb3Y8VwS.d.cts} +3 -3
  4. package/dist/{Chat-Cv9EYMYA.d.ts → Chat-ClhB_8sp.d.ts} +3 -3
  5. package/dist/{DepthViews-CVxUHOJ-.d.ts → DepthViews-BSkuUGBB.d.ts} +1 -1
  6. package/dist/{DepthViews-DNRY0Ugm.d.ts → DepthViews-CSCS-tZg.d.ts} +1 -1
  7. package/dist/{DepthViews-Cz7mSW7p.d.cts → DepthViews-CW1z8pnl.d.cts} +1 -1
  8. package/dist/{DepthViews-DvNixbxg.d.cts → DepthViews-DDiPxyzg.d.cts} +1 -1
  9. package/dist/animations/index.cjs +1 -1
  10. package/dist/animations/index.d.cts +3 -3
  11. package/dist/animations/index.d.ts +3 -3
  12. package/dist/animations/index.js +1 -1
  13. package/dist/{attachments-y3EcOX_w.d.cts → attachments-BD70jZZL.d.cts} +2 -2
  14. package/dist/{attachments-y_aO4hlk.d.ts → attachments-CC7aHpwZ.d.ts} +5 -5
  15. package/dist/{attachments-BaslXMdS.d.ts → attachments-DAUy3vPR.d.ts} +2 -2
  16. package/dist/{attachments-DbFwz4iq.d.cts → attachments-DaOaIBNf.d.cts} +5 -5
  17. package/dist/{bookingCopy-B3UMITD-.d.ts → bookingCopy-CUW9Gdzc.d.ts} +2 -2
  18. package/dist/{bookingCopy-4i1R7klo.d.cts → bookingCopy-oEjqkiNA.d.cts} +2 -2
  19. package/dist/{branding-BYEqU855.d.ts → branding-aGleD_ki.d.ts} +99 -6
  20. package/dist/{branding-BwEu68C8.d.cts → branding-ctD0B2Th.d.cts} +99 -6
  21. package/dist/{casesRepository-B6Z0XBIb.d.cts → casesRepository-Bzs7aw4t.d.cts} +1 -1
  22. package/dist/{casesRepository-SI0zp5YH.d.ts → casesRepository-CywqL6mj.d.ts} +1 -1
  23. package/dist/chat/index.cjs +20 -18
  24. package/dist/chat/index.d.cts +9 -9
  25. package/dist/chat/index.d.ts +9 -9
  26. package/dist/chat/index.js +20 -18
  27. package/dist/client/index.cjs +7 -7
  28. package/dist/client/index.d.cts +10 -10
  29. package/dist/client/index.d.ts +10 -10
  30. package/dist/client/index.js +7 -7
  31. package/dist/{config-Cvo47voG.d.ts → config-BysLVhku.d.ts} +1 -1
  32. package/dist/{config-v5k6NsK_.d.cts → config-EZzEyS-c.d.cts} +1 -1
  33. package/dist/consent/index.cjs +1 -1
  34. package/dist/consent/index.d.cts +5 -5
  35. package/dist/consent/index.d.ts +5 -5
  36. package/dist/consent/index.js +1 -1
  37. package/dist/{context-BZOtJbBO.d.cts → context-DUwYArkM.d.cts} +7 -7
  38. package/dist/{context-cZ7NZ0sG.d.ts → context-DpfgbnOU.d.ts} +7 -7
  39. package/dist/{copy-ChJupm1p.d.cts → copy-DK4r9oGz.d.cts} +2 -2
  40. package/dist/{copy-CZBUHbyS.d.ts → copy-LxZGnFXJ.d.ts} +2 -2
  41. package/dist/core/index.cjs +2 -2
  42. package/dist/core/index.d.cts +15 -15
  43. package/dist/core/index.d.ts +15 -15
  44. package/dist/core/index.js +2 -2
  45. package/dist/{depth-CRyU7-pf.d.cts → depth-DAd77kRe.d.cts} +2 -2
  46. package/dist/{depth-vNpwOkZ8.d.ts → depth-Mk7quUNa.d.ts} +2 -2
  47. package/dist/{entitlementRepository-CUdxbQrP.d.ts → entitlementRepository-CrD0O7VR.d.ts} +3 -3
  48. package/dist/{entitlementRepository-Bv8nSYRd.d.cts → entitlementRepository-Dra_4FU_.d.cts} +3 -3
  49. package/dist/{identity-BHaMJ3KK.d.cts → identity-75whJXyP.d.cts} +1 -1
  50. package/dist/{identity-B8GkH53J.d.ts → identity-BiyMDMrR.d.ts} +1 -1
  51. package/dist/index.cjs +24 -22
  52. package/dist/index.d.cts +16 -16
  53. package/dist/index.d.ts +16 -16
  54. package/dist/index.js +24 -22
  55. package/dist/notifications/index.d.cts +2 -2
  56. package/dist/notifications/index.d.ts +2 -2
  57. package/dist/{pets-BI7Ji8hi.d.cts → pets-DoXxTw4x.d.cts} +1 -1
  58. package/dist/{pets-Dnn-DK1T.d.ts → pets-W2BuLYko.d.ts} +1 -1
  59. package/dist/{petsRepository-B2lO1sKS.d.ts → petsRepository-ByMzq1Z9.d.ts} +1 -1
  60. package/dist/{petsRepository-BP9nhM1R.d.cts → petsRepository-yyoo0k2I.d.cts} +1 -1
  61. package/dist/photo/index.cjs +1 -1
  62. package/dist/photo/index.js +1 -1
  63. package/dist/{ports-C40S2V14.d.cts → ports-BeVJYP0_.d.cts} +4 -4
  64. package/dist/{ports-BUXF0Rp3.d.ts → ports-zYl8S_lI.d.ts} +4 -4
  65. package/dist/records/depth/index.cjs +6 -6
  66. package/dist/records/depth/index.d.cts +7 -7
  67. package/dist/records/depth/index.d.ts +7 -7
  68. package/dist/records/depth/index.js +6 -6
  69. package/dist/records/index.cjs +30 -30
  70. package/dist/records/index.d.cts +9 -9
  71. package/dist/records/index.d.ts +9 -9
  72. package/dist/records/index.js +30 -30
  73. package/dist/{requestFunnel-BrOijMcw.d.ts → requestFunnel-BPeBZdKp.d.ts} +2 -2
  74. package/dist/{requestFunnel-BxNVGyGm.d.cts → requestFunnel-DHeSzCT6.d.cts} +2 -2
  75. package/dist/{runtimeTypes-CvI1ZH8j.d.ts → runtimeTypes-Cc207nbn.d.ts} +5 -5
  76. package/dist/{runtimeTypes-DOO3f-W-.d.cts → runtimeTypes-DgMizQKz.d.cts} +5 -5
  77. package/dist/server/events/index.cjs +1 -1
  78. package/dist/server/events/index.d.cts +2 -2
  79. package/dist/server/events/index.d.ts +2 -2
  80. package/dist/server/events/index.js +1 -1
  81. package/dist/server/index.cjs +1 -1
  82. package/dist/server/index.d.cts +3 -3
  83. package/dist/server/index.d.ts +3 -3
  84. package/dist/server/index.js +1 -1
  85. package/dist/televet/booking/index.cjs +15 -13
  86. package/dist/televet/booking/index.d.cts +6 -6
  87. package/dist/televet/booking/index.d.ts +6 -6
  88. package/dist/televet/booking/index.js +15 -13
  89. package/dist/televet/call/index.cjs +1 -1
  90. package/dist/televet/call/index.js +1 -1
  91. package/dist/televet/index.cjs +1 -1
  92. package/dist/televet/index.js +1 -1
  93. package/dist/testing/index.d.cts +1 -1
  94. package/dist/testing/index.d.ts +1 -1
  95. package/dist/testing/rn/index.cjs +1 -1
  96. package/dist/testing/rn/index.d.cts +9 -9
  97. package/dist/testing/rn/index.d.ts +9 -9
  98. package/dist/testing/rn/index.js +1 -1
  99. package/dist/testing/web/index.d.cts +9 -9
  100. package/dist/testing/web/index.d.ts +9 -9
  101. package/dist/{timelineRows-CEx2TzYB.d.ts → timelineRows-D22vGN9t.d.ts} +1 -1
  102. package/dist/{timelineRows-Dffceql_.d.cts → timelineRows-DUQIWSjc.d.cts} +1 -1
  103. package/dist/{tokens-Tzo1KBND.d.cts → tokens-RAKZj7M8.d.cts} +47 -4
  104. package/dist/{tokens-Tzo1KBND.d.ts → tokens-RAKZj7M8.d.ts} +47 -4
  105. package/dist/{typeStyle-C3IG9Sft.d.ts → typeStyle-DVj8iCC1.d.ts} +11 -3
  106. package/dist/{typeStyle-CZ3Tj60N.d.cts → typeStyle-Nt7w0rhE.d.cts} +11 -3
  107. package/dist/{useRecordsDepth-DuPUJFDQ.d.ts → useRecordsDepth-C0Qfoghi.d.ts} +1 -1
  108. package/dist/{useRecordsDepth-D6a6-_u_.d.cts → useRecordsDepth-Mbysp548.d.cts} +1 -1
  109. package/dist/video/index.cjs +1 -1
  110. package/dist/video/index.js +1 -1
  111. package/dist/{view-UFwCG1Pn.d.cts → view-CskIgOFV.d.cts} +2 -2
  112. package/dist/{view-BSmN5RWf.d.ts → view-DqKXtxEZ.d.ts} +2 -2
  113. package/dist/web/consent/index.cjs +1 -1
  114. package/dist/web/consent/index.d.cts +5 -5
  115. package/dist/web/consent/index.d.ts +5 -5
  116. package/dist/web/consent/index.js +1 -1
  117. package/dist/web/index.cjs +29 -28
  118. package/dist/web/index.d.cts +26 -20
  119. package/dist/web/index.d.ts +26 -20
  120. package/dist/web/index.js +29 -28
  121. package/dist/web/notifications/index.d.cts +3 -3
  122. package/dist/web/notifications/index.d.ts +3 -3
  123. package/dist/web/records/depth/index.cjs +9 -8
  124. package/dist/web/records/depth/index.d.cts +7 -7
  125. package/dist/web/records/depth/index.d.ts +7 -7
  126. package/dist/web/records/depth/index.js +9 -8
  127. package/dist/web/records/index.cjs +51 -49
  128. package/dist/web/records/index.d.cts +9 -9
  129. package/dist/web/records/index.d.ts +9 -9
  130. package/dist/web/records/index.js +52 -50
  131. package/dist/web/televet/booking/index.cjs +21 -19
  132. package/dist/web/televet/booking/index.d.cts +11 -11
  133. package/dist/web/televet/booking/index.d.ts +11 -11
  134. package/dist/web/televet/booking/index.js +21 -19
  135. package/dist/web/televet/call/index.cjs +1 -1
  136. package/dist/web/televet/call/index.js +1 -1
  137. package/dist/web/televet/index.cjs +1 -1
  138. package/dist/web/televet/index.js +1 -1
  139. package/package.json +1 -1
@@ -113,7 +113,7 @@ return Object.freeze({drug:drug,strength:nonBlank(parsed.data.strength),form:non
113
113
  return Object.freeze({consultId:s.consult_id,findingsText:s.findings_text??"",nextStepsText:s.next_steps_text??"",medications:/* @__PURE__ */Object.freeze((s.medications??[]).map(toMedication).filter(m=>m!==null)),productRefs:/* @__PURE__ */Object.freeze([...s.product_refs??[]]),actionItems:/* @__PURE__ */Object.freeze((s.action_items??[]).filter(item=>item.trim().length>0)),approvedAt:s.approved_at,approvedByName:nonBlank(s.approved_by_display_name),credentialsText:nonBlank(s.credentials_text)})}function isVetMessagesDark(error){return error.httpStatus===404}function isVetThreadVetFirst(error){return error.httpStatus===409}function invalid(wireMessage){return err(makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage}))}function unusable(wireMessage){return err(makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:wireMessage}))}function clampLimit(limit){return limit===void 0||!Number.isFinite(limit)?VET_MESSAGE_PAGE_DEFAULT:Math.min(VET_MESSAGE_PAGE_MAX,Math.max(1,Math.trunc(limit)))}function isStamp(value){return value.trim().length>0&&!Number.isNaN(Date.parse(value))}function safeTrack(telemetry,event,props){try{telemetry?.track(event,props)}catch{}}function createTelevetMessagesMethods(funnel,telemetry){return{async listVetThreads(signal){let res=await funnel.send("televet.messages.threads",{method:"GET",path:TELEVET_MESSAGE_THREADS_PATH,...signal?{signal:signal}:{}});if(!res.ok)return err(res.error);let parsed=mapVetThreads(res.value);return parsed===null?unusable("the vet thread list was unreadable"):ok(parsed)},async listVetMessages(petRef,page={},signal){let ref=petRef.trim();if(ref.length===0)return invalid("petRef is required");let before=page.before?.trim();if(before!==void 0&&before.length>0&&!isStamp(before))return invalid("before must be an ISO date-time");let res=await funnel.send("televet.messages.thread",{method:"GET",path:televetThreadMessagesCall(ref),query:{...before?{before:before}:{},limit:clampLimit(page.limit)},...signal?{signal:signal}:{}});if(!res.ok)return err(res.error);let parsed=mapVetMessages(res.value);return parsed===null?unusable("the vet thread page was unreadable"):ok(parsed)},async sendVetMessage(petRef,content){let ref=petRef.trim();if(ref.length===0)return invalid("petRef is required");if(content.trim().length===0)return invalid("content must not be blank");if(content.length>VET_MESSAGE_CONTENT_MAX)return invalid(`content must be at most ${VET_MESSAGE_CONTENT_MAX} characters`);let res=await funnel.send("televet.messages.send",{method:"POST",path:televetThreadMessagesCall(ref),body:{content:content}},{idempotent:false,maxAttempts:1});if(!res.ok)return safeTrack(telemetry,"televet.messages.send_failed",{status:res.error.httpStatus??null}),err(res.error);let parsed=mapVetMessage(res.value);return parsed===null?unusable("the sent message was unreadable"):ok(parsed)},async markVetThreadRead(petRef,readAt){let ref=petRef.trim();if(ref.length===0)return invalid("petRef is required");if(!isStamp(readAt))return invalid("readAt must be an ISO date-time");let res=await funnel.send("televet.messages.read",{method:"PUT",path:televetThreadReadCall(ref),body:{read_at:readAt}});return res.ok?ok(void 0):err(res.error)},async visitSummary(consultId,signal){let id=consultId.trim();if(id.length===0)return invalid("consultId is required");let res=await funnel.send("televet.messages.summary",{method:"GET",path:televetVisitSummaryCall(id),...signal?{signal:signal}:{}});if(!res.ok)return err(res.error);let parsed=mapVisitSummary(res.value);return parsed===null?unusable("the visit summary was unreadable"):ok(parsed)}}}var TELEVET_BOOKING_BASE="/widget/v1/televet",TELEVET_STATE_POLICY_PATH=`${TELEVET_BOOKING_BASE}/state-policy`,TELEVET_CLINICIANS_PATH=`${TELEVET_BOOKING_BASE}/vets`,TELEVET_SLOTS_PATH=`${TELEVET_BOOKING_BASE}/slots`,TELEVET_NEXT_SLOT_PATH=`${TELEVET_BOOKING_BASE}/slots/next`,TELEVET_CONSULTS_PATH=`${TELEVET_BOOKING_BASE}/consults`,TELEVET_BOOKING_ENTITLEMENT_PATH=`${TELEVET_BOOKING_BASE}/entitlement`,TELEVET_CANCELLATION_POLICY_PATH=`${TELEVET_BOOKING_BASE}/cancellation-policy`,TELEVET_ATTACHMENT_INITIATE_PATH=`${TELEVET_BOOKING_BASE}/attachments/initiate`,TELEVET_TRIAGE_PATH=`${TELEVET_CONSULTS_PATH}/triage`;function televetHoldCall(slotId){return`${TELEVET_SLOTS_PATH}/${encodeURIComponent(slotId)}/hold`}function televetRescheduleCall(consultId){return`${TELEVET_CONSULTS_PATH}/${encodeURIComponent(consultId)}/reschedule`}function televetConsultCall(consultId){return`${TELEVET_CONSULTS_PATH}/${encodeURIComponent(consultId)}`}function televetJoinCall(consultId){return`${televetConsultCall(consultId)}/join`}function televetCancelCall(consultId){return`${televetConsultCall(consultId)}/cancel`}var TELEVET_CONSULT_PAGE_LIMIT=100;function invalid2(wireMessage){return err(makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage}))}function unusable2(wireMessage){return err(makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:wireMessage}))}function isDark(error){return error.httpStatus===404}function safeTrack2(telemetry,event,props){try{telemetry?.track(event,props)}catch{}}function validateBookingBody(body){if(body.pet_id.trim().length===0)return"pet_id is required";if(body.clinician_id.trim().length===0)return"clinician_id is required";if(body.slot_id.trim().length===0)return"slot_id is required";if(!isWellFormedStateCode(body.state))return"state must be a two-letter US state code";let reason=body.reason_text.trim();return reason.length===0?"reason_text is required":reason.length>REASON_TEXT_MAX?`reason_text must be at most ${REASON_TEXT_MAX} characters`:attestationRefusal(body)}function attestationRefusal(body){let attested=body.state_attested===true,version=body.cancellation_policy_version?.trim()??"";return attested!==version.length>0?"state_attested and cancellation_policy_version must be sent together or omitted together":version.length>CANCELLATION_POLICY_VERSION_MAX?`cancellation_policy_version must be at most ${CANCELLATION_POLICY_VERSION_MAX} characters`:null}function createTelevetBookingController(deps){let funnel=deps.funnel??createRequestFunnel({auth:deps.auth,...deps.errorPolicy?{errorPolicy:deps.errorPolicy}:{}}),telemetry=deps.telemetry;return{...createTelevetMessagesMethods(funnel,telemetry),async statePolicy(state,signal){let code=state.trim();if(!isWellFormedStateCode(code))return invalid2("state must be a two-letter US state code");let res=await funnel.send("televet.booking.state_policy",{method:"GET",path:`${TELEVET_STATE_POLICY_PATH}/${encodeURIComponent(code)}`,...signal?{signal:signal}:{}});if(!res.ok)return err(res.error);let parsed=parseStatePolicy(res.value,code);return parsed===null?unusable2("the state policy response was unreadable"):ok(parsed)},async entitlement(signal){let res=await funnel.send("televet.booking.entitlement",{method:"GET",path:TELEVET_BOOKING_ENTITLEMENT_PATH,...signal?{signal:signal}:{}});return res.ok?ok(parseBookingEntitlement(res.value)):err(res.error)},async cancellationPolicy(signal){let res=await funnel.send("televet.booking.cancellation_policy",{method:"GET",path:TELEVET_CANCELLATION_POLICY_PATH,...signal?{signal:signal}:{}});return res.ok?ok(parseCancellationPolicy(res.value)):ok(null)},async clinicians(state,signal){let code=state.trim();if(!isWellFormedStateCode(code))return invalid2("state must be a two-letter US state code");let res=await funnel.send("televet.booking.clinicians",{method:"GET",path:TELEVET_CLINICIANS_PATH,query:{state:code},...signal?{signal:signal}:{}});return res.ok?ok(parseList(rows(res.value,"vets"),parseClinician)):isDark(res.error)?ok(/* @__PURE__ */Object.freeze([])):err(res.error)},async slots(clinicianId,signal){let id=clinicianId.trim();if(id.length===0)return invalid2("clinicianId is required");let res=await funnel.send("televet.booking.slots",{method:"GET",path:TELEVET_SLOTS_PATH,query:{clinician_id:id},...signal?{signal:signal}:{}});return res.ok?ok(parseList(rows(res.value,"slots"),parseSlot)):isDark(res.error)?ok(/* @__PURE__ */Object.freeze([])):err(res.error)},async nextSlot(signal){let res=await funnel.send("televet.booking.next_slot",{method:"GET",path:TELEVET_NEXT_SLOT_PATH,...signal?{signal:signal}:{}});return res.ok?ok(parseSlot(unwrap(res.value,"slot"))):ok(null)},async holdSlot(slotId){let id=slotId.trim();if(id.length===0)return invalid2("slotId is required");let res=await funnel.send("televet.booking.hold",{method:"POST",path:televetHoldCall(id)},{idempotent:false,maxAttempts:1});if(!res.ok)return safeTrack2(telemetry,"televet.booking.hold_failed",{status:res.error.httpStatus??null}),err(res.error);let parsed=parseSlotHold(res.value);return parsed===null?unusable2("the hold response carried no usable expiry"):ok(parsed)},async releaseHold(slotId){let id=slotId.trim();if(id.length===0)return invalid2("slotId is required");let res=await funnel.send("televet.booking.release_hold",{method:"DELETE",path:televetHoldCall(id)},{idempotent:false,maxAttempts:1});return!res.ok&&res.error.httpStatus!==404?err(res.error):ok(void 0)},async book(body,idempotencyKey){let refusal=validateBookingBody(body);if(refusal!==null)return invalid2(refusal);let key=idempotencyKey.trim();if(key.length===0)return invalid2("idempotencyKey is required");let res=await funnel.send("televet.booking.book",{method:"POST",path:TELEVET_CONSULTS_PATH,body:bookingWireBody(body)},{idempotent:true,idempotencyKey:key,maxAttempts:1});if(!res.ok)return safeTrack2(telemetry,"televet.booking.book_failed",{status:res.error.httpStatus??null}),err(foldTelevetBookingKeyReused(res.error));let parsed=parseConsult(res.value);return parsed===null?unusable2("the booking response was unreadable"):isLiveConsult(parsed)?ok(parsed):(safeTrack2(telemetry,"televet.booking.book_failed",{status:null,consult_status:parsed.status}),err(televetBookingNotLiveError(parsed.status)))},async reschedule(consultId,slotId){let consult=consultId.trim(),slot=slotId.trim();if(consult.length===0)return invalid2("consultId is required");if(slot.length===0)return invalid2("slotId is required");let res=await funnel.send("televet.booking.reschedule",{method:"POST",path:televetRescheduleCall(consult),body:{new_slot_id:slot}},{idempotent:false,maxAttempts:1});if(!res.ok)return safeTrack2(telemetry,"televet.booking.reschedule_failed",{status:res.error.httpStatus??null}),err(res.error);let parsed=parseConsult(res.value);return parsed===null?unusable2("the reschedule response was unreadable"):ok(parsed)},async triage(reasonText,signal){let text2=reasonText.trim();if(text2.length===0)return ok(null);let res=await funnel.send("televet.booking.triage",{method:"POST",path:TELEVET_TRIAGE_PATH,body:{reason_text:text2},...signal?{signal:signal}:{}},{idempotent:false,maxAttempts:1});return res.ok?ok(parseTriageVerdict(res.value)):(safeTrack2(telemetry,"televet.booking.triage_unavailable",{status:res.error.httpStatus??null}),ok(null))},async listConsults(signal){let res=await funnel.send("televet.booking.consults",{method:"GET",path:TELEVET_CONSULTS_PATH,query:{limit:String(TELEVET_CONSULT_PAGE_LIMIT)},...signal?{signal:signal}:{}});return res.ok?ok(parseList(rows(res.value,"consults"),parseConsult)):isDark(res.error)?ok(/* @__PURE__ */Object.freeze([])):err(res.error)},async getConsult(consultId,signal){let id=consultId.trim();if(id.length===0)return invalid2("consultId is required");let res=await funnel.send("televet.booking.consult",{method:"GET",path:televetConsultCall(id),...signal?{signal:signal}:{}});if(!res.ok)return err(res.error);let parsed=parseConsult(res.value);return parsed===null?unusable2("the consult response was unreadable"):ok(parsed)},async joinConsult(consultId){let id=consultId.trim();if(id.length===0)return invalid2("consultId is required");let res=await funnel.send("televet.booking.join",{method:"POST",path:televetJoinCall(id)},{idempotent:false,maxAttempts:1});if(!res.ok)return safeTrack2(telemetry,"televet.booking.join_failed",{status:res.error.httpStatus??null}),err(res.error);let parsed=parseVetCallCredential(res.value);return parsed===null?unusable2("the join response carried no usable room credential"):ok(parsed)},async cancelConsult(consultId,reason){let id=consultId.trim(),text2=reason.trim();if(id.length===0)return invalid2("consultId is required");if(text2.length===0)return invalid2("reason is required");if(text2.length>CANCEL_REASON_MAX)return invalid2(`reason must be at most ${CANCEL_REASON_MAX} characters`);let res=await funnel.send("televet.booking.cancel",{method:"POST",path:televetCancelCall(id),body:{reason:text2}},{idempotent:false,maxAttempts:1});if(!res.ok)return safeTrack2(telemetry,"televet.booking.cancel_failed",{status:res.error.httpStatus??null}),err(res.error);let parsed=parseCancelReceipt(res.value);return parsed===null?unusable2("the cancel response was unreadable"):ok(parsed)},async initiateAttachment(file,signal){let res=await funnel.send("televet.booking.attachment_initiate",{method:"POST",path:TELEVET_ATTACHMENT_INITIATE_PATH,body:{filename:file.filename,content_type:file.contentType,file_size:file.fileSize},...signal?{signal:signal}:{}});if(!res.ok)return err(res.error);let parsed=parseTelevetAttachmentPolicy(res.value);return parsed===null?unusable2("the attachment presign was unreadable"):ok(parsed)}}}function bookingWireBody(body){let version=body.cancellation_policy_version?.trim()??"",whole=body.state_attested===true&&version.length>0;return{pet_id:body.pet_id,clinician_id:body.clinician_id,slot_id:body.slot_id,state:body.state,reason_text:body.reason_text.trim(),species:body.species,media_refs:[...body.media_refs],emergency_acknowledged:body.emergency_acknowledged,share_health_records:body.share_health_records,...whole?{state_attested:true,cancellation_policy_version:version}:{}}}function rows(wire,key){if(Array.isArray(wire))return wire;if(typeof wire=="object"&&wire!==null){let envelope=wire,named=envelope[key]??envelope.items??envelope.data;if(Array.isArray(named))return named}return wire}function unwrap(wire,key){if(typeof wire=="object"&&wire!==null&&!Array.isArray(wire)){let envelope=wire,named=envelope[key]??envelope.data;if(typeof named=="object"&&named!==null)return named}return wire}var EVERFUR_CONTEXT_SYMBOL=/* @__PURE__ */Symbol.for("@everfur/sdk#EverfurContext@v1"),globalContextHost=globalThis,EverfurContext=globalContextHost[EVERFUR_CONTEXT_SYMBOL]??(globalContextHost[EVERFUR_CONTEXT_SYMBOL]=react.createContext(null));EverfurContext.displayName??="EverfurContext";function useEverfurContext(){let ctx=react.useContext(EverfurContext);if(ctx===null)throw new EverfurConfigError("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return ctx}var REQUIRES=/* @__PURE__ */Object.freeze({chat:/* @__PURE__ */Object.freeze(["chat.message.create"]),records:/* @__PURE__ */Object.freeze(["records.upload.create","records.record.read"]),recordsClinic:/* @__PURE__ */Object.freeze(["records.clinic.create"]),video:/* @__PURE__ */Object.freeze(["video.gait.execute"]),photo:/* @__PURE__ */Object.freeze(["photo.checkup.execute"]),animations:/* @__PURE__ */Object.freeze(["animations.state.read"]),televet:/* @__PURE__ */Object.freeze(["televet.visit.create"])});function requires(name){return REQUIRES[name]}function decideCapability(name,decisions,opts){let keys=requires(name),byResource=/* @__PURE__ */new Map;for(let decision of decisions)byResource.set(decision.resource,decision);if(opts?.isPending===true&&keys.some(key=>!byResource.has(key)))return freezeDecision({name:name,enabled:false,isPending:true,limits:{}});let limits=mergeLimits(keys,byResource);return keys.filter(key=>byResource.get(key)?.granted!==true).length===0?freezeDecision({name:name,enabled:true,isPending:false,limits:limits}):freezeDecision({name:name,enabled:false,isPending:false,limits:limits,disabled:disabledFor(keys,byResource)})}function mergeLimits(keys,byResource){let out={};for(let key of keys){let decisionLimits=byResource.get(key)?.limits;if(decisionLimits)for(let[limitKey,limitValue]of Object.entries(decisionLimits)){let existing=out[limitKey];out[limitKey]=existing===void 0?limitValue:Math.min(existing,limitValue)}}return out}function disabledFor(keys,byResource){for(let key of keys){let explicit=byResource.get(key)?.disabled;if(explicit)/* @__PURE__ */
114
114
  return Object.freeze({reason:explicit.reason,level:explicit.level,recoverable:explicit.recoverable})}/* @__PURE__ */
115
115
  return Object.freeze({reason:userFacingError("accessDenied"),level:"user_entitlement",recoverable:false})}function freezeDecision(d){let base={name:d.name,enabled:d.enabled,isPending:d.isPending,limits:/* @__PURE__ */Object.freeze({...d.limits})};return d.disabled!==void 0&&(base.disabled=d.disabled),/* @__PURE__ */Object.freeze(base)}function useCapability(name){let{runtime:runtime}=useEverfurContext(),store=runtime.entitlements,snapshot=react.useSyncExternalStore(store.subscribe,store.getSnapshot,store.getSnapshot);return react.useMemo(()=>decideCapability(name,snapshot.decisions,{isPending:snapshot.isPending}),[name,snapshot])}var RECORDS_EMPTY_COPY=/* @__PURE__ */Object.freeze({idle:/* @__PURE__ */Object.freeze({title:"Find your pet’s clinic",body:"Search for the clinic that holds your pet’s records. We’ll request them on your behalf once you sign the authorization.",action:null}),no_requests:/* @__PURE__ */Object.freeze({title:"No record requests yet",body:"When you request records from a clinic, you’ll be able to track every step here.",action:null}),no_records:/* @__PURE__ */Object.freeze({title:"Nothing to show just yet",body:"Once your pet’s records arrive and our team reviews them, lab trends and visits will appear here.",action:null}),rate_limited:/* @__PURE__ */Object.freeze({title:"Slow down a moment",body:"You’ve made a lot of requests just now. You can try again shortly.",action:"Try again"}),service_unavailable:/* @__PURE__ */Object.freeze({title:"Records search is temporarily down",body:"We’re working on it. Please try again in a few minutes.",action:"Try again"}),error:/* @__PURE__ */Object.freeze({title:"Couldn’t reach Everfur",body:"Check your connection and try again.",action:"Try again"})}),RATE_LIMIT_COOLDOWN_S=60;var TELEVET_RATE_LIMITED_COPY=/* @__PURE__ */Object.freeze({title:RECORDS_EMPTY_COPY.rate_limited.title,body:RECORDS_EMPTY_COPY.rate_limited.body});function isRateLimited(error){return error!=null&&(error.code==="rateLimited"||error.httpStatus===429)}function rateLimitWaitMs(error,nowMs){return retryOverrideMs(error,nowMs)??RATE_LIMIT_COOLDOWN_S*1e3}function useRateLimitWait(error){let rateLimited=isRateLimited(error),[elapsedFor,setElapsedFor]=react.useState(null);return react.useEffect(()=>{if(!rateLimited||error==null)return;let handle=setTimeout(()=>setElapsedFor(error),rateLimitWaitMs(error,Date.now()));return()=>clearTimeout(handle)},[error,rateLimited]),{rateLimited:rateLimited,waiting:rateLimited&&elapsedFor!==error}}var TELEVET_READ_FRESH_MS=3e4;function createTelevetReadCache(deps={}){let now=deps.now??Date.now,entries=/* @__PURE__ */new Map,kept=entry=>entry!==void 0&&entry.settled!==null&&now()<entry.keptUntil?entry.settled:null,join=(key,entry,signal)=>{let promise=entry.promise;entry.waiters+=1;let leave=()=>{entry.waiters-=1,entry.waiters===0&&entry.promise!==null&&(entry.abort.abort(),entries.get(key)===entry&&entries.delete(key))};return signal.aborted?(leave(),promise):(signal.addEventListener("abort",leave,{once:true}),promise.finally(()=>signal.removeEventListener("abort",leave)))},settle=(key,entry,result,freshMs)=>{if(entry.promise=null,entries.get(key)!==entry||entry.abort.signal.aborted){entries.get(key)===entry&&entries.delete(key);return}result.ok&&freshMs>0?(entry.settled=result,entry.keptUntil=now()+freshMs):!result.ok&&isRateLimited(result.error)?(entry.settled=result,entry.keptUntil=now()+rateLimitWaitMs(result.error,now())):entries.delete(key)};/* @__PURE__ */
116
- return Object.freeze({read(key,run,options){let existing=entries.get(key);if(existing?.promise)return join(key,existing,options.signal);let answer=kept(existing);if(answer!==null&&(options.force!==true||!answer.ok&&isRateLimited(answer.error)))return Promise.resolve(answer);let entry={abort:new AbortController,promise:null,settled:null,keptUntil:0,waiters:0};return entries.set(key,entry),entry.promise=run(entry.abort.signal).then(result=>(settle(key,entry,result,options.freshMs),result),cause=>{throw entry.promise=null,entries.get(key)===entry&&entries.delete(key),cause}),join(key,entry,options.signal)},peek(key){return kept(entries.get(key))},invalidate(prefixes){for(let key of[...entries.keys()])prefixes.some(prefix=>key.startsWith(prefix))&&entries.delete(key)}})}var CACHES=/* @__PURE__ */new WeakMap;function televetReadCacheFor(scope){let cache=CACHES.get(scope);return cache===void 0&&(cache=createTelevetReadCache(),CACHES.set(scope,cache)),cache}var TELEVET_SLOT_READS=/* @__PURE__ */Object.freeze(["slots:","next-slot"]),TELEVET_VISIT_READS=/* @__PURE__ */Object.freeze(["consults:","consult:","slots:","next-slot"]);function invalidateTelevetReads(scope,prefixes){CACHES.get(scope)?.invalidate(prefixes)}function useTelevetBookingController(injected){let{runtime:runtime,userRef:userRef,scopeEpoch:scopeEpoch}=useEverfurContext();return react.useMemo(()=>injected||(userRef===null?null:sharedBookingController(runtime,`${userRef}\0${scopeEpoch}`,()=>{let{services:services}=runtime.registry;return createTelevetBookingController({auth:services.authFor(userRef),telemetry:services.telemetry,...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}})})),[runtime,userRef,scopeEpoch,injected])}var SHARED_CONTROLLERS=/* @__PURE__ */new WeakMap;function sharedBookingController(runtime,scope,build){let held=SHARED_CONTROLLERS.get(runtime);if(held!==void 0&&held.scope===scope)return held.controller;let controller=build();return SHARED_CONTROLLERS.set(runtime,{scope:scope,controller:controller}),controller}function useTelevetBookingAvailable(){let{userRef:userRef}=useEverfurContext(),capability=useCapability("televet");return react.useMemo(()=>({available:capability.enabled&&userRef!==null,isPending:capability.isPending}),[capability.enabled,capability.isPending,userRef])}function useTelevetRead(key,enabled,run,scope,freshMs=TELEVET_READ_FRESH_MS,rereadOnMount=false){let[state,setState]=react.useState(()=>{let kept=enabled&&run!==null&&scope!==null&&!rereadOnMount?televetReadCacheFor(scope).peek(key):null;return kept!==null?kept.ok?{key:key,data:kept.value,isPending:false,error:null}:{key:key,data:null,isPending:false,error:kept.error}:{key:key,data:null,isPending:enabled&&run!==null,error:null}}),[nonce,setNonce]=react.useState(0),runRef=react.useRef(run);runRef.current=run;let scopeRef=react.useRef(scope);scopeRef.current=scope;let forceNext=react.useRef(rereadOnMount);react.useEffect(()=>{let current=runRef.current;if(!enabled||current===null){setState({key:key,data:null,isPending:false,error:null});return}let force=forceNext.current;forceNext.current=false;let cache=scopeRef.current===null?null:televetReadCacheFor(scopeRef.current),kept=force||cache===null?null:cache.peek(key);if(kept!==null){setState(kept.ok?{key:key,data:kept.value,isPending:false,error:null}:{key:key,data:null,isPending:false,error:kept.error});return}let controller=new AbortController,live=true;return setState(prev=>prev.key===key?{...prev,isPending:true,error:null}:{key:key,data:null,isPending:true,error:null}),(async()=>{let settled;try{settled=cache===null?await current(controller.signal):await cache.read(key,current,{signal:controller.signal,freshMs:freshMs,force:force})}catch{live&&setState({key:key,data:null,isPending:false,error:null});return}live&&(settled.ok?setState({key:key,data:settled.value,isPending:false,error:null}):setState({key:key,data:null,isPending:false,error:settled.error}))})(),()=>{live=false,controller.abort()}},[key,enabled,nonce]);let refetch=react.useCallback(()=>{forceNext.current=true,setNonce(n=>n+1)},[]),fresh2=state.key===key;return react.useMemo(()=>({enabled:enabled,data:fresh2?state.data:null,isPending:enabled&&(!fresh2||state.isPending),isError:fresh2&&state.error!==null,error:fresh2?state.error:null,refetch:refetch}),[enabled,fresh2,state.data,state.isPending,state.error,refetch])}function useTelevetStatePolicy(state,controller){let code=state?.trim()??"",enabled=controller?.statePolicy!==void 0&&isWellFormedStateCode(code),read=controller?.statePolicy;return useTelevetRead(`state-policy:${code}`,enabled,enabled&&read?signal=>read.call(controller,code,signal):null,controller)}function useTelevetBookingEntitlement(controller){let enabled=controller?.entitlement!==void 0,read=controller?.entitlement;return useTelevetRead("entitlement",enabled,enabled&&read?signal=>read.call(controller,signal):null,controller,0)}function useTelevetCancellationPolicy(controller){let enabled=controller?.cancellationPolicy!==void 0,read=controller?.cancellationPolicy;return useTelevetRead("cancellation-policy",enabled,enabled&&read?signal=>read.call(controller,signal):null,controller)}function useTelevetClinicians(state,controller){let code=state?.trim()??"",enabled=controller?.clinicians!==void 0&&isWellFormedStateCode(code),read=controller?.clinicians;return useTelevetRead(`clinicians:${code}`,enabled,enabled&&read?signal=>read.call(controller,code,signal):null,controller)}function useTelevetSlots(clinicianId,controller){let id=clinicianId?.trim()??"",enabled=controller!==null&&id.length>0;return useTelevetRead(`slots:${id}`,enabled,enabled&&controller?signal=>controller.slots(id,signal):null,controller)}function useTelevetNextSlot(controller){let enabled=controller?.nextSlot!==void 0,read=controller?.nextSlot;return useTelevetRead("next-slot",enabled,enabled&&read?signal=>read.call(controller,signal):null,controller)}function useTelevetWrite(run){let[inFlight,setInFlight]=react.useState(null),live=react.useRef(true),busy=react.useRef(false),runRef=react.useRef(run);runRef.current=run,react.useEffect(()=>(live.current=true,()=>{live.current=false}),[]);let mutate=react.useCallback((...args)=>{let current=runRef.current;if(current===null||busy.current)return;let last=args[args.length-1],hasCallbacks=typeof last=="object"&&last!==null&&("onSuccess"in last||"onError"in last),callbacks=hasCallbacks?last:void 0,callArgs=hasCallbacks?args.slice(0,-1):args;busy.current=true,setInFlight({variables:callArgs[0]??null}),(async()=>{let settled=null;try{settled=await current(...callArgs)}catch{settled=null}busy.current=false,live.current&&setInFlight(null),settled!==null&&(settled.ok?callbacks?.onSuccess?.(settled.value):callbacks?.onError?.(settled.error))})()},[]);return react.useMemo(()=>({isPending:inFlight!==null,variables:inFlight?.variables??null,mutate:mutate}),[inFlight,mutate])}async function invalidatingOnSuccess(controller,reads,write){let result=await write;return result.ok&&invalidateTelevetReads(controller,reads),result}function useTelevetHoldSlot(controller){return useTelevetWrite(controller?slotId=>invalidatingOnSuccess(controller,TELEVET_SLOT_READS,controller.holdSlot(slotId)):null)}function useTelevetBookConsult(controller){return useTelevetWrite(controller?(body,key)=>invalidatingOnSuccess(controller,TELEVET_VISIT_READS,controller.book(body,key)):null)}function useTelevetRescheduleConsult(consultId,controller){return useTelevetWrite(controller&&consultId?slotId=>invalidatingOnSuccess(controller,TELEVET_VISIT_READS,controller.reschedule(consultId,slotId)):null)}function useTelevetConsults(controller,revision=0,options){let enabled=controller?.listConsults!==void 0,read=controller?.listConsults;return useTelevetRead(`consults:${revision}`,enabled,enabled&&read?signal=>read.call(controller,signal):null,controller,TELEVET_READ_FRESH_MS,options?.reread===true)}function televetReadIsDark(read){return read.error!==null&&read.error.httpStatus===404}var TELEVET_JOIN_OPENS_MINUTES_BEFORE=15,TELEVET_JOIN_CLOSES_MINUTES_AFTER=250,JOINABLE=/* @__PURE__ */new Set(["scheduled","in_progress"]);function startsAtMs(consult){let parsed=Date.parse(consult.scheduledAt);return Number.isNaN(parsed)?null:parsed}function televetJoinOpensAtMs(consult){let start=startsAtMs(consult);return start===null?null:start-TELEVET_JOIN_OPENS_MINUTES_BEFORE*6e4}function televetJoinDecision(consult,nowMs){if(!JOINABLE.has(consult.status))return{joinable:false,reason:`status_${consult.status}`};if(!consult.hasRoom)return{joinable:false,reason:"room_not_ready"};let start=startsAtMs(consult);return start===null||nowMs<start-TELEVET_JOIN_OPENS_MINUTES_BEFORE*6e4?{joinable:false,reason:"too_early"}:nowMs>start+TELEVET_JOIN_CLOSES_MINUTES_AFTER*6e4?{joinable:false,reason:"too_late"}:{joinable:true}}function splitTelevetVisits(consults,nowMs){let upcoming=[],past=[];for(let consult of consults){let start=startsAtMs(consult);(JOINABLE.has(consult.status)&&start!==null&&start+TELEVET_JOIN_CLOSES_MINUTES_AFTER*6e4>nowMs?upcoming:past).push(consult)}return upcoming.sort((a,b)=>(startsAtMs(a)??0)-(startsAtMs(b)??0)),past.sort((a,b)=>(startsAtMs(b)??0)-(startsAtMs(a)??0)),/* @__PURE__ */Object.freeze({upcoming:/* @__PURE__ */Object.freeze(upcoming),past:/* @__PURE__ */Object.freeze(past)})}function canManageTelevetVisit(status){return status==="scheduled"}function useTelevetLanding(controller){let consults=useTelevetConsults(controller);return consults.enabled?consults.isPending?"pending":consults.isError||splitTelevetVisits(consults.data??[],Date.now()).upcoming.length>0?"visits":"booking":"booking"}var TELEVET_VISITS_COPY_WEB=/* @__PURE__ */Object.freeze({pageTitle:"Video visits",bookCardTitle:"Book a video visit",bookCardCta:"Find a time",bookAnotherTitle:"Book another visit",upcomingTitle:"Next video visit",bookedPill:"Booked",pastTitle:"Past video visits",visitTitleTemplate:"{pet} with {vet}",minutesTemplate:"{n} minutes",emptyTitle:"No visits yet",emptyBody:"When you book a video visit, it will appear here.",loading:"Loading your visits…",loadErrorTitle:"Could not load your visits",loadErrorBody:"Check your connection and try again.",retry:"Try again",joinCta:"Join the visit",joining:"Joining…",addToCalendarCta:"Add to calendar",calendarAdded:"Added to your calendar",rescheduleCta:"Reschedule",cancelCta:"Cancel",cancelConfirmTitleTemplate:"Cancel {pet}’s visit?",cancelConfirmTitle:"Cancel this visit?",cancellationReasonLabel:"What changed?",cancellationReasonOptional:"Optional",cancelWhyBetterTemplate:"{pet} is better",cancelWhyTime:"The time doesn’t work",cancelWhyRegularVet:"We’ll see our regular vet",cancelWhyOther:"Something else",cancelWhyTimeHint:"Another time might be easier.",cancelMoveInstead:"Move the visit instead",summaryWhen:"When",summaryVet:"Vet",summaryAbout:"About",cancelConfirmCta:"Cancel the visit",cancellingVisit:"Canceling…",cancelDismissCta:"Keep the visit",cancelledTemplate:"{pet}’s visit is canceled. {vet} knows.",cancelledTitle:"Visit cancelled",cancellationFeeRecorded:"A late cancellation fee was recorded for this visit.",cancellationFeeNotRecorded:"No late cancellation fee was recorded for this visit.",loadingCancellationTerms:"Loading cancellation terms…",cancellationTermsUnavailable:"We could not confirm the current cancellation terms. Try again before continuing.",cancelReason:"Cancelled by the pet parent in the app.",cancelTermsFirst:"We could not confirm the cancellation terms. Please try again before cancelling.",cancelFailed:"We could not cancel this visit. Refresh your visits to confirm its status before trying again."});function televetVisitStatusWeb(status){switch(status){case"scheduled":return"Scheduled";case"in_progress":return"In progress";case"awaiting_summary":return"Summary on its way";case"completed":return"Completed";case"cancelled_owner":return"Cancelled by you";case"cancelled_ops":return"Cancelled by Everfur";case"no_show_owner":return"Missed";case"no_show_vet":return"Vet couldn't attend";default:return null}}function televetJoinBlockWeb(reason,opensAtLabel){if(reason==="too_early")return opensAtLabel?`This visit opens at ${opensAtLabel}. You can join from then.`:"This visit has not opened yet.";if(reason==="too_late")return"This visit has ended.";if(reason==="room_not_ready")return"We are still setting up the video room. Try again in a moment.";switch(reason){case"status_cancelled_owner":return"You cancelled this visit.";case"status_cancelled_ops":return"This visit was cancelled. Please book another time.";case"status_no_show_owner":return"This visit was missed.";case"status_no_show_vet":return"The vet could not make this visit. Please book another time.";case"status_awaiting_summary":return"This visit has ended. Your summary is on its way.";case"status_completed":return"This visit has ended.";default:return"This visit cannot be joined right now."}}var HostRenderBoundary=class extends react.Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey}}static getDerivedStateFromError(){return{failed:true}}static getDerivedStateFromProps(props,state){return Object.is(props.resetKey,state.key)?null:{failed:false,key:props.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};function RenderHost({render:render}){return render()}function HostRender({render:render,fallback:fallback,resetKey:resetKey}){return react.createElement(HostRenderBoundary,{fallback:fallback,resetKey:resetKey,children:react.createElement(RenderHost,{render:render})})}var freezeInPlace=Object.freeze;function deepFreeze(value){if(value!==null&&typeof value=="object"&&!Object.isFrozen(value)){freezeInPlace(value);for(let key of Object.keys(value))deepFreeze(value[key])}return value}var TEXT_SCALE_TIER_CAPS=/* @__PURE__ */Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),SPACE={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},RADIUS={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},TYPE_SIZE={nano:8,small:9,micro:10,tiny:11,caption:13,bodyTight:15,body:17,subtitle:20,heading:22,verdict:24},LINE_HEIGHT={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},WEIGHT={regular:"400",medium:"500",bold:"700"},LETTER_SPACING={eyebrow:1,monoWide:.9,headerBrand:-.42,tight:-.35},DEFAULT_MAX_FONT_SCALE=0,SYSTEM_FONT_FAMILY="System",SYSTEM_MONO_FAMILY="monospace",TIERS=["content","heading","control","compact","badge"];function authoredTierSizes(size){let out={};for(let tier of TIERS)out[tier]=size;return out}function baseType(){return{family:SYSTEM_FONT_FAMILY,mono:SYSTEM_MONO_FAMILY,fontUrl:null,families:{regular:SYSTEM_FONT_FAMILY,medium:SYSTEM_FONT_FAMILY,bold:SYSTEM_FONT_FAMILY,mono:SYSTEM_MONO_FAMILY,monoMedium:SYSTEM_MONO_FAMILY,monoBold:SYSTEM_MONO_FAMILY},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:TYPE_SIZE,tierSizes:authoredTierSizes(TYPE_SIZE),lineHeight:LINE_HEIGHT,weight:WEIGHT,letterSpacing:LETTER_SPACING,scale:1,maxScale:DEFAULT_MAX_FONT_SCALE,scaleCaps:TEXT_SCALE_TIER_CAPS}}var NO_SLOTS={},EASING_CURVES=/* @__PURE__ */Object.freeze({standard:/* @__PURE__ */Object.freeze([.2,0,0,1]),emphasized:/* @__PURE__ */Object.freeze([.2,.8,.2,1]),exit:/* @__PURE__ */Object.freeze([.4,0,1,1])});function cssCubicBezier(curve){return`cubic-bezier(${curve.join(", ")})`}var MOTION={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:cssCubicBezier(EASING_CURVES.standard),emphasized:cssCubicBezier(EASING_CURVES.emphasized),exit:cssCubicBezier(EASING_CURVES.exit)},reducedMotion:false},LIGHT_COLOR={brand:"#10462E",brandSoft:"rgba(16,70,46,0.10)",brandSofter:"rgba(16,70,46,0.15)",brandBorder:"rgba(16,70,46,0.18)",borderHairlineGreen:"rgba(16,70,46,0.25)",brandBorderStrong:"rgba(16,70,46,0.55)",brandInk:"#10462E",linkInk:"#10462E",surface:"#FFFFFF",surfaceCream:"#FFFFFF",surfaceSubtle:"#F1F5F2",background:"#FFFFFF",borderRingCream:"#E4E4E4",chatGround:"#FFFFFF",composerFill:"#FFFFFF",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#000000",secondary:"#0E462E",muted:"#6B6B6B",placeholder:"rgba(61,61,61,0.75)",onBrand:"#FFFFFF",metaCool:"#3D3D3D",timestamp:"rgba(61,61,61,0.75)"},primary:"#10462E",onPrimary:"#FFFFFF",accent:"#10462E",onAccent:"#FFFFFF",accentEdge:"#07C168",success:"#07C168",danger:"#C03410",onDanger:"#FFFFFF",errorRed:"#C03410",warningStrong:"#A45610",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.12)",badgeBgCaution:"rgba(217,130,29,0.14)",badgeBgCritical:"rgba(192,52,16,0.06)",badgeBgNeutral:"rgba(107,107,107,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",bubbleVet:"#FFC3BC",onBubbleVet:"#000000",skeleton:"#E9F1E9",scanButtonPink:"#FFC3BC",highlight:"#FFC3BC",onHighlight:"#000000",mark:"#07C168",controlEdge:"rgba(16,70,46,0.18)",structureEdge:"rgba(16,70,46,0.25)",primaryEdge:"#10462E",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)"},EVERFUR_LIGHT=deepFreeze({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:LIGHT_COLOR,space:SPACE,radius:RADIUS,type:baseType(),motion:MOTION,slots:NO_SLOTS}),DARK_COLOR={brand:"#6BD39A",brandSoft:"rgba(107,211,154,0.12)",brandSofter:"rgba(107,211,154,0.18)",brandBorder:"rgba(107,211,154,0.22)",borderHairlineGreen:"rgba(107,211,154,0.28)",brandBorderStrong:"rgba(107,211,154,0.55)",brandInk:"#6BD39A",linkInk:"#6BD39A",surface:"#1C1F23",surfaceCream:"#23272C",surfaceSubtle:"#23272C",background:"#15171A",borderRingCream:"#3A3F45",chatGround:"#1C1F23",composerFill:"#23272C",composerBorder:"rgba(107,211,154,0.75)",shadow:"#000000",text:{primary:"#F5F3F0",secondary:"#A9E4C4",muted:"#9A9A9A",placeholder:"rgba(255,255,255,0.55)",onBrand:"#0E1F17",metaCool:"#C9C9C9",timestamp:"rgba(245,243,240,0.7)"},primary:"#6BD39A",onPrimary:"#0E1F17",accent:"#6BD39A",onAccent:"#0E1F17",accentEdge:"#34D888",success:"#07C168",danger:"#F87171",onDanger:"#0E1F17",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",bubbleVet:"#FFC3BC",onBubbleVet:"#000000",skeleton:"#23272C",scanButtonPink:"#FFC3BC",highlight:"#605051",onHighlight:"#F5F3F0",mark:"#07C168",controlEdge:"rgba(107,211,154,0.22)",structureEdge:"rgba(107,211,154,0.28)",primaryEdge:"#6BD39A",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)"};deepFreeze({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:DARK_COLOR,space:SPACE,radius:RADIUS,type:baseType(),motion:MOTION,slots:NO_SLOTS});var EVERFUR_THEME_CONTEXT_SYMBOL=/* @__PURE__ */Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),globalThemeHost=globalThis,EverfurThemeContext=globalThemeHost[EVERFUR_THEME_CONTEXT_SYMBOL]??(globalThemeHost[EVERFUR_THEME_CONTEXT_SYMBOL]=react.createContext(EVERFUR_LIGHT));EverfurThemeContext.displayName??="EverfurThemeContext";function useEverfurTheme(){return react.useContext(EverfurThemeContext)}var FACE_WEIGHT=/* @__PURE__ */Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function tierScale(theme,tier){let{scale:scale,scaleCaps:scaleCaps}=theme.type,cap=scaleCaps[tier];return cap>0?Math.min(scale,cap):scale}function tierPx(theme,tier,points){return Math.round(points*tierScale(theme,tier)*10)/10}var SYSTEM_UI_STACK='system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',RN_SYSTEM_FAMILY="System";function cssFontFamily(family){let named=family.trim();return named.length===0||named===RN_SYSTEM_FAMILY?SYSTEM_UI_STACK:`${quote(named)}, ${SYSTEM_UI_STACK}`}function cssMonoFamily(mono){let named=mono.trim();return named.length===0||named==="monospace"?"ui-monospace, Menlo, Consolas, monospace":`${quote(named)}, ui-monospace, Menlo, Consolas, monospace`}function quote(family){return`"${family.replace(/[\\"]/g,"\\$&")}"`}function faceCss(theme,weight){let type=theme.type,family=type.families[weight];return{fontFamily:weight==="mono"||weight==="monoMedium"||weight==="monoBold"?cssMonoFamily(family):cssFontFamily(family),fontWeight:type.namedFaces[weight]?type.weight.regular:type.weight[FACE_WEIGHT[weight]]}}var SURFACE_ROOT_RESET=/* @__PURE__ */Object.freeze({textAlign:"start"});var MIN_OFFSTATE_HEIGHT=48;function selectView(decision){return decision.isPending?"pending":decision.enabled?"enabled":"disabled"}function CapabilityGate(props){let{capability:capability,children:children,renderDisabled:renderDisabled,renderPending:renderPending,style:style,className:className}=props,decision=useCapability(capability),view=react.useMemo(()=>selectView(decision),[decision]);switch(view){case"enabled":return children;case"pending":return renderPending?/* @__PURE__ */jsxRuntime.jsx(HostRender,{render:renderPending,fallback:/* @__PURE__ */jsxRuntime.jsx(PendingSkeleton,{capability:capability,style:style,className:className})}):/* @__PURE__ */jsxRuntime.jsx(PendingSkeleton,{capability:capability,style:style,className:className});case"disabled":return renderDisabled?/* @__PURE__ */jsxRuntime.jsx(HostRender,{render:()=>renderDisabled(decision),fallback:/* @__PURE__ */jsxRuntime.jsx(OffState,{decision:decision,style:style,className:className}),resetKey:decision}):/* @__PURE__ */jsxRuntime.jsx(OffState,{decision:decision,style:style,className:className});default:return assertNever(view)}}function PendingSkeleton({capability:capability,style:style,className:className}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles(theme),[theme]);/* @__PURE__ */
116
+ return Object.freeze({read(key,run,options){let existing=entries.get(key);if(existing?.promise)return join(key,existing,options.signal);let answer=kept(existing);if(answer!==null&&(options.force!==true||!answer.ok&&isRateLimited(answer.error)))return Promise.resolve(answer);let entry={abort:new AbortController,promise:null,settled:null,keptUntil:0,waiters:0};return entries.set(key,entry),entry.promise=run(entry.abort.signal).then(result=>(settle(key,entry,result,options.freshMs),result),cause=>{throw entry.promise=null,entries.get(key)===entry&&entries.delete(key),cause}),join(key,entry,options.signal)},peek(key){return kept(entries.get(key))},invalidate(prefixes){for(let key of[...entries.keys()])prefixes.some(prefix=>key.startsWith(prefix))&&entries.delete(key)}})}var CACHES=/* @__PURE__ */new WeakMap;function televetReadCacheFor(scope){let cache=CACHES.get(scope);return cache===void 0&&(cache=createTelevetReadCache(),CACHES.set(scope,cache)),cache}var TELEVET_SLOT_READS=/* @__PURE__ */Object.freeze(["slots:","next-slot"]),TELEVET_VISIT_READS=/* @__PURE__ */Object.freeze(["consults:","consult:","slots:","next-slot"]);function invalidateTelevetReads(scope,prefixes){CACHES.get(scope)?.invalidate(prefixes)}function useTelevetBookingController(injected){let{runtime:runtime,userRef:userRef,scopeEpoch:scopeEpoch}=useEverfurContext();return react.useMemo(()=>injected||(userRef===null?null:sharedBookingController(runtime,`${userRef}\0${scopeEpoch}`,()=>{let{services:services}=runtime.registry;return createTelevetBookingController({auth:services.authFor(userRef),telemetry:services.telemetry,...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}})})),[runtime,userRef,scopeEpoch,injected])}var SHARED_CONTROLLERS=/* @__PURE__ */new WeakMap;function sharedBookingController(runtime,scope,build){let held=SHARED_CONTROLLERS.get(runtime);if(held!==void 0&&held.scope===scope)return held.controller;let controller=build();return SHARED_CONTROLLERS.set(runtime,{scope:scope,controller:controller}),controller}function useTelevetBookingAvailable(){let{userRef:userRef}=useEverfurContext(),capability=useCapability("televet");return react.useMemo(()=>({available:capability.enabled&&userRef!==null,isPending:capability.isPending}),[capability.enabled,capability.isPending,userRef])}function useTelevetRead(key,enabled,run,scope,freshMs=TELEVET_READ_FRESH_MS,rereadOnMount=false){let[state,setState]=react.useState(()=>{let kept=enabled&&run!==null&&scope!==null&&!rereadOnMount?televetReadCacheFor(scope).peek(key):null;return kept!==null?kept.ok?{key:key,data:kept.value,isPending:false,error:null}:{key:key,data:null,isPending:false,error:kept.error}:{key:key,data:null,isPending:enabled&&run!==null,error:null}}),[nonce,setNonce]=react.useState(0),runRef=react.useRef(run);runRef.current=run;let scopeRef=react.useRef(scope);scopeRef.current=scope;let forceNext=react.useRef(rereadOnMount);react.useEffect(()=>{let current=runRef.current;if(!enabled||current===null){setState({key:key,data:null,isPending:false,error:null});return}let force=forceNext.current;forceNext.current=false;let cache=scopeRef.current===null?null:televetReadCacheFor(scopeRef.current),kept=force||cache===null?null:cache.peek(key);if(kept!==null){setState(kept.ok?{key:key,data:kept.value,isPending:false,error:null}:{key:key,data:null,isPending:false,error:kept.error});return}let controller=new AbortController,live=true;return setState(prev=>prev.key===key?{...prev,isPending:true,error:null}:{key:key,data:null,isPending:true,error:null}),(async()=>{let settled;try{settled=cache===null?await current(controller.signal):await cache.read(key,current,{signal:controller.signal,freshMs:freshMs,force:force})}catch{live&&setState({key:key,data:null,isPending:false,error:null});return}live&&(settled.ok?setState({key:key,data:settled.value,isPending:false,error:null}):setState({key:key,data:null,isPending:false,error:settled.error}))})(),()=>{live=false,controller.abort()}},[key,enabled,nonce]);let refetch=react.useCallback(()=>{forceNext.current=true,setNonce(n=>n+1)},[]),fresh2=state.key===key;return react.useMemo(()=>({enabled:enabled,data:fresh2?state.data:null,isPending:enabled&&(!fresh2||state.isPending),isError:fresh2&&state.error!==null,error:fresh2?state.error:null,refetch:refetch}),[enabled,fresh2,state.data,state.isPending,state.error,refetch])}function useTelevetStatePolicy(state,controller){let code=state?.trim()??"",enabled=controller?.statePolicy!==void 0&&isWellFormedStateCode(code),read=controller?.statePolicy;return useTelevetRead(`state-policy:${code}`,enabled,enabled&&read?signal=>read.call(controller,code,signal):null,controller)}function useTelevetBookingEntitlement(controller){let enabled=controller?.entitlement!==void 0,read=controller?.entitlement;return useTelevetRead("entitlement",enabled,enabled&&read?signal=>read.call(controller,signal):null,controller,0)}function useTelevetCancellationPolicy(controller){let enabled=controller?.cancellationPolicy!==void 0,read=controller?.cancellationPolicy;return useTelevetRead("cancellation-policy",enabled,enabled&&read?signal=>read.call(controller,signal):null,controller)}function useTelevetClinicians(state,controller){let code=state?.trim()??"",enabled=controller?.clinicians!==void 0&&isWellFormedStateCode(code),read=controller?.clinicians;return useTelevetRead(`clinicians:${code}`,enabled,enabled&&read?signal=>read.call(controller,code,signal):null,controller)}function useTelevetSlots(clinicianId,controller){let id=clinicianId?.trim()??"",enabled=controller!==null&&id.length>0;return useTelevetRead(`slots:${id}`,enabled,enabled&&controller?signal=>controller.slots(id,signal):null,controller)}function useTelevetNextSlot(controller){let enabled=controller?.nextSlot!==void 0,read=controller?.nextSlot;return useTelevetRead("next-slot",enabled,enabled&&read?signal=>read.call(controller,signal):null,controller)}function useTelevetWrite(run){let[inFlight,setInFlight]=react.useState(null),live=react.useRef(true),busy=react.useRef(false),runRef=react.useRef(run);runRef.current=run,react.useEffect(()=>(live.current=true,()=>{live.current=false}),[]);let mutate=react.useCallback((...args)=>{let current=runRef.current;if(current===null||busy.current)return;let last=args[args.length-1],hasCallbacks=typeof last=="object"&&last!==null&&("onSuccess"in last||"onError"in last),callbacks=hasCallbacks?last:void 0,callArgs=hasCallbacks?args.slice(0,-1):args;busy.current=true,setInFlight({variables:callArgs[0]??null}),(async()=>{let settled=null;try{settled=await current(...callArgs)}catch{settled=null}busy.current=false,live.current&&setInFlight(null),settled!==null&&(settled.ok?callbacks?.onSuccess?.(settled.value):callbacks?.onError?.(settled.error))})()},[]);return react.useMemo(()=>({isPending:inFlight!==null,variables:inFlight?.variables??null,mutate:mutate}),[inFlight,mutate])}async function invalidatingOnSuccess(controller,reads,write){let result=await write;return result.ok&&invalidateTelevetReads(controller,reads),result}function useTelevetHoldSlot(controller){return useTelevetWrite(controller?slotId=>invalidatingOnSuccess(controller,TELEVET_SLOT_READS,controller.holdSlot(slotId)):null)}function useTelevetBookConsult(controller){return useTelevetWrite(controller?(body,key)=>invalidatingOnSuccess(controller,TELEVET_VISIT_READS,controller.book(body,key)):null)}function useTelevetRescheduleConsult(consultId,controller){return useTelevetWrite(controller&&consultId?slotId=>invalidatingOnSuccess(controller,TELEVET_VISIT_READS,controller.reschedule(consultId,slotId)):null)}function useTelevetConsults(controller,revision=0,options){let enabled=controller?.listConsults!==void 0,read=controller?.listConsults;return useTelevetRead(`consults:${revision}`,enabled,enabled&&read?signal=>read.call(controller,signal):null,controller,TELEVET_READ_FRESH_MS,options?.reread===true)}function televetReadIsDark(read){return read.error!==null&&read.error.httpStatus===404}var TELEVET_JOIN_OPENS_MINUTES_BEFORE=15,TELEVET_JOIN_CLOSES_MINUTES_AFTER=250,JOINABLE=/* @__PURE__ */new Set(["scheduled","in_progress"]);function startsAtMs(consult){let parsed=Date.parse(consult.scheduledAt);return Number.isNaN(parsed)?null:parsed}function televetJoinOpensAtMs(consult){let start=startsAtMs(consult);return start===null?null:start-TELEVET_JOIN_OPENS_MINUTES_BEFORE*6e4}function televetJoinDecision(consult,nowMs){if(!JOINABLE.has(consult.status))return{joinable:false,reason:`status_${consult.status}`};if(!consult.hasRoom)return{joinable:false,reason:"room_not_ready"};let start=startsAtMs(consult);return start===null||nowMs<start-TELEVET_JOIN_OPENS_MINUTES_BEFORE*6e4?{joinable:false,reason:"too_early"}:nowMs>start+TELEVET_JOIN_CLOSES_MINUTES_AFTER*6e4?{joinable:false,reason:"too_late"}:{joinable:true}}function splitTelevetVisits(consults,nowMs){let upcoming=[],past=[];for(let consult of consults){let start=startsAtMs(consult);(JOINABLE.has(consult.status)&&start!==null&&start+TELEVET_JOIN_CLOSES_MINUTES_AFTER*6e4>nowMs?upcoming:past).push(consult)}return upcoming.sort((a,b)=>(startsAtMs(a)??0)-(startsAtMs(b)??0)),past.sort((a,b)=>(startsAtMs(b)??0)-(startsAtMs(a)??0)),/* @__PURE__ */Object.freeze({upcoming:/* @__PURE__ */Object.freeze(upcoming),past:/* @__PURE__ */Object.freeze(past)})}function canManageTelevetVisit(status){return status==="scheduled"}function useTelevetLanding(controller){let consults=useTelevetConsults(controller);return consults.enabled?consults.isPending?"pending":consults.isError||splitTelevetVisits(consults.data??[],Date.now()).upcoming.length>0?"visits":"booking":"booking"}var TELEVET_VISITS_COPY_WEB=/* @__PURE__ */Object.freeze({pageTitle:"Video visits",bookCardTitle:"Book a video visit",bookCardCta:"Find a time",bookAnotherTitle:"Book another visit",upcomingTitle:"Next video visit",bookedPill:"Booked",pastTitle:"Past video visits",visitTitleTemplate:"{pet} with {vet}",minutesTemplate:"{n} minutes",emptyTitle:"No visits yet",emptyBody:"When you book a video visit, it will appear here.",loading:"Loading your visits…",loadErrorTitle:"Could not load your visits",loadErrorBody:"Check your connection and try again.",retry:"Try again",joinCta:"Join the visit",joining:"Joining…",addToCalendarCta:"Add to calendar",calendarAdded:"Added to your calendar",rescheduleCta:"Reschedule",cancelCta:"Cancel",cancelConfirmTitleTemplate:"Cancel {pet}’s visit?",cancelConfirmTitle:"Cancel this visit?",cancellationReasonLabel:"What changed?",cancellationReasonOptional:"Optional",cancelWhyBetterTemplate:"{pet} is better",cancelWhyTime:"The time doesn’t work",cancelWhyRegularVet:"We’ll see our regular vet",cancelWhyOther:"Something else",cancelWhyTimeHint:"Another time might be easier.",cancelMoveInstead:"Move the visit instead",summaryWhen:"When",summaryVet:"Vet",summaryAbout:"About",cancelConfirmCta:"Cancel the visit",cancellingVisit:"Canceling…",cancelDismissCta:"Keep the visit",cancelledTemplate:"{pet}’s visit is canceled. {vet} knows.",cancelledTitle:"Visit cancelled",cancellationFeeRecorded:"A late cancellation fee was recorded for this visit.",cancellationFeeNotRecorded:"No late cancellation fee was recorded for this visit.",loadingCancellationTerms:"Loading cancellation terms…",cancellationTermsUnavailable:"We could not confirm the current cancellation terms. Try again before continuing.",cancelReason:"Cancelled by the pet parent in the app.",cancelTermsFirst:"We could not confirm the cancellation terms. Please try again before cancelling.",cancelFailed:"We could not cancel this visit. Refresh your visits to confirm its status before trying again."});function televetVisitStatusWeb(status){switch(status){case"scheduled":return"Scheduled";case"in_progress":return"In progress";case"awaiting_summary":return"Summary on its way";case"completed":return"Completed";case"cancelled_owner":return"Cancelled by you";case"cancelled_ops":return"Cancelled by Everfur";case"no_show_owner":return"Missed";case"no_show_vet":return"Vet couldn't attend";default:return null}}function televetJoinBlockWeb(reason,opensAtLabel){if(reason==="too_early")return opensAtLabel?`This visit opens at ${opensAtLabel}. You can join from then.`:"This visit has not opened yet.";if(reason==="too_late")return"This visit has ended.";if(reason==="room_not_ready")return"We are still setting up the video room. Try again in a moment.";switch(reason){case"status_cancelled_owner":return"You cancelled this visit.";case"status_cancelled_ops":return"This visit was cancelled. Please book another time.";case"status_no_show_owner":return"This visit was missed.";case"status_no_show_vet":return"The vet could not make this visit. Please book another time.";case"status_awaiting_summary":return"This visit has ended. Your summary is on its way.";case"status_completed":return"This visit has ended.";default:return"This visit cannot be joined right now."}}var HostRenderBoundary=class extends react.Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey}}static getDerivedStateFromError(){return{failed:true}}static getDerivedStateFromProps(props,state){return Object.is(props.resetKey,state.key)?null:{failed:false,key:props.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};function RenderHost({render:render}){return render()}function HostRender({render:render,fallback:fallback,resetKey:resetKey}){return react.createElement(HostRenderBoundary,{fallback:fallback,resetKey:resetKey,children:react.createElement(RenderHost,{render:render})})}var freezeInPlace=Object.freeze;function deepFreeze(value){if(value!==null&&typeof value=="object"&&!Object.isFrozen(value)){freezeInPlace(value);for(let key of Object.keys(value))deepFreeze(value[key])}return value}var TEXT_SCALE_TIER_CAPS=/* @__PURE__ */Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),SPACE={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},RADIUS={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},TYPE_SIZE={nano:8,small:9,micro:10,tiny:11,caption:13,bodyTight:15,body:17,subtitle:20,heading:22,verdict:24},LINE_HEIGHT={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},WEIGHT={regular:"400",medium:"500",bold:"700"},LETTER_SPACING={eyebrow:1,monoWide:.9,headerBrand:-.42,tight:-.35},DEFAULT_MAX_FONT_SCALE=0,SYSTEM_FONT_FAMILY="System",SYSTEM_MONO_FAMILY="monospace",TIERS=["content","heading","control","compact","badge"];function authoredTierSizes(size){let out={};for(let tier of TIERS)out[tier]=size;return out}var NO_FONT_SOURCES=[];function baseType(){return{family:SYSTEM_FONT_FAMILY,mono:SYSTEM_MONO_FAMILY,fontUrl:null,families:{regular:SYSTEM_FONT_FAMILY,medium:SYSTEM_FONT_FAMILY,bold:SYSTEM_FONT_FAMILY,mono:SYSTEM_MONO_FAMILY,monoMedium:SYSTEM_MONO_FAMILY,monoBold:SYSTEM_MONO_FAMILY},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:TYPE_SIZE,tierSizes:authoredTierSizes(TYPE_SIZE),lineHeight:LINE_HEIGHT,weight:WEIGHT,letterSpacing:LETTER_SPACING,scale:1,maxScale:DEFAULT_MAX_FONT_SCALE,scaleCaps:TEXT_SCALE_TIER_CAPS,headingFamily:null,headingWeight:null,fontSources:NO_FONT_SOURCES}}var NO_SLOTS={},EASING_CURVES=/* @__PURE__ */Object.freeze({standard:/* @__PURE__ */Object.freeze([.2,0,0,1]),emphasized:/* @__PURE__ */Object.freeze([.2,.8,.2,1]),exit:/* @__PURE__ */Object.freeze([.4,0,1,1])});function cssCubicBezier(curve){return`cubic-bezier(${curve.join(", ")})`}var MOTION={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:cssCubicBezier(EASING_CURVES.standard),emphasized:cssCubicBezier(EASING_CURVES.emphasized),exit:cssCubicBezier(EASING_CURVES.exit)},reducedMotion:false},LIGHT_COLOR={brand:"#10462E",brandSoft:"rgba(16,70,46,0.10)",brandSofter:"rgba(16,70,46,0.15)",brandBorder:"rgba(16,70,46,0.18)",borderHairlineGreen:"rgba(16,70,46,0.25)",brandBorderStrong:"rgba(16,70,46,0.55)",brandInk:"#10462E",linkInk:"#10462E",surface:"#FFFFFF",surfaceCream:"#FFFFFF",surfaceSubtle:"#F1F5F2",background:"#FFFFFF",borderRingCream:"#E4E4E4",chatGround:"#FFFFFF",composerFill:"#FFFFFF",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#000000",secondary:"#0E462E",muted:"#6B6B6B",placeholder:"rgba(61,61,61,0.75)",onBrand:"#FFFFFF",metaCool:"#3D3D3D",timestamp:"rgba(61,61,61,0.75)"},primary:"#10462E",onPrimary:"#FFFFFF",accent:"#10462E",onAccent:"#FFFFFF",accentEdge:"#07C168",success:"#07C168",danger:"#C03410",onDanger:"#FFFFFF",errorRed:"#C03410",warningStrong:"#A45610",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.12)",badgeBgCaution:"rgba(217,130,29,0.14)",badgeBgCritical:"rgba(192,52,16,0.06)",badgeBgNeutral:"rgba(107,107,107,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",bubbleVet:"#FFC3BC",onBubbleVet:"#000000",skeleton:"#E9F1E9",scanButtonPink:"#FFC3BC",highlight:"#FFC3BC",onHighlight:"#000000",mark:"#07C168",controlEdge:"rgba(16,70,46,0.18)",structureEdge:"rgba(16,70,46,0.25)",primaryEdge:"#10462E",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)",info:"#10462E",badgeBgInfo:"rgba(16,70,46,0.10)",infoEdge:"rgba(16,70,46,0.25)"},EVERFUR_LIGHT=deepFreeze({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false,assistantAvatarUrl:null},color:LIGHT_COLOR,space:SPACE,radius:RADIUS,type:baseType(),motion:MOTION,slots:NO_SLOTS}),DARK_COLOR={brand:"#6BD39A",brandSoft:"rgba(107,211,154,0.12)",brandSofter:"rgba(107,211,154,0.18)",brandBorder:"rgba(107,211,154,0.22)",borderHairlineGreen:"rgba(107,211,154,0.28)",brandBorderStrong:"rgba(107,211,154,0.55)",brandInk:"#6BD39A",linkInk:"#6BD39A",surface:"#1C1F23",surfaceCream:"#23272C",surfaceSubtle:"#23272C",background:"#15171A",borderRingCream:"#3A3F45",chatGround:"#1C1F23",composerFill:"#23272C",composerBorder:"rgba(107,211,154,0.75)",shadow:"#000000",text:{primary:"#F5F3F0",secondary:"#A9E4C4",muted:"#9A9A9A",placeholder:"rgba(255,255,255,0.55)",onBrand:"#0E1F17",metaCool:"#C9C9C9",timestamp:"rgba(245,243,240,0.7)"},primary:"#6BD39A",onPrimary:"#0E1F17",accent:"#6BD39A",onAccent:"#0E1F17",accentEdge:"#34D888",success:"#07C168",danger:"#F87171",onDanger:"#0E1F17",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",bubbleVet:"#FFC3BC",onBubbleVet:"#000000",skeleton:"#23272C",scanButtonPink:"#FFC3BC",highlight:"#605051",onHighlight:"#F5F3F0",mark:"#07C168",controlEdge:"rgba(107,211,154,0.22)",structureEdge:"rgba(107,211,154,0.28)",primaryEdge:"#6BD39A",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)",info:"#6BD39A",badgeBgInfo:"rgba(107,211,154,0.12)",infoEdge:"rgba(107,211,154,0.28)"};deepFreeze({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false,assistantAvatarUrl:null},color:DARK_COLOR,space:SPACE,radius:RADIUS,type:baseType(),motion:MOTION,slots:NO_SLOTS});var EVERFUR_THEME_CONTEXT_SYMBOL=/* @__PURE__ */Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),globalThemeHost=globalThis,EverfurThemeContext=globalThemeHost[EVERFUR_THEME_CONTEXT_SYMBOL]??(globalThemeHost[EVERFUR_THEME_CONTEXT_SYMBOL]=react.createContext(EVERFUR_LIGHT));EverfurThemeContext.displayName??="EverfurThemeContext";function useEverfurTheme(){return react.useContext(EverfurThemeContext)}var FACE_WEIGHT=/* @__PURE__ */Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});function tierScale(theme,tier){let{scale:scale,scaleCaps:scaleCaps}=theme.type,cap=scaleCaps[tier];return cap>0?Math.min(scale,cap):scale}function tierPx(theme,tier,points){return Math.round(points*tierScale(theme,tier)*10)/10}var SYSTEM_UI_STACK='system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',RN_SYSTEM_FAMILY="System";function cssFontFamily(family){let named=family.trim();return named.length===0||named===RN_SYSTEM_FAMILY?SYSTEM_UI_STACK:`${quote(named)}, ${SYSTEM_UI_STACK}`}function cssMonoFamily(mono){let named=mono.trim();return named.length===0||named==="monospace"?"ui-monospace, Menlo, Consolas, monospace":`${quote(named)}, ui-monospace, Menlo, Consolas, monospace`}function quote(family){return`"${family.replace(/[\\"]/g,"\\$&")}"`}function faceCss(theme,weight){let type=theme.type,family=type.families[weight];return{fontFamily:weight==="mono"||weight==="monoMedium"||weight==="monoBold"?cssMonoFamily(family):cssFontFamily(family),fontWeight:type.namedFaces[weight]?type.weight.regular:type.weight[FACE_WEIGHT[weight]]}}function headingFaceCss(theme,fallback="bold"){let{headingFamily:headingFamily,headingWeight:headingWeight}=theme.type,base=faceCss(theme,fallback);return headingFamily===null&&headingWeight===null?base:headingFamily!==null?{fontFamily:cssFontFamily(headingFamily),fontWeight:headingWeight??theme.type.weight[FACE_WEIGHT[fallback]]}:theme.type.namedFaces[fallback]||headingWeight===null?base:{fontFamily:base.fontFamily,fontWeight:headingWeight}}var SURFACE_ROOT_RESET=/* @__PURE__ */Object.freeze({textAlign:"start"});var MIN_OFFSTATE_HEIGHT=48;function selectView(decision){return decision.isPending?"pending":decision.enabled?"enabled":"disabled"}function CapabilityGate(props){let{capability:capability,children:children,renderDisabled:renderDisabled,renderPending:renderPending,style:style,className:className}=props,decision=useCapability(capability),view=react.useMemo(()=>selectView(decision),[decision]);switch(view){case"enabled":return children;case"pending":return renderPending?/* @__PURE__ */jsxRuntime.jsx(HostRender,{render:renderPending,fallback:/* @__PURE__ */jsxRuntime.jsx(PendingSkeleton,{capability:capability,style:style,className:className})}):/* @__PURE__ */jsxRuntime.jsx(PendingSkeleton,{capability:capability,style:style,className:className});case"disabled":return renderDisabled?/* @__PURE__ */jsxRuntime.jsx(HostRender,{render:()=>renderDisabled(decision),fallback:/* @__PURE__ */jsxRuntime.jsx(OffState,{decision:decision,style:style,className:className}),resetKey:decision}):/* @__PURE__ */jsxRuntime.jsx(OffState,{decision:decision,style:style,className:className});default:return assertNever(view)}}function PendingSkeleton({capability:capability,style:style,className:className}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles(theme),[theme]);/* @__PURE__ */
117
117
  return jsxRuntime.jsx("div",{role:"status","aria-busy":"true","aria-label":`Loading ${capability}`,className:className,style:{...styles.offstate,...style},children:/* @__PURE__ */jsxRuntime.jsx("div",{style:styles.skeletonBar})})}function OffState({decision:decision,style:style,className:className}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles(theme),[theme]),message=decision.disabled?.reason??"";/* @__PURE__ */
118
118
  return jsxRuntime.jsx("div",{className:className,style:{...styles.offstate,...style},children:message.length>0?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles.offstateText,children:message}):null})}function makeStyles(theme){let{color:color,space:space,radius:radius,type:type}=theme;return{offstate:{...SURFACE_ROOT_RESET,boxSizing:"border-box",minHeight:MIN_OFFSTATE_HEIGHT,display:"flex",flexDirection:"column",justifyContent:"center",padding:`${space.md}px ${space.lg}px`,backgroundColor:color.surfaceCream,borderRadius:radius.md,border:`1px solid ${color.brandBorder}`},offstateText:{margin:0,...faceCss(theme,"regular"),fontSize:type.size.body,lineHeight:`${Math.round(type.size.body*type.lineHeight.normal)}px`,color:color.text.muted},skeletonBar:{height:space.md,borderRadius:radius.xs,backgroundColor:color.brandSofter}}}function hasLoneSurrogate(value){for(let i=0;i<value.length;i+=1){let code=value.charCodeAt(i);if(code>=55296&&code<=56319){let low=value.charCodeAt(i+1);if(!(low>=56320&&low<=57343))return true;i+=1}else if(code>=56320&&code<=57343)return true}return false}function serverLength(value){return[...value].length}var SPECIES_ALIASES=/* @__PURE__ */Object.freeze({dog:"dog",canine:"dog",k9:"dog",puppy:"dog",cat:"cat",feline:"cat",kitten:"cat"});function canonicalPetSpecies(raw){if(typeof raw!="string")return null;let key=raw.trim().toLowerCase();return Object.prototype.hasOwnProperty.call(SPECIES_ALIASES,key)?SPECIES_ALIASES[key]:null}var LIST_MAX=50,REF_MAX=128,NAME_MAX=120,SHORT_MAX=120,NOTES_MAX=2e3,FOOD_MAX=120,MICROCHIP_MAX=80,SEXES=/* @__PURE__ */new Set(["male","female","unknown"]),PRECISIONS=/* @__PURE__ */new Set(["day","month","year"]),ACTIVITY=/* @__PURE__ */new Set(["low","medium","high","athletic"]),INDOOR_OUTDOOR=/* @__PURE__ */new Set(["indoor","outdoor","both"]),SEVERITIES=/* @__PURE__ */new Set(["mild","moderate","severe"]),ISO_DATE=/^(\d{4})-(\d{2})-(\d{2})$/,SCALAR_WIRE=[["sex","sex"],["spayedNeutered","spayed_neutered"],["birthDate","birth_date"],["birthDatePrecision","birth_date_precision"],["activityLevel","activity_level"],["indoorOutdoor","indoor_outdoor"],["foodBrand","food_brand"],["foodType","food_type"],["microchipId","microchip_id"]],LIST_WIRE=[["allergies","allergies"],["medications","medications"],["supplements","supplements"],["conditions","conditions"]];/* @__PURE__ */Object.freeze([...SCALAR_WIRE,...LIST_WIRE].map(([key])=>key));function isRealDate(value){let match=ISO_DATE.exec(value);if(match===null)return false;let[year,month,day]=[Number(match[1]),Number(match[2]),Number(match[3])],date2=new Date(Date.UTC(year,month-1,day));return date2.getUTCFullYear()===year&&date2.getUTCMonth()===month-1&&date2.getUTCDate()===day}var oneOf=allowed=>(field,value)=>typeof value=="string"&&allowed.has(value)?null:`${field} must be one of ${[...allowed].join(", ")}`,boolean=(field,value)=>typeof value=="boolean"?null:`${field} must be true or false`,date=(field,value)=>typeof value=="string"&&isRealDate(value)?null:`${field} must be a real date written YYYY-MM-DD`,text=(max,opts={})=>(field,value)=>{if(typeof value!="string")return`${field} must be a string`;if(hasLoneSurrogate(value))return`${field} contains an unpaired surrogate and cannot be encoded`;let measured=opts.trimmed?value.trim():value;if(opts.required&&measured.length===0)return`${field} is required and must not be blank`;let length=serverLength(measured);return length<=max?null:`${field} is ${length} characters; the server accepts at most ${max}`},SCALAR_CHECKS={sex:oneOf(SEXES),spayedNeutered:boolean,birthDate:date,birthDatePrecision:oneOf(PRECISIONS),activityLevel:oneOf(ACTIVITY),indoorOutdoor:oneOf(INDOOR_OUTDOOR),foodBrand:text(FOOD_MAX),foodType:text(FOOD_MAX),microchipId:text(MICROCHIP_MAX)},REF_FIELD=["ref","ref",false,text(REF_MAX,{required:true,trimmed:true})],NOTES_FIELD=["notes","notes",false,text(NOTES_MAX,{trimmed:true})],MEDICATION_FIELDS=[REF_FIELD,["name","name",true,text(NAME_MAX,{required:true,trimmed:true})],["dose","dose",false,text(SHORT_MAX,{trimmed:true})],["frequency","frequency",false,text(SHORT_MAX,{trimmed:true})],["startDate","start_date",false,date],["endDate","end_date",false,date],NOTES_FIELD],ITEM_FIELDS={allergies:[REF_FIELD,["allergen","allergen",true,text(NAME_MAX,{required:true,trimmed:true})],["severity","severity",false,oneOf(SEVERITIES)],NOTES_FIELD],medications:MEDICATION_FIELDS,supplements:MEDICATION_FIELDS,conditions:[REF_FIELD,["conditionName","condition_name",true,text(NAME_MAX,{required:true,trimmed:true})],["diagnosedDate","diagnosed_date",false,date],NOTES_FIELD]};function itemToWire(list,index,raw){let at=`${list}[${index}]`;if(typeof raw!="object"||raw===null||Array.isArray(raw))return{error:`${at} must be an object`};let source=raw,item={};for(let[key,wire,isRequired,check]of ITEM_FIELDS[list]){let value=source[key];if(value==null){if(isRequired)return{error:`${at}.${key} is required`};value===null&&(item[wire]=null);continue}let bad=check(`${at}.${key}`,value);if(bad!==null)return{error:bad};item[wire]=value}let start=item.start_date,end=item.end_date;return typeof start=="string"&&typeof end=="string"&&end<start?{error:`${at}.endDate must not be before startDate`}:{item:item}}function listToWire(list,raw){if(!Array.isArray(raw))return{error:`${list} must be an array (send [] to clear it)`};if(raw.length>LIST_MAX)return{error:`${list} has ${raw.length} items; the server accepts at most ${LIST_MAX}`};let items=[],refs=/* @__PURE__ */new Set;for(let index=0;index<raw.length;index+=1){let mapped=itemToWire(list,index,raw[index]);if("error"in mapped)return mapped;let ref=mapped.item.ref;if(typeof ref=="string"){let key=ref.trim();if(refs.has(key))return{error:`${list}: ref ${JSON.stringify(key)} is used twice; a ref names one item`};refs.add(key)}items.push(mapped.item)}return{items:items}}function petHealthToWire(input,species){let source=input,body={};for(let[key,wire]of SCALAR_WIRE){let value=source[key];if(value!==void 0){if(value!==null){let bad=SCALAR_CHECKS[key](key,value);if(bad!==null)return{error:bad}}body[wire]=value}}let dateSent=source.birthDate!==void 0,precisionSent=source.birthDatePrecision!==void 0;if(dateSent!==precisionSent||dateSent&&source.birthDate===null!=(source.birthDatePrecision===null))return{error:"birthDate and birthDatePrecision must be sent together, both set or both null"};for(let[key,wire]of LIST_WIRE){let value=source[key];if(value===void 0)continue;let mapped=listToWire(key,value);if("error"in mapped)return mapped;body[wire]=mapped.items}return Object.keys(body).length>0&&species!==void 0&&canonicalPetSpecies(species)===null?{error:"health fields need a pet Everfur reads as a dog or a cat (dog, canine, k9, puppy, cat, feline, kitten)"}:{body:body}}var str2=value=>typeof value=="string"?value:null,pick=(allowed,value)=>typeof value=="string"&&allowed.has(value)?value:null,bool2=value=>typeof value=="boolean"?value:null;function itemsFromWire(raw,map){return Array.isArray(raw)?/* @__PURE__ */Object.freeze(raw.flatMap(row2=>{if(typeof row2!="object"||row2===null||Array.isArray(row2))return[];let item=map(row2);return item===null?[]:[item]})):/* @__PURE__ */Object.freeze([])}function medicationFromWire(o){let name=str2(o.name);return name===null||name.length===0?null:/* @__PURE__ */Object.freeze({ref:str2(o.ref),name:name,dose:str2(o.dose),frequency:str2(o.frequency),startDate:str2(o.start_date),endDate:str2(o.end_date),notes:str2(o.notes)})}function petHealthFromWire(o){let version=o.profile_version;/* @__PURE__ */
119
119
  return Object.freeze({profileVersion:typeof version=="number"&&Number.isInteger(version)&&version>=0?version:0,sex:pick(SEXES,o.sex),spayedNeutered:bool2(o.spayed_neutered),birthDate:str2(o.birth_date),birthDatePrecision:pick(PRECISIONS,o.birth_date_precision),activityLevel:pick(ACTIVITY,o.activity_level),indoorOutdoor:pick(INDOOR_OUTDOOR,o.indoor_outdoor),foodBrand:str2(o.food_brand),foodType:str2(o.food_type),microchipId:str2(o.microchip_id),allergies:itemsFromWire(o.allergies,row2=>{let allergen=str2(row2.allergen);return allergen===null||allergen.length===0?null:/* @__PURE__ */Object.freeze({ref:str2(row2.ref),allergen:allergen,severity:pick(SEVERITIES,row2.severity),notes:str2(row2.notes)})}),medications:itemsFromWire(o.medications,medicationFromWire),supplements:itemsFromWire(o.supplements,medicationFromWire),conditions:itemsFromWire(o.conditions,row2=>{let conditionName=str2(row2.condition_name);return conditionName===null||conditionName.length===0?null:/* @__PURE__ */Object.freeze({ref:str2(row2.ref),conditionName:conditionName,diagnosedDate:str2(row2.diagnosed_date),notes:str2(row2.notes)})})})}var PET_NAME_MAX=100,PET_SPECIES_MAX=50,PET_BREED_MAX=100,PET_AGE_YEARS_MAX=50,PET_WEIGHT_KG_MAX=500,PET_REF_MAX=128,ERASE_USER_DATA_TIMEOUT_MS=6e4;function invalid3(wireMessage){return makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage})}function checkString(field,value,max){if(typeof value!="string")return invalid3(`${field} must be a string`);let length=serverLength(value);return length<=max?null:invalid3(`${field} is ${length} characters; the server accepts at most ${max}`)}function outOfRange(field,value,max){return typeof value=="number"&&Number.isFinite(value)&&value>=0&&value<=max?null:invalid3(`${field} must be a finite number between 0 and ${max}`)}function validate(petRef,profile){if(typeof petRef!="string")return invalid3("pet_ref must be a string");if(petRef.trim().length===0)return invalid3("pet_ref must not be blank");if(hasLoneSurrogate(petRef))return invalid3("pet_ref contains an unpaired surrogate and cannot be encoded");if(profile!=null&&typeof profile!="object")return invalid3("profile must be an object");let checks=[checkString("pet_ref",petRef,PET_REF_MAX)];return profile?.name!==void 0&&checks.push(checkString("name",profile.name,PET_NAME_MAX)),profile?.species!==void 0&&checks.push(checkString("species",profile.species,PET_SPECIES_MAX)),profile?.breed!==void 0&&checks.push(checkString("breed",profile.breed,PET_BREED_MAX)),profile?.ageYears!==void 0&&checks.push(outOfRange("age_years",profile.ageYears,PET_AGE_YEARS_MAX)),profile?.weightKg!==void 0&&checks.push(outOfRange("weight_kg",profile.weightKg,PET_WEIGHT_KG_MAX)),checks.find(c=>c!==null)??null}function healthToWire(source,species){let health=petHealthToWire(source,species);return"error"in health?{error:invalid3(health.error)}:health}function patchToWire(patch){if(typeof patch!="object"||patch===null)return{error:invalid3("patch must be an object")};let p=patch,fields=[["name","name",v=>checkString("name",v,PET_NAME_MAX)],["species","species",v=>checkString("species",v,PET_SPECIES_MAX)],["breed","breed",v=>checkString("breed",v,PET_BREED_MAX)],["ageYears","age_years",v=>outOfRange("age_years",v,PET_AGE_YEARS_MAX)],["weightKg","weight_kg",v=>outOfRange("weight_kg",v,PET_WEIGHT_KG_MAX)]],body={};for(let[key,wire,check]of fields){let value=p[key];if(value!==void 0){if(value!==null){let bad=check(value);if(bad!==null)return{error:bad}}body[wire]=value}}let health=healthToWire(p,p.species);return"error"in health?health:(Object.assign(body,health.body),Object.keys(body).length===0?{error:invalid3("patch must change at least one field")}:{body:body})}function toWire(profile){if(profile==null)return{body:{}};let health=healthToWire(profile,profile.species);return"error"in health?health:{body:{...profile.name!==void 0?{name:profile.name}:{},...profile.species!==void 0?{species:profile.species}:{},...profile.breed!==void 0?{breed:profile.breed}:{},...profile.ageYears!==void 0?{age_years:profile.ageYears}:{},...profile.weightKg!==void 0?{weight_kg:profile.weightKg}:{},...health.body}}}var str3=v=>typeof v=="string"?v:null,num2=v=>typeof v=="number"&&Number.isFinite(v)?v:null;function fromWire2(raw,petRef){let o=typeof raw=="object"&&raw!==null?raw:{};/* @__PURE__ */
@@ -131,12 +131,12 @@ return Object.freeze(cause==="dark"?{title:TELEVET_BOOKING_COPY.noCliniciansTitl
131
131
  return Object.freeze({code:code,retryable:retryable,filename:filename,...{}})}async function uploadAttachmentBytes(transport,policy,attachment,opts){let cancelled=()=>opts?.signal?.aborted===true;if(cancelled())return err2(failure("cancelled",true,attachment.filename));try{return await transport.postMultipart(policy,attachment.file,{...opts?.signal?{signal:opts.signal}:{},...opts?.onProgress?{onProgress:opts.onProgress}:{}}),ok2(void 0)}catch{return cancelled()?err2(failure("cancelled",true,attachment.filename)):err2(failure("server",true,attachment.filename))}}var NO_MEDIA_SHORTFALL=/* @__PURE__ */Object.freeze({failed:0,refused:/* @__PURE__ */Object.freeze({size:0,type:0,unreadable:0})});function isMediaShortfallEmpty(shortfall){let{failed:failed,refused:refused}=shortfall;return failed<=0&&refused.size<=0&&refused.type<=0&&refused.unreadable<=0}function televetMediaShortfallLines(shortfall){let count=n=>Number.isFinite(n)&&n>0?Math.floor(n):0,c=TELEVET_BOOKING_COPY.media;return[{n:count(shortfall.failed),one:c.droppedTemplate,many:c.droppedPluralTemplate},{n:count(shortfall.refused.size),one:c.refusedSizeTemplate,many:c.refusedSizePluralTemplate},{n:count(shortfall.refused.type),one:c.refusedTypeTemplate,many:c.refusedTypePluralTemplate},{n:count(shortfall.refused.unreadable),one:c.refusedUnreadableTemplate,many:c.refusedUnreadablePluralTemplate}].filter(line=>line.n>0).map(line=>fill(line.n===1?line.one:line.many,{n:String(line.n)}))}function mediaShortfallFromUnsentPicks(pickCount){let n=Number.isFinite(pickCount)&&pickCount>0?Math.floor(pickCount):0;return n===0?NO_MEDIA_SHORTFALL:/* @__PURE__ */Object.freeze({failed:n,refused:NO_MEDIA_SHORTFALL.refused})}function withUnsentPicks(shortfall,pickCount){let extra=mediaShortfallFromUnsentPicks(pickCount);return extra.failed===0?shortfall:/* @__PURE__ */Object.freeze({failed:shortfall.failed+extra.failed,refused:shortfall.refused})}var PRESIGN_MARGIN_MS=6e4;function validated(pick2){let contentType=televetAttachmentContentType(pick2.filename,pick2.mimeType);return contentType===null?null:{file:{uri:pick2.uri,name:pick2.filename,mimeType:contentType,sizeBytes:pick2.fileSize},filename:pick2.filename,contentType:contentType,sizeBytes:pick2.fileSize}}function fresh(state,now){if(state?.kind!=="ready")return null;let lifetime=state.policy.expires_in_seconds*1e3;return now-state.at<lifetime-PRESIGN_MARGIN_MS?state.policy:null}function useTelevetBookingMedia({media:media,controller:controller,transport:transport}){let[states,setStates]=react.useState(()=>/* @__PURE__ */new Map),[darkAnswered,setDarkAnswered]=react.useState(false),[sending,setSending]=react.useState(false),statesRef=react.useRef(states),mediaRef=react.useRef(media);mediaRef.current=media;let darkRef=react.useRef(false),sendingRef=react.useRef(false),alive=react.useRef(new AbortController);react.useEffect(()=>{let controllerForThisMount=new AbortController;return alive.current=controllerForThisMount,()=>controllerForThisMount.abort()},[]);let initiate=controller?.initiateAttachment?.bind(controller),dark=darkAnswered||initiate===void 0,put=react.useCallback((uri,next)=>{let map=new Map(statesRef.current);map.set(uri,next),statesRef.current=map,setStates(map)},[]),goDark=react.useCallback(()=>{darkRef.current=true,setDarkAnswered(true)},[]),presign=react.useCallback(async(pick2,file)=>{if(initiate===void 0)return"dark";let res=await initiate({filename:file.filename,contentType:file.contentType,fileSize:file.sizeBytes},alive.current.signal);if(alive.current.signal.aborted)return null;if(res.ok)return put(pick2.uri,{kind:"ready",policy:res.value,at:Date.now()}),res.value;let cause=televetAttachmentInitiateFailure(res.error);return cause==="dark"?"dark":(put(pick2.uri,cause==="failed"?{kind:"retry"}:{kind:"refused",cause:cause}),null)},[initiate,put]);react.useEffect(()=>{if(!dark)for(let pick2 of media){if(statesRef.current.has(pick2.uri))continue;let refusal=televetAttachmentRefusal(pick2),file=validated(pick2);if(refusal!==null||file===null){put(pick2.uri,{kind:"refused",cause:refusal??"type"});continue}put(pick2.uri,{kind:"checking"}),presign(pick2,file).then(answer=>{answer==="dark"&&goDark()})}},[media,dark,presign,put,goDark]);let send=react.useCallback(async()=>{if(darkRef.current||initiate===void 0||sendingRef.current)return[];sendingRef.current=true,setSending(true);let keys=[];try{for(let pick2 of mediaRef.current){let state=statesRef.current.get(pick2.uri);if(state?.kind==="sent"){keys.push(state.s3Key);continue}if(state?.kind==="refused")continue;let file=validated(pick2);if(file===null)continue;let policy=fresh(state,Date.now());if(policy===null){let answer=await presign(pick2,file);if(answer==="dark")return goDark(),[];if(answer===null){statesRef.current.get(pick2.uri)?.kind==="retry"&&put(pick2.uri,{kind:"failed"});continue}policy=answer}if(alive.current.signal.aborted)return[];let staged=await uploadAttachmentBytes(transport,policy,file,{signal:alive.current.signal});if(alive.current.signal.aborted)return[];staged.ok?(put(pick2.uri,{kind:"sent",s3Key:policy.s3_key}),keys.push(policy.s3_key)):put(pick2.uri,{kind:"failed"})}return keys}catch{return keys}finally{sendingRef.current=false,alive.current.signal.aborted||setSending(false)}},[initiate,presign,put,goDark,transport]),shortfall=react.useMemo(()=>{if(media.length===0)return NO_MEDIA_SHORTFALL;if(dark)return mediaShortfallFromUnsentPicks(media.length);let refused={size:0,type:0,unreadable:0},failed=0;for(let pick2 of media){let state=states.get(pick2.uri);state?.kind==="refused"?refused[state.cause]+=1:state?.kind==="failed"&&(failed+=1)}return failed===0&&refused.size+refused.type+refused.unreadable===0?NO_MEDIA_SHORTFALL:/* @__PURE__ */Object.freeze({failed:failed,refused:/* @__PURE__ */Object.freeze(refused)})},[media,dark,states]),sentKeys=react.useMemo(()=>media.flatMap(pick2=>{let state=states.get(pick2.uri);return state?.kind==="sent"?[{key:state.s3Key,pick:pick2}]:[]}),[media,states]),bookedShortfall=react.useCallback(consult=>{if(dark)return shortfall;let kept=new Set(consult.mediaRefs),dropped=sentKeys.filter(sent=>!kept.has(sent.key)).length;return dropped===0?shortfall:/* @__PURE__ */Object.freeze({failed:shortfall.failed+dropped,refused:shortfall.refused})},[dark,shortfall,sentKeys]),sentOnePhoto=react.useCallback(consult=>{if(dark||sentKeys.length!==1)return false;let[only]=sentKeys;return only===void 0||!consult.mediaRefs.includes(only.key)?false:(televetAttachmentContentType(only.pick.filename,only.pick.mimeType)??"").startsWith("image/")},[dark,sentKeys]),live=!dark&&[...states.values()].some(state=>state.kind==="ready"||state.kind==="sent");return react.useMemo(()=>({shortfall:shortfall,sending:sending,live:live,send:send,bookedShortfall:bookedShortfall,sentOnePhoto:sentOnePhoto}),[shortfall,sending,live,send,bookedShortfall,sentOnePhoto])}var FILE_FIELD="file",NO_BYTES="chat attachment upload: the file handle carries no bytes",FAILED="chat attachment upload failed";function createWebAttachmentTransport(options={}){let doFetch=options.fetch??((input,init)=>fetch(input,init));/* @__PURE__ */
132
132
  return Object.freeze({postMultipart(policy,file,opts){let blob=file.blob;if(blob===void 0)return Promise.reject(new Error(NO_BYTES));if(opts.signal?.aborted===true)return Promise.reject(new Error(FAILED));let form=new FormData;for(let[name,value]of Object.entries(policy.upload_fields))form.append(name,value);return form.append(FILE_FIELD,blob,"image"),doFetch(policy.upload_url,{method:"POST",body:form,mode:"cors",credentials:"omit",...opts.signal?{signal:opts.signal}:{}}).then(response=>{if(!(response.status>=200&&response.status<300))return Promise.reject(new Error(FAILED));opts.onProgress?.(1)},()=>Promise.reject(new Error(FAILED)))}})}var UNREADABLE="booking attachment upload: the picked file could not be read";function createWebTelevetMediaTransport(options={}){let doFetch=options.fetch??((input,init)=>fetch(input,init)),post=createWebAttachmentTransport({fetch:doFetch});/* @__PURE__ */
133
133
  return Object.freeze({postMultipart(policy,file,opts){return file.blob!==void 0?post.postMultipart(policy,file,opts):doFetch(file.uri,opts.signal?{signal:opts.signal}:void 0).then(response=>response.blob()).then(blob=>post.postMultipart(policy,{...file,blob:new Blob([blob],{type:file.mimeType})},opts),()=>Promise.reject(new Error(UNREADABLE)))}})}var TELEVET_SIMULATOR_COPY=/* @__PURE__ */Object.freeze({title:"Vet test mode (sandbox tenants)",create:"Create a simulated visit for this pet",createLabel:"Create",visitTemplate:"Visit {visitRef}: {status}, scheduled {scheduledAt}.",eventsNote:"Raise one of the visit events that is not a status change, to see what a tap on it opens:",advance:/* @__PURE__ */Object.freeze({completed:"Complete it",cancelled:"Cancel it",no_show:"Mark no-show"}),events:/* @__PURE__ */Object.freeze({rescheduled:"Rescheduled",reminder:"Reminder (24h)",followup_sent:"Follow-up sent",message_received:"Vet replied",ended:"Ended"}),resultTemplate:"{label}: {result}.",errorTemplate:"{label}: {message}"});var VET_VISIT_SANDBOX_VISITS_PATH="/widget/v1/televet/sandbox/visits",PET_REF_MAX2=128,VISIT_REF_MAX=64,STATUSES=/* @__PURE__ */new Set(["booked","cancelled","completed","no_show"]),RESULTS=/* @__PURE__ */new Set(["applied","already_applied","not_applicable"]),EVENTS=/* @__PURE__ */new Set(["rescheduled","reminder","followup_sent","message_received","ended"]),REMINDER_STAGES=/* @__PURE__ */new Set(["24h","30m"]);function invalid4(wireMessage){return makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage})}function textError(name,value,max){return typeof value!="string"||value.length===0?invalid4(`${name} is required and must be a non-empty string`):hasLoneSurrogate(value)?invalid4(`${name} contains an unpaired surrogate and cannot be encoded`):serverLength(value)>max?invalid4(`${name} is longer than ${max} characters`):null}function mapActionResult(wire){if(typeof wire!="object"||wire===null)return null;let{result:result,visit:visit}=wire;if(typeof result!="string"||!RESULTS.has(result)||typeof visit!="object"||visit===null)return null;let{visit_ref:visit_ref,pet_ref:pet_ref,status:status,scheduled_at:scheduled_at}=visit;return typeof visit_ref!="string"||visit_ref.length===0||typeof pet_ref!="string"||pet_ref.length===0||typeof status!="string"||!STATUSES.has(status)||typeof scheduled_at!="string"||scheduled_at.length===0?null:/* @__PURE__ */Object.freeze({result:result,visit:/* @__PURE__ */Object.freeze({visitRef:visit_ref,petRef:pet_ref,status:status,scheduledAt:scheduled_at})})}function createVetVisitSandboxController(deps){let funnel=deps.funnel??createRequestFunnel({auth:deps.auth,...deps.errorPolicy?{errorPolicy:deps.errorPolicy}:{}}),run=async(call,path,body)=>{let res=await funnel.send(call,{method:"POST",path:path,body:body},{idempotent:false,maxAttempts:1});if(!res.ok)return err(res.error);let mapped=mapActionResult(res.value);return mapped===null?err(makeEverfurError("internalError",{retryable:false})):ok(mapped)};return{createVisit(petRef){let bad=textError("pet_ref",petRef,PET_REF_MAX2);return bad!==null?Promise.resolve(err(bad)):run("televet.sandbox.createVisit",VET_VISIT_SANDBOX_VISITS_PATH,{pet_ref:petRef})},advanceVisit(visitRef,to){let bad=textError("visit_ref",visitRef,VISIT_REF_MAX);if(bad!==null)return Promise.resolve(err(bad));if(typeof to!="string"||!STATUSES.has(to))return Promise.resolve(err(invalid4("to must be booked, cancelled, completed or no_show")));let path=`${VET_VISIT_SANDBOX_VISITS_PATH}/${encodeURIComponent(visitRef)}/advance`;return run("televet.sandbox.advanceVisit",path,{to:to})},simulateVisitEvent(visitRef,event,stage){let bad=textError("visit_ref",visitRef,VISIT_REF_MAX);if(bad!==null)return Promise.resolve(err(bad));if(typeof event!="string"||!EVENTS.has(event))return Promise.resolve(err(invalid4(`event must be one of ${[...EVENTS].join(", ")}`)));if(event==="reminder"){if(typeof stage!="string"||!REMINDER_STAGES.has(stage))return Promise.resolve(err(invalid4(`stage must be one of ${[...REMINDER_STAGES].join(", ")} for a reminder`)))}else if(stage!==void 0)return Promise.resolve(err(invalid4("stage is only for a reminder")));let path=`${VET_VISIT_SANDBOX_VISITS_PATH}/${encodeURIComponent(visitRef)}/simulate`;return run("televet.sandbox.simulateVisitEvent",path,stage===void 0?{event:event}:{event:event,stage:stage})}}}function useEverfurVetVisitSandbox(){let{runtime:runtime,userRef:userRef,scopeEpoch:scopeEpoch}=useEverfurContext();return react.useMemo(()=>{let{services:services}=runtime.registry;return createVetVisitSandboxController({auth:services.authFor(userRef),...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}})},[runtime,userRef,scopeEpoch])}function televetOpensSimulator(sandboxTenant,allowance){return!sandboxTenant||!allowance.enabled?false:allowance.data!==null&&allowance.data.active===false||televetReadIsDark({error:allowance.error??null})}var isSandbox=snapshot=>snapshot.livemode===false;function useTelevetSandboxTenant(){let store=useEverfurContext().runtime.entitlements,read=react.useCallback(()=>isSandbox(store.getSnapshot()),[store]);return react.useSyncExternalStore(store.subscribe,read,read)}function useTelevetSimulatorRoute(allowance,notEntitled){let simulate=televetOpensSimulator(useTelevetSandboxTenant(),allowance);return{simulate:simulate,fundingRefused:notEntitled&&!simulate}}function televetRosterReadsAllowed(sandboxTenant,allowance){return!sandboxTenant||!allowance.enabled?true:(allowance.data!==null||(allowance.error??null)!==null)&&!televetOpensSimulator(true,allowance)}function useTelevetRosterController(controller,allowance){return televetRosterReadsAllowed(useTelevetSandboxTenant(),allowance)?controller:null}function useTelevetVisitSimulator(petRef){let sandbox=useEverfurVetVisitSandbox(),[visit,setVisit]=react.useState(null),[line,setLine]=react.useState(null),[busy,setBusy]=react.useState(false),inFlight=react.useRef(false),alive=react.useRef(true);react.useEffect(()=>(alive.current=true,()=>{alive.current=false}),[]);let run=react.useCallback((label,send,keepVisit)=>{inFlight.current||(inFlight.current=true,setBusy(true),send().then(res=>{if(inFlight.current=false,!!alive.current){if(setBusy(false),!res.ok){setLine({tone:"danger",text:fill(TELEVET_SIMULATOR_COPY.errorTemplate,{label:label,message:res.error.displayMessage})});return}keepVisit&&setVisit(res.value.visit),setLine({tone:"ok",text:fill(TELEVET_SIMULATOR_COPY.resultTemplate,{label:label,result:res.value.result})})}}))},[]),create=react.useCallback(()=>{run(TELEVET_SIMULATOR_COPY.createLabel,()=>sandbox.createVisit(petRef),true)},[petRef,run,sandbox]),advance=react.useCallback(to=>{visit!==null&&run(TELEVET_SIMULATOR_COPY.advance[to],()=>sandbox.advanceVisit(visit.visitRef,to),true)},[run,sandbox,visit]),raise=react.useCallback(event=>{if(visit===null)return;let stage=event==="reminder"?"24h":void 0;run(TELEVET_SIMULATOR_COPY.events[event],()=>sandbox.simulateVisitEvent(visit.visitRef,event,stage),false)},[run,sandbox,visit]),visitLine=visit===null?null:fill(TELEVET_SIMULATOR_COPY.visitTemplate,{visitRef:visit.visitRef,status:visit.status,scheduledAt:visit.scheduledAt});return{visit:visit,visitLine:visitLine,line:line,busy:busy,create:create,advance:advance,raise:raise}}var TELEVET_SIMULATOR_MOVES=/* @__PURE__ */Object.freeze(["completed","cancelled","no_show"]),TELEVET_SIMULATOR_EVENTS=/* @__PURE__ */Object.freeze(["rescheduled","reminder","followup_sent","message_received","ended"]);function televetTriageReadFrom(controller){let triage=controller?.triage;return!controller||!triage?null:async(reasonText,signal)=>{let res=await triage.call(controller,reasonText,signal);return res.ok?res.value:null}}function useEarlyTriage(read){let[open,setOpen]=react.useState(false),[checking,setChecking]=react.useState(false),[acknowledgedReason,setAcknowledgedReason]=react.useState(null),triaged=react.useRef(null),inFlight=react.useRef(null),live=react.useRef(true);react.useEffect(()=>(live.current=true,()=>{live.current=false,inFlight.current?.abort(),inFlight.current=null}),[]);let cancel=react.useCallback(()=>{inFlight.current?.abort(),inFlight.current=null,live.current&&setChecking(false)},[]),check=react.useCallback(async reasonText=>{if(inFlight.current!==null)return false;let reason=reasonText.trim();if(acknowledgedReason!==null&&acknowledgedReason===reason||!read)return true;let emergency=triaged.current!==null&&triaged.current.reason===reason?triaged.current.emergency:null;if(emergency===null){let controller=new AbortController;inFlight.current=controller,setChecking(true);try{let verdict=await read(reason,controller.signal);if(controller.signal.aborted||!live.current)return!1;verdict===null?emergency=!1:(emergency=verdict.isEmergency||verdict.fallback,triaged.current=/* @__PURE__ */Object.freeze({reason:reason,emergency:emergency}))}catch{if(controller.signal.aborted||!live.current)return false;emergency=false}finally{inFlight.current===controller&&(inFlight.current=null,live.current&&setChecking(false))}}return emergency===true?(setOpen(true),false):true},[acknowledgedReason,read]),acknowledge=react.useCallback(reasonText=>{setAcknowledgedReason(reasonText.trim()),setOpen(false)},[]),close=react.useCallback(()=>setOpen(false),[]),reset=react.useCallback(()=>{cancel(),triaged.current=null,setAcknowledgedReason(null),setOpen(false)},[cancel]),isAcknowledged=react.useCallback(reasonText=>acknowledgedReason!==null&&acknowledgedReason===reasonText.trim(),[acknowledgedReason]);return{open:open,checking:checking,check:check,acknowledge:acknowledge,close:close,cancel:cancel,reset:reset,isAcknowledged:isAcknowledged}}function normalizeStateCode(state){let code=state?.trim().toUpperCase()??"";return/^[A-Z]{2}$/.test(code)?code:null}function useStateInterest(state,write){let normalized=normalizeStateCode(state),[phases,setPhases]=react.useState(()=>/* @__PURE__ */Object.freeze({})),revision=react.useRef(0),lastKey=react.useRef(null),actionFor=react.useCallback(reason=>{if(!write||normalized===null)return null;let key=`${normalized}:${reason}`;lastKey.current!==null&&lastKey.current!==key&&(revision.current+=1),lastKey.current=key;let phase=phases[key]??"idle";return{joined:phase==="joined",pending:phase==="pending",failed:phase==="failed",onPress:()=>{if(phase==="pending"||phase==="joined")return;let mine=revision.current+=1;setPhases(prev=>/* @__PURE__ */Object.freeze({...prev,[key]:"pending"})),(async()=>{let joined=false;try{joined=await write(normalized,reason)}catch{joined=false}revision.current===mine&&setPhases(prev=>/* @__PURE__ */Object.freeze({...prev,[key]:joined?"joined":"failed"}))})()}}},[normalized,phases,write]);return react.useMemo(()=>({actionFor:actionFor}),[actionFor])}var ARTIFACT_ISSUES=/* @__PURE__ */Object.freeze([{id:"itchy-skin",label:"Itchy skin and allergies"},{id:"ear-infections",label:"Ear problems"},{id:"upset-stomach",label:"Upset stomach"},{id:"anxiety",label:"Anxiety and behavior"},{id:"parasites",label:"Fleas, ticks and heartworm"},{id:"joint-pain",label:"Joints and mobility"},{id:"eye-issues",label:"Eyes"},{id:"urinary",label:"Peeing and urinary"},{id:"surgery-aftercare",label:"Surgery aftercare"},{id:"senior-care",label:"Senior care"},{id:"wellness",label:"A wellness check-in"}].map(chip=>/* @__PURE__ */Object.freeze(chip))),TELEVET_OTHER_ISSUE_ID="other";function televetIssueChips(species){/* @__PURE__ */
134
- return Object.freeze([...ARTIFACT_ISSUES/* @__PURE__ */,Object.freeze({id:TELEVET_OTHER_ISSUE_ID,label:TELEVET_BOOKING_COPY.otherIssue})])}function composeTelevetReason(chipLabels,detail){let labels=chipLabels.filter(label=>label.trim().length>0),text2=detail.trim();return labels.length===0?text2:text2.length===0?labels.join(", "):`${labels.join(", ")}\n${text2}`}var TELEVET_US_STATES=/* @__PURE__ */Object.freeze([["AL","Alabama"],["AK","Alaska"],["AZ","Arizona"],["AR","Arkansas"],["CA","California"],["CO","Colorado"],["CT","Connecticut"],["DE","Delaware"],["DC","District of Columbia"],["FL","Florida"],["GA","Georgia"],["HI","Hawaii"],["ID","Idaho"],["IL","Illinois"],["IN","Indiana"],["IA","Iowa"],["KS","Kansas"],["KY","Kentucky"],["LA","Louisiana"],["ME","Maine"],["MD","Maryland"],["MA","Massachusetts"],["MI","Michigan"],["MN","Minnesota"],["MS","Mississippi"],["MO","Missouri"],["MT","Montana"],["NE","Nebraska"],["NV","Nevada"],["NH","New Hampshire"],["NJ","New Jersey"],["NM","New Mexico"],["NY","New York"],["NC","North Carolina"],["ND","North Dakota"],["OH","Ohio"],["OK","Oklahoma"],["OR","Oregon"],["PA","Pennsylvania"],["RI","Rhode Island"],["SC","South Carolina"],["SD","South Dakota"],["TN","Tennessee"],["TX","Texas"],["UT","Utah"],["VT","Vermont"],["VA","Virginia"],["WA","Washington"],["WV","West Virginia"],["WI","Wisconsin"],["WY","Wyoming"]].map(([code,name])=>/* @__PURE__ */Object.freeze({code:code,name:name})));function televetStateName(code){let upper=code?.trim().toUpperCase()??"";return TELEVET_US_STATES.find(s=>s.code===upper)?.name??upper}function televetWhereMeta(policy,petName){return policy?policy.wellnessAvailable?policy.prescriptionsAvailable?fill(TELEVET_BOOKING_COPY.wherePrescribeMetaTemplate,{pet:petName}):TELEVET_BOOKING_COPY.whereWellnessMeta:TELEVET_BOOKING_COPY.stateBlockedTitle:null}function televetWhereLicensedLine(clinician,policy,state,petName){if(!clinician||!policy||!state||!policy.prescriptionsAvailable)return null;let code=state.trim().toUpperCase();return clinician.licensedStates.some(l=>l.state.trim().toUpperCase()===code&&l.canPrescribe)?fill(TELEVET_BOOKING_COPY.whereLicensedTemplate,{vet:clinician.displayName,state:televetStateName(code),pet:petName}):null}function useTelevetWhere(args){let{hostState:hostState,state:state,policy:policy,clinician:clinician,petName:petName,controller:controller,onState:onState}=args,host=hostState&&isWellFormedStateCode(hostState)?hostState.trim().toUpperCase():null,current=state&&isWellFormedStateCode(state)?state.trim().toUpperCase():null,hostPolicy=useTelevetStatePolicy(host,controller),[otherMode,setOtherMode]=react.useState(host===null||current!==null&&current!==host),otherSelected=host===null||otherMode,pickHost=react.useCallback(()=>{host!==null&&(setOtherMode(false),onState(host))},[host,onState]),pickOther=react.useCallback(()=>{setOtherMode(true),current===host&&onState(null)},[current,host,onState]),pickState=react.useCallback(code=>{setOtherMode(true),onState(code.trim().toUpperCase())},[onState]),hostPlace=host===null?null:{code:host,name:televetStateName(host),meta:televetWhereMeta(hostPolicy.data,petName)},otherCode=otherSelected&&current!==null&&(host===null||current!==host||otherMode)?current:null,otherPlace=otherCode===null?null:{code:otherCode,name:televetStateName(otherCode),meta:televetWhereMeta(policy.data,petName)};return{hostPlace:hostPlace,otherSelected:otherSelected,otherPlace:otherPlace,licensedLine:televetWhereLicensedLine(clinician,policy.data,current,petName),stateName:current===null?null:televetStateName(current),canContinue:current!==null,pickHost:pickHost,pickOther:pickOther,pickState:pickState}}function useTelevetBookingIntake(args){let{reasonText:reasonText,state:state,hostState:hostState,clinicianId:clinicianId,clinicians:clinicians,policy:policy,petName:petName,controller:controller,dispatch:dispatch}=args,[concernIds,setConcernIds]=react.useState([]),[emergencyAnswer,setEmergencyAnswer]=react.useState(null),whereTouched=react.useRef(false),issueChips=react.useMemo(()=>televetIssueChips(),[]),concernLabels=concernIds.map(id=>issueChips.find(chip=>chip.id===id)?.label??"").filter(Boolean),composedReason=composeTelevetReason(concernLabels,reasonText),aboutLine=concernLabels.length>0?concernLabels.join(", "):reasonText.trim(),toggleConcern=react.useCallback(id=>setConcernIds(current=>current.includes(id)?current.filter(entry=>entry!==id):[...current,id]),[]),matchedClinician=clinicians?.find(c=>c.clinicianId===clinicianId)??clinicians?.[0]??null,where=useTelevetWhere({hostState:hostState,state:state,policy:policy,clinician:matchedClinician,petName:petName??TELEVET_BOOKING_COPY.petFallback,controller:controller,onState:react.useCallback(code=>{whereTouched.current=true,dispatch({type:"patch",patch:{state:code,clinicianId:null}})},[dispatch])});return{issueChips:issueChips,concernIds:concernIds,toggleConcern:toggleConcern,composedReason:composedReason,aboutLine:aboutLine,emergencyAnswer:emergencyAnswer,setEmergencyAnswer:setEmergencyAnswer,where:where,matchedClinician:matchedClinician,whereTouched:whereTouched}}var DEFAULT_ROOT_HEADING_LEVEL=2;function headingLevel(value){return typeof value!="number"||!Number.isInteger(value)?DEFAULT_ROOT_HEADING_LEVEL:value<1?1:value>6?6:value}function nextHeadingLevel(level){return level>=6?6:level+1}function headingTag(level){return`h${String(level)}`}var NESTED_HEADING_LEVEL_DEFAULT=nextHeadingLevel(DEFAULT_ROOT_HEADING_LEVEL),NestedHeadingLevelContext=react.createContext(NESTED_HEADING_LEVEL_DEFAULT);function useNestedHeadingLevel(){return react.useContext(NestedHeadingLevelContext)}function slotBox(slot,borderWidth){if(slot===void 0)return{};let out={};return slot.backgroundColor!==void 0&&(out.backgroundColor=slot.backgroundColor),slot.borderColor!==void 0&&(out.borderColor=slot.borderColor,out.borderWidth=1),slot.borderRadius!==void 0&&(out.borderRadius=slot.borderRadius),out}function slotText(slot){return slot?.textColor===void 0?{}:{color:slot.textColor}}function slotBoxCss(slot,borderWidth){let box=slotBox(slot),out={};return box.backgroundColor!==void 0&&(out.backgroundColor=box.backgroundColor),box.borderColor!==void 0&&(out.border=`${box.borderWidth??1}px solid ${box.borderColor}`),box.borderRadius!==void 0&&(out.borderRadius=box.borderRadius),out}var VISUALLY_HIDDEN=/* @__PURE__ */Object.freeze({position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0});var MIN_TOUCH_TARGET=44;function useBookingStyles(){let theme=useEverfurTheme();return react.useMemo(()=>makeBookingStyles(theme),[theme])}function TelevetButton({label:label,onPress:onPress,kind:kind="primary",size:size="md",disabled:disabled=false,loading:loading=false,fullWidth:fullWidth=true,accessibilityLabel:accessibilityLabel,describedBy:describedBy,busyAnnouncement:busyAnnouncement,testID:testID,style:style}){let styles=useBookingStyles(),blocked=disabled||loading,press=useTelevetPress(blocked),button=/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:blocked?void 0:onPress,...press.handlers,"aria-disabled":blocked||void 0,"aria-busy":loading||void 0,...accessibilityLabel&&accessibilityLabel!==label?{"aria-label":accessibilityLabel}:{},...describedBy?{"aria-describedby":describedBy}:{},"data-testid":testID,style:{...styles.button,...kind==="primary"?styles.buttonPrimary:kind==="danger"?styles.buttonDanger:kind==="quiet"?styles.buttonQuiet:styles.buttonSecondary,...size==="lg"?styles.buttonLarge:null,...fullWidth?styles.buttonFull:styles.buttonAuto,...blocked?styles.buttonDisabled:null,...press.style,...style},children:label});return busyAnnouncement===void 0?button:/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[button,
134
+ return Object.freeze([...ARTIFACT_ISSUES/* @__PURE__ */,Object.freeze({id:TELEVET_OTHER_ISSUE_ID,label:TELEVET_BOOKING_COPY.otherIssue})])}function composeTelevetReason(chipLabels,detail){let labels=chipLabels.filter(label=>label.trim().length>0),text2=detail.trim();return labels.length===0?text2:text2.length===0?labels.join(", "):`${labels.join(", ")}\n${text2}`}var TELEVET_US_STATES=/* @__PURE__ */Object.freeze([["AL","Alabama"],["AK","Alaska"],["AZ","Arizona"],["AR","Arkansas"],["CA","California"],["CO","Colorado"],["CT","Connecticut"],["DE","Delaware"],["DC","District of Columbia"],["FL","Florida"],["GA","Georgia"],["HI","Hawaii"],["ID","Idaho"],["IL","Illinois"],["IN","Indiana"],["IA","Iowa"],["KS","Kansas"],["KY","Kentucky"],["LA","Louisiana"],["ME","Maine"],["MD","Maryland"],["MA","Massachusetts"],["MI","Michigan"],["MN","Minnesota"],["MS","Mississippi"],["MO","Missouri"],["MT","Montana"],["NE","Nebraska"],["NV","Nevada"],["NH","New Hampshire"],["NJ","New Jersey"],["NM","New Mexico"],["NY","New York"],["NC","North Carolina"],["ND","North Dakota"],["OH","Ohio"],["OK","Oklahoma"],["OR","Oregon"],["PA","Pennsylvania"],["RI","Rhode Island"],["SC","South Carolina"],["SD","South Dakota"],["TN","Tennessee"],["TX","Texas"],["UT","Utah"],["VT","Vermont"],["VA","Virginia"],["WA","Washington"],["WV","West Virginia"],["WI","Wisconsin"],["WY","Wyoming"]].map(([code,name])=>/* @__PURE__ */Object.freeze({code:code,name:name})));function televetStateName(code){let upper=code?.trim().toUpperCase()??"";return TELEVET_US_STATES.find(s=>s.code===upper)?.name??upper}function televetWhereMeta(policy,petName){return policy?policy.wellnessAvailable?policy.prescriptionsAvailable?fill(TELEVET_BOOKING_COPY.wherePrescribeMetaTemplate,{pet:petName}):TELEVET_BOOKING_COPY.whereWellnessMeta:TELEVET_BOOKING_COPY.stateBlockedTitle:null}function televetWhereLicensedLine(clinician,policy,state,petName){if(!clinician||!policy||!state||!policy.prescriptionsAvailable)return null;let code=state.trim().toUpperCase();return clinician.licensedStates.some(l=>l.state.trim().toUpperCase()===code&&l.canPrescribe)?fill(TELEVET_BOOKING_COPY.whereLicensedTemplate,{vet:clinician.displayName,state:televetStateName(code),pet:petName}):null}function useTelevetWhere(args){let{hostState:hostState,state:state,policy:policy,clinician:clinician,petName:petName,controller:controller,onState:onState}=args,host=hostState&&isWellFormedStateCode(hostState)?hostState.trim().toUpperCase():null,current=state&&isWellFormedStateCode(state)?state.trim().toUpperCase():null,hostPolicy=useTelevetStatePolicy(host,controller),[otherMode,setOtherMode]=react.useState(host===null||current!==null&&current!==host),otherSelected=host===null||otherMode,pickHost=react.useCallback(()=>{host!==null&&(setOtherMode(false),onState(host))},[host,onState]),pickOther=react.useCallback(()=>{setOtherMode(true),current===host&&onState(null)},[current,host,onState]),pickState=react.useCallback(code=>{setOtherMode(true),onState(code.trim().toUpperCase())},[onState]),hostPlace=host===null?null:{code:host,name:televetStateName(host),meta:televetWhereMeta(hostPolicy.data,petName)},otherCode=otherSelected&&current!==null&&(host===null||current!==host||otherMode)?current:null,otherPlace=otherCode===null?null:{code:otherCode,name:televetStateName(otherCode),meta:televetWhereMeta(policy.data,petName)};return{hostPlace:hostPlace,otherSelected:otherSelected,otherPlace:otherPlace,licensedLine:televetWhereLicensedLine(clinician,policy.data,current,petName),stateName:current===null?null:televetStateName(current),canContinue:current!==null,pickHost:pickHost,pickOther:pickOther,pickState:pickState}}function useTelevetBookingIntake(args){let{reasonText:reasonText,state:state,hostState:hostState,clinicianId:clinicianId,clinicians:clinicians,policy:policy,petName:petName,controller:controller,dispatch:dispatch}=args,[concernIds,setConcernIds]=react.useState([]),[emergencyAnswer,setEmergencyAnswer]=react.useState(null),whereTouched=react.useRef(false),issueChips=react.useMemo(()=>televetIssueChips(),[]),concernLabels=concernIds.map(id=>issueChips.find(chip=>chip.id===id)?.label??"").filter(Boolean),composedReason=composeTelevetReason(concernLabels,reasonText),aboutLine=concernLabels.length>0?concernLabels.join(", "):reasonText.trim(),toggleConcern=react.useCallback(id=>setConcernIds(current=>current.includes(id)?current.filter(entry=>entry!==id):[...current,id]),[]),matchedClinician=clinicians?.find(c=>c.clinicianId===clinicianId)??clinicians?.[0]??null,where=useTelevetWhere({hostState:hostState,state:state,policy:policy,clinician:matchedClinician,petName:petName??TELEVET_BOOKING_COPY.petFallback,controller:controller,onState:react.useCallback(code=>{whereTouched.current=true,dispatch({type:"patch",patch:{state:code,clinicianId:null}})},[dispatch])});return{issueChips:issueChips,concernIds:concernIds,toggleConcern:toggleConcern,composedReason:composedReason,aboutLine:aboutLine,emergencyAnswer:emergencyAnswer,setEmergencyAnswer:setEmergencyAnswer,where:where,matchedClinician:matchedClinician,whereTouched:whereTouched}}var DEFAULT_ROOT_HEADING_LEVEL=2;function headingLevel(value){return typeof value!="number"||!Number.isInteger(value)?DEFAULT_ROOT_HEADING_LEVEL:value<1?1:value>6?6:value}function nextHeadingLevel(level){return level>=6?6:level+1}function headingTag(level){return`h${String(level)}`}var NESTED_HEADING_LEVEL_DEFAULT=nextHeadingLevel(DEFAULT_ROOT_HEADING_LEVEL),NestedHeadingLevelContext=react.createContext(NESTED_HEADING_LEVEL_DEFAULT);function useNestedHeadingLevel(){return react.useContext(NestedHeadingLevelContext)}function slotBox(slot,borderWidth){if(slot===void 0)return{};let out={};return slot.backgroundColor!==void 0&&(out.backgroundColor=slot.backgroundColor),slot.borderColor!==void 0&&(out.borderColor=slot.borderColor,out.borderWidth=borderWidth??1),slot.borderRadius!==void 0&&(out.borderRadius=slot.borderRadius),out}function slotText(slot){return slot?.textColor===void 0?{}:{color:slot.textColor}}function slotBoxCss(slot,borderWidth){let box=slotBox(slot,borderWidth),out={};return box.backgroundColor!==void 0&&(out.backgroundColor=box.backgroundColor),box.borderColor!==void 0&&(out.border=`${box.borderWidth??1}px solid ${box.borderColor}`),box.borderRadius!==void 0&&(out.borderRadius=box.borderRadius),out}var VISUALLY_HIDDEN=/* @__PURE__ */Object.freeze({position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0});function slotCss(slot,borderWidth){return{...slotBoxCss(slot,borderWidth),...slotText(slot)}}function slotLonghandCss(slot,borderWidth){let box=slotBox(slot,borderWidth),out={};return box.backgroundColor!==void 0&&(out.backgroundColor=box.backgroundColor),box.borderColor!==void 0&&(out.borderStyle="solid",out.borderWidth=box.borderWidth??1,out.borderColor=box.borderColor),box.borderRadius!==void 0&&(out.borderRadius=box.borderRadius),{...out,...slotText(slot)}}function slotInset(slot,inset){return slot?.backgroundColor===void 0&&slot?.borderColor===void 0?{}:{paddingLeft:inset,paddingRight:inset}}function slotRadius(slot){return slot?.borderRadius===void 0?{}:{borderRadius:slot.borderRadius}}var MIN_TOUCH_TARGET=44;function useBookingStyles(){let theme=useEverfurTheme();return react.useMemo(()=>makeBookingStyles(theme),[theme])}function TelevetButton({label:label,onPress:onPress,kind:kind="primary",size:size="md",disabled:disabled=false,loading:loading=false,fullWidth:fullWidth=true,accessibilityLabel:accessibilityLabel,describedBy:describedBy,busyAnnouncement:busyAnnouncement,testID:testID,style:style}){let styles=useBookingStyles(),blocked=disabled||loading,press=useTelevetPress(blocked),button=/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:blocked?void 0:onPress,...press.handlers,"aria-disabled":blocked||void 0,"aria-busy":loading||void 0,...accessibilityLabel&&accessibilityLabel!==label?{"aria-label":accessibilityLabel}:{},...describedBy?{"aria-describedby":describedBy}:{},"data-testid":testID,style:{...styles.button,...kind==="primary"?styles.buttonPrimary:kind==="danger"?styles.buttonDanger:kind==="quiet"?styles.buttonQuiet:styles.buttonSecondary,...size==="lg"?styles.buttonLarge:null,...fullWidth?styles.buttonFull:styles.buttonAuto,...blocked?styles.buttonDisabled:null,...press.style,...style},children:label});return busyAnnouncement===void 0?button:/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[button,
135
135
  /* @__PURE__ */jsxRuntime.jsx("span",{role:"status",style:VISUALLY_HIDDEN,children:loading?busyAnnouncement:""})]})}function TelevetStateCard({title:title,message:message,actionLabel:actionLabel,onAction:onAction,testID:testID}){let styles=useBookingStyles(),Title=headingTag(useNestedHeadingLevel()),actionable=typeof actionLabel=="string"&&actionLabel.length>0&&typeof onAction=="function";/* @__PURE__ */
136
136
  return jsxRuntime.jsxs("div",{style:styles.stateCard,"data-testid":testID,children:[
137
- /* @__PURE__ */jsxRuntime.jsx(Title,{style:styles.stateTitle,children:title}),message?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles.stateMessage,children:message}):null,actionable?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:actionLabel,onPress:onAction,kind:"secondary",fullWidth:false}):null]})}function useTelevetPress(disabled=false,scale=.97){let theme=useEverfurTheme(),[pressed,setPressed]=react.useState(false);if(theme.motion.reducedMotion||disabled)return{handlers:{},style:{}};let up=()=>setPressed(false);return{handlers:{onPointerDown:()=>setPressed(true),onPointerUp:up,onPointerLeave:up,onPointerCancel:up},style:{transform:pressed?`scale(${String(scale)})`:void 0,transition:`transform ${String(TELEVET_PRESS_MS)}ms ${theme.motion.easing.emphasized}, background-color ${String(theme.motion.duration.normal)}ms ease, border-color ${String(theme.motion.duration.normal)}ms ease`}}}var TELEVET_PRESS_MS=160;function TelevetSkeletonBlock({height:height,width:width="100%",testID:testID}){let styles=useBookingStyles();/* @__PURE__ */
137
+ /* @__PURE__ */jsxRuntime.jsx(Title,{style:styles.stateTitle,children:title}),message?/* @__PURE__ */jsxRuntime.jsx("p",{style:{...styles.stateMessage,...styles.cardInk},children:message}):null,actionable?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:actionLabel,onPress:onAction,kind:"secondary",fullWidth:false}):null]})}function useTelevetPress(disabled=false,scale=.97){let theme=useEverfurTheme(),[pressed,setPressed]=react.useState(false);if(theme.motion.reducedMotion||disabled)return{handlers:{},style:{}};let up=()=>setPressed(false);return{handlers:{onPointerDown:()=>setPressed(true),onPointerUp:up,onPointerLeave:up,onPointerCancel:up},style:{transform:pressed?`scale(${String(scale)})`:void 0,transition:`transform ${String(TELEVET_PRESS_MS)}ms ${theme.motion.easing.emphasized}, background-color ${String(theme.motion.duration.normal)}ms ease, border-color ${String(theme.motion.duration.normal)}ms ease`}}}var TELEVET_PRESS_MS=160;function TelevetSkeletonBlock({height:height,width:width="100%",testID:testID}){let styles=useBookingStyles();/* @__PURE__ */
138
138
  return jsxRuntime.jsx("span",{"aria-hidden":"true","data-testid":testID,style:{...styles.skeleton,height:height,width:width}})}function TelevetFailureLine({message:message,assertive:assertive=false,id:id,testID:testID,style:style}){let styles=useBookingStyles();/* @__PURE__ */
139
- return jsxRuntime.jsx("p",{role:assertive?"alert":"status",...id===void 0?{}:{id:id},"data-testid":testID,style:{...styles.failure,...style},children:message})}function makeBookingStyles(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`;return{screen:{...SURFACE_ROOT_RESET,display:"flex",flexDirection:"column",minHeight:0,flex:"1 1 auto",gap:rem(space.md),paddingLeft:rem(space.xl),paddingRight:rem(space.xl),boxSizing:"border-box"},stepFill:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,gap:rem(space.md)},list:{display:"flex",flexDirection:"column",gap:rem(space.sm)},button:{minHeight:MIN_TOUCH_TARGET,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:rem(space.sm),paddingLeft:rem(20),paddingRight:rem(20),paddingTop:rem(space.xs),paddingBottom:rem(space.xs),borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:"transparent",cursor:"pointer",textAlign:"center",...faceCss(theme,"bold"),fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.snug),boxSizing:"border-box"},buttonLarge:{minHeight:52,paddingLeft:rem(26),paddingRight:rem(26),fontSize:rem(16)},buttonFull:{alignSelf:"stretch",width:"100%"},buttonAuto:{alignSelf:"flex-start",minWidth:MIN_TOUCH_TARGET},buttonPrimary:{backgroundColor:color.primary,borderColor:color.primaryEdge,color:color.onPrimary,...slotBoxCss(slots.primaryButton),...slotText(slots.primaryButton)},buttonSecondary:{borderColor:color.brandInk,backgroundColor:color.surface,color:color.brandInk,...slots.primaryButton?.borderRadius===void 0?null:{borderRadius:rem(slots.primaryButton.borderRadius)},...slots.primaryButton?.borderColor===void 0?null:{borderColor:slots.primaryButton.borderColor}},buttonDanger:{backgroundColor:color.danger,borderColor:color.danger,color:color.onDanger},buttonQuiet:{backgroundColor:"transparent",borderColor:"transparent",color:color.brandInk,paddingLeft:rem(space.sm),paddingRight:rem(space.sm)},buttonDisabled:{opacity:.45,cursor:"not-allowed"},stateCard:{minHeight:140,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",gap:rem(space.sm),padding:rem(space.lg),borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:color.brandBorder,boxSizing:"border-box"},stateTitle:{margin:0,...faceCss(theme,"medium"),color:color.brandInk,fontSize:rem(size.subtitle),lineHeight:String(lineHeight.snug)},stateMessage:{margin:0,...faceCss(theme,"regular"),color:color.text.metaCool,fontSize:rem(size.body),lineHeight:String(lineHeight.normal)},skeleton:{display:"block",borderRadius:rem(radius.md),backgroundColor:color.skeleton,flexShrink:0},failure:{margin:0,...faceCss(theme,"regular"),color:color.danger,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal)},stepTitle:{margin:0,...faceCss(theme,"medium"),color:color.brandInk,fontSize:rem(tierPx(theme,"heading",30)),lineHeight:"1.1",letterSpacing:"-0.03em",textAlign:"left",textWrap:"balance"},stepHelp:{margin:0,...faceCss(theme,"regular"),color:color.text.primary,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed),textAlign:"left",maxWidth:"62ch"},divider:{height:1,backgroundColor:color.brandBorder,flexShrink:0},scrollRoot:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0},scrollBody:{position:"relative",flex:"1 1 auto",minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},scrollFooter:{flexShrink:0,paddingTop:rem(space.md),paddingBottom:rem(space.lg)}}}function TelevetEmergencyExits({petName:petName,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet,testIDPrefix:testIDPrefix}){let theme=useEverfurTheme(),local=react.useMemo(()=>makeExitStyles(theme),[theme]),name=petName?.trim()??"",hintId=`${react.useId()}-primary-vet-hint`;/* @__PURE__ */
139
+ return jsxRuntime.jsx("p",{role:assertive?"alert":"status",...id===void 0?{}:{id:id},"data-testid":testID,style:{...styles.failure,...style},children:message})}function makeBookingStyles(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`;return{screen:{...SURFACE_ROOT_RESET,display:"flex",flexDirection:"column",minHeight:0,flex:"1 1 auto",gap:rem(space.md),paddingLeft:rem(space.xl),paddingRight:rem(space.xl),boxSizing:"border-box"},stepFill:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,gap:rem(space.md)},list:{display:"flex",flexDirection:"column",gap:rem(space.sm)},button:{minHeight:MIN_TOUCH_TARGET,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:rem(space.sm),paddingLeft:rem(20),paddingRight:rem(20),paddingTop:rem(space.xs),paddingBottom:rem(space.xs),borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:"transparent",cursor:"pointer",textAlign:"center",...faceCss(theme,"bold"),fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.snug),boxSizing:"border-box"},buttonLarge:{minHeight:52,paddingLeft:rem(26),paddingRight:rem(26),fontSize:rem(16)},buttonFull:{alignSelf:"stretch",width:"100%"},buttonAuto:{alignSelf:"flex-start",minWidth:MIN_TOUCH_TARGET},buttonPrimary:{backgroundColor:color.primary,borderColor:color.primaryEdge,color:color.onPrimary,...slotBoxCss(slots.primaryButton),...slotText(slots.primaryButton)},buttonSecondary:{borderColor:color.brandInk,backgroundColor:color.surface,color:color.brandInk,...slots.primaryButton?.borderRadius===void 0?null:{borderRadius:rem(slots.primaryButton.borderRadius)},...slots.primaryButton?.borderColor===void 0?null:{borderColor:slots.primaryButton.borderColor}},buttonDanger:{backgroundColor:color.danger,borderColor:color.danger,color:color.onDanger},buttonQuiet:{backgroundColor:"transparent",borderColor:"transparent",color:color.brandInk,paddingLeft:rem(space.sm),paddingRight:rem(space.sm)},buttonDisabled:{opacity:.45,cursor:"not-allowed"},stateCard:{minHeight:140,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",gap:rem(space.sm),padding:rem(space.lg),borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:color.brandBorder,boxSizing:"border-box",...slotLonghandCss(slots.card,1)},stateTitle:{margin:0,...headingFaceCss(theme,"medium"),color:slots.card?.textColor??color.brandInk,fontSize:rem(size.subtitle),lineHeight:String(lineHeight.snug)},cardInk:slots.card?.textColor===void 0?{}:{color:slots.card.textColor},stateMessage:{margin:0,...faceCss(theme,"regular"),color:color.text.metaCool,fontSize:rem(size.body),lineHeight:String(lineHeight.normal)},skeleton:{display:"block",borderRadius:rem(radius.md),backgroundColor:color.skeleton,flexShrink:0},failure:{margin:0,...faceCss(theme,"regular"),color:color.danger,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal)},stepTitle:{margin:0,...headingFaceCss(theme,"medium"),color:color.brandInk,fontSize:rem(tierPx(theme,"heading",30)),lineHeight:"1.1",letterSpacing:"-0.03em",textAlign:"left",textWrap:"balance"},stepHelp:{margin:0,...faceCss(theme,"regular"),color:color.text.primary,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed),textAlign:"left",maxWidth:"62ch"},divider:{height:1,backgroundColor:color.brandBorder,flexShrink:0},scrollRoot:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0},scrollBody:{position:"relative",flex:"1 1 auto",minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},scrollFooter:{flexShrink:0,paddingTop:rem(space.md),paddingBottom:rem(space.lg)}}}function TelevetEmergencyExits({petName:petName,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet,testIDPrefix:testIDPrefix}){let theme=useEverfurTheme(),local=react.useMemo(()=>makeExitStyles(theme),[theme]),name=petName?.trim()??"",hintId=`${react.useId()}-primary-vet-hint`;/* @__PURE__ */
140
140
  return jsxRuntime.jsxs("div",{style:local.exits,"data-testid":`${testIDPrefix}-exits`,children:[onFindEmergencyVet?/* @__PURE__ */jsxRuntime.jsxs("button",{type:"button",onClick:()=>{callHost(onFindEmergencyVet)},style:{...local.card,...local.cardButton},"data-testid":`${testIDPrefix}-find-vet`,children:[
141
141
  /* @__PURE__ */jsxRuntime.jsx("span",{style:local.text,children:/* @__PURE__ */jsxRuntime.jsx("span",{style:local.title,children:TELEVET_EMERGENCY_EXITS_WEB.findEmergencyVet})}),
142
142
  /* @__PURE__ */jsxRuntime.jsx(Chevron,{})]}):null,
@@ -179,11 +179,13 @@ return jsxRuntime.jsxs("section",{style:styles.screen,"aria-labelledby":titleId,
179
179
  /* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:styles.stepNumber,children:String(i+1).padStart(2,"0")}),
180
180
  /* @__PURE__ */jsxRuntime.jsx("span",{style:styles.stepText,children:step.trim()})]},step))})}),
181
181
  /* @__PURE__ */jsxRuntime.jsxs("div",{style:styles.actions,children:[onAddToCalendar?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:calendarState==="saved"?TELEVET_BOOKING_COPY_WEB.booked.calendarAdded:TELEVET_BOOKING_COPY_WEB.addToCalendarCta,kind:"secondary",size:"lg",fullWidth:false,loading:calendarState==="saving",disabled:calendarState==="saving"||calendarState==="saved",onPress:()=>{addToCalendar()},testID:"televet-booked-calendar"}):null,
182
- /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.doneCta,kind:"primary",size:"lg",fullWidth:false,onPress:onDone,testID:"televet-booked-done"})]}),calendarState==="failed"?/* @__PURE__ */jsxRuntime.jsx("p",{role:"status",style:{...shared.failure,...styles.calendarNote},"data-testid":"televet-booked-calendar-failed",children:TELEVET_BOOKING_COPY_WEB.booked.calendarFailedBody}):null]})}function makeStyles2(theme){let{space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),rem=n=>`${String(n)}px`;return{screen:{display:"flex",flexDirection:"column",alignItems:"center",flex:"1 1 auto",minHeight:0,gap:rem(space.md),paddingTop:rem(space.xl),paddingBottom:rem(space.xl),boxSizing:"border-box",textAlign:"center"},avatar:{width:112,height:112,flexShrink:0,borderRadius:"50%",backgroundColor:look.mist,boxShadow:`0 0 0 6px ${look.surface}, 0 0 0 10px ${look.go}`,margin:rem(10),display:"inline-flex",alignItems:"center",justifyContent:"center",...faceCss(theme,"medium"),color:look.ink,fontSize:rem(40),lineHeight:"1"},title:{margin:0,...faceCss(theme,"medium"),color:look.ink,fontSize:rem(tierPx(theme,"heading",30)),lineHeight:"1.1",letterSpacing:"-0.03em",textWrap:"balance",paddingTop:rem(space.md)},when:{margin:0,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},card:{width:"min(560px, 100%)",marginTop:rem(space.md),padding:`${rem(space.sm)} ${rem(space.xl)}`,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:look.line,backgroundColor:look.surface,boxSizing:"border-box",textAlign:"left"},steps:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column"},step:{display:"grid",gridTemplateColumns:"44px 1fr",gap:rem(10),paddingTop:rem(14),paddingBottom:rem(14),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:look.line},stepLast:{borderBottomWidth:0},stepNumber:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(13),lineHeight:String(lineHeight.relaxed),paddingTop:2},stepText:{minWidth:0,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},actions:{display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",gap:rem(space.md),marginTop:rem(space.lg)},calendarNote:{textAlign:"center"}}}function createTelevetBackChannel(){let handlers=[];return{register(handler){return handlers=[...handlers,handler],()=>{handlers=handlers.filter(h=>h!==handler)}},dispatch(){for(let handler of[...handlers].reverse())try{if(handler())return!0}catch{}return false}}}var TelevetBackChannelContext=react.createContext(null);function useTelevetBackChannel(handler,enabled=true){let channel=react.useContext(TelevetBackChannelContext),current=react.useRef(handler);current.current=handler,react.useEffect(()=>{if(!(channel===null||!enabled))return channel.register(()=>current.current())},[channel,enabled])}var FOCUSABLE='button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';function isDialogElement(node){return node.tagName==="DIALOG"}function ownsEscape(node,event){if(event.isDefaultPrevented()||event.nativeEvent.isComposing)return false;let target=event.target;return!(target instanceof Element)||target.closest("dialog")===node}function useModalDialog(open,onClose,returnFocusTo,options){let escapeAtKeyDown=options?.escapeAtKeyDown===true,dialogRef=react.useRef(null),wasOpen=react.useRef(false),opener=react.useRef(null),trigger=react.useRef(returnFocusTo);trigger.current=returnFocusTo;let restoreFocus=react.useCallback(()=>{if(!wasOpen.current)return;wasOpen.current=false;let target=trigger.current===void 0?opener.current:trigger.current.current;target&&target.isConnected&&target.focus(),(!target||!target.isConnected||document.activeElement===target)&&(opener.current=null)},[]);react.useEffect(()=>{let node=dialogRef.current;if(!wasOpen.current){let active=typeof document>"u"?null:document.activeElement;active!==null&&node!==null&&node.contains(active)||(opener.current=active instanceof HTMLElement?active:null)}if(wasOpen.current=true,node===null)return;if(!isDialogElement(node)){node.contains(document.activeElement)||(node.querySelector(FOCUSABLE)??node).focus();return}let dialog=node;typeof dialog.showModal=="function"?dialog.open||dialog.showModal():dialog.setAttribute("open","")},[open,restoreFocus]),react.useEffect(()=>restoreFocus,[restoreFocus]),react.useEffect(()=>{let node=dialogRef.current;if(node===null||!isDialogElement(node))return;let dialog=node;if(typeof dialog.showModal!="function")return;let lastFocused=null,onFocusIn=event=>{event.target instanceof HTMLElement&&(lastFocused=event.target)},onNativeClose=()=>{if(!dialog.isConnected||dialog.open)return;let back=lastFocused;dialog.showModal(),back!==null&&back.isConnected&&dialog.contains(back)&&document.activeElement!==back&&back.focus()};return dialog.addEventListener("focusin",onFocusIn),dialog.addEventListener("close",onNativeClose),()=>{dialog.removeEventListener("focusin",onFocusIn),dialog.removeEventListener("close",onNativeClose)}},[open]);let onKeyDown=react.useCallback(event=>{let node=dialogRef.current;if(node===null)return;if(event.key==="Escape"&&!isDialogElement(node)){event.preventDefault(),event.stopPropagation(),onClose();return}if(event.key==="Escape"&&escapeAtKeyDown&&ownsEscape(node,event)){event.preventDefault(),onClose();return}if(event.key!=="Tab")return;let focusable=Array.from(node.querySelectorAll(FOCUSABLE)),first=focusable[0],last=focusable[focusable.length-1];if(!first||!last){event.preventDefault();return}let active=document.activeElement;event.shiftKey&&(active===first||!node.contains(active))?(event.preventDefault(),last.focus()):!event.shiftKey&&(active===last||!node.contains(active))&&(event.preventDefault(),first.focus())},[onClose,escapeAtKeyDown]),onCancel=react.useCallback(event=>{event.target===event.currentTarget&&(event.preventDefault(),onClose())},[onClose]);return{dialogRef:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel}}var TELEVET_EASE_OUT="cubic-bezier(0.23, 1, 0.32, 1)",TELEVET_EASE_IO="cubic-bezier(0.77, 0, 0.175, 1)";function makeLocalStyles(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),reduced=theme.motion.reducedMotion,rem=n=>`${String(n)}px`,settle=reduced?"none":"border-color 200ms ease, background-color 200ms ease";return{marker:{minHeight:1},visuallyHiddenHeading:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},stepBody:{display:"flex",flexDirection:"column",gap:rem(space.xl),paddingTop:rem(space.xs),paddingBottom:rem(space.xl)},head:{display:"flex",flexDirection:"column",gap:rem(space.sm)},footer:{display:"flex",flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:rem(space.lg),paddingTop:rem(space.lg),paddingBottom:rem(space.lg),flexShrink:0},footerMain:{marginLeft:"auto",flex:"1 1 200px",maxWidth:360,display:"flex"},fieldLabel:{margin:0,...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(12),letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:String(lineHeight.snug)},note:{margin:0,...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)},alertLine:{margin:0,...faceCss(theme,"bold"),color:look.alert,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)},options:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:rem(space.md)},optionsStack:{gridTemplateColumns:"minmax(0, 1fr)"},option:{width:"100%",display:"flex",flexDirection:"row",alignItems:"center",gap:rem(space.lg),padding:`${rem(18)} ${rem(20)}`,minHeight:64,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,color:look.text,textAlign:"left",cursor:"pointer",boxSizing:"border-box",transition:settle},optionSelected:{borderColor:look.ink,backgroundColor:look.pinkSoft},optionDot:{width:22,height:22,flexShrink:0,borderRadius:"50%",borderStyle:"solid",borderWidth:1.5,borderColor:look.ink,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},optionDotFill:{width:12,height:12,borderRadius:"50%",backgroundColor:look.ink,transform:"scale(0)",transition:reduced?"none":`transform 320ms ${TELEVET_EASE_OUT}`},optionDotFillOn:{transform:"scale(1)"},optionText:{display:"flex",flexDirection:"column",minWidth:0,gap:2,flex:"1 1 auto"},optionTitle:{...faceCss(theme,"bold"),color:look.ink,fontSize:rem(18),lineHeight:String(lineHeight.snug),overflowWrap:"anywhere"},optionMeta:{...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.normal),overflowWrap:"anywhere"},optionAvatar:{width:56,height:56,flexShrink:0,borderRadius:"50%",backgroundColor:look.mist,display:"inline-flex",alignItems:"center",justifyContent:"center",...faceCss(theme,"medium"),color:look.ink,fontSize:rem(size.subtitle),lineHeight:"1"},select:{width:"100%",minHeight:52,padding:`0 ${rem(space.lg)}`,borderRadius:rem(radius.md),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,color:look.text,...faceCss(theme,"regular"),fontSize:rem(size.body),boxSizing:"border-box"},callout:{margin:0,padding:`${rem(space.md)} ${rem(space.lg)}`,borderRadius:rem(radius.md),backgroundColor:look.mist,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)},chipRow:{display:"flex",flexWrap:"wrap",gap:rem(10)},chip:{minHeight:44,display:"inline-flex",alignItems:"center",gap:rem(space.sm),padding:`0 ${rem(space.lg)}`,borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:look.ink,backgroundColor:look.surface,color:look.ink,cursor:"pointer",...faceCss(theme,"bold"),fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.snug),transition:settle},chipOn:{backgroundColor:look.pink,color:look.onPink},field:{display:"flex",flexDirection:"column",gap:rem(10)},reasonInput:{width:"100%",minHeight:150,resize:"vertical",borderStyle:"solid",borderWidth:1.5,borderColor:look.line,borderRadius:rem(radius.lg),padding:`${rem(space.lg)} ${rem(18)}`,backgroundColor:look.surface,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed),boxSizing:"border-box",transition:reduced?"none":"border-color 200ms ease"},reasonInputFocus:{borderColor:look.ink,outline:"none"},signs:{margin:0,paddingLeft:rem(22),display:"flex",flexDirection:"column",gap:rem(space.sm),...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},emergencyBanner:{display:"flex",flexDirection:"column",alignItems:"stretch",gap:rem(space.md),padding:rem(20),borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1.5,borderColor:look.alert,backgroundColor:look.alertWash,boxSizing:"border-box"},emergencyTitle:{margin:0,...faceCss(theme,"bold"),color:color.errorRed,fontSize:rem(size.subtitle),lineHeight:String(lineHeight.snug)},emergencyLede:{margin:0,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},linkButton:{alignSelf:"flex-start",minHeight:44,padding:0,borderStyle:"none",background:"transparent",cursor:"pointer",textAlign:"left",...faceCss(theme,"bold"),color:look.ink,fontSize:rem(size.body),lineHeight:String(lineHeight.snug),textDecorationLine:"underline",textUnderlineOffset:3},meet:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",gap:rem(6),padding:`${rem(space.xxl)} ${rem(space.xl)}`,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:look.line,backgroundColor:look.surface},vetAvatar:{width:112,height:112,flexShrink:0,borderRadius:"50%",backgroundColor:look.mist,boxShadow:`0 0 0 4px ${look.surface}, 0 0 0 6px ${look.go}`,display:"inline-flex",alignItems:"center",justifyContent:"center",...faceCss(theme,"medium"),color:look.ink,fontSize:rem(tierPx(theme,"heading",40)),lineHeight:"1",marginBottom:rem(space.sm)},vetName:{margin:0,...faceCss(theme,"medium"),color:look.ink,fontSize:rem(size.heading),lineHeight:String(lineHeight.snug)},vetCredentials:{margin:0,...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.normal)},pills:{display:"flex",flexWrap:"wrap",justifyContent:"center",gap:rem(space.sm),margin:`${rem(space.sm)} 0`},pill:{display:"inline-flex",alignItems:"center",height:24,padding:`0 ${rem(10)}`,borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,...faceCss(theme,"monoBold"),color:look.muted,fontSize:rem(11.5),letterSpacing:"0.08em",textTransform:"uppercase",whiteSpace:"nowrap"},vetRating:{margin:0,...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal)},vetBio:{margin:0,maxWidth:"52ch",...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)}}}function TelevetBookingChrome({step:step,furthestIndex:furthestIndex,title:title,canGoBack:canGoBack,showBack:showBack=true,isDirty:isDirty,onBack:onBack,onClose:onClose,onConfirmDiscard:onConfirmDiscard,headingLevel:level=DEFAULT_ROOT_HEADING_LEVEL,triageOpen:triageOpen=false,stepContext:stepContext}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles3(theme),[theme]),[confirming,setConfirming]=react.useState(false),closeRef=react.useRef(null),closeHintId=`${react.useId()}-close-hint`,Title=headingTag(level);react.useEffect(()=>{if(!isDirty||typeof window>"u")return;let onBeforeUnload=event=>{event.preventDefault(),event.returnValue=""};return window.addEventListener("beforeunload",onBeforeUnload),()=>window.removeEventListener("beforeunload",onBeforeUnload)},[isDirty]);let confirmClose=react.useCallback(()=>{if(!isDirty){onClose();return}let prompt={title:TELEVET_BOOKING_COPY_WEB.chrome.discardTitle,body:TELEVET_BOOKING_COPY_WEB.chrome.discardBody,confirmLabel:TELEVET_BOOKING_COPY_WEB.chrome.discardConfirmCta,keepLabel:TELEVET_BOOKING_COPY_WEB.chrome.discardKeepCta};if(onConfirmDiscard){Promise.resolve(onConfirmDiscard(prompt)).then(leave=>{leave&&onClose()},()=>{});return}setConfirming(true)},[isDirty,onClose,onConfirmDiscard]);useTelevetBackChannel(()=>(confirmClose(),true));let steps=react.useMemo(()=>televetBarSteps(stepContext),[stepContext]),{current:current,total:total}=televetBarPosition(step,steps,triageOpen),label=step==="booked"?TELEVET_BOOKING_COPY_WEB.bookedStepLabel:fill(TELEVET_BOOKING_COPY_WEB.loading.progressTemplate,{step:String(current),total:String(total)});/* @__PURE__ */
182
+ /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.doneCta,kind:"primary",size:"lg",fullWidth:false,onPress:onDone,testID:"televet-booked-done"})]}),calendarState==="failed"?/* @__PURE__ */jsxRuntime.jsx("p",{role:"status",style:{...shared.failure,...styles.calendarNote},"data-testid":"televet-booked-calendar-failed",children:TELEVET_BOOKING_COPY_WEB.booked.calendarFailedBody}):null]})}function makeStyles2(theme){let{space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),rem=n=>`${String(n)}px`,cardInk=slots.card?.textColor===void 0?{}:{color:slots.card.textColor};return{screen:{display:"flex",flexDirection:"column",alignItems:"center",flex:"1 1 auto",minHeight:0,gap:rem(space.md),paddingTop:rem(space.xl),paddingBottom:rem(space.xl),boxSizing:"border-box",textAlign:"center"},avatar:{width:112,height:112,flexShrink:0,borderRadius:"50%",backgroundColor:look.mist,boxShadow:`0 0 0 6px ${look.surface}, 0 0 0 10px ${look.go}`,margin:rem(10),display:"inline-flex",alignItems:"center",justifyContent:"center",...faceCss(theme,"medium"),color:look.ink,fontSize:rem(40),lineHeight:"1"},title:{margin:0,...headingFaceCss(theme,"medium"),color:look.ink,fontSize:rem(tierPx(theme,"heading",30)),lineHeight:"1.1",letterSpacing:"-0.03em",textWrap:"balance",paddingTop:rem(space.md)},when:{margin:0,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},card:{width:"min(560px, 100%)",marginTop:rem(space.md),padding:`${rem(space.sm)} ${rem(space.xl)}`,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:look.line,backgroundColor:look.surface,boxSizing:"border-box",textAlign:"left",...slotLonghandCss(slots.card,1)},steps:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column"},step:{display:"grid",gridTemplateColumns:"44px 1fr",gap:rem(10),paddingTop:rem(14),paddingBottom:rem(14),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:look.line},stepLast:{borderBottomWidth:0},stepNumber:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(13),lineHeight:String(lineHeight.relaxed),paddingTop:2,...cardInk},stepText:{minWidth:0,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed),...cardInk},actions:{display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",gap:rem(space.md),marginTop:rem(space.lg)},calendarNote:{textAlign:"center"}}}function createTelevetBackChannel(){let handlers=[];return{register(handler){return handlers=[...handlers,handler],()=>{handlers=handlers.filter(h=>h!==handler)}},dispatch(){for(let handler of[...handlers].reverse())try{if(handler())return!0}catch{}return false}}}var TelevetBackChannelContext=react.createContext(null);function useTelevetBackChannel(handler,enabled=true){let channel=react.useContext(TelevetBackChannelContext),current=react.useRef(handler);current.current=handler,react.useEffect(()=>{if(!(channel===null||!enabled))return channel.register(()=>current.current())},[channel,enabled])}var FOCUSABLE='button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';function isDialogElement(node){return node.tagName==="DIALOG"}function ownsEscape(node,event){if(event.isDefaultPrevented()||event.nativeEvent.isComposing)return false;let target=event.target;return!(target instanceof Element)||target.closest("dialog")===node}function useModalDialog(open,onClose,returnFocusTo,options){let escapeAtKeyDown=options?.escapeAtKeyDown===true,dialogRef=react.useRef(null),wasOpen=react.useRef(false),opener=react.useRef(null),trigger=react.useRef(returnFocusTo);trigger.current=returnFocusTo;let restoreFocus=react.useCallback(()=>{if(!wasOpen.current)return;wasOpen.current=false;let target=trigger.current===void 0?opener.current:trigger.current.current;target&&target.isConnected&&target.focus(),(!target||!target.isConnected||document.activeElement===target)&&(opener.current=null)},[]);react.useEffect(()=>{let node=dialogRef.current;if(!wasOpen.current){let active=typeof document>"u"?null:document.activeElement;active!==null&&node!==null&&node.contains(active)||(opener.current=active instanceof HTMLElement?active:null)}if(wasOpen.current=true,node===null)return;if(!isDialogElement(node)){node.contains(document.activeElement)||(node.querySelector(FOCUSABLE)??node).focus();return}let dialog=node;typeof dialog.showModal=="function"?dialog.open||dialog.showModal():dialog.setAttribute("open","")},[open,restoreFocus]),react.useEffect(()=>restoreFocus,[restoreFocus]),react.useEffect(()=>{let node=dialogRef.current;if(node===null||!isDialogElement(node))return;let dialog=node;if(typeof dialog.showModal!="function")return;let lastFocused=null,onFocusIn=event=>{event.target instanceof HTMLElement&&(lastFocused=event.target)},onNativeClose=()=>{if(!dialog.isConnected||dialog.open)return;let back=lastFocused;dialog.showModal(),back!==null&&back.isConnected&&dialog.contains(back)&&document.activeElement!==back&&back.focus()};return dialog.addEventListener("focusin",onFocusIn),dialog.addEventListener("close",onNativeClose),()=>{dialog.removeEventListener("focusin",onFocusIn),dialog.removeEventListener("close",onNativeClose)}},[open]);let onKeyDown=react.useCallback(event=>{let node=dialogRef.current;if(node===null)return;if(event.key==="Escape"&&!isDialogElement(node)){event.preventDefault(),event.stopPropagation(),onClose();return}if(event.key==="Escape"&&escapeAtKeyDown&&ownsEscape(node,event)){event.preventDefault(),onClose();return}if(event.key!=="Tab")return;let focusable=Array.from(node.querySelectorAll(FOCUSABLE)),first=focusable[0],last=focusable[focusable.length-1];if(!first||!last){event.preventDefault();return}let active=document.activeElement;event.shiftKey&&(active===first||!node.contains(active))?(event.preventDefault(),last.focus()):!event.shiftKey&&(active===last||!node.contains(active))&&(event.preventDefault(),first.focus())},[onClose,escapeAtKeyDown]),onCancel=react.useCallback(event=>{event.target===event.currentTarget&&(event.preventDefault(),onClose())},[onClose]);return{dialogRef:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel}}function BrandImage({src:src,alt:alt,decorative:decorative=false,style:style,height:height,fallback:fallback=null,onFailed:onFailed}){let[failed,setFailed]=react.useState(null);return src===null||failed===src?fallback:/* @__PURE__ */jsxRuntime.jsx("img",{src:src,alt:decorative?"":alt,...decorative?{"aria-hidden":true}:{},...height===void 0?{}:{height:height},style:style,decoding:"async",referrerPolicy:"no-referrer",onError:()=>{setFailed(src),onFailed?.()}})}var LOGO_HEIGHT=28,LOGO_MAX_WIDTH=160,LOGO_STYLE=/* @__PURE__ */Object.freeze({display:"block",height:LOGO_HEIGHT,width:"auto",maxWidth:LOGO_MAX_WIDTH,objectFit:"contain"});function BrandLogo({logoUrl:logoUrl,name:name,styles:styles}){/* @__PURE__ */
183
+ return jsxRuntime.jsx(BrandImage,{src:logoUrl,alt:name,height:LOGO_HEIGHT,style:styles?.logo??LOGO_STYLE})}var TELEVET_EASE_OUT="cubic-bezier(0.23, 1, 0.32, 1)",TELEVET_EASE_IO="cubic-bezier(0.77, 0, 0.175, 1)";function makeLocalStyles(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),reduced=theme.motion.reducedMotion,rem=n=>`${String(n)}px`,settle=reduced?"none":"border-color 200ms ease, background-color 200ms ease",stepSlot=slots.bookingStep,stepBoxed=stepSlot?.backgroundColor!==void 0||stepSlot?.borderColor!==void 0,ink=slot=>slot?.textColor===void 0?{}:{color:slot.textColor};return{marker:{minHeight:1},visuallyHiddenHeading:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},stepBody:{display:"flex",flexDirection:"column",gap:rem(space.xl),paddingTop:rem(space.xs),paddingBottom:rem(space.xl),...slotLonghandCss(stepSlot,1),...stepBoxed?{paddingTop:rem(space.lg),paddingLeft:rem(space.lg),paddingRight:rem(space.lg)}:null},stepInk:ink(stepSlot),head:{display:"flex",flexDirection:"column",gap:rem(space.sm)},footer:{display:"flex",flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:rem(space.lg),paddingTop:rem(space.lg),paddingBottom:rem(space.lg),flexShrink:0},footerMain:{marginLeft:"auto",flex:"1 1 200px",maxWidth:360,display:"flex"},fieldLabel:{margin:0,...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(12),letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:String(lineHeight.snug)},note:{margin:0,...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)},alertLine:{margin:0,...faceCss(theme,"bold"),color:look.alert,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)},options:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:rem(space.md)},optionsStack:{gridTemplateColumns:"minmax(0, 1fr)"},option:{width:"100%",display:"flex",flexDirection:"row",alignItems:"center",gap:rem(space.lg),padding:`${rem(18)} ${rem(20)}`,minHeight:64,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,color:look.text,textAlign:"left",cursor:"pointer",boxSizing:"border-box",transition:settle,...slotRadius(slots.card)},optionSelected:{borderColor:look.ink,backgroundColor:look.pinkSoft},optionRest:slotLonghandCss(slots.card,1.5),optionRestInk:ink(slots.card),optionDot:{width:22,height:22,flexShrink:0,borderRadius:"50%",borderStyle:"solid",borderWidth:1.5,borderColor:look.ink,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},optionDotFill:{width:12,height:12,borderRadius:"50%",backgroundColor:look.ink,transform:"scale(0)",transition:reduced?"none":`transform 320ms ${TELEVET_EASE_OUT}`},optionDotFillOn:{transform:"scale(1)"},optionText:{display:"flex",flexDirection:"column",minWidth:0,gap:2,flex:"1 1 auto"},optionTitle:{...faceCss(theme,"bold"),color:look.ink,fontSize:rem(18),lineHeight:String(lineHeight.snug),overflowWrap:"anywhere"},optionMeta:{...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.normal),overflowWrap:"anywhere"},optionAvatar:{width:56,height:56,flexShrink:0,borderRadius:"50%",backgroundColor:look.mist,display:"inline-flex",alignItems:"center",justifyContent:"center",...faceCss(theme,"medium"),color:look.ink,fontSize:rem(size.subtitle),lineHeight:"1"},select:{width:"100%",minHeight:52,padding:`0 ${rem(space.lg)}`,borderRadius:rem(radius.md),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,color:look.text,...faceCss(theme,"regular"),fontSize:rem(size.body),boxSizing:"border-box",...slotLonghandCss(slots.input,1.5)},callout:{margin:0,padding:`${rem(space.md)} ${rem(space.lg)}`,borderRadius:rem(radius.md),backgroundColor:look.mist,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)},chipRow:{display:"flex",flexWrap:"wrap",gap:rem(10)},chip:{minHeight:44,display:"inline-flex",alignItems:"center",gap:rem(space.sm),padding:`0 ${rem(space.lg)}`,borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:look.ink,backgroundColor:look.surface,color:look.ink,cursor:"pointer",...faceCss(theme,"bold"),fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.snug),transition:settle,...slotRadius(slots.chip)},chipOn:{backgroundColor:look.pink,color:look.onPink},chipRest:slotLonghandCss(slots.chip,1.5),field:{display:"flex",flexDirection:"column",gap:rem(10)},reasonInput:{width:"100%",minHeight:150,resize:"vertical",borderStyle:"solid",borderWidth:1.5,borderColor:look.line,borderRadius:rem(radius.lg),padding:`${rem(space.lg)} ${rem(18)}`,backgroundColor:look.surface,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed),boxSizing:"border-box",transition:reduced?"none":"border-color 200ms ease",...slotLonghandCss(slots.input,1.5)},reasonInputFocus:{borderColor:look.ink,outline:"none"},signs:{margin:0,paddingLeft:rem(22),display:"flex",flexDirection:"column",gap:rem(space.sm),...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},emergencyBanner:{display:"flex",flexDirection:"column",alignItems:"stretch",gap:rem(space.md),padding:rem(20),borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1.5,borderColor:look.alert,backgroundColor:look.alertWash,boxSizing:"border-box"},emergencyTitle:{margin:0,...faceCss(theme,"bold"),color:color.errorRed,fontSize:rem(size.subtitle),lineHeight:String(lineHeight.snug)},emergencyLede:{margin:0,...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed)},linkButton:{alignSelf:"flex-start",minHeight:44,padding:0,borderStyle:"none",background:"transparent",cursor:"pointer",textAlign:"left",...faceCss(theme,"bold"),color:look.ink,fontSize:rem(size.body),lineHeight:String(lineHeight.snug),textDecorationLine:"underline",textUnderlineOffset:3},meet:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",gap:rem(6),padding:`${rem(space.xxl)} ${rem(space.xl)}`,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:look.line,backgroundColor:look.surface,...slotLonghandCss(slots.card,1)},vetAvatar:{width:112,height:112,flexShrink:0,borderRadius:"50%",backgroundColor:look.mist,boxShadow:`0 0 0 4px ${look.surface}, 0 0 0 6px ${look.go}`,display:"inline-flex",alignItems:"center",justifyContent:"center",...faceCss(theme,"medium"),color:look.ink,fontSize:rem(tierPx(theme,"heading",40)),lineHeight:"1",marginBottom:rem(space.sm)},vetName:{margin:0,...headingFaceCss(theme,"medium"),color:look.ink,...ink(slots.card),fontSize:rem(size.heading),lineHeight:String(lineHeight.snug)},vetCredentials:{margin:0,...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.normal),...ink(slots.card)},pills:{display:"flex",flexWrap:"wrap",justifyContent:"center",gap:rem(space.sm),margin:`${rem(space.sm)} 0`},pill:{display:"inline-flex",alignItems:"center",height:24,padding:`0 ${rem(10)}`,borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,...faceCss(theme,"monoBold"),color:look.muted,fontSize:rem(11.5),letterSpacing:"0.08em",textTransform:"uppercase",whiteSpace:"nowrap"},vetRating:{margin:0,...faceCss(theme,"regular"),color:look.muted,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal),...ink(slots.card)},vetBio:{margin:0,maxWidth:"52ch",...faceCss(theme,"regular"),color:look.text,fontSize:rem(size.body),lineHeight:String(lineHeight.relaxed),...ink(slots.card)}}}function TelevetBookingChrome({step:step,furthestIndex:furthestIndex,title:title,canGoBack:canGoBack,showBack:showBack=true,isDirty:isDirty,onBack:onBack,onClose:onClose,onConfirmDiscard:onConfirmDiscard,headingLevel:level=DEFAULT_ROOT_HEADING_LEVEL,triageOpen:triageOpen=false,stepContext:stepContext}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles3(theme),[theme]),[confirming,setConfirming]=react.useState(false),closeRef=react.useRef(null),closeHintId=`${react.useId()}-close-hint`,Title=headingTag(level);react.useEffect(()=>{if(!isDirty||typeof window>"u")return;let onBeforeUnload=event=>{event.preventDefault(),event.returnValue=""};return window.addEventListener("beforeunload",onBeforeUnload),()=>window.removeEventListener("beforeunload",onBeforeUnload)},[isDirty]);let confirmClose=react.useCallback(()=>{if(!isDirty){onClose();return}let prompt={title:TELEVET_BOOKING_COPY_WEB.chrome.discardTitle,body:TELEVET_BOOKING_COPY_WEB.chrome.discardBody,confirmLabel:TELEVET_BOOKING_COPY_WEB.chrome.discardConfirmCta,keepLabel:TELEVET_BOOKING_COPY_WEB.chrome.discardKeepCta};if(onConfirmDiscard){Promise.resolve(onConfirmDiscard(prompt)).then(leave=>{leave&&onClose()},()=>{});return}setConfirming(true)},[isDirty,onClose,onConfirmDiscard]);useTelevetBackChannel(()=>(confirmClose(),true));let steps=react.useMemo(()=>televetBarSteps(stepContext),[stepContext]),{current:current,total:total}=televetBarPosition(step,steps,triageOpen),label=step==="booked"?TELEVET_BOOKING_COPY_WEB.bookedStepLabel:fill(TELEVET_BOOKING_COPY_WEB.loading.progressTemplate,{step:String(current),total:String(total)});/* @__PURE__ */
183
184
  return jsxRuntime.jsxs("div",{style:styles.wrap,children:[
184
185
  /* @__PURE__ */jsxRuntime.jsxs("header",{style:styles.bar,children:[
185
186
  /* @__PURE__ */jsxRuntime.jsx("button",{type:"button",ref:closeRef,onClick:confirmClose,"aria-label":TELEVET_BOOKING_COPY_WEB.close,"aria-describedby":closeHintId,"data-testid":"televet-booking-close",style:styles.ring,children:/* @__PURE__ */jsxRuntime.jsx("svg",{"aria-hidden":"true",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */jsxRuntime.jsx("path",{d:"M18 6 6 18M6 6l12 12"})})}),
186
187
  /* @__PURE__ */jsxRuntime.jsx("span",{id:closeHintId,style:VISUALLY_HIDDEN,children:TELEVET_BOOKING_COPY_WEB.chrome.closeHint}),
188
+ /* @__PURE__ */jsxRuntime.jsx(BrandLogo,{logoUrl:theme.meta.logoUrl,name:theme.meta.displayName,styles:styles.logo}),
187
189
  /* @__PURE__ */jsxRuntime.jsx(Title,{style:VISUALLY_HIDDEN,children:title??TELEVET_BOOKING_COPY_WEB.navTitle}),showBack&&canGoBack?/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:onBack,"data-testid":"televet-booking-back",style:styles.back,children:TELEVET_BOOKING_COPY_WEB.backLabel}):null,
188
190
  /* @__PURE__ */jsxRuntime.jsx("div",{"aria-hidden":"true",style:styles.track,"data-testid":"televet-booking-rail",children:/* @__PURE__ */jsxRuntime.jsx("span",{"data-step":String(current),style:{...styles.fill,transform:`scaleX(${String(current/total)})`}})}),
189
191
  /* @__PURE__ */jsxRuntime.jsx("p",{style:styles.stepLabel,"data-testid":"televet-booking-progress-label",children:label})]}),confirming?/* @__PURE__ */jsxRuntime.jsx(DiscardDialog,{onKeep:()=>setConfirming(false),onLeave:()=>{setConfirming(false),onClose()},returnFocusTo:closeRef}):null]})}function DiscardDialog({onKeep:onKeep,onLeave:onLeave,returnFocusTo:returnFocusTo}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles3(theme),[theme]),{dialogRef:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel}=useModalDialog(true,onKeep,returnFocusTo),ids=react.useId(),titleId=`${ids}-discard-title`,bodyId=`${ids}-discard-body`;/* @__PURE__ */
@@ -192,24 +194,24 @@ return jsxRuntime.jsxs("dialog",{ref:dialogRef,onKeyDown:onKeyDown,onCancel:onCa
192
194
  /* @__PURE__ */jsxRuntime.jsx("p",{id:bodyId,style:styles.dialogBody,children:TELEVET_BOOKING_COPY_WEB.chrome.discardBody}),
193
195
  /* @__PURE__ */jsxRuntime.jsxs("div",{style:styles.dialogActions,children:[
194
196
  /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.chrome.discardKeepCta,onPress:onKeep,kind:"primary",fullWidth:false,testID:"televet-booking-discard-keep"}),
195
- /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.chrome.discardConfirmCta,onPress:onLeave,kind:"secondary",fullWidth:false,testID:"televet-booking-discard-leave"})]})]})}var BACK_LABEL="Back";function makeStyles3(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`,reduced=theme.motion.reducedMotion;return{wrap:{flexShrink:0},bar:{display:"flex",flexDirection:"row",alignItems:"center",gap:rem(14),paddingTop:rem(space.xs),paddingBottom:rem(space.xl),minHeight:56,boxSizing:"border-box"},ring:{width:MIN_TOUCH_TARGET,height:MIN_TOUCH_TARGET,flexShrink:0,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,borderRadius:"50%",borderStyle:"solid",borderWidth:1.5,borderColor:color.borderRingCream,backgroundColor:color.surface,color:color.brandInk,cursor:"pointer",boxSizing:"border-box"},back:{flexShrink:0,minHeight:MIN_TOUCH_TARGET,padding:`0 ${rem(space.sm)}`,background:"transparent",borderStyle:"none",cursor:"pointer",...faceCss(theme,"bold"),color:color.brandInk,fontSize:rem(size.bodyTight)},track:{flex:"1 1 auto",minWidth:0,height:6,borderRadius:rem(6),backgroundColor:color.surfaceSubtle,overflow:"hidden"},fill:{display:"block",height:"100%",borderRadius:rem(6),backgroundColor:color.brandInk,transformOrigin:"0 50%",transition:reduced?"none":`transform 600ms ${TELEVET_EASE_IO}`},stepLabel:{margin:0,flexShrink:0,...faceCss(theme,"monoBold"),color:color.brandInk,fontSize:rem(12),letterSpacing:"0.1em",textTransform:"uppercase",whiteSpace:"nowrap",lineHeight:String(lineHeight.snug)},dialog:{margin:"auto",maxWidth:420,width:"calc(100% - 32px)",boxSizing:"border-box",padding:rem(space.lg),borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:color.brandBorder,backgroundColor:color.surface,color:color.text.primary},dialogTitle:{margin:0,...faceCss(theme,"medium"),color:color.brandInk,fontSize:rem(size.subtitle),lineHeight:String(lineHeight.snug)},dialogBody:{margin:0,paddingTop:rem(space.sm),...faceCss(theme,"regular"),color:color.text.metaCool,fontSize:rem(size.body),lineHeight:String(lineHeight.normal)},dialogActions:{display:"flex",flexDirection:"row",flexWrap:"wrap",gap:rem(space.sm),paddingTop:rem(space.lg)}}}function formatTelevetPetMetaLine(pet){let parts=[],breed=pet.breed?.trim();breed&&parts.push(breed);let years=wholeYears(pet.ageYears);years!==null&&parts.push(`${String(years)} year${years===1?"":"s"}`);let weight=pet.weightKg;return typeof weight=="number"&&Number.isFinite(weight)&&weight>0&&parts.push(`${String(Math.round(weight))} kg`),parts.join(" · ")}function wholeYears(ageYears){if(typeof ageYears!="number"||!Number.isFinite(ageYears))return null;let years=Math.floor(ageYears);return years>=0?years:null}function TelevetIntakeMedia({media:media,onChange:onChange,onPickMedia:onPickMedia,listLabel:listLabel,meta:meta}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles4(theme),[theme]),remaining=MEDIA_REFS_MAX-media.length,[busy,setBusy]=react.useState(false);if(!onPickMedia)return null;let pick2=async()=>{if(!(busy||remaining<=0)){setBusy(true);try{let outcome=await callHostAsync(onPickMedia,remaining);if(!outcome.ok||outcome.value===null||outcome.value.length===0)return;let existing=new Set(media.map(m=>m.uri)),fresh2=outcome.value.filter(p=>typeof p?.uri=="string"&&p.uri.length>0&&!existing.has(p.uri));if(fresh2.length===0)return;onChange([...media,...fresh2].slice(0,MEDIA_REFS_MAX))}finally{setBusy(false)}}};/* @__PURE__ */
197
+ /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.chrome.discardConfirmCta,onPress:onLeave,kind:"secondary",fullWidth:false,testID:"televet-booking-discard-leave"})]})]})}var BACK_LABEL="Back";function makeStyles3(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`,reduced=theme.motion.reducedMotion,headerInk=slots.header?.textColor??color.brandInk,headerBoxed=slots.header?.backgroundColor!==void 0||slots.header?.borderColor!==void 0,dialogText=slots.dialog?.textColor;return{wrap:{flexShrink:0},bar:{display:"flex",flexDirection:"row",alignItems:"center",gap:rem(14),paddingTop:rem(space.xs),paddingBottom:rem(space.xl),minHeight:56,boxSizing:"border-box",...slotLonghandCss(slots.header,1),...slotInset(slots.header,space.md),...headerBoxed?{paddingBottom:rem(space.xs),marginBottom:rem(space.xl-space.xs)}:null},logo:{logo:{display:"block",height:28,width:"auto",maxWidth:96,objectFit:"contain",flexShrink:0}},ring:{width:MIN_TOUCH_TARGET,height:MIN_TOUCH_TARGET,flexShrink:0,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,borderRadius:"50%",borderStyle:"solid",borderWidth:1.5,borderColor:color.borderRingCream,backgroundColor:color.surface,color:color.brandInk,cursor:"pointer",boxSizing:"border-box"},back:{flexShrink:0,minHeight:MIN_TOUCH_TARGET,padding:`0 ${rem(space.sm)}`,background:"transparent",borderStyle:"none",cursor:"pointer",...faceCss(theme,"bold"),color:headerInk,fontSize:rem(size.bodyTight)},track:{flex:"1 1 auto",minWidth:0,height:6,borderRadius:rem(6),backgroundColor:color.surfaceSubtle,overflow:"hidden"},fill:{display:"block",height:"100%",borderRadius:rem(6),backgroundColor:color.brandInk,transformOrigin:"0 50%",transition:reduced?"none":`transform 600ms ${TELEVET_EASE_IO}`},stepLabel:{margin:0,flexShrink:0,...faceCss(theme,"monoBold"),color:headerInk,fontSize:rem(12),letterSpacing:"0.1em",textTransform:"uppercase",whiteSpace:"nowrap",lineHeight:String(lineHeight.snug)},dialog:{margin:"auto",maxWidth:420,width:"calc(100% - 32px)",boxSizing:"border-box",padding:rem(space.lg),borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:color.brandBorder,backgroundColor:color.surface,color:color.text.primary,...slotLonghandCss(slots.dialog,1)},dialogTitle:{margin:0,...headingFaceCss(theme,"medium"),color:dialogText??color.brandInk,fontSize:rem(size.subtitle),lineHeight:String(lineHeight.snug)},dialogBody:{margin:0,paddingTop:rem(space.sm),...faceCss(theme,"regular"),color:dialogText??color.text.metaCool,fontSize:rem(size.body),lineHeight:String(lineHeight.normal)},dialogActions:{display:"flex",flexDirection:"row",flexWrap:"wrap",gap:rem(space.sm),paddingTop:rem(space.lg)}}}function formatTelevetPetMetaLine(pet){let parts=[],breed=pet.breed?.trim();breed&&parts.push(breed);let years=wholeYears(pet.ageYears);years!==null&&parts.push(`${String(years)} year${years===1?"":"s"}`);let weight=pet.weightKg;return typeof weight=="number"&&Number.isFinite(weight)&&weight>0&&parts.push(`${String(Math.round(weight))} kg`),parts.join(" · ")}function wholeYears(ageYears){if(typeof ageYears!="number"||!Number.isFinite(ageYears))return null;let years=Math.floor(ageYears);return years>=0?years:null}function TelevetIntakeMedia({media:media,onChange:onChange,onPickMedia:onPickMedia,listLabel:listLabel,meta:meta}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles4(theme),[theme]),remaining=MEDIA_REFS_MAX-media.length,[busy,setBusy]=react.useState(false);if(!onPickMedia)return null;let pick2=async()=>{if(!(busy||remaining<=0)){setBusy(true);try{let outcome=await callHostAsync(onPickMedia,remaining);if(!outcome.ok||outcome.value===null||outcome.value.length===0)return;let existing=new Set(media.map(m=>m.uri)),fresh2=outcome.value.filter(p=>typeof p?.uri=="string"&&p.uri.length>0&&!existing.has(p.uri));if(fresh2.length===0)return;onChange([...media,...fresh2].slice(0,MEDIA_REFS_MAX))}finally{setBusy(false)}}};/* @__PURE__ */
196
198
  return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
197
199
  /* @__PURE__ */jsxRuntime.jsxs("ul",{role:"list","aria-label":listLabel,style:styles.row,children:[media.map((m,i)=>/* @__PURE__ */jsxRuntime.jsxs("li",{style:styles.thumb,children:[
198
200
  /* @__PURE__ */jsxRuntime.jsx("img",{src:m.uri,alt:m.filename,style:styles.thumbImage}),m.mimeType.startsWith("video/")?/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:styles.videoBadge,"data-testid":`televet-intake-media-video-${String(i)}`,children:VIDEO_GLYPH}):null,
199
201
  /* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>onChange(media.filter((_,idx)=>idx!==i)),"aria-label":`${TELEVET_BOOKING_COPY_WEB.removePhotoLabel}: ${m.filename}`,"data-testid":`televet-intake-media-remove-${String(i)}`,style:styles.remove,children:/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:styles.removeGlyph,children:REMOVE_GLYPH})})]},`${m.uri}-${String(i)}`)),remaining>0?/* @__PURE__ */jsxRuntime.jsx("li",{style:styles.addItem,children:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>{pick2()},disabled:busy,"aria-busy":busy||void 0,"data-testid":"televet-intake-add-media",style:{...styles.dropzone,...busy?styles.dropzoneBusy:null},children:/* @__PURE__ */jsxRuntime.jsx("span",{style:styles.dropzoneText,children:TELEVET_BOOKING_COPY_WEB.addPhotoCta})})}):null]}),meta?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles.meta,"data-testid":"televet-intake-media-meta",children:meta}):null]})}var REMOVE_GLYPH="×",VIDEO_GLYPH="▶",TILE=92;function makeStyles4(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`;return{row:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"row",flexWrap:"wrap",gap:rem(space.md),paddingTop:rem(space.sm)},thumb:{position:"relative",width:TILE,height:TILE,borderRadius:rem(radius.md),backgroundColor:color.surfaceSubtle},thumbImage:{width:"100%",height:"100%",objectFit:"cover",borderRadius:rem(radius.md),display:"block"},videoBadge:{position:"absolute",left:6,bottom:6,paddingLeft:6,paddingRight:6,paddingTop:2,paddingBottom:2,borderRadius:rem(radius.sm),backgroundColor:color.shadow,color:color.text.onBrand,fontSize:rem(size.nano),lineHeight:"1"},addItem:{display:"flex"},remove:{position:"absolute",top:-8,right:-8,width:MIN_TOUCH_TARGET-16,height:MIN_TOUCH_TARGET-16,borderRadius:"50%",borderStyle:"none",backgroundColor:color.text.metaCool,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0},removeGlyph:{...faceCss(theme,"medium"),color:color.surface,fontSize:rem(size.subtitle),lineHeight:"1"},dropzone:{width:TILE,height:TILE,borderRadius:rem(radius.md),borderWidth:1,borderStyle:"dashed",borderColor:color.brandBorder,backgroundColor:"transparent",display:"inline-flex",alignItems:"center",justifyContent:"center",paddingLeft:rem(space.sm),paddingRight:rem(space.sm),cursor:"pointer",boxSizing:"border-box"},dropzoneBusy:{opacity:.6,cursor:"progress"},meta:{...faceCss(theme,"regular"),margin:0,paddingTop:rem(space.sm),color:color.text.metaCool,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal)},dropzoneText:{...faceCss(theme,"mono"),color:color.text.metaCool,fontSize:rem(size.nano),lineHeight:String(lineHeight.normal),letterSpacing:"0.3px",textAlign:"center"}}}function TelevetDayStrip({slots:slots,selectedDayKey:selectedDayKey,onSelectDay:onSelectDay,groupLabel:groupLabel}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles5(theme),[theme]),days=react.useMemo(()=>televetDaysFromSlots(slots),[slots]),refs=react.useRef(/* @__PURE__ */new Map),first=days[0],activeKey=selectedDayKey??first?.key??null,stripRef=react.useRef(null),revealed=react.useRef(false);react.useEffect(()=>{if(revealed.current)return;let strip=stripRef.current,chip=activeKey===null?void 0:refs.current.get(activeKey);if(!strip||!chip||(revealed.current=true,activeKey===first?.key))return;let offset=chip.getBoundingClientRect().left-strip.getBoundingClientRect().left;strip.scrollLeft+=offset-(strip.clientWidth-chip.clientWidth)/2},[activeKey,first]);let onKeyDown=react.useCallback(event=>{let delta=event.key==="ArrowRight"||event.key==="ArrowDown"?1:event.key==="ArrowLeft"||event.key==="ArrowUp"?-1:0,jump=event.key==="Home"?0:event.key==="End"?days.length-1:null;if(delta===0&&jump===null)return;let index=days.findIndex(d=>d.key===activeKey);if(index<0)return;let target=jump??Math.min(days.length-1,Math.max(0,index+delta)),day=days[target];day===void 0||day.key===activeKey||(event.preventDefault(),onSelectDay(day),refs.current.get(day.key)?.focus())},[days,activeKey,onSelectDay]);return first===void 0?null:/* @__PURE__ */jsxRuntime.jsxs("div",{children:[
200
202
  /* @__PURE__ */jsxRuntime.jsx("p",{"aria-hidden":"true",style:styles.month,"data-testid":"televet-day-strip-month",children:formatMonthLabel(first.iso)}),
201
203
  /* @__PURE__ */jsxRuntime.jsx("div",{ref:stripRef,role:"radiogroup","aria-label":groupLabel,onKeyDown:onKeyDown,style:styles.strip,"data-testid":"televet-day-strip",children:days.map(day=>{let selected=day.key===activeKey;/* @__PURE__ */
202
- return jsxRuntime.jsxs("button",{ref:node=>{node?refs.current.set(day.key,node):refs.current.delete(day.key)},type:"button",role:"radio","aria-checked":selected,tabIndex:selected?0:-1,onClick:()=>onSelectDay(day),"aria-label":formatFullDayLabel(day.iso),"data-testid":`televet-day-${day.key}`,style:{...styles.day,...selected?styles.daySelected:null},children:[
203
- /* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.dayWeekday,...selected?styles.dayTextSelected:null},children:day.weekday}),
204
- /* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.dayNumber,...selected?styles.dayTextSelected:null},children:day.dayNumber})]},day.key)})})]})}function televetDaysFromSlots(slots){let seen=/* @__PURE__ */new Map;for(let slot of slots){let key=localDayKey(slot.startsAt);if(seen.has(key))continue;let date2=new Date(slot.startsAt);Number.isNaN(date2.getTime())||seen.set(key,
204
+ return jsxRuntime.jsxs("button",{ref:node=>{node?refs.current.set(day.key,node):refs.current.delete(day.key)},type:"button",role:"radio","aria-checked":selected,tabIndex:selected?0:-1,onClick:()=>onSelectDay(day),"aria-label":formatFullDayLabel(day.iso),"data-testid":`televet-day-${day.key}`,style:{...styles.day,...selected?styles.daySelected:styles.dayRest},children:[
205
+ /* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.dayWeekday,...selected?styles.dayTextSelected:styles.dayTextRest},children:day.weekday}),
206
+ /* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.dayNumber,...selected?styles.dayTextSelected:styles.dayTextRest},children:day.dayNumber})]},day.key)})})]})}function televetDaysFromSlots(slots){let seen=/* @__PURE__ */new Map;for(let slot of slots){let key=localDayKey(slot.startsAt);if(seen.has(key))continue;let date2=new Date(slot.startsAt);Number.isNaN(date2.getTime())||seen.set(key,
205
207
  /* @__PURE__ */Object.freeze({key:key,iso:slot.startsAt,weekday:date2.toLocaleDateString(void 0,{weekday:"short"}),dayNumber:String(date2.getDate())}))}/* @__PURE__ */
206
- return Object.freeze([...seen.values()])}function makeStyles5(theme){let{space:space,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),rem=n=>`${String(n)}px`;return{month:{margin:0,...faceCss(theme,"bold"),color:look.ink,fontSize:rem(19),lineHeight:String(lineHeight.snug),paddingBottom:rem(14)},strip:{display:"flex",flexDirection:"row",gap:rem(space.sm),padding:2,margin:"0 -2px",overflowX:"auto",overscrollBehaviorX:"contain",scrollSnapType:"x proximity",scrollbarWidth:"none"},day:{width:64,height:72,flexShrink:0,scrollSnapAlign:"center",minHeight:MIN_TOUCH_TARGET,padding:0,borderRadius:rem(14),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,cursor:"pointer",boxSizing:"border-box",transition:theme.motion.reducedMotion?"none":"border-color 180ms ease, background-color 180ms ease"},daySelected:{backgroundColor:look.pink,borderColor:look.ink},dayWeekday:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(11),letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:String(lineHeight.tight)},dayNumber:{...faceCss(theme,"medium"),color:look.ink,fontSize:rem(size.heading),letterSpacing:"-0.02em",lineHeight:String(lineHeight.tight)},dayTextSelected:{color:look.onPink}}}function TelevetSlotPicker({slots:slots,busySlotId:busySlotId,onPick:onPick,selectedSlot:selectedSlot=null,header:header,dayGroupLabel:dayGroupLabel,timeGroupLabel:timeGroupLabel,rowTestIdPrefix:rowTestIdPrefix="televet-slot",testID:testID="televet-slot-list",periodLabels:periodLabels,timeLegendTemplate:timeLegendTemplate}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles6(theme),[theme]),days=react.useMemo(()=>televetDaysFromSlots(slots),[slots]),zoneId=`${react.useId()}-zone`,[dayKey,setDayKey]=react.useState(null),selectedDay=selectedSlot?localDayKey(selectedSlot.startsAt):null,activeDay=firstOffered(days,[dayKey,selectedDay])??days[0]?.key??null,times=react.useMemo(()=>activeDay?slots.filter(s=>localDayKey(s.startsAt)===activeDay):[],[slots,activeDay]),first=times[0],blocked=busySlotId!==null,ordered=react.useMemo(()=>groups(times,periodLabels).flatMap(group=>group.slots),[times,periodLabels]),[focusId,setFocusId]=react.useState(null),chipRefs=react.useRef(/* @__PURE__ */new Map),has=id=>id!=null&&ordered.some(slot=>slot.slotId===id),stopId=has(focusId)?focusId:has(selectedSlot?.slotId)?selectedSlot?.slotId??null:ordered[0]?.slotId??null,onGridKeyDown=event=>{let index=ordered.findIndex(slot2=>chipRefs.current.get(slot2.slotId)===event.target);if(index<0)return;let target=slotIndexForKey(event.key,index,ordered.map(slot2=>chipRefs.current.get(slot2.slotId)??null));if(target===null||target===index)return;event.preventDefault();let slot=ordered[target];slot!==void 0&&(setFocusId(slot.slotId),chipRefs.current.get(slot.slotId)?.focus())},zone=first?formatZone(first.startsAt):null,legend=timeLegendTemplate&&first?fill(timeLegendTemplate,{day:formatFullDayLabel(first.startsAt)}):timeGroupLabel;
208
+ return Object.freeze([...seen.values()])}function makeStyles5(theme){let{space:space,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),rem=n=>`${String(n)}px`;return{month:{margin:0,...faceCss(theme,"bold"),color:look.ink,fontSize:rem(19),lineHeight:String(lineHeight.snug),paddingBottom:rem(14)},strip:{display:"flex",flexDirection:"row",gap:rem(space.sm),padding:2,margin:"0 -2px",overflowX:"auto",overscrollBehaviorX:"contain",scrollSnapType:"x proximity",scrollbarWidth:"none"},day:{width:64,height:72,flexShrink:0,scrollSnapAlign:"center",minHeight:MIN_TOUCH_TARGET,padding:0,borderRadius:rem(14),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,cursor:"pointer",boxSizing:"border-box",transition:theme.motion.reducedMotion?"none":"border-color 180ms ease, background-color 180ms ease",...slotRadius(slots.chip)},daySelected:{backgroundColor:look.pink,borderColor:look.ink},dayRest:slotLonghandCss(slots.chip,1.5),dayTextRest:slots.chip?.textColor===void 0?{}:{color:slots.chip.textColor},dayWeekday:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(11),letterSpacing:"0.08em",textTransform:"uppercase",lineHeight:String(lineHeight.tight)},dayNumber:{...faceCss(theme,"medium"),color:look.ink,fontSize:rem(size.heading),letterSpacing:"-0.02em",lineHeight:String(lineHeight.tight)},dayTextSelected:{color:look.onPink}}}function TelevetSlotPicker({slots:slots,busySlotId:busySlotId,onPick:onPick,selectedSlot:selectedSlot=null,header:header,dayGroupLabel:dayGroupLabel,timeGroupLabel:timeGroupLabel,rowTestIdPrefix:rowTestIdPrefix="televet-slot",testID:testID="televet-slot-list",periodLabels:periodLabels,timeLegendTemplate:timeLegendTemplate}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles6(theme),[theme]),days=react.useMemo(()=>televetDaysFromSlots(slots),[slots]),zoneId=`${react.useId()}-zone`,[dayKey,setDayKey]=react.useState(null),selectedDay=selectedSlot?localDayKey(selectedSlot.startsAt):null,activeDay=firstOffered(days,[dayKey,selectedDay])??days[0]?.key??null,times=react.useMemo(()=>activeDay?slots.filter(s=>localDayKey(s.startsAt)===activeDay):[],[slots,activeDay]),first=times[0],blocked=busySlotId!==null,ordered=react.useMemo(()=>groups(times,periodLabels).flatMap(group=>group.slots),[times,periodLabels]),[focusId,setFocusId]=react.useState(null),chipRefs=react.useRef(/* @__PURE__ */new Map),has=id=>id!=null&&ordered.some(slot=>slot.slotId===id),stopId=has(focusId)?focusId:has(selectedSlot?.slotId)?selectedSlot?.slotId??null:ordered[0]?.slotId??null,onGridKeyDown=event=>{let index=ordered.findIndex(slot2=>chipRefs.current.get(slot2.slotId)===event.target);if(index<0)return;let target=slotIndexForKey(event.key,index,ordered.map(slot2=>chipRefs.current.get(slot2.slotId)??null));if(target===null||target===index)return;event.preventDefault();let slot=ordered[target];slot!==void 0&&(setFocusId(slot.slotId),chipRefs.current.get(slot.slotId)?.focus())},zone=first?formatZone(first.startsAt):null,legend=timeLegendTemplate&&first?fill(timeLegendTemplate,{day:formatFullDayLabel(first.startsAt)}):timeGroupLabel;
207
209
  /* @__PURE__ */
208
210
  return jsxRuntime.jsxs("div",{style:styles.root,"data-testid":testID,children:[header,
209
211
  /* @__PURE__ */jsxRuntime.jsx(TelevetDayStrip,{slots:slots,selectedDayKey:activeDay,onSelectDay:day=>setDayKey(day.key),groupLabel:dayGroupLabel}),zone?/* @__PURE__ */jsxRuntime.jsx("p",{id:zoneId,style:styles.zone,"data-testid":"televet-slot-zone",children:zone}):null,
210
212
  /* @__PURE__ */jsxRuntime.jsx("div",{style:styles.gridScroll,onKeyDown:onGridKeyDown,children:groups(times,periodLabels).map(group=>/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles.group,children:[group.label?/* @__PURE__ */jsxRuntime.jsx("p",{"aria-hidden":"true",style:styles.period,"data-testid":`televet-slot-period-${group.key}`,children:group.label}):null,
211
213
  /* @__PURE__ */jsxRuntime.jsx("ul",{role:"list","aria-label":group.label?`${legend}, ${group.label}`:legend,...zone?{"aria-describedby":zoneId}:{},"aria-busy":blocked||void 0,style:styles.grid,children:group.slots.map(slot=>{let busy=busySlotId===slot.slotId,picked=selectedSlot?.slotId===slot.slotId;/* @__PURE__ */
212
- return jsxRuntime.jsx("li",{style:styles.gridItem,children:/* @__PURE__ */jsxRuntime.jsx("button",{ref:node=>{node?chipRefs.current.set(slot.slotId,node):chipRefs.current.delete(slot.slotId)},type:"button",tabIndex:slot.slotId===stopId?0:-1,onClick:blocked?void 0:()=>onPick(slot),onFocus:()=>setFocusId(slot.slotId),"aria-disabled":blocked||void 0,"aria-busy":busy||void 0,"aria-pressed":picked||void 0,"aria-label":formatWhenWithDay(slot.startsAt),"data-testid":`${rowTestIdPrefix}-${slot.slotId}`,style:{...styles.chip,...picked?styles.chipPicked:null,...busy?styles.chipBusy:null,...blocked&&!busy?styles.chipDisabled:null},children:/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.chipLabel,...picked?styles.chipLabelPicked:null,...busy?styles.chipLabelBusy:null},children:formatClock(slot.startsAt)})})},slot.slotId)})})]},group.key))})]})}function slotIndexForKey(key,index,chips){let last=chips.length-1;if(key==="ArrowRight")return Math.min(last,index+1);if(key==="ArrowLeft")return Math.max(0,index-1);if(key==="Home")return 0;if(key==="End")return last;if(key!=="ArrowDown"&&key!=="ArrowUp")return null;let from=chips[index]?.getBoundingClientRect();if(from===void 0)return null;let centre=from.left+from.width/2,down=key==="ArrowDown",best=null;for(let i=0;i<chips.length;i+=1){let chip=chips[i];if(chip==null||i===index)continue;let box=chip.getBoundingClientRect(),row2=down?box.top-from.top:from.top-box.top;if(row2<from.height/2)continue;let dx=Math.abs(box.left+box.width/2-centre);(best===null||row2<best.row-1||Math.abs(row2-best.row)<=1&&dx<best.dx)&&(best={index:i,row:row2,dx:dx})}return best===null?index:best.index}function groups(times,labels){return labels?["morning","afternoon","evening"].map(period=>({key:period,label:labels[period],slots:times.filter(s=>televetDayPeriod(s.startsAt)===period)})).filter(group=>group.slots.length>0):[{key:"all",label:null,slots:times}]}function firstOffered(days,keys){for(let key of keys)if(key!==null&&days.some(day=>day.key===key))return key;return null}function makeStyles6(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),rem=n=>`${String(n)}px`,settle=theme.motion.reducedMotion?"none":"border-color 180ms ease, background-color 180ms ease";return{root:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,gap:rem(space.md)},gridScroll:{flex:"1 1 auto",minHeight:0,overflowY:"auto",overscrollBehavior:"contain",display:"flex",flexDirection:"column",gap:rem(space.lg),paddingBottom:rem(space.md)},group:{display:"flex",flexDirection:"column",gap:rem(space.sm)},period:{margin:0,...faceCss(theme,"bold"),color:look.ink,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.snug)},zone:{margin:0,...faceCss(theme,"mono"),color:look.muted,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal),letterSpacing:"0.04em"},grid:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(104px, 1fr))",gap:rem(space.sm)},gridItem:{display:"flex",minWidth:0},chip:{width:"100%",minHeight:44,borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,display:"inline-flex",alignItems:"center",justifyContent:"center",paddingLeft:rem(space.lg),paddingRight:rem(space.lg),cursor:"pointer",boxSizing:"border-box",transition:settle},chipPicked:{borderColor:look.ink,backgroundColor:look.pink},chipLabelPicked:{color:look.onPink},chipBusy:{backgroundColor:color.primary,borderColor:color.primary},chipDisabled:{opacity:.45,cursor:"not-allowed"},chipLabel:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(size.bodyTight),fontVariantNumeric:"tabular-nums",lineHeight:String(lineHeight.tight)},chipLabelBusy:{color:color.onPrimary}}}function TelevetSummaryRow({label:label,value:value,last:last=false,action:action,testID:testID}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles7(theme),[theme]);/* @__PURE__ */
214
+ return jsxRuntime.jsx("li",{style:styles.gridItem,children:/* @__PURE__ */jsxRuntime.jsx("button",{ref:node=>{node?chipRefs.current.set(slot.slotId,node):chipRefs.current.delete(slot.slotId)},type:"button",tabIndex:slot.slotId===stopId?0:-1,onClick:blocked?void 0:()=>onPick(slot),onFocus:()=>setFocusId(slot.slotId),"aria-disabled":blocked||void 0,"aria-busy":busy||void 0,"aria-pressed":picked||void 0,"aria-label":formatWhenWithDay(slot.startsAt),"data-testid":`${rowTestIdPrefix}-${slot.slotId}`,style:{...styles.chip,...picked?styles.chipPicked:styles.chipRest,...busy?styles.chipBusy:null,...blocked&&!busy?styles.chipDisabled:null},children:/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.chipLabel,...picked?styles.chipLabelPicked:styles.chipLabelRest,...busy?styles.chipLabelBusy:null},children:formatClock(slot.startsAt)})})},slot.slotId)})})]},group.key))})]})}function slotIndexForKey(key,index,chips){let last=chips.length-1;if(key==="ArrowRight")return Math.min(last,index+1);if(key==="ArrowLeft")return Math.max(0,index-1);if(key==="Home")return 0;if(key==="End")return last;if(key!=="ArrowDown"&&key!=="ArrowUp")return null;let from=chips[index]?.getBoundingClientRect();if(from===void 0)return null;let centre=from.left+from.width/2,down=key==="ArrowDown",best=null;for(let i=0;i<chips.length;i+=1){let chip=chips[i];if(chip==null||i===index)continue;let box=chip.getBoundingClientRect(),row2=down?box.top-from.top:from.top-box.top;if(row2<from.height/2)continue;let dx=Math.abs(box.left+box.width/2-centre);(best===null||row2<best.row-1||Math.abs(row2-best.row)<=1&&dx<best.dx)&&(best={index:i,row:row2,dx:dx})}return best===null?index:best.index}function groups(times,labels){return labels?["morning","afternoon","evening"].map(period=>({key:period,label:labels[period],slots:times.filter(s=>televetDayPeriod(s.startsAt)===period)})).filter(group=>group.slots.length>0):[{key:"all",label:null,slots:times}]}function firstOffered(days,keys){for(let key of keys)if(key!==null&&days.some(day=>day.key===key))return key;return null}function makeStyles6(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),rem=n=>`${String(n)}px`,settle=theme.motion.reducedMotion?"none":"border-color 180ms ease, background-color 180ms ease";return{root:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,gap:rem(space.md)},gridScroll:{flex:"1 1 auto",minHeight:0,overflowY:"auto",overscrollBehavior:"contain",display:"flex",flexDirection:"column",gap:rem(space.lg),paddingBottom:rem(space.md)},group:{display:"flex",flexDirection:"column",gap:rem(space.sm)},period:{margin:0,...faceCss(theme,"bold"),color:look.ink,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.snug)},zone:{margin:0,...faceCss(theme,"mono"),color:look.muted,fontSize:rem(size.caption),lineHeight:String(lineHeight.normal),letterSpacing:"0.04em"},grid:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(104px, 1fr))",gap:rem(space.sm)},gridItem:{display:"flex",minWidth:0},chip:{width:"100%",minHeight:44,borderRadius:rem(radius.pill),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,display:"inline-flex",alignItems:"center",justifyContent:"center",paddingLeft:rem(space.lg),paddingRight:rem(space.lg),cursor:"pointer",boxSizing:"border-box",transition:settle,...slotRadius(slots.chip)},chipPicked:{borderColor:look.ink,backgroundColor:look.pink},chipRest:slotLonghandCss(slots.chip,1.5),chipLabelRest:slots.chip?.textColor===void 0?{}:{color:slots.chip.textColor},chipLabelPicked:{color:look.onPink},chipBusy:{backgroundColor:color.primary,borderColor:color.primary},chipDisabled:{opacity:.45,cursor:"not-allowed"},chipLabel:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:rem(size.bodyTight),fontVariantNumeric:"tabular-nums",lineHeight:String(lineHeight.tight)},chipLabelBusy:{color:color.onPrimary}}}function TelevetSummaryRow({label:label,value:value,last:last=false,action:action,testID:testID}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles7(theme),[theme]);/* @__PURE__ */
213
215
  return jsxRuntime.jsxs("div",{style:{...styles.row,...last?styles.rowLast:null},"data-testid":testID,children:[
214
216
  /* @__PURE__ */jsxRuntime.jsx("dt",{style:styles.rowLabel,children:label}),
215
217
  /* @__PURE__ */jsxRuntime.jsxs("dd",{style:{...styles.rowValue,...styles.rowValueLine},children:[
@@ -219,7 +221,7 @@ return jsxRuntime.jsxs("label",{style:styles.consent,children:[
219
221
  /* @__PURE__ */jsxRuntime.jsx("input",{type:"checkbox",checked:checked,onChange:event=>onToggle(event.currentTarget.checked),"data-testid":testID,style:VISUALLY_HIDDEN}),
220
222
  /* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:{...styles.box,...checked?styles.boxChecked:null},children:checked?/* @__PURE__ */jsxRuntime.jsx("span",{style:styles.tick,children:TICK}):null}),
221
223
  /* @__PURE__ */jsxRuntime.jsx("span",{style:styles.consentLabel,children:label})]})}var TICK="✓";function TelevetSummaryCard({children:children,testID:testID}){let theme=useEverfurTheme(),styles=react.useMemo(()=>makeStyles7(theme),[theme]);/* @__PURE__ */
222
- return jsxRuntime.jsx("dl",{style:styles.card,"data-testid":testID,children:children})}function makeStyles7(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`;return{card:{margin:0,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:color.borderRingCream,backgroundColor:color.surface,paddingLeft:rem(space.xl),paddingRight:rem(space.xl),paddingTop:rem(space.xs),paddingBottom:rem(space.xs),boxSizing:"border-box"},row:{display:"flex",flexDirection:"column",gap:2,paddingTop:rem(space.md),paddingBottom:rem(space.md),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:color.borderRingCream},rowLast:{borderBottomWidth:0},rowValueLine:{display:"flex",flexDirection:"row",alignItems:"center",gap:rem(14)},rowValueText:{flex:"1 1 auto",minWidth:0},rowAction:{flexShrink:0,marginLeft:"auto",whiteSpace:"normal"},rowLabel:{margin:0,...faceCss(theme,"regular"),color:color.text.muted,fontSize:rem(14),lineHeight:String(lineHeight.normal)},rowValue:{margin:0,marginInlineStart:0,minWidth:0,overflowWrap:"anywhere",whiteSpace:"pre-line",...faceCss(theme,"bold"),color:color.brandInk,fontSize:rem(size.body),lineHeight:String(lineHeight.snug)},consent:{display:"flex",flexDirection:"row",alignItems:"flex-start",gap:rem(space.md),minHeight:MIN_TOUCH_TARGET,padding:`${rem(14)} ${rem(space.lg)}`,borderRadius:rem(radius.sm),backgroundColor:color.surfaceSubtle,cursor:"pointer",boxSizing:"border-box"},box:{width:24,height:24,marginTop:1,flexShrink:0,borderRadius:rem(radius.xs),borderStyle:"solid",borderWidth:1.5,borderColor:color.brandInk,backgroundColor:color.surface,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",transition:theme.motion.reducedMotion?"none":"background-color 180ms ease"},boxChecked:{backgroundColor:color.primary,borderColor:color.primary},tick:{...faceCss(theme,"bold"),color:color.onPrimary,fontSize:rem(size.caption),lineHeight:"1"},consentLabel:{flex:"1 1 auto",minWidth:0,overflowWrap:"anywhere",...faceCss(theme,"regular"),color:color.text.primary,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)}}}function ReviewStep({headingRef:headingRef,when:when,onChangeWhen:onChangeWhen,stateName:stateName,about:about,lengthMinutes:lengthMinutes,clinician:clinician,petName:petName,reason:reason,shareRecords:shareRecords,onToggleShare:onToggleShare,stateCode:stateCode,stateAttested:stateAttested,onToggleStateAttest:onToggleStateAttest,cancellationTerms:cancellationTerms,termsAttested:termsAttested,onToggleTermsAttest:onToggleTermsAttest,canConfirm:ready,busy:busy,failure:failure2,onConfirm:onConfirm,emergency:emergency,onAcknowledgeEmergency:onAcknowledgeEmergency,onSeeOtherVets:onSeeOtherVets,mediaShortfall:mediaShortfall=NO_MEDIA_SHORTFALL,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet}){let styles=useBookingStyles(),theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]),[unticked,setUnticked]=react.useState(false),emergencyLede=TELEVET_BOOKING_COPY_WEB.emergency.lede,place=stateName??stateCode??"",attestLabel=petName?fill(TELEVET_BOOKING_COPY_WEB.whereAttestTemplate,{pet:petName,state:place}):fill(TELEVET_BOOKING_COPY_WEB.stateAttestTemplate,{state:place}),aboutLine=about??reason,twoBoxes=!!stateCode&&!!cancellationTerms,ticked=(!stateCode||stateAttested)&&(!cancellationTerms||termsAttested);/* @__PURE__ */
224
+ return jsxRuntime.jsx("dl",{style:styles.card,"data-testid":testID,children:children})}function makeStyles7(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,rem=n=>`${String(n)}px`,cardInk=slots.card?.textColor===void 0?{}:{color:slots.card.textColor};return{card:{margin:0,borderRadius:rem(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:color.borderRingCream,backgroundColor:color.surface,paddingLeft:rem(space.xl),paddingRight:rem(space.xl),paddingTop:rem(space.xs),paddingBottom:rem(space.xs),boxSizing:"border-box",...slotLonghandCss(slots.card,1)},row:{display:"flex",flexDirection:"column",gap:2,paddingTop:rem(space.md),paddingBottom:rem(space.md),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:color.borderRingCream},rowLast:{borderBottomWidth:0},rowValueLine:{display:"flex",flexDirection:"row",alignItems:"center",gap:rem(14)},rowValueText:{flex:"1 1 auto",minWidth:0},rowAction:{flexShrink:0,marginLeft:"auto",whiteSpace:"normal"},rowLabel:{margin:0,...faceCss(theme,"regular"),color:color.text.muted,fontSize:rem(14),lineHeight:String(lineHeight.normal),...cardInk},rowValue:{margin:0,marginInlineStart:0,minWidth:0,overflowWrap:"anywhere",whiteSpace:"pre-line",...faceCss(theme,"bold"),color:color.brandInk,fontSize:rem(size.body),lineHeight:String(lineHeight.snug),...cardInk},consent:{display:"flex",flexDirection:"row",alignItems:"flex-start",gap:rem(space.md),minHeight:MIN_TOUCH_TARGET,padding:`${rem(14)} ${rem(space.lg)}`,borderRadius:rem(radius.sm),backgroundColor:color.surfaceSubtle,cursor:"pointer",boxSizing:"border-box"},box:{width:24,height:24,marginTop:1,flexShrink:0,borderRadius:rem(radius.xs),borderStyle:"solid",borderWidth:1.5,borderColor:color.brandInk,backgroundColor:color.surface,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box",transition:theme.motion.reducedMotion?"none":"background-color 180ms ease"},boxChecked:{backgroundColor:color.primary,borderColor:color.primary},tick:{...faceCss(theme,"bold"),color:color.onPrimary,fontSize:rem(size.caption),lineHeight:"1"},consentLabel:{flex:"1 1 auto",minWidth:0,overflowWrap:"anywhere",...faceCss(theme,"regular"),color:color.text.primary,fontSize:rem(size.bodyTight),lineHeight:String(lineHeight.relaxed)}}}function ReviewStep({headingRef:headingRef,when:when,onChangeWhen:onChangeWhen,stateName:stateName,about:about,lengthMinutes:lengthMinutes,clinician:clinician,petName:petName,reason:reason,shareRecords:shareRecords,onToggleShare:onToggleShare,stateCode:stateCode,stateAttested:stateAttested,onToggleStateAttest:onToggleStateAttest,cancellationTerms:cancellationTerms,termsAttested:termsAttested,onToggleTermsAttest:onToggleTermsAttest,canConfirm:ready,busy:busy,failure:failure2,onConfirm:onConfirm,emergency:emergency,onAcknowledgeEmergency:onAcknowledgeEmergency,onSeeOtherVets:onSeeOtherVets,mediaShortfall:mediaShortfall=NO_MEDIA_SHORTFALL,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet}){let styles=useBookingStyles(),theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]),[unticked,setUnticked]=react.useState(false),emergencyLede=TELEVET_BOOKING_COPY_WEB.emergency.lede,place=stateName??stateCode??"",attestLabel=petName?fill(TELEVET_BOOKING_COPY_WEB.whereAttestTemplate,{pet:petName,state:place}):fill(TELEVET_BOOKING_COPY_WEB.stateAttestTemplate,{state:place}),aboutLine=about??reason,twoBoxes=!!stateCode&&!!cancellationTerms,ticked=(!stateCode||stateAttested)&&(!cancellationTerms||termsAttested);/* @__PURE__ */
223
225
  return jsxRuntime.jsxs(TelevetStepFrame,{headingRef:headingRef,heading:TELEVET_BOOKING_COPY_WEB.reviewHeading,testID:"televet-booking-review",scrollTestID:"televet-booking-review-scroll",footer:emergency?null:/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:busy?TELEVET_BOOKING_COPY_WEB.confirmBusy:TELEVET_BOOKING_COPY_WEB.confirmCta,kind:"primary",size:"lg",loading:busy,busyAnnouncement:TELEVET_BOOKING_COPY_WEB.confirmBusy,disabled:!ready||busy||!twoBoxes&&!ticked,onPress:()=>{if(!ticked){setUnticked(true);return}onConfirm()},testID:"televet-review-confirm"}),children:[
224
226
  /* @__PURE__ */jsxRuntime.jsxs(TelevetSummaryCard,{testID:"televet-review-summary",children:[petName?/* @__PURE__ */jsxRuntime.jsx(TelevetSummaryRow,{label:TELEVET_BOOKING_COPY_WEB.summaryPet,value:petName,testID:"televet-review-row-pet"}):null,clinician?/* @__PURE__ */jsxRuntime.jsx(TelevetSummaryRow,{label:TELEVET_BOOKING_COPY_WEB.summaryVet,value:clinician,testID:"televet-review-row-vet"}):null,
225
227
  /* @__PURE__ */jsxRuntime.jsx(TelevetSummaryRow,{label:TELEVET_BOOKING_COPY_WEB.summaryWhen,value:when,testID:"televet-review-row-when",action:onChangeWhen?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.changeCta,kind:"quiet",fullWidth:false,onPress:onChangeWhen,testID:"televet-review-change-when"}):null}),
@@ -238,11 +240,11 @@ return jsxRuntime.jsx(Tag,{style:style,children:children})}var TelevetStepNavCon
238
240
  return jsxRuntime.jsxs("div",{style:styles.scrollRoot,"data-testid":testID,children:[
239
241
  /* @__PURE__ */jsxRuntime.jsx("div",{style:styles.scrollBody,...scrollTestID?{"data-testid":scrollTestID}:{},children:/* @__PURE__ */jsxRuntime.jsxs("div",{style:local.stepBody,children:[
240
242
  /* @__PURE__ */jsxRuntime.jsxs("div",{style:local.head,children:[
241
- /* @__PURE__ */jsxRuntime.jsx(StepHeading,{headingRef:headingRef,style:styles.stepTitle,...headingId?{id:headingId}:{},children:heading}),lead?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles.stepHelp,...leadId?{id:leadId}:{},children:lead}):null]}),children]})}),
243
+ /* @__PURE__ */jsxRuntime.jsx(StepHeading,{headingRef:headingRef,style:{...styles.stepTitle,...local.stepInk},...headingId?{id:headingId}:{},children:heading}),lead?/* @__PURE__ */jsxRuntime.jsx("p",{style:{...styles.stepHelp,...local.stepInk},...leadId?{id:leadId}:{},children:lead}):null]}),children]})}),
242
244
  /* @__PURE__ */jsxRuntime.jsxs("div",{style:local.footer,children:[nav?.canGoBack?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.backLabel,kind:"quiet",fullWidth:false,onPress:nav.onBack,testID:"televet-booking-back"}):null,footerStart,footer?/* @__PURE__ */jsxRuntime.jsx("div",{style:local.footerMain,children:footer}):null]})]})}function TelevetOptionCard({title:title,meta:meta,selected:selected,onPress:onPress,testID:testID,leading:leading}){let theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]),press=useTelevetPress(false,.98);/* @__PURE__ */
243
- return jsxRuntime.jsxs("button",{type:"button",role:"radio","aria-checked":selected,onClick:onPress,...press.handlers,"data-testid":testID,style:{...local.option,...selected?local.optionSelected:null,...press.style},children:[leading??/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:local.optionDot,children:/* @__PURE__ */jsxRuntime.jsx("span",{style:{...local.optionDotFill,...selected?local.optionDotFillOn:null}})}),
245
+ return jsxRuntime.jsxs("button",{type:"button",role:"radio","aria-checked":selected,onClick:onPress,...press.handlers,"data-testid":testID,style:{...local.option,...selected?local.optionSelected:local.optionRest,...press.style},children:[leading??/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:local.optionDot,children:/* @__PURE__ */jsxRuntime.jsx("span",{style:{...local.optionDotFill,...selected?local.optionDotFillOn:null}})}),
244
246
  /* @__PURE__ */jsxRuntime.jsxs("span",{style:local.optionText,children:[
245
- /* @__PURE__ */jsxRuntime.jsx("span",{style:local.optionTitle,children:title}),meta?/* @__PURE__ */jsxRuntime.jsx("span",{style:local.optionMeta,children:meta}):null]})]})}function radiosOf(group){return Array.from(group.querySelectorAll('[role="radio"]')).filter(radio=>radio.closest('[role="radiogroup"]')===group)}function TelevetRadioGroup({label:label,style:style,testID:testID,children:children}){let ref=react.useRef(null);return react.useEffect(()=>{let group=ref.current;if(group===null)return;let radios=radiosOf(group),checked=radios.findIndex(radio=>radio.getAttribute("aria-checked")==="true"),stop=checked<0?0:checked;radios.forEach((radio,index)=>{radio.tabIndex=index===stop?0:-1})}),/* @__PURE__ */jsxRuntime.jsx("div",{ref:ref,role:"radiogroup","aria-label":label,onKeyDown:event=>{let group=ref.current;if(group===null)return;let radios=radiosOf(group),index=radios.indexOf(event.target);if(index<0||radios.length===0)return;let last=radios.length-1,next=event.key==="ArrowDown"||event.key==="ArrowRight"?(index+1)%radios.length:event.key==="ArrowUp"||event.key==="ArrowLeft"?(index+last)%radios.length:event.key==="Home"?0:event.key==="End"?last:null;if(next===null||next===index)return;event.preventDefault();let target=radios[next];target?.focus(),target?.click()},style:style,...testID?{"data-testid":testID}:{},children:children})}function PetStep({headingRef:headingRef,pets:pets,isPending:isPending,isError:isError,error:error,onRetry:onRetry,selectedId:selectedId,onSelect:onSelect,onNext:onNext,onAddPet:onAddPet}){let styles=useBookingStyles(),theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]);return isPending?/* @__PURE__ */jsxRuntime.jsx("div",{role:"progressbar","aria-label":TELEVET_BOOKING_COPY_WEB.loading.pets,"aria-busy":"true",style:styles.list,"data-testid":"televet-pets-loading",children:[0,1].map(i=>/* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:96},i))}):isError?/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-pets-error",children:/* @__PURE__ */jsxRuntime.jsx(TelevetLoadFailed,{error:error,title:TELEVET_BOOKING_COPY_WEB.chrome.loadFailedTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.chrome.retryCta,onRetry:onRetry})}):pets.length===0?/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-pets-empty",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.chrome.noPetsTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.addPetCta,onAction:onAddPet})}):/* @__PURE__ */jsxRuntime.jsx(TelevetStepFrame,{headingRef:headingRef,heading:TELEVET_BOOKING_COPY_WEB.petSelectTitle,testID:"televet-booking-pets",footerStart:onAddPet?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.addAnotherPetCta,kind:"quiet",fullWidth:false,onPress:onAddPet,testID:"televet-pet-add"}):null,footer:onNext?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.continueCta,kind:"primary",size:"lg",disabled:!selectedId,onPress:onNext,testID:"televet-pets-next"}):null,children:/* @__PURE__ */jsxRuntime.jsx(TelevetRadioGroup,{label:TELEVET_BOOKING_COPY_WEB.petSelectTitle,style:local.options,testID:"televet-pets",children:pets.map(pet=>/* @__PURE__ */jsxRuntime.jsx(TelevetOptionCard,{title:pet.name??"",meta:formatTelevetPetMetaLine(pet),selected:selectedId===pet.petRef,onPress:()=>onSelect(pet.petRef),testID:`televet-pet-${pet.petRef}`,leading:/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:local.optionAvatar,children:initialOf(pet.name??"")})},pet.petRef))})})}var PERSON_GLYPH="○";function initialOf(name){let trimmed=name.trim();return trimmed.length===0?PERSON_GLYPH:trimmed.slice(0,1).toUpperCase()}function ClinicianStep({headingRef:headingRef,clinicians:clinicians,isPending:isPending,isError:isError,error:error,selectedId:selectedId,stateCode:stateCode,stateName:stateName,onSelect:onSelect,onRetry:onRetry}){let styles=useBookingStyles(),theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]);if(isPending)/* @__PURE__ */
247
+ /* @__PURE__ */jsxRuntime.jsx("span",{style:{...local.optionTitle,...selected?null:local.optionRestInk},children:title}),meta?/* @__PURE__ */jsxRuntime.jsx("span",{style:{...local.optionMeta,...selected?null:local.optionRestInk},children:meta}):null]})]})}function radiosOf(group){return Array.from(group.querySelectorAll('[role="radio"]')).filter(radio=>radio.closest('[role="radiogroup"]')===group)}function TelevetRadioGroup({label:label,style:style,testID:testID,children:children}){let ref=react.useRef(null);return react.useEffect(()=>{let group=ref.current;if(group===null)return;let radios=radiosOf(group),checked=radios.findIndex(radio=>radio.getAttribute("aria-checked")==="true"),stop=checked<0?0:checked;radios.forEach((radio,index)=>{radio.tabIndex=index===stop?0:-1})}),/* @__PURE__ */jsxRuntime.jsx("div",{ref:ref,role:"radiogroup","aria-label":label,onKeyDown:event=>{let group=ref.current;if(group===null)return;let radios=radiosOf(group),index=radios.indexOf(event.target);if(index<0||radios.length===0)return;let last=radios.length-1,next=event.key==="ArrowDown"||event.key==="ArrowRight"?(index+1)%radios.length:event.key==="ArrowUp"||event.key==="ArrowLeft"?(index+last)%radios.length:event.key==="Home"?0:event.key==="End"?last:null;if(next===null||next===index)return;event.preventDefault();let target=radios[next];target?.focus(),target?.click()},style:style,...testID?{"data-testid":testID}:{},children:children})}function PetStep({headingRef:headingRef,pets:pets,isPending:isPending,isError:isError,error:error,onRetry:onRetry,selectedId:selectedId,onSelect:onSelect,onNext:onNext,onAddPet:onAddPet}){let styles=useBookingStyles(),theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]);return isPending?/* @__PURE__ */jsxRuntime.jsx("div",{role:"progressbar","aria-label":TELEVET_BOOKING_COPY_WEB.loading.pets,"aria-busy":"true",style:styles.list,"data-testid":"televet-pets-loading",children:[0,1].map(i=>/* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:96},i))}):isError?/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-pets-error",children:/* @__PURE__ */jsxRuntime.jsx(TelevetLoadFailed,{error:error,title:TELEVET_BOOKING_COPY_WEB.chrome.loadFailedTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.chrome.retryCta,onRetry:onRetry})}):pets.length===0?/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-pets-empty",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.chrome.noPetsTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.addPetCta,onAction:onAddPet})}):/* @__PURE__ */jsxRuntime.jsx(TelevetStepFrame,{headingRef:headingRef,heading:TELEVET_BOOKING_COPY_WEB.petSelectTitle,testID:"televet-booking-pets",footerStart:onAddPet?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.addAnotherPetCta,kind:"quiet",fullWidth:false,onPress:onAddPet,testID:"televet-pet-add"}):null,footer:onNext?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.continueCta,kind:"primary",size:"lg",disabled:!selectedId,onPress:onNext,testID:"televet-pets-next"}):null,children:/* @__PURE__ */jsxRuntime.jsx(TelevetRadioGroup,{label:TELEVET_BOOKING_COPY_WEB.petSelectTitle,style:local.options,testID:"televet-pets",children:pets.map(pet=>/* @__PURE__ */jsxRuntime.jsx(TelevetOptionCard,{title:pet.name??"",meta:formatTelevetPetMetaLine(pet),selected:selectedId===pet.petRef,onPress:()=>onSelect(pet.petRef),testID:`televet-pet-${pet.petRef}`,leading:/* @__PURE__ */jsxRuntime.jsx("span",{"aria-hidden":"true",style:local.optionAvatar,children:initialOf(pet.name??"")})},pet.petRef))})})}var PERSON_GLYPH="○";function initialOf(name){let trimmed=name.trim();return trimmed.length===0?PERSON_GLYPH:trimmed.slice(0,1).toUpperCase()}function ClinicianStep({headingRef:headingRef,clinicians:clinicians,isPending:isPending,isError:isError,error:error,selectedId:selectedId,stateCode:stateCode,stateName:stateName,onSelect:onSelect,onRetry:onRetry}){let styles=useBookingStyles(),theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]);if(isPending)/* @__PURE__ */
246
248
  return jsxRuntime.jsx("div",{role:"progressbar","aria-label":TELEVET_BOOKING_COPY_WEB.loading.clinicians,"aria-busy":"true",style:styles.list,"data-testid":"televet-clinicians-loading",children:/* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:240})});if(isError)/* @__PURE__ */
247
249
  return jsxRuntime.jsx("div",{"data-testid":"televet-clinicians-error",children:/* @__PURE__ */jsxRuntime.jsx(TelevetLoadFailed,{error:error,title:TELEVET_BOOKING_COPY_WEB.chrome.loadFailedTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.chrome.retryCta,onRetry:onRetry})});if(clinicians.length===0)/* @__PURE__ */
248
250
  return jsxRuntime.jsx("div",{"data-testid":"televet-clinicians-empty",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.noCliniciansTitle,message:TELEVET_BOOKING_COPY_WEB.noCliniciansBody,actionLabel:TELEVET_BOOKING_COPY_WEB.noCliniciansRetryCta,onAction:onRetry})});let vet=clinicians.find(c=>c.clinicianId===selectedId)??clinicians[0];if(vet===void 0)return null;let code=stateCode?.trim().toUpperCase()??"",licensedHere=code.length>0&&vet.licensedStates.some(l=>l.state.trim().toUpperCase()===code);/* @__PURE__ */
@@ -254,7 +256,7 @@ return jsxRuntime.jsx(TelevetStepFrame,{headingRef:headingRef,heading:TELEVET_BO
254
256
  return jsxRuntime.jsxs(TelevetStepFrame,{headingRef:headingRef,heading:heading,lead:TELEVET_BOOKING_COPY_WEB.issuesHint,testID:"televet-booking-issues",footer:/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.continueCta,kind:"primary",size:"lg",onPress:()=>{if(selected.length===0){setRefused(true);return}onNext()},testID:"televet-issues-next"}),children:[
255
257
  /* @__PURE__ */jsxRuntime.jsx("div",{role:"group","aria-label":TELEVET_BOOKING_COPY_WEB.issuesFormLabel,style:local.chipRow,children:chips.map(chip=>{let on=selected.includes(chip.id);/* @__PURE__ */
256
258
  return jsxRuntime.jsx(IssueChip,{label:chip.label,on:on,onPress:()=>{setRefused(false),onToggle(chip.id)},testID:`televet-issue-${chip.id}`},chip.id)})}),refused&&selected.length===0?/* @__PURE__ */jsxRuntime.jsx("p",{role:"alert",style:local.alertLine,"data-testid":"televet-issues-refused",children:TELEVET_BOOKING_COPY_WEB.issuesPickOne}):null]})}function IssueChip({label:label,on:on,onPress:onPress,testID:testID}){let theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]),press=useTelevetPress();/* @__PURE__ */
257
- return jsxRuntime.jsxs("button",{type:"button","aria-pressed":on,onClick:onPress,...press.handlers,style:{...local.chip,...on?local.chipOn:null,...press.style},"data-testid":testID,children:[on?/* @__PURE__ */jsxRuntime.jsx("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */jsxRuntime.jsx("path",{d:"M20 6 9 17l-5-5"})}):null,label]})}function ReasonStep({headingRef:headingRef,value:value,composed:composed,vetName:vetName,onChange:onChange,onNext:onNext,media:media,onChangeMedia:onChangeMedia,onPickMedia:onPickMedia,mediaLive:mediaLive=false,checking:checking=false}){let theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]),ids=react.useId(),fieldId=`${ids}-reason-field`,helpId=`${ids}-reason-help`,tooLongId=`${ids}-reason-too-long`,[focused,setFocused]=react.useState(false),trimmed=(composed??value).trim(),tooLong=trimmed.length>REASON_TEXT_MAX,valid=trimmed.length>0&&!tooLong,heading=vetName?fill(TELEVET_BOOKING_COPY_WEB.describeHeadingTemplate,{vet:vetName}):TELEVET_BOOKING_COPY_WEB.describeHeading;/* @__PURE__ */
259
+ return jsxRuntime.jsxs("button",{type:"button","aria-pressed":on,onClick:onPress,...press.handlers,style:{...local.chip,...on?local.chipOn:local.chipRest,...press.style},"data-testid":testID,children:[on?/* @__PURE__ */jsxRuntime.jsx("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */jsxRuntime.jsx("path",{d:"M20 6 9 17l-5-5"})}):null,label]})}function ReasonStep({headingRef:headingRef,value:value,composed:composed,vetName:vetName,onChange:onChange,onNext:onNext,media:media,onChangeMedia:onChangeMedia,onPickMedia:onPickMedia,mediaLive:mediaLive=false,checking:checking=false}){let theme=useEverfurTheme(),local=react.useMemo(()=>makeLocalStyles(theme),[theme]),ids=react.useId(),fieldId=`${ids}-reason-field`,helpId=`${ids}-reason-help`,tooLongId=`${ids}-reason-too-long`,[focused,setFocused]=react.useState(false),trimmed=(composed??value).trim(),tooLong=trimmed.length>REASON_TEXT_MAX,valid=trimmed.length>0&&!tooLong,heading=vetName?fill(TELEVET_BOOKING_COPY_WEB.describeHeadingTemplate,{vet:vetName}):TELEVET_BOOKING_COPY_WEB.describeHeading;/* @__PURE__ */
258
260
  return jsxRuntime.jsxs(TelevetStepFrame,{headingRef:headingRef,heading:heading,lead:TELEVET_BOOKING_COPY_WEB.describeHelpLong,leadId:helpId,testID:"televet-booking-reason",scrollTestID:"televet-booking-reason-scroll",footer:/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_BOOKING_COPY_WEB.continueCta,kind:"primary",size:"lg",disabled:!valid,loading:checking,describedBy:tooLong?tooLongId:void 0,onPress:onNext,testID:"televet-reason-next"}),children:[
259
261
  /* @__PURE__ */jsxRuntime.jsxs("div",{style:local.field,children:[
260
262
  /* @__PURE__ */jsxRuntime.jsx("label",{htmlFor:fieldId,style:local.fieldLabel,children:TELEVET_BOOKING_COPY_WEB.describeFieldLabel}),
@@ -315,7 +317,7 @@ return jsxRuntime.jsxs("form",{onSubmit:event=>{event.preventDefault(),confirm()
315
317
  /* @__PURE__ */jsxRuntime.jsx("span",{children:TELEVET_VISITS_COPY_WEB.cancelWhyTimeHint}),onMoveInstead?/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_VISITS_COPY_WEB.cancelMoveInstead,kind:"quiet",fullWidth:false,onPress:onMoveInstead,testID:"televet-visit-cancel-move"}):null]}):null]},answer.id))]}),failure2?/* @__PURE__ */jsxRuntime.jsx("div",{role:"alert",style:{...styles.notice,...styles.noticeDanger},"data-testid":"televet-visit-cancel-failed",children:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles.note,children:failure2})}):null,
316
318
  /* @__PURE__ */jsxRuntime.jsxs("div",{style:styles.actions,children:[
317
319
  /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:TELEVET_VISITS_COPY_WEB.cancelDismissCta,kind:"secondary",fullWidth:false,disabled:submitting,onPress:onDismiss,testID:"televet-visit-cancel-keep"}),
318
- /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:submitting?TELEVET_VISITS_COPY_WEB.cancellingVisit:TELEVET_VISITS_COPY_WEB.cancelConfirmCta,kind:"danger",fullWidth:false,disabled:submitting||!ready,loading:submitting,busyAnnouncement:TELEVET_VISITS_COPY_WEB.cancellingVisit,onPress:confirm,testID:"televet-visit-cancel-yes"})]})]})}function makeVisitStyles(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),px=n=>`${String(n)}px`,text2=(weight,fontSize,ink,lh=lineHeight.normal)=>({margin:0,...faceCss(theme,weight),color:ink,fontSize:px(fontSize),lineHeight:String(lh)});return{screen:{...SURFACE_ROOT_RESET,display:"flex",flexDirection:"column",gap:px(space.lg),paddingLeft:px(space.xl),paddingRight:px(space.xl),paddingBottom:px(space.xl),boxSizing:"border-box"},topBar:{display:"flex",alignItems:"center",justifyContent:"flex-end",minHeight:44},topBarStart:{justifyContent:"flex-start"},iconButton:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:44,height:44,padding:0,borderStyle:"solid",borderWidth:1.5,borderColor:look.line,borderRadius:"50%",background:look.surface,color:look.ink,cursor:"pointer",boxSizing:"border-box"},textButton:{display:"inline-flex",alignItems:"center",minHeight:44,padding:`0 ${px(space.sm)}`,border:0,borderRadius:px(radius.pill),background:"transparent",color:look.ink,cursor:"pointer",...faceCss(theme,"bold"),fontSize:px(size.bodyTight)},pageTitle:{...text2("medium",tierPx(theme,"heading",32),look.ink,1.1),letterSpacing:"-0.03em"},panel:{display:"flex",flexDirection:"column",gap:px(14),padding:px(space.xl),borderRadius:px(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:look.line,backgroundColor:look.surface,boxSizing:"border-box"},panelHeader:{display:"flex",alignItems:"center",gap:px(10)},panelTitle:{...text2("bold",19,look.ink,1.25),letterSpacing:"-0.01em"},pill:{marginLeft:"auto",display:"inline-flex",alignItems:"center",height:24,padding:`0 ${px(10)}`,borderRadius:px(radius.pill),backgroundColor:look.pink,...faceCss(theme,"monoBold"),color:look.onPink,fontSize:px(11.5),letterSpacing:"0.08em",textTransform:"uppercase",whiteSpace:"nowrap"},pillLine:{backgroundColor:look.surface,borderStyle:"solid",borderWidth:1.5,borderColor:look.line,color:look.muted},pillLive:{backgroundColor:color.badgeBgPositive,color:look.ink},visit:{display:"flex",gap:px(space.lg),alignItems:"flex-start"},dateTile:{flexShrink:0,width:64,paddingTop:px(space.sm),paddingBottom:px(space.sm),borderRadius:px(14),backgroundColor:look.pinkSoft,display:"flex",flexDirection:"column",alignItems:"center",gap:2},dateTileSmall:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:px(11),letterSpacing:"0.08em",textTransform:"uppercase"},dateTileDay:{...text2("medium",26,look.ink,1.1),letterSpacing:"-0.02em"},visitMain:{flex:"1 1 auto",minWidth:0,display:"flex",flexDirection:"column",gap:2},visitTitle:{...text2("bold",20,look.ink,1.25),letterSpacing:"-0.01em",overflowWrap:"anywhere"},visitMeta:{...text2("regular",16,look.text),overflowWrap:"anywhere"},actions:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:`${px(6)} ${px(4)}`},list:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column"},row:{display:"flex",flexDirection:"column",gap:px(space.sm),paddingTop:px(space.md),paddingBottom:px(space.md),borderTopStyle:"solid",borderTopWidth:1,borderTopColor:look.line},rowFirst:{borderTopWidth:0,paddingTop:0},rowHead:{display:"flex",alignItems:"center",gap:px(space.md)},rowTitle:text2("bold",size.body,look.ink,lineHeight.snug),rowMeta:text2("regular",14,look.muted),note:text2("regular",14,look.muted),footnote:{...text2("regular",size.caption,look.muted),textAlign:"center",paddingTop:px(space.md)},skeletons:{display:"flex",flexDirection:"column",gap:px(space.sm)},empty:{display:"flex",flexDirection:"column",gap:px(space.xs)},notice:{display:"flex",flexDirection:"column",gap:px(space.xs),padding:`${px(space.md)} ${px(space.lg)}`,borderRadius:px(radius.sm),backgroundColor:look.mist},noticeDanger:{backgroundColor:look.alertWash},noticeTitle:text2("bold",size.body,look.ink,lineHeight.snug),form:{display:"flex",flexDirection:"column",gap:px(space.lg),paddingTop:px(space.lg),borderTopStyle:"solid",borderTopWidth:1,borderTopColor:look.line},formTitle:{...text2("medium",tierPx(theme,"heading",24),look.ink,1.15),letterSpacing:"-0.02em"},kv:{margin:0,display:"flex",flexDirection:"column"},kvRow:{display:"flex",gap:px(space.lg),paddingTop:px(10),paddingBottom:px(10),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:look.line},kvLabel:{...text2("regular",14,look.muted),width:72,flexShrink:0},kvValue:{...text2("bold",size.bodyTight,look.ink),marginInlineStart:0,minWidth:0,overflowWrap:"anywhere"},label:text2("bold",size.bodyTight,look.ink),labelRow:{display:"flex",alignItems:"baseline",gap:px(space.sm),margin:0},labelNote:text2("regular",size.caption,look.muted),reasons:{display:"flex",flexDirection:"column",gap:px(10)},hint:{display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"space-between",gap:`${px(6)} ${px(14)}`,padding:`${px(space.sm)} ${px(space.lg)}`,borderRadius:px(radius.sm),backgroundColor:look.mist,...faceCss(theme,"regular"),color:look.text,fontSize:px(size.bodyTight)}}}function makeVetThreadStyles(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),px=n=>`${String(n)}px`,text2=(weight,fontSize,ink,lh=lineHeight.normal)=>({margin:0,...faceCss(theme,weight),color:ink,fontSize:px(fontSize),lineHeight:String(lh)}),bubble={...text2("regular",size.body,look.text),maxWidth:"85%",padding:`${px(10)} ${px(14)}`,borderRadius:px(18),whiteSpace:"pre-wrap",overflowWrap:"anywhere"};return{head:{display:"flex",alignItems:"flex-start",gap:px(space.md),flexWrap:"wrap"},headMain:{flex:"1 1 auto",minWidth:0,display:"flex",flexDirection:"column",gap:2},meta:text2("regular",15,look.muted),log:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:px(space.sm),maxHeight:"60vh",overflowY:"auto"},day:{alignSelf:"center",...faceCss(theme,"monoBold"),color:look.muted,fontSize:px(11.5),letterSpacing:"0.08em",textTransform:"uppercase",paddingTop:px(space.sm)},item:{display:"flex",flexDirection:"column",gap:px(4)},itemMine:{alignItems:"flex-end"},who:{display:"flex",alignItems:"baseline",gap:px(space.sm),...faceCss(theme,"bold"),color:look.ink,fontSize:px(size.bodyTight)},time:text2("regular",size.caption,look.muted),bubbleMine:{...bubble,backgroundColor:color.bubbleUser,color:color.onPrimary,borderBottomRightRadius:px(6)},bubbleVet:{...bubble,backgroundColor:color.bubbleVet,color:color.onBubbleVet,borderBottomLeftRadius:px(6)},system:{...text2("regular",size.caption,look.muted),alignSelf:"center",textAlign:"center"},attachments:text2("regular",size.caption,look.muted),composer:{display:"flex",alignItems:"flex-end",gap:px(space.sm),padding:px(space.sm),borderRadius:px(radius.lg),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface},field:{flex:"1 1 auto",minWidth:0,minHeight:44,resize:"none",border:0,outlineOffset:2,background:"transparent",padding:`${px(10)} ${px(space.sm)}`,...faceCss(theme,"regular"),color:look.text,fontSize:px(size.body),lineHeight:String(lineHeight.normal),boxSizing:"border-box"},note:text2("regular",size.caption,look.muted),failure:text2("bold",size.caption,look.alert),srOnly:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},label:{...faceCss(theme,"monoBold"),color:look.muted,fontSize:px(11.5),letterSpacing:"0.08em",textTransform:"uppercase"},body:{...text2("regular",size.body,look.text),whiteSpace:"pre-wrap",overflowWrap:"anywhere"},plan:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:px(space.md)},planItem:{display:"flex",gap:px(space.md),alignItems:"baseline"},planNumber:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:px(12),letterSpacing:"0.08em",flexShrink:0},rowButton:{display:"flex",alignItems:"center",gap:px(space.md),width:"100%",minHeight:44,padding:0,border:0,background:"transparent",textAlign:"start",cursor:"pointer",color:"inherit",font:"inherit"},rowMain:{flex:"1 1 auto",minWidth:0,display:"flex",flexDirection:"column",gap:2},rowEnd:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4,flexShrink:0},preview:{...text2("regular",14,look.muted),overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},link:{alignSelf:"flex-start",minHeight:44,padding:0,border:0,background:"transparent",cursor:"pointer",...faceCss(theme,"bold"),color:color.linkInk,fontSize:px(size.bodyTight),textDecoration:"underline",textUnderlineOffset:3}}}function TelevetVetMessagesCard({threads:threads,pets:pets,Title:Title,styles:styles,threadStyles:threadStyles,onOpen:onOpen}){/* @__PURE__ */
320
+ /* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:submitting?TELEVET_VISITS_COPY_WEB.cancellingVisit:TELEVET_VISITS_COPY_WEB.cancelConfirmCta,kind:"danger",fullWidth:false,disabled:submitting||!ready,loading:submitting,busyAnnouncement:TELEVET_VISITS_COPY_WEB.cancellingVisit,onPress:confirm,testID:"televet-visit-cancel-yes"})]})]})}function makeVisitStyles(theme){let{color:color,space:space,radius:radius,type:type,slots:slots}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),cardInk=slots.card?.textColor===void 0?{}:{color:slots.card.textColor},heading=(fontSize,ink,lh)=>({...text2("medium",fontSize,ink,lh),...headingFaceCss(theme,"medium")}),px=n=>`${String(n)}px`,text2=(weight,fontSize,ink,lh=lineHeight.normal)=>({margin:0,...faceCss(theme,weight),color:ink,fontSize:px(fontSize),lineHeight:String(lh)});return{screen:{...SURFACE_ROOT_RESET,display:"flex",flexDirection:"column",gap:px(space.lg),paddingLeft:px(space.xl),paddingRight:px(space.xl),paddingBottom:px(space.xl),boxSizing:"border-box"},topBar:{display:"flex",alignItems:"center",justifyContent:"flex-end",minHeight:44},topBarStart:{justifyContent:"flex-start"},iconButton:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:44,height:44,padding:0,borderStyle:"solid",borderWidth:1.5,borderColor:look.line,borderRadius:"50%",background:look.surface,color:look.ink,cursor:"pointer",boxSizing:"border-box"},textButton:{display:"inline-flex",alignItems:"center",minHeight:44,padding:`0 ${px(space.sm)}`,border:0,borderRadius:px(radius.pill),background:"transparent",color:look.ink,cursor:"pointer",...faceCss(theme,"bold"),fontSize:px(size.bodyTight)},pageTitle:{...heading(tierPx(theme,"heading",32),look.ink,1.1),letterSpacing:"-0.03em"},panel:{display:"flex",flexDirection:"column",gap:px(14),padding:px(space.xl),borderRadius:px(radius.lg),borderStyle:"solid",borderWidth:1,borderColor:look.line,backgroundColor:look.surface,boxSizing:"border-box",...slotLonghandCss(slots.card,1)},panelHeader:{display:"flex",alignItems:"center",gap:px(10)},panelTitle:{...text2("bold",19,look.ink,1.25),...headingFaceCss(theme,"bold"),letterSpacing:"-0.01em",...cardInk},pill:{marginLeft:"auto",display:"inline-flex",alignItems:"center",height:24,padding:`0 ${px(10)}`,borderRadius:px(radius.pill),backgroundColor:look.pink,...faceCss(theme,"monoBold"),color:look.onPink,fontSize:px(11.5),letterSpacing:"0.08em",textTransform:"uppercase",whiteSpace:"nowrap"},pillLine:{backgroundColor:look.surface,borderStyle:"solid",borderWidth:1.5,borderColor:look.line,color:look.muted},pillLive:{backgroundColor:color.badgeBgPositive,color:look.ink},visit:{display:"flex",gap:px(space.lg),alignItems:"flex-start"},dateTile:{flexShrink:0,width:64,paddingTop:px(space.sm),paddingBottom:px(space.sm),borderRadius:px(14),backgroundColor:look.pinkSoft,display:"flex",flexDirection:"column",alignItems:"center",gap:2},dateTileSmall:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:px(11),letterSpacing:"0.08em",textTransform:"uppercase"},dateTileDay:{...text2("medium",26,look.ink,1.1),letterSpacing:"-0.02em"},visitMain:{flex:"1 1 auto",minWidth:0,display:"flex",flexDirection:"column",gap:2},visitTitle:{...text2("bold",20,look.ink,1.25),...headingFaceCss(theme,"bold"),letterSpacing:"-0.01em",overflowWrap:"anywhere",...cardInk},visitMeta:{...text2("regular",16,look.text),overflowWrap:"anywhere",...cardInk},actions:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:`${px(6)} ${px(4)}`},list:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column"},row:{display:"flex",flexDirection:"column",gap:px(space.sm),paddingTop:px(space.md),paddingBottom:px(space.md),borderTopStyle:"solid",borderTopWidth:1,borderTopColor:look.line},rowFirst:{borderTopWidth:0,paddingTop:0},rowHead:{display:"flex",alignItems:"center",gap:px(space.md)},rowTitle:{...text2("bold",size.body,look.ink,lineHeight.snug),...cardInk},rowMeta:{...text2("regular",14,look.muted),...cardInk},note:text2("regular",14,look.muted),footnote:{...text2("regular",size.caption,look.muted),textAlign:"center",paddingTop:px(space.md)},skeletons:{display:"flex",flexDirection:"column",gap:px(space.sm)},empty:{display:"flex",flexDirection:"column",gap:px(space.xs)},notice:{display:"flex",flexDirection:"column",gap:px(space.xs),padding:`${px(space.md)} ${px(space.lg)}`,borderRadius:px(radius.sm),backgroundColor:look.mist},noticeDanger:{backgroundColor:look.alertWash},noticeTitle:text2("bold",size.body,look.ink,lineHeight.snug),form:{display:"flex",flexDirection:"column",gap:px(space.lg),paddingTop:px(space.lg),borderTopStyle:"solid",borderTopWidth:1,borderTopColor:look.line},formTitle:{...heading(tierPx(theme,"heading",24),look.ink,1.15),letterSpacing:"-0.02em",...cardInk},kv:{margin:0,display:"flex",flexDirection:"column"},kvRow:{display:"flex",gap:px(space.lg),paddingTop:px(10),paddingBottom:px(10),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:look.line},kvLabel:{...text2("regular",14,look.muted),width:72,flexShrink:0,...cardInk},kvValue:{...text2("bold",size.bodyTight,look.ink),marginInlineStart:0,minWidth:0,overflowWrap:"anywhere",...cardInk},label:{...text2("bold",size.bodyTight,look.ink),...cardInk},labelRow:{display:"flex",alignItems:"baseline",gap:px(space.sm),margin:0},labelNote:{...text2("regular",size.caption,look.muted),...cardInk},reasons:{display:"flex",flexDirection:"column",gap:px(10)},hint:{display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"space-between",gap:`${px(6)} ${px(14)}`,padding:`${px(space.sm)} ${px(space.lg)}`,borderRadius:px(radius.sm),backgroundColor:look.mist,...faceCss(theme,"regular"),color:look.text,fontSize:px(size.bodyTight)}}}function makeVetThreadStyles(theme){let{color:color,space:space,radius:radius,type:type}=theme,{size:size,lineHeight:lineHeight}=type,look=televetLook(theme),px=n=>`${String(n)}px`,text2=(weight,fontSize,ink,lh=lineHeight.normal)=>({margin:0,...faceCss(theme,weight),color:ink,fontSize:px(fontSize),lineHeight:String(lh)}),bubble={...text2("regular",size.body,look.text),maxWidth:"85%",padding:`${px(10)} ${px(14)}`,borderRadius:px(18),whiteSpace:"pre-wrap",overflowWrap:"anywhere"};return{head:{display:"flex",alignItems:"flex-start",gap:px(space.md),flexWrap:"wrap"},headMain:{flex:"1 1 auto",minWidth:0,display:"flex",flexDirection:"column",gap:2},meta:text2("regular",15,look.muted),log:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:px(space.sm),maxHeight:"60vh",overflowY:"auto"},day:{alignSelf:"center",...faceCss(theme,"monoBold"),color:look.muted,fontSize:px(11.5),letterSpacing:"0.08em",textTransform:"uppercase",paddingTop:px(space.sm)},item:{display:"flex",flexDirection:"column",gap:px(4)},itemMine:{alignItems:"flex-end"},who:{display:"flex",alignItems:"baseline",gap:px(space.sm),...faceCss(theme,"bold"),color:look.ink,fontSize:px(size.bodyTight)},time:text2("regular",size.caption,look.muted),bubbleMine:{...bubble,backgroundColor:color.bubbleUser,color:color.onPrimary,borderBottomRightRadius:px(6)},bubbleVet:{...bubble,backgroundColor:color.bubbleVet,color:color.onBubbleVet,borderBottomLeftRadius:px(6)},system:{...text2("regular",size.caption,look.muted),alignSelf:"center",textAlign:"center"},attachments:text2("regular",size.caption,look.muted),composer:{display:"flex",alignItems:"flex-end",gap:px(space.sm),padding:px(space.sm),borderRadius:px(radius.lg),borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,...slotLonghandCss(theme.slots.input,1.5)},field:{flex:"1 1 auto",minWidth:0,minHeight:44,resize:"none",border:0,outlineOffset:2,background:"transparent",padding:`${px(10)} ${px(space.sm)}`,...faceCss(theme,"regular"),color:look.text,fontSize:px(size.body),lineHeight:String(lineHeight.normal),boxSizing:"border-box",...theme.slots.input?.textColor===void 0?null:{color:theme.slots.input.textColor}},note:text2("regular",size.caption,look.muted),failure:text2("bold",size.caption,look.alert),srOnly:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},label:{...faceCss(theme,"monoBold"),color:look.muted,fontSize:px(11.5),letterSpacing:"0.08em",textTransform:"uppercase"},body:{...text2("regular",size.body,look.text),whiteSpace:"pre-wrap",overflowWrap:"anywhere"},plan:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:px(space.md)},planItem:{display:"flex",gap:px(space.md),alignItems:"baseline"},planNumber:{...faceCss(theme,"monoBold"),color:look.ink,fontSize:px(12),letterSpacing:"0.08em",flexShrink:0},rowButton:{display:"flex",alignItems:"center",gap:px(space.md),width:"100%",minHeight:44,padding:0,border:0,background:"transparent",textAlign:"start",cursor:"pointer",color:"inherit",font:"inherit"},rowMain:{flex:"1 1 auto",minWidth:0,display:"flex",flexDirection:"column",gap:2},rowEnd:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:4,flexShrink:0},preview:{...text2("regular",14,look.muted),overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},link:{alignSelf:"flex-start",minHeight:44,padding:0,border:0,background:"transparent",cursor:"pointer",...faceCss(theme,"bold"),color:color.linkInk,fontSize:px(size.bodyTight),textDecoration:"underline",textUnderlineOffset:3}}}function TelevetVetMessagesCard({threads:threads,pets:pets,Title:Title,styles:styles,threadStyles:threadStyles,onOpen:onOpen}){/* @__PURE__ */
319
321
  return jsxRuntime.jsxs("section",{style:styles.panel,"data-testid":"televet-messages-card",children:[
320
322
  /* @__PURE__ */jsxRuntime.jsx("div",{style:styles.panelHeader,children:/* @__PURE__ */jsxRuntime.jsx(Title,{style:styles.panelTitle,children:VET_MESSAGES_COPY.messagesTitle})}),
321
323
  /* @__PURE__ */jsxRuntime.jsx("ul",{"aria-label":VET_MESSAGES_COPY.messagesTitle,style:styles.list,children:threads.map((thread,i)=>{let petName=pets.find(p=>p.petRef===thread.petRef)?.name??null,vetName=thread.lastMessage?.role==="vet"?thread.lastMessage.senderName:null;/* @__PURE__ */
@@ -411,7 +413,7 @@ return jsxRuntime.jsxs("section",{style:{...styles.screen,...style},"aria-label"
411
413
  /* @__PURE__ */jsxRuntime.jsx(Title,{style:look.title,children:fill(TELEVET_BOOKING_COPY_WEB.rescheduleTitleTemplate,{pet:petName??TELEVET_BOOKING_COPY_WEB.petFallback})}),
412
414
  /* @__PURE__ */jsxRuntime.jsxs("p",{style:look.now,"data-testid":"televet-reschedule-now",children:[
413
415
  /* @__PURE__ */jsxRuntime.jsx("span",{style:look.nowPill,children:TELEVET_BOOKING_COPY_WEB.rescheduleNowLabel}),
414
- /* @__PURE__ */jsxRuntime.jsx("s",{children:formatVisitDayTime(consult.scheduledAt)})]})]}),failure2==="taken"?/* @__PURE__ */jsxRuntime.jsx(TelevetFailureLine,{message:TELEVET_BOOKING_COPY_WEB.slotTaken}):null,failure2==="failed"?/* @__PURE__ */jsxRuntime.jsx(TelevetFailureLine,{message:TELEVET_BOOKING_COPY_WEB.rescheduleFailed}):null,failure2==="unavailable"?/* @__PURE__ */jsxRuntime.jsx(TelevetFailureLine,{message:TELEVET_BOOKING_COPY_WEB.bookingPausedTitle,testID:"televet-reschedule-unavailable"}):null,slots.enabled?slots.isPending?/* @__PURE__ */jsxRuntime.jsx("div",{role:"progressbar","aria-label":TELEVET_BOOKING_COPY_WEB.loading.slots,"aria-busy":"true",style:styles.list,"data-testid":"televet-reschedule-slots-loading",children:[0,1,2].map(i=>/* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:48},i))}):slots.isError?/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.slotsErrorTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.retryCta,onAction:()=>slots.refetch(),testID:"televet-reschedule-slots-error"}):(slots.data??[]).length===0?/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-reschedule-empty",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.noSlotsTitle})}):/* @__PURE__ */jsxRuntime.jsx(TelevetSlotPicker,{slots:slots.data??[],busySlotId:busy?hold.variables:null,onPick:slot=>{setFailure(null),setPicked(slot)},selectedSlot:picked,dayGroupLabel:TELEVET_BOOKING_COPY_WEB.dayLegend,timeGroupLabel:TELEVET_BOOKING_COPY_WEB.timeHeading,periodLabels:{morning:TELEVET_BOOKING_COPY_WEB.timeMorning,afternoon:TELEVET_BOOKING_COPY_WEB.timeAfternoon,evening:TELEVET_BOOKING_COPY_WEB.timeEvening},timeLegendTemplate:TELEVET_BOOKING_COPY_WEB.timeLegendTemplate,rowTestIdPrefix:"televet-reschedule-slot",testID:"televet-reschedule-slots"}):/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-reschedule-paused",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.bookingPausedTitle})}),picked?/* @__PURE__ */jsxRuntime.jsx("div",{style:look.footer,children:/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:busy?TELEVET_BOOKING_COPY_WEB.rescheduleMoving:fill(TELEVET_BOOKING_COPY_WEB.rescheduleMoveTemplate,{when:formatMoveTo(picked.startsAt)}),size:"lg",loading:busy,busyAnnouncement:TELEVET_BOOKING_COPY_WEB.rescheduleMoving,onPress:()=>pick2(picked),testID:"televet-reschedule-move"})}):null]})}function makeLook(theme){let look=televetLook(theme),{space:space,type:type}=theme;return{bar:{display:"flex",alignItems:"center",gap:14,paddingBottom:space.lg},ring:{width:44,height:44,flexShrink:0,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,borderRadius:"50%",borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,color:look.ink,cursor:"pointer",boxSizing:"border-box"},label:{margin:0,...faceCss(theme,"monoBold"),color:look.muted,fontSize:12,letterSpacing:"0.08em",textTransform:"uppercase"},head:{display:"flex",flexDirection:"column",gap:space.md,paddingBottom:space.md},title:{margin:0,...faceCss(theme,"medium"),color:look.ink,fontSize:tierPx(theme,"heading",30),lineHeight:1.1,letterSpacing:"-0.03em"},now:{margin:0,display:"flex",flexWrap:"wrap",alignItems:"center",gap:10,...faceCss(theme,"regular"),color:look.muted,fontSize:type.size.body},nowPill:{display:"inline-flex",alignItems:"center",height:24,padding:"0 10px",borderRadius:999,borderStyle:"solid",borderWidth:1.5,borderColor:look.line,...faceCss(theme,"monoBold"),color:look.muted,fontSize:11.5,letterSpacing:"0.08em",textTransform:"uppercase"},footer:{paddingTop:space.lg,paddingBottom:space.lg,flexShrink:0}}}function televetScreenForRequest(request){let visitRef=request.visitRef?.trim()??"";return visitRef.length>0?/* @__PURE__ */Object.freeze({name:"visit",visitRef:visitRef,intent:request.intent??null}):TELEVET_ROOT}var TELEVET_ROOT=/* @__PURE__ */Object.freeze({name:"home"}),VISITS_ROOT=/* @__PURE__ */Object.freeze({name:"visits"}),BOOKING_ROOT=/* @__PURE__ */Object.freeze({name:"booking"});function navReducer(state,action){switch(action.type){case"push":/* @__PURE__ */
416
+ /* @__PURE__ */jsxRuntime.jsx("s",{children:formatVisitDayTime(consult.scheduledAt)})]})]}),failure2==="taken"?/* @__PURE__ */jsxRuntime.jsx(TelevetFailureLine,{message:TELEVET_BOOKING_COPY_WEB.slotTaken}):null,failure2==="failed"?/* @__PURE__ */jsxRuntime.jsx(TelevetFailureLine,{message:TELEVET_BOOKING_COPY_WEB.rescheduleFailed}):null,failure2==="unavailable"?/* @__PURE__ */jsxRuntime.jsx(TelevetFailureLine,{message:TELEVET_BOOKING_COPY_WEB.bookingPausedTitle,testID:"televet-reschedule-unavailable"}):null,slots.enabled?slots.isPending?/* @__PURE__ */jsxRuntime.jsx("div",{role:"progressbar","aria-label":TELEVET_BOOKING_COPY_WEB.loading.slots,"aria-busy":"true",style:styles.list,"data-testid":"televet-reschedule-slots-loading",children:[0,1,2].map(i=>/* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:48},i))}):slots.isError?/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.slotsErrorTitle,actionLabel:TELEVET_BOOKING_COPY_WEB.retryCta,onAction:()=>slots.refetch(),testID:"televet-reschedule-slots-error"}):(slots.data??[]).length===0?/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-reschedule-empty",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.noSlotsTitle})}):/* @__PURE__ */jsxRuntime.jsx(TelevetSlotPicker,{slots:slots.data??[],busySlotId:busy?hold.variables:null,onPick:slot=>{setFailure(null),setPicked(slot)},selectedSlot:picked,dayGroupLabel:TELEVET_BOOKING_COPY_WEB.dayLegend,timeGroupLabel:TELEVET_BOOKING_COPY_WEB.timeHeading,periodLabels:{morning:TELEVET_BOOKING_COPY_WEB.timeMorning,afternoon:TELEVET_BOOKING_COPY_WEB.timeAfternoon,evening:TELEVET_BOOKING_COPY_WEB.timeEvening},timeLegendTemplate:TELEVET_BOOKING_COPY_WEB.timeLegendTemplate,rowTestIdPrefix:"televet-reschedule-slot",testID:"televet-reschedule-slots"}):/* @__PURE__ */jsxRuntime.jsx("div",{"data-testid":"televet-reschedule-paused",children:/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.bookingPausedTitle})}),picked?/* @__PURE__ */jsxRuntime.jsx("div",{style:look.footer,children:/* @__PURE__ */jsxRuntime.jsx(TelevetButton,{label:busy?TELEVET_BOOKING_COPY_WEB.rescheduleMoving:fill(TELEVET_BOOKING_COPY_WEB.rescheduleMoveTemplate,{when:formatMoveTo(picked.startsAt)}),size:"lg",loading:busy,busyAnnouncement:TELEVET_BOOKING_COPY_WEB.rescheduleMoving,onPress:()=>pick2(picked),testID:"televet-reschedule-move"})}):null]})}function makeLook(theme){let look=televetLook(theme),{space:space,type:type}=theme;return{bar:{display:"flex",alignItems:"center",gap:14,paddingBottom:space.lg},ring:{width:44,height:44,flexShrink:0,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0,borderRadius:"50%",borderStyle:"solid",borderWidth:1.5,borderColor:look.line,backgroundColor:look.surface,color:look.ink,cursor:"pointer",boxSizing:"border-box"},label:{margin:0,...faceCss(theme,"monoBold"),color:look.muted,fontSize:12,letterSpacing:"0.08em",textTransform:"uppercase"},head:{display:"flex",flexDirection:"column",gap:space.md,paddingBottom:space.md},title:{margin:0,...headingFaceCss(theme,"medium"),color:look.ink,fontSize:tierPx(theme,"heading",30),lineHeight:1.1,letterSpacing:"-0.03em"},now:{margin:0,display:"flex",flexWrap:"wrap",alignItems:"center",gap:10,...faceCss(theme,"regular"),color:look.muted,fontSize:type.size.body},nowPill:{display:"inline-flex",alignItems:"center",height:24,padding:"0 10px",borderRadius:999,borderStyle:"solid",borderWidth:1.5,borderColor:look.line,...faceCss(theme,"monoBold"),color:look.muted,fontSize:11.5,letterSpacing:"0.08em",textTransform:"uppercase"},footer:{paddingTop:space.lg,paddingBottom:space.lg,flexShrink:0}}}function televetScreenForRequest(request){let visitRef=request.visitRef?.trim()??"";return visitRef.length>0?/* @__PURE__ */Object.freeze({name:"visit",visitRef:visitRef,intent:request.intent??null}):TELEVET_ROOT}var TELEVET_ROOT=/* @__PURE__ */Object.freeze({name:"home"}),VISITS_ROOT=/* @__PURE__ */Object.freeze({name:"visits"}),BOOKING_ROOT=/* @__PURE__ */Object.freeze({name:"booking"});function navReducer(state,action){switch(action.type){case"push":/* @__PURE__ */
415
417
  return Object.freeze({stack:/* @__PURE__ */Object.freeze([...state.stack,action.screen])});case"pop":return state.stack.length<=1?state:/* @__PURE__ */Object.freeze({stack:/* @__PURE__ */Object.freeze(state.stack.slice(0,-1))});case"land":return state.stack[0]?.name!=="home"?state:/* @__PURE__ */Object.freeze({stack:/* @__PURE__ */Object.freeze([action.screen,...state.stack.slice(1)])});default:return state}}function EverfurTelevetFlow(props){let{style:style,renderPending:renderPending,className:className,...rest}=guardHostProps(props,["onExit","onBooked","onAddPet","onRequestLocation","onFindEmergencyVet"]);/* @__PURE__ */
416
418
  return jsxRuntime.jsx(CapabilityGate,{capability:"televet",style:style,...className!==void 0?{className:className}:{},...renderPending?{renderPending:renderPending}:{},children:/* @__PURE__ */jsxRuntime.jsx(TelevetFlowBody,{...rest,...style!==void 0?{style:style}:{}})})}function TelevetFlowBody({petRef:petRef,usState:usState,controller:controller,onBooked:onBooked,onExit:onExit,onAddPet:onAddPet,onPickMedia:onPickMedia,onAddToCalendar:onAddToCalendar,onConfirmDiscard:onConfirmDiscard,onRequestLocation:onRequestLocation,locationStatus:locationStatus,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet,onTriageReason:onTriageReason,historyMode:historyMode="memory",canJoinInApp:canJoinInApp=false,renderUnavailable:renderUnavailable,initialScreen:initialScreen,headingLevel:headingLevel2,style:style}){let styles=useBookingStyles(),[nav,dispatch]=react.useReducer(navReducer,initialScreen??TELEVET_ROOT,initial=>/* @__PURE__ */Object.freeze({stack:/* @__PURE__ */Object.freeze([initial])})),screen=nav.stack[nav.stack.length-1]??TELEVET_ROOT,depth=nav.stack.length,shownDepth=react.useRef(depth),cameBack=depth<shownDepth.current;react.useEffect(()=>{shownDepth.current=depth},[depth]);let[revision,setRevision]=react.useState(0),changed=react.useCallback(()=>setRevision(n=>n+1),[]),pushed=react.useRef(0),depthRef=react.useRef(depth);depthRef.current=depth,react.useEffect(()=>{if(historyMode!=="browser"||typeof window>"u")return;let onPopState=event=>{let restored=event.state?.efTelevet;typeof restored=="number"&&restored<depthRef.current&&(pushed.current=Math.max(0,pushed.current-1),dispatch({type:"pop"}))};return window.addEventListener("popstate",onPopState),()=>window.removeEventListener("popstate",onPopState)},[historyMode]);let push=react.useCallback(next=>{historyMode==="browser"&&typeof window<"u"&&(pushed.current+=1,window.history.pushState({efTelevet:depthRef.current+1},"")),dispatch({type:"push",screen:next})},[historyMode]),pop=react.useCallback(()=>{if(historyMode==="browser"&&typeof window<"u"&&pushed.current>0){pushed.current-=1,window.history.go(-1);return}dispatch({type:"pop"})},[historyMode]),fallback=react.useCallback(()=>renderUnavailable?renderUnavailable():/* @__PURE__ */jsxRuntime.jsx("div",{style:styles.list,"data-testid":"televet-unavailable",children:isTelevetBookingCopyReady()?/* @__PURE__ */jsxRuntime.jsx(TelevetStateCard,{title:TELEVET_BOOKING_COPY_WEB.bookingPausedTitle}):null}),[renderUnavailable,styles.list]),leave=react.useCallback(()=>{depth>1?pop():onExit?.()},[depth,pop,onExit]),land=react.useCallback(landing=>dispatch({type:"land",screen:landing==="visits"?VISITS_ROOT:BOOKING_ROOT}),[]),booking=/* @__PURE__ */jsxRuntime.jsx(EverfurTelevetBooking,{...petRef!==void 0?{petRef:petRef}:{},...usState!==void 0?{usState:usState}:{},...controller?{controller:controller}:{},onBooked:consult=>{changed(),onBooked?.(consult)},onExit:leave,...onAddPet?{onAddPet:onAddPet}:{},...onPickMedia?{onPickMedia:onPickMedia}:{},...onAddToCalendar?{onAddToCalendar:onAddToCalendar}:{},...onConfirmDiscard?{onConfirmDiscard:onConfirmDiscard}:{},...onRequestLocation?{onRequestLocation:onRequestLocation}:{},...locationStatus?{locationStatus:locationStatus}:{},...primaryVet?{primaryVet:primaryVet}:{},...onFindEmergencyVet?{onFindEmergencyVet:onFindEmergencyVet}:{},...onTriageReason?{onTriageReason:onTriageReason}:{},canJoinInApp:canJoinInApp,renderUnavailable:fallback,...headingLevel2!==void 0?{headingLevel:headingLevel2}:{},...style?{style:style}:{}}),visits=/* @__PURE__ */jsxRuntime.jsx(TelevetVisitsScreen,{...controller?{controller:controller}:{},revision:revision,isRoot:depth<=1,returnedTo:cameBack,onJoin:(consult,petName)=>push({name:"call",consultId:consult.consultId,clinicianName:consult.clinicianName,petName:petName}),onReschedule:consult=>push({name:"reschedule",consult:consult}),onBook:()=>push({name:"booking"}),onBack:leave,onOpenThread:target=>push({name:"thread",target:target}),onOpenSummary:consult=>push({name:"summary",consult:consult}),...style?{style:style}:{}});switch(screen.name){case"home":/* @__PURE__ */
417
419
  return jsxRuntime.jsx(TelevetLandingScreen,{controller:controller,onLand:land,style:style});case"booking":return booking;case"visits":case"visit":return visits;case"reschedule":/* @__PURE__ */
@@ -420,4 +422,4 @@ return jsxRuntime.jsx(TelevetJoinScreen,{consultId:screen.consultId,...controlle
420
422
  return jsxRuntime.jsx(TelevetVetThreadScreen,{petRef:screen.target.petRef,petName:screen.target.petName,vetName:screen.target.vetName,...screen.target.ownerCanStart!==void 0?{ownerCanStart:screen.target.ownerCanStart}:{},...controller?{controller:controller}:{},onBack:()=>{changed(),leave()},onBook:()=>push({name:"booking"}),...style?{style:style}:{}});case"summary":{let summarised=screen.consult;/* @__PURE__ */
421
423
  return jsxRuntime.jsx(TelevetVisitSummaryScreen,{consult:summarised,...controller?{controller:controller}:{},onBack:leave,onMessageVet:target=>push({name:"thread",target:target}),onBook:()=>push({name:"booking"}),...style?{style:style}:{}})}default:return assertNever(screen)}}function TelevetLandingScreen({controller:injected,onLand:onLand,style:style}){let styles=useBookingStyles(),controller=useTelevetBookingController(injected),landing=useTelevetLanding(controller);return react.useEffect(()=>{landing!=="pending"&&onLand(landing)},[landing,onLand]),/* @__PURE__ */jsxRuntime.jsxs("div",{role:"progressbar","aria-label":TELEVET_VISITS_COPY_WEB.loading,"aria-busy":"true",style:{...styles.screen,...styles.list,...style},"data-testid":"televet-landing-loading",children:[
422
424
  /* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:72}),
423
- /* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:72})]})}var EverfurTelevet=EverfurTelevetFlow;var ESCAPE_AT_KEYDOWN=/* @__PURE__ */Object.freeze({escapeAtKeyDown:true});function EverfurTelevetDialog({request:request,onClose:onClose,onAddToCalendar:onAddToCalendar,onPickMedia:onPickMedia,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet}){let theme=useEverfurTheme(),style=react.useMemo(()=>dialogStyle(theme),[theme]),channel=react.useMemo(()=>createTelevetBackChannel(),[]),onEscape=react.useCallback(()=>{channel.dispatch()||onClose()},[channel,onClose]),{dialogRef:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel}=useModalDialog(true,onEscape,void 0,ESCAPE_AT_KEYDOWN),initialScreen=react.useMemo(()=>televetScreenForRequest(request),[request]);return useNamedByVisibleHeading(dialogRef),/* @__PURE__ */jsxRuntime.jsx("dialog",{ref:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel,"aria-label":TELEVET_BOOKING_COPY_WEB.visit.title,"aria-modal":"true","data-testid":"everfur-televet-dialog",style:style,children:/* @__PURE__ */jsxRuntime.jsx(TelevetBackChannelContext.Provider,{value:channel,children:/* @__PURE__ */jsxRuntime.jsx(EverfurTelevet,{...request.petRef!==void 0?{petRef:request.petRef}:{},...request.usState!==void 0?{usState:request.usState}:{},initialScreen:initialScreen,onExit:onClose,...onAddToCalendar?{onAddToCalendar:onAddToCalendar}:{},...onPickMedia?{onPickMedia:onPickMedia}:{},...primaryVet?{primaryVet:primaryVet}:{},...onFindEmergencyVet?{onFindEmergencyVet:onFindEmergencyVet}:{},canJoinInApp:isEverfurDailyRegistered(),historyMode:"memory"})})})}function visuallyHidden(el){let style=el.ownerDocument.defaultView?.getComputedStyle(el);return style===void 0?false:style.position==="absolute"&&(style.clip.startsWith("rect(0")||style.width==="1px")}function useNamedByVisibleHeading(dialogRef){let baseId=react.useId();react.useEffect(()=>{let dialog=dialogRef.current;if(dialog===null)return;let minted=0,name=()=>{let heading=Array.from(dialog.querySelectorAll("h1, h2, h3, h4, h5, h6")).find(el=>(el.textContent??"").trim().length>0&&!visuallyHidden(el));if(heading===void 0){dialog.hasAttribute("aria-labelledby")&&dialog.removeAttribute("aria-labelledby");return}heading.id.length===0&&(minted+=1,heading.id=`${baseId}-title-${String(minted)}`),dialog.getAttribute("aria-labelledby")!==heading.id&&dialog.setAttribute("aria-labelledby",heading.id)};if(name(),typeof MutationObserver>"u")return;let observer=new MutationObserver(name);return observer.observe(dialog,{childList:true,subtree:true,characterData:true}),()=>observer.disconnect()},[dialogRef,baseId])}function dialogStyle(theme){let{color:color,radius:radius,space:space}=theme;return{position:"fixed",inset:0,boxSizing:"border-box",width:"100%",maxWidth:640,height:"100%",maxHeight:"100%",margin:"0 auto",padding:`${String(space.lg)}px 0`,border:0,borderRadius:radius.lg,display:"flex",flexDirection:"column",overflowY:"auto",backgroundColor:color.surface,color:color.text.primary}}exports.BACK_LABEL=BACK_LABEL;exports.CANCELLATION_POLICY_VERSION_MAX=CANCELLATION_POLICY_VERSION_MAX;exports.CANCEL_REASON_MAX=CANCEL_REASON_MAX;exports.CONSULT_KINDS=CONSULT_KINDS;exports.CONSULT_MINUTES=CONSULT_MINUTES;exports.CONSULT_STATUSES=CONSULT_STATUSES;exports.EverfurTelevet=EverfurTelevet;exports.EverfurTelevetBooking=EverfurTelevetBooking;exports.EverfurTelevetDialog=EverfurTelevetDialog;exports.EverfurTelevetFlow=EverfurTelevetFlow;exports.EverfurTelevetReschedule=EverfurTelevetReschedule;exports.MEDIA_REFS_MAX=MEDIA_REFS_MAX;exports.NO_MEDIA_SHORTFALL=NO_MEDIA_SHORTFALL;exports.REASON_TEXT_MAX=REASON_TEXT_MAX;exports.TELEVET_BOOKING_BASE=TELEVET_BOOKING_BASE;exports.TELEVET_BOOKING_COPY=TELEVET_BOOKING_COPY;exports.TELEVET_BOOKING_COPY_WEB=TELEVET_BOOKING_COPY_WEB;exports.TELEVET_BOOKING_STEPS=TELEVET_BOOKING_STEPS;exports.TELEVET_CONSULT_PAGE_LIMIT=TELEVET_CONSULT_PAGE_LIMIT;exports.TELEVET_EMERGENCY_EXITS_WEB=TELEVET_EMERGENCY_EXITS_WEB;exports.TELEVET_JOIN_CLOSES_MINUTES_AFTER=TELEVET_JOIN_CLOSES_MINUTES_AFTER;exports.TELEVET_JOIN_OPENS_MINUTES_BEFORE=TELEVET_JOIN_OPENS_MINUTES_BEFORE;exports.TELEVET_MESSAGE_THREADS_PATH=TELEVET_MESSAGE_THREADS_PATH;exports.TERMINAL_CONSULT_STATUSES=TERMINAL_CONSULT_STATUSES;exports.TelevetBookedScreen=TelevetBookedScreen;exports.TelevetBookingChrome=TelevetBookingChrome;exports.TelevetCancelVisitForm=TelevetCancelVisitForm;exports.TelevetClinicianEmptyState=TelevetClinicianEmptyState;exports.TelevetConsentCheckbox=TelevetConsentCheckbox;exports.TelevetDayStrip=TelevetDayStrip;exports.TelevetEarlyEmergency=TelevetEarlyEmergency;exports.TelevetEmergencyExits=TelevetEmergencyExits;exports.TelevetEntitlementInterestState=TelevetEntitlementInterestState;exports.TelevetIntakeMedia=TelevetIntakeMedia;exports.TelevetJoinScreen=TelevetJoinScreen;exports.TelevetMediaDropNotice=TelevetMediaDropNotice;exports.TelevetSlotPicker=TelevetSlotPicker;exports.TelevetStateInterestAction=TelevetStateInterestAction;exports.TelevetSummaryCard=TelevetSummaryCard;exports.TelevetSummaryRow=TelevetSummaryRow;exports.TelevetVetThreadScreen=TelevetVetThreadScreen;exports.TelevetVisitSummaryScreen=TelevetVisitSummaryScreen;exports.TelevetVisitsScreen=TelevetVisitsScreen;exports.VET_MESSAGES_COPY=VET_MESSAGES_COPY;exports.VET_MESSAGE_CONTENT_MAX=VET_MESSAGE_CONTENT_MAX;exports.VET_MESSAGE_PAGE_DEFAULT=VET_MESSAGE_PAGE_DEFAULT;exports.VET_MESSAGE_PAGE_MAX=VET_MESSAGE_PAGE_MAX;exports.attestation=attestation;exports.canConfirm=canConfirm;exports.canManageTelevetVisit=canManageTelevetVisit;exports.createTelevetBookingController=createTelevetBookingController;exports.currentStep=currentStep;exports.emptyTelevetDraft=emptyTelevetDraft;exports.formatVisitRange=formatVisitRange;exports.formatWhen=formatWhen;exports.formatWhenWithDay=formatWhenWithDay;exports.hasPreviousStep=hasPreviousStep;exports.initialTelevetBookingState=initialTelevetBookingState;exports.isHoldExpired=isHoldExpired;exports.isMediaShortfallEmpty=isMediaShortfallEmpty;exports.isSkipped=isSkipped;exports.isTelevetBookingCopyReady=isTelevetBookingCopyReady;exports.isVetMessagesDark=isVetMessagesDark;exports.isVetThreadVetFirst=isVetThreadVetFirst;exports.isWellFormedStateCode=isWellFormedStateCode;exports.mediaShortfallFromUnsentPicks=mediaShortfallFromUnsentPicks;exports.parseVetCallCredential=parseVetCallCredential;exports.splitTelevetVisits=splitTelevetVisits;exports.televetBookingKey=televetBookingKey;exports.televetBookingReducer=televetBookingReducer;exports.televetBookingRefusal=televetBookingRefusal;exports.televetCancelCall=televetCancelCall;exports.televetConsultCalendarKey=televetConsultCalendarKey;exports.televetConsultCall=televetConsultCall;exports.televetDaysFromSlots=televetDaysFromSlots;exports.televetEmptyRosterCause=televetEmptyRosterCause;exports.televetEmptyRosterView=televetEmptyRosterView;exports.televetHoldCall=televetHoldCall;exports.televetJoinCall=televetJoinCall;exports.televetJoinDecision=televetJoinDecision;exports.televetJoinOpensAtMs=televetJoinOpensAtMs;exports.televetMediaShortfallLines=televetMediaShortfallLines;exports.televetRescheduleCall=televetRescheduleCall;exports.televetScreenForRequest=televetScreenForRequest;exports.televetThreadMessagesCall=televetThreadMessagesCall;exports.televetThreadReadCall=televetThreadReadCall;exports.televetVisitSummaryCall=televetVisitSummaryCall;exports.useEarlyTriage=useEarlyTriage;exports.useStateInterest=useStateInterest;exports.useTelevetBookConsult=useTelevetBookConsult;exports.useTelevetBookingAvailable=useTelevetBookingAvailable;exports.useTelevetBookingController=useTelevetBookingController;exports.useTelevetBookingEntitlement=useTelevetBookingEntitlement;exports.useTelevetCancellationPolicy=useTelevetCancellationPolicy;exports.useTelevetClinicians=useTelevetClinicians;exports.useTelevetHoldSlot=useTelevetHoldSlot;exports.useTelevetJoin=useTelevetJoin;exports.useTelevetNextSlot=useTelevetNextSlot;exports.useTelevetRescheduleConsult=useTelevetRescheduleConsult;exports.useTelevetSlots=useTelevetSlots;exports.useTelevetStatePolicy=useTelevetStatePolicy;exports.useVetThread=useVetThread;exports.useVetThreads=useVetThreads;exports.useVisitSummary=useVisitSummary;exports.validateBookingBody=validateBookingBody;exports.vetCallJoinReason=vetCallJoinReason;exports.vetCallJoinRefusal=vetCallJoinRefusal;exports.vetThreadPetRef=vetThreadPetRef;exports.withUnsentPicks=withUnsentPicks;
425
+ /* @__PURE__ */jsxRuntime.jsx(TelevetSkeletonBlock,{height:72})]})}var EverfurTelevet=EverfurTelevetFlow;var ESCAPE_AT_KEYDOWN=/* @__PURE__ */Object.freeze({escapeAtKeyDown:true});function EverfurTelevetDialog({request:request,onClose:onClose,onAddToCalendar:onAddToCalendar,onPickMedia:onPickMedia,primaryVet:primaryVet,onFindEmergencyVet:onFindEmergencyVet}){let theme=useEverfurTheme(),style=react.useMemo(()=>dialogStyle(theme),[theme]),channel=react.useMemo(()=>createTelevetBackChannel(),[]),onEscape=react.useCallback(()=>{channel.dispatch()||onClose()},[channel,onClose]),{dialogRef:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel}=useModalDialog(true,onEscape,void 0,ESCAPE_AT_KEYDOWN),initialScreen=react.useMemo(()=>televetScreenForRequest(request),[request]);return useNamedByVisibleHeading(dialogRef),/* @__PURE__ */jsxRuntime.jsx("dialog",{ref:dialogRef,onKeyDown:onKeyDown,onCancel:onCancel,"aria-label":TELEVET_BOOKING_COPY_WEB.visit.title,"aria-modal":"true","data-testid":"everfur-televet-dialog",style:style,children:/* @__PURE__ */jsxRuntime.jsx(TelevetBackChannelContext.Provider,{value:channel,children:/* @__PURE__ */jsxRuntime.jsx(EverfurTelevet,{...request.petRef!==void 0?{petRef:request.petRef}:{},...request.usState!==void 0?{usState:request.usState}:{},initialScreen:initialScreen,onExit:onClose,...onAddToCalendar?{onAddToCalendar:onAddToCalendar}:{},...onPickMedia?{onPickMedia:onPickMedia}:{},...primaryVet?{primaryVet:primaryVet}:{},...onFindEmergencyVet?{onFindEmergencyVet:onFindEmergencyVet}:{},canJoinInApp:isEverfurDailyRegistered(),historyMode:"memory"})})})}function visuallyHidden(el){let style=el.ownerDocument.defaultView?.getComputedStyle(el);return style===void 0?false:style.position==="absolute"&&(style.clip.startsWith("rect(0")||style.width==="1px")}function useNamedByVisibleHeading(dialogRef){let baseId=react.useId();react.useEffect(()=>{let dialog=dialogRef.current;if(dialog===null)return;let minted=0,name=()=>{let heading=Array.from(dialog.querySelectorAll("h1, h2, h3, h4, h5, h6")).find(el=>(el.textContent??"").trim().length>0&&!visuallyHidden(el));if(heading===void 0){dialog.hasAttribute("aria-labelledby")&&dialog.removeAttribute("aria-labelledby");return}heading.id.length===0&&(minted+=1,heading.id=`${baseId}-title-${String(minted)}`),dialog.getAttribute("aria-labelledby")!==heading.id&&dialog.setAttribute("aria-labelledby",heading.id)};if(name(),typeof MutationObserver>"u")return;let observer=new MutationObserver(name);return observer.observe(dialog,{childList:true,subtree:true,characterData:true}),()=>observer.disconnect()},[dialogRef,baseId])}function dialogStyle(theme){let{color:color,radius:radius,space:space}=theme;return{position:"fixed",inset:0,boxSizing:"border-box",width:"100%",maxWidth:640,height:"100%",maxHeight:"100%",margin:"0 auto",padding:`${String(space.lg)}px 0`,border:0,borderRadius:radius.lg,display:"flex",flexDirection:"column",overflowY:"auto",backgroundColor:color.surface,color:color.text.primary,...slotCss(theme.slots.dialog)}}exports.BACK_LABEL=BACK_LABEL;exports.CANCELLATION_POLICY_VERSION_MAX=CANCELLATION_POLICY_VERSION_MAX;exports.CANCEL_REASON_MAX=CANCEL_REASON_MAX;exports.CONSULT_KINDS=CONSULT_KINDS;exports.CONSULT_MINUTES=CONSULT_MINUTES;exports.CONSULT_STATUSES=CONSULT_STATUSES;exports.EverfurTelevet=EverfurTelevet;exports.EverfurTelevetBooking=EverfurTelevetBooking;exports.EverfurTelevetDialog=EverfurTelevetDialog;exports.EverfurTelevetFlow=EverfurTelevetFlow;exports.EverfurTelevetReschedule=EverfurTelevetReschedule;exports.MEDIA_REFS_MAX=MEDIA_REFS_MAX;exports.NO_MEDIA_SHORTFALL=NO_MEDIA_SHORTFALL;exports.REASON_TEXT_MAX=REASON_TEXT_MAX;exports.TELEVET_BOOKING_BASE=TELEVET_BOOKING_BASE;exports.TELEVET_BOOKING_COPY=TELEVET_BOOKING_COPY;exports.TELEVET_BOOKING_COPY_WEB=TELEVET_BOOKING_COPY_WEB;exports.TELEVET_BOOKING_STEPS=TELEVET_BOOKING_STEPS;exports.TELEVET_CONSULT_PAGE_LIMIT=TELEVET_CONSULT_PAGE_LIMIT;exports.TELEVET_EMERGENCY_EXITS_WEB=TELEVET_EMERGENCY_EXITS_WEB;exports.TELEVET_JOIN_CLOSES_MINUTES_AFTER=TELEVET_JOIN_CLOSES_MINUTES_AFTER;exports.TELEVET_JOIN_OPENS_MINUTES_BEFORE=TELEVET_JOIN_OPENS_MINUTES_BEFORE;exports.TELEVET_MESSAGE_THREADS_PATH=TELEVET_MESSAGE_THREADS_PATH;exports.TERMINAL_CONSULT_STATUSES=TERMINAL_CONSULT_STATUSES;exports.TelevetBookedScreen=TelevetBookedScreen;exports.TelevetBookingChrome=TelevetBookingChrome;exports.TelevetCancelVisitForm=TelevetCancelVisitForm;exports.TelevetClinicianEmptyState=TelevetClinicianEmptyState;exports.TelevetConsentCheckbox=TelevetConsentCheckbox;exports.TelevetDayStrip=TelevetDayStrip;exports.TelevetEarlyEmergency=TelevetEarlyEmergency;exports.TelevetEmergencyExits=TelevetEmergencyExits;exports.TelevetEntitlementInterestState=TelevetEntitlementInterestState;exports.TelevetIntakeMedia=TelevetIntakeMedia;exports.TelevetJoinScreen=TelevetJoinScreen;exports.TelevetMediaDropNotice=TelevetMediaDropNotice;exports.TelevetSlotPicker=TelevetSlotPicker;exports.TelevetStateInterestAction=TelevetStateInterestAction;exports.TelevetSummaryCard=TelevetSummaryCard;exports.TelevetSummaryRow=TelevetSummaryRow;exports.TelevetVetThreadScreen=TelevetVetThreadScreen;exports.TelevetVisitSummaryScreen=TelevetVisitSummaryScreen;exports.TelevetVisitsScreen=TelevetVisitsScreen;exports.VET_MESSAGES_COPY=VET_MESSAGES_COPY;exports.VET_MESSAGE_CONTENT_MAX=VET_MESSAGE_CONTENT_MAX;exports.VET_MESSAGE_PAGE_DEFAULT=VET_MESSAGE_PAGE_DEFAULT;exports.VET_MESSAGE_PAGE_MAX=VET_MESSAGE_PAGE_MAX;exports.attestation=attestation;exports.canConfirm=canConfirm;exports.canManageTelevetVisit=canManageTelevetVisit;exports.createTelevetBookingController=createTelevetBookingController;exports.currentStep=currentStep;exports.emptyTelevetDraft=emptyTelevetDraft;exports.formatVisitRange=formatVisitRange;exports.formatWhen=formatWhen;exports.formatWhenWithDay=formatWhenWithDay;exports.hasPreviousStep=hasPreviousStep;exports.initialTelevetBookingState=initialTelevetBookingState;exports.isHoldExpired=isHoldExpired;exports.isMediaShortfallEmpty=isMediaShortfallEmpty;exports.isSkipped=isSkipped;exports.isTelevetBookingCopyReady=isTelevetBookingCopyReady;exports.isVetMessagesDark=isVetMessagesDark;exports.isVetThreadVetFirst=isVetThreadVetFirst;exports.isWellFormedStateCode=isWellFormedStateCode;exports.mediaShortfallFromUnsentPicks=mediaShortfallFromUnsentPicks;exports.parseVetCallCredential=parseVetCallCredential;exports.splitTelevetVisits=splitTelevetVisits;exports.televetBookingKey=televetBookingKey;exports.televetBookingReducer=televetBookingReducer;exports.televetBookingRefusal=televetBookingRefusal;exports.televetCancelCall=televetCancelCall;exports.televetConsultCalendarKey=televetConsultCalendarKey;exports.televetConsultCall=televetConsultCall;exports.televetDaysFromSlots=televetDaysFromSlots;exports.televetEmptyRosterCause=televetEmptyRosterCause;exports.televetEmptyRosterView=televetEmptyRosterView;exports.televetHoldCall=televetHoldCall;exports.televetJoinCall=televetJoinCall;exports.televetJoinDecision=televetJoinDecision;exports.televetJoinOpensAtMs=televetJoinOpensAtMs;exports.televetMediaShortfallLines=televetMediaShortfallLines;exports.televetRescheduleCall=televetRescheduleCall;exports.televetScreenForRequest=televetScreenForRequest;exports.televetThreadMessagesCall=televetThreadMessagesCall;exports.televetThreadReadCall=televetThreadReadCall;exports.televetVisitSummaryCall=televetVisitSummaryCall;exports.useEarlyTriage=useEarlyTriage;exports.useStateInterest=useStateInterest;exports.useTelevetBookConsult=useTelevetBookConsult;exports.useTelevetBookingAvailable=useTelevetBookingAvailable;exports.useTelevetBookingController=useTelevetBookingController;exports.useTelevetBookingEntitlement=useTelevetBookingEntitlement;exports.useTelevetCancellationPolicy=useTelevetCancellationPolicy;exports.useTelevetClinicians=useTelevetClinicians;exports.useTelevetHoldSlot=useTelevetHoldSlot;exports.useTelevetJoin=useTelevetJoin;exports.useTelevetNextSlot=useTelevetNextSlot;exports.useTelevetRescheduleConsult=useTelevetRescheduleConsult;exports.useTelevetSlots=useTelevetSlots;exports.useTelevetStatePolicy=useTelevetStatePolicy;exports.useVetThread=useVetThread;exports.useVetThreads=useVetThreads;exports.useVisitSummary=useVisitSummary;exports.validateBookingBody=validateBookingBody;exports.vetCallJoinReason=vetCallJoinReason;exports.vetCallJoinRefusal=vetCallJoinRefusal;exports.vetThreadPetRef=vetThreadPetRef;exports.withUnsentPicks=withUnsentPicks;