@everfur/sdk 0.15.1 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/README.md +3 -1
  3. package/chat/lite/package.json +8 -0
  4. package/dist/Chat.d-CzI2228d.d.ts +11 -0
  5. package/dist/Chat.d-D3ScVQ22.d.cts +11 -0
  6. package/dist/{DepthViews.d-PuBGdAYk.d.cts → DepthViews.d-6U4QqaW3.d.cts} +1 -1
  7. package/dist/{DepthViews.d--1daZblh.d.cts → DepthViews.d-BLx_ZTwa.d.cts} +1 -1
  8. package/dist/{DepthViews.d-CKTnEeUo.d.ts → DepthViews.d-Cwbel5o4.d.ts} +1 -1
  9. package/dist/{DepthViews.d-BuEWI6Ln.d.ts → DepthViews.d-DVIydPLt.d.ts} +1 -1
  10. package/dist/{RecordsPage.d-CBB8sfoY.d.ts → RecordsPage.d-Bwalb0wU.d.ts} +1 -1
  11. package/dist/{RecordsPage.d-Dq5gpQG0.d.cts → RecordsPage.d-Do7T8Fns.d.cts} +1 -1
  12. package/dist/animations/index.d.cts +5 -5
  13. package/dist/animations/index.d.ts +5 -5
  14. package/dist/{Chat.d-BlsnQwCQ.d.ts → appStateLifecycle.d-Bd-rNy6K.d.ts} +62 -144
  15. package/dist/{Chat.d-BO5iJsR2.d.cts → appStateLifecycle.d-_mh4CEAq.d.cts} +62 -144
  16. package/dist/attachmentTransport.d-Syrvv5zH.d.ts +41 -0
  17. package/dist/attachmentTransport.d-r1XCCdUB.d.cts +41 -0
  18. package/dist/{attachments.d-DFP9yvz9.d.ts → attachments.d-BiBGBE4o.d.ts} +24 -6
  19. package/dist/{attachments.d-C2nkIyDB.d.ts → attachments.d-CyB8hzDo.d.ts} +2 -2
  20. package/dist/{attachments.d-DRHsJkni.d.cts → attachments.d-GlO5UP7H.d.cts} +24 -6
  21. package/dist/{attachments.d-DRUC35Ti.d.cts → attachments.d-Y-qvSHVU.d.cts} +2 -2
  22. package/dist/{bookingCopy.d-bF_QknDC.d.cts → bookingCopy.d-BIaCiRuW.d.cts} +2 -2
  23. package/dist/{bookingCopy.d-CFL-1Be2.d.ts → bookingCopy.d-DgWvNKD5.d.ts} +2 -2
  24. package/dist/{casesRepository.d-C__BnffJ.d.ts → casesRepository.d-BW8DTYeN.d.ts} +1 -1
  25. package/dist/{casesRepository.d-BMOnT1fg.d.cts → casesRepository.d-_0AO2YrL.d.cts} +1 -1
  26. package/dist/chat/index.cjs +246 -231
  27. package/dist/chat/index.d.cts +16 -49
  28. package/dist/chat/index.d.ts +16 -49
  29. package/dist/chat/index.js +246 -231
  30. package/dist/chat/lite/index.cjs +430 -0
  31. package/dist/chat/lite/index.d.cts +35 -0
  32. package/dist/chat/lite/index.d.ts +35 -0
  33. package/dist/chat/lite/index.js +430 -0
  34. package/dist/client/index.cjs +4 -4
  35. package/dist/client/index.d.cts +6 -6
  36. package/dist/client/index.d.ts +6 -6
  37. package/dist/client/index.js +4 -4
  38. package/dist/{clinicBatch.d-D68RYvc3.d.ts → clinicBatch.d-BXwATY3-.d.ts} +2 -2
  39. package/dist/{clinicBatch.d-C5deJ4xY.d.cts → clinicBatch.d-BcuSaOkv.d.cts} +2 -2
  40. package/dist/{config.d-BQgrIDdu.d.cts → config.d-D1xcxALX.d.cts} +1 -1
  41. package/dist/{config.d-XSMThgVj.d.ts → config.d-jTVsAeky.d.ts} +1 -1
  42. package/dist/consent/index.d.cts +5 -5
  43. package/dist/consent/index.d.ts +5 -5
  44. package/dist/{context.d-Ba8YyJpk.d.cts → context.d-C3x-z665.d.cts} +5 -5
  45. package/dist/{context.d-xoh5vmxS.d.ts → context.d-goZeZO2I.d.ts} +5 -5
  46. package/dist/{copy.d-Cq-s-UUv.d.cts → copy.d-DPwFY4r5.d.cts} +2 -2
  47. package/dist/{copy.d-HV9fU5kh.d.ts → copy.d-yfJv7fl6.d.ts} +2 -2
  48. package/dist/core/index.cjs +10 -10
  49. package/dist/core/index.d.cts +13 -13
  50. package/dist/core/index.d.ts +13 -13
  51. package/dist/core/index.js +10 -10
  52. package/dist/{depth.d-D7kKiYl7.d.ts → depth.d-SJzknw_P.d.ts} +2 -2
  53. package/dist/{depth.d-DYnkz8Re.d.cts → depth.d-e_8_icip.d.cts} +2 -2
  54. package/dist/{entitlementRepository.d-DmnUZLl_.d.ts → entitlementRepository.d-BNgZhwoE.d.ts} +2 -2
  55. package/dist/{entitlementRepository.d-B_kEPLhz.d.cts → entitlementRepository.d-C_LdzINM.d.cts} +2 -2
  56. package/dist/{focus.d-BHm_QtQ9.d.cts → focus.d-CXpIkIuU.d.cts} +3 -3
  57. package/dist/{focus.d-CjL6Cj0m.d.ts → focus.d-DzIgOqNB.d.ts} +3 -3
  58. package/dist/health-plan/index.cjs +136 -133
  59. package/dist/health-plan/index.d.cts +77 -24
  60. package/dist/health-plan/index.d.ts +77 -24
  61. package/dist/health-plan/index.js +136 -133
  62. package/dist/{idempotency.d-BSRK8od4.d.cts → idempotency.d-0biUa_Vw.d.cts} +1 -1
  63. package/dist/{idempotency.d-CFc4CCc9.d.ts → idempotency.d-DcqIqmf9.d.ts} +1 -1
  64. package/dist/{identity.d-Be2Es9Td.d.ts → identity.d-BEJcHY-5.d.ts} +1 -1
  65. package/dist/{identity.d-HbwYQ4-z.d.cts → identity.d-COcNGuCJ.d.cts} +1 -1
  66. package/dist/index.cjs +245 -230
  67. package/dist/index.d.cts +15 -12
  68. package/dist/index.d.ts +15 -12
  69. package/dist/index.js +246 -231
  70. package/dist/{introEvents.d-Dr34KIaD.d.cts → introEvents.d-D8N9bbGO.d.cts} +1 -1
  71. package/dist/{introEvents.d-DflJ6J9H.d.ts → introEvents.d-GCdyQyUG.d.ts} +1 -1
  72. package/dist/notifications/index.d.cts +4 -4
  73. package/dist/notifications/index.d.ts +4 -4
  74. package/dist/{optInView.d-3mbj1mR6.d.ts → optInView.d-CY2IueSZ.d.ts} +2 -2
  75. package/dist/{optInView.d-D23o1gtT.d.cts → optInView.d-DVuuWDRw.d.cts} +2 -2
  76. package/dist/{parse.d-BERabxHw.d.ts → parse.d--ztmWIIP.d.ts} +1 -1
  77. package/dist/{parse.d-4lUXdmvY.d.cts → parse.d-B-WrkW2C.d.cts} +1 -1
  78. package/dist/{pets.d-CHU0UbXt.d.cts → pets.d-BSW0oEYx.d.cts} +1 -1
  79. package/dist/{pets.d-D_ayuqjp.d.ts → pets.d-DwsImaHU.d.ts} +1 -1
  80. package/dist/{petsRepository.d-Bwfe8yuR.d.cts → petsRepository.d-BQfWC3d4.d.cts} +1 -1
  81. package/dist/{petsRepository.d-DUaAWoTv.d.ts → petsRepository.d-BudLFHVe.d.ts} +1 -1
  82. package/dist/photo/index.cjs +2 -2
  83. package/dist/photo/index.js +2 -2
  84. package/dist/{ports.d-DzEJMVRs.d.ts → ports.d-B6kDPKF7.d.ts} +4 -4
  85. package/dist/{ports.d-ClbPRUtx.d.cts → ports.d-DzPbmiDT.d.cts} +4 -4
  86. package/dist/records/depth/index.cjs +10 -10
  87. package/dist/records/depth/index.d.cts +9 -9
  88. package/dist/records/depth/index.d.ts +9 -9
  89. package/dist/records/depth/index.js +10 -10
  90. package/dist/records/index.cjs +253 -211
  91. package/dist/records/index.d.cts +169 -73
  92. package/dist/records/index.d.ts +169 -73
  93. package/dist/records/index.js +254 -212
  94. package/dist/{requestFunnel.d-YabU6G-Z.d.ts → requestFunnel.d-BPsCHJWf.d.ts} +2 -2
  95. package/dist/{requestFunnel.d-JoqddYSx.d.cts → requestFunnel.d-BdpL7gwg.d.cts} +2 -2
  96. package/dist/{runtimeTypes.d-DQTBJAbk.d.ts → runtimeTypes.d-C_Pcxn-n.d.ts} +4 -4
  97. package/dist/{runtimeTypes.d-Cv38YuzP.d.cts → runtimeTypes.d-Cfq3IrZG.d.cts} +4 -4
  98. package/dist/{screenProps.d-C-AuHoyF.d.cts → screenProps.d-BJMn1kTR.d.cts} +2 -2
  99. package/dist/{screenProps.d-BuJLzFkN.d.ts → screenProps.d-DGrfO17l.d.ts} +2 -2
  100. package/dist/server/events/index.cjs +3 -3
  101. package/dist/server/events/index.d.cts +48 -6
  102. package/dist/server/events/index.d.ts +48 -6
  103. package/dist/server/events/index.js +3 -3
  104. package/dist/server/index.cjs +2 -2
  105. package/dist/server/index.d.cts +3 -3
  106. package/dist/server/index.d.ts +3 -3
  107. package/dist/server/index.js +2 -2
  108. package/dist/shop/index.cjs +16 -16
  109. package/dist/shop/index.d.cts +12 -3
  110. package/dist/shop/index.d.ts +12 -3
  111. package/dist/shop/index.js +16 -16
  112. package/dist/tabs/index.cjs +4 -4
  113. package/dist/tabs/index.d.cts +34 -15
  114. package/dist/tabs/index.d.ts +34 -15
  115. package/dist/tabs/index.js +5 -5
  116. package/dist/{tabsModel.d-BfIQg6yS.d.ts → tabsModel.d-B7QMug1u.d.cts} +1 -17
  117. package/dist/{tabsModel.d-BfIQg6yS.d.cts → tabsModel.d-B7QMug1u.d.ts} +1 -17
  118. package/dist/televet/booking/index.cjs +2 -2
  119. package/dist/televet/booking/index.d.cts +6 -6
  120. package/dist/televet/booking/index.d.ts +6 -6
  121. package/dist/televet/booking/index.js +2 -2
  122. package/dist/televet/call/index.cjs +1 -1
  123. package/dist/televet/call/index.js +1 -1
  124. package/dist/televet/index.cjs +4 -3
  125. package/dist/televet/index.d.cts +1 -0
  126. package/dist/televet/index.d.ts +1 -0
  127. package/dist/televet/index.js +5 -4
  128. package/dist/testing/index.d.cts +1 -1
  129. package/dist/testing/index.d.ts +1 -1
  130. package/dist/testing/rn/index.cjs +1 -1
  131. package/dist/testing/rn/index.d.cts +7 -7
  132. package/dist/testing/rn/index.d.ts +7 -7
  133. package/dist/testing/rn/index.js +1 -1
  134. package/dist/testing/web/index.d.cts +7 -7
  135. package/dist/testing/web/index.d.ts +7 -7
  136. package/dist/texting/index.cjs +21 -16
  137. package/dist/texting/index.d.cts +5 -5
  138. package/dist/texting/index.d.ts +5 -5
  139. package/dist/texting/index.js +22 -17
  140. package/dist/threadOptions.d-B0folrKm.d.cts +147 -0
  141. package/dist/{threadOptions.d-DBrmOwmb.d.cts → threadOptions.d-B8HTJa9A.d.cts} +6 -40
  142. package/dist/{threadOptions.d-8x_1evAr.d.ts → threadOptions.d-BnhE7T8Y.d.ts} +6 -40
  143. package/dist/threadOptions.d-DTsJFkL-.d.ts +147 -0
  144. package/dist/threadOptions.d-GPJPprkn.d.cts +55 -0
  145. package/dist/threadOptions.d-GPJPprkn.d.ts +55 -0
  146. package/dist/{timelineRows.d-B6lLC8Ud.d.cts → timelineRows.d-BTcUdNeI.d.cts} +1 -1
  147. package/dist/{timelineRows.d-Brlkti-G.d.ts → timelineRows.d-kmBms1W5.d.ts} +1 -1
  148. package/dist/{planSignals.d-Dha2CMDF.d.cts → useHealthPlanSubscription.d-B_cth_iF.d.cts} +81 -3
  149. package/dist/{planSignals.d-CON9gTvJ.d.ts → useHealthPlanSubscription.d-BzNaVl89.d.ts} +81 -3
  150. package/dist/{usePresentation.d-Bne14SlX.d.ts → usePresentation.d-B7Uf44Ax.d.ts} +40 -40
  151. package/dist/{usePresentation.d-BcdCIuEU.d.cts → usePresentation.d-BkAMOfb5.d.cts} +40 -40
  152. package/dist/{useRecordsDepth.d-Cd6J03o5.d.ts → useRecordsDepth.d-BHkZi0tM.d.ts} +1 -1
  153. package/dist/{useRecordsDepth.d-DAa169VY.d.cts → useRecordsDepth.d-BxHpKipf.d.cts} +1 -1
  154. package/dist/video/index.cjs +2 -2
  155. package/dist/video/index.js +2 -2
  156. package/dist/{view.d-DkGM8GNA.d.ts → view.d-2BYMRnWj.d.ts} +3 -3
  157. package/dist/{view.d-3d5_O7Xk.d.cts → view.d-CoDbnv0f.d.cts} +3 -3
  158. package/dist/web/consent/index.d.cts +5 -5
  159. package/dist/web/consent/index.d.ts +5 -5
  160. package/dist/web/health-plan/index.cjs +5 -5
  161. package/dist/web/health-plan/index.d.cts +15 -69
  162. package/dist/web/health-plan/index.d.ts +15 -69
  163. package/dist/web/health-plan/index.js +5 -5
  164. package/dist/web/index.cjs +8 -8
  165. package/dist/web/index.d.cts +26 -43
  166. package/dist/web/index.d.ts +26 -43
  167. package/dist/web/index.js +8 -8
  168. package/dist/web/intro/index.d.cts +6 -6
  169. package/dist/web/intro/index.d.ts +6 -6
  170. package/dist/web/notifications/index.d.cts +3 -3
  171. package/dist/web/notifications/index.d.ts +3 -3
  172. package/dist/web/records/depth/index.cjs +9 -9
  173. package/dist/web/records/depth/index.d.cts +9 -9
  174. package/dist/web/records/depth/index.d.ts +9 -9
  175. package/dist/web/records/depth/index.js +9 -9
  176. package/dist/web/records/index.cjs +12 -12
  177. package/dist/web/records/index.d.cts +11 -11
  178. package/dist/web/records/index.d.ts +11 -11
  179. package/dist/web/records/index.js +12 -12
  180. package/dist/web/records-sheet/index.cjs +17 -17
  181. package/dist/web/records-sheet/index.js +17 -17
  182. package/dist/web/shop/index.cjs +12 -12
  183. package/dist/web/shop/index.d.cts +3 -3
  184. package/dist/web/shop/index.d.ts +3 -3
  185. package/dist/web/shop/index.js +12 -12
  186. package/dist/web/televet/booking/index.cjs +2 -2
  187. package/dist/web/televet/booking/index.d.cts +6 -6
  188. package/dist/web/televet/booking/index.d.ts +6 -6
  189. package/dist/web/televet/booking/index.js +2 -2
  190. package/dist/web/televet/call/index.cjs +1 -1
  191. package/dist/web/televet/call/index.js +1 -1
  192. package/dist/web/texting/index.d.cts +5 -5
  193. package/dist/web/texting/index.d.ts +5 -5
  194. package/package.json +22 -27
