@everfur/sdk 0.13.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +126 -0
- package/README.md +11 -10
- package/dist/{Chat.d-Dts8u_1a.d.cts → Chat.d-aycmX1CA.d.cts} +12 -4
- package/dist/{Chat.d-DUNTfzqC.d.ts → Chat.d-puminpyi.d.ts} +12 -4
- package/dist/{DepthViews.d-CubkMPbU.d.ts → DepthViews.d-BdvFZgPs.d.cts} +1 -1
- package/dist/{DepthViews.d-Ce2Zhnrb.d.ts → DepthViews.d-DIvxzLDf.d.ts} +1 -1
- package/dist/{DepthViews.d-BMU2jFPw.d.cts → DepthViews.d-Dy0Zl-s-.d.ts} +1 -1
- package/dist/{DepthViews.d-BIp599lz.d.cts → DepthViews.d-wLNkzk9f.d.cts} +1 -1
- package/dist/RecordsPage.d-9Ank15PT.d.ts +93 -0
- package/dist/RecordsPage.d-DMKU0IKc.d.cts +93 -0
- package/dist/animations/index.d.cts +5 -5
- package/dist/animations/index.d.ts +5 -5
- package/dist/{attachments.d-D1yhJjcZ.d.ts → attachments.d--sIsfk6e.d.ts} +2 -2
- package/dist/{attachments.d-Bp2qbHxn.d.cts → attachments.d-DNUCiyy5.d.cts} +6 -24
- package/dist/{attachments.d-DisnvB9R.d.cts → attachments.d-ZEpTUeWN.d.cts} +2 -2
- package/dist/{attachments.d-Djy9z_0Z.d.ts → attachments.d-rp3xs-Q3.d.ts} +6 -24
- package/dist/{bookingCopy.d-BJF6gd1A.d.ts → bookingCopy.d-D0uIIFAJ.d.ts} +2 -2
- package/dist/{bookingCopy.d-BlBmhAJc.d.cts → bookingCopy.d-DUrmVcLs.d.cts} +2 -2
- package/dist/{branding.d-DI8S400y.d.cts → branding.d-CTXTUg_8.d.cts} +1 -1
- package/dist/{branding.d-OIGLbQeM.d.ts → branding.d-DxJSoFce.d.ts} +1 -1
- package/dist/{casesRepository.d-CT2LTicS.d.cts → casesRepository.d-DCnix2pT.d.cts} +1 -1
- package/dist/{casesRepository.d-UsWOz9bv.d.ts → casesRepository.d-DbirgbyH.d.ts} +1 -1
- package/dist/chat/index.cjs +43 -41
- package/dist/chat/index.d.cts +26 -13
- package/dist/chat/index.d.ts +26 -13
- package/dist/chat/index.js +43 -41
- package/dist/client/index.cjs +2 -2
- package/dist/client/index.d.cts +10 -10
- package/dist/client/index.d.ts +10 -10
- package/dist/client/index.js +2 -2
- package/dist/clinicBatch.d-Ccmrngcu.d.cts +71 -0
- package/dist/clinicBatch.d-D9Ci7IpP.d.ts +71 -0
- package/dist/clinicModels.d-BXgKZqDb.d.cts +68 -0
- package/dist/clinicModels.d-CaS64-P-.d.ts +68 -0
- package/dist/clinicRequestProps.d-1dCtouGA.d.cts +65 -0
- package/dist/clinicRequestProps.d-CjsMg_OD.d.ts +65 -0
- package/dist/{config.d-BR3DT9ho.d.cts → config.d-DJ4mvf_w.d.cts} +1 -1
- package/dist/{config.d-Dy6igYlH.d.ts → config.d-MX7IKP2f.d.ts} +1 -1
- package/dist/consent/index.d.cts +5 -5
- package/dist/consent/index.d.ts +5 -5
- package/dist/{context.d-QcCgguzA.d.ts → context.d-BdnBe8Oe.d.ts} +7 -7
- package/dist/{context.d-Cwks0p3C.d.cts → context.d-C6MJsMpN.d.cts} +7 -7
- package/dist/{copy.d-CiMn2IIt.d.ts → copy.d-BIfQOoDB.d.ts} +2 -2
- package/dist/{copy.d-DLJTyRfT.d.cts → copy.d-C_u7shha.d.cts} +2 -2
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.d.cts +20 -18
- package/dist/core/index.d.ts +20 -18
- package/dist/core/index.js +3 -3
- package/dist/{depth.d-OSALbYM7.d.ts → depth.d-COFxYWLU.d.ts} +6 -133
- package/dist/{depth.d-CjPGVPDL.d.cts → depth.d-D2e5WZuE.d.cts} +6 -133
- package/dist/{entitlementRepository.d-CVQa1DA1.d.cts → entitlementRepository.d-BP15dFbe.d.cts} +4 -4
- package/dist/{entitlementRepository.d-Cf3LbTwD.d.ts → entitlementRepository.d-DLuxnGi5.d.ts} +4 -4
- package/dist/{features.d-fNsGcg0R.d.ts → features.d-DrQxTw3-.d.cts} +1 -1
- package/dist/{features.d-fNsGcg0R.d.cts → features.d-DrQxTw3-.d.ts} +1 -1
- package/dist/{focus.d-DMg2ngHI.d.ts → focus.d-C0Tr0oVJ.d.ts} +109 -348
- package/dist/{focus.d-az9cqUz3.d.cts → focus.d-jQWp0hdK.d.cts} +109 -348
- package/dist/health-plan/index.cjs +165 -151
- package/dist/health-plan/index.d.cts +53 -11
- package/dist/health-plan/index.d.ts +53 -11
- package/dist/health-plan/index.js +169 -155
- package/dist/{idempotency.d-D461_DPD.d.cts → idempotency.d-DXb1BN2A.d.ts} +151 -6
- package/dist/{idempotency.d-WpXx9zQo.d.ts → idempotency.d-HF6fyRt2.d.cts} +151 -6
- package/dist/{identity.d-DzTijonw.d.ts → identity.d-BePPZ7Uv.d.ts} +1 -1
- package/dist/{identity.d-60LeJt_s.d.cts → identity.d-CJfnWOdH.d.cts} +1 -1
- package/dist/index.cjs +46 -44
- package/dist/index.d.cts +19 -18
- package/dist/index.d.ts +19 -18
- package/dist/index.js +46 -44
- package/dist/introEvents.d-BkGDT_kG.d.cts +175 -0
- package/dist/introEvents.d-DHlMvmC7.d.ts +175 -0
- package/dist/introEvents.d-dS3fJCH1.d.cts +5 -0
- package/dist/introEvents.d-dS3fJCH1.d.ts +5 -0
- package/dist/{models.d-BnLm3VAA.d.cts → models.d-BSqvbTE1.d.cts} +8 -1
- package/dist/{models.d-BagXhafD.d.ts → models.d-DOwnr8fi.d.ts} +8 -1
- package/dist/notifications/index.d.cts +4 -4
- package/dist/notifications/index.d.ts +4 -4
- package/dist/{optInView.d-CEyHR6PK.d.cts → optInView.d-0iI5JoAf.d.cts} +119 -3
- package/dist/{optInView.d-acKpV8V2.d.ts → optInView.d-s-w4aGN3.d.ts} +119 -3
- package/dist/{parse.d-C8CXyS58.d.ts → parse.d-COt1qVA6.d.ts} +1 -1
- package/dist/{parse.d-tEzufgJX.d.cts → parse.d-EmsgOUMQ.d.cts} +1 -1
- package/dist/{pets.d-C_53_fzo.d.ts → pets.d-BFT_b53y.d.ts} +1 -1
- package/dist/{pets.d-NbJvP_kh.d.cts → pets.d-nNAVnw7f.d.cts} +1 -1
- package/dist/{petsRepository.d-lp1BHRqM.d.cts → petsRepository.d-B2TpRE7r.d.cts} +1 -1
- package/dist/{petsRepository.d-BuGHymNx.d.ts → petsRepository.d-RGwSZcYl.d.ts} +1 -1
- package/dist/planSignals.d-BDbp2e-k.d.cts +126 -0
- package/dist/planSignals.d-DSnxKoWe.d.ts +126 -0
- package/dist/{ports.d-COIyN624.d.ts → ports.d-D2n4HRUy.d.ts} +4 -4
- package/dist/{ports.d-CEROoqnA.d.cts → ports.d-DBA_gsq5.d.cts} +4 -4
- package/dist/{presentation.d-DMbdad7G.d.cts → presentation.d-vy8kTGfR.d.cts} +6 -0
- package/dist/{presentation.d-DMbdad7G.d.ts → presentation.d-vy8kTGfR.d.ts} +6 -0
- package/dist/quickPrompts.d-NM_81Jc1.d.cts +19 -0
- package/dist/quickPrompts.d-NM_81Jc1.d.ts +19 -0
- package/dist/records/depth/index.d.cts +13 -9
- package/dist/records/depth/index.d.ts +13 -9
- package/dist/records/index.cjs +252 -138
- package/dist/records/index.d.cts +88 -23
- package/dist/records/index.d.ts +88 -23
- package/dist/records/index.js +253 -139
- package/dist/{requestFunnel.d-CXUMPw1K.d.ts → requestFunnel.d-D9edIEjZ.d.ts} +2 -2
- package/dist/{requestFunnel.d-DWQQpjFR.d.cts → requestFunnel.d-RZex94XX.d.cts} +2 -2
- package/dist/{resolve.d-jI8FmBj3.d.cts → resolve.d-CoQWUy1Y.d.cts} +1 -1
- package/dist/{resolve.d-jI8FmBj3.d.ts → resolve.d-CoQWUy1Y.d.ts} +1 -1
- package/dist/{runtimeTypes.d-4yFNNuYR.d.ts → runtimeTypes.d-BYq38b17.d.ts} +6 -6
- package/dist/{runtimeTypes.d-D6N_fhxx.d.cts → runtimeTypes.d-LkwZaF7z.d.cts} +6 -6
- package/dist/{useRecordsDepth.d-DFcCfiXm.d.ts → screenProps.d-BVzRzowC.d.ts} +5 -91
- package/dist/{useRecordsDepth.d-sAq2Qkhr.d.cts → screenProps.d-CQ0qZJkr.d.cts} +5 -91
- package/dist/server/events/index.cjs +1 -1
- package/dist/server/events/index.d.cts +2 -2
- package/dist/server/events/index.d.ts +2 -2
- package/dist/server/events/index.js +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.cts +3 -3
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +1 -1
- package/dist/{sheetSeam.d-Cviqk89n.d.ts → sheetSeam.d-B09jf4YC.d.ts} +8 -4
- package/dist/{sheetSeam.d-DCS3LW8g.d.cts → sheetSeam.d-BBuEIVsa.d.cts} +8 -4
- package/dist/shop/index.cjs +224 -58
- package/dist/shop/index.d.cts +23 -5
- package/dist/shop/index.d.ts +23 -5
- package/dist/shop/index.js +225 -59
- package/dist/tabs/index.cjs +195 -0
- package/dist/tabs/index.d.cts +174 -0
- package/dist/tabs/index.d.ts +174 -0
- package/dist/tabs/index.js +195 -0
- package/dist/tabsModel.d-BfIQg6yS.d.cts +31 -0
- package/dist/tabsModel.d-BfIQg6yS.d.ts +31 -0
- package/dist/televet/booking/index.d.cts +6 -6
- package/dist/televet/booking/index.d.ts +6 -6
- package/dist/testing/index.cjs +1 -1
- package/dist/testing/index.d.cts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/rn/index.cjs +1 -1
- package/dist/testing/rn/index.d.cts +11 -11
- package/dist/testing/rn/index.d.ts +11 -11
- package/dist/testing/rn/index.js +1 -1
- package/dist/testing/web/index.d.cts +12 -12
- package/dist/testing/web/index.d.ts +12 -12
- package/dist/texting/index.cjs +40 -5
- package/dist/texting/index.d.cts +40 -7
- package/dist/texting/index.d.ts +40 -7
- package/dist/texting/index.js +40 -5
- package/dist/threadOptions.d-9r4Csa7k.d.cts +458 -0
- package/dist/threadOptions.d-B6GA09aM.d.ts +458 -0
- package/dist/{timelineRows.d-CU5GvvLk.d.ts → timelineRows.d-Bes8ip2v.d.ts} +1 -1
- package/dist/{timelineRows.d-BNxgzYRW.d.cts → timelineRows.d-BvM2A7_G.d.cts} +1 -1
- package/dist/{typeStyle.d-C1HBRAI3.d.ts → typeStyle.d-Co5KF0up.d.ts} +1 -1
- package/dist/{typeStyle.d-Bl8pzbBy.d.cts → typeStyle.d-xIZj02Ru.d.cts} +1 -1
- package/dist/useIntroSeen.d-CTWFUthO.d.cts +35 -0
- package/dist/useIntroSeen.d-CTWFUthO.d.ts +35 -0
- package/dist/usePresentation.d-BGz32Vlm.d.ts +285 -0
- package/dist/usePresentation.d-DYTF_ZGf.d.cts +285 -0
- package/dist/{useRecords.d-Cb-36SF5.d.cts → useRecords.d-BYNX01El.d.cts} +2 -2
- package/dist/{useRecords.d-aQTzQZoV.d.ts → useRecords.d-DWk61a4c.d.ts} +2 -2
- package/dist/useRecordsDepth.d--LLA_4ga.d.cts +32 -0
- package/dist/useRecordsDepth.d-BQRL0Hez.d.ts +32 -0
- package/dist/{view.d-Dps5C8-s.d.cts → view.d-0yBjLTV3.d.cts} +6 -4
- package/dist/{view.d-C-SNpDJX.d.ts → view.d-DqbCADFa.d.ts} +6 -4
- package/dist/web/consent/index.d.cts +5 -5
- package/dist/web/consent/index.d.ts +5 -5
- package/dist/web/health-plan/index.cjs +50 -43
- package/dist/web/health-plan/index.d.cts +46 -192
- package/dist/web/health-plan/index.d.ts +46 -192
- package/dist/web/health-plan/index.js +65 -58
- package/dist/web/index.cjs +61 -45
- package/dist/web/index.d.cts +165 -25
- package/dist/web/index.d.ts +165 -25
- package/dist/web/index.js +62 -46
- package/dist/web/intro/index.cjs +167 -0
- package/dist/web/intro/index.d.cts +79 -0
- package/dist/web/intro/index.d.ts +79 -0
- package/dist/web/intro/index.js +167 -0
- package/dist/web/notifications/index.d.cts +3 -3
- package/dist/web/notifications/index.d.ts +3 -3
- package/dist/web/records/depth/index.d.cts +13 -9
- package/dist/web/records/depth/index.d.ts +13 -9
- package/dist/web/records/index.cjs +7 -7
- package/dist/web/records/index.d.cts +21 -82
- package/dist/web/records/index.d.ts +21 -82
- package/dist/web/records/index.js +7 -7
- package/dist/web/records-sheet/index.cjs +181 -127
- package/dist/web/records-sheet/index.d.cts +18 -16
- package/dist/web/records-sheet/index.d.ts +18 -16
- package/dist/web/records-sheet/index.js +181 -127
- package/dist/web/shop/index.cjs +191 -76
- package/dist/web/shop/index.d.cts +21 -4
- package/dist/web/shop/index.d.ts +21 -4
- package/dist/web/shop/index.js +191 -76
- package/dist/web/televet/booking/index.d.cts +6 -6
- package/dist/web/televet/booking/index.d.ts +6 -6
- package/dist/web/texting/index.cjs +36 -5
- package/dist/web/texting/index.d.cts +40 -7
- package/dist/web/texting/index.d.ts +40 -7
- package/dist/web/texting/index.js +36 -5
- package/package.json +35 -4
- package/tabs/package.json +8 -0
- package/web/intro/native-blocked.cjs +12 -0
- package/web/intro/package.json +8 -0
- package/dist/threadOptions.d-B1pTMmDF.d.cts +0 -260
- package/dist/threadOptions.d-B1pTMmDF.d.ts +0 -260
- package/dist/usePresentation.d-D6qsFzBz.d.cts +0 -9
- package/dist/usePresentation.d-DuGQe_Do.d.ts +0 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";var react=require("react"),jsxRuntime=require("react/jsx-runtime"),reactDom=require("react-dom");var HEALTH_PLAN_COPY=/* @__PURE__ */Object.freeze({loading:"Loading",retry:"Try again",signedOut:"Sign in required",addToCart:"Add to cart",added:"Added",remove:"Remove",checkout:"Checkout",subtotal:"Subtotal",sample:"Sample",cartEmpty:"Your cart is empty.",choosePet:"Choose a pet",emptyTitle:"",emptyBody:"",emptyAsk:""}),COPY_ASKS=/* @__PURE__ */Object.freeze({emptyTitle:true,emptyBody:true,emptyAsk:true}),HEALTH_PLAN_REASON_LABELS=/* @__PURE__ */Object.freeze({dna:"",records:"Records",inside:"Inside",profile:""}),HEALTH_PLAN_TEMPLATES=/* @__PURE__ */Object.freeze({planTitle:petName=>`${petName}'s care plan`,cartLabel:brand=>`${brand} cart`}),HEALTH_PLAN_COPY_PLACEHOLDERS=/* @__PURE__ */Object.freeze([...Object.keys(HEALTH_PLAN_COPY).filter(key=>COPY_ASKS[key]===true&&HEALTH_PLAN_COPY[key]==="").map(key=>`HEALTH_PLAN_COPY.${key}`),...["profile"].filter(kind=>HEALTH_PLAN_REASON_LABELS[kind]==="").map(kind=>`HEALTH_PLAN_REASON_LABELS.${kind}`)]);var HEALTH_PLAN_LAYOUT_DEFAULTS=/* @__PURE__ */Object.freeze({imageVariant:"wide",reasonVariant:"pills",cartBarVisibility:"whenItems",cartBarPlacement:"sticky",addButtonSize:"full",addedVariant:"link",categoryVariant:"text",showCategory:false,cardShadow:false,cardBorder:true});function healthPlanWrites(plan,setInPlan){return{setInPlan:setInPlan,addAll:async()=>{let missing=(plan?.items??[]).filter(item=>!item.inPlan);return(await Promise.all(missing.map(item=>setInPlan(item.productId,true)))).every(Boolean)}}}function showHealthPlanCartBar(visibility,count){return(visibility??HEALTH_PLAN_LAYOUT_DEFAULTS.cartBarVisibility)==="always"||count>0}var HEALTH_PLAN_CARD_OPTION_KEYS=/* @__PURE__ */Object.freeze(["showCategory","cardShadow","cardBorder","addButtonSize","addButtonFontSize","addedVariant","categoryVariant","cardPadding","itemTitleSize","itemTitleWeight","priceSize","priceWeight","reasonTextSize","reasonLabelWidth","reasonGap"]);function pickHealthPlanCardOptions(props){let out={};for(let key of HEALTH_PLAN_CARD_OPTION_KEYS)props[key]!==void 0&&(out[key]=props[key]);return out}function healthPlanAddButtonHeight(size){let height=typeof size=="number"&&Number.isFinite(size)&&size>0?size:size==="compact"?32:44;return{height:height,hit:Math.max(44,height)}}function healthPlanLength(value){return typeof value=="number"&&Number.isFinite(value)&&value>=0?value:null}function healthPlanTitleOffset(titleGap,sectionGap){let gap=healthPlanLength(titleGap);return gap===null?0:gap-sectionGap}function isHealthPlanSessionRequired(error){return error!==null&&(error.reasonCode==="session_required"||error.code==="sessionRequired")}var DockContext=react.createContext(null);function HealthPlanCartScope({children:children}){let[dock,setDock]=react.useState(null),store=react.useMemo(()=>({dock:dock,publish:setDock}),[dock]);return react.createElement(DockContext.Provider,{value:store},children)}function useHealthPlanCartDock(){return react.useContext(DockContext)?.dock??null}function usePublishHealthPlanCart(enabled,cart,busy,petRef,plan,setInPlan){let publish=react.useContext(DockContext)?.publish,latest=react.useRef(setInPlan);react.useEffect(()=>{latest.current=setInPlan},[setInPlan]);let writes=react.useMemo(()=>healthPlanWrites(plan,(productId,inPlan)=>latest.current(productId,inPlan)),[plan]);react.useEffect(()=>{if(!(publish===void 0||!enabled))return publish(/* @__PURE__ */Object.freeze({cart:cart,busy:busy,petRef:petRef,plan:plan,...writes})),()=>publish(null)},[publish,enabled,cart,busy,petRef,plan,writes])}function healthPlanPetWords(name,sex){let n=name?.trim()??"",named=n===""?"your pet":n,Named=n===""?"Your pet":n;return sex==="female"?{name:named,Name:Named,poss:"her",Poss:"Her",obj:"her"}:sex==="male"?{name:named,Name:Named,poss:"his",Poss:"His",obj:"him"}:{name:named,Name:Named,poss:`${named}'s`,Poss:`${Named}'s`,obj:named}}var cartRenewal=p=>p===null?"":`${p.productName} renews every ${p.intervalDays} days at ${p.box??""} until you cancel; skip or cancel anytime in the app.`,HEALTH_PLAN_NO_SHIP_DAY_COPY=/* @__PURE__ */Object.freeze({onceFine:"",cartFine:cartRenewal,startedWhat:()=>""});function healthPlanFocusCopyFor(pet){let w=healthPlanPetWords(pet.name,pet.sex),nameOf=p=>p.petName?.trim()||w.name,NameOf=p=>p.petName?.trim()||w.Name,copy=/* @__PURE__ */Object.freeze({jumpKicker:(p,subscribed)=>subscribed?`In ${w.poss} plan, every ${p.intervalDays} days`:p.offer?`${p.discountPercent}% off ${w.poss} first box`:p.intervalDays>0?`Ships every ${p.intervalDays} days`:copy.onceLine(p),optionsLabel:"How to buy",subscribe:"Subscribe",bestValue:"Best value",subscribeLine:p=>p.offer?`First box, then ${p.box??""}`:`${p.box??""} every ${p.intervalDays} days`,priceLine:p=>p.offer?`${p.discountPercent}% off the first box. Ships every ${p.intervalDays} days.`:p.intervalDays>0?`Ships every ${p.intervalDays} days.`:copy.onceOffer(p),once:"One box",onceLine:p=>p.onceDiscountPercent>0?`${p.onceDiscountPercent}% off, ships once`:"Ships once",buyOnce:p=>`Buy one box, ${p.once??p.box??""}`,subscribed:"Subscribed",subscribedLine:(p,next)=>next===null?`Every ${p.intervalDays} days`:`Every ${p.intervalDays} days · next box ${next}`,manage:"Manage",checkoutKicker:"Checkout",checkoutTitle:p=>`Checkout: ${p.productName}`,checkoutOffer:p=>`${p.discountPercent}% off your first box.`,shipsEvery:"Ships every",days:n=>`${n} days`,buyOnceOption:"Buy once",checkoutGo:(_p,subscribe,today)=>`${subscribe?"Subscribe":"Buy now"} · ${today} today`,renews:p=>`Renews every ${p.intervalDays} days at ${p.box??""} until you cancel; skip or cancel anytime in the app.`,onceFine:"One box, ships tomorrow.",onceOffer:p=>p.onceDiscountPercent>0?`${p.onceDiscountPercent}% off, ships once.`:"Ships once.",checkoutNote:"",close:"Close",startedTitle:p=>`${NameOf(p)}'s plan has started.`,orderedTitle:()=>"Order placed.",startedWhat:p=>`${p.productName} ships tomorrow.`,startedNote:"",startedSteps:"What happens next",tomorrow:"Tomorrow",firstBoxShips:`${w.Poss} first box ships.`,trackingComesByText:"Tracking comes by text.",checkin:q=>q===null?"A 2-week check-in by text.":`A 2-week check-in by text: ${q}`,refill:`A text 3 days before ${w.poss} next box. Reply SKIP to skip it.`,nextBoxShips:p=>`${w.Poss} next box ships, ${p.box??""}.`,startedDone:`Back to ${w.poss} plan`,manageKicker:"Your subscription",manageTitle:p=>`Manage ${p.productName}`,skip:"Skip the next box",cancel:"Cancel subscription",skipped:(_p,next)=>next===null?"Skipped.":`Skipped. ${w.Poss} next box ships ${next}.`,cancelled:p=>`${p.productName} is cancelled. Restart it from ${w.poss} plan anytime.`,orders:"Orders",startedHeader:"Subscribed",placedHeader:"Order placed",cartCheckoutTitle:"Checkout",orderNote:"",cartLabel:n=>n>0?`Cart, ${n} item${n>1?"s":""}`:"Cart, empty",addToCart:price=>`Add to cart · ${price}`,viewCart:"View cart",addedToCart:(p,subscription)=>`${p.productName} is in your cart${subscription?", as a subscription":""}.`,removedFromCart:name=>`${name} is out of your cart.`,cartTitle:"Cart",cartEmptyTitle:"Your cart is empty",cartEmptyBody:p=>`${NameOf(p)}'s plan pick lands here when you add it.`,seeOrders:`See ${w.poss} orders`,quantityLabel:name=>`How many: ${name}`,fewer:"One fewer",more:"One more",remove:"Remove",cartSubLine:p=>p.offer?`First box ${p.discountPercent}% off, then ${p.box??""} every ${p.intervalDays} days`:`Every ${p.intervalDays} days`,cartOnceLine:(p,subscribed)=>subscribed?`An extra box. ${w.Poss} plan keeps shipping.`:p.onceDiscountPercent>0?`One box, ${p.onceDiscountPercent}% off`:"One box",cartModeLabel:name=>`How to buy ${name}`,cartModeSubscribe:p=>p.offer?`Subscribe, ${p.discountPercent}% off the first box`:"Subscribe",cartModeOnce:p=>p.onceDiscountPercent>0?`One box, ${p.onceDiscountPercent}% off`:"One box",subtotal:"Subtotal",shipping:"Shipping",shippingValue:"",shippingTag:"",total:"Total",dueToday:"Due today",thenRenews:p=>`Then ${p.productName}`,renewsEvery:p=>`${p.box??""} every ${p.intervalDays} days`,checkoutCart:total=>`Checkout · ${total}`,cartOneAtATime:"",cartSubscriptionApart:"",cartItemSubscription:p=>`Subscription, every ${p.intervalDays} days`,cartItemQuantity:n=>`Qty ${n}`,placeOrder:(total,subscribe)=>`${subscribe?"Place order and subscribe":"Place order"} · ${total}`,cartFine:p=>`${p===null?"":`${cartRenewal(p)} `}Ships tomorrow.`,placedSteps:"What's coming",placedShips:"It ships.",placedArrives:"It arrives at home.",viewOrder:"View order",herSubscription:`${w.Poss} subscription`,nextBox:day=>`Next box ${day}`,everyDays:n=>`Every ${n} days`,ordersHeading:afterSubscription=>afterSubscription?"Orders":`${w.Poss} orders`,ordersFine:"",ordersEmptyTitle:"No orders yet",ordersEmptyBody:p=>`The boxes from ${nameOf(p)}'s plan show up here.`,moreOrders:"",orderSteps:["Ordered","Shipped","Out for delivery","Delivered"],subscriptionBox:"Subscription box",orderTitle:n=>n===null?"Order":`Order ${n}`,arrivesBy:day=>`Arrives by ${day}`,deliveredOn:day=>`Delivered ${day}`,expected:day=>`Expected ${day}`,tracking:"Tracking",trackingByText:"The tracking number comes by text when it ships.",trackOn:carrier=>`Track on ${carrier}`,trackLink:"",inThisOrder:"In this order",orderItemLine:(n,box)=>`Qty ${n}${box?" · subscription box":""}`,paidWith:"Paid with",buyAgain:"Buy again",orderHelp:"Get help with this order",addWeightTitle:`Add ${w.poss} weight to size ${w.poss} dose`,addWeightBody:`From a home scale or ${w.poss} last vet visit.`,connectRecordsTitle:`Connect ${w.poss} vet records`,connectRecordsBody:`${w.Poss} weight, visits and labs make ${w.poss} plan sharper.`,weightKicker:`${w.Poss} weight`,weightTitle:p=>`Add ${nameOf(p)}'s weight`,weightBody:`From a home scale or ${w.poss} last vet visit. ${w.Poss} plan uses it to size ${w.poss} dose.`,weightField:`${w.Poss} weight`,weightUnit:"lb",weightUnitKg:"kg",weightErrorKg:"Enter your pet’s weight",weightError:`Enter ${w.poss} weight in pounds, like 14.1.`,weightSave:`Save ${w.poss} weight`,weightSaved:lb=>`Saved: ${lb} lb. ${w.Poss} dose is sized for ${w.obj}.`,weightSavedKg:kg=>`Saved: ${kg} kg. ${w.Poss} dose is sized for ${w.obj}.`,checkoutFailed:"That didn't go through. Please try again."});return copy}var HEALTH_PLAN_FOCUS_COPY=healthPlanFocusCopyFor({sex:"female"});function formatHealthPlanDay(iso,locale){if(iso===null||!/^\d{4}-\d{2}-\d{2}$/.test(iso))return null;let d=/* @__PURE__ */new Date(`${iso}T00:00:00Z`);if(Number.isNaN(d.getTime()))return null;try{return new Intl.DateTimeFormat(locale??"en-US",{month:"short",day:"numeric",timeZone:"UTC"}).format(d)}catch{return iso}}var noopTelemetry=/* @__PURE__ */Object.freeze({track(){},trackExpectedFailure(){}});function ok(value,warning){/* @__PURE__ */
|
|
2
|
+
"use strict";var react=require("react"),jsxRuntime=require("react/jsx-runtime"),reactDom=require("react-dom");var HEALTH_PLAN_COPY=/* @__PURE__ */Object.freeze({loading:"Loading",retry:"Try again",signedOut:"Sign in required",addToCart:"Add to cart",added:"Added",remove:"Remove",checkout:"Checkout",subtotal:"Subtotal",sample:"Sample",cartEmpty:"Your cart is empty.",choosePet:"Choose a pet",emptyTitle:"",emptyBody:"",emptyAsk:""}),COPY_ASKS=/* @__PURE__ */Object.freeze({emptyTitle:true,emptyBody:true,emptyAsk:true}),HEALTH_PLAN_REASON_LABELS=/* @__PURE__ */Object.freeze({dna:"",records:"Records",inside:"Inside",profile:""}),HEALTH_PLAN_TEMPLATES=/* @__PURE__ */Object.freeze({planTitle:petName=>`${petName}'s care plan`,cartLabel:brand=>`${brand} cart`}),HEALTH_PLAN_COPY_PLACEHOLDERS=/* @__PURE__ */Object.freeze([...Object.keys(HEALTH_PLAN_COPY).filter(key=>COPY_ASKS[key]===true&&HEALTH_PLAN_COPY[key]==="").map(key=>`HEALTH_PLAN_COPY.${key}`),...["profile"].filter(kind=>HEALTH_PLAN_REASON_LABELS[kind]==="").map(kind=>`HEALTH_PLAN_REASON_LABELS.${kind}`)]);var HEALTH_PLAN_LAYOUT_DEFAULTS=/* @__PURE__ */Object.freeze({imageVariant:"wide",reasonVariant:"pills",cartBarVisibility:"whenItems",cartBarPlacement:"sticky",addButtonSize:"full",addedVariant:"link",categoryVariant:"text",showCategory:false,cardShadow:false,cardBorder:true});function healthPlanWrites(plan,setInPlan){return{setInPlan:setInPlan,addAll:async()=>{let missing=(plan?.items??[]).filter(item=>!item.inPlan);return(await Promise.all(missing.map(item=>setInPlan(item.productId,true)))).every(Boolean)}}}function showHealthPlanCartBar(visibility,count){return(visibility??HEALTH_PLAN_LAYOUT_DEFAULTS.cartBarVisibility)==="always"||count>0}var HEALTH_PLAN_CARD_OPTION_KEYS=/* @__PURE__ */Object.freeze(["showCategory","cardShadow","cardBorder","addButtonSize","addButtonFontSize","addedVariant","categoryVariant","cardPadding","itemTitleSize","itemTitleWeight","priceSize","priceWeight","reasonTextSize","reasonLabelWidth","reasonGap"]);function pickHealthPlanCardOptions(props){let out={};for(let key of HEALTH_PLAN_CARD_OPTION_KEYS)props[key]!==void 0&&(out[key]=props[key]);return out}function healthPlanAddButtonHeight(size){let height=typeof size=="number"&&Number.isFinite(size)&&size>0?size:size==="compact"?32:44;return{height:height,hit:Math.max(44,height)}}function healthPlanLength(value){return typeof value=="number"&&Number.isFinite(value)&&value>=0?value:null}function healthPlanTitleOffset(titleGap,sectionGap){let gap=healthPlanLength(titleGap);return gap===null?0:gap-sectionGap}function isHealthPlanSessionRequired(error){return error!==null&&(error.reasonCode==="session_required"||error.code==="sessionRequired")}var DockContext=react.createContext(null);function HealthPlanCartScope({children:children}){let[dock,setDock]=react.useState(null),store=react.useMemo(()=>({dock:dock,publish:setDock}),[dock]);return react.createElement(DockContext.Provider,{value:store},children)}function useHealthPlanCartDock(){return react.useContext(DockContext)?.dock??null}function usePublishHealthPlanCart(enabled,cart,busy,petRef,plan,setInPlan){let publish=react.useContext(DockContext)?.publish,latest=react.useRef(setInPlan);react.useEffect(()=>{latest.current=setInPlan},[setInPlan]);let writes=react.useMemo(()=>healthPlanWrites(plan,(productId,inPlan)=>latest.current(productId,inPlan)),[plan]);react.useEffect(()=>{if(!(publish===void 0||!enabled))return publish(/* @__PURE__ */Object.freeze({cart:cart,busy:busy,petRef:petRef,plan:plan,...writes})),()=>publish(null)},[publish,enabled,cart,busy,petRef,plan,writes])}function healthPlanPetWords(name,sex){let n=name?.trim()??"",named=n===""?"your pet":n,Named=n===""?"Your pet":n;return sex==="female"?{name:named,Name:Named,poss:"her",Poss:"Her",obj:"her"}:sex==="male"?{name:named,Name:Named,poss:"his",Poss:"His",obj:"him"}:{name:named,Name:Named,poss:`${named}'s`,Poss:`${Named}'s`,obj:named}}var cartRenewal=p=>p===null?"":`${p.productName} renews every ${p.intervalDays} days at ${p.box??""} until you cancel; skip or cancel anytime in the app.`,HEALTH_PLAN_NO_SHIP_DAY_COPY=/* @__PURE__ */Object.freeze({onceFine:"",cartFine:cartRenewal,startedWhat:()=>""});function healthPlanFocusCopyFor(pet){let w=healthPlanPetWords(pet.name,pet.sex),nameOf=p=>p.petName?.trim()||w.name,NameOf=p=>p.petName?.trim()||w.Name,copy=/* @__PURE__ */Object.freeze({jumpKicker:(p,subscribed)=>subscribed?`In ${w.poss} plan, every ${p.intervalDays} days`:p.offer?`${p.discountPercent}% off ${w.poss} first box`:p.intervalDays>0?`Ships every ${p.intervalDays} days`:copy.onceLine(p),optionsLabel:"How to buy",subscribe:"Subscribe",bestValue:"Best value",subscribeLine:p=>p.offer?`First box, then ${p.box??""}`:`${p.box??""} every ${p.intervalDays} days`,priceLine:p=>p.offer?`${p.discountPercent}% off the first box. Ships every ${p.intervalDays} days.`:p.intervalDays>0?`Ships every ${p.intervalDays} days.`:copy.onceOffer(p),once:"One box",onceLine:p=>p.onceDiscountPercent>0?`${p.onceDiscountPercent}% off, ships once`:"Ships once",buyOnce:p=>`Buy one box, ${p.once??p.box??""}`,subscribed:"Subscribed",subscribedLine:(p,next)=>next===null?`Every ${p.intervalDays} days`:`Every ${p.intervalDays} days · next box ${next}`,manage:"Manage",checkoutKicker:"Checkout",checkoutTitle:p=>`Checkout: ${p.productName}`,checkoutOffer:p=>`${p.discountPercent}% off your first box.`,shipsEvery:"Ships every",days:n=>`${n} days`,buyOnceOption:"Buy once",checkoutGo:(_p,subscribe,today)=>`${subscribe?"Subscribe":"Buy now"} · ${today} today`,renews:p=>`Renews every ${p.intervalDays} days at ${p.box??""} until you cancel; skip or cancel anytime in the app.`,onceFine:"One box, ships tomorrow.",onceOffer:p=>p.onceDiscountPercent>0?`${p.onceDiscountPercent}% off, ships once.`:"Ships once.",checkoutNote:"",close:"Close",startedTitle:p=>`${NameOf(p)}'s plan has started.`,orderedTitle:()=>"Order placed.",startedWhat:p=>`${p.productName} ships tomorrow.`,startedNote:"",startedSteps:"What happens next",tomorrow:"Tomorrow",firstBoxShips:`${w.Poss} first box ships.`,trackingComesByText:"Tracking comes by text.",checkin:q=>q===null?"A 2-week check-in by text.":`A 2-week check-in by text: ${q}`,refill:`A text 3 days before ${w.poss} next box. Reply SKIP to skip it.`,nextBoxShips:p=>`${w.Poss} next box ships, ${p.box??""}.`,startedDone:`Back to ${w.poss} plan`,manageKicker:"Your subscription",manageTitle:p=>`Manage ${p.productName}`,skip:"Skip the next box",cancel:"Cancel subscription",skipped:(_p,next)=>next===null?"Skipped.":`Skipped. ${w.Poss} next box ships ${next}.`,cancelled:p=>`${p.productName} is cancelled. Restart it from ${w.poss} plan anytime.`,orders:"Orders",startedHeader:"Subscribed",placedHeader:"Order placed",cartCheckoutTitle:"Checkout",orderNote:"",cartLabel:n=>n>0?`Cart, ${n} item${n>1?"s":""}`:"Cart, empty",addToCart:price=>`Add to cart · ${price}`,viewCart:"View cart",addedToCart:(p,subscription)=>`${p.productName} is in your cart${subscription?", as a subscription":""}.`,removedFromCart:name=>`${name} is out of your cart.`,cartTitle:"Cart",cartEmptyTitle:"Your cart is empty",cartEmptyBody:p=>`${NameOf(p)}'s plan pick lands here when you add it.`,seeOrders:`See ${w.poss} orders`,quantityLabel:name=>`How many: ${name}`,fewer:"One fewer",more:"One more",remove:"Remove",cartSubLine:p=>p.offer?`First box ${p.discountPercent}% off, then ${p.box??""} every ${p.intervalDays} days`:`Every ${p.intervalDays} days`,cartOnceLine:(p,subscribed)=>subscribed?`An extra box. ${w.Poss} plan keeps shipping.`:p.onceDiscountPercent>0?`One box, ${p.onceDiscountPercent}% off`:"One box",cartModeLabel:name=>`How to buy ${name}`,cartModeSubscribe:p=>p.offer?`Subscribe, ${p.discountPercent}% off the first box`:"Subscribe",cartModeOnce:p=>p.onceDiscountPercent>0?`One box, ${p.onceDiscountPercent}% off`:"One box",subtotal:"Subtotal",shipping:"Shipping",shippingValue:"",shippingTag:"",total:"Total",dueToday:"Due today",thenRenews:p=>`Then ${p.productName}`,renewsEvery:p=>`${p.box??""} every ${p.intervalDays} days`,checkoutCart:total=>`Checkout · ${total}`,cartOneAtATime:"",cartSubscriptionApart:"",cartItemSubscription:p=>`Subscription, every ${p.intervalDays} days`,cartItemQuantity:n=>`Qty ${n}`,placeOrder:(total,subscribe)=>`${subscribe?"Place order and subscribe":"Place order"} · ${total}`,cartFine:p=>`${p===null?"":`${cartRenewal(p)} `}Ships tomorrow.`,placedSteps:"What's coming",placedShips:"It ships.",placedArrives:"It arrives at home.",viewOrder:"View order",herSubscription:`${w.Poss} subscription`,nextBox:day=>`Next box ${day}`,everyDays:n=>`Every ${n} days`,ordersHeading:afterSubscription=>afterSubscription?"Orders":`${w.Poss} orders`,ordersFine:"",ordersEmptyTitle:"No orders yet",ordersEmptyBody:p=>`The boxes from ${nameOf(p)}'s plan show up here.`,moreOrders:"",orderSteps:["Ordered","Shipped","Out for delivery","Delivered"],subscriptionBox:"Subscription box",orderTitle:n=>n===null?"Order":`Order ${n}`,arrivesBy:day=>`Arrives by ${day}`,deliveredOn:day=>`Delivered ${day}`,expected:day=>`Expected ${day}`,tracking:"Tracking",trackingByText:"The tracking number comes by text when it ships.",trackOn:carrier=>`Track on ${carrier}`,trackLink:"",inThisOrder:"In this order",orderItemLine:(n,box)=>`Qty ${n}${box?" · subscription box":""}`,paidWith:"Paid with",buyAgain:"Buy again",orderHelp:"Get help with this order",addWeightTitle:`Add ${w.poss} weight to size ${w.poss} dose`,addWeightBody:`From a home scale or ${w.poss} last vet visit.`,connectRecordsTitle:`Connect ${w.poss} vet records`,connectRecordsBody:`${w.Poss} weight, visits and labs make ${w.poss} plan sharper.`,weightKicker:`${w.Poss} weight`,weightTitle:p=>`Add ${nameOf(p)}'s weight`,weightBody:`From a home scale or ${w.poss} last vet visit. ${w.Poss} plan uses it to size ${w.poss} dose.`,weightField:`${w.Poss} weight`,weightUnit:"lb",weightUnitKg:"kg",weightErrorKg:"Enter your pet’s weight",weightError:`Enter ${w.poss} weight in pounds, like 14.1.`,weightSave:`Save ${w.poss} weight`,weightSaved:lb=>`Saved: ${lb} lb. ${w.Poss} dose is sized for ${w.obj}.`,weightSavedKg:kg=>`Saved: ${kg} kg. ${w.Poss} dose is sized for ${w.obj}.`,checkoutFailed:"That didn't go through. Please try again.",builtWith:vet=>`Built with ${vet}`,fromVet:shortName=>`From ${shortName}`,waitVetTips:vet=>`Free tips from ${vet}, built around that risk`,signalsFit:count=>`${count} of ${count} signals fit ${w.Name}`,signalsValue:count=>`${count}/${count}`,noPick:`No supplement for this one. ${w.Poss} vet comes first.`,callYourVet:"Call your vet today",callAVet:"Call a vet today",saveForCheckup:`Save for ${w.poss} next checkup`,savedForCheckup:`Saved for ${w.poss} next checkup`,blanksLabel:`${w.Poss} three blanks`,blanksAsked:clinic=>`Asked ${clinic}`,blanksAskedNoClinic:"",blanksWaitPill:"2 to 5 days",blanksFilledKicker:`From ${w.poss} vet records`,blanksFilled:(filled,total)=>`${filled} of ${total} filled`,blanksWeight:`Keep ${w.obj} at `,blanksWeightSource:`From ${w.poss} vet visits`,blanksDose:(dose,product)=>`${dose} of ${product}`,blanksDoseSource:`Sized to ${w.poss} weight`,blanksShots:`${w.Poss} next shots are due `,blanksShotsSource:`From ${w.poss} clinic`,blankEmpty:"blank",recordsLanded:`${w.Poss} records are in. ${w.Poss} plan now uses ${w.poss} weight and ${w.poss} visits.`});return copy}var HEALTH_PLAN_FOCUS_COPY=healthPlanFocusCopyFor({sex:"female"});function formatHealthPlanDay(iso,locale){if(iso===null||!/^\d{4}-\d{2}-\d{2}$/.test(iso))return null;let d=/* @__PURE__ */new Date(`${iso}T00:00:00Z`);if(Number.isNaN(d.getTime()))return null;try{return new Intl.DateTimeFormat(locale??"en-US",{month:"short",day:"numeric",timeZone:"UTC"}).format(d)}catch{return iso}}var noopTelemetry=/* @__PURE__ */Object.freeze({track(){},trackExpectedFailure(){}});function ok(value,warning){/* @__PURE__ */
|
|
3
3
|
return Object.freeze({ok:true,value:value})}function err(error){/* @__PURE__ */
|
|
4
4
|
return Object.freeze({ok:false,error:error})}var EverfurConfigError=class _EverfurConfigError extends Error{constructor(kind,message){super(message),this.name="EverfurConfigError",this.kind=kind,Object.setPrototypeOf(this,_EverfurConfigError.prototype)}};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 HEALTH_PLAN_EVENTS=/* @__PURE__ */Object.freeze({opened:"health_plan.opened",productClicked:"health_plan.product_clicked",checkoutStarted:"health_plan.checkout_started"});function useHealthPlanTelemetry(){return react.useContext(EverfurContext)?.runtime.registry.services.telemetry??noopTelemetry}var PlanPetContext=react.createContext(null);function HealthPlanPetScope({petRef:petRef,children:children}){return react.createElement(PlanPetContext.Provider,{value:petRef},children)}function useHealthPlanBarPet(dockPet){let page=react.useContext(PlanPetContext),ctx=react.useContext(EverfurContext);return page??dockPet??ctx?.activePet??null}function useHealthPlanOpened(drawn,petRef,plan){let telemetry=useHealthPlanTelemetry(),sent=react.useRef(null);react.useEffect(()=>{if(!drawn||petRef===null||sent.current===petRef)return;sent.current=petRef;let items=plan?.items??[];telemetry.track(HEALTH_PLAN_EVENTS.opened,{petRef:petRef,itemsCount:items.length,inPlanCount:items.filter(item=>item.inPlan).length})},[drawn,petRef,plan,telemetry])}function trackProductClicked(telemetry,petRef,productId,inPlan){telemetry.track(HEALTH_PLAN_EVENTS.productClicked,{petRef:petRef,productId:productId,inPlan:inPlan})}function trackCheckoutStarted(telemetry,petRef,cart){telemetry.track(HEALTH_PLAN_EVENTS.checkoutStarted,{petRef:petRef,itemsCount:cart.count,subtotal:cart.subtotal,currency:cart.currency})}var CONTRACT_RETRYABILITY=/* @__PURE__ */Object.freeze([
|
|
5
5
|
/* @__PURE__ */Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),
|
|
@@ -108,19 +108,19 @@ return Object.freeze({orderId:orderId,productId:productId,title:str2(o.title),cu
|
|
|
108
108
|
return Object.freeze({status:status,orderNumber:trackingText(o.order_number,64),carrier:trackingText(o.carrier,64),trackingNumber:trackingText(o.tracking_number,128),trackingUrl:trackingUrlOf(o.tracking_url),shippedAt:instantOf(o.shipped_at),estimatedDelivery:dateOf(o.estimated_delivery),updatedAt:instantOf(o.updated_at)})}function trackingOf(raw){let t=healthPlanOrderTrackingFromWire(raw);return t===null?{}:{tracking:t}}function healthPlanOneBoxOrderPageFromWire(raw){let rows=raw!==null&&typeof raw=="object"?raw.orders:null;if(!Array.isArray(rows))return null;let cursor=raw.next_cursor;/* @__PURE__ */
|
|
109
109
|
return Object.freeze({orders:/* @__PURE__ */Object.freeze(rows.map(healthPlanOneBoxOrderFromWire).filter(x=>x!==null)),nextCursor:typeof cursor=="string"&&cursor.length>0&&cursor.length<=REF_MAX2?cursor:null})}function instantOf(value){return typeof value!="string"||value.length>40||!/^\d{4}-\d{2}-\d{2}T/.test(value)||Number.isNaN(Date.parse(value))?null:value}function oneBoxOf(value,boxPrice){if(value===null||typeof value!="object")return null;let o=value,price=money(o.price);return price===null||price>boxPrice?null:/* @__PURE__ */Object.freeze({price:price,discountPercent:int(o.discount_percent)??0})}function healthPlanSubscriptionQuoteFromWire(raw){if(raw===null||typeof raw!="object")return null;let o=raw,productId=idOf(o.product_id),currency=currencyOf2(o.currency),boxPrice=money(o.box_price),options=intervalsOf(o.interval_options);if(productId===null||currency===null||boxPrice===null||options.length===0)return null;let offerApplies=o.offer_applies===true,def=int(o.default_interval_days),s=o.supply,supply=null;if(s!==null&&typeof s=="object"){let so=s,unitsPerBox=int(so.units_per_box),unitsPerDay=money(so.units_per_day),supplyDays=int(so.supply_days);unitsPerBox!==null&&unitsPerDay!==null&&supplyDays!==null&&(supply=/* @__PURE__ */Object.freeze({unitsPerBox:unitsPerBox,unitLabel:str2(so.unit_label,30),unitsPerDay:unitsPerDay,supplyDays:supplyDays,doseBasis:so.dose_basis==="weight"?"weight":"assumed"}))}let pct=int(o.first_box_discount_percent)??0;/* @__PURE__ */
|
|
110
110
|
return Object.freeze({productId:productId,currency:currency,boxPrice:boxPrice,firstBoxPrice:offerApplies?money(o.first_box_price)??boxPrice:boxPrice,firstBoxDiscountPercent:offerApplies?pct:0,offerApplies:offerApplies,oneBox:oneBoxOf(o.one_box,boxPrice),intervalOptions:options,defaultIntervalDays:def!==null&&options.includes(def)?def:options[0],supply:supply,firstBoxShipsOn:dateOf(o.first_box_ships_on),subscription:healthPlanSubscriptionFromWire(o.subscription)})}function invalid2(wireMessage){return makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage})}function malformed2(call){return makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:`${call}: the response carried no subscription`})}function disposed2(verb){return makeEverfurError("runtimeDisposed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${verb} was called after unmount`})}var validRef2=value=>typeof value=="string"&&value.length>0&&value.length<=REF_MAX2;function base(petRef){return`/widget/v1/pets/${encodeURIComponent(petRef)}/plan/subscriptions`}function createHealthPlanSubscriptionRepositoryOver(deps){let funnel=withPlainNotFound(deps.funnel??createRequestFunnel({auth:deps.auth,...deps.errorPolicy?{errorPolicy:deps.errorPolicy}:{}})),one=async(call,petRef,method,suffix,body)=>{if(!validRef2(petRef))return err(invalid2("petRef must be 1..128 characters"));let res=await funnel.send(call,{method:method,path:`${base(petRef)}${suffix}`,...body===void 0?{}:{body:body}});if(!res.ok)return err(res.error);let sub=healthPlanSubscriptionFromWire(res.value);return sub===null?err(malformed2(call)):ok(sub)},idSuffix=(id,tail="")=>validRef2(id)?`/${encodeURIComponent(id)}${tail}`:null;return{async quote(petRef,productId){if(!validRef2(petRef))return err(invalid2("petRef must be 1..128 characters"));if(!validRef2(productId))return err(invalid2("productId must be 1..128 characters"));let res=await funnel.send("healthPlan.subscription.quote",{method:"GET",path:`${base(petRef)}/quote`,query:{product_id:productId}});if(!res.ok)return err(res.error);let quote2=healthPlanSubscriptionQuoteFromWire(res.value);return quote2===null?err(malformed2("healthPlan.subscription.quote")):ok(quote2)},async list(petRef){if(!validRef2(petRef))return err(invalid2("petRef must be 1..128 characters"));let res=await funnel.send("healthPlan.subscription.list",{method:"GET",path:base(petRef)});if(!res.ok)return err(res.error);let rows=res.value!==null&&typeof res.value=="object"?res.value.subscriptions:null;return Array.isArray(rows)?ok(/* @__PURE__ */Object.freeze(rows.map(healthPlanSubscriptionFromWire).filter(s=>s!==null))):err(malformed2("healthPlan.subscription.list"))},create(petRef,productId,intervalDays){return validRef2(productId)?one("healthPlan.subscription.create",petRef,"POST","",{product_id:productId,...intervalDays===void 0?{}:{interval_days:intervalDays}}):Promise.resolve(err(invalid2("productId must be 1..128 characters")))},changeInterval(petRef,id,intervalDays){let s=idSuffix(id);return s===null?Promise.resolve(err(invalid2("subscriptionId must be 1..128 characters"))):one("healthPlan.subscription.interval",petRef,"PATCH",s,{interval_days:intervalDays})},skip(petRef,id){let s=idSuffix(id,"/skip");return s===null?Promise.resolve(err(invalid2("subscriptionId must be 1..128 characters"))):one("healthPlan.subscription.skip",petRef,"POST",s,{})},cancel(petRef,id){let s=idSuffix(id,"/cancel");return s===null?Promise.resolve(err(invalid2("subscriptionId must be 1..128 characters"))):one("healthPlan.subscription.cancel",petRef,"POST",s,{})},restart(petRef,id,intervalDays){let s=idSuffix(id,"/restart");return s===null?Promise.resolve(err(invalid2("subscriptionId must be 1..128 characters"))):one("healthPlan.subscription.restart",petRef,"POST",s,intervalDays===void 0?{}:{interval_days:intervalDays})},async buyOneBox(petRef,productId,tapKey){if(!validRef2(petRef))return err(invalid2("petRef must be 1..128 characters"));if(!validRef2(productId))return err(invalid2("productId must be 1..128 characters"));let res=await funnel.send("healthPlan.subscription.oneBox",{method:"POST",path:`${base(petRef)}/one-box`,body:{product_id:productId}},{idempotent:true,...tapKey===void 0?{}:{idempotencyKey:`hp-one-box:${tapKey}`}});if(!res.ok)return err(res.error);let order=healthPlanOneBoxOrderFromWire(res.value);return order===null?err(malformed2("healthPlan.subscription.oneBox")):ok(order)},async listOneBoxOrders(petRef){if(!validRef2(petRef))return err(invalid2("petRef must be 1..128 characters"));let res=await funnel.send("healthPlan.subscription.oneBoxList",{method:"GET",path:`${base(petRef)}/one-box`});if(!res.ok)return err(res.error);let page=healthPlanOneBoxOrderPageFromWire(res.value);return page===null?err(malformed2("healthPlan.subscription.oneBoxList")):ok(page.orders)},async listOneBoxOrderPage(petRef,opts){if(!validRef2(petRef))return err(invalid2("petRef must be 1..128 characters"));let limit=opts?.limit;if(limit!==void 0&&!(Number.isInteger(limit)&&limit>=1&&limit<=50))return err(invalid2("limit must be a whole number 1..50"));if(opts?.cursor!==void 0&&!validRef2(opts.cursor))return err(invalid2("cursor must be 1..128 characters"));let query={...limit!==void 0?{limit:String(limit)}:{},...opts?.cursor!==void 0?{cursor:opts.cursor}:{}},res=await funnel.send("healthPlan.subscription.oneBoxList",{method:"GET",path:`${base(petRef)}/one-box`,query:query});if(!res.ok)return err(res.error);let page=healthPlanOneBoxOrderPageFromWire(res.value);return page===null?err(malformed2("healthPlan.subscription.oneBoxList")):ok(page)}}}function createHealthPlanSubscriptionRepository(runtime){let over=()=>{let{services:services}=runtime.registry;return createHealthPlanSubscriptionRepositoryOver({auth:services.authFor(null),...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}})},guard=(verb,f)=>(...a)=>runtime.isDisposed?Promise.resolve(err(disposed2(verb))):f(over(),...a);return{quote:guard("quote",(r,p,id)=>r.quote(p,id)),list:guard("list",(r,p)=>r.list(p)),create:guard("create",(r,p,id,n)=>r.create(p,id,n)),changeInterval:guard("changeInterval",(r,p,id,n)=>r.changeInterval(p,id,n)),skip:guard("skip",(r,p,id)=>r.skip(p,id)),cancel:guard("cancel",(r,p,id)=>r.cancel(p,id)),restart:guard("restart",(r,p,id,n)=>r.restart(p,id,n)),buyOneBox:guard("buyOneBox",(r,p,id,k)=>r.buyOneBox(p,id,k)),listOneBoxOrders:guard("listOneBoxOrders",(r,p)=>r.listOneBoxOrders(p)),listOneBoxOrderPage:guard("listOneBoxOrderPage",(r,p,o)=>r.listOneBoxOrderPage(p,o))}}var REFUSALS=/* @__PURE__ */new Set(["cart_disabled","cart_has_subscription","cart_currency_mixed","sample_product","partner_endpoint_missing","checkout_pending","already_subscribed"]);function healthPlanCheckoutRefusal(error){if(error==null||error.httpStatus!==409)return null;let raw=obj(error.raw);for(let candidate of[error.reasonCode,error.wireMessage,raw?.detail,raw?.message,raw?.reason_code])if(typeof candidate=="string"&&REFUSALS.has(candidate.trim()))return candidate.trim();return null}var REF_MAX3=128,CART_MAX=10,ICONS=/* @__PURE__ */new Set(["shield","arrow","check","star","truck","refresh","card","alert","x","chat","repeat","calendar","flame"]),obj=value=>value!==null&&typeof value=="object"&&!Array.isArray(value)?value:null,str3=(value,max=1e3)=>typeof value=="string"&&value.trim().length>0&&value.length<=max?value.trim():null,kindOf=value=>typeof value=="string"&&/^[A-Za-z0-9_-]{1,40}$/.test(value)?value:null,iconOf=value=>typeof value=="string"&&ICONS.has(value)?value:null;function imageOf(value){let s=str3(value,2048);return s===null||/\s/.test(s)?null:/^https:\/\/[^/]/i.test(s)||/^\/(?![/\\])/.test(s)?s:null}var idOf2=value=>typeof value=="number"&&Number.isInteger(value)?String(value):str3(value,REF_MAX3);function weightOf(value){return typeof value=="number"&&Number.isFinite(value)&&value>0?value:null}function clean(fields){/* @__PURE__ */
|
|
111
|
-
return Object.freeze(Object.fromEntries(Object.entries(fields).filter(([,v])=>v!=null)))}function listOf(value,each,max=20){if(!Array.isArray(value))return null;let out=[];for(let row of value){if(out.length>=max)break;let mapped=each(row);mapped!==null&&out.push(mapped)}return out.length===0?null:/* @__PURE__ */Object.freeze(out)}var words=(value,max=12,len=300)=>listOf(value,v=>str3(v,len),max);function focusOf(value){let o=obj(value),kicker=str3(o?.kicker,120),title=str3(o?.title,300);if(o===null||kicker===null||title===null)return null;let risk=obj(o.risk),odds=obj(o.odds),quote2=obj(o.quote),jump=obj(o.jump);return clean({kicker:kicker,title:title,sources:listOf(o.sources,r=>{let label=str3(obj(r)?.label,60);return label===null?null:clean({label:label,kind:kindOf(obj(r)?.kind)})},6),risk:str3(risk?.lead,300)===null?null:clean({lead:str3(risk?.lead,300),body:str3(risk?.body),kind:kindOf(risk?.kind)}),odds:str3(odds?.label,120)===null||str3(odds?.from,20)===null||str3(odds?.to,20)===null?null:clean({label:str3(odds?.label,120),tag:str3(odds?.tag,40),from:str3(odds?.from,20),to:str3(odds?.to,20),toLabel:str3(odds?.toLabel,120)}),quote:str3(quote2?.
|
|
111
|
+
return Object.freeze(Object.fromEntries(Object.entries(fields).filter(([,v])=>v!=null)))}function listOf(value,each,max=20){if(!Array.isArray(value))return null;let out=[];for(let row of value){if(out.length>=max)break;let mapped=each(row);mapped!==null&&out.push(mapped)}return out.length===0?null:/* @__PURE__ */Object.freeze(out)}var words=(value,max=12,len=300)=>listOf(value,v=>str3(v,len),max);function focusOf(value){let o=obj(value),kicker=str3(o?.kicker,120),title=str3(o?.title,300);if(o===null||kicker===null||title===null)return null;let risk=obj(o.risk),odds=obj(o.odds),quote2=obj(o.quote),jump=obj(o.jump);return clean({kicker:kicker,title:title,sources:listOf(o.sources,r=>{let label=str3(obj(r)?.label,60);return label===null?null:clean({label:label,kind:kindOf(obj(r)?.kind)})},6),risk:str3(risk?.lead,300)===null?null:clean({lead:str3(risk?.lead,300),body:str3(risk?.body),kind:kindOf(risk?.kind)}),odds:str3(odds?.label,120)===null||str3(odds?.from,20)===null||str3(odds?.to,20)===null?null:clean({label:str3(odds?.label,120),tag:str3(odds?.tag,40),from:str3(odds?.from,20),to:str3(odds?.to,20),toLabel:str3(odds?.toLabel,120)}),quote:str3(quote2?.text)===null?null:clean({kicker:str3(quote2?.kicker,120),tag:str3(quote2?.tag,40),text:str3(quote2?.text)}),jump:str3(jump?.title,300)===null||str3(jump?.go,60)===null?null:clean({title:str3(jump?.title,300),go:str3(jump?.go,60)})})}function routineOf(value){let o=obj(value),title=str3(o?.title,300),steps=listOf(o?.steps,r=>{let s=obj(r),t=str3(s?.title,300);return t===null?null:clean({title:t,body:str3(s?.body),source:str3(s?.source,200),fromVet:s?.fromVet===true?true:null})});return title===null||steps===null?null:clean({title:title,label:str3(o?.label,60),steps:steps})}function pickOf(value){let o=obj(value),title=str3(o?.title,300);if(o===null||title===null)return null;let rating=obj(o.rating),reviews=obj(o.reviews),why=obj(o.why),score=obj(why?.score),dose=obj(o.dose),ingredients=obj(o.ingredients),reviewItems=listOf(reviews?.items,r=>{let v=obj(r),stars=v?.stars,text2=str3(v?.text),by=str3(v?.by,80);return typeof stars!="number"||!Number.isFinite(stars)||stars<1||stars>5||text2===null||by===null?null:clean({stars:Math.round(stars),text:text2,by:by})},5),whyRows=listOf(why?.rows,r=>{let v=obj(r),chip=str3(v?.chip,40),t=str3(v?.title,300);return chip===null||t===null?null:clean({chip:chip,kind:kindOf(v?.kind),title:t,body:str3(v?.body)})}),stats=listOf(dose?.stats,r=>{let v=obj(r),val=str3(v?.value,40),label=str3(v?.label,120),kind=v?.kind;return val===null||label===null?null:clean({value:val,label:label,kind:kind==="weight"||kind==="dose"||kind==="days"?kind:null})},6),ingredientItems=words(ingredients?.items,12,80);return clean({title:title,none:o.none===true?true:null,productId:idOf2(o.productId),partnerSku:str3(o.partnerSku,200),rating:str3(rating?.value,20)===null?null:clean({value:str3(rating?.value,20),label:str3(rating?.label,120)}),line:str3(o.line),reviews:str3(reviews?.label,200)===null||reviewItems===null?null:clean({label:str3(reviews?.label,200),items:reviewItems}),checkoutLine:str3(o.checkoutLine,300),why:str3(why?.title,200)===null||whyRows===null?null:clean({title:str3(why?.title,200),rows:whyRows,score:str3(score?.text,200)===null||str3(score?.value,20)===null?null:clean({text:str3(score?.text,200),value:str3(score?.value,20)})}),dose:str3(dose?.title,200)===null||stats===null?null:clean({title:str3(dose?.title,200),stats:stats,note:str3(dose?.note)}),doseLabel:str3(o.doseLabel,120),ingredients:ingredientItems===null?null:clean({label:str3(ingredients?.label,200),items:ingredientItems}),proof:str3(o.proof,300),trust:listOf(o.trust,r=>{let v=obj(r),icon=iconOf(v?.icon),label=str3(v?.label,120);return icon===null||label===null?null:clean({icon:icon,label:label})},6),more:str3(o.more,120),fine:str3(o.fine),checkin:str3(o.checkin,200)})}function signsOf(value){let o=obj(value),title=str3(o?.title,200),items=listOf(o?.items,r=>{let v=obj(r),t=str3(v?.title,300),body=str3(v?.body);return t===null||body===null?null:clean({title:t,body:body,urgent:v?.urgent===true?true:null,callVet:v?.callVet===true?true:null})});return title===null||items===null?null:clean({title:title,items:items})}function checkupOf(value){let o=obj(value),title=str3(o?.title,200),questions=words(o?.questions,12,300),add=str3(o?.add,80),added=str3(o?.added,80);return title===null||questions===null||add===null||added===null?null:clean({title:title,questions:questions,add:add,added:added})}function extrasOf(value){let o=obj(value),title=str3(o?.title,200),items=listOf(o?.items,r=>{let v=obj(r),key=str3(v?.key,REF_MAX3),t=str3(v?.title,300),action=str3(v?.action,80),added=str3(v?.added,80);return key===null||t===null||action===null||added===null?null:clean({key:key,title:t,body:str3(v?.body),price:str3(v?.price,40),was:str3(v?.was,40),tag:str3(v?.tag,40),imageUrl:imageOf(v?.imageUrl),icon:iconOf(v?.icon),kind:kindOf(v?.kind),action:action,added:added,owned:v?.owned===true?true:null})},6);return title===null||items===null?null:clean({title:title,items:items})}function healthPlanFocusDesignFromWire(raw){let o=obj(raw),title=str3(o?.title,300),pick2=pickOf(o?.pick);if(o===null||title===null||pick2===null)return null;let byline=obj(o.byline);return clean({eyebrow:str3(o.eyebrow,120),title:title,subtitle:str3(o.subtitle,300),headImageUrl:imageOf(o.headImageUrl),byline:str3(byline?.name,120)===null?null:clean({name:str3(byline?.name,120),role:str3(byline?.role,120),imageUrl:imageOf(byline?.imageUrl),shortName:str3(byline?.shortName,60)}),focus:focusOf(o.focus),routine:routineOf(o.routine),pick:pick2,signs:signsOf(o.signs),checkup:checkupOf(o.checkup),extras:extrasOf(o.extras),fine:str3(o.fine),checkoutRows:listOf(o.checkoutRows,r=>{let v=obj(r),icon=iconOf(v?.icon),label=str3(v?.label,60),val=str3(v?.value,200);return icon===null||label===null||val===null?null:clean({icon:icon,label:label,value:val})},6)})}function healthPlanPageFromWire(raw,petRef){let o=obj(raw);if(o===null||!("page"in o))return null;let pet=obj(o.pet),sex=pet?.sex;/* @__PURE__ */
|
|
112
112
|
return Object.freeze({petRef:str3(o.pet_ref,REF_MAX3)??petRef,pet:/* @__PURE__ */Object.freeze({name:str3(pet?.name,120),species:str3(pet?.species,60),sex:sex==="female"||sex==="male"?sex:null,breed:str3(pet?.breed,120),weightKg:weightOf(pet?.weight_kg),weightLb:weightOf(pet?.weight_lb)}),checkout:o.checkout==="everfur_stripe"?"everfur_stripe":"partner",page:healthPlanFocusDesignFromWire(o.page),vetReviewed:o.vet_reviewed===true,trackingTextsEnabled:o.tracking_texts_enabled===true})}function healthPlanCheckoutSessionFromWire(raw){let o=obj(raw),checkoutId=idOf2(o?.checkout_id),url=str3(o?.url,4096);return checkoutId===null||url===null||!/^https:\/\/[^\s/][^\s]*$/i.test(url)?null:/* @__PURE__ */Object.freeze({checkoutId:checkoutId,url:url})}var STATUSES=/* @__PURE__ */new Set(["pending","paid","expired","failed"]);function healthPlanCheckoutStateFromWire(raw){let o=obj(raw),status=o?.status,purchase=o?.purchase;if(typeof status!="string"||!STATUSES.has(status)||purchase!=="one_box"&&purchase!=="subscription")return null;let order=healthPlanOneBoxOrderFromWire(o?.order),list=Array.isArray(o?.orders)?(o?.orders).map(healthPlanOneBoxOrderFromWire).filter(x=>x!==null):[];/* @__PURE__ */
|
|
113
|
-
return Object.freeze({status:status,purchase:purchase,order:order??list[0]??null,orders:/* @__PURE__ */Object.freeze(list.length>0?list:order===null?[]:[order]),subscription:healthPlanSubscriptionFromWire(o?.subscription)})}function invalid3(wireMessage){return makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage})}function malformed3(call){return makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:`${call}: the response was not the expected shape`})}function disposed3(verb){return makeEverfurError("runtimeDisposed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${verb} was called after unmount`})}var validRef3=value=>typeof value=="string"&&value.length>0&&value.length<=REF_MAX3,absoluteUrl=value=>typeof value=="string"&&value.length<=2048&&/^https?:\/\/[^\s/][^\s]*$/i.test(value);function base2(petRef){return`/widget/v1/pets/${encodeURIComponent(petRef)}/plan`}async function readPage(funnel,petRef,opts){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));let res=await funnel.send("healthPlan.page.read",{method:"GET",path:`${base2(petRef)}/page`,...opts?.signal?{signal:opts.signal}:{}});if(!res.ok)return err(res.error);let page=healthPlanPageFromWire(res.value,petRef);return page===null?err(malformed3("healthPlan.page.read")):ok(page)}var readers=/* @__PURE__ */new WeakMap;function createHealthPlanPageReader(runtime){let known=readers.get(runtime);if(known!==void 0)return known;let reader=makeHealthPlanPageReader(runtime);return readers.set(runtime,reader),reader}function makeHealthPlanPageReader(runtime){return{getPage:(petRef,opts)=>{if(runtime.isDisposed)return Promise.resolve(err(disposed3("getPage")));let{services:services}=runtime.registry,funnel=withPlainNotFound(createRequestFunnel({auth:services.authFor(null),...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}}));return readPage(funnel,petRef,opts)}}}function createHealthPlanPageRepositoryOver(deps){let funnel=withPlainNotFound(deps.funnel??createRequestFunnel({auth:deps.auth,...deps.errorPolicy?{errorPolicy:deps.errorPolicy}:{}}));return{getPage:(petRef,opts)=>readPage(funnel,petRef,opts),async startCheckout(petRef,body,idempotencyKey){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));if(!validRef3(body.productId))return err(invalid3("productId must be 1..128 characters"));if(body.purchase!=="one_box"&&body.purchase!=="subscription")return err(invalid3("purchase must be one_box or subscription"));if(body.intervalDays!==void 0&&(!Number.isInteger(body.intervalDays)||body.intervalDays<=0))return err(invalid3("intervalDays must be a positive whole number"));if(!absoluteUrl(body.successUrl)||!absoluteUrl(body.cancelUrl))return err(invalid3("successUrl and cancelUrl must be absolute http(s) URLs"));let res=await funnel.send("healthPlan.checkout.start",{method:"POST",path:`${base2(petRef)}/checkout`,body:{product_id:body.productId,purchase:body.purchase,...body.purchase==="subscription"&&body.intervalDays!==void 0?{interval_days:body.intervalDays}:{},success_url:body.successUrl,cancel_url:body.cancelUrl}},{idempotent:true,idempotencyKey:`hp-checkout:${idempotencyKey}`});if(!res.ok)return err(res.error);let session=healthPlanCheckoutSessionFromWire(res.value);return session===null?err(malformed3("healthPlan.checkout.start")):ok(session)},async startCartCheckout(petRef,body,idempotencyKey){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));let items=body.items;if(!Array.isArray(items)||items.length<1||items.length>CART_MAX)return err(invalid3("items must hold 1..10 lines"));let seen=/* @__PURE__ */new Set;for(let it of items){if(!validRef3(it.productId)||seen.has(it.productId))return err(invalid3("each item needs a productId, once per cart"));if(seen.add(it.productId),it.purchase!=="one_box"&&it.purchase!=="subscription")return err(invalid3("purchase must be one_box or subscription"));let q=it.quantity??1;if(!Number.isInteger(q)||q<1||q>CART_MAX)return err(invalid3("quantity must be a whole number 1..10"));if(it.purchase==="subscription"&&q!==1)return err(invalid3("a subscription line is quantity 1"));if(it.intervalDays!==void 0&&(!Number.isInteger(it.intervalDays)||it.intervalDays<=0))return err(invalid3("intervalDays must be a positive whole number"))}if(!absoluteUrl(body.successUrl)||!absoluteUrl(body.cancelUrl))return err(invalid3("successUrl and cancelUrl must be absolute http(s) URLs"));let res=await funnel.send("healthPlan.checkout.start",{method:"POST",path:`${base2(petRef)}/checkout`,body:{items:items.map(it=>({product_id:it.productId,purchase:it.purchase,...it.purchase==="subscription"&&it.intervalDays!==void 0?{interval_days:it.intervalDays}:{},quantity:it.quantity??1})),success_url:body.successUrl,cancel_url:body.cancelUrl}},{idempotent:true,idempotencyKey:`hp-checkout:${idempotencyKey}`});if(!res.ok)return err(res.error);let session=healthPlanCheckoutSessionFromWire(res.value);return session===null?err(malformed3("healthPlan.checkout.start")):ok(session)},async getCheckout(petRef,checkoutId){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));if(!validRef3(checkoutId))return err(invalid3("checkoutId must be 1..128 characters"));let res=await funnel.send("healthPlan.checkout.read",{method:"GET",path:`${base2(petRef)}/checkout/${encodeURIComponent(checkoutId)}`});if(!res.ok)return err(res.error);let state=healthPlanCheckoutStateFromWire(res.value);return state===null?err(malformed3("healthPlan.checkout.read")):ok(state)}}}function createHealthPlanPageRepository(runtime){let over=()=>{let{services:services}=runtime.registry;return createHealthPlanPageRepositoryOver({auth:services.authFor(null),...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}})};return{getPage:(petRef,opts)=>runtime.isDisposed?Promise.resolve(err(disposed3("getPage"))):over().getPage(petRef,opts),startCheckout:(petRef,body,key)=>runtime.isDisposed?Promise.resolve(err(disposed3("startCheckout"))):over().startCheckout(petRef,body,key),startCartCheckout:(petRef,body,key)=>runtime.isDisposed?Promise.resolve(err(disposed3("startCartCheckout"))):over().startCartCheckout?.(petRef,body,key)??Promise.resolve(err(disposed3("startCartCheckout"))),getCheckout:(petRef,id)=>runtime.isDisposed?Promise.resolve(err(disposed3("getCheckout"))):over().getCheckout(petRef,id)}}var HEALTH_PLAN_PAGE_SHARE_MS=5e3,sharedReads=/* @__PURE__ */new WeakMap;function readShared(reader,userRef,petRef,fresh){let reads=sharedReads.get(reader);reads===void 0&&(reads=/* @__PURE__ */new Map,sharedReads.set(reader,reads));let map=reads,key=`${userRef}\0${petRef}`,hit=map.get(key);if(!fresh&&hit!==void 0&&(hit.at===null||Date.now()-hit.at<HEALTH_PLAN_PAGE_SHARE_MS))return hit.promise;let entry={at:null,promise:reader.getPage(petRef).then(res=>(map.get(key)===entry&&(res.ok||isNotFoundError(res.error)?entry.at=Date.now():map.delete(key)),res))};return map.set(key,entry),entry.promise}function useHealthPlanPageRepository(){let{runtime:runtime}=useEverfurContext();return react.useMemo(()=>createHealthPlanPageRepository(runtime),[runtime])}function useHealthPlanPage(options){let{userRef:userRef,runtime:runtime}=useEverfurContext(),own=react.useMemo(()=>createHealthPlanPageReader(runtime),[runtime]),hostRepository=options.repository,repository=hostRepository??own,getPage=react.useCallback((pet,fresh)=>hostRepository!==void 0||userRef==null?repository.getPage(pet):readShared(own,userRef,pet,fresh),[hostRepository,repository,own,userRef]),{petRef:petRef}=options,enabled=options.enabled!==false&&userRef!=null&&petRef!==null,[state,setState]=react.useState({phase:"idle",petRef:null,page:null,error:null}),epoch=react.useRef(0),quiet=react.useRef(0),read=react.useCallback(async fresh=>{let mine=++epoch.current;if(!enabled||petRef===null){setState(prev=>prev.phase==="idle"&&prev.petRef===null?prev:{phase:"idle",petRef:null,page:null,error:null});return}setState(prev=>({phase:"loading",petRef:petRef,page:prev.petRef===petRef?prev.page:null,error:null}));let res=await getPage(petRef,fresh);mine===epoch.current&&(res.ok?setState({phase:"ready",petRef:petRef,page:res.value,error:null,readyAt:Date.now()}):isNotFoundError(res.error)?setState({phase:"ready",petRef:petRef,page:null,error:null,missing:true,readyAt:Date.now()}):setState({phase:"failed",petRef:petRef,page:null,error:res.error}))},[enabled,petRef,getPage]),load=react.useCallback(()=>read(true),[read]),ready=state.phase==="ready"&&state.petRef===petRef,revalidate=react.useCallback(async()=>{if(!enabled||petRef===null||!ready)return;let mine=epoch.current,seq=++quiet.current,res=await getPage(petRef,true);mine!==epoch.current||seq!==quiet.current||!res.ok||setState(prev=>prev.phase==="ready"&&prev.petRef===petRef?{phase:"ready",petRef:petRef,page:res.value,error:null,readyAt:Date.now()}:prev)},[enabled,petRef,ready,getPage]);useHealthPlanRevalidation({lifecycle:options.lifecycle,refreshKey:options.refreshKey,readyAt:ready?state.readyAt??null:null,revalidate:()=>{revalidate()},refresh:()=>{ready?revalidate():load()}}),react.useEffect(()=>(read(false),()=>{epoch.current+=1}),[read]);let stale=enabled&&state.petRef!==petRef;return react.useMemo(()=>({phase:stale?"loading":state.phase,page:stale?null:state.page,error:stale?null:state.error,missing:!stale&&state.missing===true,refresh:load}),[stale,state,load])}var noop=()=>{};function createBrowserLifecycle(){return{onForeground(listener){if(typeof document>"u"||typeof document.addEventListener!="function")return noop;let wasHidden=document.visibilityState==="hidden",onChange=()=>{let hidden=document.visibilityState==="hidden";wasHidden&&!hidden&&listener(),wasHidden=hidden};return document.addEventListener("visibilitychange",onChange),()=>document.removeEventListener("visibilitychange",onChange)},onOnline(listener){if(typeof window>"u"||typeof window.addEventListener!="function")return noop;let onOnline=()=>listener();return window.addEventListener("online",onOnline),()=>window.removeEventListener("online",onOnline)},isOffline(){return typeof navigator<"u"&&navigator.onLine===false}}}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})})}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_MAX4=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_MAX4,{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 str4=value=>typeof value=="string"?value:null,pick=(allowed,value)=>typeof value=="string"&&allowed.has(value)?value:null,bool=value=>typeof value=="boolean"?value:null;function itemsFromWire(raw,map){return Array.isArray(raw)?/* @__PURE__ */Object.freeze(raw.flatMap(row=>{if(typeof row!="object"||row===null||Array.isArray(row))return[];let item=map(row);return item===null?[]:[item]})):/* @__PURE__ */Object.freeze([])}function medicationFromWire(o){let name=str4(o.name);return name===null||name.length===0?null:/* @__PURE__ */Object.freeze({ref:str4(o.ref),name:name,dose:str4(o.dose),frequency:str4(o.frequency),startDate:str4(o.start_date),endDate:str4(o.end_date),notes:str4(o.notes)})}function petHealthFromWire(o){let version=o.profile_version;/* @__PURE__ */
|
|
113
|
+
return Object.freeze({status:status,purchase:purchase,order:order??list[0]??null,orders:/* @__PURE__ */Object.freeze(list.length>0?list:order===null?[]:[order]),subscription:healthPlanSubscriptionFromWire(o?.subscription)})}function invalid3(wireMessage){return makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage})}function malformed3(call){return makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:`${call}: the response was not the expected shape`})}function disposed3(verb){return makeEverfurError("runtimeDisposed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${verb} was called after unmount`})}var validRef3=value=>typeof value=="string"&&value.length>0&&value.length<=REF_MAX3,absoluteUrl=value=>typeof value=="string"&&value.length<=2048&&/^https?:\/\/[^\s/][^\s]*$/i.test(value);function base2(petRef){return`/widget/v1/pets/${encodeURIComponent(petRef)}/plan`}async function readPage(funnel,petRef,opts){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));let res=await funnel.send("healthPlan.page.read",{method:"GET",path:`${base2(petRef)}/page`,...opts?.signal?{signal:opts.signal}:{}});if(!res.ok)return err(res.error);let page=healthPlanPageFromWire(res.value,petRef);return page===null?err(malformed3("healthPlan.page.read")):ok(page)}var readers=/* @__PURE__ */new WeakMap;function createHealthPlanPageReader(runtime){let known=readers.get(runtime);if(known!==void 0)return known;let reader=makeHealthPlanPageReader(runtime);return readers.set(runtime,reader),reader}function makeHealthPlanPageReader(runtime){return{getPage:(petRef,opts)=>{if(runtime.isDisposed)return Promise.resolve(err(disposed3("getPage")));let{services:services}=runtime.registry,funnel=withPlainNotFound(createRequestFunnel({auth:services.authFor(null),...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}}));return readPage(funnel,petRef,opts)}}}function createHealthPlanPageRepositoryOver(deps){let funnel=withPlainNotFound(deps.funnel??createRequestFunnel({auth:deps.auth,...deps.errorPolicy?{errorPolicy:deps.errorPolicy}:{}}));return{getPage:(petRef,opts)=>readPage(funnel,petRef,opts),async startCheckout(petRef,body,idempotencyKey){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));if(!validRef3(body.productId))return err(invalid3("productId must be 1..128 characters"));if(body.purchase!=="one_box"&&body.purchase!=="subscription")return err(invalid3("purchase must be one_box or subscription"));if(body.intervalDays!==void 0&&(!Number.isInteger(body.intervalDays)||body.intervalDays<=0))return err(invalid3("intervalDays must be a positive whole number"));if(!absoluteUrl(body.successUrl)||!absoluteUrl(body.cancelUrl))return err(invalid3("successUrl and cancelUrl must be absolute http(s) URLs"));let res=await funnel.send("healthPlan.checkout.start",{method:"POST",path:`${base2(petRef)}/checkout`,body:{product_id:body.productId,purchase:body.purchase,...body.purchase==="subscription"&&body.intervalDays!==void 0?{interval_days:body.intervalDays}:{},success_url:body.successUrl,cancel_url:body.cancelUrl}},{idempotent:true,idempotencyKey:`hp-checkout:${idempotencyKey}`});if(!res.ok)return err(res.error);let session=healthPlanCheckoutSessionFromWire(res.value);return session===null?err(malformed3("healthPlan.checkout.start")):ok(session)},async startCartCheckout(petRef,body,idempotencyKey){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));let items=body.items;if(!Array.isArray(items)||items.length<1||items.length>CART_MAX)return err(invalid3("items must hold 1..10 lines"));let seen=/* @__PURE__ */new Set;for(let it of items){if(!validRef3(it.productId)||seen.has(it.productId))return err(invalid3("each item needs a productId, once per cart"));if(seen.add(it.productId),it.purchase!=="one_box"&&it.purchase!=="subscription")return err(invalid3("purchase must be one_box or subscription"));let q=it.quantity??1;if(!Number.isInteger(q)||q<1||q>CART_MAX)return err(invalid3("quantity must be a whole number 1..10"));if(it.purchase==="subscription"&&q!==1)return err(invalid3("a subscription line is quantity 1"));if(it.intervalDays!==void 0&&(!Number.isInteger(it.intervalDays)||it.intervalDays<=0))return err(invalid3("intervalDays must be a positive whole number"))}if(!absoluteUrl(body.successUrl)||!absoluteUrl(body.cancelUrl))return err(invalid3("successUrl and cancelUrl must be absolute http(s) URLs"));let res=await funnel.send("healthPlan.checkout.start",{method:"POST",path:`${base2(petRef)}/checkout`,body:{items:items.map(it=>({product_id:it.productId,purchase:it.purchase,...it.purchase==="subscription"&&it.intervalDays!==void 0?{interval_days:it.intervalDays}:{},quantity:it.quantity??1})),success_url:body.successUrl,cancel_url:body.cancelUrl}},{idempotent:true,idempotencyKey:`hp-checkout:${idempotencyKey}`});if(!res.ok)return err(res.error);let session=healthPlanCheckoutSessionFromWire(res.value);return session===null?err(malformed3("healthPlan.checkout.start")):ok(session)},async getCheckout(petRef,checkoutId){if(!validRef3(petRef))return err(invalid3("petRef must be 1..128 characters"));if(!validRef3(checkoutId))return err(invalid3("checkoutId must be 1..128 characters"));let res=await funnel.send("healthPlan.checkout.read",{method:"GET",path:`${base2(petRef)}/checkout/${encodeURIComponent(checkoutId)}`});if(!res.ok)return err(res.error);let state2=healthPlanCheckoutStateFromWire(res.value);return state2===null?err(malformed3("healthPlan.checkout.read")):ok(state2)}}}function createHealthPlanPageRepository(runtime){let over=()=>{let{services:services}=runtime.registry;return createHealthPlanPageRepositoryOver({auth:services.authFor(null),...services.errorPolicy?{errorPolicy:services.errorPolicy}:{}})};return{getPage:(petRef,opts)=>runtime.isDisposed?Promise.resolve(err(disposed3("getPage"))):over().getPage(petRef,opts),startCheckout:(petRef,body,key)=>runtime.isDisposed?Promise.resolve(err(disposed3("startCheckout"))):over().startCheckout(petRef,body,key),startCartCheckout:(petRef,body,key)=>runtime.isDisposed?Promise.resolve(err(disposed3("startCartCheckout"))):over().startCartCheckout?.(petRef,body,key)??Promise.resolve(err(disposed3("startCartCheckout"))),getCheckout:(petRef,id)=>runtime.isDisposed?Promise.resolve(err(disposed3("getCheckout"))):over().getCheckout(petRef,id)}}var HEALTH_PLAN_PAGE_SHARE_MS=5e3,sharedReads=/* @__PURE__ */new WeakMap;function readShared(reader,userRef,petRef,fresh2){let reads=sharedReads.get(reader);reads===void 0&&(reads=/* @__PURE__ */new Map,sharedReads.set(reader,reads));let map=reads,key=`${userRef}\0${petRef}`,hit=map.get(key);if(!fresh2&&hit!==void 0&&(hit.at===null||Date.now()-hit.at<HEALTH_PLAN_PAGE_SHARE_MS))return hit.promise;let entry={at:null,promise:reader.getPage(petRef).then(res=>(map.get(key)===entry&&(res.ok||isNotFoundError(res.error)?entry.at=Date.now():map.delete(key)),res))};return map.set(key,entry),entry.promise}function useHealthPlanPageRepository(){let{runtime:runtime}=useEverfurContext();return react.useMemo(()=>createHealthPlanPageRepository(runtime),[runtime])}function useHealthPlanPage(options){let{userRef:userRef,runtime:runtime}=useEverfurContext(),own=react.useMemo(()=>createHealthPlanPageReader(runtime),[runtime]),hostRepository=options.repository,repository=hostRepository??own,getPage=react.useCallback((pet,fresh2)=>hostRepository!==void 0||userRef==null?repository.getPage(pet):readShared(own,userRef,pet,fresh2),[hostRepository,repository,own,userRef]),{petRef:petRef}=options,enabled=options.enabled!==false&&userRef!=null&&petRef!==null,[state2,setState]=react.useState({phase:"idle",petRef:null,page:null,error:null}),epoch=react.useRef(0),quiet=react.useRef(0),read=react.useCallback(async fresh2=>{let mine=++epoch.current;if(!enabled||petRef===null){setState(prev=>prev.phase==="idle"&&prev.petRef===null?prev:{phase:"idle",petRef:null,page:null,error:null});return}setState(prev=>({phase:"loading",petRef:petRef,page:prev.petRef===petRef?prev.page:null,error:null}));let res=await getPage(petRef,fresh2);mine===epoch.current&&(res.ok?setState({phase:"ready",petRef:petRef,page:res.value,error:null,readyAt:Date.now()}):isNotFoundError(res.error)?setState({phase:"ready",petRef:petRef,page:null,error:null,missing:true,readyAt:Date.now()}):setState({phase:"failed",petRef:petRef,page:null,error:res.error}))},[enabled,petRef,getPage]),load=react.useCallback(()=>read(true),[read]),ready=state2.phase==="ready"&&state2.petRef===petRef,revalidate=react.useCallback(async()=>{if(!enabled||petRef===null||!ready)return;let mine=epoch.current,seq=++quiet.current,res=await getPage(petRef,true);mine!==epoch.current||seq!==quiet.current||!res.ok||setState(prev=>prev.phase==="ready"&&prev.petRef===petRef?{phase:"ready",petRef:petRef,page:res.value,error:null,readyAt:Date.now()}:prev)},[enabled,petRef,ready,getPage]);useHealthPlanRevalidation({lifecycle:options.lifecycle,refreshKey:options.refreshKey,readyAt:ready?state2.readyAt??null:null,revalidate:()=>{revalidate()},refresh:()=>{ready?revalidate():load()}}),react.useEffect(()=>(read(false),()=>{epoch.current+=1}),[read]);let stale=enabled&&state2.petRef!==petRef;return react.useMemo(()=>({phase:stale?"loading":state2.phase,page:stale?null:state2.page,error:stale?null:state2.error,missing:!stale&&state2.missing===true,refresh:load}),[stale,state2,load])}var noop=()=>{};function createBrowserLifecycle(){return{onForeground(listener){if(typeof document>"u"||typeof document.addEventListener!="function")return noop;let wasHidden=document.visibilityState==="hidden",onChange=()=>{let hidden=document.visibilityState==="hidden";wasHidden&&!hidden&&listener(),wasHidden=hidden};return document.addEventListener("visibilitychange",onChange),()=>document.removeEventListener("visibilitychange",onChange)},onOnline(listener){if(typeof window>"u"||typeof window.addEventListener!="function")return noop;let onOnline=()=>listener();return window.addEventListener("online",onOnline),()=>window.removeEventListener("online",onOnline)},isOffline(){return typeof navigator<"u"&&navigator.onLine===false}}}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,state2){return Object.is(props.resetKey,state2.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})})}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_MAX4=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_MAX4,{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 str4=value=>typeof value=="string"?value:null,pick=(allowed,value)=>typeof value=="string"&&allowed.has(value)?value:null,bool=value=>typeof value=="boolean"?value:null;function itemsFromWire(raw,map){return Array.isArray(raw)?/* @__PURE__ */Object.freeze(raw.flatMap(row=>{if(typeof row!="object"||row===null||Array.isArray(row))return[];let item=map(row);return item===null?[]:[item]})):/* @__PURE__ */Object.freeze([])}function medicationFromWire(o){let name=str4(o.name);return name===null||name.length===0?null:/* @__PURE__ */Object.freeze({ref:str4(o.ref),name:name,dose:str4(o.dose),frequency:str4(o.frequency),startDate:str4(o.start_date),endDate:str4(o.end_date),notes:str4(o.notes)})}function petHealthFromWire(o){let version=o.profile_version;/* @__PURE__ */
|
|
114
114
|
return Object.freeze({profileVersion:typeof version=="number"&&Number.isInteger(version)&&version>=0?version:0,sex:pick(SEXES,o.sex),spayedNeutered:bool(o.spayed_neutered),birthDate:str4(o.birth_date),birthDatePrecision:pick(PRECISIONS,o.birth_date_precision),activityLevel:pick(ACTIVITY,o.activity_level),indoorOutdoor:pick(INDOOR_OUTDOOR,o.indoor_outdoor),foodBrand:str4(o.food_brand),foodType:str4(o.food_type),microchipId:str4(o.microchip_id),allergies:itemsFromWire(o.allergies,row=>{let allergen=str4(row.allergen);return allergen===null||allergen.length===0?null:/* @__PURE__ */Object.freeze({ref:str4(row.ref),allergen:allergen,severity:pick(SEVERITIES,row.severity),notes:str4(row.notes)})}),medications:itemsFromWire(o.medications,medicationFromWire),supplements:itemsFromWire(o.supplements,medicationFromWire),conditions:itemsFromWire(o.conditions,row=>{let conditionName=str4(row.condition_name);return conditionName===null||conditionName.length===0?null:/* @__PURE__ */Object.freeze({ref:str4(row.ref),conditionName:conditionName,diagnosedDate:str4(row.diagnosed_date),notes:str4(row.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 invalid4(wireMessage){return makeEverfurError("validationFailed",{retryable:false,wireMessage:wireMessage})}function checkString(field,value,max){if(typeof value!="string")return invalid4(`${field} must be a string`);let length=serverLength(value);return length<=max?null:invalid4(`${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:invalid4(`${field} must be a finite number between 0 and ${max}`)}function validate(petRef,profile){if(typeof petRef!="string")return invalid4("pet_ref must be a string");if(petRef.trim().length===0)return invalid4("pet_ref must not be blank");if(hasLoneSurrogate(petRef))return invalid4("pet_ref contains an unpaired surrogate and cannot be encoded");if(profile!=null&&typeof profile!="object")return invalid4("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:invalid4(health.error)}:health}function patchToWire(patch){if(typeof patch!="object"||patch===null)return{error:invalid4("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:invalid4("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 str5=v=>typeof v=="string"?v:null,num=v=>typeof v=="number"&&Number.isFinite(v)?v:null;function fromWire2(raw,petRef){let o=typeof raw=="object"&&raw!==null?raw:{};/* @__PURE__ */
|
|
115
115
|
return Object.freeze({petRef:str5(o.pet_ref)??petRef,name:str5(o.name),species:str5(o.species),breed:str5(o.breed),ageYears:num(o.age_years),weightKg:num(o.weight_kg)})}function widgetPetFromWire(raw){if(typeof raw!="object"||raw===null)return null;let o=raw,petRef=str5(o.pet_ref);return petRef===null||petRef.length===0?null:/* @__PURE__ */Object.freeze({petId:str5(o.pet_id),petRef:petRef,name:str5(o.name),species:str5(o.species),breed:str5(o.breed),ageYears:num(o.age_years),weightKg:num(o.weight_kg),updatedAt:str5(o.updated_at)})}function widgetPetProfileFromWire(raw){let pet=widgetPetFromWire(raw);return pet===null?null:/* @__PURE__ */Object.freeze({...pet,...petHealthFromWire(raw)})}function petListFromWire(raw){let rows=Array.isArray(raw)?raw:typeof raw=="object"&&raw!==null&&Array.isArray(raw.pets)?raw.pets:[];/* @__PURE__ */
|
|
116
|
-
return Object.freeze(rows.flatMap(row=>{let pet=widgetPetFromWire(row);return pet===null?[]:[pet]}))}function createPetsRepository(auth){return createPetsRepositoryOver(createRequestFunnel({auth:auth}),createRequestFunnel({auth:auth,unaryTimeoutMs:ERASE_USER_DATA_TIMEOUT_MS}))}function createPetsRepositoryOver(funnel,eraseFunnel=funnel){let withSignal=(req,signal)=>signal?{...req,signal:signal}:req,petPath=petRef=>validate(petRef,void 0)??`/widget/v1/pets/${encodeURIComponent(petRef)}`;return{async list(opts){let res=await funnel.send("pets.list",withSignal({method:"GET",path:"/widget/v1/pets"},opts?.signal));return res.ok?ok(petListFromWire(res.value)):err(res.error)},async registerPet(petRef,profile,opts){let invalid5=validate(petRef,profile);if(invalid5!==null)return err(invalid5);let wire=toWire(profile);if("error"in wire)return err(wire.error);let base3={method:"POST",path:`/widget/v1/pets/${encodeURIComponent(petRef)}`,body:wire.body},res=await funnel.send("pets.registerPet",opts?.signal?{...base3,signal:opts.signal}:base3);return res.ok?ok(fromWire2(res.value,petRef)):err(res.error)},async updatePet(petRef,patch,opts){let path=petPath(petRef);if(typeof path!="string")return err(path);let wire=patchToWire(patch);if("error"in wire)return err(wire.error);let res=await funnel.send("pets.updatePet",withSignal({method:"PATCH",path:path,body:wire.body},opts?.signal));return res.ok?ok(fromWire2(res.value,petRef)):err(res.error)},async getPetProfile(petRef,opts){let path=petPath(petRef);if(typeof path!="string")return err(path);let res=await funnel.send("pets.getPetProfile",withSignal({method:"GET",path:`${path}/profile`},opts?.signal));if(!res.ok)return err(res.error);let profile=widgetPetProfileFromWire(res.value);return profile===null?err(makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:"the pet profile response carried no pet_ref"})):ok(profile)},async deletePet(petRef,opts){let path=petPath(petRef);if(typeof path!="string")return err(path);let res=await funnel.send("pets.deletePet",withSignal({method:"DELETE",path:path},opts?.signal));return res.ok?ok(void 0):err(res.error)},async eraseUserData(opts){let res=await eraseFunnel.send("pets.eraseUserData",withSignal({method:"DELETE",path:"/widget/v1/me"},opts?.signal),{maxAttempts:1});return res.ok?ok(void 0):err(res.error)}}}var listeners=/* @__PURE__ */new WeakMap;function subscribePetsChanged(runtime,listener){let set=listeners.get(runtime);return set===void 0&&(set=/* @__PURE__ */new Set,listeners.set(runtime,set)),set.add(listener),()=>{set?.delete(listener)}}function useEverfurPets(){let{runtime:runtime,userRef:userRef,activePet:activePetRef,scopeEpoch:scopeEpoch}=useEverfurContext(),repository=react.useMemo(()=>createPetsRepository(runtime.registry.services.authFor(userRef)),[runtime,userRef,scopeEpoch]),[state,setState]=react.useState({repository:repository,pets:[],loading:true,error:null}),current=state.repository===repository?state:{pets:[],loading:true,error:null},generation=react.useRef(0),load=react.useCallback(async()=>{let request=++generation.current;setState(previous=>({...previous,repository:repository,loading:true,error:null,pets:previous.repository===repository?previous.pets:[]}));let result=await repository.list();request===generation.current&&setState(result.ok?{repository:repository,pets:result.value,loading:false,error:null}:previous=>({repository:repository,pets:previous.repository===repository?previous.pets:[],loading:false,error:result.error}))},[repository]);react.useEffect(()=>(load(),()=>{generation.current+=1}),[load]),react.useEffect(()=>subscribePetsChanged(runtime,()=>{load()}),[runtime,load]);let activePet=react.useMemo(()=>activePetRef===null?null:current.pets.find(pet=>pet.petRef===activePetRef)??null,[activePetRef,current.pets]);return react.useMemo(()=>({pets:current.pets,activePet:activePet,loading:current.loading,error:current.error,refresh:load}),[current.pets,current.loading,current.error,activePet,load])}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"});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,base3=faceCss(theme,fallback);return headingFamily===null&&headingWeight===null?base3:headingFamily!==null?{fontFamily:cssFontFamily(headingFamily),fontWeight:headingWeight??theme.type.weight[FACE_WEIGHT[fallback]]}:theme.type.namedFaces[fallback]||headingWeight===null?base3:{fontFamily:base3.fontFamily,fontWeight:headingWeight}}var SURFACE_ROOT_RESET=/* @__PURE__ */Object.freeze({textAlign:"start"});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"]),texting:/* @__PURE__ */Object.freeze(["sms.identity.read","sms.identity.update"]),healthPlan:/* @__PURE__ */Object.freeze(["shop.plan.read","shop.plan.update"])});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__ */
|
|
116
|
+
return Object.freeze(rows.flatMap(row=>{let pet=widgetPetFromWire(row);return pet===null?[]:[pet]}))}function createPetsRepository(auth){return createPetsRepositoryOver(createRequestFunnel({auth:auth}),createRequestFunnel({auth:auth,unaryTimeoutMs:ERASE_USER_DATA_TIMEOUT_MS}))}function createPetsRepositoryOver(funnel,eraseFunnel=funnel){let withSignal=(req,signal)=>signal?{...req,signal:signal}:req,petPath=petRef=>validate(petRef,void 0)??`/widget/v1/pets/${encodeURIComponent(petRef)}`;return{async list(opts){let res=await funnel.send("pets.list",withSignal({method:"GET",path:"/widget/v1/pets"},opts?.signal));return res.ok?ok(petListFromWire(res.value)):err(res.error)},async registerPet(petRef,profile,opts){let invalid5=validate(petRef,profile);if(invalid5!==null)return err(invalid5);let wire=toWire(profile);if("error"in wire)return err(wire.error);let base3={method:"POST",path:`/widget/v1/pets/${encodeURIComponent(petRef)}`,body:wire.body},res=await funnel.send("pets.registerPet",opts?.signal?{...base3,signal:opts.signal}:base3);return res.ok?ok(fromWire2(res.value,petRef)):err(res.error)},async updatePet(petRef,patch,opts){let path=petPath(petRef);if(typeof path!="string")return err(path);let wire=patchToWire(patch);if("error"in wire)return err(wire.error);let res=await funnel.send("pets.updatePet",withSignal({method:"PATCH",path:path,body:wire.body},opts?.signal));return res.ok?ok(fromWire2(res.value,petRef)):err(res.error)},async getPetProfile(petRef,opts){let path=petPath(petRef);if(typeof path!="string")return err(path);let res=await funnel.send("pets.getPetProfile",withSignal({method:"GET",path:`${path}/profile`},opts?.signal));if(!res.ok)return err(res.error);let profile=widgetPetProfileFromWire(res.value);return profile===null?err(makeEverfurError("internalError",{retryable:false,httpStatus:502,wireMessage:"the pet profile response carried no pet_ref"})):ok(profile)},async deletePet(petRef,opts){let path=petPath(petRef);if(typeof path!="string")return err(path);let res=await funnel.send("pets.deletePet",withSignal({method:"DELETE",path:path},opts?.signal));return res.ok?ok(void 0):err(res.error)},async eraseUserData(opts){let res=await eraseFunnel.send("pets.eraseUserData",withSignal({method:"DELETE",path:"/widget/v1/me"},opts?.signal),{maxAttempts:1});return res.ok?ok(void 0):err(res.error)}}}var listeners=/* @__PURE__ */new WeakMap;function subscribePetsChanged(runtime,listener){let set=listeners.get(runtime);return set===void 0&&(set=/* @__PURE__ */new Set,listeners.set(runtime,set)),set.add(listener),()=>{set?.delete(listener)}}function useEverfurPets(){let{runtime:runtime,userRef:userRef,activePet:activePetRef,scopeEpoch:scopeEpoch}=useEverfurContext(),repository=react.useMemo(()=>createPetsRepository(runtime.registry.services.authFor(userRef)),[runtime,userRef,scopeEpoch]),[state2,setState]=react.useState({repository:repository,pets:[],loading:true,error:null}),current=state2.repository===repository?state2:{pets:[],loading:true,error:null},generation=react.useRef(0),load=react.useCallback(async()=>{let request=++generation.current;setState(previous=>({...previous,repository:repository,loading:true,error:null,pets:previous.repository===repository?previous.pets:[]}));let result=await repository.list();request===generation.current&&setState(result.ok?{repository:repository,pets:result.value,loading:false,error:null}:previous=>({repository:repository,pets:previous.repository===repository?previous.pets:[],loading:false,error:result.error}))},[repository]);react.useEffect(()=>(load(),()=>{generation.current+=1}),[load]),react.useEffect(()=>subscribePetsChanged(runtime,()=>{load()}),[runtime,load]);let activePet=react.useMemo(()=>activePetRef===null?null:current.pets.find(pet=>pet.petRef===activePetRef)??null,[activePetRef,current.pets]);return react.useMemo(()=>({pets:current.pets,activePet:activePet,loading:current.loading,error:current.error,refresh:load}),[current.pets,current.loading,current.error,activePet,load])}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"});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,base3=faceCss(theme,fallback);return headingFamily===null&&headingWeight===null?base3:headingFamily!==null?{fontFamily:cssFontFamily(headingFamily),fontWeight:headingWeight??theme.type.weight[FACE_WEIGHT[fallback]]}:theme.type.namedFaces[fallback]||headingWeight===null?base3:{fontFamily:base3.fontFamily,fontWeight:headingWeight}}var SURFACE_ROOT_RESET=/* @__PURE__ */Object.freeze({textAlign:"start"});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"]),texting:/* @__PURE__ */Object.freeze(["sms.identity.read","sms.identity.update"]),healthPlan:/* @__PURE__ */Object.freeze(["shop.plan.read","shop.plan.update"])});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__ */
|
|
117
117
|
return Object.freeze({reason:explicit.reason,level:explicit.level,recoverable:explicit.recoverable})}/* @__PURE__ */
|
|
118
118
|
return Object.freeze({reason:userFacingError("accessDenied"),level:"user_entitlement",recoverable:false})}function freezeDecision(d){let base3={name:d.name,enabled:d.enabled,isPending:d.isPending,limits:/* @__PURE__ */Object.freeze({...d.limits})};return d.disabled!==void 0&&(base3.disabled=d.disabled),/* @__PURE__ */Object.freeze(base3)}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 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(),styles2=react.useMemo(()=>makeStyles(theme),[theme]);/* @__PURE__ */
|
|
119
119
|
return jsxRuntime.jsx("div",{role:"status","aria-busy":"true","aria-label":`Loading ${capability}`,className:className,style:{...styles2.offstate,...style},children:/* @__PURE__ */jsxRuntime.jsx("div",{style:styles2.skeletonBar})})}function OffState({decision:decision,style:style,className:className}){let theme=useEverfurTheme(),styles2=react.useMemo(()=>makeStyles(theme),[theme]),message=decision.disabled?.reason??"";/* @__PURE__ */
|
|
120
120
|
return jsxRuntime.jsx("div",{className:className,style:{...styles2.offstate,...style},children:message.length>0?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.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 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}function slotCss(slot,borderWidth){return{...slotBoxCss(slot,borderWidth),...slotText(slot)}}function HealthPlanCartBar(props){let{cart:cart,onCheckout:onCheckout,busy:busy=false,priceFormat:priceFormat,style:style,className:className}=guardHostProps(props,["onCheckout"]),theme=useEverfurTheme(),styles2=react.useMemo(()=>makeStyles2(theme),[theme]),subtotal=formatHealthPlanPriceWith(cart.subtotal,cart.currency,priceFormat),telemetry=useHealthPlanTelemetry(),petRef=useHealthPlanBarPet(useHealthPlanCartDock()?.petRef);/* @__PURE__ */
|
|
121
121
|
return jsxRuntime.jsxs("div",{className:className,style:{...styles2.bar,...style},role:"region","aria-label":HEALTH_PLAN_TEMPLATES.cartLabel(theme.meta.displayName),children:[
|
|
122
122
|
/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.copy,children:[
|
|
123
|
-
/* @__PURE__ */jsxRuntime.jsxs("p",{style:styles2.label,children:[HEALTH_PLAN_TEMPLATES.cartLabel(theme.meta.displayName),cart.count>0?/* @__PURE__ */jsxRuntime.jsx("span",{style:styles2.count,"aria-hidden":"true",children:cart.count}):null]}),cart.count===0?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.line,children:HEALTH_PLAN_COPY.cartEmpty}):subtotal===null?null:/* @__PURE__ */jsxRuntime.jsxs("p",{style:styles2.line,children:[HEALTH_PLAN_COPY.subtotal," ",subtotal]})]}),onCheckout===void 0?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",disabled:cart.count===0||busy,"aria-busy":busy?"true":void 0,onClick:()=>{trackCheckoutStarted(telemetry,petRef,cart),onCheckout(cart.items)},style:styles2.checkout,children:HEALTH_PLAN_COPY.checkout})]})}function makeStyles2(theme){let{color:color,radius:radius,space:space,type:type,slots:slots}=theme,ink=slots.cartBar?.textColor??color.text.onBrand,fill2=slots.cartBar?.backgroundColor??color.brandInk,line=size=>`${Math.round(size*type.lineHeight.snug)}px`;return{bar:{boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"space-between",gap:space.md,padding:`${space.md}px ${space.lg}px`,borderRadius:radius.lg,backgroundColor:color.brand,color:color.text.onBrand,...slotCss(slots.cartBar)},copy:{display:"flex",flexDirection:"column",gap:2,minWidth:0},label:{margin:0,display:"flex",alignItems:"center",gap:space.sm,...faceCss(theme,"bold"),fontSize:type.size.body,lineHeight:line(type.size.body),color:ink},count:{minWidth:22,height:22,padding:`0 ${space.xs}px`,boxSizing:"border-box",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:radius.pill,backgroundColor:ink,color:fill2,...faceCss(theme,"bold"),fontSize:type.size.caption},line:{margin:0,...faceCss(theme,"regular"),fontSize:type.size.caption,lineHeight:line(type.size.caption),color:ink},checkout:{minHeight:44,padding:`0 ${space.lg}px`,borderRadius:radius.pill,border:"none",backgroundColor:ink,color:fill2,cursor:"pointer",...faceCss(theme,"bold"),fontSize:type.size.body}}}function useHealthPlanSubscriptionRepository(){let{runtime:runtime}=useEverfurContext();return react.useMemo(()=>createHealthPlanSubscriptionRepository(runtime),[runtime])}function useHealthPlanSubscription(options){let{userRef:userRef}=useEverfurContext(),own=useHealthPlanSubscriptionRepository(),repository=options.repository??own,enabled=options.enabled!==false&&userRef!==null&&options.petRef!==null&&options.productId!==null,{petRef:petRef,productId:productId}=options,[phase,setPhase]=react.useState("idle"),[quote2,setQuote]=react.useState(null),[subscription,setSubscription]=react.useState(null),[busy,setBusy]=react.useState(false),[error,setError]=react.useState(null),[readyAt,setReadyAt]=react.useState(null),epoch=react.useRef(0),writes=react.useRef(0),quiet=react.useRef(0),busyRef=react.useRef(false),refreshAfterWrite=react.useRef(false),revalidateRef=react.useRef(()=>Promise.resolve()),load=react.useCallback(async()=>{let mine=++epoch.current;if(refreshAfterWrite.current=false,setReadyAt(null),!enabled||petRef===null||productId===null){setPhase("idle"),setQuote(null),setSubscription(null);return}setPhase("loading");let res=await repository.quote(petRef,productId);if(mine===epoch.current){if(!res.ok){setQuote(null),setSubscription(null),setError(res.error),setPhase(isHealthPlanSubscriptionUnavailable(res.error)?"unavailable":"failed");return}setError(null),setQuote(res.value),setSubscription(res.value.subscription),setPhase("ready"),setReadyAt(Date.now())}},[enabled,petRef,productId,repository]),ready=enabled&&phase==="ready",revalidate=react.useCallback(async()=>{if(!ready||busyRef.current||petRef===null||productId===null)return;let mine=epoch.current,wrote=writes.current,seq=++quiet.current,res=await repository.quote(petRef,productId);mine!==epoch.current||wrote!==writes.current||seq!==quiet.current||busyRef.current||!res.ok||(setQuote(res.value),setSubscription(res.value.subscription),setReadyAt(Date.now()))},[ready,petRef,productId,repository]);revalidateRef.current=revalidate;let refreshOnKey=()=>{if(!ready){load();return}if(busyRef.current){refreshAfterWrite.current=true;return}revalidate()};useHealthPlanRevalidation({lifecycle:options.lifecycle,refreshKey:options.refreshKey,readyAt:ready?readyAt:null,revalidate:()=>{revalidate()},refresh:refreshOnKey});let settleWrite=react.useCallback(()=>{refreshAfterWrite.current&&(refreshAfterWrite.current=false,revalidateRef.current())},[]);react.useEffect(()=>(load(),()=>{epoch.current+=1}),[load]);let write=react.useCallback(async run=>{let mine=epoch.current;writes.current+=1,busyRef.current=true,setBusy(true);let res=await run();return busyRef.current=false,mine!==epoch.current?res:(setBusy(false),res.ok?(setError(null),setSubscription(res.value),settleWrite(),res):(setError(res.error),isHealthPlanSubscriptionUnavailable(res.error)?setPhase("unavailable"):settleWrite(),res))},[settleWrite]),buy=react.useCallback(async tapKey=>{let mine=epoch.current;writes.current+=1,busyRef.current=true,setBusy(true);let res=await repository.buyOneBox(petRef,productId,tapKey);return busyRef.current=false,mine!==epoch.current?res:(setBusy(false),res.ok?(setError(null),load(),res):(setError(res.error),isHealthPlanSubscriptionUnavailable(res.error)?setPhase("unavailable"):settleWrite(),res))},[repository,petRef,productId,load,settleWrite]);return react.useMemo(()=>{let p=petRef,sid=subscription?.subscriptionId??"",none=()=>Promise.resolve(err(makeEverfurError("validationFailed",{retryable:false,wireMessage:"the subscription quote is not ready"})));return{phase:phase,quote:quote2,subscription:subscription,busy:busy,error:error,subscribe:n=>ready&&productId!==null?write(()=>repository.create(p,productId,n)):none(),changeInterval:n=>ready&&sid!==""?write(()=>repository.changeInterval(p,sid,n)):none(),skip:()=>ready&&sid!==""?write(()=>repository.skip(p,sid)):none(),cancel:()=>ready&&sid!==""?write(()=>repository.cancel(p,sid)):none(),restart:n=>ready&&sid!==""?write(()=>repository.restart(p,sid,n)):none(),buyOneBox:k=>ready&&productId!==null?buy(k):none(),refresh:load}},[phase,quote2,subscription,busy,error,ready,petRef,productId,repository,write,buy,load])}function toRgba(value){if(typeof value=="number")return argbIntToRgba(value);if(typeof value!="string")return null;let s=value.trim();if(s.length===0)return null;if(s.startsWith("#"))return fromHex(s.slice(1));if(s.toLowerCase().startsWith("0x"))return fromHex(s.slice(2));if(s.toLowerCase().startsWith("rgb"))return fromRgbFunc(s);if(/^[0-9a-fA-F]+$/.test(s)){let hex=fromHex(s);if(hex!==null)return hex}return/^\d+$/.test(s)?argbIntToRgba(Number.parseInt(s,10)):null}function fromHex(hex){let h=hex.trim();if(!/^[0-9a-fA-F]+$/.test(h))return null;if(h.length===3)return{r:dup(h[0]),g:dup(h[1]),b:dup(h[2]),a:1};if(h.length===6)return{r:byte(h,0),g:byte(h,2),b:byte(h,4),a:1};if(h.length===8){let a=byte(h,0);return{r:byte(h,2),g:byte(h,4),b:byte(h,6),a:a/255}}return null}function fromRgbFunc(input){let open=input.indexOf("("),close=input.indexOf(")");if(open<0||close<0||close<open)return null;let parts=input.slice(open+1,close).split(",").map(p=>p.trim());if(parts.length<3)return null;let r=clampByte(Number(parts[0])),g=clampByte(Number(parts[1])),b=clampByte(Number(parts[2]));if(r===null||g===null||b===null)return null;let a=1;if(parts.length>=4){let alpha=Number(parts[3]);if(!Number.isFinite(alpha))return null;a=Math.min(1,Math.max(0,alpha))}return{r:r,g:g,b:b,a:a}}function argbIntToRgba(n){if(!Number.isFinite(n))return null;let int2=Math.trunc(n)>>>0,a=int2>>>24&255;return{r:int2>>>16&255,g:int2>>>8&255,b:int2&255,a:a===0?1:a/255}}function byte(hex,at){return Number.parseInt(hex.slice(at,at+2),16)}function dup(nibble){return Number.parseInt(`${nibble??"0"}${nibble??"0"}`,16)}function clampByte(n){return Number.isFinite(n)?Math.min(255,Math.max(0,Math.round(n))):null}function rgbToHex(r,g,b){return`#${hex2(r)}${hex2(g)}${hex2(b)}`.toUpperCase()}function hex2(n){return n.toString(16).padStart(2,"0")}var NEAR_BLACK="#111111",WHITE="#FFFFFF",BLACK="#000000";function readableOn(background){let rgba=toRgba(background);if(rgba===null)return WHITE;let bg=relativeLuminance(rgba),black=relativeLuminance({r:17,g:17,b:17}),white=relativeLuminance({r:255,g:255,b:255});return luminanceContrast(bg,white)>=luminanceContrast(bg,black)?WHITE:NEAR_BLACK}function legibleOn(background,target){let first=readableOn(background);return contrastRatio(first,background)>=target?first:contrastRatio(WHITE,background)>=contrastRatio(BLACK,background)?WHITE:BLACK}function poleForGrounds(grounds){let worst=ink=>grounds.reduce((low,ground)=>Math.min(low,contrastRatio(ink,ground)),Number.POSITIVE_INFINITY);return worst(WHITE)>=worst(BLACK)?WHITE:BLACK}function relativeLuminance(rgba){let r=linearize(rgba.r/255),g=linearize(rgba.g/255),b=linearize(rgba.b/255);return.2126*r+.7152*g+.0722*b}function linearize(channel){return channel<=.03928?channel/12.92:Math.pow((channel+.055)/1.055,2.4)}function luminanceContrast(l1,l2){let lighter=Math.max(l1,l2),darker=Math.min(l1,l2);return(lighter+.05)/(darker+.05)}function contrastRatio(a,b){let fg=toRgba(a),bg=toRgba(b);if(fg===null||bg===null)return 1;let ground=bg.a>=1?bg:{...bg},fore=fg.a>=1?fg:composite(fg,ground);return luminanceContrast(relativeLuminance(fore),relativeLuminance(ground))}function composite(fg,bg){let a=fg.a,mix=(f,g)=>Math.round(f*a+g*(1-a));return{r:mix(fg.r,bg.r),g:mix(fg.g,bg.g),b:mix(fg.b,bg.b),a:1}}function flattenOnto(color,background){let fg=toRgba(color),bg=toRgba(background);if(fg===null||bg===null)return null;let out=fg.a>=1?fg:composite(fg,{...bg});return rgbToHex(out.r,out.g,out.b)}function withAlpha(color,alpha){let rgba=toRgba(color);if(rgba===null)return null;let a=Math.min(1,Math.max(0,alpha));return`rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${a})`}var PUSH_STEP=.05;function pushToContrast(color,grounds,pole,target){let first=grounds[0];if(first===void 0)return pole;let reads=candidate=>grounds.every(ground=>contrastRatio(candidate,ground)>=target);if(toRgba(color)===null)return pole;if(reads(color))return color;let flat=flattenOnto(color,first),from=flat===null?null:toRgba(flat),to=toRgba(pole);if(from===null||to===null)return pole;for(let step=1;step<1/PUSH_STEP;step+=1){let t=step*PUSH_STEP,mix=(a,b)=>Math.round(a+(b-a)*t),candidate=rgbToHex(mix(from.r,to.r),mix(from.g,to.g),mix(from.b,to.b));if(reads(candidate))return candidate}return pole}var RAPH_V3_LIGHT=/* @__PURE__ */Object.freeze({ink:"#262523",ink2:"#4A4845",ink3:"#6B6863",paper:"#F8F7F4",card:"#FFFFFF",line:"#E7E6E2",tile:"#F2F1EE",shadow:"rgba(38, 37, 35, .07)",riskBg:"#FFE3E1",riskInk:"#B0231B",riskDot:"#E5372B",clearBg:"#E6F4D3",clearInk:"#2F6A12",clearDot:"#5FA82B",watchDot:"#E5A000"}),cache=/* @__PURE__ */new WeakMap;function v3Palette(theme){let hit=cache.get(theme);if(hit!==void 0)return hit;let c=theme.color,dark=theme.brightness==="dark",neutrals=dark?{dark:dark,ink:c.text.primary,ink2:c.text.secondary,ink3:c.text.muted,paper:c.background,card:c.surface,line:c.borderRingCream,tile:c.surfaceSubtle,shadow:c.shadow,riskBg:c.badgeBgCritical,riskInk:c.danger,riskDot:c.danger,clearBg:c.badgeBgPositive,clearInk:c.success,clearDot:c.success,watchDot:c.warningStrong}:{dark:dark,...RAPH_V3_LIGHT},textOn=(ink,grounds)=>pushToContrast(ink,grounds,poleForGrounds(grounds),V3_TEXT_CONTRAST),labelOn=(ink,fill2)=>contrastRatio(ink,fill2)>=V3_TEXT_CONTRAST?ink:legibleOn(fill2,V3_TEXT_CONTRAST),badgeGrounds=[neutrals.card,neutrals.paper].map(under=>flattenOnto(c.brandSoft,under)??under),brand={primary:c.primary,onPrimary:labelOn(c.onPrimary,c.primary),accent:c.accent,onAccent:labelOn(c.onAccent,c.accent),link:textOn(c.linkInk,[neutrals.card,neutrals.paper,neutrals.tile]),badge:c.brandSoft,onBadge:textOn(c.brandInk,badgeGrounds)},palette=/* @__PURE__ */Object.freeze({...neutrals,...brand});return cache.set(theme,palette),palette}var V3_TEXT_CONTRAST=4.5;var PLAN_CLASS_PREFIX="efp-",PLAN_CONTEXT=[["font-family","$sans"],["color","$ink"],["font-size","17px"],["line-height","1.5"]],PLAN_RULES=[["h1",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],["h2",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],["h3",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],["h4",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],[".efp-ph-sheet > h3.efp-serif",[0,2,1],[["font-size","24px"]]],["*",[0,0,0],[["box-sizing","border-box"]]],["* > .efp-before",[0,1,0],[["box-sizing","border-box"]]],["[hidden]",[0,1,0],[["display","none",1]]],["h1",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["h2",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["h3",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["h4",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["p",[0,0,1],[["margin","0"]]],["ul",[0,0,1],[["margin","0"]]],["ol",[0,0,1],[["margin","0"]]],["button",[0,0,1],[["font","inherit"],["color","inherit"]]],["input",[0,0,1],[["font","inherit"],["color","inherit"]]],["textarea",[0,0,1],[["font","inherit"],["color","inherit"]]],["button",[0,0,1],[["background","none"],["border","0"],["padding","0"],["cursor","pointer"],["text-align","inherit"],["-webkit-tap-highlight-color","transparent"],["touch-action","manipulation"]]],["img",[0,0,1],[["display","block"]]],["svg",[0,0,1],[["display","block"]]],["a",[0,0,1],[["color","inherit"]]],[".efp-sr-only",[0,1,0],[["position","absolute"],["width","1px"],["height","1px"],["overflow","hidden"],["clip","rect(0 0 0 0)"],["white-space","nowrap"]]],[".efp-serif",[0,1,0],[["font-family","$serif"],["font-weight","800"],["font-variation-settings",'"SOFT" 0, "WONK" 0'],["letter-spacing","-0.01em"],["text-wrap","balance"]]],[".efp-emb-btn",[0,1,0],[["display","inline-flex"],["align-items","center"],["justify-content","center"],["gap","8px"],["min-height","48px"],["padding","0 22px"],["border-radius","999px"],["background","$primary"],["color","$onPrimary"],["font-weight","700"],["font-size","16px"],["text-decoration","none"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1), opacity 160ms ease"]]],[".efp-emb-btn svg",[0,1,1],[["width","20px"],["height","20px"]]],[".efp-emb-btn--block",[0,1,0],[["width","100%"]]],[".efp-emb-btn--ghost",[0,1,0],[["background","transparent"],["color","$ink"],["box-shadow","inset 0 0 0 1.5px $ink"]]],[".efp-emb-btn--sm",[0,1,0],[["min-height","40px"],["padding","0 16px"],["font-size","15px"]]],[".efp-emb-btn--lg",[0,1,0],[["min-height","56px"],["padding","0 28px"],["font-size","17px"]]],[".efp-emb-btn[disabled]",[0,2,0],[["opacity",".32"],["pointer-events","none"]]],[".efp-dot",[0,1,0],[["display","inline-block"],["width","9px"],["height","9px"],["border-radius","50%"],["flex","none"]]],[".efp-dot--risk",[0,1,0],[["background","$riskDot"]]],[".efp-ph-scroll",[0,1,0],[["flex","1"],["min-height","0"],["overflow-y","auto"],["overscroll-behavior","contain"],["scrollbar-width","none"]]],[".efp-emb-tile",[0,1,0],[["width","46px"],["height","46px"],["border-radius","13px"],["background","$tile"],["display","grid"],["place-items","center"],["flex","none"],["font-size","22px"]]],[".efp-emb-tile svg",[0,1,1],[["width","23px"],["height","23px"]]],[".efp-emb-tile--cyan",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-ph-push",[0,1,0],[["position","absolute"],["inset","0"],["display","flex"],["flex-direction","column"],["background","$paper"],["pointer-events","auto"],["transform","translateX(100%)"],["visibility","hidden"],["transition","transform 220ms cubic-bezier(0.23, 1, 0.32, 1), visibility 0s linear 220ms"]]],[".efp-ph-push.efp-is-on",[0,2,0],[["transform","none"],["visibility","visible"],["transition","transform 300ms cubic-bezier(0.32, 0.72, 0, 1), visibility 0s"]]],[".efp-bk__radio",[0,1,0],[["width","22px"],["height","22px"],["border-radius","50%"],["box-shadow","inset 0 0 0 2px $n_BDB9B2"],["display","grid"],["place-items","center"]]],[".efp-bk__foot",[0,1,0],[["flex","none"],["padding","12px 18px 34px"],["background","$paper"],["box-shadow","0 -1px 0 $line"]]],[".efp-bk__done",[0,1,0],[["padding","40px 22px 20px"],["text-align","center"]]],[".efp-bk__check",[0,1,0],[["width","76px"],["height","76px"],["border-radius","50%"],["background","$accent"],["display","grid"],["place-items","center"],["margin","0 auto"]]],[".efp-bk__check svg",[0,1,1],[["width","38px"],["height","38px"]]],[".efp-bk__done .efp-bk__title",[0,2,0],[["margin-top","20px"],["font-size","34px"]]],[".efp-bk__when",[0,1,0],[["font-size","16px"],["margin-top","10px"],["font-weight","700"]]],[".efp-bk__who",[0,1,0],[["font-size","15px"],["color","$ink2"],["margin-top","2px"]]],[".efp-ph-scrim",[0,1,0],[["position","absolute"],["inset","0"],["z-index","40"],["background","$scrim"],["opacity","0"],["visibility","hidden"],["transition","opacity 200ms ease, visibility 0s linear 200ms"]]],[".efp-ph-scrim.efp-is-on",[0,2,0],[["opacity","1"],["visibility","visible"],["transition","opacity 240ms ease, visibility 0s"]]],[".efp-ph-sheet",[0,1,0],[["overscroll-behavior","contain"],["position","absolute"],["left","0"],["right","0"],["bottom","0"],["z-index","41"],["max-height","80%"],["overflow-y","auto"],["scrollbar-width","none"],["background","$card"],["border-radius","28px 28px 0 0"],["padding","10px 20px 40px"],["transform","translateY(100%)"],["visibility","hidden"],["transition","transform 220ms cubic-bezier(0.23, 1, 0.32, 1), visibility 0s linear 220ms"]]],[".efp-ph-sheet.efp-is-on",[0,2,0],[["transform","none"],["visibility","visible"],["transition","transform 320ms cubic-bezier(0.32, 0.72, 0, 1), visibility 0s"]]],[".efp-sheet__grab",[0,1,0],[["width","40px"],["height","5px"],["border-radius","3px"],["background","$n_DAD7D1"],["margin","0 auto 10px"]]],[".efp-sheet__top",[0,1,0],[["display","flex"],["align-items","center"],["justify-content","space-between"]]],[".efp-sheet__kicker",[0,1,0],[["font-family","$mono"],["font-size","11px"],["letter-spacing",".08em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-sheet__x",[0,1,0],[["width","40px"],["height","40px"],["margin-right","-8px"],["display","grid"],["place-items","center"],["border-radius","50%"]]],[".efp-sheet__x svg",[0,1,1],[["width","22px"],["height","22px"]]],[".efp-ph-sheet .efp-sheet__body",[0,2,0],[["display","grid"],["gap","10px"],["margin-top","12px"],["font-size","16px"],["line-height","1.5"],["color","$black"]]],[".efp-ph-toast",[0,1,0],[["position","absolute"],["left","16px"],["right","16px"],["top","112px"],["z-index","50"],["background","$ink"],["color","$onInk"],["border-radius","16px"],["padding","12px 15px"],["font-size","14.5px"],["line-height","1.4"],["opacity","0"],["transform","translateY(-8px)"],["pointer-events","none"],["transition","opacity 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-ph-toast.efp-is-on",[0,2,0],[["opacity","1"],["transform","none"],["transition-duration","220ms"]]],[".efp-plan__fine",[0,1,0],[["font-size","12.5px"],["color","$ink3"],["text-align","center"],["margin-top","16px"],["line-height","1.45"]]],[".efp-cp-tag",[0,1,0],[["font-family","$mono"],["font-size","10px"],["letter-spacing",".06em"],["text-transform","uppercase"],["background","$ink"],["color","$onInk"],["padding","2px 6px"],["border-radius","5px"]]],[".efp-cp-tag--s",[0,1,0],[["background","$card"],["color","$ink"]]],[".efp-hp",[0,1,0],[["padding","16px 16px 28px"]]],[".efp-hp-head",[0,1,0],[["display","grid"],["grid-template-columns","minmax(0, 1fr) 56px"],["gap","12px"],["align-items","center"],["padding","2px 2px 0"]]],[".efp-hp-head h2",[0,1,1],[["font-size","29px"],["line-height","1.06"]]],[".efp-hp-head p",[0,1,1],[["font-size","15px"],["color","$ink2"],["margin-top","6px"]]],[".efp-hp-head img",[0,1,1],[["width","56px"],["height","56px"],["border-radius","50%"],["object-fit","cover"],["background","$tile"],["box-shadow","0 0 0 3px $paper, 0 0 0 5.5px $accent"]]],[".efp-hp-need",[0,1,0],[["margin-top","14px"],["padding","16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"],["scroll-margin-top","12px"]]],[".efp-hp-need__k",[0,1,0],[["display","flex"],["align-items","center"],["gap","8px"],["font-size","15px"],["font-weight","800"]]],[".efp-hp-n",[0,1,0],[["flex","none"],["width","24px"],["height","24px"],["border-radius","50%"],["background","$primary"],["color","$onPrimary"],["display","grid"],["place-items","center"],["font-size","12.5px"],["font-weight","800"]]],[".efp-hp-srcs",[0,1,0],[["margin-left","auto"],["display","flex"],["gap","4px"]]],[".efp-hp-src",[0,1,0],[["height","24px"],["padding","0 9px"],["border-radius","999px"],["background","$tile"],["color","$ink2"],["font-size","12px"],["font-weight","700"],["display","inline-flex"],["align-items","center"],["white-space","nowrap"]]],[".efp-hp-src--dna",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-hp-need h3",[0,1,1],[["font-size","19px"],["font-weight","800"],["line-height","1.22"],["margin-top","12px"]]],[".efp-hp-need__s",[0,1,0],[["display","grid"],["grid-template-columns","9px minmax(0, 1fr)"],["gap","9px"],["align-items","baseline"],["margin-top","6px"],["font-size","15px"],["line-height","1.45"],["color","$ink2"]]],[".efp-hp-need__s b",[0,1,1],[["color","$ink"],["font-weight","800"]]],[".efp-hp-need__s .efp-dot",[0,2,0],[["transform","translateY(-1px)"]]],[".efp-hp-odds",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["margin-top","12px"],["padding","10px 14px"],["border-radius","14px"],["background","$accent4"]]],[".efp-hp-odds__k",[0,1,0],[["font-size","13.5px"],["font-weight","600"],["line-height","1.35"],["color","$ink2"],["max-width","10em"]]],[".efp-hp-odds__k .efp-cp-tag",[0,2,0],[["display","inline-block"],["margin-top","3px"]]],[".efp-hp-odds__n",[0,1,0],[["display","grid"],["grid-template-columns","auto auto auto"],["align-items","center"],["justify-items","end"],["gap","0 6px"]]],[".efp-hp-odds__n s",[0,1,1],[["font-size","17px"],["font-weight","700"],["color","$ink3"]]],[".efp-hp-odds__n svg",[0,1,1],[["width","16px"],["height","16px"],["color","$ink3"]]],[".efp-hp-odds__n b",[0,1,1],[["font-family","$serif"],["font-size","28px"],["font-weight","800"],["line-height","1"]]],[".efp-hp-odds__n span",[0,1,1],[["grid-column","1 / -1"],["font-size","12.5px"],["font-weight","700"],["color","$link"],["margin-top","3px"]]],[".efp-hp-pick",[0,1,0],[["margin-top","12px"],["padding","12px"],["border-radius","16px"],["background","$paper"]]],[".efp-hp-pick__top",[0,1,0],[["display","grid"],["grid-template-columns","64px minmax(0, 1fr)"],["gap","12px"],["align-items","center"]]],[".efp-hp-pick__img",[0,1,0],[["width","64px"],["height","64px"],["border-radius","14px"],["background","$card"],["overflow","hidden"]]],[".efp-hp-pick__img img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-hp-pick h4",[0,1,1],[["font-size","17px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-stars",[0,1,0],[["display","flex"],["align-items","center"],["gap","4px"],["margin-top","2px"],["font-size","13.5px"],["font-weight","800"]]],[".efp-hp-stars svg",[0,1,1],[["width","14px"],["height","14px"],["color","$watchDot"]]],[".efp-hp-stars span",[0,1,1],[["font-weight","500"],["color","$ink3"]]],[".efp-hp-pick__line",[0,1,0],[["margin-top","3px"],["font-size","14px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-buy",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["margin-top","12px"]]],[".efp-hp-price",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["align-items","baseline"],["gap","0 8px"],["min-width","0"]]],[".efp-hp-price b",[0,1,1],[["font-size","24px"],["font-weight","800"],["line-height","1.1"],["font-variant-numeric","tabular-nums"]]],[".efp-hp-price s",[0,1,1],[["font-size","15px"],["font-weight","700"],["color","$riskInk"],["text-decoration-thickness","2px"]]],[".efp-hp-price small",[0,1,1],[["flex-basis","100%"],["margin-top","3px"],["font-size","12.5px"],["line-height","1.35"],["color","$ink3"]]],[".efp-hp-buy .efp-emb-btn",[0,2,0],[["flex","none"],["min-height","46px"],["padding","0 20px"]]],[".efp-hp-more",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["gap","0 18px"],["margin-top","8px"]]],[".efp-hp-more button",[0,1,1],[["min-height","34px"],["font-size","14px"],["font-weight","700"],["color","$link"],["text-decoration","underline"],["text-decoration-thickness","1.5px"],["text-underline-offset","3px"]]],[".efp-hp-need > .efp-hp-more",[0,2,0],[["margin-top","10px"]]],[".efp-hp-on",[0,1,0],[["display","grid"],["grid-template-columns","34px minmax(0, 1fr) auto"],["gap","10px"],["align-items","center"],["margin-top","12px"],["padding","10px 10px 10px 12px"],["border-radius","14px"],["background","$clearBg"]]],[".efp-hp-on__ic",[0,1,0],[["width","34px"],["height","34px"],["border-radius","50%"],["background","$clearDot"],["color","$card"],["display","grid"],["place-items","center"]]],[".efp-hp-on__ic svg",[0,1,1],[["width","18px"],["height","18px"]]],[".efp-hp-on strong",[0,1,1],[["display","block"],["font-size","15px"],["color","$clearInk"],["line-height","1.25"]]],[".efp-hp-on small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","13px"],["line-height","1.35"],["color","$ink2"]]],[".efp-hp-on button",[0,1,1],[["min-height","38px"],["padding","0 14px"],["border-radius","999px"],["background","$card"],["font-size","14px"],["font-weight","800"],["box-shadow","inset 0 0 0 1.5px $ink"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-is-on > .efp-hp-buy",[0,2,0],[["display","none"]]],[".efp-is-on [data-once]",[0,2,0],[["display","none"]]],[".efp-hp-by",[0,1,0],[["display","grid"],["grid-template-columns","40px minmax(0, 1fr)"],["gap","10px"],["align-items","center"],["margin-top","14px"],["padding","0 2px"]]],[".efp-hp-by img",[0,1,1],[["width","40px"],["height","40px"],["border-radius","50%"],["object-fit","cover"],["background","$tile"]]],[".efp-hp-by strong",[0,1,1],[["display","block"],["font-size","15px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-by small",[0,1,1],[["display","block"],["margin-top","2px"],["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".05em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-hp-steps",[0,1,0],[["margin-top","14px"],["padding","16px 12px 12px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-steps__head",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","baseline"],["gap","12px"],["padding","0 4px"]]],[".efp-hp-steps__head h3",[0,1,1],[["font-size","19px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-steps__head p",[0,1,1],[["font-family","$mono"],["font-size","11px"],["letter-spacing",".05em"],["text-transform","uppercase"],["color","$ink3"],["white-space","nowrap"]]],[".efp-hp-list",[0,1,0],[["list-style","none"],["margin","6px 0 0"],["padding","0"],["display","grid"],["gap","2px"]]],[".efp-hp-swipe",[0,1,0],[["display","flex"],["gap","10px"],["overflow-x","auto"],["scroll-snap-type","x mandatory"],["overscroll-behavior-x","contain"],["scrollbar-width","none"],["-webkit-overflow-scrolling","touch"]]],[".efp-hp-swipe > *",[0,1,0],[["flex","0 0 78%"],["max-width","280px"],["scroll-snap-align","start"]]],[".efp-hp-steps .efp-hp-swipe",[0,2,0],[["margin","10px -12px 0"],["padding","0 12px 2px"],["scroll-padding-inline","12px"]]],[".efp-hp-tip",[0,1,0],[["display","flex"],["flex-direction","column"],["padding","14px 14px 12px"],["border-radius","18px"]]],[".efp-hp-tip--y",[0,1,0],[["background","$accentChip"]]],[".efp-hp-tip--c",[0,1,0],[["background","$linkChip"]]],[".efp-hp-tip--g",[0,1,0],[["background","$clearChip"]]],[".efp-hp-tip--r",[0,1,0],[["background","$riskChip"]]],[".efp-hp-tip__top",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"]]],[".efp-hp-tip__top svg",[0,1,1],[["width","26px"],["height","26px"],["color","$ink"]]],[".efp-hp-tip__n",[0,1,0],[["font-family","$serif"],["font-size","30px"],["font-weight","900"],["line-height","1"]]],[".efp-hp-tip strong",[0,1,1],[["display","block"],["margin-top","14px"],["font-size","17px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-tip small",[0,1,1],[["display","block"],["margin-top","4px"],["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-tip em",[0,1,1],[["display","block"],["margin-top","auto"],["padding-top","10px"],["font-style","normal"],["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".04em"],["text-transform","uppercase"],["color","$link"]]],[".efp-hp-eyebrow",[0,1,0],[["font-family","$mono"],["font-size","11px"],["letter-spacing",".07em"],["text-transform","uppercase"],["color","$ink3"],["margin-bottom","6px"]]],[".efp-hp-head .efp-hp-eyebrow + h2",[0,2,1],[["margin-top","0"]]],[".efp-hp-by",[0,1,0],[["grid-template-columns","40px minmax(0, 1fr) 22px"],["margin-top","14px"],["padding","10px 12px"],["border-radius","16px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-by__ok",[0,1,0],[["width","22px"],["height","22px"],["color","$link"]]],[".efp-hp-says",[0,1,0],[["display","grid"],["grid-template-columns","32px minmax(0, 1fr)"],["gap","10px"],["align-items","start"],["margin","12px 0 0"],["padding","10px 12px"],["border-radius","14px"],["background","$paper"]]],[".efp-hp-says img",[0,1,1],[["width","32px"],["height","32px"],["border-radius","50%"],["object-fit","cover"]]],[".efp-hp-says p",[0,1,1],[["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-says b",[0,1,1],[["color","$ink"],["font-weight","800"],["margin-right","2px"]]],[".efp-hp-jump",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","44px minmax(0, 1fr) auto"],["gap","12px"],["align-items","center"],["margin-top","12px"],["padding","8px 14px 8px 8px"],["border-radius","14px"],["background","$primary"],["color","$onPrimary"],["text-align","left"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-hp-jump img",[0,1,1],[["width","44px"],["height","44px"],["border-radius","10px"],["object-fit","cover"],["background","$card"]]],[".efp-hp-jump small",[0,1,1],[["display","block"],["font-size","13px"],["font-weight","800"],["color","$accent"]]],[".efp-hp-jump strong",[0,1,1],[["display","block"],["font-size","15px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-jump__go",[0,1,0],[["font-size","14px"],["font-weight","800"]]],[".efp-hp-n",[0,1,0],[["flex","none"]]],[".efp-hp-steps__head h3",[0,1,1],[["display","flex"],["align-items","center"],["gap","10px"],["font-size","19px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-sec__h",[0,1,0],[["display","flex"],["align-items","center"],["gap","10px"],["font-size","19px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-sec",[0,1,0],[["margin-top","14px"],["padding","16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"],["scroll-margin-top","12px"]]],[".efp-hp-sec .efp-hp-pick",[0,2,0],[["margin-top","14px"],["padding","0"],["background","none"]]],[".efp-hp-sec .efp-hp-pick__top",[0,2,0],[["grid-template-columns","76px minmax(0, 1fr)"]]],[".efp-hp-sec .efp-hp-pick__img",[0,2,0],[["width","76px"],["height","76px"],["background","$paper"]]],[".efp-hp-mini",[0,1,0],[["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".06em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-hp-why",[0,1,0],[["margin-top","14px"],["padding","12px 14px"],["border-radius","16px"],["box-shadow","inset 0 0 0 1.5px $ink"]]],[".efp-hp-why ul",[0,1,1],[["list-style","none"],["margin","0"],["padding","0"]]],[".efp-hp-dose ul",[0,1,1],[["list-style","none"],["margin","0"],["padding","0"]]],[".efp-hp-why li",[0,1,1],[["display","grid"],["grid-template-columns","58px minmax(0, 1fr)"],["gap","10px"],["align-items","start"],["margin-top","10px"]]],[".efp-hp-why strong",[0,1,1],[["display","block"],["font-size","15px"],["font-weight","800"],["line-height","1.3"]]],[".efp-hp-why small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","14px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-chip",[0,1,0],[["height","22px"],["border-radius","6px"],["display","grid"],["place-items","center"],["font-family","$mono"],["font-size","10.5px"],["font-weight","700"],["letter-spacing",".04em"],["text-transform","uppercase"]]],[".efp-hp-chip--dna",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-hp-chip--ask",[0,1,0],[["background","$accent4"],["color","$ink"]]],[".efp-hp-chip--rec",[0,1,0],[["background","$tile"],["color","$ink2"]]],[".efp-hp-dose",[0,1,0],[["margin-top","10px"],["padding","12px 14px 14px"],["border-radius","16px"],["background","$linkWash"]]],[".efp-hp-dose .efp-hp-mini",[0,2,0],[["color","$link"]]],[".efp-hp-dose ul",[0,1,1],[["display","grid"],["grid-template-columns","repeat(3, minmax(0, 1fr))"],["gap","8px"],["margin-top","10px"]]],[".efp-hp-dose li",[0,1,1],[["display","grid"],["justify-items","center"],["gap","2px"],["padding","10px 4px"],["border-radius","12px"],["background","$card"],["text-align","center"]]],[".efp-hp-dose b",[0,1,1],[["font-family","$mono"],["font-size","21px"],["font-weight","700"],["line-height","1.1"],["font-variant-numeric","tabular-nums"]]],[".efp-hp-dose small",[0,1,1],[["font-size","12.5px"],["line-height","1.3"],["color","$ink2"]]],[".efp-hp-dose > p:last-child",[0,2,1],[["margin-top","10px"],["font-size","14px"],["line-height","1.45"],["color","$link"]]],[".efp-hp-in",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["gap","6px"],["margin-top","12px"]]],[".efp-hp-in span",[0,1,1],[["padding","6px 10px"],["border-radius","999px"],["background","$tile"],["font-size","13.5px"],["font-weight","600"]]],[".efp-hp-opts",[0,1,0],[["display","grid"],["gap","8px"],["margin-top","14px"]]],[".efp-hp-opt",[0,1,0],[["width","100%"],["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["padding","14px"],["border-radius","16px"],["background","$card"],["text-align","left"],["box-shadow","inset 0 0 0 1.5px $n_DEDCD7"],["transition","box-shadow 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],['.efp-hp-opt[aria-checked="true"]',[0,2,0],[["box-shadow","inset 0 0 0 2.5px $ink"]]],[".efp-hp-opt__t",[0,1,0],[["display","grid"],["justify-items","start"],["gap","2px"]]],[".efp-hp-opt__t strong",[0,1,1],[["font-size","16px"],["font-weight","800"]]],[".efp-hp-opt__t small",[0,1,1],[["font-size","13.5px"],["color","$ink2"]]],[".efp-hp-opt__tag",[0,1,0],[["margin-bottom","4px"],["padding","2px 8px"],["border-radius","6px"],["background","$riskInk"],["color","$card"],["font-size","12px"],["font-weight","800"]]],[".efp-hp-opt__p",[0,1,0],[["font-size","18px"],["font-weight","800"]]],[".efp-hp-opt .efp-hp-price",[0,2,0],[["display","flex"],["flex-direction","column"],["align-items","flex-end"],["flex-wrap","nowrap"]]],[".efp-hp-opt .efp-hp-price s",[0,2,1],[["order","-1"]]],[".efp-hp-opt .efp-hp-price small",[0,2,1],[["display","none"]]],[".efp-hp-sec .efp-hp-buy",[0,2,0],[["display","block"],["margin-top","12px"]]],[".efp-hp-sec .efp-hp-buy .efp-emb-btn",[0,3,0],[["width","100%"],["min-height","52px"],["font-size","17px"]]],[".efp-hp-trust",[0,1,0],[["list-style","none"],["margin","12px 0 0"],["padding","0"],["display","grid"],["grid-template-columns","repeat(3, minmax(0, 1fr))"],["gap","6px"]]],[".efp-hp-trust li",[0,1,1],[["display","grid"],["justify-items","center"],["gap","4px"],["font-size","12.5px"],["font-weight","600"],["line-height","1.3"],["text-align","center"],["color","$ink2"]]],[".efp-hp-trust svg",[0,1,1],[["width","20px"],["height","20px"],["color","$link"]]],[".efp-is-on > .efp-hp-opts",[0,2,0],[["display","none"]]],[".efp-is-on > .efp-hp-trust",[0,2,0],[["display","none"]]],[".efp-hp-fine",[0,1,0],[["margin-top","8px"],["font-size","13px"],["line-height","1.45"],["color","$ink3"]]],[".efp-hp-sign",[0,1,0],[["margin-top","12px"],["padding","14px"],["border-radius","16px"],["box-shadow","inset 0 0 0 1.5px $n_DEDCD7"]]],[".efp-hp-sign h4",[0,1,1],[["display","flex"],["align-items","center"],["gap","8px"],["font-size","16px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-sign p",[0,1,1],[["margin-top","4px"],["font-size","15px"],["line-height","1.45"],["color","$ink2"]]],[".efp-hp-sign--er",[0,1,0],[["background","$riskBg"],["box-shadow","none"]]],[".efp-hp-sign--er h4",[0,1,1],[["color","$riskInk"]]],[".efp-hp-sign--er h4 svg",[0,1,2],[["width","20px"],["height","20px"]]],[".efp-hp-sign--er p",[0,1,1],[["color","$ink"]]],[".efp-hp-qs",[0,1,0],[["margin","10px 0 0"],["padding-left","22px"],["display","grid"],["gap","6px"],["font-size","15px"],["line-height","1.45"]]],[".efp-hp-sec .efp-hp-add",[0,2,0],[["display","flex"],["align-items","center"],["justify-content","center"],["width","100%"],["padding","0 16px"],["min-height","48px"],["margin-top","14px"],["border-radius","999px"],["font-size","16px"],["font-weight","800"],["box-shadow","inset 0 0 0 2px $ink"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1), background-color 180ms ease"]]],['.efp-hp-sec .efp-hp-add[aria-pressed="true"]',[0,3,0],[["background","$clearBg"],["color","$clearInk"],["box-shadow","none"]]],[".efp-hp-revs",[0,1,0],[["margin","12px -16px 0"],["padding","0 16px"],["scroll-padding-inline","16px"]]],[".efp-hp-rev",[0,1,0],[["margin","0"],["padding","12px 14px"],["border-radius","14px"],["background","$paper"]]],[".efp-hp-rev__s",[0,1,0],[["display","flex"],["gap","1px"],["color","$watchDot"]]],[".efp-hp-rev__s svg",[0,1,1],[["width","13px"],["height","13px"]]],[".efp-hp-rev blockquote",[0,1,1],[["margin","5px 0 0"],["font-size","15px"],["line-height","1.4"]]],[".efp-hp-rev figcaption",[0,1,1],[["margin-top","4px"],["font-size","13px"],["color","$ink3"]]],[".efp-hp-score",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","8px"],["margin-top","12px"],["padding","11px 12px 11px 14px"],["border-radius","12px"],["background","$primary"],["color","$onPrimary"],["font-size","14.5px"],["font-weight","800"],["line-height","1.3"]]],[".efp-hp-score b",[0,1,1],[["flex","none"],["font-family","$mono"],["font-size","16px"],["font-weight","700"],["color","$accent"]]],[".efp-hp-opt--once",[0,1,0],[["padding","10px 14px"],["background","$paper"],["box-shadow","none"]]],[".efp-hp-opt--once .efp-hp-opt__t strong",[0,2,1],[["font-size","15px"],["font-weight","700"]]],[".efp-hp-opt--once .efp-hp-opt__t small",[0,2,1],[["font-size","13px"]]],[".efp-hp-opt--once .efp-hp-opt__p",[0,2,0],[["font-size","15px"],["font-weight","700"],["color","$ink2"]]],['.efp-hp-opt--once[aria-checked="true"]',[0,2,0],[["background","$card"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-hp-proof",[0,1,0],[["display","flex"],["justify-content","center"],["align-items","center"],["gap","6px"],["margin-top","10px"],["font-size","14.5px"],["font-weight","800"],["color","$riskInk"]]],[".efp-hp-proof svg",[0,1,1],[["width","21px"],["height","21px"],["flex","none"],["margin-top","-2px"]]],[".efp-is-on > .efp-hp-proof",[0,2,0],[["display","none"]]],[".efp-hp-qs__k",[0,1,0],[["margin-top","18px"],["font-size","16px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-qs__k + .efp-hp-qs",[0,2,0],[["margin-top","6px"]]],[".efp-hp-xs",[0,1,0],[["margin-top","22px"],["display","grid"],["gap","10px"]]],[".efp-hp-xs .efp-hp-eyebrow",[0,2,0],[["margin","0 4px"],["font-weight","400"]]],[".efp-hp-x",[0,1,0],[["display","grid"],["grid-template-columns","56px minmax(0, 1fr)"],["gap","4px 12px"],["align-items","start"],["padding","14px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-x > img",[0,1,1],[["width","56px"],["height","56px"],["border-radius","14px"],["object-fit","cover"],["background","$card"]]],[".efp-hp-x__ic",[0,1,0],[["width","56px"],["height","56px"],["border-radius","14px"],["object-fit","cover"],["background","$card"]]],[".efp-hp-x__ic",[0,1,0],[["display","grid"],["place-items","center"],["background","$linkWash"],["color","$link"]]],[".efp-hp-x__ic svg",[0,1,1],[["width","26px"],["height","26px"]]],[".efp-hp-x h4",[0,1,1],[["font-size","17px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-x h4.efp-serif",[0,2,1],[["font-size","21px"]]],[".efp-hp-x p",[0,1,1],[["margin-top","3px"],["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-x .efp-hp-x__p",[0,2,0],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","0 8px"],["margin-top","6px"],["color","$ink"]]],[".efp-hp-x__p b",[0,1,1],[["font-size","19px"],["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-hp-x__p s",[0,1,1],[["font-size","14px"],["font-weight","700"],["color","$ink3"]]],[".efp-hp-x__go",[0,1,0],[["grid-column","2"],["justify-self","start"],["margin-top","8px"],["min-height","40px"],["padding","0 18px"],["border-radius","999px"],["background","$primary"],["color","$onPrimary"],["font-size","14.5px"],["font-weight","800"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1), background-color 180ms ease"]]],['.efp-hp-x__go[aria-pressed="true"]',[0,2,0],[["background","$clearBg"],["color","$clearInk"]]],[".efp-hp-x--kit",[0,1,0],[["background","$linkWash"],["box-shadow","none"]]],[".efp-hp-x--kit > img",[0,1,1],[["background","$card"]]],[".efp-hp-next",[0,1,0],[["list-style","none"],["margin","22px 0 0"],["padding","4px 16px"],["border-radius","18px"],["background","$card"],["text-align","left"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-next li",[0,1,1],[["display","grid"],["grid-template-columns","36px minmax(0, 1fr)"],["gap","12px"],["align-items","center"],["padding","10px 0"]]],[".efp-hp-next__ic",[0,1,0],[["width","36px"],["height","36px"],["border-radius","11px"],["background","$linkWash"],["color","$link"],["display","grid"],["place-items","center"]]],[".efp-hp-next__ic svg",[0,1,1],[["width","19px"],["height","19px"]]],[".efp-hp-next small",[0,1,1],[["display","block"],["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".05em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-hp-next span",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","15px"],["font-weight","600"],["line-height","1.35"]]],[".efp-co",[0,1,0],[["display","grid"],["gap","10px"],["margin-top","2px"]]],[".efp-co-prod",[0,1,0],[["display","grid"],["grid-template-columns","56px minmax(0, 1fr)"],["gap","12px"],["align-items","center"]]],[".efp-co-prod__img",[0,1,0],[["width","56px"],["height","56px"],["border-radius","14px"],["background","$accent3"],["color","$ink"],["overflow","hidden"],["display","grid"],["place-items","center"]]],[".efp-co-prod__img img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-co-prod__img svg",[0,1,1],[["width","30px"],["height","30px"]]],[".efp-co-prod p",[0,1,1],[["margin-top","2px"],["font-size","14px"],["line-height","1.35"],["color","$ink2"]]],[".efp-co-prod__t",[0,1,0],[["font-size","20px"],["font-weight","800"],["line-height","1.2"],["color","$ink"]]],[".efp-co-prod .efp-co-prod__t",[0,2,0],[["margin-top","0"]]],[".efp-co-opts",[0,1,0],[["display","grid"],["gap","8px"]]],[".efp-co-opt",[0,1,0],[["border-radius","16px"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"],["transition","box-shadow 160ms ease, background-color 160ms ease"]]],[".efp-co-opt.efp-is-on",[0,2,0],[["background","$accent4"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-co-opt.efp-is-on .efp-bk__radio",[0,3,0],[["box-shadow","inset 0 0 0 7px $ink"]]],[".efp-co-opt__hit",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","22px minmax(0, 1fr) auto"],["gap","2px 12px"],["align-items","start"],["padding","12px 14px"],["border-radius","16px"],["text-align","left"]]],[".efp-co-opt__hit strong",[0,1,1],[["font-size","16px"],["line-height","1.35"]]],[".efp-co-opt__p",[0,1,0],[["text-align","right"],["font-size","16px"],["font-weight","800"],["line-height","1.35"],["font-variant-numeric","tabular-nums"]]],[".efp-co-opt__p s",[0,1,1],[["display","block"],["font-size","13px"],["font-weight","600"],["color","$riskInk"]]],[".efp-co-opt__hit small",[0,1,1],[["grid-column","2 / -1"],["font-size","13px"],["line-height","1.4"],["color","$ink2"]]],[".efp-co-k",[0,1,0],[["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".06em"],["text-transform","uppercase"],["color","$ink3"],["margin-bottom","6px"]]],[".efp-co-every",[0,1,0],[["display","grid"],["grid-template-columns","repeat(3, minmax(0, 1fr))"],["gap","4px"],["padding","4px"],["border-radius","999px"],["background","$card"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"]]],[".efp-co-when",[0,1,0],[["padding","0 14px 12px 48px"]]],[".efp-co-every button",[0,1,1],[["min-height","36px"],["padding","0 6px"],["border-radius","999px"],["font-size","14px"],["font-weight","700"],["text-align","center"],["white-space","nowrap"],["transition","background-color 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],['.efp-co-every button[aria-checked="true"]',[0,2,1],[["background","$primary"],["color","$onPrimary"]]],[".efp-co-rows",[0,1,0],[["list-style","none"],["margin","0"],["padding","2px 14px"],["border-radius","16px"],["background","$paper"]]],[".efp-co-rows li",[0,1,1],[["display","grid"],["grid-template-columns","20px 4.6rem minmax(0, 1fr)"],["gap","10px"],["align-items","center"],["min-height","40px"],["font-size","14.5px"]]],[".efp-co-rows svg",[0,1,1],[["width","20px"],["height","20px"],["color","$ink2"]]],[".efp-co-rows span",[0,1,1],[["color","$ink3"]]],[".efp-co-rows b",[0,1,1],[["font-weight","700"]]],[".efp-co-fine",[0,1,0],[["font-size","12.5px"],["line-height","1.45"],["color","$ink3"],["text-align","center"]]],[".efp-mg-cancel",[0,1,0],[["justify-self","center"],["min-height","40px"],["font-size","14.5px"],["font-weight","700"],["color","$riskInk"]]],[".efp-hp-tools",[0,1,0],[["display","flex"],["align-items","center"],["justify-content","space-between"],["gap","8px"],["margin","-8px -6px 2px 2px"]]],[".efp-hp-tools .efp-hp-eyebrow",[0,2,0],[["margin","0"]]],[".efp-hp-tools__end",[0,1,0],[["display","flex"],["align-items","center"],["gap","2px"]]],[".efp-hp-orders",[0,1,0],[["display","inline-flex"],["align-items","center"],["gap","6px"],["min-height","44px"],["padding","0 8px"],["border-radius","999px"],["font-size","15px"],["font-weight","700"]]],[".efp-hp-orders svg",[0,1,1],[["width","21px"],["height","21px"]]],[".efp-hp-cart",[0,1,0],[["position","relative"],["width","44px"],["height","44px"],["display","grid"],["place-items","center"],["border-radius","50%"]]],[".efp-hp-cart svg",[0,1,1],[["width","26px"],["height","26px"]]],[".efp-hp-cart__n",[0,1,0],[["position","absolute"],["top","3px"],["right","1px"],["min-width","20px"],["height","20px"],["padding","0 5px"],["border-radius","999px"],["background","$riskDot"],["color","$card"],["font-size","12px"],["font-weight","800"],["line-height","20px"],["text-align","center"],["font-variant-numeric","tabular-nums"],["box-shadow","0 0 0 2px $paper"]]],[".efp-hp-ask-row",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","40px minmax(0, 1fr) 18px"],["gap","12px"],["align-items","center"],["margin-top","10px"],["padding","12px 14px 12px 12px"],["border-radius","16px"],["background","$linkWash"],["text-align","left"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-hp-ask-row__ic",[0,1,0],[["width","40px"],["height","40px"],["border-radius","11px"],["background","$card"],["color","$link"],["display","grid"],["place-items","center"]]],[".efp-hp-ask-row__ic svg",[0,1,1],[["width","21px"],["height","21px"]]],[".efp-hp-ask-row strong",[0,1,1],[["display","block"],["font-size","15.5px"],["font-weight","800"],["line-height","1.3"]]],[".efp-hp-ask-row small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","14px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-ask-row > svg",[0,1,1],[["width","18px"],["height","18px"],["color","$ink2"]]],[".efp-hp-sec .efp-hp-ask-row",[0,2,0],[["margin-top","12px"]]],[".efp-hp-wait",[0,1,0],[["margin-top","14px"],["padding","16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-wait__top",[0,1,0],[["display","grid"],["grid-template-columns","46px minmax(0, 1fr)"],["gap","12px"],["align-items","center"]]],[".efp-hp-wait__top h3",[0,1,1],[["font-size","26px"],["line-height","1.05"],["margin-top","2px"]]],[".efp-hp-wait .efp-sh-track",[0,2,0],[["margin-top","14px"]]],[".efp-hp-wait__k",[0,1,0],[["margin-top","18px"],["font-size","16px"],["font-weight","800"]]],[".efp-hp-next--in",[0,1,0],[["margin-top","8px"],["background","$paper"],["box-shadow","none"]]],[".efp-hp-wait__text",[0,1,0],[["display","flex"],["align-items","center"],["gap","8px"],["margin","16px 0 12px"],["font-size","15.5px"],["font-weight","700"]]],[".efp-hp-wait__text svg",[0,1,1],[["width","20px"],["height","20px"],["color","$link"],["flex","none"]]],[".efp-sh-track",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"]]],[".efp-sh-track li",[0,1,1],[["position","relative"],["display","grid"],["grid-template-columns","22px minmax(0, 1fr)"],["gap","12px"],["padding-bottom","16px"]]],[".efp-sh-track li:last-child",[0,2,1],[["padding-bottom","0"]]],[".efp-sh-track li > .efp-before",[0,2,1],[["position","absolute"],["left","10px"],["top","20px"],["bottom","-2px"],["width","2px"],["border-radius","1px"],["background","$n_E2DFD9"]]],[".efp-sh-track li:last-child > .efp-before",[0,3,1],[["display","none"]]],[".efp-sh-track li.efp-is-done:has(+ li.efp-is-done) > .efp-before",[0,4,2],[["background","$primary"]]],[".efp-sh-track__dot",[0,1,0],[["width","22px"],["height","22px"],["border-radius","50%"],["display","grid"],["place-items","center"],["background","$card"],["box-shadow","inset 0 0 0 2px $n_CFCBC4"],["position","relative"],["z-index","1"]]],[".efp-sh-track__dot svg",[0,1,1],[["width","13px"],["height","13px"],["color","$card"]]],[".efp-sh-track .efp-is-done .efp-sh-track__dot",[0,3,0],[["background","$primary"],["box-shadow","none"]]],[".efp-sh-track .efp-is-now .efp-sh-track__dot",[0,3,0],[["background","$accent"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-sh-track strong",[0,1,1],[["display","block"],["font-size","15.5px"],["font-weight","800"],["line-height","1.3"]]],[".efp-sh-track small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","14px"],["line-height","1.35"],["color","$ink3"]]],[".efp-sh-track li:not(.efp-is-done):not(.efp-is-now) strong",[0,3,2],[["color","$ink3"],["font-weight","700"]]],[".efp-sh",[0,1,0],[["display","grid"],["gap","12px"],["padding","8px 18px 28px"]]],[".efp-sh-title",[0,1,0],[["font-size","29px"],["line-height","1.08"]]],[".efp-sh-sub2",[0,1,0],[["margin-top","-6px"],["font-size","15px"],["line-height","1.45"],["color","$ink2"]]],[".efp-sh-k",[0,1,0],[["margin","6px 2px -4px"],["font-size","16px"],["font-weight","800"]]],[".efp-sh-card",[0,1,0],[["padding","14px 16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-sh-items",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","18px"]]],[".efp-sh-item",[0,1,0],[["display","grid"],["grid-template-columns","64px minmax(0, 1fr)"],["gap","12px"],["align-items","start"]]],[".efp-sh-item__img",[0,1,0],[["width","64px"],["height","64px"],["border-radius","14px"],["overflow","hidden"],["display","grid"],["place-items","center"],["background","$linkWash"],["color","$link"]]],[".efp-sh-item__img img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-sh-item__img svg",[0,1,1],[["width","28px"],["height","28px"]]],[".efp-sh-item h3",[0,1,1],[["font-size","16.5px"],["font-weight","800"],["line-height","1.25"]]],[".efp-sh-item__p",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","2px 8px"],["margin-top","3px"]]],[".efp-sh-item__p b",[0,1,1],[["font-size","16px"],["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-item__p s",[0,1,1],[["font-size","14px"],["font-weight","600"],["color","$ink3"]]],[".efp-sh-item__p small",[0,1,1],[["font-size","14px"],["color","$ink3"]]],[".efp-sh-item__acts",[0,1,0],[["display","flex"],["align-items","center"],["gap","16px"],["margin-top","8px"]]],[".efp-sh-step",[0,1,0],[["display","inline-grid"],["grid-template-columns","40px 30px 40px"],["align-items","center"],["height","40px"],["border-radius","999px"],["background","$card"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"]]],[".efp-sh-step button",[0,1,1],[["height","40px"],["display","grid"],["place-items","center"],["border-radius","999px"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-sh-step button svg",[0,1,2],[["width","16px"],["height","16px"]]],[".efp-sh-step button[disabled]",[0,2,1],[["opacity",".3"],["cursor","default"]]],[".efp-sh-step output",[0,1,1],[["text-align","center"],["font-size","15.5px"],["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-rm",[0,1,0],[["min-height","40px"],["font-size","14.5px"],["font-weight","700"],["color","$ink2"],["text-decoration","underline"],["text-decoration-thickness","1.5px"],["text-underline-offset","3px"]]],[".efp-sh-mode",[0,1,0],[["display","grid"],["gap","6px"],["margin-top","8px"]]],[".efp-sh-mode button",[0,1,1],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","10px"],["min-height","44px"],["padding","8px 12px"],["border-radius","12px"],["background","$paper"],["font-size","14.5px"],["font-weight","700"],["line-height","1.3"],["text-align","left"],["transition","box-shadow 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],['.efp-sh-mode button[aria-checked="true"]',[0,2,1],[["background","$card"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-sh-mode b",[0,1,1],[["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-item .efp-co-every",[0,2,0],[["margin-top","8px"]]],[".efp-sh-sum li.efp-is-renew",[0,2,1],[["min-height","28px"],["margin-top","-6px"],["font-size","14px"]]],[".efp-sh-sum",[0,1,0],[["list-style","none"],["margin","0"],["padding","6px 16px"],["border-radius","16px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-sh-sum li",[0,1,1],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["min-height","34px"],["font-size","15px"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-sum li > span:first-child",[0,2,2],[["color","$ink2"],["display","inline-flex"],["align-items","center"],["gap","8px"]]],[".efp-sh-sum li.efp-is-total",[0,2,1],[["min-height","42px"],["font-size","17px"],["font-weight","800"]]],[".efp-sh-sum li.efp-is-total span:first-child",[0,3,2],[["color","$ink"]]],[".efp-sh-foot",[0,1,0],[["display","grid"],["gap","8px"]]],[".efp-sh-foot .efp-sh-fine",[0,2,0],[["text-align","center"]]],[".efp-sh-fine",[0,1,0],[["font-size","13px"],["line-height","1.45"],["color","$ink3"]]],[".efp-sh-fine--c",[0,1,0],[["margin-top","14px"],["text-align","center"]]],[".efp-sh-empty",[0,1,0],[["display","grid"],["justify-items","center"],["gap","8px"],["padding","48px 12px 8px"],["text-align","center"]]],[".efp-sh-empty .efp-emb-tile",[0,2,0],[["width","72px"],["height","72px"],["border-radius","20px"],["margin-bottom","8px"]]],[".efp-sh-empty .efp-emb-tile svg",[0,2,1],[["width","34px"],["height","34px"]]],[".efp-sh-empty h2",[0,1,1],[["font-size","28px"],["line-height","1.1"]]],[".efp-sh-empty p",[0,1,1],[["max-width","30ch"],["font-size","15.5px"],["line-height","1.45"],["color","$ink2"],["text-wrap","pretty"]]],[".efp-sh-empty .efp-emb-btn",[0,2,0],[["margin-top","12px"]]],[".efp-sh-link",[0,1,0],[["min-height","40px"],["font-size","15px"],["font-weight","700"],["color","$link"],["text-decoration","underline"],["text-decoration-thickness","1.5px"],["text-underline-offset","3px"]]],[".efp-sh-subc",[0,1,0],[["display","grid"],["grid-template-columns","56px minmax(0, 1fr) auto"],["gap","12px"],["align-items","center"],["padding","12px 14px 12px 12px"],["border-radius","22px"],["background","$clearBg"]]],[".efp-sh-subc img",[0,1,1],[["width","56px"],["height","56px"],["border-radius","14px"],["object-fit","cover"],["background","$card"]]],[".efp-sh-subc strong",[0,1,1],[["display","block"],["font-size","16px"],["font-weight","800"],["line-height","1.25"]]],[".efp-sh-subc small",[0,1,1],[["display","block"],["margin-top","2px"],["font-size","14px"],["line-height","1.35"],["color","$ink2"]]],[".efp-sh-subc button",[0,1,1],[["min-height","40px"],["padding","0 14px"],["border-radius","999px"],["background","$card"],["font-size","14px"],["font-weight","800"],["box-shadow","inset 0 0 0 1.5px $ink"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-sh-orders",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","10px"]]],[".efp-sh-order",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","minmax(0, 1fr) 18px"],["gap","10px"],["align-items","center"],["padding","14px 14px 14px 16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"],["text-align","left"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-sh-order > svg",[0,1,1],[["width","18px"],["height","18px"],["color","$ink3"]]],[".efp-sh-order__top",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","4px 10px"]]],[".efp-sh-order__no",[0,1,0],[["font-family","$mono"],["font-size","12px"],["letter-spacing",".04em"],["color","$ink3"]]],[".efp-sh-order__what",[0,1,0],[["display","block"],["margin-top","8px"],["font-size","16px"],["font-weight","800"],["line-height","1.3"]]],[".efp-sh-order__meta",[0,1,0],[["display","block"],["margin-top","2px"],["font-size","14px"],["line-height","1.4"],["color","$ink3"]]],[".efp-sh-order__pics",[0,1,0],[["display","flex"],["gap","6px"],["margin-top","10px"]]],[".efp-sh-order__pics span",[0,1,1],[["width","40px"],["height","40px"],["border-radius","10px"],["overflow","hidden"],["display","grid"],["place-items","center"],["background","$linkWash"],["color","$link"]]],[".efp-sh-order__pics img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-sh-order__pics svg",[0,1,1],[["width","20px"],["height","20px"]]],[".efp-sh-pill",[0,1,0],[["display","inline-flex"],["align-items","center"],["gap","6px"],["min-height","26px"],["padding","0 10px"],["border-radius","999px"],["font-size","13px"],["font-weight","800"],["background","$accent3"],["color","$ink"]]],[".efp-sh-pill--done",[0,1,0],[["background","$clearBg"],["color","$clearInk"]]],[".efp-sh-pill--sub",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-sh-carrier",[0,1,0],[["display","grid"],["grid-template-columns","40px minmax(0, 1fr)"],["gap","4px 12px"],["align-items","center"]]],[".efp-sh-carrier__ic",[0,1,0],[["width","40px"],["height","40px"],["border-radius","11px"],["background","$linkWash"],["color","$link"],["display","grid"],["place-items","center"]]],[".efp-sh-carrier__ic svg",[0,1,1],[["width","21px"],["height","21px"]]],[".efp-sh-carrier strong",[0,1,1],[["display","block"],["font-size","16px"],["font-weight","800"]]],[".efp-sh-carrier small",[0,1,1],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","2px 8px"],["margin-top","1px"],["font-family","$mono"],["font-size","13px"],["letter-spacing",".02em"],["color","$ink2"]]],[".efp-sh-carrier .efp-emb-btn",[0,2,0],[["grid-column","1 / -1"],["margin-top","10px"]]],[".efp-sh-carrier__wait",[0,1,0],[["grid-column","2"],["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-sh-acts",[0,1,0],[["display","grid"],["gap","4px"],["justify-items","center"],["margin-top","4px"]]],[".efp-hp-next__ic img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"],["border-radius","11px"]]],[".efp-co-items",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","10px"]]],[".efp-co-items li",[0,1,1],[["display","grid"],["grid-template-columns","44px minmax(0, 1fr) auto"],["gap","12px"],["align-items","center"],["font-size","15px"]]],[".efp-co-items .efp-sh-order__pics",[0,2,0],[["margin","0"]]],[".efp-co-items strong",[0,1,1],[["display","block"],["font-size","15.5px"],["font-weight","800"],["line-height","1.25"]]],[".efp-co-items small",[0,1,1],[["display","block"],["font-size","13.5px"],["color","$ink3"]]],[".efp-co-items b",[0,1,1],[["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-co .efp-sh-sum",[0,2,0],[["background","$paper"],["box-shadow","none"]]],[".efp-co-items .efp-sh-order__pics span",[0,2,1],[["width","44px"],["height","44px"]]],[".efp-sh .efp-co-rows",[0,2,0],[["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-wt-f",[0,1,0],[["display","grid"],["gap","8px"],["margin-top","14px"],["font-size","15px"],["font-weight","700"]]],[".efp-wt-f__in",[0,1,0],[["position","relative"]]],[".efp-wt-f input",[0,1,1],[["width","100%"],["height","58px"],["border","0"],["border-radius","16px"],["padding","0 56px 0 18px"],["background","$card"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"],["font-size","24px"],["font-weight","800"],["font-variant-numeric","tabular-nums"],["outline","none"]]],[".efp-wt-f__u",[0,1,0],[["position","absolute"],["right","18px"],["top","50%"],["translate","0 -50%"],["font-size","17px"],["font-weight","700"],["color","$ink3"],["pointer-events","none"]]],[".efp-wt-err",[0,1,0],[["min-height","20px"],["margin-top","6px"],["font-size","14px"],["font-weight","700"],["color","$riskInk"]]],[".efp-wt-acts",[0,1,0],[["display","grid"],["gap","8px"],["margin-top","10px"]]],[".efp-hp-ask-row strong",[0,1,1],[["text-wrap","balance"]]],[".efp-sh-order__what",[0,1,0],[["text-wrap","balance"]]],[".efp-sh-item h3",[0,1,1],[["text-wrap","balance"]]],[".efp-co-items strong",[0,1,1],[["text-wrap","balance"]]],[".efp-sh-subc strong",[0,1,1],[["text-wrap","balance"]]],[".efp-hp-ask-row small",[0,1,1],[["text-wrap","pretty"]]],[".efp-hp-tip small",[0,1,1],[["text-wrap","pretty"]]],[".efp-sh-carrier__wait",[0,1,0],[["text-wrap","pretty"]]],[".efp-sh-fine",[0,1,0],[["text-wrap","pretty"]]],[".efp-sh-sub2",[0,1,0],[["text-wrap","pretty"]]],[".efp-hp-next span",[0,1,1],[["text-wrap","pretty"]]],[".efp-hp-wait__text",[0,1,0],[["text-wrap","pretty"]]],[".efp-wt-err",[0,1,0],[["text-wrap","pretty"]]],[".efp-hp-foot-stack",[0,1,0],[["display","grid"],["gap","10px"]]],[".efp-hp",[0,1,0],[["background","$paper"]]],[".efp-ph-toast",[0,1,0],[["top","calc(112px - 50px)"]]],[".efp-hp-jump:not(:has(> img))",[0,1,1],[["grid-template-columns","minmax(0, 1fr) auto"]]],[".efp-hp-others",[0,1,0],[["list-style","none"],["margin-bottom","0"]]],[".efp-sheet__x",[0,1,0],[["position","relative"]]],[".efp-ph-sheet",[0,2,0],[["max-height","calc(100% - 8px)"],["padding","8px 20px 14px"]],1],[".efp-sheet__grab",[0,2,0],[["display","none"]],1],[".efp-co",[0,2,0],[["gap","8px"]],1],[".efp-co-rows li",[0,2,1],[["min-height","36px"]],1]];var RAPH_PLAN_CLASSES={root:"hp",head:"hp-head",eyebrow:"hp-eyebrow",serif:"serif",by:"hp-by",byOk:"hp-by__ok",need:"hp-need",needKicker:"hp-need__k",sources:"hp-srcs",source:"hp-src","source:dna":"hp-src--dna",needRisk:"hp-need__s",dot:"dot","dot:risk":"dot--risk",odds:"hp-odds",oddsKicker:"hp-odds__k",oddsNumbers:"hp-odds__n",tag:"cp-tag cp-tag--s",says:"hp-says",saysKicker:"hp-says__k",jump:"hp-jump",jumpGo:"hp-jump__go",steps:"hp-steps",stepsHead:"hp-steps__head",n:"hp-n",list:"hp-list hp-swipe",tip:"hp-tip",tipN:"hp-tip__n",section:"hp-sec",sectionTitle:"hp-sec__h",pick:"hp-pick",others:"hp-sec hp-others",other:"hp-pick",pickTop:"hp-pick__top",pickImage:"hp-pick__img",stars:"hp-stars",pickLine:"hp-pick__line",reviews:"hp-revs",review:"hp-rev",reviewStars:"hp-rev__s",score:"hp-score",why:"hp-why",mini:"hp-mini",chip:"hp-chip","chip:dna":"hp-chip--dna","chip:rec":"hp-chip--rec","chip:ask":"hp-chip--ask",dose:"hp-dose",ingredients:"hp-in",opts:"hp-opts",opt:"hp-opt","opt:once":"hp-opt--once",optText:"hp-opt__t",optTag:"hp-opt__tag",price:"hp-price",optPrice:"hp-opt__p",buy:"hp-buy",button:"emb-btn emb-btn--block",proof:"hp-proof",trust:"hp-trust",on:"hp-on",onIcon:"hp-on__ic",more:"hp-more",fine:"hp-fine",sign:"hp-sign","sign:urgent":"hp-sign--er",questionsKicker:"hp-qs__k",questions:"hp-qs",add:"hp-add",extras:"hp-xs",extrasTitle:"hp-eyebrow",extra:"hp-x","extra:kit":"hp-x--kit",extraIcon:"hp-x__ic",extraTitle:"","extraTitle:kit":"serif",extraPrice:"hp-x__p",extraGo:"hp-x__go",pageFine:"plan__fine",stateOn:"is-on",scrim:"ph-scrim",sheet:"ph-sheet",sheetGrab:"sheet__grab",sheetTop:"sheet__top",sheetKicker:"sheet__kicker",sheetClose:"sheet__x",srOnly:"sr-only",co:"co",coProd:"co-prod",coProdImage:"co-prod__img",coProdTitle:"co-prod__t",coOpts:"co-opts",coOpt:"co-opt",coHit:"co-opt__hit",radio:"bk__radio",coPrice:"co-opt__p",coWhen:"co-when",coKey:"co-k",coEvery:"co-every",coRows:"co-rows",buttonLarge:"emb-btn emb-btn--block emb-btn--lg",buttonGhost:"emb-btn emb-btn--ghost emb-btn--block",coFine:"co-fine",mgCancel:"mg-cancel",started:"ph-push",startedScroll:"ph-scroll",done:"bk__done",doneCheck:"bk__check",doneTitle:"serif bk__title",doneWhen:"bk__when",doneWho:"bk__who",next:"hp-next",nextIcon:"hp-next__ic",foot:"bk__foot",toast:"ph-toast",tipTop:"hp-tip__top","tip:y":"hp-tip--y","tip:c":"hp-tip--c","tip:g":"hp-tip--g","tip:r":"hp-tip--r",tools:"hp-tools",toolsEnd:"hp-tools__end",ordersButton:"hp-orders",cartButton:"hp-cart",cartCount:"hp-cart__n",askRow:"hp-ask-row",askRowIcon:"hp-ask-row__ic",wait:"hp-wait",waitTop:"hp-wait__top",waitTile:"emb-tile emb-tile--cyan",waitKey:"hp-wait__k",waitText:"hp-wait__text","next:in":"hp-next--in",track:"sh-track","track:kit":"sh-track--kit",trackDot:"sh-track__dot",shopTag:"cp-tag",trackStep:"","trackStep:done":"is-done","trackStep:now":"is-now",push:"ph-push",sheetBody:"sheet__body",shop:"sh",shopTitle:"serif sh-title",shopSub:"sh-sub2",shopKey:"sh-k",shopCard:"sh-card","shopCard:carrier":"sh-carrier",shopItems:"sh-items",shopItem:"sh-item",shopItemImage:"sh-item__img",shopItemPrice:"sh-item__p",shopItemActions:"sh-item__acts",stepper:"sh-step",shopRemove:"sh-rm",shopMode:"sh-mode",summary:"sh-sum",summaryRow:"","summaryRow:total":"is-total","summaryRow:renew":"is-renew",shopFine:"sh-fine","shopFine:center":"sh-fine--c",shopEmpty:"sh-empty",shopTile:"emb-tile emb-tile--cyan",shopLink:"sh-link",shopActions:"sh-acts",subCard:"sh-subc",orderList:"sh-orders",order:"sh-order",orderTop:"sh-order__top",orderPill:"sh-pill","orderPill:done":"sh-pill--done","orderPill:sub":"sh-pill--sub",orderNo:"sh-order__no",orderWhat:"sh-order__what",orderMeta:"sh-order__meta",orderPics:"sh-order__pics",carrierIcon:"sh-carrier__ic",carrierWait:"sh-carrier__wait",buttonSmall:"emb-btn emb-btn--ghost emb-btn--sm",coItems:"co-items","foot:shop":"sh-foot","foot:stack":"hp-foot-stack",weightField:"wt-f",weightInput:"wt-f__in",weightUnit:"wt-f__u",weightError:"wt-err",weightActions:"wt-acts"},prefix=classes=>classes.split(/\s+/).filter(c=>c!=="").map(c=>`${PLAN_CLASS_PREFIX}${c}`).join(" "),PLAN_DEFAULT_CLASS_NAMES=/* @__PURE__ */Object.freeze(Object.fromEntries(Object.entries(RAPH_PLAN_CLASSES).map(([part,classes])=>[part,prefix(classes)]))),PLAN_BEFORE_CLASS=`${PLAN_CLASS_PREFIX}before`,RAPH_PLAN_LIGHT=/* @__PURE__ */Object.freeze({black:"#000000",onInk:"#FFFFFF",wash:"rgba(38, 37, 35, 0.06)",scrim:"rgba(38, 37, 35, 0.38)",riskChip:"#FFD8D6",clearChip:"#DDEFC4"});function rgb(color){let c=color.trim(),h=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(c);if(h!==null){let x=h[1].length===3?h[1].split("").map(d=>d+d).join(""):h[1];return[0,2,4].map(k=>parseInt(x.slice(k,k+2),16))}let r=/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i.exec(c);return r===null?null:[Number(r[1]),Number(r[2]),Number(r[3])]}function mixPlanColor(color,share,ground){let a=rgb(color),b=rgb(ground);if(a===null||b===null)return ground;let to=k=>Math.round(a[k]*share+b[k]*(1-share)).toString(16).padStart(2,"0");return`#${to(0)}${to(1)}${to(2)}`.toUpperCase()}function planTokens(theme){let c=theme.color,v=v3Palette(theme),neutral={ink:v.ink,ink2:v.ink2,ink3:v.ink3,paper:v.paper,tile:v.tile,line:v.line,card:v.card,riskBg:v.riskBg,riskInk:v.riskInk,riskDot:v.riskDot,clearBg:v.clearBg,clearInk:v.clearInk,clearDot:v.clearDot,watchDot:v.watchDot,...v.dark?{black:c.text.primary,onInk:c.background,wash:mixPlanColor(c.text.primary,.08,c.surface),scrim:"rgba(0, 0, 0, 0.6)",riskChip:c.badgeBgCritical,clearChip:c.badgeBgPositive}:RAPH_PLAN_LIGHT},link=v.link,card=neutral.card;return{...neutral,primary:v.primary,onPrimary:v.onPrimary,accent:v.accent,accent4:mixPlanColor(c.accent,.17,card),accent3:mixPlanColor(c.accent,.25,card),accentChip:mixPlanColor(c.accent,.47,card),link:link,linkWash:mixPlanColor(link,.12,card),linkChip:mixPlanColor(link,.2,card),sans:faceCss(theme,"regular").fontFamily,serif:headingFaceCss(theme,"bold").fontFamily,mono:cssMonoFamily(theme.type.mono)}}var WIDE_QUERY="(min-width: 900px)",wideNow=()=>typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(WIDE_QUERY).matches;function fill(value,tokens,dark,line){return value.replace(/\$(n_[0-9A-F]{6}|[a-zA-Z0-9]+)/g,(whole,key)=>key.startsWith("n_")?dark?line:`#${key.slice(2)}`:tokens[key]??whole)}function keyOf(selector){let depth=0,start=0;for(let i=0;i<selector.length;i+=1){let ch=selector[i];ch==="("?depth+=1:ch===")"?depth-=1:depth===0&&(ch===" "||ch===">"||ch==="+"||ch==="~")&&(start=i+1)}let last=selector.slice(start).replace(/\([^)]*\)/g,""),cls=/\.([\w-]+)/.exec(last);if(cls!==null)return`.${cls[1]}`;let tag=/^([a-z][a-z0-9]*)/i.exec(last);return tag===null?"*":tag[1].toLowerCase()}function compile(decls,tokens,dark){return decls.map(d=>[d[0],fill(d[1],tokens,dark,tokens.line??""),d[2]===1])}function buildIndex(theme){let tokens=planTokens(theme),dark=theme.brightness==="dark",index=/* @__PURE__ */new Map;PLAN_RULES.forEach(([selector,[a,b,c],decls,wide],order)=>{let key=keyOf(selector),list=index.get(key)??[];list.push({selector:selector,specificity:a*1e4+b*100+c,order:order,decls:compile(decls,tokens,dark),...wide===1?{wide:true}:{}}),index.set(key,list)});let motion=theme.motion.reducedMotion?[["transition-duration","0.01ms",true]]:[];return{index:index,context:{selector:"",specificity:-1,order:-1,decls:[...compile(PLAN_CONTEXT,tokens,dark),...motion]}}}var matches=(el,selector)=>{try{return el.matches(selector)}catch{return false}};function cascade(el,index,extra,wide){let hits=[...extra],keys=["*",el.tagName.toLowerCase(),...Array.from(el.classList,c=>`.${c}`)];for(let key of keys)for(let rule of index.get(key)??[])(wide||rule.wide!==true)&&matches(el,rule.selector)&&hits.push(rule);let entries=[];for(let rule of hits)for(let[prop,value,important]of rule.decls)entries.push({prop:prop,value:value,important:important,spec:rule.specificity,order:rule.order});entries.sort((x,y)=>Number(x.important)-Number(y.important)||x.spec-y.spec||x.order-y.order);let out=/* @__PURE__ */new Map;for(let e of entries)out.delete(e.prop),out.set(e.prop,[e.prop,e.value,e.important]);return[...out.values()]}var FIXED={selector:"",specificity:1e6,order:0,decls:[["position","fixed",true]]},NOOP=/* @__PURE__ */Object.freeze({root:()=>{},layer:()=>{}}),OBSERVED=["class","hidden","disabled","aria-checked","aria-pressed","aria-selected","aria-expanded","open","data-once"];function usePlanStyles(theme,rootStyle){let built=react.useMemo(()=>theme===null?null:buildIndex(theme),[theme]),state=react.useRef({roots:/* @__PURE__ */new Set,applied:/* @__PURE__ */new WeakMap,observer:null,rootEl:null,built:built,keep:/* @__PURE__ */new Set});state.current.built=built,state.current.keep=new Set(Object.keys(rootStyle??{}).map(k=>k.replace(/[A-Z]/g,m=>`-${m.toLowerCase()}`)));let paint=react.useCallback(root=>{let s=state.current;if(s.built===null||!root.isConnected)return;let{index:index,context:context}=s.built,fixed=root.parentElement!==null&&root.parentElement===root.ownerDocument.body&&root!==s.rootEl,tree=[root,...Array.from(root.querySelectorAll("*"))],wide=wideNow();for(let el of tree){let all=cascade(el,index,el===root?fixed?[context,FIXED]:[context]:[],wide),list=el===s.rootEl?all.filter(([p])=>!s.keep.has(p)):all,key=list.map(([p,v,i])=>`${p}:${v}${i?"!":""}`).join(";"),before=s.applied.get(el);if(before!==void 0&&before.key===key)continue;let style=el.style;if(style!==void 0){if(before!==void 0)for(let prop of before.props)style.removeProperty(prop);for(let[prop,value,important]of list)style.setProperty(prop,value,important?"important":"");s.applied.set(el,{key:key,props:list.map(([p])=>p)})}}},[]),paintAll=react.useCallback(()=>{let{roots:roots}=state.current;for(let root of[...roots])root.isConnected?paint(root):roots.delete(root)},[paint]),watch=react.useCallback(el=>{let s=state.current;s.built===null||typeof MutationObserver>"u"||(s.observer??=new MutationObserver(()=>paintAll()),s.observer.observe(el,{subtree:true,childList:true,attributes:true,attributeFilter:OBSERVED}))},[paintAll]),register=react.useCallback((el,isRoot)=>{let s=state.current;el===null||s.built===null||(isRoot&&(s.rootEl=el),s.roots.add(el),watch(el),paint(el))},[paint,watch]);react.useLayoutEffect(()=>{paintAll()},[built,paintAll]),react.useEffect(()=>()=>state.current.observer?.disconnect(),[]),react.useEffect(()=>{if(built===null||typeof window>"u"||typeof window.matchMedia!="function")return;let list=window.matchMedia(WIDE_QUERY),onChange=()=>paintAll();return list.addEventListener?.("change",onChange),()=>list.removeEventListener?.("change",onChange)},[built,paintAll]);let handles=react.useMemo(()=>({root:el=>register(el,true),layer:el=>register(el,false)}),[register]);return built===null?NOOP:handles}var ORDER_STEPS=["ordered","shipped","out_for_delivery","delivered"];function hostOrderView(o){let step=Math.max(0,ORDER_STEPS.indexOf(o.status));return{key:o.key,number:o.number??null,step:step,dates:o.dates??[],everfur:false,productId:null,items:o.items.map(x=>({title:x.title,quantity:x.quantity,price:x.price,imageUrl:x.imageUrl??null,icon:x.icon??null})),total:Math.round(o.items.reduce((n,x)=>n+x.price,0)*100)/100,currency:o.currency,subscriptionBox:o.subscriptionBox===true,carrier:o.carrier??null,trackingNumber:o.trackingNumber??null,trackingTag:o.trackingTag??null,trackingUrl:o.trackingUrl??null}}function formatShopDay(iso,locale,now=/* @__PURE__ */new Date){if(iso==null)return null;let dateOnly=/^\d{4}-\d{2}-\d{2}$/.test(iso),d=new Date(dateOnly?`${iso}T00:00:00Z`:iso);if(Number.isNaN(d.getTime()))return null;let tz=dateOnly?"UTC":void 0,year=Number(new Intl.DateTimeFormat("en-US",{year:"numeric",...tz?{timeZone:tz}:{}}).format(d));try{return new Intl.DateTimeFormat(locale??"en-US",year!==now.getFullYear()?{month:"short",day:"numeric",year:"numeric",...tz?{timeZone:tz}:{}}:{weekday:"short",month:"short",day:"numeric",...tz?{timeZone:tz}:{}}).format(d)}catch{return iso}}var img=(k,src,fallback="box")=>src?/* @__PURE__ */jsxRuntime.jsx("img",{alt:"",src:src}):k.icon(fallback);function shopSummary(k,total,opts={}){let{p:p,copy:copy}=k,renew=opts.renew??null;/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */jsxRuntime.jsxs("p",{style:styles2.label,children:[HEALTH_PLAN_TEMPLATES.cartLabel(theme.meta.displayName),cart.count>0?/* @__PURE__ */jsxRuntime.jsx("span",{style:styles2.count,"aria-hidden":"true",children:cart.count}):null]}),cart.count===0?/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.line,children:HEALTH_PLAN_COPY.cartEmpty}):subtotal===null?null:/* @__PURE__ */jsxRuntime.jsxs("p",{style:styles2.line,children:[HEALTH_PLAN_COPY.subtotal," ",subtotal]})]}),onCheckout===void 0?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",disabled:cart.count===0||busy,"aria-busy":busy?"true":void 0,onClick:()=>{trackCheckoutStarted(telemetry,petRef,cart),onCheckout(cart.items)},style:styles2.checkout,children:HEALTH_PLAN_COPY.checkout})]})}function makeStyles2(theme){let{color:color,radius:radius,space:space,type:type,slots:slots}=theme,ink=slots.cartBar?.textColor??color.text.onBrand,fill2=slots.cartBar?.backgroundColor??color.brandInk,line=size=>`${Math.round(size*type.lineHeight.snug)}px`;return{bar:{boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"space-between",gap:space.md,padding:`${space.md}px ${space.lg}px`,borderRadius:radius.lg,backgroundColor:color.brand,color:color.text.onBrand,...slotCss(slots.cartBar)},copy:{display:"flex",flexDirection:"column",gap:2,minWidth:0},label:{margin:0,display:"flex",alignItems:"center",gap:space.sm,...faceCss(theme,"bold"),fontSize:type.size.body,lineHeight:line(type.size.body),color:ink},count:{minWidth:22,height:22,padding:`0 ${space.xs}px`,boxSizing:"border-box",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:radius.pill,backgroundColor:ink,color:fill2,...faceCss(theme,"bold"),fontSize:type.size.caption},line:{margin:0,...faceCss(theme,"regular"),fontSize:type.size.caption,lineHeight:line(type.size.caption),color:ink},checkout:{minHeight:44,padding:`0 ${space.lg}px`,borderRadius:radius.pill,border:"none",backgroundColor:ink,color:fill2,cursor:"pointer",...faceCss(theme,"bold"),fontSize:type.size.body}}}function useHealthPlanSubscriptionRepository(){let{runtime:runtime}=useEverfurContext();return react.useMemo(()=>createHealthPlanSubscriptionRepository(runtime),[runtime])}function useHealthPlanSubscription(options){let{userRef:userRef}=useEverfurContext(),own=useHealthPlanSubscriptionRepository(),repository=options.repository??own,enabled=options.enabled!==false&&userRef!==null&&options.petRef!==null&&options.productId!==null,{petRef:petRef,productId:productId}=options,[phase,setPhase]=react.useState("idle"),[quote2,setQuote]=react.useState(null),[subscription,setSubscription]=react.useState(null),[busy,setBusy]=react.useState(false),[error,setError]=react.useState(null),[readyAt,setReadyAt]=react.useState(null),epoch=react.useRef(0),writes=react.useRef(0),quiet=react.useRef(0),busyRef=react.useRef(false),refreshAfterWrite=react.useRef(false),revalidateRef=react.useRef(()=>Promise.resolve()),load=react.useCallback(async()=>{let mine=++epoch.current;if(refreshAfterWrite.current=false,setReadyAt(null),!enabled||petRef===null||productId===null){setPhase("idle"),setQuote(null),setSubscription(null);return}setPhase("loading");let res=await repository.quote(petRef,productId);if(mine===epoch.current){if(!res.ok){setQuote(null),setSubscription(null),setError(res.error),setPhase(isHealthPlanSubscriptionUnavailable(res.error)?"unavailable":"failed");return}setError(null),setQuote(res.value),setSubscription(res.value.subscription),setPhase("ready"),setReadyAt(Date.now())}},[enabled,petRef,productId,repository]),ready=enabled&&phase==="ready",revalidate=react.useCallback(async()=>{if(!ready||busyRef.current||petRef===null||productId===null)return;let mine=epoch.current,wrote=writes.current,seq=++quiet.current,res=await repository.quote(petRef,productId);mine!==epoch.current||wrote!==writes.current||seq!==quiet.current||busyRef.current||!res.ok||(setQuote(res.value),setSubscription(res.value.subscription),setReadyAt(Date.now()))},[ready,petRef,productId,repository]);revalidateRef.current=revalidate;let refreshOnKey=()=>{if(!ready){load();return}if(busyRef.current){refreshAfterWrite.current=true;return}revalidate()};useHealthPlanRevalidation({lifecycle:options.lifecycle,refreshKey:options.refreshKey,readyAt:ready?readyAt:null,revalidate:()=>{revalidate()},refresh:refreshOnKey});let settleWrite=react.useCallback(()=>{refreshAfterWrite.current&&(refreshAfterWrite.current=false,revalidateRef.current())},[]);react.useEffect(()=>(load(),()=>{epoch.current+=1}),[load]);let write=react.useCallback(async run=>{let mine=epoch.current;writes.current+=1,busyRef.current=true,setBusy(true);let res=await run();return busyRef.current=false,mine!==epoch.current?res:(setBusy(false),res.ok?(setError(null),setSubscription(res.value),settleWrite(),res):(setError(res.error),isHealthPlanSubscriptionUnavailable(res.error)?setPhase("unavailable"):settleWrite(),res))},[settleWrite]),buy=react.useCallback(async tapKey=>{let mine=epoch.current;writes.current+=1,busyRef.current=true,setBusy(true);let res=await repository.buyOneBox(petRef,productId,tapKey);return busyRef.current=false,mine!==epoch.current?res:(setBusy(false),res.ok?(setError(null),load(),res):(setError(res.error),isHealthPlanSubscriptionUnavailable(res.error)?setPhase("unavailable"):settleWrite(),res))},[repository,petRef,productId,load,settleWrite]);return react.useMemo(()=>{let p=petRef,sid=subscription?.subscriptionId??"",none=()=>Promise.resolve(err(makeEverfurError("validationFailed",{retryable:false,wireMessage:"the subscription quote is not ready"})));return{phase:phase,quote:quote2,subscription:subscription,busy:busy,error:error,subscribe:n=>ready&&productId!==null?write(()=>repository.create(p,productId,n)):none(),changeInterval:n=>ready&&sid!==""?write(()=>repository.changeInterval(p,sid,n)):none(),skip:()=>ready&&sid!==""?write(()=>repository.skip(p,sid)):none(),cancel:()=>ready&&sid!==""?write(()=>repository.cancel(p,sid)):none(),restart:n=>ready&&sid!==""?write(()=>repository.restart(p,sid,n)):none(),buyOneBox:k=>ready&&productId!==null?buy(k):none(),refresh:load}},[phase,quote2,subscription,busy,error,ready,petRef,productId,repository,write,buy,load])}function toRgba(value){if(typeof value=="number")return argbIntToRgba(value);if(typeof value!="string")return null;let s=value.trim();if(s.length===0)return null;if(s.startsWith("#"))return fromHex(s.slice(1));if(s.toLowerCase().startsWith("0x"))return fromHex(s.slice(2));if(s.toLowerCase().startsWith("rgb"))return fromRgbFunc(s);if(/^[0-9a-fA-F]+$/.test(s)){let hex=fromHex(s);if(hex!==null)return hex}return/^\d+$/.test(s)?argbIntToRgba(Number.parseInt(s,10)):null}function fromHex(hex){let h=hex.trim();if(!/^[0-9a-fA-F]+$/.test(h))return null;if(h.length===3)return{r:dup(h[0]),g:dup(h[1]),b:dup(h[2]),a:1};if(h.length===6)return{r:byte(h,0),g:byte(h,2),b:byte(h,4),a:1};if(h.length===8){let a=byte(h,0);return{r:byte(h,2),g:byte(h,4),b:byte(h,6),a:a/255}}return null}function fromRgbFunc(input){let open=input.indexOf("("),close=input.indexOf(")");if(open<0||close<0||close<open)return null;let parts=input.slice(open+1,close).split(",").map(p=>p.trim());if(parts.length<3)return null;let r=clampByte(Number(parts[0])),g=clampByte(Number(parts[1])),b=clampByte(Number(parts[2]));if(r===null||g===null||b===null)return null;let a=1;if(parts.length>=4){let alpha=Number(parts[3]);if(!Number.isFinite(alpha))return null;a=Math.min(1,Math.max(0,alpha))}return{r:r,g:g,b:b,a:a}}function argbIntToRgba(n){if(!Number.isFinite(n))return null;let int2=Math.trunc(n)>>>0,a=int2>>>24&255;return{r:int2>>>16&255,g:int2>>>8&255,b:int2&255,a:a===0?1:a/255}}function byte(hex,at){return Number.parseInt(hex.slice(at,at+2),16)}function dup(nibble){return Number.parseInt(`${nibble??"0"}${nibble??"0"}`,16)}function clampByte(n){return Number.isFinite(n)?Math.min(255,Math.max(0,Math.round(n))):null}function rgbToHex(r,g,b){return`#${hex2(r)}${hex2(g)}${hex2(b)}`.toUpperCase()}function hex2(n){return n.toString(16).padStart(2,"0")}var NEAR_BLACK="#111111",WHITE="#FFFFFF",BLACK="#000000";function readableOn(background){let rgba=toRgba(background);if(rgba===null)return WHITE;let bg=relativeLuminance(rgba),black=relativeLuminance({r:17,g:17,b:17}),white=relativeLuminance({r:255,g:255,b:255});return luminanceContrast(bg,white)>=luminanceContrast(bg,black)?WHITE:NEAR_BLACK}function legibleOn(background,target){let first=readableOn(background);return contrastRatio(first,background)>=target?first:contrastRatio(WHITE,background)>=contrastRatio(BLACK,background)?WHITE:BLACK}function poleForGrounds(grounds){let worst=ink=>grounds.reduce((low,ground)=>Math.min(low,contrastRatio(ink,ground)),Number.POSITIVE_INFINITY);return worst(WHITE)>=worst(BLACK)?WHITE:BLACK}function relativeLuminance(rgba){let r=linearize(rgba.r/255),g=linearize(rgba.g/255),b=linearize(rgba.b/255);return.2126*r+.7152*g+.0722*b}function linearize(channel){return channel<=.03928?channel/12.92:Math.pow((channel+.055)/1.055,2.4)}function luminanceContrast(l1,l2){let lighter=Math.max(l1,l2),darker=Math.min(l1,l2);return(lighter+.05)/(darker+.05)}function contrastRatio(a,b){let fg=toRgba(a),bg=toRgba(b);if(fg===null||bg===null)return 1;let ground=bg.a>=1?bg:{...bg},fore=fg.a>=1?fg:composite(fg,ground);return luminanceContrast(relativeLuminance(fore),relativeLuminance(ground))}function composite(fg,bg){let a=fg.a,mix=(f,g)=>Math.round(f*a+g*(1-a));return{r:mix(fg.r,bg.r),g:mix(fg.g,bg.g),b:mix(fg.b,bg.b),a:1}}function flattenOnto(color,background){let fg=toRgba(color),bg=toRgba(background);if(fg===null||bg===null)return null;let out=fg.a>=1?fg:composite(fg,{...bg});return rgbToHex(out.r,out.g,out.b)}function withAlpha(color,alpha){let rgba=toRgba(color);if(rgba===null)return null;let a=Math.min(1,Math.max(0,alpha));return`rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${a})`}var PUSH_STEP=.05;function pushToContrast(color,grounds,pole,target){let first=grounds[0];if(first===void 0)return pole;let reads=candidate=>grounds.every(ground=>contrastRatio(candidate,ground)>=target);if(toRgba(color)===null)return pole;if(reads(color))return color;let flat=flattenOnto(color,first),from=flat===null?null:toRgba(flat),to=toRgba(pole);if(from===null||to===null)return pole;for(let step=1;step<1/PUSH_STEP;step+=1){let t=step*PUSH_STEP,mix=(a,b)=>Math.round(a+(b-a)*t),candidate=rgbToHex(mix(from.r,to.r),mix(from.g,to.g),mix(from.b,to.b));if(reads(candidate))return candidate}return pole}var RAPH_V3_LIGHT=/* @__PURE__ */Object.freeze({ink:"#262523",ink2:"#4A4845",ink3:"#6B6863",paper:"#F8F7F4",card:"#FFFFFF",line:"#E7E6E2",tile:"#F2F1EE",shadow:"rgba(38, 37, 35, .07)",riskBg:"#FFE3E1",riskInk:"#B0231B",riskDot:"#E5372B",clearBg:"#E6F4D3",clearInk:"#2F6A12",clearDot:"#5FA82B",watchDot:"#E5A000"}),cache=/* @__PURE__ */new WeakMap;function v3Palette(theme){let hit=cache.get(theme);if(hit!==void 0)return hit;let c=theme.color,dark=theme.brightness==="dark",neutrals=dark?{dark:dark,ink:c.text.primary,ink2:c.text.secondary,ink3:c.text.muted,paper:c.background,card:c.surface,line:c.borderRingCream,tile:c.surfaceSubtle,shadow:c.shadow,riskBg:c.badgeBgCritical,riskInk:c.danger,riskDot:c.danger,clearBg:c.badgeBgPositive,clearInk:c.success,clearDot:c.success,watchDot:c.warningStrong}:{dark:dark,...RAPH_V3_LIGHT},textOn=(ink,grounds)=>pushToContrast(ink,grounds,poleForGrounds(grounds),V3_TEXT_CONTRAST),labelOn=(ink,fill2)=>contrastRatio(ink,fill2)>=V3_TEXT_CONTRAST?ink:legibleOn(fill2,V3_TEXT_CONTRAST),badgeGrounds=[neutrals.card,neutrals.paper].map(under=>flattenOnto(c.brandSoft,under)??under),brand={primary:c.primary,onPrimary:labelOn(c.onPrimary,c.primary),accent:c.accent,onAccent:labelOn(c.onAccent,c.accent),link:textOn(c.linkInk,[neutrals.card,neutrals.paper,neutrals.tile]),badge:c.brandSoft,onBadge:textOn(c.brandInk,badgeGrounds)},palette=/* @__PURE__ */Object.freeze({...neutrals,...brand});return cache.set(theme,palette),palette}var V3_TEXT_CONTRAST=4.5;var PLAN_CLASS_PREFIX="efp-",PLAN_CONTEXT=[["font-family","$sans"],["color","$ink"],["font-size","17px"],["line-height","1.5"]],PLAN_RULES=[["h1",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],["h2",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],["h3",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],["h4",[0,0,1],[["color","$n_10462E"],["line-height","1.15"],["font-weight","700"]]],[".efp-ph-sheet > h3.efp-serif",[0,2,1],[["font-size","24px"]]],["*",[0,0,0],[["box-sizing","border-box"]]],["* > .efp-before",[0,1,0],[["box-sizing","border-box"]]],["[hidden]",[0,1,0],[["display","none",1]]],["h1",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["h2",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["h3",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["h4",[0,0,1],[["color","inherit"],["margin","0"],["font-weight","700"],["line-height","1.15"]]],["p",[0,0,1],[["margin","0"]]],["ul",[0,0,1],[["margin","0"]]],["ol",[0,0,1],[["margin","0"]]],["button",[0,0,1],[["font","inherit"],["color","inherit"]]],["input",[0,0,1],[["font","inherit"],["color","inherit"]]],["textarea",[0,0,1],[["font","inherit"],["color","inherit"]]],["button",[0,0,1],[["background","none"],["border","0"],["padding","0"],["cursor","pointer"],["text-align","inherit"],["-webkit-tap-highlight-color","transparent"],["touch-action","manipulation"]]],["img",[0,0,1],[["display","block"]]],["svg",[0,0,1],[["display","block"]]],["a",[0,0,1],[["color","inherit"]]],[".efp-sr-only",[0,1,0],[["position","absolute"],["width","1px"],["height","1px"],["overflow","hidden"],["clip","rect(0 0 0 0)"],["white-space","nowrap"]]],[".efp-serif",[0,1,0],[["font-family","$serif"],["font-weight","800"],["font-variation-settings",'"SOFT" 0, "WONK" 0'],["letter-spacing","-0.01em"],["text-wrap","balance"]]],[".efp-emb-btn",[0,1,0],[["display","inline-flex"],["align-items","center"],["justify-content","center"],["gap","8px"],["min-height","48px"],["padding","0 22px"],["border-radius","999px"],["background","$primary"],["color","$onPrimary"],["font-weight","700"],["font-size","16px"],["text-decoration","none"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1), opacity 160ms ease"]]],[".efp-emb-btn svg",[0,1,1],[["width","20px"],["height","20px"]]],[".efp-emb-btn--block",[0,1,0],[["width","100%"]]],[".efp-emb-btn--ghost",[0,1,0],[["background","transparent"],["color","$ink"],["box-shadow","inset 0 0 0 1.5px $ink"]]],[".efp-emb-btn--sm",[0,1,0],[["min-height","40px"],["padding","0 16px"],["font-size","15px"]]],[".efp-emb-btn--lg",[0,1,0],[["min-height","56px"],["padding","0 28px"],["font-size","17px"]]],[".efp-emb-btn[disabled]",[0,2,0],[["opacity",".32"],["pointer-events","none"]]],[".efp-dot",[0,1,0],[["display","inline-block"],["width","9px"],["height","9px"],["border-radius","50%"],["flex","none"]]],[".efp-dot--risk",[0,1,0],[["background","$riskDot"]]],[".efp-ph-scroll",[0,1,0],[["flex","1"],["min-height","0"],["overflow-y","auto"],["overscroll-behavior","contain"],["scrollbar-width","none"]]],[".efp-emb-tile",[0,1,0],[["width","46px"],["height","46px"],["border-radius","13px"],["background","$tile"],["display","grid"],["place-items","center"],["flex","none"],["font-size","22px"]]],[".efp-emb-tile svg",[0,1,1],[["width","23px"],["height","23px"]]],[".efp-emb-tile--cyan",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-ph-push",[0,1,0],[["position","absolute"],["inset","0"],["display","flex"],["flex-direction","column"],["background","$paper"],["pointer-events","auto"],["transform","translateX(100%)"],["visibility","hidden"],["transition","transform 220ms cubic-bezier(0.23, 1, 0.32, 1), visibility 0s linear 220ms"]]],[".efp-ph-push.efp-is-on",[0,2,0],[["transform","none"],["visibility","visible"],["transition","transform 300ms cubic-bezier(0.32, 0.72, 0, 1), visibility 0s"]]],[".efp-bk__radio",[0,1,0],[["width","22px"],["height","22px"],["border-radius","50%"],["box-shadow","inset 0 0 0 2px $n_BDB9B2"],["display","grid"],["place-items","center"]]],[".efp-bk__foot",[0,1,0],[["flex","none"],["padding","12px 18px 34px"],["background","$paper"],["box-shadow","0 -1px 0 $line"]]],[".efp-bk__done",[0,1,0],[["padding","40px 22px 20px"],["text-align","center"]]],[".efp-bk__check",[0,1,0],[["width","76px"],["height","76px"],["border-radius","50%"],["background","$accent"],["display","grid"],["place-items","center"],["margin","0 auto"]]],[".efp-bk__check svg",[0,1,1],[["width","38px"],["height","38px"]]],[".efp-bk__done .efp-bk__title",[0,2,0],[["margin-top","20px"],["font-size","34px"]]],[".efp-bk__when",[0,1,0],[["font-size","16px"],["margin-top","10px"],["font-weight","700"]]],[".efp-bk__who",[0,1,0],[["font-size","15px"],["color","$ink2"],["margin-top","2px"]]],[".efp-ph-scrim",[0,1,0],[["position","absolute"],["inset","0"],["z-index","40"],["background","$scrim"],["opacity","0"],["visibility","hidden"],["transition","opacity 200ms ease, visibility 0s linear 200ms"]]],[".efp-ph-scrim.efp-is-on",[0,2,0],[["opacity","1"],["visibility","visible"],["transition","opacity 240ms ease, visibility 0s"]]],[".efp-ph-sheet",[0,1,0],[["overscroll-behavior","contain"],["position","absolute"],["left","0"],["right","0"],["bottom","0"],["z-index","41"],["max-height","80%"],["overflow-y","auto"],["scrollbar-width","none"],["background","$card"],["border-radius","28px 28px 0 0"],["padding","10px 20px 40px"],["transform","translateY(100%)"],["visibility","hidden"],["transition","transform 220ms cubic-bezier(0.23, 1, 0.32, 1), visibility 0s linear 220ms"]]],[".efp-ph-sheet.efp-is-on",[0,2,0],[["transform","none"],["visibility","visible"],["transition","transform 320ms cubic-bezier(0.32, 0.72, 0, 1), visibility 0s"]]],[".efp-sheet__grab",[0,1,0],[["width","40px"],["height","5px"],["border-radius","3px"],["background","$n_DAD7D1"],["margin","0 auto 10px"]]],[".efp-sheet__top",[0,1,0],[["display","flex"],["align-items","center"],["justify-content","space-between"]]],[".efp-sheet__kicker",[0,1,0],[["font-family","$mono"],["font-size","11px"],["letter-spacing",".08em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-sheet__x",[0,1,0],[["width","40px"],["height","40px"],["margin-right","-8px"],["display","grid"],["place-items","center"],["border-radius","50%"]]],[".efp-sheet__x svg",[0,1,1],[["width","22px"],["height","22px"]]],[".efp-ph-sheet .efp-sheet__body",[0,2,0],[["display","grid"],["gap","10px"],["margin-top","12px"],["font-size","16px"],["line-height","1.5"],["color","$black"]]],[".efp-ph-toast",[0,1,0],[["position","absolute"],["left","16px"],["right","16px"],["top","112px"],["z-index","50"],["background","$ink"],["color","$onInk"],["border-radius","16px"],["padding","12px 15px"],["font-size","14.5px"],["line-height","1.4"],["opacity","0"],["transform","translateY(-8px)"],["pointer-events","none"],["transition","opacity 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-ph-toast.efp-is-on",[0,2,0],[["opacity","1"],["transform","none"],["transition-duration","220ms"]]],[".efp-plan__fine",[0,1,0],[["font-size","12.5px"],["color","$ink3"],["text-align","center"],["margin-top","16px"],["line-height","1.45"]]],[".efp-cp-tag",[0,1,0],[["font-family","$mono"],["font-size","10px"],["letter-spacing",".06em"],["text-transform","uppercase"],["background","$ink"],["color","$onInk"],["padding","2px 6px"],["border-radius","5px"]]],[".efp-cp-tag--s",[0,1,0],[["background","$card"],["color","$ink"]]],[".efp-hp",[0,1,0],[["padding","16px 16px 28px"]]],[".efp-hp-head",[0,1,0],[["display","grid"],["grid-template-columns","minmax(0, 1fr) 56px"],["gap","12px"],["align-items","center"],["padding","2px 2px 0"]]],[".efp-hp-head h2",[0,1,1],[["font-size","29px"],["line-height","1.06"]]],[".efp-hp-head p",[0,1,1],[["font-size","15px"],["color","$ink2"],["margin-top","6px"]]],[".efp-hp-head img",[0,1,1],[["width","56px"],["height","56px"],["border-radius","50%"],["object-fit","cover"],["background","$tile"],["box-shadow","0 0 0 3px $paper, 0 0 0 5.5px $accent"]]],[".efp-hp-need",[0,1,0],[["margin-top","14px"],["padding","16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"],["scroll-margin-top","12px"]]],[".efp-hp-need__k",[0,1,0],[["display","flex"],["align-items","center"],["gap","8px"],["font-size","15px"],["font-weight","800"]]],[".efp-hp-n",[0,1,0],[["flex","none"],["width","24px"],["height","24px"],["border-radius","50%"],["background","$primary"],["color","$onPrimary"],["display","grid"],["place-items","center"],["font-size","12.5px"],["font-weight","800"]]],[".efp-hp-srcs",[0,1,0],[["margin-left","auto"],["display","flex"],["gap","4px"]]],[".efp-hp-src",[0,1,0],[["height","24px"],["padding","0 9px"],["border-radius","999px"],["background","$tile"],["color","$ink2"],["font-size","12px"],["font-weight","700"],["display","inline-flex"],["align-items","center"],["white-space","nowrap"]]],[".efp-hp-src--dna",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-hp-need h3",[0,1,1],[["font-size","19px"],["font-weight","800"],["line-height","1.22"],["margin-top","12px"]]],[".efp-hp-need__s",[0,1,0],[["display","grid"],["grid-template-columns","9px minmax(0, 1fr)"],["gap","9px"],["align-items","baseline"],["margin-top","6px"],["font-size","15px"],["line-height","1.45"],["color","$ink2"]]],[".efp-hp-need__s b",[0,1,1],[["color","$ink"],["font-weight","800"]]],[".efp-hp-need__s .efp-dot",[0,2,0],[["transform","translateY(-1px)"]]],[".efp-hp-odds",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["margin-top","12px"],["padding","10px 14px"],["border-radius","14px"],["background","$accent4"]]],[".efp-hp-odds__k",[0,1,0],[["font-size","13.5px"],["font-weight","600"],["line-height","1.35"],["color","$ink2"],["max-width","10em"]]],[".efp-hp-odds__k .efp-cp-tag",[0,2,0],[["display","inline-block"],["margin-top","3px"]]],[".efp-hp-odds__n",[0,1,0],[["display","grid"],["grid-template-columns","auto auto auto"],["align-items","center"],["justify-items","end"],["gap","0 6px"]]],[".efp-hp-odds__n s",[0,1,1],[["font-size","17px"],["font-weight","700"],["color","$ink3"]]],[".efp-hp-odds__n svg",[0,1,1],[["width","16px"],["height","16px"],["color","$ink3"]]],[".efp-hp-odds__n b",[0,1,1],[["font-family","$serif"],["font-size","28px"],["font-weight","800"],["line-height","1"]]],[".efp-hp-odds__n span",[0,1,1],[["grid-column","1 / -1"],["font-size","12.5px"],["font-weight","700"],["color","$link"],["margin-top","3px"]]],[".efp-hp-pick",[0,1,0],[["margin-top","12px"],["padding","12px"],["border-radius","16px"],["background","$paper"]]],[".efp-hp-pick__top",[0,1,0],[["display","grid"],["grid-template-columns","64px minmax(0, 1fr)"],["gap","12px"],["align-items","center"]]],[".efp-hp-pick__img",[0,1,0],[["width","64px"],["height","64px"],["border-radius","14px"],["background","$card"],["overflow","hidden"]]],[".efp-hp-pick__img img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-hp-pick h4",[0,1,1],[["font-size","17px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-stars",[0,1,0],[["display","flex"],["align-items","center"],["gap","4px"],["margin-top","2px"],["font-size","13.5px"],["font-weight","800"]]],[".efp-hp-stars svg",[0,1,1],[["width","14px"],["height","14px"],["color","$watchDot"]]],[".efp-hp-stars span",[0,1,1],[["font-weight","500"],["color","$ink3"]]],[".efp-hp-pick__line",[0,1,0],[["margin-top","3px"],["font-size","14px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-buy",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["margin-top","12px"]]],[".efp-hp-price",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["align-items","baseline"],["gap","0 8px"],["min-width","0"]]],[".efp-hp-price b",[0,1,1],[["font-size","24px"],["font-weight","800"],["line-height","1.1"],["font-variant-numeric","tabular-nums"]]],[".efp-hp-price s",[0,1,1],[["font-size","15px"],["font-weight","700"],["color","$riskInk"],["text-decoration-thickness","2px"]]],[".efp-hp-price small",[0,1,1],[["flex-basis","100%"],["margin-top","3px"],["font-size","12.5px"],["line-height","1.35"],["color","$ink3"]]],[".efp-hp-buy .efp-emb-btn",[0,2,0],[["flex","none"],["min-height","46px"],["padding","0 20px"]]],[".efp-hp-more",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["gap","0 18px"],["margin-top","8px"]]],[".efp-hp-more button",[0,1,1],[["min-height","34px"],["font-size","14px"],["font-weight","700"],["color","$link"],["text-decoration","underline"],["text-decoration-thickness","1.5px"],["text-underline-offset","3px"]]],[".efp-hp-need > .efp-hp-more",[0,2,0],[["margin-top","10px"]]],[".efp-hp-on",[0,1,0],[["display","grid"],["grid-template-columns","34px minmax(0, 1fr) auto"],["gap","10px"],["align-items","center"],["margin-top","12px"],["padding","10px 10px 10px 12px"],["border-radius","14px"],["background","$clearBg"]]],[".efp-hp-on__ic",[0,1,0],[["width","34px"],["height","34px"],["border-radius","50%"],["background","$clearDot"],["color","$card"],["display","grid"],["place-items","center"]]],[".efp-hp-on__ic svg",[0,1,1],[["width","18px"],["height","18px"]]],[".efp-hp-on strong",[0,1,1],[["display","block"],["font-size","15px"],["color","$clearInk"],["line-height","1.25"]]],[".efp-hp-on small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","13px"],["line-height","1.35"],["color","$ink2"]]],[".efp-hp-on button",[0,1,1],[["min-height","38px"],["padding","0 14px"],["border-radius","999px"],["background","$card"],["font-size","14px"],["font-weight","800"],["box-shadow","inset 0 0 0 1.5px $ink"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-is-on > .efp-hp-buy",[0,2,0],[["display","none"]]],[".efp-is-on [data-once]",[0,2,0],[["display","none"]]],[".efp-hp-by",[0,1,0],[["display","grid"],["grid-template-columns","40px minmax(0, 1fr)"],["gap","10px"],["align-items","center"],["margin-top","14px"],["padding","0 2px"]]],[".efp-hp-by img",[0,1,1],[["width","40px"],["height","40px"],["border-radius","50%"],["object-fit","cover"],["background","$tile"]]],[".efp-hp-by strong",[0,1,1],[["display","block"],["font-size","15px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-by small",[0,1,1],[["display","block"],["margin-top","2px"],["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".05em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-hp-steps",[0,1,0],[["margin-top","14px"],["padding","16px 12px 12px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-steps__head",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","baseline"],["gap","12px"],["padding","0 4px"]]],[".efp-hp-steps__head h3",[0,1,1],[["font-size","19px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-steps__head p",[0,1,1],[["font-family","$mono"],["font-size","11px"],["letter-spacing",".05em"],["text-transform","uppercase"],["color","$ink3"],["white-space","nowrap"]]],[".efp-hp-list",[0,1,0],[["list-style","none"],["margin","6px 0 0"],["padding","0"],["display","grid"],["gap","2px"]]],[".efp-hp-swipe",[0,1,0],[["display","flex"],["gap","10px"],["overflow-x","auto"],["scroll-snap-type","x mandatory"],["overscroll-behavior-x","contain"],["scrollbar-width","none"],["-webkit-overflow-scrolling","touch"]]],[".efp-hp-swipe > *",[0,1,0],[["flex","0 0 78%"],["max-width","280px"],["scroll-snap-align","start"]]],[".efp-hp-steps .efp-hp-swipe",[0,2,0],[["margin","10px -12px 0"],["padding","0 12px 2px"],["scroll-padding-inline","12px"]]],[".efp-hp-tip",[0,1,0],[["display","flex"],["flex-direction","column"],["padding","14px 14px 12px"],["border-radius","18px"]]],[".efp-hp-tip--y",[0,1,0],[["background","$accentChip"]]],[".efp-hp-tip--c",[0,1,0],[["background","$linkChip"]]],[".efp-hp-tip--g",[0,1,0],[["background","$clearChip"]]],[".efp-hp-tip--r",[0,1,0],[["background","$riskChip"]]],[".efp-hp-tip__top",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"]]],[".efp-hp-tip__top svg",[0,1,1],[["width","26px"],["height","26px"],["color","$ink"]]],[".efp-hp-tip__n",[0,1,0],[["font-family","$serif"],["font-size","30px"],["font-weight","900"],["line-height","1"]]],[".efp-hp-tip strong",[0,1,1],[["display","block"],["margin-top","14px"],["font-size","17px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-tip small",[0,1,1],[["display","block"],["margin-top","4px"],["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-tip em",[0,1,1],[["display","block"],["margin-top","auto"],["padding-top","10px"],["font-style","normal"],["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".04em"],["text-transform","uppercase"],["color","$link"]]],[".efp-hp-eyebrow",[0,1,0],[["font-family","$mono"],["font-size","11px"],["letter-spacing",".07em"],["text-transform","uppercase"],["color","$ink3"],["margin-bottom","6px"]]],[".efp-hp-head .efp-hp-eyebrow + h2",[0,2,1],[["margin-top","0"]]],[".efp-hp-by",[0,1,0],[["grid-template-columns","40px minmax(0, 1fr) 22px"],["margin-top","14px"],["padding","10px 12px"],["border-radius","16px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-by__ok",[0,1,0],[["width","22px"],["height","22px"],["color","$link"]]],[".efp-hp-says",[0,1,0],[["display","grid"],["grid-template-columns","32px minmax(0, 1fr)"],["gap","10px"],["align-items","start"],["margin","12px 0 0"],["padding","10px 12px"],["border-radius","14px"],["background","$paper"]]],[".efp-hp-says img",[0,1,1],[["width","32px"],["height","32px"],["border-radius","50%"],["object-fit","cover"]]],[".efp-hp-says p",[0,1,1],[["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-says b",[0,1,1],[["color","$ink"],["font-weight","800"],["margin-right","2px"]]],[".efp-hp-jump",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","44px minmax(0, 1fr) auto"],["gap","12px"],["align-items","center"],["margin-top","12px"],["padding","8px 14px 8px 8px"],["border-radius","14px"],["background","$primary"],["color","$onPrimary"],["text-align","left"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-hp-jump img",[0,1,1],[["width","44px"],["height","44px"],["border-radius","10px"],["object-fit","cover"],["background","$card"]]],[".efp-hp-jump small",[0,1,1],[["display","block"],["font-size","13px"],["font-weight","800"],["color","$accent"]]],[".efp-hp-jump strong",[0,1,1],[["display","block"],["font-size","15px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-jump__go",[0,1,0],[["font-size","14px"],["font-weight","800"]]],[".efp-hp-n",[0,1,0],[["flex","none"]]],[".efp-hp-steps__head h3",[0,1,1],[["display","flex"],["align-items","center"],["gap","10px"],["font-size","19px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-sec__h",[0,1,0],[["display","flex"],["align-items","center"],["gap","10px"],["font-size","19px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-sec",[0,1,0],[["margin-top","14px"],["padding","16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"],["scroll-margin-top","12px"]]],[".efp-hp-sec .efp-hp-pick",[0,2,0],[["margin-top","14px"],["padding","0"],["background","none"]]],[".efp-hp-sec .efp-hp-pick__top",[0,2,0],[["grid-template-columns","76px minmax(0, 1fr)"]]],[".efp-hp-sec .efp-hp-pick__img",[0,2,0],[["width","76px"],["height","76px"],["background","$paper"]]],[".efp-hp-mini",[0,1,0],[["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".06em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-hp-why",[0,1,0],[["margin-top","14px"],["padding","12px 14px"],["border-radius","16px"],["box-shadow","inset 0 0 0 1.5px $ink"]]],[".efp-hp-why ul",[0,1,1],[["list-style","none"],["margin","0"],["padding","0"]]],[".efp-hp-dose ul",[0,1,1],[["list-style","none"],["margin","0"],["padding","0"]]],[".efp-hp-why li",[0,1,1],[["display","grid"],["grid-template-columns","58px minmax(0, 1fr)"],["gap","10px"],["align-items","start"],["margin-top","10px"]]],[".efp-hp-why strong",[0,1,1],[["display","block"],["font-size","15px"],["font-weight","800"],["line-height","1.3"]]],[".efp-hp-why small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","14px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-chip",[0,1,0],[["height","22px"],["border-radius","6px"],["display","grid"],["place-items","center"],["font-family","$mono"],["font-size","10.5px"],["font-weight","700"],["letter-spacing",".04em"],["text-transform","uppercase"]]],[".efp-hp-chip--dna",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-hp-chip--ask",[0,1,0],[["background","$accent4"],["color","$ink"]]],[".efp-hp-chip--rec",[0,1,0],[["background","$tile"],["color","$ink2"]]],[".efp-hp-dose",[0,1,0],[["margin-top","10px"],["padding","12px 14px 14px"],["border-radius","16px"],["background","$linkWash"]]],[".efp-hp-dose .efp-hp-mini",[0,2,0],[["color","$link"]]],[".efp-hp-dose ul",[0,1,1],[["display","grid"],["grid-template-columns","repeat(3, minmax(0, 1fr))"],["gap","8px"],["margin-top","10px"]]],[".efp-hp-dose li",[0,1,1],[["display","grid"],["justify-items","center"],["gap","2px"],["padding","10px 4px"],["border-radius","12px"],["background","$card"],["text-align","center"]]],[".efp-hp-dose b",[0,1,1],[["font-family","$mono"],["font-size","21px"],["font-weight","700"],["line-height","1.1"],["font-variant-numeric","tabular-nums"]]],[".efp-hp-dose small",[0,1,1],[["font-size","12.5px"],["line-height","1.3"],["color","$ink2"]]],[".efp-hp-dose > p:last-child",[0,2,1],[["margin-top","10px"],["font-size","14px"],["line-height","1.45"],["color","$link"]]],[".efp-hp-in",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["gap","6px"],["margin-top","12px"]]],[".efp-hp-in span",[0,1,1],[["padding","6px 10px"],["border-radius","999px"],["background","$tile"],["font-size","13.5px"],["font-weight","600"]]],[".efp-hp-opts",[0,1,0],[["display","grid"],["gap","8px"],["margin-top","14px"]]],[".efp-hp-opt",[0,1,0],[["width","100%"],["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["padding","14px"],["border-radius","16px"],["background","$card"],["text-align","left"],["box-shadow","inset 0 0 0 1.5px $n_DEDCD7"],["transition","box-shadow 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],['.efp-hp-opt[aria-checked="true"]',[0,2,0],[["box-shadow","inset 0 0 0 2.5px $ink"]]],[".efp-hp-opt__t",[0,1,0],[["display","grid"],["justify-items","start"],["gap","2px"]]],[".efp-hp-opt__t strong",[0,1,1],[["font-size","16px"],["font-weight","800"]]],[".efp-hp-opt__t small",[0,1,1],[["font-size","13.5px"],["color","$ink2"]]],[".efp-hp-opt__tag",[0,1,0],[["margin-bottom","4px"],["padding","2px 8px"],["border-radius","6px"],["background","$riskInk"],["color","$card"],["font-size","12px"],["font-weight","800"]]],[".efp-hp-opt__p",[0,1,0],[["font-size","18px"],["font-weight","800"]]],[".efp-hp-opt .efp-hp-price",[0,2,0],[["display","flex"],["flex-direction","column"],["align-items","flex-end"],["flex-wrap","nowrap"]]],[".efp-hp-opt .efp-hp-price s",[0,2,1],[["order","-1"]]],[".efp-hp-opt .efp-hp-price small",[0,2,1],[["display","none"]]],[".efp-hp-sec .efp-hp-buy",[0,2,0],[["display","block"],["margin-top","12px"]]],[".efp-hp-sec .efp-hp-buy .efp-emb-btn",[0,3,0],[["width","100%"],["min-height","52px"],["font-size","17px"]]],[".efp-hp-trust",[0,1,0],[["list-style","none"],["margin","12px 0 0"],["padding","0"],["display","grid"],["grid-template-columns","repeat(3, minmax(0, 1fr))"],["gap","6px"]]],[".efp-hp-trust li",[0,1,1],[["display","grid"],["justify-items","center"],["gap","4px"],["font-size","12.5px"],["font-weight","600"],["line-height","1.3"],["text-align","center"],["color","$ink2"]]],[".efp-hp-trust svg",[0,1,1],[["width","20px"],["height","20px"],["color","$link"]]],[".efp-is-on > .efp-hp-opts",[0,2,0],[["display","none"]]],[".efp-is-on > .efp-hp-trust",[0,2,0],[["display","none"]]],[".efp-hp-fine",[0,1,0],[["margin-top","8px"],["font-size","13px"],["line-height","1.45"],["color","$ink3"]]],[".efp-hp-sign",[0,1,0],[["margin-top","12px"],["padding","14px"],["border-radius","16px"],["box-shadow","inset 0 0 0 1.5px $n_DEDCD7"]]],[".efp-hp-sign h4",[0,1,1],[["display","flex"],["align-items","center"],["gap","8px"],["font-size","16px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-sign p",[0,1,1],[["margin-top","4px"],["font-size","15px"],["line-height","1.45"],["color","$ink2"]]],[".efp-hp-sign--er",[0,1,0],[["background","$riskBg"],["box-shadow","none"]]],[".efp-hp-sign--er h4",[0,1,1],[["color","$riskInk"]]],[".efp-hp-sign--er h4 svg",[0,1,2],[["width","20px"],["height","20px"]]],[".efp-hp-sign--er p",[0,1,1],[["color","$ink"]]],[".efp-hp-qs",[0,1,0],[["margin","10px 0 0"],["padding-left","22px"],["display","grid"],["gap","6px"],["font-size","15px"],["line-height","1.45"]]],[".efp-hp-sec .efp-hp-add",[0,2,0],[["display","flex"],["align-items","center"],["justify-content","center"],["width","100%"],["padding","0 16px"],["min-height","48px"],["margin-top","14px"],["border-radius","999px"],["font-size","16px"],["font-weight","800"],["box-shadow","inset 0 0 0 2px $ink"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1), background-color 180ms ease"]]],['.efp-hp-sec .efp-hp-add[aria-pressed="true"]',[0,3,0],[["background","$clearBg"],["color","$clearInk"],["box-shadow","none"]]],[".efp-hp-revs",[0,1,0],[["margin","12px -16px 0"],["padding","0 16px"],["scroll-padding-inline","16px"]]],[".efp-hp-rev",[0,1,0],[["margin","0"],["padding","12px 14px"],["border-radius","14px"],["background","$paper"]]],[".efp-hp-rev__s",[0,1,0],[["display","flex"],["gap","1px"],["color","$watchDot"]]],[".efp-hp-rev__s svg",[0,1,1],[["width","13px"],["height","13px"]]],[".efp-hp-rev blockquote",[0,1,1],[["margin","5px 0 0"],["font-size","15px"],["line-height","1.4"]]],[".efp-hp-rev figcaption",[0,1,1],[["margin-top","4px"],["font-size","13px"],["color","$ink3"]]],[".efp-hp-score",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","8px"],["margin-top","12px"],["padding","11px 12px 11px 14px"],["border-radius","12px"],["background","$primary"],["color","$onPrimary"],["font-size","14.5px"],["font-weight","800"],["line-height","1.3"]]],[".efp-hp-score b",[0,1,1],[["flex","none"],["font-family","$mono"],["font-size","16px"],["font-weight","700"],["color","$accent"]]],[".efp-hp-opt--once",[0,1,0],[["padding","10px 14px"],["background","$paper"],["box-shadow","none"]]],[".efp-hp-opt--once .efp-hp-opt__t strong",[0,2,1],[["font-size","15px"],["font-weight","700"]]],[".efp-hp-opt--once .efp-hp-opt__t small",[0,2,1],[["font-size","13px"]]],[".efp-hp-opt--once .efp-hp-opt__p",[0,2,0],[["font-size","15px"],["font-weight","700"],["color","$ink2"]]],['.efp-hp-opt--once[aria-checked="true"]',[0,2,0],[["background","$card"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-hp-proof",[0,1,0],[["display","flex"],["justify-content","center"],["align-items","center"],["gap","6px"],["margin-top","10px"],["font-size","14.5px"],["font-weight","800"],["color","$riskInk"]]],[".efp-hp-proof svg",[0,1,1],[["width","21px"],["height","21px"],["flex","none"],["margin-top","-2px"]]],[".efp-is-on > .efp-hp-proof",[0,2,0],[["display","none"]]],[".efp-hp-qs__k",[0,1,0],[["margin-top","18px"],["font-size","16px"],["font-weight","800"],["line-height","1.25"]]],[".efp-hp-qs__k + .efp-hp-qs",[0,2,0],[["margin-top","6px"]]],[".efp-hp-xs",[0,1,0],[["margin-top","22px"],["display","grid"],["gap","10px"]]],[".efp-hp-xs .efp-hp-eyebrow",[0,2,0],[["margin","0 4px"],["font-weight","400"]]],[".efp-hp-x",[0,1,0],[["display","grid"],["grid-template-columns","56px minmax(0, 1fr)"],["gap","4px 12px"],["align-items","start"],["padding","14px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-x > img",[0,1,1],[["width","56px"],["height","56px"],["border-radius","14px"],["object-fit","cover"],["background","$card"]]],[".efp-hp-x__ic",[0,1,0],[["width","56px"],["height","56px"],["border-radius","14px"],["object-fit","cover"],["background","$card"]]],[".efp-hp-x__ic",[0,1,0],[["display","grid"],["place-items","center"],["background","$linkWash"],["color","$link"]]],[".efp-hp-x__ic svg",[0,1,1],[["width","26px"],["height","26px"]]],[".efp-hp-x h4",[0,1,1],[["font-size","17px"],["font-weight","800"],["line-height","1.2"]]],[".efp-hp-x h4.efp-serif",[0,2,1],[["font-size","21px"]]],[".efp-hp-x p",[0,1,1],[["margin-top","3px"],["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-x .efp-hp-x__p",[0,2,0],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","0 8px"],["margin-top","6px"],["color","$ink"]]],[".efp-hp-x__p b",[0,1,1],[["font-size","19px"],["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-hp-x__p s",[0,1,1],[["font-size","14px"],["font-weight","700"],["color","$ink3"]]],[".efp-hp-x__go",[0,1,0],[["grid-column","2"],["justify-self","start"],["margin-top","8px"],["min-height","40px"],["padding","0 18px"],["border-radius","999px"],["background","$primary"],["color","$onPrimary"],["font-size","14.5px"],["font-weight","800"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1), background-color 180ms ease"]]],['.efp-hp-x__go[aria-pressed="true"]',[0,2,0],[["background","$clearBg"],["color","$clearInk"]]],[".efp-hp-x--kit",[0,1,0],[["background","$linkWash"],["box-shadow","none"]]],[".efp-hp-x--kit > img",[0,1,1],[["background","$card"]]],[".efp-hp-next",[0,1,0],[["list-style","none"],["margin","22px 0 0"],["padding","4px 16px"],["border-radius","18px"],["background","$card"],["text-align","left"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-next li",[0,1,1],[["display","grid"],["grid-template-columns","36px minmax(0, 1fr)"],["gap","12px"],["align-items","center"],["padding","10px 0"]]],[".efp-hp-next__ic",[0,1,0],[["width","36px"],["height","36px"],["border-radius","11px"],["background","$linkWash"],["color","$link"],["display","grid"],["place-items","center"]]],[".efp-hp-next__ic svg",[0,1,1],[["width","19px"],["height","19px"]]],[".efp-hp-next small",[0,1,1],[["display","block"],["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".05em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-hp-next span",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","15px"],["font-weight","600"],["line-height","1.35"]]],[".efp-co",[0,1,0],[["display","grid"],["gap","10px"],["margin-top","2px"]]],[".efp-co-prod",[0,1,0],[["display","grid"],["grid-template-columns","56px minmax(0, 1fr)"],["gap","12px"],["align-items","center"]]],[".efp-co-prod__img",[0,1,0],[["width","56px"],["height","56px"],["border-radius","14px"],["background","$accent3"],["color","$ink"],["overflow","hidden"],["display","grid"],["place-items","center"]]],[".efp-co-prod__img img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-co-prod__img svg",[0,1,1],[["width","30px"],["height","30px"]]],[".efp-co-prod p",[0,1,1],[["margin-top","2px"],["font-size","14px"],["line-height","1.35"],["color","$ink2"]]],[".efp-co-prod__t",[0,1,0],[["font-size","20px"],["font-weight","800"],["line-height","1.2"],["color","$ink"]]],[".efp-co-prod .efp-co-prod__t",[0,2,0],[["margin-top","0"]]],[".efp-co-opts",[0,1,0],[["display","grid"],["gap","8px"]]],[".efp-co-opt",[0,1,0],[["border-radius","16px"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"],["transition","box-shadow 160ms ease, background-color 160ms ease"]]],[".efp-co-opt.efp-is-on",[0,2,0],[["background","$accent4"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-co-opt.efp-is-on .efp-bk__radio",[0,3,0],[["box-shadow","inset 0 0 0 7px $ink"]]],[".efp-co-opt__hit",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","22px minmax(0, 1fr) auto"],["gap","2px 12px"],["align-items","start"],["padding","12px 14px"],["border-radius","16px"],["text-align","left"]]],[".efp-co-opt__hit strong",[0,1,1],[["font-size","16px"],["line-height","1.35"]]],[".efp-co-opt__p",[0,1,0],[["text-align","right"],["font-size","16px"],["font-weight","800"],["line-height","1.35"],["font-variant-numeric","tabular-nums"]]],[".efp-co-opt__p s",[0,1,1],[["display","block"],["font-size","13px"],["font-weight","600"],["color","$riskInk"]]],[".efp-co-opt__hit small",[0,1,1],[["grid-column","2 / -1"],["font-size","13px"],["line-height","1.4"],["color","$ink2"]]],[".efp-co-k",[0,1,0],[["font-family","$mono"],["font-size","10.5px"],["letter-spacing",".06em"],["text-transform","uppercase"],["color","$ink3"],["margin-bottom","6px"]]],[".efp-co-every",[0,1,0],[["display","grid"],["grid-template-columns","repeat(3, minmax(0, 1fr))"],["gap","4px"],["padding","4px"],["border-radius","999px"],["background","$card"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"]]],[".efp-co-when",[0,1,0],[["padding","0 14px 12px 48px"]]],[".efp-co-every button",[0,1,1],[["min-height","36px"],["padding","0 6px"],["border-radius","999px"],["font-size","14px"],["font-weight","700"],["text-align","center"],["white-space","nowrap"],["transition","background-color 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],['.efp-co-every button[aria-checked="true"]',[0,2,1],[["background","$primary"],["color","$onPrimary"]]],[".efp-co-rows",[0,1,0],[["list-style","none"],["margin","0"],["padding","2px 14px"],["border-radius","16px"],["background","$paper"]]],[".efp-co-rows li",[0,1,1],[["display","grid"],["grid-template-columns","20px 4.6rem minmax(0, 1fr)"],["gap","10px"],["align-items","center"],["min-height","40px"],["font-size","14.5px"]]],[".efp-co-rows svg",[0,1,1],[["width","20px"],["height","20px"],["color","$ink2"]]],[".efp-co-rows span",[0,1,1],[["color","$ink3"]]],[".efp-co-rows b",[0,1,1],[["font-weight","700"]]],[".efp-co-fine",[0,1,0],[["font-size","12.5px"],["line-height","1.45"],["color","$ink3"],["text-align","center"]]],[".efp-mg-cancel",[0,1,0],[["justify-self","center"],["min-height","40px"],["font-size","14.5px"],["font-weight","700"],["color","$riskInk"]]],[".efp-hp-tools",[0,1,0],[["display","flex"],["align-items","center"],["justify-content","space-between"],["gap","8px"],["margin","-8px -6px 2px 2px"]]],[".efp-hp-tools .efp-hp-eyebrow",[0,2,0],[["margin","0"]]],[".efp-hp-tools__end",[0,1,0],[["display","flex"],["align-items","center"],["gap","2px"]]],[".efp-hp-orders",[0,1,0],[["display","inline-flex"],["align-items","center"],["gap","6px"],["min-height","44px"],["padding","0 8px"],["border-radius","999px"],["font-size","15px"],["font-weight","700"]]],[".efp-hp-orders svg",[0,1,1],[["width","21px"],["height","21px"]]],[".efp-hp-cart",[0,1,0],[["position","relative"],["width","44px"],["height","44px"],["display","grid"],["place-items","center"],["border-radius","50%"]]],[".efp-hp-cart svg",[0,1,1],[["width","26px"],["height","26px"]]],[".efp-hp-cart__n",[0,1,0],[["position","absolute"],["top","3px"],["right","1px"],["min-width","20px"],["height","20px"],["padding","0 5px"],["border-radius","999px"],["background","$riskDot"],["color","$card"],["font-size","12px"],["font-weight","800"],["line-height","20px"],["text-align","center"],["font-variant-numeric","tabular-nums"],["box-shadow","0 0 0 2px $paper"]]],[".efp-hp-ask-row",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","40px minmax(0, 1fr) 18px"],["gap","12px"],["align-items","center"],["margin-top","10px"],["padding","12px 14px 12px 12px"],["border-radius","16px"],["background","$linkWash"],["text-align","left"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-hp-ask-row__ic",[0,1,0],[["width","40px"],["height","40px"],["border-radius","11px"],["background","$card"],["color","$link"],["display","grid"],["place-items","center"]]],[".efp-hp-ask-row__ic svg",[0,1,1],[["width","21px"],["height","21px"]]],[".efp-hp-ask-row strong",[0,1,1],[["display","block"],["font-size","15.5px"],["font-weight","800"],["line-height","1.3"]]],[".efp-hp-ask-row small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","14px"],["line-height","1.4"],["color","$ink2"]]],[".efp-hp-ask-row > svg",[0,1,1],[["width","18px"],["height","18px"],["color","$ink2"]]],[".efp-hp-sec .efp-hp-ask-row",[0,2,0],[["margin-top","12px"]]],[".efp-hp-wait",[0,1,0],[["margin-top","14px"],["padding","16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-wait__top",[0,1,0],[["display","grid"],["grid-template-columns","46px minmax(0, 1fr)"],["gap","12px"],["align-items","center"]]],[".efp-hp-wait__top h3",[0,1,1],[["font-size","26px"],["line-height","1.05"],["margin-top","2px"]]],[".efp-hp-wait .efp-sh-track",[0,2,0],[["margin-top","14px"]]],[".efp-hp-wait__k",[0,1,0],[["margin-top","18px"],["font-size","16px"],["font-weight","800"]]],[".efp-hp-next--in",[0,1,0],[["margin-top","8px"],["background","$paper"],["box-shadow","none"]]],[".efp-hp-wait__text",[0,1,0],[["display","flex"],["align-items","center"],["gap","8px"],["margin","16px 0 12px"],["font-size","15.5px"],["font-weight","700"]]],[".efp-hp-wait__text svg",[0,1,1],[["width","20px"],["height","20px"],["color","$link"],["flex","none"]]],[".efp-sh-track",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"]]],[".efp-sh-track li",[0,1,1],[["position","relative"],["display","grid"],["grid-template-columns","22px minmax(0, 1fr)"],["gap","12px"],["padding-bottom","16px"]]],[".efp-sh-track li:last-child",[0,2,1],[["padding-bottom","0"]]],[".efp-sh-track li > .efp-before",[0,2,1],[["position","absolute"],["left","10px"],["top","20px"],["bottom","-2px"],["width","2px"],["border-radius","1px"],["background","$n_E2DFD9"]]],[".efp-sh-track li:last-child > .efp-before",[0,3,1],[["display","none"]]],[".efp-sh-track li.efp-is-done:has(+ li.efp-is-done) > .efp-before",[0,4,2],[["background","$primary"]]],[".efp-sh-track__dot",[0,1,0],[["width","22px"],["height","22px"],["border-radius","50%"],["display","grid"],["place-items","center"],["background","$card"],["box-shadow","inset 0 0 0 2px $n_CFCBC4"],["position","relative"],["z-index","1"]]],[".efp-sh-track__dot svg",[0,1,1],[["width","13px"],["height","13px"],["color","$card"]]],[".efp-sh-track .efp-is-done .efp-sh-track__dot",[0,3,0],[["background","$primary"],["box-shadow","none"]]],[".efp-sh-track .efp-is-now .efp-sh-track__dot",[0,3,0],[["background","$accent"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-sh-track strong",[0,1,1],[["display","block"],["font-size","15.5px"],["font-weight","800"],["line-height","1.3"]]],[".efp-sh-track small",[0,1,1],[["display","block"],["margin-top","1px"],["font-size","14px"],["line-height","1.35"],["color","$ink3"]]],[".efp-sh-track li:not(.efp-is-done):not(.efp-is-now) strong",[0,3,2],[["color","$ink3"],["font-weight","700"]]],[".efp-sh",[0,1,0],[["display","grid"],["gap","12px"],["padding","8px 18px 28px"]]],[".efp-sh-title",[0,1,0],[["font-size","29px"],["line-height","1.08"]]],[".efp-sh-sub2",[0,1,0],[["margin-top","-6px"],["font-size","15px"],["line-height","1.45"],["color","$ink2"]]],[".efp-sh-k",[0,1,0],[["margin","6px 2px -4px"],["font-size","16px"],["font-weight","800"]]],[".efp-sh-card",[0,1,0],[["padding","14px 16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-sh-items",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","18px"]]],[".efp-sh-item",[0,1,0],[["display","grid"],["grid-template-columns","64px minmax(0, 1fr)"],["gap","12px"],["align-items","start"]]],[".efp-sh-item__img",[0,1,0],[["width","64px"],["height","64px"],["border-radius","14px"],["overflow","hidden"],["display","grid"],["place-items","center"],["background","$linkWash"],["color","$link"]]],[".efp-sh-item__img img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-sh-item__img svg",[0,1,1],[["width","28px"],["height","28px"]]],[".efp-sh-item h3",[0,1,1],[["font-size","16.5px"],["font-weight","800"],["line-height","1.25"]]],[".efp-sh-item__p",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","2px 8px"],["margin-top","3px"]]],[".efp-sh-item__p b",[0,1,1],[["font-size","16px"],["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-item__p s",[0,1,1],[["font-size","14px"],["font-weight","600"],["color","$ink3"]]],[".efp-sh-item__p small",[0,1,1],[["font-size","14px"],["color","$ink3"]]],[".efp-sh-item__acts",[0,1,0],[["display","flex"],["align-items","center"],["gap","16px"],["margin-top","8px"]]],[".efp-sh-step",[0,1,0],[["display","inline-grid"],["grid-template-columns","40px 30px 40px"],["align-items","center"],["height","40px"],["border-radius","999px"],["background","$card"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"]]],[".efp-sh-step button",[0,1,1],[["height","40px"],["display","grid"],["place-items","center"],["border-radius","999px"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-sh-step button svg",[0,1,2],[["width","16px"],["height","16px"]]],[".efp-sh-step button[disabled]",[0,2,1],[["opacity",".3"],["cursor","default"]]],[".efp-sh-step output",[0,1,1],[["text-align","center"],["font-size","15.5px"],["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-rm",[0,1,0],[["min-height","40px"],["font-size","14.5px"],["font-weight","700"],["color","$ink2"],["text-decoration","underline"],["text-decoration-thickness","1.5px"],["text-underline-offset","3px"]]],[".efp-sh-mode",[0,1,0],[["display","grid"],["gap","6px"],["margin-top","8px"]]],[".efp-sh-mode button",[0,1,1],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","10px"],["min-height","44px"],["padding","8px 12px"],["border-radius","12px"],["background","$paper"],["font-size","14.5px"],["font-weight","700"],["line-height","1.3"],["text-align","left"],["transition","box-shadow 160ms ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],['.efp-sh-mode button[aria-checked="true"]',[0,2,1],[["background","$card"],["box-shadow","inset 0 0 0 2px $ink"]]],[".efp-sh-mode b",[0,1,1],[["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-item .efp-co-every",[0,2,0],[["margin-top","8px"]]],[".efp-sh-sum li.efp-is-renew",[0,2,1],[["min-height","28px"],["margin-top","-6px"],["font-size","14px"]]],[".efp-sh-sum",[0,1,0],[["list-style","none"],["margin","0"],["padding","6px 16px"],["border-radius","16px"],["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-sh-sum li",[0,1,1],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","12px"],["min-height","34px"],["font-size","15px"],["font-variant-numeric","tabular-nums"]]],[".efp-sh-sum li > span:first-child",[0,2,2],[["color","$ink2"],["display","inline-flex"],["align-items","center"],["gap","8px"]]],[".efp-sh-sum li.efp-is-total",[0,2,1],[["min-height","42px"],["font-size","17px"],["font-weight","800"]]],[".efp-sh-sum li.efp-is-total span:first-child",[0,3,2],[["color","$ink"]]],[".efp-sh-foot",[0,1,0],[["display","grid"],["gap","8px"]]],[".efp-sh-foot .efp-sh-fine",[0,2,0],[["text-align","center"]]],[".efp-sh-fine",[0,1,0],[["font-size","13px"],["line-height","1.45"],["color","$ink3"]]],[".efp-sh-fine--c",[0,1,0],[["margin-top","14px"],["text-align","center"]]],[".efp-sh-empty",[0,1,0],[["display","grid"],["justify-items","center"],["gap","8px"],["padding","48px 12px 8px"],["text-align","center"]]],[".efp-sh-empty .efp-emb-tile",[0,2,0],[["width","72px"],["height","72px"],["border-radius","20px"],["margin-bottom","8px"]]],[".efp-sh-empty .efp-emb-tile svg",[0,2,1],[["width","34px"],["height","34px"]]],[".efp-sh-empty h2",[0,1,1],[["font-size","28px"],["line-height","1.1"]]],[".efp-sh-empty p",[0,1,1],[["max-width","30ch"],["font-size","15.5px"],["line-height","1.45"],["color","$ink2"],["text-wrap","pretty"]]],[".efp-sh-empty .efp-emb-btn",[0,2,0],[["margin-top","12px"]]],[".efp-sh-link",[0,1,0],[["min-height","40px"],["font-size","15px"],["font-weight","700"],["color","$link"],["text-decoration","underline"],["text-decoration-thickness","1.5px"],["text-underline-offset","3px"]]],[".efp-sh-subc",[0,1,0],[["display","grid"],["grid-template-columns","56px minmax(0, 1fr) auto"],["gap","12px"],["align-items","center"],["padding","12px 14px 12px 12px"],["border-radius","22px"],["background","$clearBg"]]],[".efp-sh-subc img",[0,1,1],[["width","56px"],["height","56px"],["border-radius","14px"],["object-fit","cover"],["background","$card"]]],[".efp-sh-subc strong",[0,1,1],[["display","block"],["font-size","16px"],["font-weight","800"],["line-height","1.25"]]],[".efp-sh-subc small",[0,1,1],[["display","block"],["margin-top","2px"],["font-size","14px"],["line-height","1.35"],["color","$ink2"]]],[".efp-sh-subc button",[0,1,1],[["min-height","40px"],["padding","0 14px"],["border-radius","999px"],["background","$card"],["font-size","14px"],["font-weight","800"],["box-shadow","inset 0 0 0 1.5px $ink"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-sh-orders",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","10px"]]],[".efp-sh-order",[0,1,0],[["width","100%"],["display","grid"],["grid-template-columns","minmax(0, 1fr) 18px"],["gap","10px"],["align-items","center"],["padding","14px 14px 14px 16px"],["border-radius","22px"],["background","$card"],["box-shadow","0 1px 3px $wash"],["text-align","left"],["transition","transform 160ms cubic-bezier(0.23, 1, 0.32, 1)"]]],[".efp-sh-order > svg",[0,1,1],[["width","18px"],["height","18px"],["color","$ink3"]]],[".efp-sh-order__top",[0,1,0],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","4px 10px"]]],[".efp-sh-order__no",[0,1,0],[["font-family","$mono"],["font-size","12px"],["letter-spacing",".04em"],["color","$ink3"]]],[".efp-sh-order__what",[0,1,0],[["display","block"],["margin-top","8px"],["font-size","16px"],["font-weight","800"],["line-height","1.3"]]],[".efp-sh-order__meta",[0,1,0],[["display","block"],["margin-top","2px"],["font-size","14px"],["line-height","1.4"],["color","$ink3"]]],[".efp-sh-order__pics",[0,1,0],[["display","flex"],["gap","6px"],["margin-top","10px"]]],[".efp-sh-order__pics span",[0,1,1],[["width","40px"],["height","40px"],["border-radius","10px"],["overflow","hidden"],["display","grid"],["place-items","center"],["background","$linkWash"],["color","$link"]]],[".efp-sh-order__pics img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"]]],[".efp-sh-order__pics svg",[0,1,1],[["width","20px"],["height","20px"]]],[".efp-sh-pill",[0,1,0],[["display","inline-flex"],["align-items","center"],["gap","6px"],["min-height","26px"],["padding","0 10px"],["border-radius","999px"],["font-size","13px"],["font-weight","800"],["background","$accent3"],["color","$ink"]]],[".efp-sh-pill--done",[0,1,0],[["background","$clearBg"],["color","$clearInk"]]],[".efp-sh-pill--sub",[0,1,0],[["background","$linkWash"],["color","$link"]]],[".efp-sh-carrier",[0,1,0],[["display","grid"],["grid-template-columns","40px minmax(0, 1fr)"],["gap","4px 12px"],["align-items","center"]]],[".efp-sh-carrier__ic",[0,1,0],[["width","40px"],["height","40px"],["border-radius","11px"],["background","$linkWash"],["color","$link"],["display","grid"],["place-items","center"]]],[".efp-sh-carrier__ic svg",[0,1,1],[["width","21px"],["height","21px"]]],[".efp-sh-carrier strong",[0,1,1],[["display","block"],["font-size","16px"],["font-weight","800"]]],[".efp-sh-carrier small",[0,1,1],[["display","flex"],["flex-wrap","wrap"],["align-items","center"],["gap","2px 8px"],["margin-top","1px"],["font-family","$mono"],["font-size","13px"],["letter-spacing",".02em"],["color","$ink2"]]],[".efp-sh-carrier .efp-emb-btn",[0,2,0],[["grid-column","1 / -1"],["margin-top","10px"]]],[".efp-sh-carrier__wait",[0,1,0],[["grid-column","2"],["font-size","14.5px"],["line-height","1.4"],["color","$ink2"]]],[".efp-sh-acts",[0,1,0],[["display","grid"],["gap","4px"],["justify-items","center"],["margin-top","4px"]]],[".efp-hp-next__ic img",[0,1,1],[["width","100%"],["height","100%"],["object-fit","cover"],["border-radius","11px"]]],[".efp-co-items",[0,1,0],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","10px"]]],[".efp-co-items li",[0,1,1],[["display","grid"],["grid-template-columns","44px minmax(0, 1fr) auto"],["gap","12px"],["align-items","center"],["font-size","15px"]]],[".efp-co-items .efp-sh-order__pics",[0,2,0],[["margin","0"]]],[".efp-co-items strong",[0,1,1],[["display","block"],["font-size","15.5px"],["font-weight","800"],["line-height","1.25"]]],[".efp-co-items small",[0,1,1],[["display","block"],["font-size","13.5px"],["color","$ink3"]]],[".efp-co-items b",[0,1,1],[["font-weight","800"],["font-variant-numeric","tabular-nums"]]],[".efp-co .efp-sh-sum",[0,2,0],[["background","$paper"],["box-shadow","none"]]],[".efp-co-items .efp-sh-order__pics span",[0,2,1],[["width","44px"],["height","44px"]]],[".efp-sh .efp-co-rows",[0,2,0],[["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-wt-f",[0,1,0],[["display","grid"],["gap","8px"],["margin-top","14px"],["font-size","15px"],["font-weight","700"]]],[".efp-wt-f__in",[0,1,0],[["position","relative"]]],[".efp-wt-f input",[0,1,1],[["width","100%"],["height","58px"],["border","0"],["border-radius","16px"],["padding","0 56px 0 18px"],["background","$card"],["box-shadow","inset 0 0 0 1.5px $n_DAD7D1"],["font-size","24px"],["font-weight","800"],["font-variant-numeric","tabular-nums"],["outline","none"]]],[".efp-wt-f__u",[0,1,0],[["position","absolute"],["right","18px"],["top","50%"],["translate","0 -50%"],["font-size","17px"],["font-weight","700"],["color","$ink3"],["pointer-events","none"]]],[".efp-wt-err",[0,1,0],[["min-height","20px"],["margin-top","6px"],["font-size","14px"],["font-weight","700"],["color","$riskInk"]]],[".efp-wt-acts",[0,1,0],[["display","grid"],["gap","8px"],["margin-top","10px"]]],[".efp-hp-ask-row strong",[0,1,1],[["text-wrap","balance"]]],[".efp-sh-order__what",[0,1,0],[["text-wrap","balance"]]],[".efp-sh-item h3",[0,1,1],[["text-wrap","balance"]]],[".efp-co-items strong",[0,1,1],[["text-wrap","balance"]]],[".efp-sh-subc strong",[0,1,1],[["text-wrap","balance"]]],[".efp-hp-ask-row small",[0,1,1],[["text-wrap","pretty"]]],[".efp-hp-tip small",[0,1,1],[["text-wrap","pretty"]]],[".efp-sh-carrier__wait",[0,1,0],[["text-wrap","pretty"]]],[".efp-sh-fine",[0,1,0],[["text-wrap","pretty"]]],[".efp-sh-sub2",[0,1,0],[["text-wrap","pretty"]]],[".efp-hp-next span",[0,1,1],[["text-wrap","pretty"]]],[".efp-hp-wait__text",[0,1,0],[["text-wrap","pretty"]]],[".efp-wt-err",[0,1,0],[["text-wrap","pretty"]]],[".efp-hp-foot-stack",[0,1,0],[["display","grid"],["gap","10px"]]],[".efp-blanks",[0,1,0],[["display","grid"],["gap","8px"],["background","$paper"],["border-radius","20px"],["padding","12px 12px 13px"]]],[".efp-blanks__h",[0,1,0],[["display","flex"],["justify-content","space-between"],["align-items","center"],["gap","10px"],["padding","0 2px 2px"],["font-size","12.5px"],["font-weight","800"],["letter-spacing",".07em"],["text-transform","uppercase"],["color","$ink3"]]],[".efp-blanks__h em",[0,1,1],[["font-style","normal"],["letter-spacing",".01em"],["text-transform","none"],["font-size","13px"],["font-weight","800"],["color","$ink"],["background","$accent"],["border-radius","999px"],["padding","2px 10px"],["white-space","nowrap"]]],['.efp-blanks[data-st="filled"] .efp-blanks__h em',[0,3,1],[["background","$clearBg"],["color","$clearInk"]]],[".efp-blanks ol",[0,1,1],[["list-style","none"],["margin","0"],["padding","0"],["display","grid"],["gap","7px"]]],[".efp-blanks li",[0,1,1],[["display","grid"],["grid-template-columns","34px minmax(0, 1fr)"],["column-gap","11px"],["align-items","center"],["background","$card"],["border-radius","15px"],["padding","9px 12px 9px 9px"]]],[".efp-blanks li > b",[0,1,2],[["grid-row","span 2"],["width","34px"],["height","40px"],["border-radius","11px"],["display","grid"],["place-items","center"],["font-family","$serif"],["font-size","22px"],["font-weight","800"]]],[".efp-blanks li > b",[0,1,2],[["background","$accentChip"]]],[".efp-blanks li > span",[0,1,2],[["font-size","16px"],["font-weight","700"],["line-height","1.35"]]],[".efp-blanks li > small",[0,1,2],[["font-size","13.5px"],["color","$ink3"]]],[".efp-blank",[0,1,0],[["display","inline-block"],["min-width","36px"],["height","20px"],["vertical-align","-3px"],["border-radius","6px"],["background","$accent4"],["box-shadow","inset 0 0 0 1.5px $accent"],["font-style","normal"]]],[".efp-blank--s",[0,1,0],[["min-width","24px"]]],[".efp-blank--l",[0,1,0],[["min-width","64px"]]],['.efp-blanks[data-st="filled"] .efp-blank',[0,3,0],[["height","auto"],["min-width","0"],["vertical-align","0"],["background","none"],["box-shadow","none"],["padding","0 3px"],["margin","0 -3px"],["border-radius","6px"]]],[".efp-hp-blanks",[0,1,0],[["margin-top","14px"]]],[".efp-hp-blanks .efp-blanks",[0,2,0],[["background","$card"],["box-shadow","0 1px 3px $wash"]]],[".efp-hp-blanks .efp-blanks li",[0,2,1],[["background","$paper"]]],[".efp-mg-orders",[0,1,0],[["justify-self","center"]]],[".efp-hp",[0,1,0],[["background","$paper"]]],[".efp-ph-toast",[0,1,0],[["top","calc(112px - 50px)"]]],[".efp-hp-jump:not(:has(> img))",[0,1,1],[["grid-template-columns","minmax(0, 1fr) auto"]]],[".efp-hp-others",[0,1,0],[["list-style","none"],["margin-bottom","0"]]],[".efp-sheet__x",[0,1,0],[["position","relative"]]],[".efp-ph-sheet",[0,2,0],[["max-height","calc(100% - 8px)"],["padding","8px 20px 14px"]],1],[".efp-sheet__grab",[0,2,0],[["display","none"]],1],[".efp-co",[0,2,0],[["gap","8px"]],1],[".efp-co-rows li",[0,2,1],[["min-height","36px"]],1]];var RAPH_PLAN_CLASSES={root:"hp",head:"hp-head",eyebrow:"hp-eyebrow",serif:"serif",by:"hp-by",byOk:"hp-by__ok",need:"hp-need",needKicker:"hp-need__k",sources:"hp-srcs",source:"hp-src","source:dna":"hp-src--dna",needRisk:"hp-need__s",dot:"dot","dot:risk":"dot--risk",odds:"hp-odds",oddsKicker:"hp-odds__k",oddsNumbers:"hp-odds__n",tag:"cp-tag cp-tag--s",says:"hp-says",saysKicker:"hp-says__k",jump:"hp-jump",jumpGo:"hp-jump__go",steps:"hp-steps",stepsHead:"hp-steps__head",n:"hp-n",list:"hp-list hp-swipe",tip:"hp-tip",tipN:"hp-tip__n",section:"hp-sec",sectionTitle:"hp-sec__h",pick:"hp-pick",others:"hp-sec hp-others",other:"hp-pick",pickTop:"hp-pick__top",pickImage:"hp-pick__img",stars:"hp-stars",pickLine:"hp-pick__line",reviews:"hp-revs",review:"hp-rev",reviewStars:"hp-rev__s",score:"hp-score",why:"hp-why",mini:"hp-mini",chip:"hp-chip","chip:dna":"hp-chip--dna","chip:rec":"hp-chip--rec","chip:ask":"hp-chip--ask",dose:"hp-dose",ingredients:"hp-in",opts:"hp-opts",opt:"hp-opt","opt:once":"hp-opt--once",optText:"hp-opt__t",optTag:"hp-opt__tag",price:"hp-price",optPrice:"hp-opt__p",buy:"hp-buy",button:"emb-btn emb-btn--block",proof:"hp-proof",trust:"hp-trust",on:"hp-on",onIcon:"hp-on__ic",more:"hp-more",fine:"hp-fine",sign:"hp-sign","sign:urgent":"hp-sign--er",questionsKicker:"hp-qs__k",questions:"hp-qs",add:"hp-add",extras:"hp-xs",extrasTitle:"hp-eyebrow",extra:"hp-x","extra:kit":"hp-x--kit",extraIcon:"hp-x__ic",extraTitle:"","extraTitle:kit":"serif",extraPrice:"hp-x__p",extraGo:"hp-x__go",pageFine:"plan__fine",stateOn:"is-on",scrim:"ph-scrim",sheet:"ph-sheet",sheetGrab:"sheet__grab",sheetTop:"sheet__top",sheetKicker:"sheet__kicker",sheetClose:"sheet__x",srOnly:"sr-only",co:"co",coProd:"co-prod",coProdImage:"co-prod__img",coProdTitle:"co-prod__t",coOpts:"co-opts",coOpt:"co-opt",coHit:"co-opt__hit",radio:"bk__radio",coPrice:"co-opt__p",coWhen:"co-when",coKey:"co-k",coEvery:"co-every",coRows:"co-rows",buttonLarge:"emb-btn emb-btn--block emb-btn--lg",buttonGhost:"emb-btn emb-btn--ghost emb-btn--block",coFine:"co-fine",mgCancel:"mg-cancel",started:"ph-push",startedScroll:"ph-scroll",done:"bk__done",doneCheck:"bk__check",doneTitle:"serif bk__title",doneWhen:"bk__when",doneWho:"bk__who",next:"hp-next",nextIcon:"hp-next__ic",foot:"bk__foot",toast:"ph-toast",tipTop:"hp-tip__top","tip:y":"hp-tip--y","tip:c":"hp-tip--c","tip:g":"hp-tip--g","tip:r":"hp-tip--r",tools:"hp-tools",toolsEnd:"hp-tools__end",ordersButton:"hp-orders",cartButton:"hp-cart",cartCount:"hp-cart__n",askRow:"hp-ask-row",askRowIcon:"hp-ask-row__ic",wait:"hp-wait",waitTop:"hp-wait__top",waitTile:"emb-tile emb-tile--cyan",waitKey:"hp-wait__k",waitText:"hp-wait__text","next:in":"hp-next--in",track:"sh-track","track:kit":"sh-track--kit",trackDot:"sh-track__dot",shopTag:"cp-tag",trackStep:"","trackStep:done":"is-done","trackStep:now":"is-now",push:"ph-push",sheetBody:"sheet__body",shop:"sh",shopTitle:"serif sh-title",shopSub:"sh-sub2",shopKey:"sh-k",shopCard:"sh-card","shopCard:carrier":"sh-carrier",shopItems:"sh-items",shopItem:"sh-item",shopItemImage:"sh-item__img",shopItemPrice:"sh-item__p",shopItemActions:"sh-item__acts",stepper:"sh-step",shopRemove:"sh-rm",shopMode:"sh-mode",summary:"sh-sum",summaryRow:"","summaryRow:total":"is-total","summaryRow:renew":"is-renew",shopFine:"sh-fine","shopFine:center":"sh-fine--c",shopEmpty:"sh-empty",shopTile:"emb-tile emb-tile--cyan",shopLink:"sh-link",shopActions:"sh-acts",subCard:"sh-subc",orderList:"sh-orders",order:"sh-order",orderTop:"sh-order__top",orderPill:"sh-pill","orderPill:done":"sh-pill--done","orderPill:sub":"sh-pill--sub",orderNo:"sh-order__no",orderWhat:"sh-order__what",orderMeta:"sh-order__meta",orderPics:"sh-order__pics",carrierIcon:"sh-carrier__ic",carrierWait:"sh-carrier__wait",buttonSmall:"emb-btn emb-btn--ghost emb-btn--sm",coItems:"co-items","foot:shop":"sh-foot","foot:stack":"hp-foot-stack",weightField:"wt-f",weightInput:"wt-f__in",weightUnit:"wt-f__u",weightError:"wt-err",weightActions:"wt-acts",blanks:"hp-blanks",blanksCard:"blanks",blanksHead:"blanks__h",blank:"blank","blank:s":"blank--s","blank:l":"blank--l",noPick:"",mgOrders:"sh-link mg-orders"},prefix=classes=>classes.split(/\s+/).filter(c=>c!=="").map(c=>`${PLAN_CLASS_PREFIX}${c}`).join(" "),PLAN_DEFAULT_CLASS_NAMES=/* @__PURE__ */Object.freeze(Object.fromEntries(Object.entries(RAPH_PLAN_CLASSES).map(([part,classes])=>[part,prefix(classes)]))),PLAN_BEFORE_CLASS=`${PLAN_CLASS_PREFIX}before`,RAPH_PLAN_LIGHT=/* @__PURE__ */Object.freeze({black:"#000000",onInk:"#FFFFFF",wash:"rgba(38, 37, 35, 0.06)",scrim:"rgba(38, 37, 35, 0.38)",riskChip:"#FFD8D6",clearChip:"#DDEFC4"});function rgb(color){let c=color.trim(),h=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(c);if(h!==null){let x=h[1].length===3?h[1].split("").map(d=>d+d).join(""):h[1];return[0,2,4].map(k=>parseInt(x.slice(k,k+2),16))}let r=/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i.exec(c);return r===null?null:[Number(r[1]),Number(r[2]),Number(r[3])]}function mixPlanColor(color,share,ground){let a=rgb(color),b=rgb(ground);if(a===null||b===null)return ground;let to=k=>Math.round(a[k]*share+b[k]*(1-share)).toString(16).padStart(2,"0");return`#${to(0)}${to(1)}${to(2)}`.toUpperCase()}function planTokens(theme){let c=theme.color,v=v3Palette(theme),neutral={ink:v.ink,ink2:v.ink2,ink3:v.ink3,paper:v.paper,tile:v.tile,line:v.line,card:v.card,riskBg:v.riskBg,riskInk:v.riskInk,riskDot:v.riskDot,clearBg:v.clearBg,clearInk:v.clearInk,clearDot:v.clearDot,watchDot:v.watchDot,...v.dark?{black:c.text.primary,onInk:c.background,wash:mixPlanColor(c.text.primary,.08,c.surface),scrim:"rgba(0, 0, 0, 0.6)",riskChip:c.badgeBgCritical,clearChip:c.badgeBgPositive}:RAPH_PLAN_LIGHT},link=v.link,card=neutral.card;return{...neutral,primary:v.primary,onPrimary:v.onPrimary,accent:v.accent,accent4:mixPlanColor(c.accent,.17,card),accent3:mixPlanColor(c.accent,.25,card),accentChip:mixPlanColor(c.accent,.47,card),link:link,linkWash:mixPlanColor(link,.12,card),linkChip:mixPlanColor(link,.2,card),sans:faceCss(theme,"regular").fontFamily,serif:headingFaceCss(theme,"bold").fontFamily,mono:cssMonoFamily(theme.type.mono)}}var WIDE_QUERY="(min-width: 900px)",wideNow=()=>typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(WIDE_QUERY).matches;function fill(value,tokens,dark,line){return value.replace(/\$(n_[0-9A-F]{6}|[a-zA-Z0-9]+)/g,(whole,key)=>key.startsWith("n_")?dark?line:`#${key.slice(2)}`:tokens[key]??whole)}function keyOf(selector){let depth=0,start=0;for(let i=0;i<selector.length;i+=1){let ch=selector[i];ch==="("?depth+=1:ch===")"?depth-=1:depth===0&&(ch===" "||ch===">"||ch==="+"||ch==="~")&&(start=i+1)}let last=selector.slice(start).replace(/\([^)]*\)/g,""),cls=/\.([\w-]+)/.exec(last);if(cls!==null)return`.${cls[1]}`;let tag=/^([a-z][a-z0-9]*)/i.exec(last);return tag===null?"*":tag[1].toLowerCase()}function compile(decls,tokens,dark){return decls.map(d=>[d[0],fill(d[1],tokens,dark,tokens.line??""),d[2]===1])}function buildIndex(theme){let tokens=planTokens(theme),dark=theme.brightness==="dark",index=/* @__PURE__ */new Map;PLAN_RULES.forEach(([selector,[a,b,c],decls,wide],order)=>{let key=keyOf(selector),list=index.get(key)??[];list.push({selector:selector,specificity:a*1e4+b*100+c,order:order,decls:compile(decls,tokens,dark),...wide===1?{wide:true}:{}}),index.set(key,list)});let motion=theme.motion.reducedMotion?[["transition-duration","0.01ms",true]]:[];return{index:index,context:{selector:"",specificity:-1,order:-1,decls:[...compile(PLAN_CONTEXT,tokens,dark),...motion]}}}var matches=(el,selector)=>{try{return el.matches(selector)}catch{return false}};function cascade(el,index,extra,wide){let hits=[...extra],keys=["*",el.tagName.toLowerCase(),...Array.from(el.classList,c=>`.${c}`)];for(let key of keys)for(let rule of index.get(key)??[])(wide||rule.wide!==true)&&matches(el,rule.selector)&&hits.push(rule);let entries=[];for(let rule of hits)for(let[prop,value,important]of rule.decls)entries.push({prop:prop,value:value,important:important,spec:rule.specificity,order:rule.order});entries.sort((x,y)=>Number(x.important)-Number(y.important)||x.spec-y.spec||x.order-y.order);let out=/* @__PURE__ */new Map;for(let e of entries)out.delete(e.prop),out.set(e.prop,[e.prop,e.value,e.important]);return[...out.values()]}var FIXED={selector:"",specificity:1e6,order:0,decls:[["position","fixed",true]]},NOOP=/* @__PURE__ */Object.freeze({root:()=>{},layer:()=>{}}),OBSERVED=["class","hidden","disabled","aria-checked","aria-pressed","aria-selected","aria-expanded","open","data-once","data-st"];function usePlanStyles(theme,rootStyle){let built=react.useMemo(()=>theme===null?null:buildIndex(theme),[theme]),state2=react.useRef({roots:/* @__PURE__ */new Set,applied:/* @__PURE__ */new WeakMap,observer:null,rootEl:null,built:built,keep:/* @__PURE__ */new Set});state2.current.built=built,state2.current.keep=new Set(Object.keys(rootStyle??{}).map(k=>k.replace(/[A-Z]/g,m=>`-${m.toLowerCase()}`)));let paint=react.useCallback(root=>{let s=state2.current;if(s.built===null||!root.isConnected)return;let{index:index,context:context}=s.built,fixed=root.parentElement!==null&&root.parentElement===root.ownerDocument.body&&root!==s.rootEl,tree=[root,...Array.from(root.querySelectorAll("*"))],wide=wideNow();for(let el of tree){let all=cascade(el,index,el===root?fixed?[context,FIXED]:[context]:[],wide),list=el===s.rootEl?all.filter(([p])=>!s.keep.has(p)):all,key=list.map(([p,v,i])=>`${p}:${v}${i?"!":""}`).join(";"),before=s.applied.get(el);if(before!==void 0&&before.key===key)continue;let style=el.style;if(style!==void 0){if(before!==void 0)for(let prop of before.props)style.removeProperty(prop);for(let[prop,value,important]of list)style.setProperty(prop,value,important?"important":"");s.applied.set(el,{key:key,props:list.map(([p])=>p)})}}},[]),paintAll=react.useCallback(()=>{let{roots:roots}=state2.current;for(let root of[...roots])root.isConnected?paint(root):roots.delete(root)},[paint]),watch=react.useCallback(el=>{let s=state2.current;s.built===null||typeof MutationObserver>"u"||(s.observer??=new MutationObserver(()=>paintAll()),s.observer.observe(el,{subtree:true,childList:true,attributes:true,attributeFilter:OBSERVED}))},[paintAll]),register=react.useCallback((el,isRoot)=>{let s=state2.current;el===null||s.built===null||(isRoot&&(s.rootEl=el),s.roots.add(el),watch(el),paint(el))},[paint,watch]);react.useLayoutEffect(()=>{paintAll()},[built,paintAll]),react.useEffect(()=>{for(let root of state2.current.roots)root.isConnected&&watch(root);return paintAll(),()=>state2.current.observer?.disconnect()},[watch,paintAll]),react.useEffect(()=>{if(built===null||typeof window>"u"||typeof window.matchMedia!="function")return;let list=window.matchMedia(WIDE_QUERY),onChange=()=>paintAll();return list.addEventListener?.("change",onChange),()=>list.removeEventListener?.("change",onChange)},[built,paintAll]);let handles=react.useMemo(()=>({root:el=>register(el,true),layer:el=>register(el,false)}),[register]);return built===null?NOOP:handles}var ORDER_STEPS=["ordered","shipped","out_for_delivery","delivered"];function hostOrderView(o){let step=Math.max(0,ORDER_STEPS.indexOf(o.status));return{key:o.key,number:o.number??null,step:step,dates:o.dates??[],everfur:false,productId:null,items:o.items.map(x=>({title:x.title,quantity:x.quantity,price:x.price,imageUrl:x.imageUrl??null,icon:x.icon??null})),total:Math.round(o.items.reduce((n,x)=>n+x.price,0)*100)/100,currency:o.currency,subscriptionBox:o.subscriptionBox===true,carrier:o.carrier??null,trackingNumber:o.trackingNumber??null,trackingTag:o.trackingTag??null,trackingUrl:o.trackingUrl??null}}function formatShopDay(iso,locale,now=/* @__PURE__ */new Date){if(iso==null)return null;let dateOnly=/^\d{4}-\d{2}-\d{2}$/.test(iso),d=new Date(dateOnly?`${iso}T00:00:00Z`:iso);if(Number.isNaN(d.getTime()))return null;let tz=dateOnly?"UTC":void 0,year=Number(new Intl.DateTimeFormat("en-US",{year:"numeric",...tz?{timeZone:tz}:{}}).format(d));try{return new Intl.DateTimeFormat(locale??"en-US",year!==now.getFullYear()?{month:"short",day:"numeric",year:"numeric",...tz?{timeZone:tz}:{}}:{weekday:"short",month:"short",day:"numeric",...tz?{timeZone:tz}:{}}).format(d)}catch{return iso}}var img=(k,src,fallback="box")=>src?/* @__PURE__ */jsxRuntime.jsx("img",{alt:"",src:src}):k.icon(fallback);function shopSummary(k,total,opts={}){let{p:p,copy:copy}=k,renew=opts.renew??null;/* @__PURE__ */
|
|
124
124
|
return jsxRuntime.jsxs("ul",{...p("summary"),children:[
|
|
125
125
|
/* @__PURE__ */jsxRuntime.jsxs("li",{...p("summaryRow"),children:[
|
|
126
126
|
/* @__PURE__ */jsxRuntime.jsx("span",{children:copy.subtotal}),
|
|
@@ -142,13 +142,13 @@ return jsxRuntime.jsxs("button",{type:"button",...p("askRow"),onClick:onClick,ch
|
|
|
142
142
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("askRowIcon"),children:k.icon(iconName)}),
|
|
143
143
|
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[
|
|
144
144
|
/* @__PURE__ */jsxRuntime.jsx("strong",{children:title}),
|
|
145
|
-
/* @__PURE__ */jsxRuntime.jsx("small",{children:body})]}),k.icon("chev")]})}function shopWait(k,w,onAction){let{p:p}=k;/* @__PURE__ */
|
|
145
|
+
/* @__PURE__ */jsxRuntime.jsx("small",{children:body})]}),k.icon("chev")]})}function shopWait(k,w,onAction,vet=null){let{p:p}=k,rows=(w.rows??[]).flatMap(r=>r.fromVet!==true?[r]:vet===null?[]:[{...r,text:k.copy.waitVetTips(vet)}]);/* @__PURE__ */
|
|
146
146
|
return jsxRuntime.jsxs("section",{...p("wait"),"aria-labelledby":"everfur-hp-wait",children:[
|
|
147
147
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("waitTop"),children:[
|
|
148
148
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("waitTile"),children:k.icon(w.icon??"kit")}),
|
|
149
149
|
/* @__PURE__ */jsxRuntime.jsxs("div",{children:[
|
|
150
150
|
/* @__PURE__ */jsxRuntime.jsx("p",{...p("mini"),children:w.kicker}),
|
|
151
|
-
/* @__PURE__ */jsxRuntime.jsx("h3",{id:"everfur-hp-wait",...p("serif"),children:w.title})]})]}),w.track&&w.track.length>0?shopTrack(k,w.track,w.kicker,"kit"):null,w.heading?/* @__PURE__ */jsxRuntime.jsx("p",{...p("waitKey"),children:w.heading}):null,
|
|
151
|
+
/* @__PURE__ */jsxRuntime.jsx("h3",{id:"everfur-hp-wait",...p("serif"),children:w.title})]})]}),w.track&&w.track.length>0?shopTrack(k,w.track,w.kicker,"kit"):null,w.heading?/* @__PURE__ */jsxRuntime.jsx("p",{...p("waitKey"),children:w.heading}):null,rows.length>0?/* @__PURE__ */jsxRuntime.jsx("ol",{...p("next","in"),children:rows.map(r=>/* @__PURE__ */jsxRuntime.jsxs("li",{children:[
|
|
152
152
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("nextIcon"),children:k.icon(r.icon)}),
|
|
153
153
|
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[
|
|
154
154
|
/* @__PURE__ */jsxRuntime.jsx("small",{children:r.label}),
|
|
@@ -175,7 +175,7 @@ return jsxRuntime.jsxs("section",{...p("wait"),"aria-labelledby":"everfur-hp-wai
|
|
|
175
175
|
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("shopRemove"),onClick:()=>h.onRemove(x.key),children:copy.remove})]})]})]},x.key))})}),shopSummary(k,subtotal,{tag:true,renew:renew}),
|
|
176
176
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("shopActions"),children:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("shopLink"),onClick:h.onOrders,children:copy.seeOrders})})]})}function shopCartCheckout(k,lines,lineTotal,rows,subtotal,renew,go,fine,titleId){let{p:p,copy:copy}=k;/* @__PURE__ */
|
|
177
177
|
return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
178
|
-
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,...p("srOnly"),children:copy.cartCheckoutTitle}),
|
|
178
|
+
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,tabIndex:-1,...p("srOnly"),children:copy.cartCheckoutTitle}),
|
|
179
179
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("co"),children:[
|
|
180
180
|
/* @__PURE__ */jsxRuntime.jsx("ul",{...p("coItems"),children:lines.map(x=>/* @__PURE__ */jsxRuntime.jsxs("li",{children:[
|
|
181
181
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("orderPics"),children:/* @__PURE__ */jsxRuntime.jsx("span",{children:img(k,x.imageUrl)})}),
|
|
@@ -219,19 +219,27 @@ return jsxRuntime.jsxs("div",{...p("shop"),children:[
|
|
|
219
219
|
/* @__PURE__ */jsxRuntime.jsx("b",{children:a.fmt(x.price,o.currency)}),
|
|
220
220
|
/* @__PURE__ */jsxRuntime.jsx("small",{children:copy.orderItemLine(x.quantity,o.subscriptionBox)})]})]})]},x.title))})}),shopSummary(k,total),a.rows.length>0?/* @__PURE__ */jsxRuntime.jsx("ul",{...p("coRows"),children:a.rows.map(r=>/* @__PURE__ */jsxRuntime.jsxs("li",{children:[k.icon(r.icon),
|
|
221
221
|
/* @__PURE__ */jsxRuntime.jsx("span",{children:r.label}),
|
|
222
|
-
/* @__PURE__ */jsxRuntime.jsx("b",{children:r.value})]},r.label))}):null,a.onBuyAgain===null&&a.onHelp===null?null:/* @__PURE__ */jsxRuntime.jsxs("div",{...p("shopActions"),children:[a.onBuyAgain===null?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("buttonGhost"),onClick:a.onBuyAgain,children:copy.buyAgain}),a.onHelp===null?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("shopLink"),onClick:a.onHelp,children:copy.orderHelp})]}),fine===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{...p("shopFine"),children:fine})]})}function andList(names){return names.length<=1?names[0]??"":`${names.slice(0,-1).join(", ")} and ${names[names.length-1]??""}`}var MAX_QUANTITY=5,MAX_CART_LINES=10,ORDERS_PAGE=20,LB_PER_KG=2.20462262;function HealthPlanFocus(props){let{design:design,item:item,petRef:petRef,petName:petName,locale:locale}=props,hostClasses=props.classNames!==void 0,classNames=props.classNames??PLAN_DEFAULT_CLASS_NAMES,theme=useEverfurTheme(),telemetry=useHealthPlanTelemetry(),petSex=props.petSex??null,trackingTexts=props.trackingTexts===true,copy=react.useMemo(()=>{let merged={...healthPlanFocusCopyFor({name:petName,sex:petSex}),...design.copy,...props.copy};return trackingTexts?merged:{...merged,trackingComesByText:"",trackingByText:""}},[design.copy,props.copy,petName,petSex,trackingTexts]),withTracking=line=>[line,copy.trackingComesByText].filter(x=>x!=="").join(" "),sub=useHealthPlanSubscription({petRef:petRef,productId:item.productId,enabled:props.subscriptions!==false,...props.subscriptionRepository?{repository:props.subscriptionRepository}:{},...props.lifecycle!==void 0?{lifecycle:props.lifecycle}:{},...props.refreshKey!==void 0?{refreshKey:props.refreshKey}:{}}),p=react.useCallback((part,kind)=>{let base3=classNames[part],mod=kind===void 0?void 0:classNames[`${part}:${kind}`],cls=[base3,mod].filter(c=>c!==void 0&&c!=="").join(" ");return cls===""?{}:{className:cls}},[classNames]),on=classNames.stateOn??"is-on",styles2=usePlanStyles(hostClasses?null:theme,props.style),icon=(name,cls)=>props.renderIcon?props.renderIcon(name,cls):/* @__PURE__ */jsxRuntime.jsx(DefaultIcon,{name:name,className:cls}),[mode,setMode]=react.useState("sub"),[added,setAdded]=react.useState(false),[extras,setExtras]=react.useState(()=>/* @__PURE__ */new Set),[sheet,setSheet]=react.useState(null),[started,setStarted]=react.useState(null),tapKey=react.useRef(null),[toast,setToast]=react.useState(null),everfur=props.checkout==="everfur_stripe",ownPages=useHealthPlanPageRepository(),pages=props.pageRepository??ownPages,checkoutTap=react.useRef(null),[redirecting,setRedirecting]=react.useState(false),pickRef=react.useRef(null),toastTimer=react.useRef(null);react.useEffect(()=>()=>{toastTimer.current!==null&&clearTimeout(toastTimer.current)},[]);let say=line=>{setToast(line),toastTimer.current!==null&&clearTimeout(toastTimer.current),toastTimer.current=setTimeout(()=>setToast(null),2600)},shop=props.shop??props.checkout==="everfur_stripe",[cart,setCart]=useCartLines(petRef,shop),[screens,setScreens]=react.useState([]),ownSubs=useHealthPlanSubscriptionRepository(),subsRepo=props.subscriptionRepository??ownSubs,[everfurOrders,setEverfurOrders]=react.useState({loaded:false,orders:[],next:null,loading:false}),[cartOff,setCartOff]=react.useState(false),[weightSaved,setWeightSaved]=react.useState(false),{runtime:runtime}=useEverfurContext(),[recent,setRecent]=react.useState([]),planItems=[item,...props.others??[]],seen=/* @__PURE__ */new Set,allOrders=[...[...recent,...everfurOrders.orders].filter(o=>seen.has(o.orderId)?false:(seen.add(o.orderId),true)).map(o=>everfurOrderView(o,planItems)),...(props.shopOrders??[]).map(hostOrderView)],orderNumber=key=>key===null?null:allOrders.find(o=>o.key===key)?.number??null,push=react.useCallback(screen=>{setSheet(null),setScreens(prev=>[...prev.filter(x=>x.kind!==screen.kind),screen])},[]),top=screens.length>0?screens[screens.length-1]:void 0,overlay=sheet!==null&&(sheet.kind==="checkout"||sheet.kind==="manage"||sheet.kind==="cartCheckout"||sheet.kind==="weight")?sheet.kind:started!==null?"started":top!==void 0?top.kind:null,under=started!==null?"started":top!==void 0?top.kind:null,orderTitle=top?.kind==="order"?top.key:null,onOverlayChange=props.onOverlayChange,closeOverlays=react.useCallback(()=>{setSheet(null),setStarted(null),setScreens([])},[]),back=react.useCallback(()=>{sheet!==null?setSheet(null):started!==null?setStarted(null):setScreens(prev=>prev.slice(0,-1))},[sheet,started]),title=(o=>{switch(o){case"started":return started?.kind==="once"?copy.placedHeader:copy.startedHeader;case"cart":return copy.cartTitle;case"placed":return copy.placedHeader;case"orders":return copy.orders;case"order":return copy.orderTitle(orderNumber(orderTitle));default:return}})(under),full=under==="started"||under==="cart"||under==="placed";react.useEffect(()=>{onOverlayChange?.(overlay,{close:closeOverlays,back:back,...title===void 0?{}:{title:title},...full?{full:full}:{}})},[overlay,onOverlayChange,closeOverlays,back,title,full]);let quote2=sub.phase==="ready"?sub.quote:null,subscription=sub.subscription,active=subscription?.status==="active",priced=(quote2?.boxPrice??item.price)!==null,canSubscribe=quote2!==null&&priced,offer=canSubscribe&"e2.offerApplies&&subscription===null,every=active?subscription.intervalDays:canSubscribe?quote2.defaultIntervalDays:0,fmt=(n2,currency2)=>formatHealthPlanPriceWith(n2,currency2,{dropZeroCents:false,...props.priceFormat,...locale?{locale:locale}:{}}),currency=quote2?.currency??item.currency,boxPrice=quote2?.boxPrice??item.price,oneBox=quote2?.oneBox??null,prices=(days,productName=item.title)=>({petName:petName,productName:productName,first:fmt(offer&"e2?quote2.firstBoxPrice:boxPrice,currency),box:fmt(boxPrice,currency),once:fmt(oneBox?.price??boxPrice,currency),onceDiscountPercent:oneBox?.discountPercent??0,intervalDays:days,discountPercent:offer&"e2?quote2.firstBoxDiscountPercent:0,offer:offer}),pr=prices(every),buyMode=canSubscribe?mode:"once",day=iso=>formatHealthPlanDay(iso,locale),nextBoxDay=sub2=>day(sub2.timeline.find(step=>step.step==="next_box_ships")?.on??sub2.nextBoxDate),buyOnce=(target=item)=>{props.onBuy?props.onBuy(target):props.onCheckout?.([target])},others=props.others??[],pressOther=target=>{trackCheckoutStarted(telemetry,petRef,{count:1,subtotal:target.price,currency:target.price===null?null:target.currency}),everfur?redirect("one_box",null,target):buyOnce(target)},press=()=>{if(trackCheckoutStarted(telemetry,petRef,{count:1,subtotal:item.price,currency:item.price===null?null:item.currency}),!canSubscribe){everfur?redirect("one_box",null):buyOnce();return}tapKey.current=null,setSheet({kind:"checkout",mode:buyMode,every:quote2.defaultIntervalDays})},settle=res=>res.ok?(props.onSubscriptionChange?.(res.value),res.value):(say(res.error.displayMessage),null),redirect=async(purchase,intervalDays,target=item)=>{if(typeof window>"u"||redirecting)return;let sig=`${target.productId}:${purchase}:${intervalDays??""}`;checkoutTap.current?.sig!==sig&&(checkoutTap.current={sig:sig,key:mintTapKey()});let here=window.location.href;setRedirecting(true);let res=await pages.startCheckout(petRef,{productId:target.productId,purchase:purchase,...intervalDays===null?{}:{intervalDays:intervalDays},successUrl:checkoutReturnUrl(here,CHECKOUT_PARAM,STRIPE_SESSION_ID),cancelUrl:checkoutReturnUrl(here,CHECKOUT_CANCEL_PARAM,"1")},checkoutTap.current.key);if(setRedirecting(false),!res.ok){say(res.error.displayMessage);return}rememberCheckout(petRef,res.value.checkoutId),props.navigate?props.navigate(res.value.url):window.location.assign(res.value.url)},itemOf2=productId=>planItems.find(x=>x.productId===productId),inCart=productId=>cart.find(x=>x.productId===productId),isPick=productId=>productId===item.productId,lineSub=x=>isPick(x.productId)&&canSubscribe&&!active&&x.mode==="sub",unitOf=x=>isPick(x.productId)?lineSub(x)?offer&"e2?quote2.firstBoxPrice:boxPrice:oneBox?.price??boxPrice:itemOf2(x.productId)?.price??null,lines=cart.filter(x=>itemOf2(x.productId)!==void 0),lineCount=lines.reduce((n2,x)=>n2+x.qty,0),cartTotal=Math.round(lines.reduce((n2,x)=>n2+(unitOf(x)??0)*x.qty,0)*100)/100,subLine=lines.find(lineSub)??null,cartOn=everfur&&!cartOff&&pages.startCartCheckout!==void 0,lineView=x=>{let it=itemOf2(x.productId)??item,subbed=lineSub(x),lp=isPick(x.productId)?prices(x.every,it.title):{...prices(0,it.title),offer:false},pick2=isPick(x.productId),unit=fmt(unitOf(x),pick2?currency:it.currency);return{key:x.productId,name:it.title,imageUrl:it.imageUrl??null,quantity:x.qty,subscription:subbed,price:unit,was:pick2?subbed?offer?lp.box:null:oneBox!==null&&boxPrice!==null&&oneBox.price<boxPrice?lp.box:null:null,note:pick2?subbed?copy.cartSubLine(lp):copy.cartOnceLine(lp,active):null,modes:pick2&&canSubscribe&&!active?{label:copy.cartModeLabel(it.title),sub:{label:copy.cartModeSubscribe(lp),price:lp.first},once:{label:copy.cartModeOnce(lp),price:lp.once}}:null,every:subbed&"e2!==null?{options:quote2.intervalOptions,selected:x.every}:null,maxQuantity:cartOn&&!subbed?MAX_QUANTITY:1,lp:lp}},views=lines.map(lineView),renewPrices=subLine===null?null:prices(subLine.every),addToCart=(target,mode2)=>{if(inCart(target.productId)){push({kind:"cart"});return}let sub2=isPick(target.productId)&&canSubscribe&&!active&&mode2==="sub";setCart(prev=>[...prev,{productId:target.productId,mode:sub2?"sub":"once",every:quote2?.defaultIntervalDays??0,qty:1}]),say(copy.addedToCart(isPick(target.productId)?pr:{...prices(0,target.title),offer:false},sub2))},editLine=(productId,f2)=>setCart(prev=>prev.flatMap(x=>x.productId!==productId?[x]:f2(x)??[])),apart=cartOn&&subLine!==null&&lines.length>1,batch=apart?lines.filter(x=>!lineSub(x)):lines,batchTotal=Math.round(batch.reduce((n2,x)=>n2+(unitOf(x)??0)*x.qty,0)*100)/100,batchSub=batch.find(lineSub)??null,batchRenew=batchSub===null?null:prices(batchSub.every),cartReady=lines.length>0&&lines.every(x=>unitOf(x)!==null)&&(lines.length===1&&(lines[0]?.qty??0)===1?true:cartOn?batch.length>0&&batch.length<=MAX_CART_LINES:!everfur&&props.onCheckout!==void 0&&lines.every(x=>!lineSub(x))),redirectCart=async batchLines=>{if(typeof window>"u"||redirecting||pages.startCartCheckout===void 0)return;let sig=`cart:${batchLines.map(x=>`${x.productId}:${x.qty}:${lineSub(x)?x.every:""}`).join("|")}`;checkoutTap.current?.sig!==sig&&(checkoutTap.current={sig:sig,key:mintTapKey()});let here=window.location.href;setRedirecting(true);let res=await pages.startCartCheckout(petRef,{items:batchLines.map(x=>{let subbing=lineSub(x);return{productId:x.productId,purchase:subbing?"subscription":"one_box",...subbing?{intervalDays:x.every}:{},quantity:subbing?1:x.qty}}),successUrl:checkoutReturnUrl(here,CHECKOUT_PARAM,STRIPE_SESSION_ID),cancelUrl:checkoutReturnUrl(here,CHECKOUT_CANCEL_PARAM,"1")},checkoutTap.current.key);if(setRedirecting(false),!res.ok){let why=healthPlanCheckoutRefusal(res.error);if(why==="cart_disabled"){setCartOff(true),setSheet(null),say(copy.cartOneAtATime===""?res.error.displayMessage:copy.cartOneAtATime);return}if(why==="cart_has_subscription"){setSheet(null),say(copy.cartSubscriptionApart===""?res.error.displayMessage:copy.cartSubscriptionApart);return}say(res.error.displayMessage);return}rememberCheckout(petRef,res.value.checkoutId),props.navigate?props.navigate(res.value.url):window.location.assign(res.value.url)},placeCart=async()=>{if(!cartReady)return;if(everfur&&cartOn&&!(batch.length===1&&(batch[0]?.qty??0)===1)){batch.map(x=>itemOf2(x.productId)).filter(x=>x!==void 0);trackCheckoutStarted(telemetry,petRef,{count:batch.reduce((n2,x)=>n2+x.qty,0),subtotal:batchTotal,currency:currency}),await redirectCart(batch);return}let only=batch.length===1?batch[0]:lines.length===1?lines[0]:void 0;if(only===void 0){props.onCheckout?.(lines.map(x=>itemOf2(x.productId)).filter(x=>x!==void 0));return}let target=itemOf2(only.productId)??item,subbing=lineSub(only);if(trackCheckoutStarted(telemetry,petRef,{count:1,subtotal:unitOf(only),currency:isPick(only.productId)?currency:target.currency}),everfur){await redirect(subbing?"subscription":"one_box",subbing?only.every:null,target);return}if(subbing){let s=settle(await sub.subscribe(only.every));if(s===null)return;bought([s.productId]),setSheet(null),setScreens([]),setStarted({kind:"sub",sub:s});return}if(!isPick(only.productId)||oneBox===null){setSheet(null),buyOnce(target);return}tapKey.current===null&&(tapKey.current=mintTapKey());let res=await sub.buyOneBox(tapKey.current);if(!res.ok){say(res.error.displayMessage);return}tapKey.current=null,props.onOneBoxOrder?.(res.value),bought([res.value.productId]),placed([res.value])},ordersOpen=screens.some(x=>x.kind==="orders"||x.kind==="order");react.useEffect(()=>{if(!shop||!ordersOpen)return;let live=true;return ordersLive.current=true,readOrders(subsRepo,petRef,null).then(res=>{live&&(res.ok?setEverfurOrders({loaded:true,orders:res.value.orders,next:res.value.nextCursor,loading:false}):(setEverfurOrders(prev=>({...prev,loaded:true,loading:false})),say(res.error.displayMessage)))}),()=>{live=false,ordersLive.current=false}},[shop,ordersOpen,petRef,subsRepo]);let ordersLive=react.useRef(false),loadingMore=react.useRef(false),moreOrders=()=>{let cursor=everfurOrders.next;cursor===null||loadingMore.current||(loadingMore.current=true,setEverfurOrders(prev=>({...prev,loading:true})),readOrders(subsRepo,petRef,cursor).then(async res=>{let again=!res.ok&&invalidCursor(res.error)?await readOrders(subsRepo,petRef,null):null;if(loadingMore.current=false,!!ordersLive.current){if(again!==null){again.ok?setEverfurOrders({loaded:true,orders:again.value.orders,next:again.value.nextCursor,loading:false}):(setEverfurOrders(prev=>({...prev,next:null,loading:false})),say(again.error.displayMessage));return}if(res.ok){let page2=res.value;setEverfurOrders(prev=>({loaded:true,orders:[...prev.orders,...page2.orders.filter(o=>!prev.orders.some(x=>x.orderId===o.orderId))],next:page2.nextCursor,loading:false}))}else setEverfurOrders(prev=>({...prev,loading:false})),say(res.error.displayMessage)}}))},weightKnown=props.weightKnown!==false||weightSaved,[weightInput,setWeightInput]=react.useState(""),[weightError,setWeightError]=react.useState(""),[savingWeight,setSavingWeight]=react.useState(false),inKg=props.weightUnit==="kg",saveWeight=async()=>{let typed=Math.round(Number.parseFloat(weightInput.replace(",","."))*10)/10;if(inKg?!(typed>=.5&&typed<=90):!(typed>=1&&typed<=200)){setWeightError(inKg?copy.weightErrorKg:copy.weightError);return}let lb=inKg?Math.round(typed*LB_PER_KG*10)/10:typed,kg=inKg?typed:Math.round(lb/LB_PER_KG*100)/100;setSavingWeight(true);let res=props.onSaveWeight?await props.onSaveWeight(kg,lb):await runtime.updatePet(petRef,{weightKg:kg});if(setSavingWeight(false),!res.ok){setWeightError(res.error.displayMessage);return}setWeightError(""),setWeightSaved(true),setSheet(null),say(inKg?copy.weightSavedKg(String(typed)):copy.weightSaved(String(lb))),props.onWeightSaved?.(kg)},onSubChange=props.onSubscriptionChange,onOrder=props.onOneBoxOrder,refreshQuote=sub.refresh,placed=orders=>{let first=orders[0];if(first!==void 0){if(!shop){setStarted({kind:"once",order:first});return}setRecent(prev=>[...orders,...prev.filter(o=>!orders.some(x=>x.orderId===o.orderId))]),setSheet(null),setScreens([{kind:"placed",orders:orders}])}},bought=productIds=>{let gone=new Set(productIds.filter(x=>x!==null));gone.size>0&&setCart(prev=>prev.filter(x=>!gone.has(x.productId)))},unpaid=()=>{setSheet(null),shop&&setScreens([{kind:"cart"}]),copy.checkoutFailed!==""&&say(copy.checkoutFailed)},slow=()=>{shop&&(setSheet(null),setScreens([{kind:"orders"}]))},returned=react.useRef({onSubChange:onSubChange,onOrder:onOrder,refreshQuote:refreshQuote,placed:placed,bought:bought,unpaid:unpaid,slow:slow});returned.current={onSubChange:onSubChange,onOrder:onOrder,refreshQuote:refreshQuote,placed:placed,bought:bought,unpaid:unpaid,slow:slow},react.useEffect(()=>{if(!everfur||typeof window>"u")return;let params=new URL(window.location.href).searchParams;if(params.has(CHECKOUT_CANCEL_PARAM)){forgetCheckout(),stripCheckoutParams();return}let fromUrl=params.get(CHECKOUT_PARAM);if(fromUrl===null)return;let stored=recallCheckout(),checkoutId=stored?.checkoutId??(fromUrl===STRIPE_SESSION_ID||fromUrl===""?null:fromUrl);if(stored!==null&&stored.petRef!==petRef)return;let done=()=>{forgetCheckout(),stripCheckoutParams()};if(checkoutId===null){done();return}let live=true,timer=null,poll=async tries=>{let res=await pages.getCheckout(petRef,checkoutId);if(!live)return;if(res.ok&&res.value.status==="paid"){done();let{order:order,subscription:run}=res.value,orders=res.value.orders??(order===null?[]:[order]);if(run!==null)returned.current.onSubChange?.(run),setStarted({kind:"sub",sub:run});else if(orders.length>0){for(let o of orders)returned.current.onOrder?.(o);returned.current.placed(orders)}returned.current.bought([run?.productId??null,...orders.map(o=>o.productId)]),returned.current.refreshQuote();return}if((res.ok?res.value.status!=="pending":!res.error.retryable)||tries<=1){done(),res.ok?res.value.status==="failed"||res.value.status==="expired"?returned.current.unpaid():res.value.status==="pending"&&returned.current.slow():say(res.error.displayMessage);return}timer=setTimeout(()=>{poll(tries-1)},CHECKOUT_POLL_MS)};return poll(CHECKOUT_POLL_TRIES),()=>{live=false,timer!==null&&clearTimeout(timer)}},[everfur,petRef,pages]);let img2=(src,size)=>src?/* @__PURE__ */jsxRuntime.jsx("img",{src:src,alt:"",width:size,height:size}):null,tag=label=>label===void 0?null:/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[" ",
|
|
222
|
+
/* @__PURE__ */jsxRuntime.jsx("b",{children:r.value})]},r.label))}):null,a.onBuyAgain===null&&a.onHelp===null?null:/* @__PURE__ */jsxRuntime.jsxs("div",{...p("shopActions"),children:[a.onBuyAgain===null?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("buttonGhost"),onClick:a.onBuyAgain,children:copy.buyAgain}),a.onHelp===null?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("shopLink"),onClick:a.onHelp,children:copy.orderHelp})]}),fine===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{...p("shopFine"),children:fine})]})}function andList(names){return names.length<=1?names[0]??"":`${names.slice(0,-1).join(", ")} and ${names[names.length-1]??""}`}var FLASH_MS=900,FLASH_STEP_MS=80;function HealthPlanBlanks(props){let{phase:phase,rows:rows,p:p,flashKey:flashKey,flashColor:flashColor}=props,card=react.useRef(null),flashed=react.useRef(null),all=rows.every(r=>r.value!==null),st=phase==="filled"&&!all?"partial":phase;return react.useLayoutEffect(()=>{if(flashKey==null||flashed.current===flashKey||phase!=="filled")return;flashed.current=flashKey,(card.current===null?[]:Array.from(card.current.querySelectorAll("ol > li > span > i"))).forEach((el,i)=>{rows[i]?.value===null||typeof el.animate!="function"||el.animate([{background:flashColor},{background:flashColor,offset:.4},{background:"transparent"}],{duration:FLASH_MS,delay:i*FLASH_STEP_MS,easing:"ease-out",fill:"backwards"})})},[flashKey,flashColor,phase]),/* @__PURE__ */jsxRuntime.jsx("section",{...p("blanks"),"aria-label":props.label,children:/* @__PURE__ */jsxRuntime.jsxs("div",{ref:card,...p("blanksCard"),"data-st":st,children:[
|
|
223
|
+
/* @__PURE__ */jsxRuntime.jsxs("p",{...p("blanksHead"),children:[
|
|
224
|
+
/* @__PURE__ */jsxRuntime.jsx("span",{children:props.kicker}),
|
|
225
|
+
/* @__PURE__ */jsxRuntime.jsx("em",{children:props.pill})]}),
|
|
226
|
+
/* @__PURE__ */jsxRuntime.jsx("ol",{children:rows.map((r,i)=>/* @__PURE__ */jsxRuntime.jsxs("li",{children:[
|
|
227
|
+
/* @__PURE__ */jsxRuntime.jsx("b",{"aria-hidden":"true",children:i+1}),
|
|
228
|
+
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[r.lead,
|
|
229
|
+
/* @__PURE__ */jsxRuntime.jsx("i",{...p("blank",r.width),children:phase!=="empty"&&r.value!==null?r.value:/* @__PURE__ */jsxRuntime.jsx("span",{...p("srOnly"),children:props.blankLabel})}),r.trail]}),
|
|
230
|
+
/* @__PURE__ */jsxRuntime.jsx("small",{children:r.source})]},r.key))})]})})}var SIGNALS_SYMBOL=/* @__PURE__ */Symbol.for("@everfur/sdk#HealthPlanSignals@v1"),signalHost=globalThis;function isSignalState(value){if(typeof value!="object"||value===null)return false;let v=value;return v.landed instanceof Set&&v.noVet instanceof Set&&v.noVetByPet instanceof Map}var stored=signalHost[SIGNALS_SYMBOL],fresh=()=>({landed:/* @__PURE__ */new Set,noVet:/* @__PURE__ */new Set,noVetByPet:/* @__PURE__ */new Map}),state=isSignalState(stored)?stored:signalHost[SIGNALS_SYMBOL]=fresh(),landedListeners=state.landed,noVetListeners=state.noVet,noVetByPet=state.noVetByPet;function notifyHealthPlanRecordsLanded(petRef,source="host"){for(let listener of[...landedListeners])try{listener(petRef,source)}catch{}}function onHealthPlanRecordsLanded(listener){return landedListeners.add(listener),()=>{landedListeners.delete(listener)}}function setHealthPlanNoVet(petRef,noVet){if((noVetByPet.get(petRef)??false)!==noVet){noVet?noVetByPet.set(petRef,true):noVetByPet.delete(petRef);for(let listener of[...noVetListeners])try{listener(petRef,noVet)}catch{}}}function healthPlanNoVet(petRef){return noVetByPet.get(petRef)??false}function onHealthPlanNoVet(listener){return noVetListeners.add(listener),()=>{noVetListeners.delete(listener)}}var MAX_QUANTITY=5,MAX_CART_LINES=10,ORDERS_PAGE=20,LB_PER_KG=2.20462262;function HealthPlanFocus(props){let{design:design,item:item,petRef:petRef,petName:petName,locale:locale}=props,hostClasses=props.classNames!==void 0,classNames=props.classNames??PLAN_DEFAULT_CLASS_NAMES,theme=useEverfurTheme(),telemetry=useHealthPlanTelemetry(),petSex=props.petSex??null,trackingTexts=props.trackingTexts===true,copy=react.useMemo(()=>{let merged={...healthPlanFocusCopyFor({name:petName,sex:petSex}),...design.copy,...props.copy};return trackingTexts?merged:{...merged,trackingComesByText:"",trackingByText:""}},[design.copy,props.copy,petName,petSex,trackingTexts]),withTracking=line=>[line,copy.trackingComesByText].filter(x=>x!=="").join(" "),sub=useHealthPlanSubscription({petRef:petRef,productId:item.productId,enabled:props.subscriptions!==false&&design.pick.none!==true,...props.subscriptionRepository?{repository:props.subscriptionRepository}:{},...props.lifecycle!==void 0?{lifecycle:props.lifecycle}:{},...props.refreshKey!==void 0?{refreshKey:props.refreshKey}:{}}),p=react.useCallback((part,kind)=>{let base3=classNames[part],mod=kind===void 0?void 0:classNames[`${part}:${kind}`],cls=[base3,mod].filter(c=>c!==void 0&&c!=="").join(" ");return cls===""?{}:{className:cls}},[classNames]),on=classNames.stateOn??"is-on",styles2=usePlanStyles(hostClasses?null:theme,props.style),flashColor=react.useMemo(()=>planTokens(theme).accent??"transparent",[theme]),icon=(name,cls)=>props.renderIcon?props.renderIcon(name,cls):/* @__PURE__ */jsxRuntime.jsx(DefaultIcon,{name:name,className:cls}),[mode,setMode]=react.useState("sub"),[added,setAdded]=react.useState(false),[extras,setExtras]=react.useState(()=>/* @__PURE__ */new Set),[sheet,setSheet]=react.useState(null),[started,setStarted]=react.useState(null),tapKey=react.useRef(null),[toast,setToast]=react.useState(null),everfur=props.checkout==="everfur_stripe",ownPages=useHealthPlanPageRepository(),pages=props.pageRepository??ownPages,checkoutTap=react.useRef(null),[redirecting,setRedirecting]=react.useState(false),pickRef=react.useRef(null),toastTimer=react.useRef(null);react.useEffect(()=>()=>{toastTimer.current!==null&&clearTimeout(toastTimer.current)},[]);let say=line=>{setToast(line),toastTimer.current!==null&&clearTimeout(toastTimer.current),toastTimer.current=setTimeout(()=>setToast(null),2600)},shop=props.shop??props.checkout==="everfur_stripe",[cart,setCart]=useCartLines(petRef,shop),[screens,setScreens]=react.useState([]),ownSubs=useHealthPlanSubscriptionRepository(),subsRepo=props.subscriptionRepository??ownSubs,[everfurOrders,setEverfurOrders]=react.useState({loaded:false,orders:[],next:null,loading:false}),[cartOff,setCartOff]=react.useState(false),[weightSaved,setWeightSaved]=react.useState(false),{runtime:runtime}=useEverfurContext(),[recent,setRecent]=react.useState([]),planItems=[item,...props.others??[]],seen=/* @__PURE__ */new Set,allOrders=[...[...recent,...everfurOrders.orders].filter(o=>seen.has(o.orderId)?false:(seen.add(o.orderId),true)).map(o=>everfurOrderView(o,planItems)),...(props.shopOrders??[]).map(hostOrderView)],orderNumber=key=>key===null?null:allOrders.find(o=>o.key===key)?.number??null,push=react.useCallback(screen=>{setSheet(null),setScreens(prev=>[...prev.filter(x=>x.kind!==screen.kind),screen])},[]),top=screens.length>0?screens[screens.length-1]:void 0,overlay=sheet!==null&&(sheet.kind==="checkout"||sheet.kind==="manage"||sheet.kind==="cartCheckout"||sheet.kind==="weight")?sheet.kind:started!==null?"started":top!==void 0?top.kind:null,under=started!==null?"started":top!==void 0?top.kind:null,orderTitle=top?.kind==="order"?top.key:null,onOverlayChange=props.onOverlayChange,closeOverlays=react.useCallback(()=>{setSheet(null),setStarted(null),setScreens([])},[]),back=react.useCallback(()=>{sheet!==null?setSheet(null):started!==null?setStarted(null):setScreens(prev=>prev.slice(0,-1))},[sheet,started]),title=(o=>{switch(o){case"started":return started?.kind==="once"?copy.placedHeader:copy.startedHeader;case"cart":return copy.cartTitle;case"placed":return copy.placedHeader;case"orders":return copy.orders;case"order":return copy.orderTitle(orderNumber(orderTitle));default:return}})(under),full=under==="started"||under==="cart"||under==="placed";react.useEffect(()=>{onOverlayChange?.(overlay,{close:closeOverlays,back:back,...title===void 0?{}:{title:title},...full?{full:full}:{}})},[overlay,onOverlayChange,closeOverlays,back,title,full]);let backRef=react.useRef(back);backRef.current=back;let layered=sheet!==null||started!==null||top!==void 0;react.useEffect(()=>{if(!layered||typeof document>"u")return;let onKey=e=>{e.key==="Escape"&&!e.defaultPrevented&&backRef.current()};return document.addEventListener("keydown",onKey),()=>document.removeEventListener("keydown",onKey)},[layered]);let sheetEl=react.useRef(null),screenEl=react.useRef(null),sheetRef=react.useCallback(el=>{sheetEl.current=el,styles2.layer(el)},[styles2]),screenRef=react.useCallback(el=>{screenEl.current=el,styles2.layer(el)},[styles2]),sheetKind=sheet?.kind??null,screenKey=started!==null||top===void 0?null:top.kind==="order"?`order:${top.key}`:top.kind;react.useEffect(()=>{let el=sheetEl.current;sheetKind===null||el===null||el.contains(el.ownerDocument.activeElement)||el.querySelector(`#${SHEET_TITLE_ID}`)?.focus({preventScroll:true})},[sheetKind]),react.useEffect(()=>{let el=screenEl.current;screenKey===null||el===null||el.contains(el.ownerDocument.activeElement)||el.focus({preventScroll:true})},[screenKey]);let quote2=sub.phase==="ready"?sub.quote:null,subscription=sub.subscription,active=subscription?.status==="active",priced=(quote2?.boxPrice??item.price)!==null,canSubscribe=quote2!==null&&priced,offer=canSubscribe&"e2.offerApplies&&subscription===null,every=active?subscription.intervalDays:canSubscribe?quote2.defaultIntervalDays:0,fmt=(n2,currency2)=>formatHealthPlanPriceWith(n2,currency2,{dropZeroCents:false,...props.priceFormat,...locale?{locale:locale}:{}}),currency=quote2?.currency??item.currency,boxPrice=quote2?.boxPrice??item.price,oneBox=quote2?.oneBox??null,prices=(days,productName=item.title)=>({petName:petName,productName:productName,first:fmt(offer&"e2?quote2.firstBoxPrice:boxPrice,currency),box:fmt(boxPrice,currency),once:fmt(oneBox?.price??boxPrice,currency),onceDiscountPercent:oneBox?.discountPercent??0,intervalDays:days,discountPercent:offer&"e2?quote2.firstBoxDiscountPercent:0,offer:offer}),pr=prices(every),buyMode=canSubscribe?mode:"once",day=iso=>formatHealthPlanDay(iso,locale),nextBoxDay=sub2=>day(sub2.timeline.find(step=>step.step==="next_box_ships")?.on??sub2.nextBoxDate),buyOnce=(target=item)=>{props.onBuy?props.onBuy(target):props.onCheckout?.([target])},others=props.others??[],pressOther=target=>{trackCheckoutStarted(telemetry,petRef,{count:1,subtotal:target.price,currency:target.price===null?null:target.currency}),everfur?redirect("one_box",null,target):buyOnce(target)},press=()=>{if(trackCheckoutStarted(telemetry,petRef,{count:1,subtotal:item.price,currency:item.price===null?null:item.currency}),!canSubscribe){everfur?redirect("one_box",null):buyOnce();return}tapKey.current=null,setSheet({kind:"checkout",mode:buyMode,every:quote2.defaultIntervalDays})},settle=res=>res.ok?(props.onSubscriptionChange?.(res.value),res.value):(say(res.error.displayMessage),null),redirect=async(purchase,intervalDays,target=item)=>{if(typeof window>"u"||redirecting)return;let sig=`${target.productId}:${purchase}:${intervalDays??""}`;checkoutTap.current?.sig!==sig&&(checkoutTap.current={sig:sig,key:mintTapKey()});let here=window.location.href;setRedirecting(true);let res=await pages.startCheckout(petRef,{productId:target.productId,purchase:purchase,...intervalDays===null?{}:{intervalDays:intervalDays},successUrl:checkoutReturnUrl(here,CHECKOUT_PARAM,STRIPE_SESSION_ID),cancelUrl:checkoutReturnUrl(here,CHECKOUT_CANCEL_PARAM,"1")},checkoutTap.current.key);if(setRedirecting(false),!res.ok){say(res.error.displayMessage);return}rememberCheckout(petRef,res.value.checkoutId),props.navigate?props.navigate(res.value.url):window.location.assign(res.value.url)},itemOf2=productId=>planItems.find(x=>x.productId===productId),inCart=productId=>cart.find(x=>x.productId===productId),isPick=productId=>productId===item.productId,lineSub=x=>isPick(x.productId)&&canSubscribe&&!active&&x.mode==="sub",unitOf=x=>isPick(x.productId)?lineSub(x)?offer&"e2?quote2.firstBoxPrice:boxPrice:oneBox?.price??boxPrice:itemOf2(x.productId)?.price??null,lines=cart.filter(x=>itemOf2(x.productId)!==void 0),lineCount=lines.reduce((n2,x)=>n2+x.qty,0),cartTotal=Math.round(lines.reduce((n2,x)=>n2+(unitOf(x)??0)*x.qty,0)*100)/100,subLine=lines.find(lineSub)??null,cartOn=everfur&&!cartOff&&pages.startCartCheckout!==void 0,lineView=x=>{let it=itemOf2(x.productId)??item,subbed=lineSub(x),lp=isPick(x.productId)?prices(x.every,it.title):{...prices(0,it.title),offer:false},pick2=isPick(x.productId),unit=fmt(unitOf(x),pick2?currency:it.currency);return{key:x.productId,name:it.title,imageUrl:it.imageUrl??null,quantity:x.qty,subscription:subbed,price:unit,was:pick2?subbed?offer?lp.box:null:oneBox!==null&&boxPrice!==null&&oneBox.price<boxPrice?lp.box:null:null,note:pick2?subbed?copy.cartSubLine(lp):copy.cartOnceLine(lp,active):null,modes:pick2&&canSubscribe&&!active?{label:copy.cartModeLabel(it.title),sub:{label:copy.cartModeSubscribe(lp),price:lp.first},once:{label:copy.cartModeOnce(lp),price:lp.once}}:null,every:subbed&"e2!==null?{options:quote2.intervalOptions,selected:x.every}:null,maxQuantity:cartOn&&!subbed?MAX_QUANTITY:1,lp:lp}},views=lines.map(lineView),renewPrices=subLine===null?null:prices(subLine.every),addToCart=(target,mode2)=>{if(inCart(target.productId)){push({kind:"cart"});return}let sub2=isPick(target.productId)&&canSubscribe&&!active&&mode2==="sub";setCart(prev=>[...prev,{productId:target.productId,mode:sub2?"sub":"once",every:quote2?.defaultIntervalDays??0,qty:1}]),say(copy.addedToCart(isPick(target.productId)?pr:{...prices(0,target.title),offer:false},sub2))},editLine=(productId,f2)=>setCart(prev=>prev.flatMap(x=>x.productId!==productId?[x]:f2(x)??[])),apart=cartOn&&subLine!==null&&lines.length>1,batch=apart?lines.filter(x=>!lineSub(x)):lines,batchTotal=Math.round(batch.reduce((n2,x)=>n2+(unitOf(x)??0)*x.qty,0)*100)/100,batchSub=batch.find(lineSub)??null,batchRenew=batchSub===null?null:prices(batchSub.every),cartReady=lines.length>0&&lines.every(x=>unitOf(x)!==null)&&(lines.length===1&&(lines[0]?.qty??0)===1?true:cartOn?batch.length>0&&batch.length<=MAX_CART_LINES:!everfur&&props.onCheckout!==void 0&&lines.every(x=>!lineSub(x))),redirectCart=async batchLines=>{if(typeof window>"u"||redirecting||pages.startCartCheckout===void 0)return;let sig=`cart:${batchLines.map(x=>`${x.productId}:${x.qty}:${lineSub(x)?x.every:""}`).join("|")}`;checkoutTap.current?.sig!==sig&&(checkoutTap.current={sig:sig,key:mintTapKey()});let here=window.location.href;setRedirecting(true);let res=await pages.startCartCheckout(petRef,{items:batchLines.map(x=>{let subbing=lineSub(x);return{productId:x.productId,purchase:subbing?"subscription":"one_box",...subbing?{intervalDays:x.every}:{},quantity:subbing?1:x.qty}}),successUrl:checkoutReturnUrl(here,CHECKOUT_PARAM,STRIPE_SESSION_ID),cancelUrl:checkoutReturnUrl(here,CHECKOUT_CANCEL_PARAM,"1")},checkoutTap.current.key);if(setRedirecting(false),!res.ok){let why=healthPlanCheckoutRefusal(res.error);if(why==="cart_disabled"){setCartOff(true),setSheet(null),say(copy.cartOneAtATime===""?res.error.displayMessage:copy.cartOneAtATime);return}if(why==="cart_has_subscription"){setSheet(null),say(copy.cartSubscriptionApart===""?res.error.displayMessage:copy.cartSubscriptionApart);return}say(res.error.displayMessage);return}rememberCheckout(petRef,res.value.checkoutId),props.navigate?props.navigate(res.value.url):window.location.assign(res.value.url)},placeCart=async()=>{if(!cartReady)return;if(everfur&&cartOn&&!(batch.length===1&&(batch[0]?.qty??0)===1)){batch.map(x=>itemOf2(x.productId)).filter(x=>x!==void 0);trackCheckoutStarted(telemetry,petRef,{count:batch.reduce((n2,x)=>n2+x.qty,0),subtotal:batchTotal,currency:currency}),await redirectCart(batch);return}let only=batch.length===1?batch[0]:lines.length===1?lines[0]:void 0;if(only===void 0){props.onCheckout?.(lines.map(x=>itemOf2(x.productId)).filter(x=>x!==void 0));return}let target=itemOf2(only.productId)??item,subbing=lineSub(only);if(trackCheckoutStarted(telemetry,petRef,{count:1,subtotal:unitOf(only),currency:isPick(only.productId)?currency:target.currency}),everfur){await redirect(subbing?"subscription":"one_box",subbing?only.every:null,target);return}if(subbing){let s=settle(await sub.subscribe(only.every));if(s===null)return;bought([s.productId]),setSheet(null),setScreens([]),setStarted({kind:"sub",sub:s});return}if(!isPick(only.productId)||oneBox===null){setSheet(null),buyOnce(target);return}tapKey.current===null&&(tapKey.current=mintTapKey());let res=await sub.buyOneBox(tapKey.current);if(!res.ok){say(res.error.displayMessage);return}tapKey.current=null,props.onOneBoxOrder?.(res.value),bought([res.value.productId]),placed([res.value])},ordersOpen=screens.some(x=>x.kind==="orders"||x.kind==="order");react.useEffect(()=>{if(!shop||!ordersOpen)return;let live=true;return ordersLive.current=true,readOrders(subsRepo,petRef,null).then(res=>{live&&(res.ok?setEverfurOrders({loaded:true,orders:res.value.orders,next:res.value.nextCursor,loading:false}):(setEverfurOrders(prev=>({...prev,loaded:true,loading:false})),say(res.error.displayMessage)))}),()=>{live=false,ordersLive.current=false}},[shop,ordersOpen,petRef,subsRepo]);let ordersLive=react.useRef(false),loadingMore=react.useRef(false),moreOrders=()=>{let cursor=everfurOrders.next;cursor===null||loadingMore.current||(loadingMore.current=true,setEverfurOrders(prev=>({...prev,loading:true})),readOrders(subsRepo,petRef,cursor).then(async res=>{let again=!res.ok&&invalidCursor(res.error)?await readOrders(subsRepo,petRef,null):null;if(loadingMore.current=false,!!ordersLive.current){if(again!==null){again.ok?setEverfurOrders({loaded:true,orders:again.value.orders,next:again.value.nextCursor,loading:false}):(setEverfurOrders(prev=>({...prev,next:null,loading:false})),say(again.error.displayMessage));return}if(res.ok){let page2=res.value;setEverfurOrders(prev=>({loaded:true,orders:[...prev.orders,...page2.orders.filter(o=>!prev.orders.some(x=>x.orderId===o.orderId))],next:page2.nextCursor,loading:false}))}else setEverfurOrders(prev=>({...prev,loading:false})),say(res.error.displayMessage)}}))},weightKnown=props.weightKnown!==false||weightSaved,[weightInput,setWeightInput]=react.useState(""),[weightError,setWeightError]=react.useState(""),[savingWeight,setSavingWeight]=react.useState(false),inKg=props.weightUnit==="kg",saveWeight=async()=>{let typed=Math.round(Number.parseFloat(weightInput.replace(",","."))*10)/10;if(inKg?!(typed>=.5&&typed<=90):!(typed>=1&&typed<=200)){setWeightError(inKg?copy.weightErrorKg:copy.weightError);return}let lb=inKg?Math.round(typed*LB_PER_KG*10)/10:typed,kg=inKg?typed:Math.round(lb/LB_PER_KG*100)/100;setSavingWeight(true);let res=props.onSaveWeight?await props.onSaveWeight(kg,lb):await runtime.updatePet(petRef,{weightKg:kg});if(setSavingWeight(false),!res.ok){setWeightError(res.error.displayMessage);return}setWeightError(""),setWeightSaved(true),setSheet(null),say(inKg?copy.weightSavedKg(String(typed)):copy.weightSaved(String(lb))),props.onWeightSaved?.(kg)},[storeNoVet,setStoreNoVet]=react.useState(()=>healthPlanNoVet(petRef));react.useEffect(()=>(setStoreNoVet(healthPlanNoVet(petRef)),onHealthPlanNoVet((pet,none)=>{pet===petRef&&setStoreNoVet(none)})),[petRef]);let noVet=props.noVet??storeNoVet,blanksFacts=props.recordsBlanks??null,[flashKey,setFlashKey]=react.useState(null),hostSaid=react.useRef(false);react.useEffect(()=>(hostSaid.current=false,onHealthPlanRecordsLanded((pet,source)=>{pet===petRef&&source==="host"&&(hostSaid.current=true)})),[petRef]);let blanksPhase=blanksFacts?.phase??null,blanksId=blanksFacts?.requestId??null,landed=react.useRef({say:say,line:copy.recordsLanded});landed.current={say:say,line:copy.recordsLanded},react.useEffect(()=>{if(blanksId===null)return;let memo=blanksMemo(petRef);if(blanksPhase==="wait"){memo.waited!==blanksId&&setBlanksMemo(petRef,{...memo,waited:blanksId});return}memo.flashed!==blanksId&&(setBlanksMemo(petRef,{...memo,flashed:blanksId}),!(memo.waited!==blanksId&&!hostSaid.current)&&(hostSaid.current=false,setFlashKey(blanksId),landed.current.line!==""&&landed.current.say(landed.current.line),notifyHealthPlanRecordsLanded(petRef,"plan")))},[blanksPhase,blanksId,petRef]);let onSubChange=props.onSubscriptionChange,onOrder=props.onOneBoxOrder,refreshQuote=sub.refresh,placed=orders=>{let first=orders[0];if(first!==void 0){if(!shop){setStarted({kind:"once",order:first});return}setRecent(prev=>[...orders,...prev.filter(o=>!orders.some(x=>x.orderId===o.orderId))]),setSheet(null),setScreens([{kind:"placed",orders:orders}])}},bought=productIds=>{let gone=new Set(productIds.filter(x=>x!==null));gone.size>0&&setCart(prev=>prev.filter(x=>!gone.has(x.productId)))},unpaid=()=>{setSheet(null),shop&&setScreens([{kind:"cart"}]),copy.checkoutFailed!==""&&say(copy.checkoutFailed)},slow=()=>{shop&&(setSheet(null),setScreens([{kind:"orders"}]))},returned=react.useRef({onSubChange:onSubChange,onOrder:onOrder,refreshQuote:refreshQuote,placed:placed,bought:bought,unpaid:unpaid,slow:slow});returned.current={onSubChange:onSubChange,onOrder:onOrder,refreshQuote:refreshQuote,placed:placed,bought:bought,unpaid:unpaid,slow:slow},react.useEffect(()=>{if(!everfur||typeof window>"u")return;let params=new URL(window.location.href).searchParams;if(params.has(CHECKOUT_CANCEL_PARAM)){forgetCheckout(),stripCheckoutParams();return}let fromUrl=params.get(CHECKOUT_PARAM);if(fromUrl===null)return;let stored2=recallCheckout(),checkoutId=stored2?.checkoutId??(fromUrl===STRIPE_SESSION_ID||fromUrl===""?null:fromUrl);if(stored2!==null&&stored2.petRef!==petRef)return;let done=()=>{forgetCheckout(),stripCheckoutParams()};if(checkoutId===null){done();return}let live=true,timer=null,poll=async tries=>{let res=await pages.getCheckout(petRef,checkoutId);if(!live)return;if(res.ok&&res.value.status==="paid"){done();let{order:order,subscription:run}=res.value,orders=res.value.orders??(order===null?[]:[order]);if(run!==null)returned.current.onSubChange?.(run),setStarted({kind:"sub",sub:run});else if(orders.length>0){for(let o of orders)returned.current.onOrder?.(o);returned.current.placed(orders)}returned.current.bought([run?.productId??null,...orders.map(o=>o.productId)]),returned.current.refreshQuote();return}if((res.ok?res.value.status!=="pending":!res.error.retryable)||tries<=1){done(),res.ok?res.value.status==="failed"||res.value.status==="expired"?returned.current.unpaid():res.value.status==="pending"&&returned.current.slow():say(res.error.displayMessage);return}timer=setTimeout(()=>{poll(tries-1)},CHECKOUT_POLL_MS)};return poll(CHECKOUT_POLL_TRIES),()=>{live=false,timer!==null&&clearTimeout(timer)}},[everfur,petRef,pages]);let img2=(src,size)=>src?/* @__PURE__ */jsxRuntime.jsx("img",{src:src,alt:"",width:size,height:size}):null,tag=label=>label===void 0?null:/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[" ",
|
|
223
231
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("tag"),children:label})]}),n=k=>/* @__PURE__ */jsxRuntime.jsx("span",{...p("n"),children:k}),sec=1,f=design.focus,pk=design.pick,checkupBody=as=>{let c=design.checkup;return c===void 0?null:/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[as==="kicker"?/* @__PURE__ */jsxRuntime.jsx("h4",{id:"everfur-hp-qs",...p("questionsKicker"),children:c.title}):/* @__PURE__ */jsxRuntime.jsxs("h3",{id:"everfur-hp-qs",...p("sectionTitle"),children:[n(sec++),c.title]}),
|
|
224
232
|
/* @__PURE__ */jsxRuntime.jsx("ol",{...p("questions"),"aria-labelledby":"everfur-hp-qs",children:c.questions.map(q=>/* @__PURE__ */jsxRuntime.jsx("li",{children:q},q))}),
|
|
225
|
-
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("add"),"aria-pressed":added,onClick:()=>{let next=!added;setAdded(next),props.onAddToVisit?.(next,c.questions)},children:added?c.added:c.add})]})},kit={p:p,icon:icon,copy:copy,trackLine:!hostClasses},waiting=design.wait!==void 0,tools=shop?/* @__PURE__ */jsxRuntime.jsxs("div",{...p("tools"),children:[design.eyebrow?/* @__PURE__ */jsxRuntime.jsx("p",{...p("eyebrow"),children:design.eyebrow}):/* @__PURE__ */jsxRuntime.jsx("span",{}),
|
|
233
|
+
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("add"),"aria-pressed":added,onClick:()=>{let next=!added;setAdded(next),props.onAddToVisit?.(next,c.questions)},children:noRecords||noVet?added?copy.savedForCheckup:copy.saveForCheckup:added?c.added:c.add})]})},kit={p:p,icon:icon,copy:copy,trackLine:!hostClasses},waiting=design.wait!==void 0,tools=shop?/* @__PURE__ */jsxRuntime.jsxs("div",{...p("tools"),children:[design.eyebrow?/* @__PURE__ */jsxRuntime.jsx("p",{...p("eyebrow"),children:design.eyebrow}):/* @__PURE__ */jsxRuntime.jsx("span",{}),
|
|
226
234
|
/* @__PURE__ */jsxRuntime.jsxs("span",{...p("toolsEnd"),children:[
|
|
227
235
|
/* @__PURE__ */jsxRuntime.jsxs("button",{type:"button",...p("ordersButton"),onClick:()=>push({kind:"orders"}),children:[icon("box"),copy.orders]}),
|
|
228
236
|
/* @__PURE__ */jsxRuntime.jsxs("button",{type:"button",...p("cartButton"),"aria-label":copy.cartLabel(lineCount),onClick:()=>push({kind:"cart"}),children:[icon("cart"),
|
|
229
|
-
/* @__PURE__ */jsxRuntime.jsx("span",{...p("cartCount"),hidden:lineCount===0,children:lineCount===0?null:lineCount})]})]})]}):null,pickInCart=shop&&inCart(item.productId)!==void 0,
|
|
237
|
+
/* @__PURE__ */jsxRuntime.jsx("span",{...p("cartCount"),hidden:lineCount===0,children:lineCount===0?null:lineCount})]})]})]}):null,pickInCart=shop&&inCart(item.productId)!==void 0,vet=design.byline??null,noPick=pk.none===true,noRecords=props.recordsMissing===true,vetSignTitle=title2=>noVet?copy.callAVet:noRecords?copy.callYourVet:title2,blanksShown=blanksFacts!==null&&!waiting,blanksCard=null;if(blanksShown){let filled=blanksFacts.phase==="filled",kg=blanksFacts.weightKg,marked=pk.dose?.stats.some(x=>x.kind!==void 0)===true,daily=(noPick?void 0:marked?pk.dose?.stats.find(x=>x.kind==="dose"):pk.dose?.stats[0])??(noPick||pk.doseLabel===void 0?void 0:{value:null,label:pk.doseLabel}),rows=[{key:"weight",lead:copy.blanksWeight,value:!filled||kg===null?null:String(inKg?Math.round(kg*10)/10:Math.round(kg*LB_PER_KG)),trail:` ${inKg?copy.weightUnitKg:copy.weightUnit}`,source:copy.blanksWeightSource},...daily===void 0?[]:[{key:"dose",lead:"",value:filled&&weightKnown?daily.value:null,trail:` ${copy.blanksDose(daily.label,item.title)}`,source:copy.blanksDoseSource,width:"s"}],{key:"shots",lead:copy.blanksShots,value:filled&&blanksFacts.nextShotsAt!==null?blanksDay(blanksFacts.nextShotsAt,locale):null,trail:"",source:copy.blanksShotsSource,width:"l"}],count=rows.filter(r=>r.value!==null).length;blanksCard=/* @__PURE__ */jsxRuntime.jsx(HealthPlanBlanks,{phase:blanksFacts.phase,kicker:filled?copy.blanksFilledKicker:blanksFacts.clinicName!==null?copy.blanksAsked(blanksFacts.clinicName):copy.blanksAskedNoClinic,pill:filled?copy.blanksFilled(count,rows.length):copy.blanksWaitPill,rows:rows,blankLabel:copy.blankEmpty,label:copy.blanksLabel,flashKey:flashKey,flashColor:flashColor,p:p})}let connectRow=(noRecords||noVet)&&props.onConnectRecords&&!blanksShown?shopAskRow(kit,"file",copy.connectRecordsTitle,copy.connectRecordsBody,props.onConnectRecords):null,extraItems=(design.extras?.items??[]).filter(x=>x.owned!==true),page=/* @__PURE__ */jsxRuntime.jsxs("div",{ref:styles2.root,...mergeRoot(p("root"),props.className,props.style),children:[tools,
|
|
230
238
|
/* @__PURE__ */jsxRuntime.jsxs("header",{...p("head"),children:[
|
|
231
239
|
/* @__PURE__ */jsxRuntime.jsxs("div",{children:[design.eyebrow&&!shop?/* @__PURE__ */jsxRuntime.jsx("p",{...p("eyebrow"),children:design.eyebrow}):null,
|
|
232
|
-
/* @__PURE__ */jsxRuntime.jsx("h2",{...p("serif"),children:design.title}),design.subtitle?/* @__PURE__ */jsxRuntime.jsx("p",{children:design.subtitle}):null]}),img2(design.headImageUrl,56)]}),design.wait?shopWait(kit,design.wait,props.onWaitAction):null,design.byline&&!waiting?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("by"),children:[img2(design.byline.imageUrl,40),
|
|
240
|
+
/* @__PURE__ */jsxRuntime.jsx("h2",{...p("serif"),children:design.title}),design.subtitle?/* @__PURE__ */jsxRuntime.jsx("p",{children:design.subtitle}):null]}),img2(design.headImageUrl,56)]}),blanksCard,design.wait?shopWait(kit,design.wait,props.onWaitAction,vet?.name??null):null,design.byline&&!waiting?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("by"),children:[img2(design.byline.imageUrl,40),
|
|
233
241
|
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[
|
|
234
|
-
/* @__PURE__ */jsxRuntime.jsx("strong",{children:design.byline.name}),design.byline.role?/* @__PURE__ */jsxRuntime.jsx("small",{children:design.byline.role}):null]}),icon("shield",classNames.byOk)]}):null,f&&!waiting?/* @__PURE__ */jsxRuntime.jsxs("section",{...p("need"),"aria-label":f.title,children:[
|
|
242
|
+
/* @__PURE__ */jsxRuntime.jsx("strong",{children:copy.builtWith(design.byline.name)}),design.byline.role?/* @__PURE__ */jsxRuntime.jsx("small",{children:design.byline.role}):null]}),icon("shield",classNames.byOk)]}):null,f&&!waiting?/* @__PURE__ */jsxRuntime.jsxs("section",{...p("need"),"aria-label":f.title,children:[
|
|
235
243
|
/* @__PURE__ */jsxRuntime.jsxs("p",{...p("needKicker"),children:[f.kicker,f.sources&&f.sources.length>0?/* @__PURE__ */jsxRuntime.jsx("span",{...p("sources"),children:f.sources.map(s=>/* @__PURE__ */jsxRuntime.jsx("span",{...p("source",s.kind),children:s.label},s.label))}):null]}),
|
|
236
244
|
/* @__PURE__ */jsxRuntime.jsx("h3",{children:f.title}),f.risk?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("needRisk"),children:[
|
|
237
245
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("dot",f.risk.kind)}),
|
|
@@ -240,12 +248,11 @@ return jsxRuntime.jsxs("div",{...p("shop"),children:[
|
|
|
240
248
|
/* @__PURE__ */jsxRuntime.jsxs("p",{...p("oddsKicker"),children:[f.odds.label,tag(f.odds.tag)]}),
|
|
241
249
|
/* @__PURE__ */jsxRuntime.jsxs("p",{...p("oddsNumbers"),children:[
|
|
242
250
|
/* @__PURE__ */jsxRuntime.jsx("s",{children:f.odds.from}),icon("arrow"),
|
|
243
|
-
/* @__PURE__ */jsxRuntime.jsx("b",{children:f.odds.to}),f.odds.toLabel?/* @__PURE__ */jsxRuntime.jsx("span",{children:f.odds.toLabel}):null]})]}):null,f.quote&&
|
|
244
|
-
/* @__PURE__ */jsxRuntime.jsx("img",{src:
|
|
245
|
-
/* @__PURE__ */jsxRuntime.jsxs("p",{children:[
|
|
246
|
-
/* @__PURE__ */jsxRuntime.jsx("b",{children:
|
|
247
|
-
/* @__PURE__ */jsxRuntime.
|
|
248
|
-
/* @__PURE__ */jsxRuntime.jsx("p",{...p("serif"),children:f.quote.text})]}):null,f.jump?/* @__PURE__ */jsxRuntime.jsxs("button",{type:"button",...p("jump"),onClick:()=>pickRef.current?.scrollIntoView({behavior:"smooth",block:"start"}),children:[img2(item.imageUrl,44),
|
|
251
|
+
/* @__PURE__ */jsxRuntime.jsx("b",{children:f.odds.to}),f.odds.toLabel?/* @__PURE__ */jsxRuntime.jsx("span",{children:f.odds.toLabel}):null]})]}):null,f.quote&&vet!==null&&vet.imageUrl?/* @__PURE__ */jsxRuntime.jsxs("blockquote",{...p("says"),children:[
|
|
252
|
+
/* @__PURE__ */jsxRuntime.jsx("img",{src:vet.imageUrl,alt:"",width:32,height:32}),
|
|
253
|
+
/* @__PURE__ */jsxRuntime.jsxs("p",{children:[vet.shortName?/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
254
|
+
/* @__PURE__ */jsxRuntime.jsx("b",{children:vet.shortName})," "]}):null,f.quote.text,tag(f.quote.tag)]})]}):f.quote&&vet!==null?/* @__PURE__ */jsxRuntime.jsxs("blockquote",{...p("says"),children:[vet.shortName||f.quote.tag?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("saysKicker"),children:[vet.shortName,tag(f.quote.tag)]}):null,
|
|
255
|
+
/* @__PURE__ */jsxRuntime.jsx("p",{...p("serif"),children:f.quote.text})]}):null,f.jump&&!noPick?/* @__PURE__ */jsxRuntime.jsxs("button",{type:"button",...p("jump"),onClick:()=>pickRef.current?.scrollIntoView({behavior:"smooth",block:"start"}),children:[img2(item.imageUrl,44),
|
|
249
256
|
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[
|
|
250
257
|
/* @__PURE__ */jsxRuntime.jsx("small",{children:copy.jumpKicker(pr,active)}),
|
|
251
258
|
/* @__PURE__ */jsxRuntime.jsx("strong",{children:f.jump.title})]}),
|
|
@@ -255,7 +262,7 @@ return jsxRuntime.jsxs("div",{...p("shop"),children:[
|
|
|
255
262
|
/* @__PURE__ */jsxRuntime.jsx("ol",{...p("list"),children:design.routine.steps.map((s,i)=>/* @__PURE__ */jsxRuntime.jsxs("li",{...p("tip",s.tone),children:[
|
|
256
263
|
/* @__PURE__ */jsxRuntime.jsxs("span",{...p("tipTop"),children:[
|
|
257
264
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("tipN"),"aria-hidden":"true",children:i+1}),s.icon?icon(s.icon):null]}),
|
|
258
|
-
/* @__PURE__ */jsxRuntime.jsx("strong",{children:s.title}),s.body?/* @__PURE__ */jsxRuntime.jsx("small",{children:s.body}):null,s.source?/* @__PURE__ */jsxRuntime.jsx("em",{children:s.source}):null]},s.title))})]}):null,waiting?null:/* @__PURE__ */jsxRuntime.jsxs("section",{...p("section"),ref:pickRef,"aria-label":pk.title,children:[
|
|
265
|
+
/* @__PURE__ */jsxRuntime.jsx("strong",{children:s.title}),s.body?/* @__PURE__ */jsxRuntime.jsx("small",{children:s.body}):null,s.fromVet?vet?.shortName?/* @__PURE__ */jsxRuntime.jsx("em",{children:copy.fromVet(vet.shortName)}):null:s.source?/* @__PURE__ */jsxRuntime.jsx("em",{children:s.source}):null]},s.title))})]}):null,waiting?null:noPick?copy.noPick===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{...p("noPick"),children:copy.noPick}):/* @__PURE__ */jsxRuntime.jsxs("section",{...p("section"),ref:pickRef,"aria-label":pk.title,children:[
|
|
259
266
|
/* @__PURE__ */jsxRuntime.jsxs("h3",{...p("sectionTitle"),children:[n(sec++),pk.title]}),
|
|
260
267
|
/* @__PURE__ */jsxRuntime.jsxs("article",{className:cx(classNames.pick,active?on:void 0),children:[
|
|
261
268
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("pickTop"),children:[
|
|
@@ -270,9 +277,9 @@ return jsxRuntime.jsxs("figure",{...p("review"),children:[
|
|
|
270
277
|
/* @__PURE__ */jsxRuntime.jsx("ul",{children:pk.why.rows.map(r=>/* @__PURE__ */jsxRuntime.jsxs("li",{children:[
|
|
271
278
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("chip",r.kind),children:r.chip}),
|
|
272
279
|
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[
|
|
273
|
-
/* @__PURE__ */jsxRuntime.jsx("strong",{children:r.title}),r.body?/* @__PURE__ */jsxRuntime.jsx("small",{children:r.body}):null]})]},r.title))}),pk.why.score?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("score"),children:[
|
|
274
|
-
/* @__PURE__ */jsxRuntime.jsx("span",{children:pk.why.
|
|
275
|
-
/* @__PURE__ */jsxRuntime.jsx("b",{"aria-hidden":"true",children:pk.why.
|
|
280
|
+
/* @__PURE__ */jsxRuntime.jsx("strong",{children:r.title}),r.body?/* @__PURE__ */jsxRuntime.jsx("small",{children:r.body}):null]})]},r.title))}),pk.why.score&&pk.why.rows.length>=2?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("score"),children:[
|
|
281
|
+
/* @__PURE__ */jsxRuntime.jsx("span",{children:copy.signalsFit(pk.why.rows.length)}),
|
|
282
|
+
/* @__PURE__ */jsxRuntime.jsx("b",{"aria-hidden":"true",children:copy.signalsValue(pk.why.rows.length)})]}):null]}):null,weightKnown?pk.dose?/* @__PURE__ */jsxRuntime.jsxs("div",{...p("dose"),children:[
|
|
276
283
|
/* @__PURE__ */jsxRuntime.jsx("p",{...p("mini"),children:pk.dose.title}),
|
|
277
284
|
/* @__PURE__ */jsxRuntime.jsx("ul",{children:pk.dose.stats.map(s=>/* @__PURE__ */jsxRuntime.jsxs("li",{children:[
|
|
278
285
|
/* @__PURE__ */jsxRuntime.jsx("b",{children:s.value}),
|
|
@@ -296,7 +303,7 @@ return jsxRuntime.jsxs("figure",{...p("review"),children:[
|
|
|
296
303
|
/* @__PURE__ */jsxRuntime.jsxs("span",{children:[
|
|
297
304
|
/* @__PURE__ */jsxRuntime.jsx("strong",{children:copy.subscribed}),
|
|
298
305
|
/* @__PURE__ */jsxRuntime.jsx("small",{children:copy.subscribedLine(pr,nextBoxDay(subscription))})]}),
|
|
299
|
-
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>setSheet({kind:"manage"}),children:copy.manage})]}):null}),pk.more&&props.onMore?/* @__PURE__ */jsxRuntime.jsx("p",{...p("more"),children:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>props.onMore?.(item),children:pk.more})}):null,pk.fine?/* @__PURE__ */jsxRuntime.jsx("p",{...p("fine"),children:pk.fine}):null]})]}),others.length>0&&!waiting?/* @__PURE__ */jsxRuntime.jsx("ul",{...p("others"),children:others.map((o,i)=>{let once=fmt(o.price,o.currency),op={petName:petName,productName:o.title,first:once,box:once,once:once,onceDiscountPercent:0,intervalDays:0,discountPercent:0,offer:false},otherId=`everfur-hp-other-${i}`;/* @__PURE__ */
|
|
306
|
+
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>setSheet({kind:"manage"}),children:copy.manage})]}):null}),pk.more&&props.onMore?/* @__PURE__ */jsxRuntime.jsx("p",{...p("more"),children:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>props.onMore?.(item),children:pk.more})}):null,pk.fine?/* @__PURE__ */jsxRuntime.jsx("p",{...p("fine"),children:pk.fine}):null]})]}),others.length>0&&!waiting&&!noPick?/* @__PURE__ */jsxRuntime.jsx("ul",{...p("others"),children:others.map((o,i)=>{let once=fmt(o.price,o.currency),op={petName:petName,productName:o.title,first:once,box:once,once:once,onceDiscountPercent:0,intervalDays:0,discountPercent:0,offer:false},otherId=`everfur-hp-other-${i}`;/* @__PURE__ */
|
|
300
307
|
return jsxRuntime.jsx("li",{children:/* @__PURE__ */jsxRuntime.jsxs("article",{...p("other"),"aria-labelledby":otherId,children:[
|
|
301
308
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("pickTop"),children:[
|
|
302
309
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("pickImage"),children:o.imageUrl?/* @__PURE__ */jsxRuntime.jsx("img",{src:o.imageUrl,alt:"",width:64,height:64}):null}),
|
|
@@ -304,9 +311,9 @@ return jsxRuntime.jsx("li",{children:/* @__PURE__ */jsxRuntime.jsxs("article",{.
|
|
|
304
311
|
/* @__PURE__ */jsxRuntime.jsx("h4",{id:otherId,children:o.title}),o.sample?/* @__PURE__ */jsxRuntime.jsx("span",{...p("tag"),children:HEALTH_PLAN_COPY.sample}):null,o.description?/* @__PURE__ */jsxRuntime.jsx("p",{...p("pickLine"),children:o.description}):null]})]}),
|
|
305
312
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("buy"),children:shop?/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("button"),"aria-describedby":otherId,onClick:()=>addToCart(o,"once"),disabled:once===null||void 0,children:inCart(o.productId)?copy.viewCart:once===null?HEALTH_PLAN_COPY.addToCart:copy.addToCart(once)}):/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("button"),"aria-describedby":otherId,onClick:()=>pressOther(o),disabled:redirecting||everfur&&once===null||void 0,children:once===null?copy.buyOnceOption:copy.buyOnce(op)})})]})},o.productId)})}):null,waiting?null:design.signs?/* @__PURE__ */jsxRuntime.jsxs("section",{...p("section"),"aria-label":design.signs.title,children:[
|
|
306
313
|
/* @__PURE__ */jsxRuntime.jsxs("h3",{...p("sectionTitle"),children:[n(sec++),design.signs.title]}),design.signs.items.map(s=>/* @__PURE__ */jsxRuntime.jsxs("div",{...p("sign",s.urgent?"urgent":void 0),children:[
|
|
307
|
-
/* @__PURE__ */jsxRuntime.jsxs("h4",{children:[s.urgent?icon("alert"):null,s.title]}),
|
|
308
|
-
/* @__PURE__ */jsxRuntime.jsx("p",{children:s.body})]},s.title)),checkupBody("kicker"),connectRow]}):design.checkup?/* @__PURE__ */jsxRuntime.jsxs("section",{...p("section"),"aria-label":design.checkup.title,children:[checkupBody("section"),connectRow]}):null,design.extras&&
|
|
309
|
-
/* @__PURE__ */jsxRuntime.jsx("h3",{id:"everfur-hp-extras",...p("extrasTitle"),children:design.extras.title}),
|
|
314
|
+
/* @__PURE__ */jsxRuntime.jsxs("h4",{children:[s.urgent?icon("alert"):null,s.callVet===true&&s.urgent!==true?vetSignTitle(s.title):s.title]}),
|
|
315
|
+
/* @__PURE__ */jsxRuntime.jsx("p",{children:s.body})]},s.title)),checkupBody("kicker"),connectRow]}):design.checkup?/* @__PURE__ */jsxRuntime.jsxs("section",{...p("section"),"aria-label":design.checkup.title,children:[checkupBody("section"),connectRow]}):null,design.extras&&extraItems.length>0&&props.onExtra?/* @__PURE__ */jsxRuntime.jsxs("section",{...p("extras"),"aria-labelledby":"everfur-hp-extras",children:[
|
|
316
|
+
/* @__PURE__ */jsxRuntime.jsx("h3",{id:"everfur-hp-extras",...p("extrasTitle"),children:design.extras.title}),extraItems.map(x=>{let product=shop&&x.productId!==void 0?itemOf2(x.productId):void 0,on2=product!==void 0?inCart(product.productId)!==void 0:extras.has(x.key);/* @__PURE__ */
|
|
310
317
|
return jsxRuntime.jsxs("article",{...p("extra",x.kind),children:[x.imageUrl?/* @__PURE__ */jsxRuntime.jsx("img",{src:x.imageUrl,alt:"",width:64,height:64}):x.icon?/* @__PURE__ */jsxRuntime.jsx("span",{...p("extraIcon"),children:icon(x.icon)}):null,
|
|
311
318
|
/* @__PURE__ */jsxRuntime.jsxs("div",{children:[
|
|
312
319
|
/* @__PURE__ */jsxRuntime.jsx("h4",{...p("extraTitle",x.kind),children:x.title}),x.body?/* @__PURE__ */jsxRuntime.jsx("p",{children:x.body}):null,x.price?/* @__PURE__ */jsxRuntime.jsxs("p",{...p("extraPrice"),children:[
|
|
@@ -315,8 +322,8 @@ return jsxRuntime.jsxs("article",{...p("extra",x.kind),children:[x.imageUrl?/* @
|
|
|
315
322
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("coProdImage"),children:item.imageUrl?/* @__PURE__ */jsxRuntime.jsx("img",{src:item.imageUrl,alt:""}):null}),
|
|
316
323
|
/* @__PURE__ */jsxRuntime.jsxs("div",{children:[
|
|
317
324
|
/* @__PURE__ */jsxRuntime.jsx("p",{...p("coProdTitle"),"aria-hidden":"true",children:item.title}),
|
|
318
|
-
/* @__PURE__ */jsxRuntime.jsx("p",{children:line})]})]}),intervals=(selected,pick2,labelId)=>/* @__PURE__ */jsxRuntime.jsx("div",{...p("coEvery"),role:"radiogroup","aria-labelledby":labelId,children:(quote2?.intervalOptions??subscription?.intervalOptions??[]).map(d=>/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",role:"radio","aria-checked":selected===d,disabled:sub.busy||void 0,onClick:()=>pick2(d),children:copy.days(d)},d))}),titleId=
|
|
319
|
-
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,...p("srOnly"),children:copy.checkoutTitle(cp)}),
|
|
325
|
+
/* @__PURE__ */jsxRuntime.jsx("p",{children:line})]})]}),intervals=(selected,pick2,labelId)=>/* @__PURE__ */jsxRuntime.jsx("div",{...p("coEvery"),role:"radiogroup","aria-labelledby":labelId,children:(quote2?.intervalOptions??subscription?.intervalOptions??[]).map(d=>/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",role:"radio","aria-checked":selected===d,disabled:sub.busy||void 0,onClick:()=>pick2(d),children:copy.days(d)},d))}),titleId=SHEET_TITLE_ID,sheetBody=null,kicker="";if(sheet?.kind==="checkout"&"e2!==null){kicker=copy.checkoutKicker;let isSub=sheet.mode==="sub",cp=prices(sheet.every),today=isSub?cp.first:cp.once,coFine=[isSub?copy.renews(cp):copy.onceFine,copy.checkoutNote].filter(x=>x!=="").join(" ");sheetBody=/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
326
|
+
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,tabIndex:-1,...p("srOnly"),children:copy.checkoutTitle(cp)}),
|
|
320
327
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("co"),children:[productBlock(pk.checkoutLine??pk.line??item.description??""),
|
|
321
328
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("coOpts"),role:"radiogroup","aria-label":copy.optionsLabel,children:[
|
|
322
329
|
/* @__PURE__ */jsxRuntime.jsxs("div",{className:cx(classNames.coOpt,isSub?on:void 0),children:[
|
|
@@ -332,13 +339,13 @@ return jsxRuntime.jsxs("article",{...p("extra",x.kind),children:[x.imageUrl?/* @
|
|
|
332
339
|
/* @__PURE__ */jsxRuntime.jsx("span",{children:r.label}),
|
|
333
340
|
/* @__PURE__ */jsxRuntime.jsx("b",{children:r.value})]},r.label))}):null,
|
|
334
341
|
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("buttonLarge"),disabled:sub.busy||redirecting||void 0,onClick:async()=>{if(everfur){await redirect(isSub?"subscription":"one_box",isSub?sheet.every:null);return}if(!isSub){if(oneBox===null){close(),buyOnce();return}tapKey.current===null&&(tapKey.current=mintTapKey());let res=await sub.buyOneBox(tapKey.current);if(!res.ok){say(res.error.displayMessage);return}tapKey.current=null,props.onOneBoxOrder?.(res.value),setSheet(null),placed([res.value]);return}let s=settle(await sub.subscribe(sheet.every));s!==null&&(setSheet(null),setStarted({kind:"sub",sub:s}))},children:copy.checkoutGo(cp,isSub,today??"")}),coFine===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{...p("coFine"),children:coFine})]})]})}else if(sheet?.kind==="manage"&&subscription!==null&&active){kicker=copy.manageKicker;let mp=prices(subscription.intervalDays);sheetBody=/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
335
|
-
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,...p("srOnly"),children:copy.manageTitle(mp)}),
|
|
342
|
+
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,tabIndex:-1,...p("srOnly"),children:copy.manageTitle(mp)}),
|
|
336
343
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("co"),children:[productBlock(copy.subscribedLine(mp,nextBoxDay(subscription))),
|
|
337
344
|
/* @__PURE__ */jsxRuntime.jsxs("div",{children:[
|
|
338
345
|
/* @__PURE__ */jsxRuntime.jsx("p",{...p("coKey"),id:"everfur-hp-mg-every",children:copy.shipsEvery}),intervals(subscription.intervalDays,d=>{d!==subscription.intervalDays&&sub.changeInterval(d).then(settle)},"everfur-hp-mg-every")]}),
|
|
339
346
|
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("buttonGhost"),disabled:sub.busy||void 0,onClick:async()=>{let s=settle(await sub.skip());s!==null&&say(copy.skipped(prices(s.intervalDays),nextBoxDay(s)))},children:copy.skip}),
|
|
340
|
-
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("mgCancel"),disabled:sub.busy||void 0,onClick:async()=>{settle(await sub.cancel())!==null&&(setSheet(null),setMode("sub"),say(copy.cancelled(mp)))},children:copy.cancel})]})]})}if(sheet?.kind==="cartCheckout"&&batch.length>0){kicker=copy.checkoutKicker;let total=fmt(batchTotal,currency)??"";sheetBody=shopCartCheckout(kit,batch.map(lineView),x=>{let line=lines.find(l=>l.productId===x.key),unit=line===void 0?null:unitOf(line);return unit===null||line===void 0?null:fmt(Math.round(unit*line.qty*100)/100,isPick(line.productId)?currency:itemOf2(line.productId)?.currency??currency)},design.checkoutRows??[],total,batchRenew,{label:copy.placeOrder(total,batchSub!==null),disabled:!cartReady||sub.busy||redirecting,onClick:()=>{placeCart()}},[copy.cartFine(batchRenew),apart?copy.cartSubscriptionApart:"",copy.checkoutNote].filter(x=>x!=="").join(" "),titleId)}else sheet?.kind==="weight"&&(kicker=copy.weightKicker,sheetBody=/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
341
|
-
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,...p("serif"),children:copy.weightTitle(pr)}),
|
|
347
|
+
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("mgCancel"),disabled:sub.busy||void 0,onClick:async()=>{settle(await sub.cancel())!==null&&(setSheet(null),setMode("sub"),say(copy.cancelled(mp)))},children:copy.cancel}),shop?/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("mgOrders"),onClick:()=>{setSheet(null),top?.kind!=="orders"&&push({kind:"orders"})},children:copy.seeOrders}):null]})]})}if(sheet?.kind==="cartCheckout"&&batch.length>0){kicker=copy.checkoutKicker;let total=fmt(batchTotal,currency)??"";sheetBody=shopCartCheckout(kit,batch.map(lineView),x=>{let line=lines.find(l=>l.productId===x.key),unit=line===void 0?null:unitOf(line);return unit===null||line===void 0?null:fmt(Math.round(unit*line.qty*100)/100,isPick(line.productId)?currency:itemOf2(line.productId)?.currency??currency)},design.checkoutRows??[],total,batchRenew,{label:copy.placeOrder(total,batchSub!==null),disabled:!cartReady||sub.busy||redirecting,onClick:()=>{placeCart()}},[copy.cartFine(batchRenew),apart?copy.cartSubscriptionApart:"",copy.checkoutNote].filter(x=>x!=="").join(" "),titleId)}else sheet?.kind==="weight"&&(kicker=copy.weightKicker,sheetBody=/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
348
|
+
/* @__PURE__ */jsxRuntime.jsx("h3",{id:titleId,tabIndex:-1,...p("serif"),children:copy.weightTitle(pr)}),
|
|
342
349
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("sheetBody"),children:/* @__PURE__ */jsxRuntime.jsx("p",{children:copy.weightBody})}),
|
|
343
350
|
/* @__PURE__ */jsxRuntime.jsxs("label",{...p("weightField"),htmlFor:"everfur-hp-weight",children:[copy.weightField,
|
|
344
351
|
/* @__PURE__ */jsxRuntime.jsxs("span",{...p("weightInput"),children:[
|
|
@@ -347,11 +354,11 @@ return jsxRuntime.jsxs("article",{...p("extra",x.kind),children:[x.imageUrl?/* @
|
|
|
347
354
|
/* @__PURE__ */jsxRuntime.jsx("p",{...p("weightError"),"aria-live":"polite",children:weightError}),
|
|
348
355
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("weightActions"),children:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("button"),disabled:savingWeight||void 0,onClick:()=>{saveWeight()},children:copy.weightSave})})]}));let sheetNode=sheetBody===null?null:/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[
|
|
349
356
|
/* @__PURE__ */jsxRuntime.jsx("div",{ref:styles2.layer,className:cx(classNames.scrim,on),onClick:close}),
|
|
350
|
-
/* @__PURE__ */jsxRuntime.jsxs("section",{ref:
|
|
357
|
+
/* @__PURE__ */jsxRuntime.jsxs("section",{ref:sheetRef,className:cx(classNames.sheet,on),role:"dialog","aria-modal":"true","aria-labelledby":titleId,children:[
|
|
351
358
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("sheetGrab"),"aria-hidden":"true"}),
|
|
352
359
|
/* @__PURE__ */jsxRuntime.jsxs("div",{...p("sheetTop"),children:[
|
|
353
360
|
/* @__PURE__ */jsxRuntime.jsx("p",{...p("sheetKicker"),children:kicker}),
|
|
354
|
-
/* @__PURE__ */jsxRuntime.jsx(
|
|
361
|
+
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("sheetClose"),"aria-label":copy.close,onClick:close,children:icon("x")})]}),
|
|
355
362
|
/* @__PURE__ */jsxRuntime.jsx("div",{children:sheetBody})]})]}),startedNode=null;if(started!==null){let run=started.kind==="sub"?started.sub:null,boughtId=started.kind==="sub"?started.sub.productId:started.order.productId,bought2=[item,...others].find(x=>x.productId===boughtId)??item,sp=prices(run?.intervalDays??every,bought2.title),label=(step,first)=>step.step==="first_box_ships"&&first?copy.tomorrow:day(step.on)??step.on,rows=run===null?[{icon:"truck",when:copy.tomorrow,what:withTracking(copy.firstBoxShips)}]:run.timeline.map((step,i)=>{switch(step.step){case"first_box_ships":return{icon:"truck",when:label(step,i===0),what:withTracking(copy.firstBoxShips)};case"checkin":return{icon:"chat",when:label(step,false),what:copy.checkin(pk.checkin??null)};case"refill_reminder":return{icon:"repeat",when:label(step,false),what:copy.refill};default:return{icon:"calendar",when:label(step,false),what:copy.nextBoxShips(sp)}}}),title2=run===null?copy.orderedTitle(sp):copy.startedTitle(sp),startedWhat=copy.startedWhat(sp).trim();startedNode=/* @__PURE__ */jsxRuntime.jsxs("section",{ref:styles2.layer,className:cx(classNames.started,on),"aria-label":title2,children:[
|
|
356
363
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("startedScroll"),children:/* @__PURE__ */jsxRuntime.jsxs("div",{...p("done"),children:[
|
|
357
364
|
/* @__PURE__ */jsxRuntime.jsx("span",{...p("doneCheck"),children:icon("check")}),
|
|
@@ -381,10 +388,10 @@ return jsxRuntime.jsxs("li",{children:[
|
|
|
381
388
|
/* @__PURE__ */jsxRuntime.jsx("small",{children:arrivesDay}),
|
|
382
389
|
/* @__PURE__ */jsxRuntime.jsx("span",{children:copy.placedArrives})]})]})]}),placedOrders.length>1&&placedTotal!==null?shopSummary(kit,placedTotal):null,copy.startedNote?/* @__PURE__ */jsxRuntime.jsx("p",{...p("shopFine","center"),children:copy.startedNote}):null]}),foot=/* @__PURE__ */jsxRuntime.jsxs("div",{...p("foot","stack"),children:[
|
|
383
390
|
/* @__PURE__ */jsxRuntime.jsx(AutoFocusButton,{...p("button"),onClick:()=>setScreens(placedOrders.length===1&&first!==void 0?[{kind:"order",key:first.orderId}]:[{kind:"orders"}]),children:placedOrders.length===1?copy.viewOrder:copy.seeOrders}),
|
|
384
|
-
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("buttonGhost"),onClick:toPlan,children:copy.startedDone})]})}screenNode=/* @__PURE__ */jsxRuntime.jsxs("section",{ref:
|
|
391
|
+
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...p("buttonGhost"),onClick:toPlan,children:copy.startedDone})]})}screenNode=/* @__PURE__ */jsxRuntime.jsxs("section",{ref:screenRef,className:cx(classNames.push??classNames.started,on),"aria-label":label,tabIndex:-1,children:[
|
|
385
392
|
/* @__PURE__ */jsxRuntime.jsx("div",{...p("startedScroll"),children:body}),foot]})}let toastNode=toast===null?null:/* @__PURE__ */jsxRuntime.jsx("div",{ref:styles2.layer,className:cx(classNames.toast,on),role:"status","aria-live":"polite",children:toast}),portal=(node,kind)=>{if(node===null)return null;let into=layer(kind);return into===null?null:reactDom.createPortal(node,into)};/* @__PURE__ */
|
|
386
|
-
return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[page,portal(sheetNode,"sheet"),portal(startedNode,"started"),portal(screenNode,"started"),portal(toastNode,"toast")]})}function AutoFocusButton(props){let ref=react.useRef(null);return react.useEffect(()=>{ref.current?.focus({preventScroll:true})},[]),/* @__PURE__ */jsxRuntime.jsx("button",{ref:ref,type:"button",...props})}var PAY_WITH="Pay with",TRACK_STEP={ordered:0,shipped:1,delivered:3};function everfurOrderView(o,items){let it=items.find(x=>x.productId===o.productId),t=o.tracking,quantity=o.quantity??1,total=o.total??Math.round(o.price*quantity*100)/100,step=t===void 0?0:TRACK_STEP[t.status];return{key:o.orderId,number:t?.orderNumber??null,step:step,dates:t===void 0?[o.createdAt??null]:[o.createdAt??null,t.shippedAt,null,step===3?null:t.estimatedDelivery],...t===void 0?{}:{steps:[0,1,3]},everfur:true,productId:o.productId,items:[{title:o.title??it?.title??"",quantity:quantity,price:total,imageUrl:it?.imageUrl??null,icon:null}],total:total,currency:o.currency,subscriptionBox:false,carrier:t?.carrier??null,trackingNumber:t?.trackingNumber??null,trackingTag:null,trackingUrl:t?.trackingUrl??null}}async function readOrders(repo,petRef,cursor){if(repo.listOneBoxOrderPage!==void 0)return repo.listOneBoxOrderPage(petRef,{limit:ORDERS_PAGE,...cursor===null?{}:{cursor:cursor}});if(cursor!==null||repo.listOneBoxOrders===void 0)return{ok:true,value:{orders:[],nextCursor:null}};let res=await repo.listOneBoxOrders(petRef);return res.ok?{ok:true,value:{orders:res.value,nextCursor:null}}:res}function invalidCursor(error){if(error.httpStatus!==422)return false;let raw=error.raw!==null&&typeof error.raw=="object"?error.raw:null;return[error.reasonCode,error.wireMessage,raw?.detail,raw?.message].some(x=>x==="invalid_cursor")}var CART_STORE="everfur.healthPlan.cart";function useCartLines(petRef,enabled){let[lines,setLines]=react.useState(()=>enabled?readCart(petRef):[]),update=react.useCallback(f=>{setLines(prev=>{let next=f(prev);return writeCart(petRef,next),next})},[petRef]);return[lines,update]}function readCart(petRef){try{let raw=JSON.parse(window.sessionStorage.getItem(`${CART_STORE}:${petRef}`)??"[]");return Array.isArray(raw)?raw.flatMap(x=>{if(x===null||typeof x!="object")return[];let o=x,productId=o.productId,mode=o.mode,every=o.every,qty=o.qty;return typeof productId!="string"||mode!=="sub"&&mode!=="once"||typeof every!="number"||typeof qty!="number"?[]:[{productId:productId,mode:mode,every:every,qty:Math.max(1,Math.min(mode==="sub"?1:MAX_QUANTITY,Math.round(qty)))}]}):[]}catch{return[]}}function writeCart(petRef,lines){try{lines.length===0?window.sessionStorage.removeItem(`${CART_STORE}:${petRef}`):window.sessionStorage.setItem(`${CART_STORE}:${petRef}`,JSON.stringify(lines))}catch{}}var CHECKOUT_PARAM="everfur_checkout",CHECKOUT_CANCEL_PARAM="everfur_checkout_cancel",STRIPE_SESSION_ID="{CHECKOUT_SESSION_ID}",CHECKOUT_POLL_MS=2e3,CHECKOUT_POLL_TRIES=30,CHECKOUT_STORE="everfur.healthPlan.checkout";function checkoutReturnUrl(href,name,value){let url=new URL(href);url.searchParams.delete(CHECKOUT_PARAM),url.searchParams.delete(CHECKOUT_CANCEL_PARAM);let search=url.search===""?"?":`${url.search}&`;return`${url.origin}${url.pathname}${search}${name}=${value}${url.hash}`}function stripCheckoutParams(){try{let url=new URL(window.location.href);url.searchParams.delete(CHECKOUT_PARAM),url.searchParams.delete(CHECKOUT_CANCEL_PARAM),window.history.replaceState(window.history.state,"",`${url.pathname}${url.search}${url.hash}`)}catch{}}function rememberCheckout(petRef,checkoutId){try{window.sessionStorage.setItem(CHECKOUT_STORE,JSON.stringify({petRef:petRef,checkoutId:checkoutId}))}catch{}}function recallCheckout(){try{let raw=JSON.parse(window.sessionStorage.getItem(CHECKOUT_STORE)??"null");if(raw===null||typeof raw!="object")return null;let o=raw;return typeof o.petRef=="string"&&typeof o.checkoutId=="string"&&o.checkoutId!==""?{petRef:o.petRef,checkoutId:o.checkoutId}:null}catch{return null}}function forgetCheckout(){try{window.sessionStorage.removeItem(CHECKOUT_STORE)}catch{}}function mintTapKey(){let c=typeof globalThis.crypto=="object"?globalThis.crypto:void 0;return c!==void 0&&typeof c.randomUUID=="function"?c.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function cx(...names){let out=names.filter(n=>n!==void 0&&n!=="").join(" ");return out===""?void 0:out}function mergeRoot(part,className,style){let cls=cx(part.className,className),st=part.style===void 0&&style===void 0?void 0:{...part.style,...style};return{...cls===void 0?{}:{className:cls},...st===void 0?{}:{style:st}}}var ICON_PATHS={shield:"M12 3l7 3v5c0 4.5-3 8.5-7 10-4-1.5-7-5.5-7-10V6l7-3z M9 12l2 2 4-4",arrow:"M5 12h14 M13 6l6 6-6 6",check:"M5 12.5l4.5 4.5L19 7.5",star:"M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.8-5.2 2.8 1-5.8-4.3-4.1 5.9-.9z",truck:"M3 6h11v10H3z M14 10h4l3 3v3h-7 M7 19a2 2 0 100-4 2 2 0 000 4z M17 19a2 2 0 100-4 2 2 0 000 4z",refresh:"M20 11a8 8 0 10-2.3 5.7 M20 4v7h-7",card:"M3 6h18v12H3z M3 10h18",alert:"M12 4l9 16H3z M12 10v4 M12 17h.01",x:"M6 6l12 12 M18 6L6 18",chat:"M4 5h16v11H8l-4 4z",repeat:"M4 9h13l-3-3 M20 15H7l3 3",calendar:"M4 6h16v14H4z M4 10h16 M8 3v4 M16 3v4",flame:"M12 3c1 3 4 5 4 9a4 4 0 01-8 0c0-2 1-3 2-4 0 2 1 3 2 3 0-3-1-5 0-8z",box:"M3 7l9-4 9 4v10l-9 4-9-4z M3 7l9 4 9-4 M12 11v10",cart:"M3 4h2l2.4 11h10.2L20 8H6.2 M9 20a1 1 0 100-2 1 1 0 000 2z M17 20a1 1 0 100-2 1 1 0 000 2z",minus:"M5 12h14",plus:"M12 5v14 M5 12h14",chev:"M9 6l6 6-6 6",pulse:"M3 12h4l2-5 4 10 2-5h6",file:"M14 3H6v18h12V7z M14 3v4h4 M9 13h6 M9 17h6",kit:"M7 3h10v4H7z M6 7h12v14H6z M10 12h4",dna:"M7 3c0 6 10 6 10 12s-10 6-10 6 M17 3c0 6-10 6-10 12 M8 7h8 M8 17h8",heart:"M12 20s-7-4.5-7-10a4 4 0 017-2.6A4 4 0 0119 10c0 5.5-7 10-7 10z",bottle:"M9 3h6v3H9z M8 6h8v15H8z M8 11h8",harness:"M8 4c0 5 8 5 8 0 M6 9h12v6H6z M12 9v6 M9 15v5 M15 15v5",ramp:"M3 19h18L7 9H3z M7 9v10"};function DefaultIcon({name:name,className:className}){/* @__PURE__ */
|
|
387
|
-
return jsxRuntime.jsx("svg",{className:className,"aria-hidden":"true",viewBox:"0 0 24 24",width:className?void 0:18,height:className?void 0:18,fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */jsxRuntime.jsx("path",{d:ICON_PATHS[name]})})}var DEFAULT_PRESENTATION=/* @__PURE__ */Object.freeze({chatAnswerStyle:"cards",chatHistoryStyle:"sheet",chatTopCard:"focus",chatFollowUpCount:3,chatFollowUpsExcludeTelevet:false,chatComposerMic:true,chatComposerUpload:true,safetyDisclaimerPlacement:"composer",healthPlanLayout:"focus_plan",recordsTopRiskLine:true,recordsClearResultsFilter:true,chatComposerStyle:"compact",chatComposerPlaceholder:"pet_name",chatHistoryBar:"scroll",chatGeneralBanner:true,chatSendButton:"always_dark"}),PRESENTATION_WIRE_NAMES=/* @__PURE__ */Object.freeze({chatAnswerStyle:"chat_answer_style",chatHistoryStyle:"chat_history_style",chatTopCard:"chat_top_card",chatFollowUpCount:"chat_follow_up_count",chatFollowUpsExcludeTelevet:"chat_follow_ups_exclude_televet",chatComposerMic:"chat_composer_mic",chatComposerUpload:"chat_composer_upload",safetyDisclaimerPlacement:"safety_disclaimer_placement",healthPlanLayout:"health_plan_layout",recordsTopRiskLine:"records_top_risk_line",recordsClearResultsFilter:"records_clear_results_filter",chatComposerStyle:"chat_composer_style",chatComposerPlaceholder:"chat_composer_placeholder",chatHistoryBar:"chat_history_bar",chatGeneralBanner:"chat_general_banner",chatSendButton:"chat_send_button"}),FIELDS=Object.keys(PRESENTATION_WIRE_NAMES),PRESENTATION_LOCK="presentation",PRESENTATION_LOCK_PREFIX="presentation.";var ENUMS={chatAnswerStyle:["bubbles","cards"],chatHistoryStyle:["drawer","sheet"],chatTopCard:["none","focus"],safetyDisclaimerPlacement:["composer","answer_footer"],healthPlanLayout:["standard","focus_plan"],chatComposerStyle:["standard","compact"],chatComposerPlaceholder:["generic","pet_name"],chatHistoryBar:["pinned","scroll"],chatSendButton:["always_dark","dim_when_empty"]},BOOLS=/* @__PURE__ */new Set(["chatFollowUpsExcludeTelevet","chatComposerMic","chatComposerUpload","recordsTopRiskLine","recordsClearResultsFilter","chatGeneralBanner"]);function parseField(field,value){if(value==null)return;let allowed=ENUMS[field];return allowed!==void 0?typeof value=="string"&&allowed.includes(value)?value:void 0:BOOLS.has(field)?typeof value=="boolean"?value:void 0:typeof value=="number"&&Number.isInteger(value)&&value>=0&&value<=3?value:void 0}function parsePresentation(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return null;let source=raw,out={};for(let field of FIELDS){let wire=PRESENTATION_WIRE_NAMES[field],value=Object.prototype.hasOwnProperty.call(source,wire)?source[wire]:source[field],parsed=parseField(field,value);parsed!==void 0&&(out[field]=parsed)}return Object.keys(out).length===0?null:/* @__PURE__ */Object.freeze(out)}function isPresentationFieldLocked(field,locked){if(locked==null)return false;let one=`${PRESENTATION_LOCK_PREFIX}${PRESENTATION_WIRE_NAMES[field]}`;for(let name of locked)if(name===PRESENTATION_LOCK||name===one)return true;return false}function resolvePresentation(input){let server=parsePresentation(input?.server??null)??{},client=parsePresentation(input?.client??null)??{},locked=input?.locked?[...input.locked]:null,out={};for(let field of FIELDS){let fromServer=server[field],fromClient=isPresentationFieldLocked(field,locked)?void 0:client[field];out[field]=fromClient??fromServer??DEFAULT_PRESENTATION[field]}/* @__PURE__ */
|
|
393
|
+
return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[page,portal(sheetNode,"sheet"),portal(startedNode,"started"),portal(screenNode,"started"),portal(toastNode,"toast")]})}function AutoFocusButton(props){let ref=react.useRef(null);return react.useEffect(()=>{ref.current?.focus({preventScroll:true})},[]),/* @__PURE__ */jsxRuntime.jsx("button",{ref:ref,type:"button",...props})}var SHEET_TITLE_ID="everfur-hp-sheet-title",PAY_WITH="Pay with",TRACK_STEP={ordered:0,shipped:1,delivered:3};function everfurOrderView(o,items){let it=items.find(x=>x.productId===o.productId),t=o.tracking,quantity=o.quantity??1,total=o.total??Math.round(o.price*quantity*100)/100,step=t===void 0?0:TRACK_STEP[t.status];return{key:o.orderId,number:t?.orderNumber??null,step:step,dates:t===void 0?[o.createdAt??null]:[o.createdAt??null,t.shippedAt,null,step===3?null:t.estimatedDelivery],...t===void 0?{}:{steps:[0,1,3]},everfur:true,productId:o.productId,items:[{title:o.title??it?.title??"",quantity:quantity,price:total,imageUrl:it?.imageUrl??null,icon:null}],total:total,currency:o.currency,subscriptionBox:false,carrier:t?.carrier??null,trackingNumber:t?.trackingNumber??null,trackingTag:null,trackingUrl:t?.trackingUrl??null}}async function readOrders(repo,petRef,cursor){if(repo.listOneBoxOrderPage!==void 0)return repo.listOneBoxOrderPage(petRef,{limit:ORDERS_PAGE,...cursor===null?{}:{cursor:cursor}});if(cursor!==null||repo.listOneBoxOrders===void 0)return{ok:true,value:{orders:[],nextCursor:null}};let res=await repo.listOneBoxOrders(petRef);return res.ok?{ok:true,value:{orders:res.value,nextCursor:null}}:res}function blanksDay(ms,locale){let d=new Date(ms);try{return new Intl.DateTimeFormat(locale??"en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}).format(d)}catch{return d.toISOString().slice(0,10)}}function invalidCursor(error){if(error.httpStatus!==422)return false;let raw=error.raw!==null&&typeof error.raw=="object"?error.raw:null;return[error.reasonCode,error.wireMessage,raw?.detail,raw?.message].some(x=>x==="invalid_cursor")}var CART_STORE="everfur.healthPlan.cart";function useCartLines(petRef,enabled){let[lines,setLines]=react.useState(()=>enabled?readCart(petRef):[]),update=react.useCallback(f=>{setLines(prev=>{let next=f(prev);return writeCart(petRef,next),next})},[petRef]);return[lines,update]}function readCart(petRef){try{let raw=JSON.parse(window.sessionStorage.getItem(`${CART_STORE}:${petRef}`)??"[]");return Array.isArray(raw)?raw.flatMap(x=>{if(x===null||typeof x!="object")return[];let o=x,productId=o.productId,mode=o.mode,every=o.every,qty=o.qty;return typeof productId!="string"||mode!=="sub"&&mode!=="once"||typeof every!="number"||typeof qty!="number"?[]:[{productId:productId,mode:mode,every:every,qty:Math.max(1,Math.min(mode==="sub"?1:MAX_QUANTITY,Math.round(qty)))}]}):[]}catch{return[]}}function writeCart(petRef,lines){try{lines.length===0?window.sessionStorage.removeItem(`${CART_STORE}:${petRef}`):window.sessionStorage.setItem(`${CART_STORE}:${petRef}`,JSON.stringify(lines))}catch{}}var BLANKS_STORE="everfur.healthPlan.blanks",blanksMemos=/* @__PURE__ */new Map;function blanksMemo(petRef){let own=blanksMemos.get(petRef);if(own!==void 0)return own;try{let raw=JSON.parse(window.localStorage.getItem(`${BLANKS_STORE}:${petRef}`)??"null");if(raw!==null&&typeof raw=="object"){let o=raw;return{waited:typeof o.waited=="string"?o.waited:null,flashed:typeof o.flashed=="string"?o.flashed:null}}}catch{}return{waited:null,flashed:null}}function setBlanksMemo(petRef,memo){blanksMemos.set(petRef,memo);try{window.localStorage.setItem(`${BLANKS_STORE}:${petRef}`,JSON.stringify(memo))}catch{}}var CHECKOUT_PARAM="everfur_checkout",CHECKOUT_CANCEL_PARAM="everfur_checkout_cancel",STRIPE_SESSION_ID="{CHECKOUT_SESSION_ID}",CHECKOUT_POLL_MS=2e3,CHECKOUT_POLL_TRIES=30,CHECKOUT_STORE="everfur.healthPlan.checkout";function checkoutReturnUrl(href,name,value){let url=new URL(href);url.searchParams.delete(CHECKOUT_PARAM),url.searchParams.delete(CHECKOUT_CANCEL_PARAM);let search=url.search===""?"?":`${url.search}&`;return`${url.origin}${url.pathname}${search}${name}=${value}${url.hash}`}function stripCheckoutParams(){try{let url=new URL(window.location.href);url.searchParams.delete(CHECKOUT_PARAM),url.searchParams.delete(CHECKOUT_CANCEL_PARAM),window.history.replaceState(window.history.state,"",`${url.pathname}${url.search}${url.hash}`)}catch{}}function rememberCheckout(petRef,checkoutId){try{window.sessionStorage.setItem(CHECKOUT_STORE,JSON.stringify({petRef:petRef,checkoutId:checkoutId}))}catch{}}function recallCheckout(){try{let raw=JSON.parse(window.sessionStorage.getItem(CHECKOUT_STORE)??"null");if(raw===null||typeof raw!="object")return null;let o=raw;return typeof o.petRef=="string"&&typeof o.checkoutId=="string"&&o.checkoutId!==""?{petRef:o.petRef,checkoutId:o.checkoutId}:null}catch{return null}}function forgetCheckout(){try{window.sessionStorage.removeItem(CHECKOUT_STORE)}catch{}}function mintTapKey(){let c=typeof globalThis.crypto=="object"?globalThis.crypto:void 0;return c!==void 0&&typeof c.randomUUID=="function"?c.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function cx(...names){let out=names.filter(n=>n!==void 0&&n!=="").join(" ");return out===""?void 0:out}function mergeRoot(part,className,style){let cls=cx(part.className,className),st=part.style===void 0&&style===void 0?void 0:{...part.style,...style};return{...cls===void 0?{}:{className:cls},...st===void 0?{}:{style:st}}}var ICON_PATHS={shield:"M12 3l7 3v5c0 4.5-3 8.5-7 10-4-1.5-7-5.5-7-10V6l7-3z M9 12l2 2 4-4",arrow:"M5 12h14 M13 6l6 6-6 6",check:"M5 12.5l4.5 4.5L19 7.5",star:"M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.8-5.2 2.8 1-5.8-4.3-4.1 5.9-.9z",truck:"M3 6h11v10H3z M14 10h4l3 3v3h-7 M7 19a2 2 0 100-4 2 2 0 000 4z M17 19a2 2 0 100-4 2 2 0 000 4z",refresh:"M20 11a8 8 0 10-2.3 5.7 M20 4v7h-7",card:"M3 6h18v12H3z M3 10h18",alert:"M12 4l9 16H3z M12 10v4 M12 17h.01",x:"M6 6l12 12 M18 6L6 18",chat:"M4 5h16v11H8l-4 4z",repeat:"M4 9h13l-3-3 M20 15H7l3 3",calendar:"M4 6h16v14H4z M4 10h16 M8 3v4 M16 3v4",flame:"M12 3c1 3 4 5 4 9a4 4 0 01-8 0c0-2 1-3 2-4 0 2 1 3 2 3 0-3-1-5 0-8z",box:"M3 7l9-4 9 4v10l-9 4-9-4z M3 7l9 4 9-4 M12 11v10",cart:"M3 4h2l2.4 11h10.2L20 8H6.2 M9 20a1 1 0 100-2 1 1 0 000 2z M17 20a1 1 0 100-2 1 1 0 000 2z",minus:"M5 12h14",plus:"M12 5v14 M5 12h14",chev:"M9 6l6 6-6 6",pulse:"M3 12h4l2-5 4 10 2-5h6",file:"M14 3H6v18h12V7z M14 3v4h4 M9 13h6 M9 17h6",kit:"M7 3h10v4H7z M6 7h12v14H6z M10 12h4",dna:"M7 3c0 6 10 6 10 12s-10 6-10 6 M17 3c0 6-10 6-10 12 M8 7h8 M8 17h8",heart:"M12 20s-7-4.5-7-10a4 4 0 017-2.6A4 4 0 0119 10c0 5.5-7 10-7 10z",bottle:"M9 3h6v3H9z M8 6h8v15H8z M8 11h8",harness:"M8 4c0 5 8 5 8 0 M6 9h12v6H6z M12 9v6 M9 15v5 M15 15v5",ramp:"M3 19h18L7 9H3z M7 9v10"};function DefaultIcon({name:name,className:className}){/* @__PURE__ */
|
|
394
|
+
return jsxRuntime.jsx("svg",{className:className,"aria-hidden":"true",viewBox:"0 0 24 24",width:className?void 0:18,height:className?void 0:18,fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:/* @__PURE__ */jsxRuntime.jsx("path",{d:ICON_PATHS[name]})})}var DEFAULT_PRESENTATION=/* @__PURE__ */Object.freeze({chatAnswerStyle:"cards",chatHistoryStyle:"sheet",chatTopCard:"focus",chatFollowUpCount:3,chatFollowUpsExcludeTelevet:false,chatComposerMic:true,chatComposerUpload:true,safetyDisclaimerPlacement:"composer",healthPlanLayout:"focus_plan",recordsTopRiskLine:true,recordsClearResultsFilter:true,chatComposerStyle:"compact",chatComposerPlaceholder:"pet_name",chatHistoryBar:"scroll",chatGeneralBanner:true,chatSendButton:"always_dark",chatTextingAsk:true}),PRESENTATION_WIRE_NAMES=/* @__PURE__ */Object.freeze({chatAnswerStyle:"chat_answer_style",chatHistoryStyle:"chat_history_style",chatTopCard:"chat_top_card",chatFollowUpCount:"chat_follow_up_count",chatFollowUpsExcludeTelevet:"chat_follow_ups_exclude_televet",chatComposerMic:"chat_composer_mic",chatComposerUpload:"chat_composer_upload",safetyDisclaimerPlacement:"safety_disclaimer_placement",healthPlanLayout:"health_plan_layout",recordsTopRiskLine:"records_top_risk_line",recordsClearResultsFilter:"records_clear_results_filter",chatComposerStyle:"chat_composer_style",chatComposerPlaceholder:"chat_composer_placeholder",chatHistoryBar:"chat_history_bar",chatGeneralBanner:"chat_general_banner",chatSendButton:"chat_send_button",chatTextingAsk:"chat_texting_ask"}),FIELDS=Object.keys(PRESENTATION_WIRE_NAMES),PRESENTATION_LOCK="presentation",PRESENTATION_LOCK_PREFIX="presentation.";var ENUMS={chatAnswerStyle:["bubbles","cards"],chatHistoryStyle:["drawer","sheet"],chatTopCard:["none","focus"],safetyDisclaimerPlacement:["composer","answer_footer"],healthPlanLayout:["standard","focus_plan"],chatComposerStyle:["standard","compact"],chatComposerPlaceholder:["generic","pet_name"],chatHistoryBar:["pinned","scroll"],chatSendButton:["always_dark","dim_when_empty"]},BOOLS=/* @__PURE__ */new Set(["chatFollowUpsExcludeTelevet","chatComposerMic","chatComposerUpload","recordsTopRiskLine","recordsClearResultsFilter","chatGeneralBanner","chatTextingAsk"]);function parseField(field,value){if(value==null)return;let allowed=ENUMS[field];return allowed!==void 0?typeof value=="string"&&allowed.includes(value)?value:void 0:BOOLS.has(field)?typeof value=="boolean"?value:void 0:typeof value=="number"&&Number.isInteger(value)&&value>=0&&value<=3?value:void 0}function parsePresentation(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return null;let source=raw,out={};for(let field of FIELDS){let wire=PRESENTATION_WIRE_NAMES[field],value=Object.prototype.hasOwnProperty.call(source,wire)?source[wire]:source[field],parsed=parseField(field,value);parsed!==void 0&&(out[field]=parsed)}return Object.keys(out).length===0?null:/* @__PURE__ */Object.freeze(out)}function isPresentationFieldLocked(field,locked){if(locked==null)return false;let one=`${PRESENTATION_LOCK_PREFIX}${PRESENTATION_WIRE_NAMES[field]}`;for(let name of locked)if(name===PRESENTATION_LOCK||name===one)return true;return false}function resolvePresentation(input){let server=parsePresentation(input?.server??null)??{},client=parsePresentation(input?.client??null)??{},locked=input?.locked?[...input.locked]:null,out={};for(let field of FIELDS){let fromServer=server[field],fromClient=isPresentationFieldLocked(field,locked)?void 0:client[field];out[field]=fromClient??fromServer??DEFAULT_PRESENTATION[field]}/* @__PURE__ */
|
|
388
395
|
return Object.freeze(out)}var NO_SNAPSHOT=/* @__PURE__ */Object.freeze({branding:null}),NO_STORE=/* @__PURE__ */Object.freeze({subscribe:()=>()=>{},getSnapshot:()=>NO_SNAPSHOT});function keyOf2(input){return input?Object.keys(input).sort().map(k=>`${k}=${String(input[k])}`).join("&"):""}function useEverfurPresentation(client){return useEverfurPresentationState(client).presentation}function useEverfurPresentationState(client){let{runtime:runtime}=useEverfurContext(),store=runtime?.entitlements??NO_STORE,readBranding=react.useCallback(()=>store.getSnapshot()?.branding??null,[store]),branding=react.useSyncExternalStore(store.subscribe,readBranding,readBranding),clientKey=keyOf2(client);return react.useMemo(()=>{let locked=branding?.lockedFields??null;return{presentation:resolvePresentation({server:branding?.presentation??null,locked:locked,client:client??null}),isLocked:field=>isPresentationFieldLocked(field,locked)}},[branding,clientKey])}function HealthPlanItemCard(props){let{item:item,onToggle:onToggle,pending:pending=false,error:error=null,imageVariant:imageVariant=HEALTH_PLAN_LAYOUT_DEFAULTS.imageVariant,reasonVariant:reasonVariant=HEALTH_PLAN_LAYOUT_DEFAULTS.reasonVariant,priceFormat:priceFormat,renderFooter:renderFooter,showCategory:showCategory=HEALTH_PLAN_LAYOUT_DEFAULTS.showCategory,cardShadow:cardShadow=HEALTH_PLAN_LAYOUT_DEFAULTS.cardShadow,cardBorder:cardBorder=HEALTH_PLAN_LAYOUT_DEFAULTS.cardBorder,addButtonSize:addButtonSize=HEALTH_PLAN_LAYOUT_DEFAULTS.addButtonSize,addButtonFontSize:addButtonFontSize,addedVariant:addedVariant=HEALTH_PLAN_LAYOUT_DEFAULTS.addedVariant,categoryVariant:categoryVariant=HEALTH_PLAN_LAYOUT_DEFAULTS.categoryVariant,cardPadding:cardPadding,itemTitleSize:itemTitleSize,itemTitleWeight:itemTitleWeight,priceSize:priceSize,priceWeight:priceWeight,reasonTextSize:reasonTextSize,reasonLabelWidth:reasonLabelWidth,reasonGap:reasonGap,style:style,className:className}=guardHostProps(props,["onToggle"]),theme=useEverfurTheme(),styles2=react.useMemo(()=>makeStyles3(theme),[theme]),snugLine=size=>`${Math.round(size*theme.type.lineHeight.snug)}px`,sized=(base3,size,weight)=>{let px=healthPlanLength(size);return{...base3,...px===null||px===0?null:{fontSize:px,lineHeight:snugLine(px)},...weight===void 0?null:{fontWeight:weight}}},titleStyle=sized(styles2.title,itemTitleSize,itemTitleWeight),priceStyle=sized(styles2.price,priceSize,priceWeight),reasonRowTextStyle=sized(styles2.reasonRowText,reasonTextSize),reasonTextStyle=sized(styles2.reasonText,reasonTextSize),labelWidth=healthPlanLength(reasonLabelWidth),labelGap=healthPlanLength(reasonGap),reasonRowsStyle={...styles2.reasonRows,...labelWidth===null?null:{gridTemplateColumns:`${labelWidth}px 1fr`},...labelGap===null?null:{columnGap:labelGap}},reasonPillStyle=labelGap===null?styles2.reason:{...styles2.reason,gap:labelGap},price=formatHealthPlanPriceWith(item.price,item.currency,priceFormat),thumbnail=imageVariant==="thumbnail",rows=reasonVariant==="rows",priceNode=price===null?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:priceStyle,children:price}),category=showCategory&&item.category!==null?/* @__PURE__ */jsxRuntime.jsx("p",{style:categoryVariant==="label"?styles2.categoryLabel:styles2.category,"data-category-variant":categoryVariant,children:item.category}):null,padding=healthPlanLength(cardPadding),cardStyle={...styles2.card,...cardShadowCss(cardShadow,styles2.cardShadow),...cardBorder?null:{border:"none"},...padding===null?null:{padding:padding}},full=addButtonSize==="full",{height:height,hit:hit}=healthPlanAddButtonHeight(addButtonSize),fontPx=healthPlanLength(addButtonFontSize)??(height>=40?theme.type.size.body:theme.type.size.caption),pillSize={minHeight:height,padding:`0 ${height>=40?theme.space.lg:theme.space.md}px`,fontSize:fontPx},pill=(label,pressed)=>full?label:/* @__PURE__ */jsxRuntime.jsx("span",{style:{...pressed?styles2.addPressed:styles2.addCompact,...pillSize},children:label}),hitStyle={...styles2.addCompactHit,minHeight:hit},control=item.inPlan&&addedVariant==="pressed"?
|
|
389
396
|
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",disabled:pending,"aria-pressed":"true","aria-busy":pending?"true":void 0,onClick:()=>onToggle?.(false),style:full?{...styles2.add,...styles2.addPressed}:hitStyle,"data-size":addButtonSize,"data-added-variant":"pressed",children:pill(HEALTH_PLAN_COPY.added,true)}):item.inPlan?/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.row,children:[
|
|
390
397
|
/* @__PURE__ */jsxRuntime.jsx("span",{style:styles2.added,role:"status",children:HEALTH_PLAN_COPY.added}),
|
|
@@ -394,21 +401,21 @@ return jsxRuntime.jsxs("article",{className:className,style:{...cardStyle,...sty
|
|
|
394
401
|
/* @__PURE__ */jsxRuntime.jsx("h3",{style:titleStyle,children:item.title}),item.sample?/* @__PURE__ */jsxRuntime.jsx("span",{style:styles2.sample,children:HEALTH_PLAN_COPY.sample}):null,item.description===null?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.body,children:item.description})]})]}):/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[item.imageUrl===null?null:/* @__PURE__ */jsxRuntime.jsx("img",{src:item.imageUrl,alt:"",style:styles2.image,loading:"lazy"}),category,
|
|
395
402
|
/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.head,children:[
|
|
396
403
|
/* @__PURE__ */jsxRuntime.jsx("h3",{style:titleStyle,children:item.title}),priceNode]}),item.sample?/* @__PURE__ */jsxRuntime.jsx("span",{style:styles2.sample,children:HEALTH_PLAN_COPY.sample}):null,item.description===null?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.body,children:item.description})]}),item.reasons.length===0?null:/* @__PURE__ */jsxRuntime.jsx("ul",{style:rows?reasonRowsStyle:styles2.reasons,children:item.reasons.map((reason,index)=>/* @__PURE__ */jsxRuntime.jsxs("li",{style:rows?styles2.reasonRow:reasonPillStyle,children:[HEALTH_PLAN_REASON_LABELS[reason.kind]===""?null:/* @__PURE__ */jsxRuntime.jsx("span",{style:rows?styles2.reasonRowKind:styles2.reasonKind,children:HEALTH_PLAN_REASON_LABELS[reason.kind]}),
|
|
397
|
-
/* @__PURE__ */jsxRuntime.jsx("span",{style:rows?reasonRowTextStyle:reasonTextStyle,children:reason.text})]},`${reason.kind}-${index}`))}),renderFooter===void 0?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:item,render:()=>renderFooter(item),fallback:null}),thumbnail?/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.actionRow,children:[priceNode,control]}):control,error===null?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.error,role:"alert",children:error.displayMessage})]})}function cardShadowCss(shadow,soft){if(shadow===true)return soft;if(typeof shadow=="string")return shadow.length>0&&shadow.length<=200?{boxShadow:shadow}:{};if(shadow===void 0||shadow===false)return{};let rgba=toRgba(shadow.color);if(rgba===null)return{};let alpha=Math.min(1,Math.max(0,rgba.a*(shadow.opacity??1)));return{boxShadow:`${shadow.offsetX??0}px ${shadow.offsetY}px ${Math.max(0,shadow.blur)}px rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${alpha})`}}var THUMB_SIZE=64;function makeStyles3(theme){let{color:color,radius:radius,space:space,type:type,slots:slots}=theme,line=size=>`${Math.round(size*type.lineHeight.snug)}px`,text2=(size,ink,weight)=>({margin:0,...faceCss(theme,weight),fontSize:size,lineHeight:line(size),color:ink}),cardInk=slots.planCard?.textColor??slots.card?.textColor,reasonLabelInk=slots.planReasonLabel?.textColor??slots.chip?.textColor??color.brandInk,addPaint={borderRadius:radius.pill,border:"none",backgroundColor:color.brand,color:color.text.onBrand,cursor:"pointer",...faceCss(theme,"bold")};return{card:{boxSizing:"border-box",display:"flex",flexDirection:"column",gap:space.sm,padding:space.lg,borderRadius:radius.lg,border:`1px solid ${color.brandBorder}`,backgroundColor:color.surface,...slotCss(slots.card,1),...slotCss(slots.planCard,1)},cardShadow:{boxShadow:`0 ${space.xs}px ${space.md}px ${withAlpha(color.shadow,.08)??"transparent"}`},category:text2(type.size.caption,cardInk??color.text.secondary,"regular"),categoryLabel:{...text2(type.size.micro,reasonLabelInk,"regular"),...faceCss(theme,"monoMedium"),textTransform:"uppercase",letterSpacing:type.letterSpacing.monoWide},addPressed:{display:"inline-flex",alignItems:"center",borderRadius:radius.pill,border:"none",backgroundColor:color.brandInk,color:readableOn(color.brandInk),cursor:"pointer",...faceCss(theme,"bold"),...slots.primaryButton?.borderRadius===void 0?null:{borderRadius:slots.primaryButton.borderRadius}},image:{width:"100%",aspectRatio:"4 / 3",objectFit:"cover",borderRadius:radius.md,backgroundColor:color.surfaceSubtle},thumbHead:{display:"flex",alignItems:"flex-start",gap:space.md},thumb:{flex:"0 0 auto",width:THUMB_SIZE,height:THUMB_SIZE,objectFit:"cover",borderRadius:radius.md,backgroundColor:color.surfaceSubtle},thumbCopy:{display:"flex",flexDirection:"column",gap:space.xs,minWidth:0,flex:1},actionRow:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:space.sm},reasonRows:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"max-content 1fr",columnGap:space.lg,rowGap:space.sm},reasonRow:{display:"contents"},reasonRowKind:{...text2(type.size.micro,reasonLabelInk,"regular"),...faceCss(theme,"monoMedium"),textTransform:"uppercase",letterSpacing:type.letterSpacing.monoWide,paddingTop:2},reasonRowText:text2(type.size.caption,cardInk??color.text.secondary,"regular"),head:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:space.sm},title:text2(type.size.body,cardInk??color.text.primary,"bold"),price:{...text2(type.size.body,cardInk??color.text.primary,"bold"),whiteSpace:"nowrap"},sample:{alignSelf:"flex-start",padding:`2px ${space.sm}px`,borderRadius:radius.pill,backgroundColor:color.badgeBgNeutral,...text2(type.size.caption,color.text.secondary,"bold")},body:text2(type.size.caption,cardInk??color.text.secondary,"regular"),reasons:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:space.xs},reason:{display:"flex",alignItems:"baseline",gap:space.sm,padding:`${space.xs}px ${space.sm}px`,borderRadius:radius.md,backgroundColor:color.brandSofter,...slotCss(slots.chip,1)},reasonKind:{...text2(type.size.caption,slots.chip?.textColor??color.brandInk,"bold"),textTransform:"uppercase",letterSpacing:.4},reasonText:text2(type.size.caption,slots.chip?.textColor??color.text.secondary,"regular"),row:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:space.sm},added:text2(type.size.caption,color.brandInk,"bold"),add:{minHeight:44,padding:`0 ${space.lg}px`,...addPaint,fontSize:type.size.body,...slotCss(slots.primaryButton)},addCompactHit:{minHeight:44,padding:0,border:"none",background:"none",cursor:"pointer",display:"inline-flex",alignItems:"center",alignSelf:"flex-start"},addCompact:{display:"inline-flex",alignItems:"center",minHeight:32,padding:`0 ${space.md}px`,...addPaint,fontSize:type.size.caption,...slotCss(slots.primaryButton)},remove:{minHeight:44,padding:0,border:"none",background:"none",cursor:"pointer",...faceCss(theme,"bold"),fontSize:type.size.caption,color:color.linkInk,...slotCss(slots.link)},error:text2(type.size.caption,color.errorRed,"regular")}}function probeOver(useRecords){return function(props){let{status:status}=useRecords({petRef:props.petRef}),{
|
|
398
|
-
return jsxRuntime.jsx(react.Suspense,{fallback:null,children:/* @__PURE__ */jsxRuntime.jsx(LazyProbe,{petRef:props.petRef,
|
|
404
|
+
/* @__PURE__ */jsxRuntime.jsx("span",{style:rows?reasonRowTextStyle:reasonTextStyle,children:reason.text})]},`${reason.kind}-${index}`))}),renderFooter===void 0?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:item,render:()=>renderFooter(item),fallback:null}),thumbnail?/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.actionRow,children:[priceNode,control]}):control,error===null?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.error,role:"alert",children:error.displayMessage})]})}function cardShadowCss(shadow,soft){if(shadow===true)return soft;if(typeof shadow=="string")return shadow.length>0&&shadow.length<=200?{boxShadow:shadow}:{};if(shadow===void 0||shadow===false)return{};let rgba=toRgba(shadow.color);if(rgba===null)return{};let alpha=Math.min(1,Math.max(0,rgba.a*(shadow.opacity??1)));return{boxShadow:`${shadow.offsetX??0}px ${shadow.offsetY}px ${Math.max(0,shadow.blur)}px rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${alpha})`}}var THUMB_SIZE=64;function makeStyles3(theme){let{color:color,radius:radius,space:space,type:type,slots:slots}=theme,line=size=>`${Math.round(size*type.lineHeight.snug)}px`,text2=(size,ink,weight)=>({margin:0,...faceCss(theme,weight),fontSize:size,lineHeight:line(size),color:ink}),cardInk=slots.planCard?.textColor??slots.card?.textColor,reasonLabelInk=slots.planReasonLabel?.textColor??slots.chip?.textColor??color.brandInk,addPaint={borderRadius:radius.pill,border:"none",backgroundColor:color.brand,color:color.text.onBrand,cursor:"pointer",...faceCss(theme,"bold")};return{card:{boxSizing:"border-box",display:"flex",flexDirection:"column",gap:space.sm,padding:space.lg,borderRadius:radius.lg,border:`1px solid ${color.brandBorder}`,backgroundColor:color.surface,...slotCss(slots.card,1),...slotCss(slots.planCard,1)},cardShadow:{boxShadow:`0 ${space.xs}px ${space.md}px ${withAlpha(color.shadow,.08)??"transparent"}`},category:text2(type.size.caption,cardInk??color.text.secondary,"regular"),categoryLabel:{...text2(type.size.micro,reasonLabelInk,"regular"),...faceCss(theme,"monoMedium"),textTransform:"uppercase",letterSpacing:type.letterSpacing.monoWide},addPressed:{display:"inline-flex",alignItems:"center",borderRadius:radius.pill,border:"none",backgroundColor:color.brandInk,color:readableOn(color.brandInk),cursor:"pointer",...faceCss(theme,"bold"),...slots.primaryButton?.borderRadius===void 0?null:{borderRadius:slots.primaryButton.borderRadius}},image:{width:"100%",aspectRatio:"4 / 3",objectFit:"cover",borderRadius:radius.md,backgroundColor:color.surfaceSubtle},thumbHead:{display:"flex",alignItems:"flex-start",gap:space.md},thumb:{flex:"0 0 auto",width:THUMB_SIZE,height:THUMB_SIZE,objectFit:"cover",borderRadius:radius.md,backgroundColor:color.surfaceSubtle},thumbCopy:{display:"flex",flexDirection:"column",gap:space.xs,minWidth:0,flex:1},actionRow:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:space.sm},reasonRows:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"max-content 1fr",columnGap:space.lg,rowGap:space.sm},reasonRow:{display:"contents"},reasonRowKind:{...text2(type.size.micro,reasonLabelInk,"regular"),...faceCss(theme,"monoMedium"),textTransform:"uppercase",letterSpacing:type.letterSpacing.monoWide,paddingTop:2},reasonRowText:text2(type.size.caption,cardInk??color.text.secondary,"regular"),head:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:space.sm},title:text2(type.size.body,cardInk??color.text.primary,"bold"),price:{...text2(type.size.body,cardInk??color.text.primary,"bold"),whiteSpace:"nowrap"},sample:{alignSelf:"flex-start",padding:`2px ${space.sm}px`,borderRadius:radius.pill,backgroundColor:color.badgeBgNeutral,...text2(type.size.caption,color.text.secondary,"bold")},body:text2(type.size.caption,cardInk??color.text.secondary,"regular"),reasons:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:space.xs},reason:{display:"flex",alignItems:"baseline",gap:space.sm,padding:`${space.xs}px ${space.sm}px`,borderRadius:radius.md,backgroundColor:color.brandSofter,...slotCss(slots.chip,1)},reasonKind:{...text2(type.size.caption,slots.chip?.textColor??color.brandInk,"bold"),textTransform:"uppercase",letterSpacing:.4},reasonText:text2(type.size.caption,slots.chip?.textColor??color.text.secondary,"regular"),row:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:space.sm},added:text2(type.size.caption,color.brandInk,"bold"),add:{minHeight:44,padding:`0 ${space.lg}px`,...addPaint,fontSize:type.size.body,...slotCss(slots.primaryButton)},addCompactHit:{minHeight:44,padding:0,border:"none",background:"none",cursor:"pointer",display:"inline-flex",alignItems:"center",alignSelf:"flex-start"},addCompact:{display:"inline-flex",alignItems:"center",minHeight:32,padding:`0 ${space.md}px`,...addPaint,fontSize:type.size.caption,...slotCss(slots.primaryButton)},remove:{minHeight:44,padding:0,border:"none",background:"none",cursor:"pointer",...faceCss(theme,"bold"),fontSize:type.size.caption,color:color.linkInk,...slotCss(slots.link)},error:text2(type.size.caption,color.errorRed,"regular")}}var WAITING=/* @__PURE__ */new Set(["requested","awaiting_clinic","awaiting_upload","received","parsing","in_review"]),VACCINE=/vaccin|rabies|dhpp|booster|bordetella|lepto|lyme|parvo|distemper/i,LB_PER_KG2=2.20462262;function dayMs(value){if(value==null||value.length===0)return null;let ms=Date.parse(/^\d{4}-\d{2}-\d{2}$/.test(value)?`${value}T00:00:00Z`:value);return Number.isNaN(ms)?null:ms}function kilograms(value,unit){return value===null||!Number.isFinite(value)||value<=0||unit===null?null:/^\s*kg|kilo/i.test(unit)?value:/^\s*(lb|lbs|pound)/i.test(unit)?value/LB_PER_KG2:null}function healthPlanRecordsWeightKg(record){if(record===null||record.isEmpty||record.withheld)return null;let readings=[];for(let series of record.entitySeries)if(series.key.startsWith("body_weight"))for(let point of series.points){if(point.origin==="owner_reported")continue;let at=dayMs(point.at),unit=point.display?.replace(/^[\d.,\s]+/,"")??null,kg=kilograms(point.value,unit);at!==null&&kg!==null&&readings.push({at:at,kg:kg})}for(let entity of record.entities){if(entity.category!=="body_weight"||entity.origin==="owner_reported")continue;let at=dayMs(entity.observedAt),kg=kilograms(entity.value===null?null:Number.parseFloat(entity.value),entity.unit);at!==null&&kg!==null&&readings.push({at:at,kg:kg})}return readings.length===0?null:(readings.sort((a,b)=>b.at-a.at),readings[0]?.kg??null)}function healthPlanNextShotsAt(record,today){if(record===null||record.isEmpty||record.withheld)return null;let next=null;for(let item of record.forwardLooking){if(!VACCINE.test(item.title))continue;let due=dayMs(item.dueAt);due===null||due<today||(next===null||due<next)&&(next=due)}return next}function healthPlanBlanksFacts(input,now){let asked=input.requests.filter(r=>r.source==="clinic_request").slice().sort((a,b)=>(dayMs(b.createdAt)??0)-(dayMs(a.createdAt)??0))[0];if(asked===void 0)return null;let clinicName=asked.clinicName?.trim()?asked.clinicName.trim():null;if(WAITING.has(asked.status))return{phase:"wait",requestId:String(asked.id),clinicName:clinicName,weightKg:null,nextShotsAt:null};if(asked.status!=="published"||input.record===null||input.record.isEmpty||input.record.withheld)return null;let today=Math.floor(now/864e5)*864e5;return{phase:"filled",requestId:String(asked.id),clinicName:clinicName,weightKg:healthPlanRecordsWeightKg(input.record),nextShotsAt:healthPlanNextShotsAt(input.record,today)}}var COARSE_NOW_TICK_MS=3600*1e3;function useCoarseNow(fixed,shown=true){let[now,setNow]=react.useState(()=>Date.now()),first=react.useRef(true);return react.useEffect(()=>{if(first.current){first.current=false;return}shown&&setNow(Date.now())},[fixed,shown]),react.useEffect(()=>{if(!shown)return;let tick=setInterval(()=>setNow(Date.now()),COARSE_NOW_TICK_MS),onVisible=()=>{document.visibilityState==="visible"&&setNow(Date.now())},doc=typeof document<"u"&&typeof document.addEventListener=="function"?document:null;return doc?.addEventListener("visibilitychange",onVisible),()=>{clearInterval(tick),doc?.removeEventListener("visibilitychange",onVisible)}},[fixed,shown]),now}function probeOver(useRecords){return function(props){let{status:status,requests:requests,record:record,refresh:refresh}=useRecords({petRef:props.petRef}),{onRead:onRead,petRef:petRef}=props,now=useCoarseNow(),blanks=react.useMemo(()=>healthPlanBlanksFacts({requests:requests,record:record},now),[requests,record,now]);react.useEffect(()=>{onRead({missing:status==="empty",blanks:blanks})},[status,blanks,onRead]);let reread=react.useRef(refresh);return reread.current=refresh,react.useEffect(()=>onHealthPlanRecordsLanded((pet,source)=>{pet===petRef&&source==="host"&&reread.current()}),[petRef]),null}}var Nothing=()=>null,LazyProbe=react.lazy(()=>import("@everfur/sdk/web/records").then(m=>({default:probeOver(m.useEverfurRecords)}),()=>({default:Nothing})));function RecordsMissingProbe(props){/* @__PURE__ */
|
|
405
|
+
return jsxRuntime.jsx(react.Suspense,{fallback:null,children:/* @__PURE__ */jsxRuntime.jsx(LazyProbe,{petRef:props.petRef,onRead:props.onRead})})}function EverfurHealthPlan(props){let guarded=guardHostProps(props,["onCheckout","onAvailability","onAsk"]),focus=react.useMemo(()=>{let f=props.focus;if(f===void 0)return;let voids=guardHostProps(f,["onBuy","onMore","onExtra","onAddToVisit","onOverlayChange","onSubscriptionChange","onOneBoxOrder","navigate"]),{renderIcon:renderIcon,overlayContainer:overlayContainer}=f;return{...voids,...renderIcon?{renderIcon:(icon,className)=>callHost(renderIcon,icon,className)??null}:{},...overlayContainer?{overlayContainer:layer=>callHost(overlayContainer,layer)??null}:{}}},[props.focus]),focusOn=useEverfurPresentation(props.presentation?.healthPlanLayout===void 0?void 0:{healthPlanLayout:props.presentation.healthPlanLayout}).healthPlanLayout==="focus_plan"?focus??NO_FOCUS_OPTIONS:void 0,planProps={...guarded};delete planProps.focus,delete planProps.presentation,delete planProps.lifecycle,delete planProps.refreshKey;let{lifecycle:lifecycle,refreshKey:refreshKey}=guarded,lifecyclePort=react.useMemo(()=>lifecycle===void 0?createBrowserLifecycle():lifecycle,[lifecycle]),theme=useEverfurTheme(),styles2=react.useMemo(()=>makeStyles4(theme),[theme]),plan=useEverfurHealthPlan({...guarded.petRef===void 0?{}:{petRef:guarded.petRef},lifecycle:lifecyclePort,...refreshKey===void 0?{}:{refreshKey:refreshKey}});return plan.status==="signedOut"?/* @__PURE__ */jsxRuntime.jsx("section",{className:guarded.className,style:{...styles2.page,...guarded.style},children:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.body,children:HEALTH_PLAN_COPY.signedOut})}):/* @__PURE__ */jsxRuntime.jsx(CapabilityGate,{capability:"healthPlan",...guarded.renderDisabled?{renderDisabled:guarded.renderDisabled}:{},style:guarded.style,className:guarded.className,children:/* @__PURE__ */jsxRuntime.jsx(PlanBody,{...planProps,...focusOn?{focus:focusOn}:{},plan:plan,styles:styles2,theme:theme,pageLifecycle:lifecyclePort,...refreshKey===void 0?{}:{pageRefreshKey:refreshKey}})})}function PlanBody({plan:plan,styles:styles2,onCheckout:onCheckout,renderNotice:renderNotice,style:style,className:className,imageVariant:imageVariant,reasonVariant:reasonVariant,cartBarVisibility:cartBarVisibility,priceFormat:priceFormat,renderHeader:renderHeader,renderItemFooter:renderItemFooter,renderFooter:renderFooter,titleSize:titleSize,titleGap:titleGap,sectionGap:sectionGap,cartBarPlacement:cartBarPlacement,titleLineHeight:titleLineHeight,renderBetweenItems:renderBetweenItems,theme:theme,focus:focus,pageLifecycle:pageLifecycle,pageRefreshKey:pageRefreshKey,onAvailability:onAvailability,onAsk:onAsk,emptyCopy:emptyCopy,...cardProps}){let{pets:pets}=useEverfurPets(),petName=pets.find(pet=>pet.petRef===plan.petRef)?.name??null,title=plan.plan?.headline??(petName===null?null:HEALTH_PLAN_TEMPLATES.planTitle(petName)),docked=cartBarPlacement==="none";usePublishHealthPlanCart(docked&&plan.status==="ready",plan.cart,plan.pending.length>0,plan.petRef,plan.plan,plan.setInPlan);let telemetry=useHealthPlanTelemetry(),fromBackend=focus!==void 0&&focus.design===void 0,page=useHealthPlanPage({petRef:plan.petRef,enabled:fromBackend,...focus?.pageRepository?{repository:focus.pageRepository}:{},lifecycle:pageLifecycle,...pageRefreshKey===void 0?{}:{refreshKey:pageRefreshKey}});useHealthPlanOpened(plan.status==="ready"||plan.status==="empty",plan.petRef,plan.plan);let pageFallback=healthPlanPageFallback(fromBackend,page),available=plan.status==="empty"?false:plan.status==="ready"&&(!fromBackend||pageFallback==="list"||page.phase==="ready"&&page.page!==null)?true:void 0,availability=react.useRef(onAvailability);availability.current=onAvailability,react.useEffect(()=>{available!==void 0&&availability.current?.(available,plan.petRef)},[available,plan.petRef]);let[recordsRead,setRecordsRead]=react.useState(NO_RECORDS_READ),probeRecords=focus!==void 0&&focus.onConnectRecords!==void 0&&focus.recordsMissing===void 0&&focus.recordsBlanks===void 0&&plan.petRef!==null,probe=probeRecords&&plan.petRef!==null?/* @__PURE__ */jsxRuntime.jsx(RecordsMissingProbe,{petRef:plan.petRef,onRead:setRecordsRead},plan.petRef):null,gap=healthPlanLength(sectionGap),pageStyle=gap===null?styles2.page:{...styles2.page,gap:gap},size=healthPlanLength(titleSize),ratio=healthPlanLength(titleLineHeight),titlePx=size===null||size===0?theme.type.size.heading:size,titleStyle={...styles2.title,...size===null||size===0?null:{fontSize:size,lineHeight:`${Math.round(size*theme.type.lineHeight.snug)}px`},...ratio===null||ratio===0?null:{lineHeight:`${Math.round(titlePx*ratio)}px`},marginBottom:healthPlanTitleOffset(titleGap,gap??theme.space.lg)},titleNode=title===null?null:/* @__PURE__ */jsxRuntime.jsx("h2",{style:titleStyle,children:title}),writes=react.useMemo(()=>healthPlanWrites(plan.plan,plan.setInPlan),[plan.plan,plan.setInPlan]),context={petRef:plan.petRef,plan:plan.plan,cart:plan.cart,...writes},cardOptions=pickHealthPlanCardOptions(cardProps),between=(index,item)=>renderBetweenItems===void 0||index===0?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:item,render:()=>renderBetweenItems(index,item),fallback:null}),header=renderHeader===void 0?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:plan.plan,render:()=>renderHeader(context),fallback:null}),frame=(children,busy=false)=>/* @__PURE__ */jsxRuntime.jsx("section",{className:className,style:{...pageStyle,...style},"aria-busy":busy?"true":void 0,children:children});if(plan.status==="noPet")return frame(/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.body,children:HEALTH_PLAN_COPY.choosePet}));let loading=()=>/* @__PURE__ */jsxRuntime.jsxs("section",{className:className,style:{...styles2.page,...style},role:"status","aria-busy":"true","aria-label":HEALTH_PLAN_COPY.loading,children:[
|
|
399
406
|
/* @__PURE__ */jsxRuntime.jsx("div",{style:styles2.skeletonTitle}),
|
|
400
407
|
/* @__PURE__ */jsxRuntime.jsx("div",{style:styles2.skeletonCard}),
|
|
401
408
|
/* @__PURE__ */jsxRuntime.jsx("div",{style:styles2.skeletonCard})]}),refused=(error,retry)=>{let signIn=isHealthPlanSessionRequired(error),line=signIn?HEALTH_PLAN_COPY.signedOut:error?.displayMessage??"";return frame(
|
|
402
409
|
/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.notice,role:"alert",children:[error===null?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:error,render:()=>renderNotice?renderNotice(error):/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.noticeText,children:line}),fallback:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.noticeText,children:line})}),signIn?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>{retry()},style:styles2.retry,children:HEALTH_PLAN_COPY.retry})]}))},words2={emptyTitle:emptyCopy?.emptyTitle??HEALTH_PLAN_COPY.emptyTitle,emptyBody:emptyCopy?.emptyBody??HEALTH_PLAN_COPY.emptyBody,emptyAsk:emptyCopy?.emptyAsk??HEALTH_PLAN_COPY.emptyAsk},empty=()=>words2.emptyTitle.trim()===""&&words2.emptyBody.trim()===""?null:frame(
|
|
403
410
|
/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[titleNode,header,
|
|
404
|
-
/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.empty,children:[words2.emptyTitle.trim()===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.subtitle,children:words2.emptyTitle}),words2.emptyBody.trim()===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.body,children:words2.emptyBody}),words2.emptyAsk.trim()===""||onAsk===void 0?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>onAsk(),style:styles2.retry,children:words2.emptyAsk})]})]}));if(plan.status==="loading")return loading();if(plan.status==="failed")return refused(plan.error,plan.refresh);if(plan.status==="empty")return empty();let design=focus?.design,checkout,weightKnown=focus?.weightKnown;if(fromBackend&&pageFallback==="session")return refused(page.error,page.refresh);if(fromBackend&&pageFallback===null&&(page.phase!=="ready"||page.page===null||page.page.page===null))return loading();fromBackend&&pageFallback===null&&page.page!==null&&page.page.page!==null&&(design=page.page.page,checkout=page.page.checkout,weightKnown??=page.page.pet.weightKg!==null,design=without(design,"checkoutRows"),design={...design,pick:without(design.pick,"trust")},design={...design,copy:{...design.copy,...HEALTH_PLAN_NO_SHIP_DAY_COPY}},page.page.vetReviewed===true?design.byline===void 0&&(design={...design,byline:VET_REVIEWED_BYLINE}):design.byline!==void 0&&(design=without(design,"byline")));let backendPage=fromBackend?page.page:null,trackingTexts=backendPage?backendPage.trackingTextsEnabled===true:focus?.trackingTexts,petSex=backendPage?backendPage.pet.sex:focus?.petSex,recordsMissing=focus?.recordsMissing??(probeRecords?
|
|
405
|
-
/* @__PURE__ */jsxRuntime.jsx(HealthPlanFocus,{...focus,design:design,...trackingTexts===void 0?{}:{trackingTexts:trackingTexts},...petSex===void 0?{}:{petSex:petSex},...recordsMissing===void 0?{}:{recordsMissing:recordsMissing},...checkout?{checkout:checkout}:{},...weightKnown===void 0?{}:{weightKnown:weightKnown},...fromBackend?{onWeightSaved:kg=>{onWeightSaved?.(kg),pageRefresh()}}:{},item:picked,others:items.filter(item=>item!==picked),...cardOptions.showCategory!==void 0?{showCategory:cardOptions.showCategory}:{},lifecycle:pageLifecycle,...pageRefreshKey===void 0?{}:{refreshKey:pageRefreshKey},petRef:plan.petRef,petName:petName,...onCheckout?{onCheckout:onCheckout}:{},...priceFormat?{priceFormat:priceFormat}:{},...className?{className:className}:{},...style?{style:style}:{}})]}):frame(
|
|
411
|
+
/* @__PURE__ */jsxRuntime.jsxs("div",{style:styles2.empty,children:[words2.emptyTitle.trim()===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.subtitle,children:words2.emptyTitle}),words2.emptyBody.trim()===""?null:/* @__PURE__ */jsxRuntime.jsx("p",{style:styles2.body,children:words2.emptyBody}),words2.emptyAsk.trim()===""||onAsk===void 0?null:/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",onClick:()=>onAsk(),style:styles2.retry,children:words2.emptyAsk})]})]}));if(plan.status==="loading")return loading();if(plan.status==="failed")return refused(plan.error,plan.refresh);if(plan.status==="empty")return empty();let design=focus?.design,checkout,weightKnown=focus?.weightKnown;if(fromBackend&&pageFallback==="session")return refused(page.error,page.refresh);if(fromBackend&&pageFallback===null&&(page.phase!=="ready"||page.page===null||page.page.page===null))return loading();fromBackend&&pageFallback===null&&page.page!==null&&page.page.page!==null&&(design=page.page.page,checkout=page.page.checkout,weightKnown??=page.page.pet.weightKg!==null,design=without(design,"checkoutRows"),design={...design,pick:without(design.pick,"trust")},design={...design,copy:{...design.copy,...HEALTH_PLAN_NO_SHIP_DAY_COPY}},page.page.vetReviewed===true?design.byline===void 0&&(design={...design,byline:VET_REVIEWED_BYLINE}):design.byline!==void 0&&(design=without(design,"byline")));let backendPage=fromBackend?page.page:null,trackingTexts=backendPage?backendPage.trackingTextsEnabled===true:focus?.trackingTexts,petSex=backendPage?backendPage.pet.sex:focus?.petSex,recordsMissing=focus?.recordsMissing??(probeRecords?recordsRead.missing:void 0),recordsBlanks=focus?.recordsBlanks!==void 0?focus.recordsBlanks:probeRecords?recordsRead.blanks:void 0,onWeightSaved=focus?.onWeightSaved,pageRefresh=page.refresh,items=plan.plan?.items??[],pick2=design?.pick,picked=pick2===void 0?void 0:items.find(item=>pick2.productId!==void 0&&item.productId===pick2.productId)??items.find(item=>pick2.partnerSku!==void 0&&item.partnerSku===pick2.partnerSku)??items[0];return focus!==void 0&&design!==void 0&&picked!==void 0&&plan.petRef!==null?/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[probe,
|
|
412
|
+
/* @__PURE__ */jsxRuntime.jsx(HealthPlanFocus,{...focus,design:design,...trackingTexts===void 0?{}:{trackingTexts:trackingTexts},...petSex===void 0?{}:{petSex:petSex},...recordsMissing===void 0?{}:{recordsMissing:recordsMissing},...recordsBlanks===void 0?{}:{recordsBlanks:recordsBlanks},...checkout?{checkout:checkout}:{},...weightKnown===void 0?{}:{weightKnown:weightKnown},...fromBackend?{onWeightSaved:kg=>{onWeightSaved?.(kg),pageRefresh()}}:{},item:picked,others:items.filter(item=>item!==picked),...cardOptions.showCategory!==void 0?{showCategory:cardOptions.showCategory}:{},lifecycle:pageLifecycle,...pageRefreshKey===void 0?{}:{refreshKey:pageRefreshKey},petRef:plan.petRef,petName:petName,...onCheckout?{onCheckout:onCheckout}:{},...priceFormat?{priceFormat:priceFormat}:{},...className?{className:className}:{},...style?{style:style}:{}})]}):frame(
|
|
406
413
|
/* @__PURE__ */jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[titleNode,header,
|
|
407
414
|
/* @__PURE__ */jsxRuntime.jsx("ul",{style:imageVariant==="thumbnail"?styles2.column:styles2.list,children:items.map((item,index)=>/* @__PURE__ */jsxRuntime.jsxs(react.Fragment,{children:[renderBetweenItems===void 0||index===0?null:
|
|
408
415
|
/* @__PURE__ */jsxRuntime.jsx("li",{style:styles2.between,children:between(index,item)}),
|
|
409
|
-
/* @__PURE__ */jsxRuntime.jsx("li",{style:styles2.listItem,children:/* @__PURE__ */jsxRuntime.jsx(HealthPlanItemCard,{item:item,pending:plan.pending.includes(item.productId),error:plan.itemErrors[item.productId]??null,onToggle:inPlan=>{trackProductClicked(telemetry,plan.petRef,item.productId,inPlan),plan.setInPlan(item.productId,inPlan)},...imageVariant?{imageVariant:imageVariant}:{},...reasonVariant?{reasonVariant:reasonVariant}:{},...priceFormat?{priceFormat:priceFormat}:{},...renderItemFooter?{renderFooter:renderItemFooter}:{},...cardOptions})})]},item.productId))}),renderFooter===void 0?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:plan.plan,render:()=>renderFooter(context),fallback:null}),!docked&&showHealthPlanCartBar(cartBarVisibility,plan.cart.count)?/* @__PURE__ */jsxRuntime.jsx(HealthPlanPetScope,{petRef:plan.petRef,children:/* @__PURE__ */jsxRuntime.jsx(HealthPlanCartBar,{cart:plan.cart,busy:plan.pending.length>0,...onCheckout?{onCheckout:onCheckout}:{},...priceFormat?{priceFormat:priceFormat}:{},style:styles2.bar})}):null]}),plan.pending.length>0)}function healthPlanPageFallback(fromBackend,page){return fromBackend?page.phase==="failed"?isHealthPlanSessionRequired(page.error)?"session":"list":page.phase!=="ready"?null:page.missing||page.page!==null&&page.page.page===null?"list":null:null}function without(o,key){let copy={...o};return delete copy[key],copy}var VET_REVIEWED_BYLINE=/* @__PURE__ */Object.freeze({name:"
|
|
416
|
+
/* @__PURE__ */jsxRuntime.jsx("li",{style:styles2.listItem,children:/* @__PURE__ */jsxRuntime.jsx(HealthPlanItemCard,{item:item,pending:plan.pending.includes(item.productId),error:plan.itemErrors[item.productId]??null,onToggle:inPlan=>{trackProductClicked(telemetry,plan.petRef,item.productId,inPlan),plan.setInPlan(item.productId,inPlan)},...imageVariant?{imageVariant:imageVariant}:{},...reasonVariant?{reasonVariant:reasonVariant}:{},...priceFormat?{priceFormat:priceFormat}:{},...renderItemFooter?{renderFooter:renderItemFooter}:{},...cardOptions})})]},item.productId))}),renderFooter===void 0?null:/* @__PURE__ */jsxRuntime.jsx(HostRender,{resetKey:plan.plan,render:()=>renderFooter(context),fallback:null}),!docked&&showHealthPlanCartBar(cartBarVisibility,plan.cart.count)?/* @__PURE__ */jsxRuntime.jsx(HealthPlanPetScope,{petRef:plan.petRef,children:/* @__PURE__ */jsxRuntime.jsx(HealthPlanCartBar,{cart:plan.cart,busy:plan.pending.length>0,...onCheckout?{onCheckout:onCheckout}:{},...priceFormat?{priceFormat:priceFormat}:{},style:styles2.bar})}):null]}),plan.pending.length>0)}function healthPlanPageFallback(fromBackend,page){return fromBackend?page.phase==="failed"?isHealthPlanSessionRequired(page.error)?"session":"list":page.phase!=="ready"?null:page.missing||page.page!==null&&page.page.page===null?"list":null:null}function without(o,key){let copy={...o};return delete copy[key],copy}var VET_REVIEWED_BYLINE=/* @__PURE__ */Object.freeze({name:"Dr. Ellen Russell",role:"DVM, Medical Director"}),NO_RECORDS_READ=/* @__PURE__ */Object.freeze({missing:false,blanks:null}),NO_FOCUS_OPTIONS=/* @__PURE__ */Object.freeze({});function makeStyles4(theme){let{color:color,radius:radius,space:space,type:type}=theme,line=size=>`${Math.round(size*type.lineHeight.snug)}px`,text2=(size,ink,weight)=>({margin:0,...faceCss(theme,weight),fontSize:size,lineHeight:line(size),color:ink});return{page:{boxSizing:"border-box",display:"flex",flexDirection:"column",gap:space.lg,padding:space.lg},title:{...text2(type.size.heading,color.text.primary,"bold"),...headingFaceCss(theme,"bold")},subtitle:text2(type.size.body,color.text.primary,"bold"),body:text2(type.size.body,color.text.secondary,"regular"),list:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(240px, 1fr))",gap:space.md},column:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:space.md},listItem:{display:"flex",flexDirection:"column"},between:{gridColumn:"1 / -1",display:"flex",flexDirection:"column"},empty:{display:"flex",flexDirection:"column",gap:space.xs,padding:space.lg,borderRadius:radius.lg,backgroundColor:color.surfaceSubtle},notice:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:space.xs},noticeText:text2(type.size.caption,color.errorRed,"regular"),retry:{minHeight:44,padding:0,border:"none",background:"none",cursor:"pointer",...faceCss(theme,"bold"),fontSize:type.size.caption,color:color.linkInk},bar:{position:"sticky",bottom:space.md},skeletonTitle:{height:28,width:"50%",borderRadius:radius.sm,backgroundColor:color.skeleton},skeletonCard:{height:160,borderRadius:radius.lg,backgroundColor:color.skeleton}}}function HealthPlanTopRisk(props){let guarded=guardHostProps(props,["onOpenPlan"]),theme=useEverfurTheme(),S=react.useMemo(()=>styles(theme),[theme]),cls=guarded.classNames,kind=guarded.kind??"risk",part=(name,mod)=>{let c=[cls?.[name],mod===void 0?void 0:cls?.[`${name}:${mod}`]].filter(x=>typeof x=="string"&&x!=="").join(" ");return c===""?{style:S[name]}:{className:c}},card=part("card");/* @__PURE__ */
|
|
410
417
|
return jsxRuntime.jsxs("article",{...card,style:card.style===void 0?guarded.style:{...card.style,...guarded.style},children:[
|
|
411
418
|
/* @__PURE__ */jsxRuntime.jsxs("p",{...part("kicker"),children:[
|
|
412
419
|
/* @__PURE__ */jsxRuntime.jsx("span",{...part("dot",kind)}),guarded.kicker]}),
|
|
413
420
|
/* @__PURE__ */jsxRuntime.jsx("p",{...part("sentence"),children:guarded.sentence}),
|
|
414
|
-
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...part("button"),onClick:()=>guarded.onOpenPlan(),children:guarded.action})]})}function styles(theme){let{color:color,radius:radius,space:space,type:type}=theme;return{card:{display:"grid",gap:space.xs,justifyItems:"start",padding:space.md,borderRadius:radius.lg,backgroundColor:color.brandSofter},kicker:{margin:0,display:"flex",alignItems:"center",gap:space.xs,...faceCss(theme,"bold"),fontSize:type.size.caption,color:color.text.secondary,textTransform:"uppercase",letterSpacing:"0.06em"},dot:{width:8,height:8,borderRadius:4,backgroundColor:color.errorRed},sentence:{margin:0,...faceCss(theme,"bold"),fontSize:type.size.subtitle,color:color.text.primary},button:{minHeight:40,padding:`0 ${space.md}px`,border:"none",borderRadius:999,cursor:"pointer",backgroundColor:color.primary,color:color.onPrimary,...faceCss(theme,"bold"),fontSize:type.size.caption}}}var CLOSE_FALLBACK="Close",HEALTH_PLAN_TOP_CARD_COPY=/* @__PURE__ */Object.freeze({action:who=>who.possessive===null?null:`See ${who.possessive} Health Plan`,ask:"What does it mean?",askPrompt:(focus,ask)=>focus.risk?.lead?`${focus.risk.lead} ${ask}`:`${focus.title}: ${ask}`,close:who=>who.possessive===null?null:`Close ${who.possessive} focus`});function healthPlanPossessive(pet){let sex=typeof pet.sex=="string"?pet.sex.trim().toLowerCase():null;if(sex==="female")return"her";if(sex==="male")return"his";let name=typeof pet.name=="string"?pet.name.trim():"";return name!==""?`${name}'s`:null}function healthPlanTopCard(page,options){let focus=page?.page?.focus;if(page===null||focus===void 0||focus.title.trim()===""||focus.kicker.trim()==="")return;let copy={...HEALTH_PLAN_TOP_CARD_COPY,...options.copy},who={pet:page.pet,possessive:healthPlanPossessive(page.pet)},badge=focus.sources?.find(source=>source.label.trim()!=="")?.label,onOpenPlan=options.onOpenPlan,action=onOpenPlan===void 0?null:copy.action(who),close=copy.close(who),ask=copy.ask.trim();return{kicker:focus.kicker,...badge===void 0?{}:{badge:badge},title:focus.title,...focus.risk?.lead?{lead:focus.risk.lead}:{},...focus.risk?.body?{body:focus.risk.body}:{},...action===null||action.trim()===""||onOpenPlan===void 0?{}:{action:{label:action,onPress:onOpenPlan}},...ask===""?{}:{ask:{label:ask,prompt:copy.askPrompt(focus,ask)}},closeLabel:close===null||close.trim()===""?CLOSE_FALLBACK:close,pill:focus.kicker,...options.renderIcon===void 0?{}:{renderIcon:options.renderIcon},...options.classNames===void 0?{}:{classNames:options.classNames}}}function useHealthPlanTopCard(options){let{petRef:petRef,enabled:enabled,onOpenPlan:onOpenPlan,copy:copy,classNames:classNames,renderIcon:renderIcon}=options,{page:page}=useHealthPlanPage({petRef:petRef,...enabled===void 0?{}:{enabled:enabled}});return react.useMemo(()=>healthPlanTopCard(page,{onOpenPlan:onOpenPlan,...copy===void 0?{}:{copy:copy},...classNames===void 0?{}:{classNames:classNames},...renderIcon===void 0?{}:{renderIcon:renderIcon}}),[page,onOpenPlan,copy,classNames,renderIcon])}exports.EverfurHealthPlan=EverfurHealthPlan;exports.HEALTH_PLAN_COPY=HEALTH_PLAN_COPY;exports.HEALTH_PLAN_COPY_PLACEHOLDERS=HEALTH_PLAN_COPY_PLACEHOLDERS;exports.HEALTH_PLAN_FOCUS_COPY=HEALTH_PLAN_FOCUS_COPY;exports.HEALTH_PLAN_LAYOUT_DEFAULTS=HEALTH_PLAN_LAYOUT_DEFAULTS;exports.HEALTH_PLAN_REASON_KINDS=HEALTH_PLAN_REASON_KINDS;exports.HEALTH_PLAN_REASON_LABELS=HEALTH_PLAN_REASON_LABELS;exports.HEALTH_PLAN_TEMPLATES=HEALTH_PLAN_TEMPLATES;exports.HEALTH_PLAN_TOP_CARD_COPY=HEALTH_PLAN_TOP_CARD_COPY;exports.HealthPlanCartBar=HealthPlanCartBar;exports.HealthPlanCartScope=HealthPlanCartScope;exports.HealthPlanController=HealthPlanController;exports.HealthPlanFocus=HealthPlanFocus;exports.HealthPlanItemCard=HealthPlanItemCard;exports.HealthPlanTopRisk=HealthPlanTopRisk;exports.createHealthPlanPageRepository=createHealthPlanPageRepository;exports.createHealthPlanPageRepositoryOver=createHealthPlanPageRepositoryOver;exports.createHealthPlanRepository=createHealthPlanRepository;exports.createHealthPlanRepositoryOver=createHealthPlanRepositoryOver;exports.createHealthPlanSubscriptionRepository=createHealthPlanSubscriptionRepository;exports.createHealthPlanSubscriptionRepositoryOver=createHealthPlanSubscriptionRepositoryOver;exports.formatHealthPlanDay=formatHealthPlanDay;exports.formatHealthPlanPrice=formatHealthPlanPrice;exports.formatHealthPlanPriceWith=formatHealthPlanPriceWith;exports.healthPlanCart=healthPlanCart;exports.healthPlanCheckoutRefusal=healthPlanCheckoutRefusal;exports.healthPlanCheckoutSessionFromWire=healthPlanCheckoutSessionFromWire;exports.healthPlanCheckoutStateFromWire=healthPlanCheckoutStateFromWire;exports.healthPlanFocusCopyFor=healthPlanFocusCopyFor;exports.healthPlanFocusDesignFromWire=healthPlanFocusDesignFromWire;exports.healthPlanFromWire=healthPlanFromWire;exports.healthPlanOneBoxOrderFromWire=healthPlanOneBoxOrderFromWire;exports.healthPlanOneBoxOrderPageFromWire=healthPlanOneBoxOrderPageFromWire;exports.healthPlanOrderTrackingFromWire=healthPlanOrderTrackingFromWire;exports.healthPlanPageFromWire=healthPlanPageFromWire;exports.healthPlanPetWords=healthPlanPetWords;exports.healthPlanPossessive=healthPlanPossessive;exports.healthPlanSubscriptionFromWire=healthPlanSubscriptionFromWire;exports.healthPlanSubscriptionQuoteFromWire=healthPlanSubscriptionQuoteFromWire;exports.healthPlanTopCard=healthPlanTopCard;exports.isHealthPlanSessionRequired=isHealthPlanSessionRequired;exports.isHealthPlanSubscriptionUnavailable=isHealthPlanSubscriptionUnavailable;exports.showHealthPlanCartBar=showHealthPlanCartBar;exports.useEverfurHealthPlan=useEverfurHealthPlan;exports.useEverfurHealthPlanRepository=useEverfurHealthPlanRepository;exports.useEverfurPresentation=useEverfurPresentation;exports.useHealthPlanCartDock=useHealthPlanCartDock;exports.useHealthPlanPage=useHealthPlanPage;exports.useHealthPlanPageRepository=useHealthPlanPageRepository;exports.useHealthPlanSubscription=useHealthPlanSubscription;exports.useHealthPlanSubscriptionRepository=useHealthPlanSubscriptionRepository;exports.useHealthPlanTopCard=useHealthPlanTopCard;
|
|
421
|
+
/* @__PURE__ */jsxRuntime.jsx("button",{type:"button",...part("button"),onClick:()=>guarded.onOpenPlan(),children:guarded.action})]})}function styles(theme){let{color:color,radius:radius,space:space,type:type}=theme;return{card:{display:"grid",gap:space.xs,justifyItems:"start",padding:space.md,borderRadius:radius.lg,backgroundColor:color.brandSofter},kicker:{margin:0,display:"flex",alignItems:"center",gap:space.xs,...faceCss(theme,"bold"),fontSize:type.size.caption,color:color.text.secondary,textTransform:"uppercase",letterSpacing:"0.06em"},dot:{width:8,height:8,borderRadius:4,backgroundColor:color.errorRed},sentence:{margin:0,...faceCss(theme,"bold"),fontSize:type.size.subtitle,color:color.text.primary},button:{minHeight:40,padding:`0 ${space.md}px`,border:"none",borderRadius:999,cursor:"pointer",backgroundColor:color.primary,color:color.onPrimary,...faceCss(theme,"bold"),fontSize:type.size.caption}}}var CLOSE_FALLBACK="Close",HEALTH_PLAN_TOP_CARD_COPY=/* @__PURE__ */Object.freeze({action:who=>who.possessive===null?null:`See ${who.possessive} Health Plan`,ask:"What does it mean?",askPrompt:(focus,ask)=>focus.risk?.lead?`${focus.risk.lead} ${ask}`:`${focus.title}: ${ask}`,close:who=>who.possessive===null?null:`Close ${who.possessive} focus`});function healthPlanPossessive(pet){let sex=typeof pet.sex=="string"?pet.sex.trim().toLowerCase():null;if(sex==="female")return"her";if(sex==="male")return"his";let name=typeof pet.name=="string"?pet.name.trim():"";return name!==""?`${name}'s`:null}function healthPlanTopCard(page,options){let focus=page?.page?.focus;if(page===null||focus===void 0||focus.title.trim()===""||focus.kicker.trim()==="")return;let copy={...HEALTH_PLAN_TOP_CARD_COPY,...options.copy},who={pet:page.pet,possessive:healthPlanPossessive(page.pet)},badge=focus.sources?.find(source=>source.label.trim()!=="")?.label,onOpenPlan=options.onOpenPlan,action=onOpenPlan===void 0?null:copy.action(who),close=copy.close(who),ask=copy.ask.trim();return{kicker:focus.kicker,...badge===void 0?{}:{badge:badge},title:focus.title,...focus.risk?.lead?{lead:focus.risk.lead}:{},...focus.risk?.body?{body:focus.risk.body}:{},...action===null||action.trim()===""||onOpenPlan===void 0?{}:{action:{label:action,onPress:onOpenPlan}},...ask===""?{}:{ask:{label:ask,prompt:copy.askPrompt(focus,ask)}},closeLabel:close===null||close.trim()===""?CLOSE_FALLBACK:close,pill:focus.kicker,...options.renderIcon===void 0?{}:{renderIcon:options.renderIcon},...options.classNames===void 0?{}:{classNames:options.classNames}}}function useHealthPlanTopCard(options){let{petRef:petRef,enabled:enabled,onOpenPlan:onOpenPlan,copy:copy,classNames:classNames,renderIcon:renderIcon}=options,{page:page}=useHealthPlanPage({petRef:petRef,...enabled===void 0?{}:{enabled:enabled}});return react.useMemo(()=>healthPlanTopCard(page,{onOpenPlan:onOpenPlan,...copy===void 0?{}:{copy:copy},...classNames===void 0?{}:{classNames:classNames},...renderIcon===void 0?{}:{renderIcon:renderIcon}}),[page,onOpenPlan,copy,classNames,renderIcon])}exports.EverfurHealthPlan=EverfurHealthPlan;exports.HEALTH_PLAN_COPY=HEALTH_PLAN_COPY;exports.HEALTH_PLAN_COPY_PLACEHOLDERS=HEALTH_PLAN_COPY_PLACEHOLDERS;exports.HEALTH_PLAN_FOCUS_COPY=HEALTH_PLAN_FOCUS_COPY;exports.HEALTH_PLAN_LAYOUT_DEFAULTS=HEALTH_PLAN_LAYOUT_DEFAULTS;exports.HEALTH_PLAN_REASON_KINDS=HEALTH_PLAN_REASON_KINDS;exports.HEALTH_PLAN_REASON_LABELS=HEALTH_PLAN_REASON_LABELS;exports.HEALTH_PLAN_TEMPLATES=HEALTH_PLAN_TEMPLATES;exports.HEALTH_PLAN_TOP_CARD_COPY=HEALTH_PLAN_TOP_CARD_COPY;exports.HealthPlanBlanks=HealthPlanBlanks;exports.HealthPlanCartBar=HealthPlanCartBar;exports.HealthPlanCartScope=HealthPlanCartScope;exports.HealthPlanController=HealthPlanController;exports.HealthPlanFocus=HealthPlanFocus;exports.HealthPlanItemCard=HealthPlanItemCard;exports.HealthPlanTopRisk=HealthPlanTopRisk;exports.createHealthPlanPageRepository=createHealthPlanPageRepository;exports.createHealthPlanPageRepositoryOver=createHealthPlanPageRepositoryOver;exports.createHealthPlanRepository=createHealthPlanRepository;exports.createHealthPlanRepositoryOver=createHealthPlanRepositoryOver;exports.createHealthPlanSubscriptionRepository=createHealthPlanSubscriptionRepository;exports.createHealthPlanSubscriptionRepositoryOver=createHealthPlanSubscriptionRepositoryOver;exports.formatHealthPlanDay=formatHealthPlanDay;exports.formatHealthPlanPrice=formatHealthPlanPrice;exports.formatHealthPlanPriceWith=formatHealthPlanPriceWith;exports.healthPlanBlanksFacts=healthPlanBlanksFacts;exports.healthPlanCart=healthPlanCart;exports.healthPlanCheckoutRefusal=healthPlanCheckoutRefusal;exports.healthPlanCheckoutSessionFromWire=healthPlanCheckoutSessionFromWire;exports.healthPlanCheckoutStateFromWire=healthPlanCheckoutStateFromWire;exports.healthPlanFocusCopyFor=healthPlanFocusCopyFor;exports.healthPlanFocusDesignFromWire=healthPlanFocusDesignFromWire;exports.healthPlanFromWire=healthPlanFromWire;exports.healthPlanNextShotsAt=healthPlanNextShotsAt;exports.healthPlanNoVet=healthPlanNoVet;exports.healthPlanOneBoxOrderFromWire=healthPlanOneBoxOrderFromWire;exports.healthPlanOneBoxOrderPageFromWire=healthPlanOneBoxOrderPageFromWire;exports.healthPlanOrderTrackingFromWire=healthPlanOrderTrackingFromWire;exports.healthPlanPageFromWire=healthPlanPageFromWire;exports.healthPlanPetWords=healthPlanPetWords;exports.healthPlanPossessive=healthPlanPossessive;exports.healthPlanRecordsWeightKg=healthPlanRecordsWeightKg;exports.healthPlanSubscriptionFromWire=healthPlanSubscriptionFromWire;exports.healthPlanSubscriptionQuoteFromWire=healthPlanSubscriptionQuoteFromWire;exports.healthPlanTopCard=healthPlanTopCard;exports.isHealthPlanSessionRequired=isHealthPlanSessionRequired;exports.isHealthPlanSubscriptionUnavailable=isHealthPlanSubscriptionUnavailable;exports.notifyHealthPlanRecordsLanded=notifyHealthPlanRecordsLanded;exports.onHealthPlanNoVet=onHealthPlanNoVet;exports.onHealthPlanRecordsLanded=onHealthPlanRecordsLanded;exports.setHealthPlanNoVet=setHealthPlanNoVet;exports.showHealthPlanCartBar=showHealthPlanCartBar;exports.useEverfurHealthPlan=useEverfurHealthPlan;exports.useEverfurHealthPlanRepository=useEverfurHealthPlanRepository;exports.useEverfurPresentation=useEverfurPresentation;exports.useHealthPlanCartDock=useHealthPlanCartDock;exports.useHealthPlanPage=useHealthPlanPage;exports.useHealthPlanPageRepository=useHealthPlanPageRepository;exports.useHealthPlanSubscription=useHealthPlanSubscription;exports.useHealthPlanSubscriptionRepository=useHealthPlanSubscriptionRepository;exports.useHealthPlanTopCard=useHealthPlanTopCard;
|