@@ -0,0 +1,147 @@
1
+ /*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
2
+ import { ReactNode } from 'react';
3
+ import { StyleProp, ViewStyle, TextStyle } from 'react-native';
4
+ import { b as EverfurChatOpeningCard$1 } from './threadOptions.d-GPJPprkn.cjs';
5
+
6
+ /**
7
+ * The card a thread opened from a notification starts with, in place of the member's first bubble: drawn while
8
+ * the first message of the open thread is the surface's `initialAsk`.
9
+ */
10
+ interface EverfurChatOpeningCard extends EverfurChatOpeningCard$1 {
11
+ /**
12
+ * Your styles per element: the web surface's `classNames` (card, icon, body) as React Native styles, plus the
13
+ * kicker and the title, which a web host reaches through its card class. Each is laid over Everfur's own style for
14
+ * that element. Absent, the card keeps the web's default look (the subtle fill, a sentence-case kicker).
15
+ */
16
+ readonly styles?: {
17
+ readonly card?: StyleProp<ViewStyle>;
18
+ readonly icon?: StyleProp<ViewStyle>;
19
+ readonly kicker?: StyleProp<TextStyle>;
20
+ readonly title?: StyleProp<TextStyle>;
21
+ readonly body?: StyleProp<TextStyle>;
22
+ };
23
+ }
24
+ /**
25
+ * The history bar: a "Chats" control with the member's thread count that opens the history, and a "New chat"
26
+ * control. For a surface that hides the SDK header and still wants the member's past chats.
27
+ */
28
+ interface EverfurChatHistoryBar {
29
+ /** The history control's words ("Chats"). */
30
+ readonly chats: string;
31
+ /** The new-chat control's words ("New chat"). */
32
+ readonly newChat: string;
33
+ /** Draw the two icons your way. */
34
+ readonly renderIcon?: (icon: 'history' | 'edit') => ReactNode;
35
+ /** Your own control after "Chats". Absent, nothing is drawn. */
36
+ readonly extra?: ReactNode;
37
+ }
38
+ /** The empty thread's own title and chip fills. Absent, the empty state is Everfur's own. */
39
+ interface EverfurChatEmptyState {
40
+ /** The title over the starter chips, in place of "What can we help {pet} with today?". */
41
+ readonly title?: string;
42
+ /**
43
+ * Fills for the chips that bring none of their own, taken in turn (the first chip the first fill, and round
44
+ * again). Each is a fill and its ink. Absent, Raph's v3 cycle on a light theme; empty, the theme's paint.
45
+ */
46
+ readonly chipTints?: readonly {
47
+ readonly tint: string;
48
+ readonly ink?: string;
49
+ }[];
50
+ }
51
+ /** One card under an answer in the cards answer style: a record, a stat, or a link to one of your screens. */
52
+ interface EverfurChatAnswerCard {
53
+ /** Stable key within the answer. */
54
+ readonly key: string;
55
+ readonly title: string;
56
+ /** The small line under the title. */
57
+ readonly meta?: string;
58
+ /** A status pill; `tone` picks `styles.pillTone[tone]` (and `styles.pillToneText[tone]` for its words). */
59
+ readonly pill?: {
60
+ readonly label: string;
61
+ readonly tone?: string;
62
+ };
63
+ /** A stat card's value: drawn in place of the pill and the chevron. */
64
+ readonly value?: {
65
+ readonly amount: string;
66
+ readonly unit?: string;
67
+ };
68
+ /** The tile at the start: an icon of yours, or an https image; `tone` picks `styles.tileTone[tone]`. */
69
+ readonly tile?: {
70
+ readonly icon?: ReactNode;
71
+ readonly imageUrl?: string;
72
+ readonly tone?: string;
73
+ };
74
+ /** Picks `styles.cardVariant[variant]` (for example a highlighted plan card). */
75
+ readonly variant?: string;
76
+ /** Given, the card is a button that calls this. Absent, a static card. */
77
+ readonly onPress?: () => void;
78
+ /** A card of your own, drawn in the card's place. If it throws, the slot draws nothing. */
79
+ readonly render?: () => ReactNode;
80
+ }
81
+ /** What `answerCards.cards` receives: the settled answer's text and the question it answered. */
82
+ interface EverfurChatAnswerContext {
83
+ readonly answer: string;
84
+ readonly question: string | null;
85
+ /** The answer's message id, stable for the life of the thread. */
86
+ readonly messageId: string;
87
+ }
88
+ /** The cards answer style's content (used while presentation `chatAnswerStyle` is `cards`). The words are yours. */
89
+ interface EverfurChatAnswerCards {
90
+ /** The line over each answer (an icon and your words). Absent, the assistant's name line. */
91
+ readonly byline?: {
92
+ readonly label: string;
93
+ readonly icon?: ReactNode;
94
+ };
95
+ /** Your cards under a settled answer. A throw draws none. */
96
+ readonly cards?: (context: EverfurChatAnswerContext) => readonly EverfurChatAnswerCard[];
97
+ /** Two feedback chips in place of the footer's thumbs, mapped to thumbs up and thumbs down. */
98
+ readonly feedback?: {
99
+ readonly helpful: string;
100
+ readonly notHelpful: string;
101
+ };
102
+ /** Your own rows at the top of the follow-ups, for the answer it receives. */
103
+ readonly followUpActions?: (context: EverfurChatAnswerContext) => readonly EverfurChatFollowUpAction[];
104
+ /** Draw the chevron your way. Absent, Everfur's glyph. */
105
+ readonly renderIcon?: (icon: 'chevron') => ReactNode;
106
+ /**
107
+ * Your styles for the tones and variants the cards name, the feedback chips and the follow-ups: the web surface's
108
+ * `classNames` of the same names, as React Native styles. Each is laid over Everfur's own style for that element.
109
+ * Absent, every card, tile, pill, chip and row keeps the web's default paint.
110
+ */
111
+ readonly styles?: {
112
+ /** A stat card (one with a `value`). */
113
+ readonly cardStat?: StyleProp<ViewStyle>;
114
+ readonly cardVariant?: Readonly<Record<string, StyleProp<ViewStyle>>>;
115
+ readonly tileTone?: Readonly<Record<string, StyleProp<ViewStyle>>>;
116
+ readonly pillTone?: Readonly<Record<string, StyleProp<ViewStyle>>>;
117
+ readonly pillToneText?: Readonly<Record<string, StyleProp<TextStyle>>>;
118
+ /** The feedback chips' row, each chip and its words (the web's `feedback`). */
119
+ readonly feedback?: StyleProp<ViewStyle>;
120
+ readonly feedbackChip?: StyleProp<ViewStyle>;
121
+ readonly feedbackChipText?: StyleProp<TextStyle>;
122
+ /** The block of follow-ups under the answer, its label, each row and its words (the web's `followUps`, `followUpsLabel`, `followUp`). */
123
+ readonly followUps?: StyleProp<ViewStyle>;
124
+ readonly followUpsLabel?: StyleProp<TextStyle>;
125
+ readonly followUp?: StyleProp<ViewStyle>;
126
+ readonly followUpText?: StyleProp<TextStyle>;
127
+ /** One of your own rows and its words (the web's `followUpAction`), laid over `followUp` and `followUpText`. */
128
+ readonly followUpAction?: StyleProp<ViewStyle>;
129
+ readonly followUpActionText?: StyleProp<TextStyle>;
130
+ };
131
+ }
132
+ /** A row of yours at the top of the follow-ups under an answer. */
133
+ interface EverfurChatFollowUpAction {
134
+ readonly key: string;
135
+ readonly label: string;
136
+ readonly icon?: ReactNode;
137
+ readonly onPress: () => void;
138
+ }
139
+ /** The history bottom sheet (presentation `chatHistoryStyle: "sheet"`). */
140
+ interface EverfurChatHistorySheet {
141
+ /** The sheet's small title ("Chats with Ask <your brand>"). Absent, Everfur's history heading. */
142
+ readonly title?: string;
143
+ /** Draw the icons your way. */
144
+ readonly renderIcon?: (icon: 'close' | 'chat' | 'edit') => ReactNode;
145
+ }
146
+
147
+ export type { EverfurChatAnswerCard as E, EverfurChatAnswerCards as a, EverfurChatAnswerContext as b, EverfurChatEmptyState as c, EverfurChatFollowUpAction as d, EverfurChatHistoryBar as e, EverfurChatHistorySheet as f, EverfurChatOpeningCard as g };
@@ -3,11 +3,12 @@ import { ReactNode, CSSProperties } from 'react';
3
3
  import { a as CapabilityDecision } from './resolve.d-CoQWUy1Y.cjs';
4
4
  import { E as EverfurError } from './EverfurError.d-8NHtlgzA.cjs';
5
5
  import { P as PetRef } from './ids.d-B2GAAifq.cjs';
6
- import { b as HealthPlanFocusDesign, c as HealthPlanFocusCopy, d as HealthPlanFocusClassNames, e as HealthPlanFocusIcon, f as HealthPlanItem, g as HealthPlanSubscription, h as HealthPlanOneBoxOrder, i as HealthPlanSubscriptionRepository, j as HealthPlanPageRepository, k as HealthPlanShopOrder, l as HealthPlanCheckoutProvider } from './focus.d-BHm_QtQ9.cjs';
7
- import { H as HealthPlanBlanksFacts, a as HealthPlanPriceFormat, b as HealthPlanLayoutProps, c as HealthPlanEmptyCopy } from './usePresentation.d-BcdCIuEU.cjs';
6
+ import { b as HealthPlanFocusDesign, c as HealthPlanFocusCopy, d as HealthPlanFocusClassNames, e as HealthPlanFocusIcon, f as HealthPlanItem, g as HealthPlanSubscription, h as HealthPlanOneBoxOrder, i as HealthPlanSubscriptionRepository, j as HealthPlanPageRepository, k as HealthPlanShopOrder, l as HealthPlanCheckoutProvider } from './focus.d-CXpIkIuU.cjs';
7
+ import { H as HealthPlanBlanksFacts, a as HealthPlanPriceFormat, b as HealthPlanLayoutProps, c as HealthPlanEmptyCopy } from './usePresentation.d-BkAMOfb5.cjs';
8
8
  import { L as LifecyclePort } from './LifecyclePort.d-Cr1p33a7.cjs';
9
9
  import { E as EverfurResult } from './EverfurResult.d-BFH-3s6E.cjs';
10
10
  import { i as EverfurPresentationInput } from './presentation.d-vy8kTGfR.cjs';
11
+ import { a as EverfurChatTopCard$1, b as EverfurChatOpeningCard$1 } from './threadOptions.d-GPJPprkn.cjs';
11
12
 
12
13
  /** Which overlay the focus layout has open, for a host that dims its own chrome under it. */
13
14
  type HealthPlanFocusOverlay = 'checkout' | 'manage' | 'started' | 'cart' | 'cartCheckout' | 'placed' | 'orders' | 'order' | 'weight' | null;
@@ -199,11 +200,6 @@ interface EverfurHealthPlanProps extends HealthPlanLayoutProps {
199
200
  /** One pet's Health Plan on a web page. Mount it under the `EverfurProvider` from "@everfur/sdk/web". */
200
201
  declare function EverfurHealthPlan(props: EverfurHealthPlanProps): ReactNode;
201
202
 
202
- /** What `renderEmptyHeader` receives: ask a question in this thread, with no screen in between. */
203
- interface EverfurChatEmptyHeaderContext {
204
- /** Send `prompt` as the member's next message in the open thread (the same path as a starter chip). */
205
- ask(prompt: string): void;
206
- }
207
203
  /**
208
204
  * The history bar: a "Chats" control with the member's thread count that opens the history drawer, and a "New
209
205
  * chat" control. For a surface that passes `header={false}` and still wants the member's past chats.
@@ -255,13 +251,7 @@ interface EverfurChatEmptyState {
255
251
  * The card a thread opened from a notification starts with, in place of the member's first bubble: drawn while
256
252
  * the first message of the open thread is the surface's `initialAsk`.
257
253
  */
258
- interface EverfurChatOpeningCard {
259
- /** The line over the title ("Notification · 9:41 AM"). */
260
- readonly kicker: string;
261
- readonly title: string;
262
- readonly body?: string;
263
- /** The brand mark in the card's corner. */
264
- readonly icon?: ReactNode;
254
+ interface EverfurChatOpeningCard extends EverfurChatOpeningCard$1 {
265
255
  /** Classes per element; a class drops that element's inline default. */
266
256
  readonly classNames?: {
267
257
  readonly card?: string;
@@ -382,31 +372,7 @@ interface EverfurChatFollowUpAction {
382
372
  * an action of yours and a question it can ask in the thread. A close control folds it into a pill beside "Chats" in
383
373
  * the history bar, which opens it again.
384
374
  */
385
- interface EverfurChatTopCard {
386
- /** The small heading ("Her focus"). */
387
- readonly kicker: string;
388
- /** A source badge ("<your brand> results"). */
389
- readonly badge?: string;
390
- readonly title: string;
391
- /** The finding: a bold lead and the rest of the sentence. */
392
- readonly lead?: string;
393
- readonly body?: string;
394
- /** Your action ("See her Health Plan"). */
395
- readonly action?: {
396
- readonly label: string;
397
- readonly onPress: () => void;
398
- };
399
- /** A question the card asks in this thread ("What does it mean?" sends `prompt`). */
400
- readonly ask?: {
401
- readonly label: string;
402
- readonly prompt: string;
403
- };
404
- /** The close control's accessible name; given, the card can close to the pill. */
405
- readonly closeLabel?: string;
406
- /** The pill's words while the card is closed (defaults to `kicker`). */
407
- readonly pill?: string;
408
- /** Draw the close glyph your way. */
409
- readonly renderIcon?: (icon: 'close') => ReactNode;
375
+ interface EverfurChatTopCard extends EverfurChatTopCard$1 {
410
376
  /** Classes per element; a class drops that element's inline default. */
411
377
  readonly classNames?: {
412
378
  readonly wrap?: string;
@@ -456,4 +422,4 @@ interface EverfurChatHistorySheet {
456
422
  };
457
423
  }
458
424
 
459
- export { type EverfurChatTopCard as E, HealthPlanFocus as H, EverfurHealthPlan as a, type EverfurHealthPlanProps as b, type HealthPlanFocusLayer as c, type HealthPlanFocusOptions as d, type HealthPlanFocusOverlay as e, type HealthPlanFocusOverlayControls as f, type HealthPlanFocusProps as g, type EverfurChatEmptyHeaderContext as h, type EverfurChatEmptyState as i, type EverfurChatHistoryBar as j, type EverfurChatOpeningCard as k, type EverfurChatAnswerCards as l, type EverfurChatHistorySheet as m, type EverfurChatAnswerCard as n, type EverfurChatAnswerContext as o, type EverfurChatFollowUpAction as p };
425
+ export { type EverfurChatTopCard as E, HealthPlanFocus as H, EverfurHealthPlan as a, type EverfurHealthPlanProps as b, type HealthPlanFocusLayer as c, type HealthPlanFocusOptions as d, type HealthPlanFocusOverlay as e, type HealthPlanFocusOverlayControls as f, type HealthPlanFocusProps as g, type EverfurChatEmptyState as h, type EverfurChatHistoryBar as i, type EverfurChatOpeningCard as j, type EverfurChatAnswerCards as k, type EverfurChatHistorySheet as l, type EverfurChatAnswerCard as m, type EverfurChatAnswerContext as n, type EverfurChatFollowUpAction as o };
@@ -3,11 +3,12 @@ import { ReactNode, CSSProperties } from 'react';
3
3
  import { a as CapabilityDecision } from './resolve.d-CoQWUy1Y.js';
4
4
  import { E as EverfurError } from './EverfurError.d-8NHtlgzA.js';
5
5
  import { P as PetRef } from './ids.d-B2GAAifq.js';
6
- import { b as HealthPlanFocusDesign, c as HealthPlanFocusCopy, d as HealthPlanFocusClassNames, e as HealthPlanFocusIcon, f as HealthPlanItem, g as HealthPlanSubscription, h as HealthPlanOneBoxOrder, i as HealthPlanSubscriptionRepository, j as HealthPlanPageRepository, k as HealthPlanShopOrder, l as HealthPlanCheckoutProvider } from './focus.d-CjL6Cj0m.js';
7
- import { H as HealthPlanBlanksFacts, a as HealthPlanPriceFormat, b as HealthPlanLayoutProps, c as HealthPlanEmptyCopy } from './usePresentation.d-Bne14SlX.js';
6
+ import { b as HealthPlanFocusDesign, c as HealthPlanFocusCopy, d as HealthPlanFocusClassNames, e as HealthPlanFocusIcon, f as HealthPlanItem, g as HealthPlanSubscription, h as HealthPlanOneBoxOrder, i as HealthPlanSubscriptionRepository, j as HealthPlanPageRepository, k as HealthPlanShopOrder, l as HealthPlanCheckoutProvider } from './focus.d-DzIgOqNB.js';
7
+ import { H as HealthPlanBlanksFacts, a as HealthPlanPriceFormat, b as HealthPlanLayoutProps, c as HealthPlanEmptyCopy } from './usePresentation.d-B7Uf44Ax.js';
8
8
  import { L as LifecyclePort } from './LifecyclePort.d-Cr1p33a7.js';
9
9
  import { E as EverfurResult } from './EverfurResult.d-D_-254ZY.js';
10
10
  import { i as EverfurPresentationInput } from './presentation.d-vy8kTGfR.js';
11
+ import { a as EverfurChatTopCard$1, b as EverfurChatOpeningCard$1 } from './threadOptions.d-GPJPprkn.js';
11
12
 
12
13
  /** Which overlay the focus layout has open, for a host that dims its own chrome under it. */
13
14
  type HealthPlanFocusOverlay = 'checkout' | 'manage' | 'started' | 'cart' | 'cartCheckout' | 'placed' | 'orders' | 'order' | 'weight' | null;
@@ -199,11 +200,6 @@ interface EverfurHealthPlanProps extends HealthPlanLayoutProps {
199
200
  /** One pet's Health Plan on a web page. Mount it under the `EverfurProvider` from "@everfur/sdk/web". */
200
201
  declare function EverfurHealthPlan(props: EverfurHealthPlanProps): ReactNode;
201
202
 
202
- /** What `renderEmptyHeader` receives: ask a question in this thread, with no screen in between. */
203
- interface EverfurChatEmptyHeaderContext {
204
- /** Send `prompt` as the member's next message in the open thread (the same path as a starter chip). */
205
- ask(prompt: string): void;
206
- }
207
203
  /**
208
204
  * The history bar: a "Chats" control with the member's thread count that opens the history drawer, and a "New
209
205
  * chat" control. For a surface that passes `header={false}` and still wants the member's past chats.
@@ -255,13 +251,7 @@ interface EverfurChatEmptyState {
255
251
  * The card a thread opened from a notification starts with, in place of the member's first bubble: drawn while
256
252
  * the first message of the open thread is the surface's `initialAsk`.
257
253
  */
258
- interface EverfurChatOpeningCard {
259
- /** The line over the title ("Notification · 9:41 AM"). */
260
- readonly kicker: string;
261
- readonly title: string;
262
- readonly body?: string;
263
- /** The brand mark in the card's corner. */
264
- readonly icon?: ReactNode;
254
+ interface EverfurChatOpeningCard extends EverfurChatOpeningCard$1 {
265
255
  /** Classes per element; a class drops that element's inline default. */
266
256
  readonly classNames?: {
267
257
  readonly card?: string;
@@ -382,31 +372,7 @@ interface EverfurChatFollowUpAction {
382
372
  * an action of yours and a question it can ask in the thread. A close control folds it into a pill beside "Chats" in
383
373
  * the history bar, which opens it again.
384
374
  */
385
- interface EverfurChatTopCard {
386
- /** The small heading ("Her focus"). */
387
- readonly kicker: string;
388
- /** A source badge ("<your brand> results"). */
389
- readonly badge?: string;
390
- readonly title: string;
391
- /** The finding: a bold lead and the rest of the sentence. */
392
- readonly lead?: string;
393
- readonly body?: string;
394
- /** Your action ("See her Health Plan"). */
395
- readonly action?: {
396
- readonly label: string;
397
- readonly onPress: () => void;
398
- };
399
- /** A question the card asks in this thread ("What does it mean?" sends `prompt`). */
400
- readonly ask?: {
401
- readonly label: string;
402
- readonly prompt: string;
403
- };
404
- /** The close control's accessible name; given, the card can close to the pill. */
405
- readonly closeLabel?: string;
406
- /** The pill's words while the card is closed (defaults to `kicker`). */
407
- readonly pill?: string;
408
- /** Draw the close glyph your way. */
409
- readonly renderIcon?: (icon: 'close') => ReactNode;
375
+ interface EverfurChatTopCard extends EverfurChatTopCard$1 {
410
376
  /** Classes per element; a class drops that element's inline default. */
411
377
  readonly classNames?: {
412
378
  readonly wrap?: string;
@@ -456,4 +422,4 @@ interface EverfurChatHistorySheet {
456
422
  };
457
423
  }
458
424
 
459
- export { type EverfurChatTopCard as E, HealthPlanFocus as H, EverfurHealthPlan as a, type EverfurHealthPlanProps as b, type HealthPlanFocusLayer as c, type HealthPlanFocusOptions as d, type HealthPlanFocusOverlay as e, type HealthPlanFocusOverlayControls as f, type HealthPlanFocusProps as g, type EverfurChatEmptyHeaderContext as h, type EverfurChatEmptyState as i, type EverfurChatHistoryBar as j, type EverfurChatOpeningCard as k, type EverfurChatAnswerCards as l, type EverfurChatHistorySheet as m, type EverfurChatAnswerCard as n, type EverfurChatAnswerContext as o, type EverfurChatFollowUpAction as p };
425
+ export { type EverfurChatTopCard as E, HealthPlanFocus as H, EverfurHealthPlan as a, type EverfurHealthPlanProps as b, type HealthPlanFocusLayer as c, type HealthPlanFocusOptions as d, type HealthPlanFocusOverlay as e, type HealthPlanFocusOverlayControls as f, type HealthPlanFocusProps as g, type EverfurChatEmptyState as h, type EverfurChatHistoryBar as i, type EverfurChatOpeningCard as j, type EverfurChatAnswerCards as k, type EverfurChatHistorySheet as l, type EverfurChatAnswerCard as m, type EverfurChatAnswerContext as n, type EverfurChatFollowUpAction as o };
@@ -0,0 +1,147 @@
1
+ /*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
2
+ import { ReactNode } from 'react';
3
+ import { StyleProp, ViewStyle, TextStyle } from 'react-native';
4
+ import { b as EverfurChatOpeningCard$1 } from './threadOptions.d-GPJPprkn.js';
5
+
6
+ /**
7
+ * The card a thread opened from a notification starts with, in place of the member's first bubble: drawn while
8
+ * the first message of the open thread is the surface's `initialAsk`.
9
+ */
10
+ interface EverfurChatOpeningCard extends EverfurChatOpeningCard$1 {
11
+ /**
12
+ * Your styles per element: the web surface's `classNames` (card, icon, body) as React Native styles, plus the
13
+ * kicker and the title, which a web host reaches through its card class. Each is laid over Everfur's own style for
14
+ * that element. Absent, the card keeps the web's default look (the subtle fill, a sentence-case kicker).
15
+ */
16
+ readonly styles?: {
17
+ readonly card?: StyleProp<ViewStyle>;
18
+ readonly icon?: StyleProp<ViewStyle>;
19
+ readonly kicker?: StyleProp<TextStyle>;
20
+ readonly title?: StyleProp<TextStyle>;
21
+ readonly body?: StyleProp<TextStyle>;
22
+ };
23
+ }
24
+ /**
25
+ * The history bar: a "Chats" control with the member's thread count that opens the history, and a "New chat"
26
+ * control. For a surface that hides the SDK header and still wants the member's past chats.
27
+ */
28
+ interface EverfurChatHistoryBar {
29
+ /** The history control's words ("Chats"). */
30
+ readonly chats: string;
31
+ /** The new-chat control's words ("New chat"). */
32
+ readonly newChat: string;
33
+ /** Draw the two icons your way. */
34
+ readonly renderIcon?: (icon: 'history' | 'edit') => ReactNode;
35
+ /** Your own control after "Chats". Absent, nothing is drawn. */
36
+ readonly extra?: ReactNode;
37
+ }
38
+ /** The empty thread's own title and chip fills. Absent, the empty state is Everfur's own. */
39
+ interface EverfurChatEmptyState {
40
+ /** The title over the starter chips, in place of "What can we help {pet} with today?". */
41
+ readonly title?: string;
42
+ /**
43
+ * Fills for the chips that bring none of their own, taken in turn (the first chip the first fill, and round
44
+ * again). Each is a fill and its ink. Absent, Raph's v3 cycle on a light theme; empty, the theme's paint.
45
+ */
46
+ readonly chipTints?: readonly {
47
+ readonly tint: string;
48
+ readonly ink?: string;
49
+ }[];
50
+ }
51
+ /** One card under an answer in the cards answer style: a record, a stat, or a link to one of your screens. */
52
+ interface EverfurChatAnswerCard {
53
+ /** Stable key within the answer. */
54
+ readonly key: string;
55
+ readonly title: string;
56
+ /** The small line under the title. */
57
+ readonly meta?: string;
58
+ /** A status pill; `tone` picks `styles.pillTone[tone]` (and `styles.pillToneText[tone]` for its words). */
59
+ readonly pill?: {
60
+ readonly label: string;
61
+ readonly tone?: string;
62
+ };
63
+ /** A stat card's value: drawn in place of the pill and the chevron. */
64
+ readonly value?: {
65
+ readonly amount: string;
66
+ readonly unit?: string;
67
+ };
68
+ /** The tile at the start: an icon of yours, or an https image; `tone` picks `styles.tileTone[tone]`. */
69
+ readonly tile?: {
70
+ readonly icon?: ReactNode;
71
+ readonly imageUrl?: string;
72
+ readonly tone?: string;
73
+ };
74
+ /** Picks `styles.cardVariant[variant]` (for example a highlighted plan card). */
75
+ readonly variant?: string;
76
+ /** Given, the card is a button that calls this. Absent, a static card. */
77
+ readonly onPress?: () => void;
78
+ /** A card of your own, drawn in the card's place. If it throws, the slot draws nothing. */
79
+ readonly render?: () => ReactNode;
80
+ }
81
+ /** What `answerCards.cards` receives: the settled answer's text and the question it answered. */
82
+ interface EverfurChatAnswerContext {
83
+ readonly answer: string;
84
+ readonly question: string | null;
85
+ /** The answer's message id, stable for the life of the thread. */
86
+ readonly messageId: string;
87
+ }
88
+ /** The cards answer style's content (used while presentation `chatAnswerStyle` is `cards`). The words are yours. */
89
+ interface EverfurChatAnswerCards {
90
+ /** The line over each answer (an icon and your words). Absent, the assistant's name line. */
91
+ readonly byline?: {
92
+ readonly label: string;
93
+ readonly icon?: ReactNode;
94
+ };
95
+ /** Your cards under a settled answer. A throw draws none. */
96
+ readonly cards?: (context: EverfurChatAnswerContext) => readonly EverfurChatAnswerCard[];
97
+ /** Two feedback chips in place of the footer's thumbs, mapped to thumbs up and thumbs down. */
98
+ readonly feedback?: {
99
+ readonly helpful: string;
100
+ readonly notHelpful: string;
101
+ };
102
+ /** Your own rows at the top of the follow-ups, for the answer it receives. */
103
+ readonly followUpActions?: (context: EverfurChatAnswerContext) => readonly EverfurChatFollowUpAction[];
104
+ /** Draw the chevron your way. Absent, Everfur's glyph. */
105
+ readonly renderIcon?: (icon: 'chevron') => ReactNode;
106
+ /**
107
+ * Your styles for the tones and variants the cards name, the feedback chips and the follow-ups: the web surface's
108
+ * `classNames` of the same names, as React Native styles. Each is laid over Everfur's own style for that element.
109
+ * Absent, every card, tile, pill, chip and row keeps the web's default paint.
110
+ */
111
+ readonly styles?: {
112
+ /** A stat card (one with a `value`). */
113
+ readonly cardStat?: StyleProp<ViewStyle>;
114
+ readonly cardVariant?: Readonly<Record<string, StyleProp<ViewStyle>>>;
115
+ readonly tileTone?: Readonly<Record<string, StyleProp<ViewStyle>>>;
116
+ readonly pillTone?: Readonly<Record<string, StyleProp<ViewStyle>>>;
117
+ readonly pillToneText?: Readonly<Record<string, StyleProp<TextStyle>>>;
118
+ /** The feedback chips' row, each chip and its words (the web's `feedback`). */
119
+ readonly feedback?: StyleProp<ViewStyle>;
120
+ readonly feedbackChip?: StyleProp<ViewStyle>;
121
+ readonly feedbackChipText?: StyleProp<TextStyle>;
122
+ /** The block of follow-ups under the answer, its label, each row and its words (the web's `followUps`, `followUpsLabel`, `followUp`). */
123
+ readonly followUps?: StyleProp<ViewStyle>;
124
+ readonly followUpsLabel?: StyleProp<TextStyle>;
125
+ readonly followUp?: StyleProp<ViewStyle>;
126
+ readonly followUpText?: StyleProp<TextStyle>;
127
+ /** One of your own rows and its words (the web's `followUpAction`), laid over `followUp` and `followUpText`. */
128
+ readonly followUpAction?: StyleProp<ViewStyle>;
129
+ readonly followUpActionText?: StyleProp<TextStyle>;
130
+ };
131
+ }
132
+ /** A row of yours at the top of the follow-ups under an answer. */
133
+ interface EverfurChatFollowUpAction {
134
+ readonly key: string;
135
+ readonly label: string;
136
+ readonly icon?: ReactNode;
137
+ readonly onPress: () => void;
138
+ }
139
+ /** The history bottom sheet (presentation `chatHistoryStyle: "sheet"`). */
140
+ interface EverfurChatHistorySheet {
141
+ /** The sheet's small title ("Chats with Ask <your brand>"). Absent, Everfur's history heading. */
142
+ readonly title?: string;
143
+ /** Draw the icons your way. */
144
+ readonly renderIcon?: (icon: 'close' | 'chat' | 'edit') => ReactNode;
145
+ }
146
+
147
+ export type { EverfurChatAnswerCard as E, EverfurChatAnswerCards as a, EverfurChatAnswerContext as b, EverfurChatEmptyState as c, EverfurChatFollowUpAction as d, EverfurChatHistoryBar as e, EverfurChatHistorySheet as f, EverfurChatOpeningCard as g };
@@ -0,0 +1,55 @@
1
+ /*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
2
+ import { ReactNode } from 'react';
3
+
4
+ /** What `renderEmptyHeader` receives: ask a question in this thread, with no screen in between. */
5
+ interface EverfurChatEmptyHeaderContext {
6
+ /** Send `prompt` as the member's next message in the open thread (the same path as a starter chip). */
7
+ ask(prompt: string): void;
8
+ }
9
+ /**
10
+ * The card a thread opened from a notification starts with, in place of the member's first bubble: drawn while
11
+ * the first message of the open thread is the surface's `initialAsk`.
12
+ */
13
+ interface EverfurChatOpeningCard {
14
+ /** The line over the title ("Notification · 9:41 AM"). */
15
+ readonly kicker: string;
16
+ readonly title: string;
17
+ readonly body?: string;
18
+ /** The brand mark in the card's corner. */
19
+ readonly icon?: ReactNode;
20
+ }
21
+ /**
22
+ * The card at the top of the empty thread (presentation `chatTopCard: "focus"`): one finding, in your words, with
23
+ * an action of yours and a question it can ask in the thread. Its close control folds it into a pill.
24
+ */
25
+ interface EverfurChatTopCard {
26
+ /** The small heading ("Her focus"). */
27
+ readonly kicker: string;
28
+ /** A source badge ("<your brand> results"). */
29
+ readonly badge?: string;
30
+ readonly title: string;
31
+ /** The finding: a bold lead and the rest of the sentence. */
32
+ readonly lead?: string;
33
+ readonly body?: string;
34
+ /** Your action ("See her Health Plan"). */
35
+ readonly action?: {
36
+ readonly label: string;
37
+ readonly onPress: () => void;
38
+ };
39
+ /** A question the card asks in this thread ("What does it mean?" sends `prompt`). */
40
+ readonly ask?: {
41
+ readonly label: string;
42
+ readonly prompt: string;
43
+ };
44
+ /**
45
+ * The close control's accessible name; given, the card can close to the pill. Absent, no close and no pill (the
46
+ * card stays open). On React Native a blank name falls back to the shared `Close`.
47
+ */
48
+ readonly closeLabel?: string;
49
+ /** The pill's words while the card is closed (defaults to `kicker`). */
50
+ readonly pill?: string;
51
+ /** Draw the close glyph your way. */
52
+ readonly renderIcon?: (icon: 'close') => ReactNode;
53
+ }
54
+
55
+ export type { EverfurChatEmptyHeaderContext as E, EverfurChatTopCard as a, EverfurChatOpeningCard as b };
@@ -0,0 +1,55 @@
1
+ /*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
2
+ import { ReactNode } from 'react';
3
+
4
+ /** What `renderEmptyHeader` receives: ask a question in this thread, with no screen in between. */
5
+ interface EverfurChatEmptyHeaderContext {
6
+ /** Send `prompt` as the member's next message in the open thread (the same path as a starter chip). */
7
+ ask(prompt: string): void;
8
+ }
9
+ /**
10
+ * The card a thread opened from a notification starts with, in place of the member's first bubble: drawn while
11
+ * the first message of the open thread is the surface's `initialAsk`.
12
+ */
13
+ interface EverfurChatOpeningCard {
14
+ /** The line over the title ("Notification · 9:41 AM"). */
15
+ readonly kicker: string;
16
+ readonly title: string;
17
+ readonly body?: string;
18
+ /** The brand mark in the card's corner. */
19
+ readonly icon?: ReactNode;
20
+ }
21
+ /**
22
+ * The card at the top of the empty thread (presentation `chatTopCard: "focus"`): one finding, in your words, with
23
+ * an action of yours and a question it can ask in the thread. Its close control folds it into a pill.
24
+ */
25
+ interface EverfurChatTopCard {
26
+ /** The small heading ("Her focus"). */
27
+ readonly kicker: string;
28
+ /** A source badge ("<your brand> results"). */
29
+ readonly badge?: string;
30
+ readonly title: string;
31
+ /** The finding: a bold lead and the rest of the sentence. */
32
+ readonly lead?: string;
33
+ readonly body?: string;
34
+ /** Your action ("See her Health Plan"). */
35
+ readonly action?: {
36
+ readonly label: string;
37
+ readonly onPress: () => void;
38
+ };
39
+ /** A question the card asks in this thread ("What does it mean?" sends `prompt`). */
40
+ readonly ask?: {
41
+ readonly label: string;
42
+ readonly prompt: string;
43
+ };
44
+ /**
45
+ * The close control's accessible name; given, the card can close to the pill. Absent, no close and no pill (the
46
+ * card stays open). On React Native a blank name falls back to the shared `Close`.
47
+ */
48
+ readonly closeLabel?: string;
49
+ /** The pill's words while the card is closed (defaults to `kicker`). */
50
+ readonly pill?: string;
51
+ /** Draw the close glyph your way. */
52
+ readonly renderIcon?: (icon: 'close') => ReactNode;
53
+ }
54
+
55
+ export type { EverfurChatEmptyHeaderContext as E, EverfurChatTopCard as a, EverfurChatOpeningCard as b };
@@ -1,5 +1,5 @@
1
1
  /*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
2
- import { p as RecordsTimelineView } from './depth.d-DYnkz8Re.cjs';
2
+ import { p as RecordsTimelineView } from './depth.d-e_8_icip.cjs';
3
3
 
4
4
  type TimelineRowKind = 'visit' | 'vaccine' | 'weight' | 'medication';
5
5
  interface TimelineRow {
@@ -1,5 +1,5 @@
1
1
  /*! @everfur/sdk. Copyright (c) 2026 Strand Health Inc. dba Everfur. All rights reserved. Use is subject to the Everfur SDK License: https://docs.everfur.com/license */
2
- import { p as RecordsTimelineView } from './depth.d-D7kKiYl7.js';
2
+ import { p as RecordsTimelineView } from './depth.d-SJzknw_P.js';
3
3
 
4
4
  type TimelineRowKind = 'visit' | 'vaccine' | 'weight' | 'medication';
5
5
  interface TimelineRow {