@planningcenter/chat-react-native 3.42.2-qa-821.1 → 3.42.2-qa-staging.3

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 (637) hide show
  1. package/build/components/conversation/attachments/attachment_card.d.ts +3 -3
  2. package/build/components/conversation/attachments/attachment_card.d.ts.map +1 -1
  3. package/build/components/conversation/attachments/attachment_card.js +7 -3
  4. package/build/components/conversation/attachments/attachment_card.js.map +1 -1
  5. package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts +2 -1
  6. package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts.map +1 -1
  7. package/build/components/conversation/attachments/attachment_deleting_overlay.js +7 -12
  8. package/build/components/conversation/attachments/attachment_deleting_overlay.js.map +1 -1
  9. package/build/components/conversation/attachments/audio_attachment.d.ts +2 -1
  10. package/build/components/conversation/attachments/audio_attachment.d.ts.map +1 -1
  11. package/build/components/conversation/attachments/audio_attachment.js +23 -6
  12. package/build/components/conversation/attachments/audio_attachment.js.map +1 -1
  13. package/build/components/conversation/attachments/expanded_link.d.ts +2 -1
  14. package/build/components/conversation/attachments/expanded_link.d.ts.map +1 -1
  15. package/build/components/conversation/attachments/expanded_link.js +8 -2
  16. package/build/components/conversation/attachments/expanded_link.js.map +1 -1
  17. package/build/components/conversation/attachments/generic_file_attachment.d.ts +2 -1
  18. package/build/components/conversation/attachments/generic_file_attachment.d.ts.map +1 -1
  19. package/build/components/conversation/attachments/generic_file_attachment.js +12 -2
  20. package/build/components/conversation/attachments/generic_file_attachment.js.map +1 -1
  21. package/build/components/conversation/attachments/giphy_attachment.d.ts +2 -1
  22. package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
  23. package/build/components/conversation/attachments/giphy_attachment.js +7 -2
  24. package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
  25. package/build/components/conversation/attachments/image_attachment.d.ts +2 -1
  26. package/build/components/conversation/attachments/image_attachment.d.ts.map +1 -1
  27. package/build/components/conversation/attachments/image_attachment.js +53 -16
  28. package/build/components/conversation/attachments/image_attachment.js.map +1 -1
  29. package/build/components/conversation/attachments/video_attachment.d.ts +2 -1
  30. package/build/components/conversation/attachments/video_attachment.d.ts.map +1 -1
  31. package/build/components/conversation/attachments/video_attachment.js +13 -3
  32. package/build/components/conversation/attachments/video_attachment.js.map +1 -1
  33. package/build/components/conversation/conversation_start_banner.d.ts +2 -1
  34. package/build/components/conversation/conversation_start_banner.d.ts.map +1 -1
  35. package/build/components/conversation/conversation_start_banner.js +14 -2
  36. package/build/components/conversation/conversation_start_banner.js.map +1 -1
  37. package/build/components/conversation/empty_conversation_blank_state.d.ts +1 -1
  38. package/build/components/conversation/empty_conversation_blank_state.d.ts.map +1 -1
  39. package/build/components/conversation/empty_conversation_blank_state.js +9 -2
  40. package/build/components/conversation/empty_conversation_blank_state.js.map +1 -1
  41. package/build/components/conversation/jump_to_bottom_button.d.ts +1 -1
  42. package/build/components/conversation/jump_to_bottom_button.d.ts.map +1 -1
  43. package/build/components/conversation/jump_to_bottom_button.js +10 -2
  44. package/build/components/conversation/jump_to_bottom_button.js.map +1 -1
  45. package/build/components/conversation/message.d.ts +2 -1
  46. package/build/components/conversation/message.d.ts.map +1 -1
  47. package/build/components/conversation/message.js +53 -2
  48. package/build/components/conversation/message.js.map +1 -1
  49. package/build/components/conversation/message_attachments.d.ts +2 -1
  50. package/build/components/conversation/message_attachments.d.ts.map +1 -1
  51. package/build/components/conversation/message_attachments.js +21 -17
  52. package/build/components/conversation/message_attachments.js.map +1 -1
  53. package/build/components/conversation/message_form/message_form_attachment_file.d.ts +2 -1
  54. package/build/components/conversation/message_form/message_form_attachment_file.d.ts.map +1 -1
  55. package/build/components/conversation/message_form/message_form_attachment_file.js +2 -2
  56. package/build/components/conversation/message_form/message_form_attachment_file.js.map +1 -1
  57. package/build/components/conversation/message_form/message_form_attachment_image.d.ts +2 -1
  58. package/build/components/conversation/message_form/message_form_attachment_image.d.ts.map +1 -1
  59. package/build/components/conversation/message_form/message_form_attachment_image.js +2 -2
  60. package/build/components/conversation/message_form/message_form_attachment_image.js.map +1 -1
  61. package/build/components/conversation/message_form/message_form_attachment_video.d.ts +2 -1
  62. package/build/components/conversation/message_form/message_form_attachment_video.d.ts.map +1 -1
  63. package/build/components/conversation/message_form/message_form_attachment_video.js +2 -2
  64. package/build/components/conversation/message_form/message_form_attachment_video.js.map +1 -1
  65. package/build/components/conversation/message_form.d.ts +6 -5
  66. package/build/components/conversation/message_form.d.ts.map +1 -1
  67. package/build/components/conversation/message_form.js +82 -20
  68. package/build/components/conversation/message_form.js.map +1 -1
  69. package/build/components/conversation/message_markdown.d.ts +2 -1
  70. package/build/components/conversation/message_markdown.d.ts.map +1 -1
  71. package/build/components/conversation/message_markdown.js +16 -8
  72. package/build/components/conversation/message_markdown.js.map +1 -1
  73. package/build/components/conversation/message_reaction.d.ts +2 -1
  74. package/build/components/conversation/message_reaction.d.ts.map +1 -1
  75. package/build/components/conversation/message_reaction.js +5 -3
  76. package/build/components/conversation/message_reaction.js.map +1 -1
  77. package/build/components/conversation/message_read_receipts.d.ts +2 -1
  78. package/build/components/conversation/message_read_receipts.d.ts.map +1 -1
  79. package/build/components/conversation/message_read_receipts.js +13 -3
  80. package/build/components/conversation/message_read_receipts.js.map +1 -1
  81. package/build/components/conversation/messages_disabled_banners.d.ts +3 -3
  82. package/build/components/conversation/messages_disabled_banners.d.ts.map +1 -1
  83. package/build/components/conversation/messages_disabled_banners.js +8 -5
  84. package/build/components/conversation/messages_disabled_banners.js.map +1 -1
  85. package/build/components/conversation/reply_connectors.d.ts +2 -2
  86. package/build/components/conversation/reply_connectors.d.ts.map +1 -1
  87. package/build/components/conversation/reply_connectors.js +50 -18
  88. package/build/components/conversation/reply_connectors.js.map +1 -1
  89. package/build/components/conversation/reply_shadow_message.d.ts +2 -1
  90. package/build/components/conversation/reply_shadow_message.d.ts.map +1 -1
  91. package/build/components/conversation/reply_shadow_message.js +46 -16
  92. package/build/components/conversation/reply_shadow_message.js.map +1 -1
  93. package/build/components/conversation/system_message.d.ts +2 -1
  94. package/build/components/conversation/system_message.d.ts.map +1 -1
  95. package/build/components/conversation/system_message.js +12 -3
  96. package/build/components/conversation/system_message.js.map +1 -1
  97. package/build/components/conversation/typing_indicator.d.ts +2 -1
  98. package/build/components/conversation/typing_indicator.d.ts.map +1 -1
  99. package/build/components/conversation/typing_indicator.js +13 -3
  100. package/build/components/conversation/typing_indicator.js.map +1 -1
  101. package/build/components/conversations/conversation_actions.d.ts +2 -2
  102. package/build/components/conversations/conversation_actions.d.ts.map +1 -1
  103. package/build/components/conversations/conversation_actions.js +10 -4
  104. package/build/components/conversations/conversation_actions.js.map +1 -1
  105. package/build/components/conversations/conversation_preview.d.ts +3 -2
  106. package/build/components/conversations/conversation_preview.d.ts.map +1 -1
  107. package/build/components/conversations/conversation_preview.js +76 -12
  108. package/build/components/conversations/conversation_preview.js.map +1 -1
  109. package/build/components/conversations/conversations.d.ts +1 -1
  110. package/build/components/conversations/conversations.d.ts.map +1 -1
  111. package/build/components/conversations/conversations.js +17 -16
  112. package/build/components/conversations/conversations.js.map +1 -1
  113. package/build/components/conversations/conversations_blank_state.d.ts +2 -1
  114. package/build/components/conversations/conversations_blank_state.d.ts.map +1 -1
  115. package/build/components/conversations/conversations_blank_state.js +12 -2
  116. package/build/components/conversations/conversations_blank_state.js.map +1 -1
  117. package/build/components/conversations/mute_indicator.d.ts +2 -1
  118. package/build/components/conversations/mute_indicator.d.ts.map +1 -1
  119. package/build/components/conversations/mute_indicator.js +2 -2
  120. package/build/components/conversations/mute_indicator.js.map +1 -1
  121. package/build/components/conversations/swipeable_toggle_button.d.ts +2 -1
  122. package/build/components/conversations/swipeable_toggle_button.d.ts.map +1 -1
  123. package/build/components/conversations/swipeable_toggle_button.js +10 -3
  124. package/build/components/conversations/swipeable_toggle_button.js.map +1 -1
  125. package/build/components/conversations/unread_count_badge.d.ts +4 -2
  126. package/build/components/conversations/unread_count_badge.d.ts.map +1 -1
  127. package/build/components/conversations/unread_count_badge.js +12 -7
  128. package/build/components/conversations/unread_count_badge.js.map +1 -1
  129. package/build/components/display/action_button.d.ts +1 -1
  130. package/build/components/display/action_button.d.ts.map +1 -1
  131. package/build/components/display/action_button.js +13 -3
  132. package/build/components/display/action_button.js.map +1 -1
  133. package/build/components/display/adult_requirement_notice.d.ts +2 -1
  134. package/build/components/display/adult_requirement_notice.d.ts.map +1 -1
  135. package/build/components/display/adult_requirement_notice.js +4 -2
  136. package/build/components/display/adult_requirement_notice.js.map +1 -1
  137. package/build/components/display/avatar.d.ts +2 -1
  138. package/build/components/display/avatar.d.ts.map +1 -1
  139. package/build/components/display/avatar.js +7 -2
  140. package/build/components/display/avatar.js.map +1 -1
  141. package/build/components/display/avatar_group.d.ts +2 -1
  142. package/build/components/display/avatar_group.d.ts.map +1 -1
  143. package/build/components/display/avatar_group.js +9 -2
  144. package/build/components/display/avatar_group.js.map +1 -1
  145. package/build/components/display/badge.d.ts +2 -1
  146. package/build/components/display/badge.d.ts.map +1 -1
  147. package/build/components/display/badge.js +37 -6
  148. package/build/components/display/badge.js.map +1 -1
  149. package/build/components/display/banner.d.ts +3 -3
  150. package/build/components/display/banner.d.ts.map +1 -1
  151. package/build/components/display/banner.js +11 -4
  152. package/build/components/display/banner.js.map +1 -1
  153. package/build/components/display/banner_collapsible.d.ts +2 -2
  154. package/build/components/display/banner_collapsible.d.ts.map +1 -1
  155. package/build/components/display/banner_collapsible.js +10 -2
  156. package/build/components/display/banner_collapsible.js.map +1 -1
  157. package/build/components/display/button.d.ts +2 -1
  158. package/build/components/display/button.d.ts.map +1 -1
  159. package/build/components/display/button.js +14 -3
  160. package/build/components/display/button.js.map +1 -1
  161. package/build/components/display/child_notice.d.ts +2 -1
  162. package/build/components/display/child_notice.d.ts.map +1 -1
  163. package/build/components/display/child_notice.js +15 -3
  164. package/build/components/display/child_notice.js.map +1 -1
  165. package/build/components/display/conversation_avatar.d.ts +2 -1
  166. package/build/components/display/conversation_avatar.d.ts.map +1 -1
  167. package/build/components/display/conversation_avatar.js +9 -5
  168. package/build/components/display/conversation_avatar.js.map +1 -1
  169. package/build/components/display/emoji_avatar.d.ts +2 -1
  170. package/build/components/display/emoji_avatar.d.ts.map +1 -1
  171. package/build/components/display/emoji_avatar.js +12 -2
  172. package/build/components/display/emoji_avatar.js.map +1 -1
  173. package/build/components/display/file_attachment_preview.d.ts +1 -1
  174. package/build/components/display/file_attachment_preview.d.ts.map +1 -1
  175. package/build/components/display/file_attachment_preview.js +17 -3
  176. package/build/components/display/file_attachment_preview.js.map +1 -1
  177. package/build/components/display/heading.d.ts +2 -1
  178. package/build/components/display/heading.d.ts.map +1 -1
  179. package/build/components/display/heading.js +4 -2
  180. package/build/components/display/heading.js.map +1 -1
  181. package/build/components/display/icon.d.ts +2 -1
  182. package/build/components/display/icon.d.ts.map +1 -1
  183. package/build/components/display/icon.js +4 -4
  184. package/build/components/display/icon.js.map +1 -1
  185. package/build/components/display/icon_avatar.d.ts +2 -1
  186. package/build/components/display/icon_avatar.d.ts.map +1 -1
  187. package/build/components/display/icon_avatar.js +12 -2
  188. package/build/components/display/icon_avatar.js.map +1 -1
  189. package/build/components/display/icon_button.d.ts +2 -1
  190. package/build/components/display/icon_button.d.ts.map +1 -1
  191. package/build/components/display/icon_button.js +5 -3
  192. package/build/components/display/icon_button.js.map +1 -1
  193. package/build/components/display/image.d.ts +2 -1
  194. package/build/components/display/image.d.ts.map +1 -1
  195. package/build/components/display/image.js +7 -3
  196. package/build/components/display/image.js.map +1 -1
  197. package/build/components/display/image_attachment_preview.d.ts +1 -1
  198. package/build/components/display/image_attachment_preview.d.ts.map +1 -1
  199. package/build/components/display/image_attachment_preview.js +7 -2
  200. package/build/components/display/image_attachment_preview.js.map +1 -1
  201. package/build/components/display/keyboard_view.d.ts +2 -1
  202. package/build/components/display/keyboard_view.d.ts.map +1 -1
  203. package/build/components/display/keyboard_view.js +9 -4
  204. package/build/components/display/keyboard_view.js.map +1 -1
  205. package/build/components/display/person.d.ts +2 -1
  206. package/build/components/display/person.d.ts.map +1 -1
  207. package/build/components/display/person.js +12 -2
  208. package/build/components/display/person.js.map +1 -1
  209. package/build/components/display/platform_modal_header_buttons.d.ts +3 -3
  210. package/build/components/display/platform_modal_header_buttons.d.ts.map +1 -1
  211. package/build/components/display/platform_modal_header_buttons.js +10 -5
  212. package/build/components/display/platform_modal_header_buttons.js.map +1 -1
  213. package/build/components/display/pressable_row.d.ts +1 -1
  214. package/build/components/display/pressable_row.d.ts.map +1 -1
  215. package/build/components/display/pressable_row.js +7 -2
  216. package/build/components/display/pressable_row.js.map +1 -1
  217. package/build/components/display/spinner.d.ts +2 -1
  218. package/build/components/display/spinner.d.ts.map +1 -1
  219. package/build/components/display/spinner.js +9 -3
  220. package/build/components/display/spinner.js.map +1 -1
  221. package/build/components/display/switch.d.ts +2 -1
  222. package/build/components/display/switch.d.ts.map +1 -1
  223. package/build/components/display/switch.js +2 -2
  224. package/build/components/display/switch.js.map +1 -1
  225. package/build/components/display/tabs.d.ts +1 -1
  226. package/build/components/display/tabs.d.ts.map +1 -1
  227. package/build/components/display/tabs.js +31 -21
  228. package/build/components/display/tabs.js.map +1 -1
  229. package/build/components/display/text.d.ts +2 -1
  230. package/build/components/display/text.d.ts.map +1 -1
  231. package/build/components/display/text.js +4 -2
  232. package/build/components/display/text.js.map +1 -1
  233. package/build/components/display/text_button.d.ts +2 -1
  234. package/build/components/display/text_button.d.ts.map +1 -1
  235. package/build/components/display/text_button.js +8 -3
  236. package/build/components/display/text_button.js.map +1 -1
  237. package/build/components/display/text_inline_button.d.ts +2 -1
  238. package/build/components/display/text_inline_button.d.ts.map +1 -1
  239. package/build/components/display/text_inline_button.js +5 -4
  240. package/build/components/display/text_inline_button.js.map +1 -1
  241. package/build/components/display/text_input.d.ts +1 -1
  242. package/build/components/display/text_input.d.ts.map +1 -1
  243. package/build/components/display/text_input.js +1 -2
  244. package/build/components/display/text_input.js.map +1 -1
  245. package/build/components/display/toggle_button.d.ts +2 -1
  246. package/build/components/display/toggle_button.d.ts.map +1 -1
  247. package/build/components/display/toggle_button.js +9 -3
  248. package/build/components/display/toggle_button.js.map +1 -1
  249. package/build/components/display/video_attachment_preview.d.ts +1 -1
  250. package/build/components/display/video_attachment_preview.d.ts.map +1 -1
  251. package/build/components/display/video_attachment_preview.js +20 -3
  252. package/build/components/display/video_attachment_preview.js.map +1 -1
  253. package/build/components/group_conversation_list.d.ts +1 -1
  254. package/build/components/group_conversation_list.d.ts.map +1 -1
  255. package/build/components/group_conversation_list.js +14 -4
  256. package/build/components/group_conversation_list.js.map +1 -1
  257. package/build/components/page/component_error_boundary.d.ts +2 -2
  258. package/build/components/page/component_error_boundary.d.ts.map +1 -1
  259. package/build/components/page/component_error_boundary.js +4 -2
  260. package/build/components/page/component_error_boundary.js.map +1 -1
  261. package/build/components/page/loading.d.ts +2 -1
  262. package/build/components/page/loading.d.ts.map +1 -1
  263. package/build/components/page/loading.js +4 -2
  264. package/build/components/page/loading.js.map +1 -1
  265. package/build/components/page/page_error_boundary.d.ts +2 -2
  266. package/build/components/page/page_error_boundary.d.ts.map +1 -1
  267. package/build/components/page/page_error_boundary.js +32 -11
  268. package/build/components/page/page_error_boundary.js.map +1 -1
  269. package/build/components/primitive/avatar_primitive.js +41 -14
  270. package/build/components/primitive/avatar_primitive.js.map +1 -1
  271. package/build/components/primitive/banner_primitive.js +18 -10
  272. package/build/components/primitive/banner_primitive.js.map +1 -1
  273. package/build/components/primitive/blank_state_primitive.js +12 -8
  274. package/build/components/primitive/blank_state_primitive.js.map +1 -1
  275. package/build/components/primitive/form_sheet.d.ts +1 -1
  276. package/build/components/primitive/form_sheet.d.ts.map +1 -1
  277. package/build/components/primitive/form_sheet.js +22 -9
  278. package/build/components/primitive/form_sheet.js.map +1 -1
  279. package/build/components/safe_area_modal.d.ts +1 -1
  280. package/build/components/safe_area_modal.d.ts.map +1 -1
  281. package/build/components/safe_area_modal.js +3 -2
  282. package/build/components/safe_area_modal.js.map +1 -1
  283. package/build/contexts/api_provider.d.ts +2 -1
  284. package/build/contexts/api_provider.d.ts.map +1 -1
  285. package/build/contexts/api_provider.js +5 -3
  286. package/build/contexts/api_provider.js.map +1 -1
  287. package/build/contexts/chat_context.d.ts +1 -1
  288. package/build/contexts/chat_context.d.ts.map +1 -1
  289. package/build/contexts/chat_context.js +1 -2
  290. package/build/contexts/chat_context.js.map +1 -1
  291. package/build/contexts/conversation_context.d.ts +2 -2
  292. package/build/contexts/conversation_context.d.ts.map +1 -1
  293. package/build/contexts/conversation_context.js +2 -3
  294. package/build/contexts/conversation_context.js.map +1 -1
  295. package/build/contexts/conversations_context.d.ts +2 -2
  296. package/build/contexts/conversations_context.d.ts.map +1 -1
  297. package/build/contexts/conversations_context.js +2 -3
  298. package/build/contexts/conversations_context.js.map +1 -1
  299. package/build/contexts/session_context.d.ts +1 -1
  300. package/build/contexts/session_context.d.ts.map +1 -1
  301. package/build/contexts/session_context.js +2 -3
  302. package/build/contexts/session_context.js.map +1 -1
  303. package/build/hooks/use_animated_message_background_color.d.ts +2 -2
  304. package/build/hooks/use_conversation.d.ts +1 -1
  305. package/build/hooks/use_conversation.d.ts.map +1 -1
  306. package/build/hooks/use_conversation.js +2 -0
  307. package/build/hooks/use_conversation.js.map +1 -1
  308. package/build/hooks/use_conversation_jolt_events.d.ts.map +1 -1
  309. package/build/hooks/use_conversation_jolt_events.js +4 -19
  310. package/build/hooks/use_conversation_jolt_events.js.map +1 -1
  311. package/build/hooks/use_conversation_membership.d.ts +1 -1
  312. package/build/hooks/use_conversation_membership.d.ts.map +1 -1
  313. package/build/hooks/use_conversation_messages.d.ts +0 -1
  314. package/build/hooks/use_conversation_messages.d.ts.map +1 -1
  315. package/build/hooks/use_conversation_messages.js +2 -2
  316. package/build/hooks/use_conversation_messages.js.map +1 -1
  317. package/build/hooks/use_conversations_actions.d.ts +36 -36
  318. package/build/hooks/use_conversations_actions.d.ts.map +1 -1
  319. package/build/hooks/use_conversations_actions.js +3 -1
  320. package/build/hooks/use_conversations_actions.js.map +1 -1
  321. package/build/hooks/use_mark_latest_message_read.d.ts.map +1 -1
  322. package/build/hooks/use_mark_latest_message_read.js +3 -4
  323. package/build/hooks/use_mark_latest_message_read.js.map +1 -1
  324. package/build/hooks/use_person_settings.d.ts +1 -1
  325. package/build/index.d.ts +1 -2
  326. package/build/index.d.ts.map +1 -1
  327. package/build/index.js.map +1 -1
  328. package/build/navigation/chat_access_gate.d.ts +2 -2
  329. package/build/navigation/chat_access_gate.d.ts.map +1 -1
  330. package/build/navigation/chat_access_gate.js +5 -6
  331. package/build/navigation/chat_access_gate.js.map +1 -1
  332. package/build/navigation/index.d.ts +36 -35
  333. package/build/navigation/index.d.ts.map +1 -1
  334. package/build/navigation/index.js +21 -19
  335. package/build/navigation/index.js.map +1 -1
  336. package/build/navigation/screenLayout.d.ts +2 -2
  337. package/build/navigation/screenLayout.d.ts.map +1 -1
  338. package/build/navigation/screenLayout.js +9 -3
  339. package/build/navigation/screenLayout.js.map +1 -1
  340. package/build/polyfills/events/EventTarget.d.ts +1 -1
  341. package/build/polyfills/events/EventTarget.d.ts.map +1 -1
  342. package/build/polyfills/events/EventTarget.js.map +1 -1
  343. package/build/screens/age_check/age_check_required_screen.d.ts +2 -1
  344. package/build/screens/age_check/age_check_required_screen.d.ts.map +1 -1
  345. package/build/screens/age_check/age_check_required_screen.js +46 -3
  346. package/build/screens/age_check/age_check_required_screen.js.map +1 -1
  347. package/build/screens/age_check/age_check_underage_screen.d.ts +2 -1
  348. package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
  349. package/build/screens/age_check/age_check_underage_screen.js +25 -2
  350. package/build/screens/age_check/age_check_underage_screen.js.map +1 -1
  351. package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts +2 -1
  352. package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts.map +1 -1
  353. package/build/screens/age_check/components/age_check_select_birthdate_modal.js +25 -6
  354. package/build/screens/age_check/components/age_check_select_birthdate_modal.js.map +1 -1
  355. package/build/screens/attachment_actions/attachment_actions_screen.d.ts +2 -1
  356. package/build/screens/attachment_actions/attachment_actions_screen.d.ts.map +1 -1
  357. package/build/screens/attachment_actions/attachment_actions_screen.js +5 -3
  358. package/build/screens/attachment_actions/attachment_actions_screen.js.map +1 -1
  359. package/build/screens/avatar_picker/avatar_picker_screen.d.ts +2 -1
  360. package/build/screens/avatar_picker/avatar_picker_screen.d.ts.map +1 -1
  361. package/build/screens/avatar_picker/avatar_picker_screen.js +36 -9
  362. package/build/screens/avatar_picker/avatar_picker_screen.js.map +1 -1
  363. package/build/screens/avatar_picker/avatar_preview.d.ts +1 -1
  364. package/build/screens/avatar_picker/avatar_preview.d.ts.map +1 -1
  365. package/build/screens/avatar_picker/avatar_preview.js +9 -5
  366. package/build/screens/avatar_picker/avatar_preview.js.map +1 -1
  367. package/build/screens/avatar_picker/color_picker.d.ts +2 -1
  368. package/build/screens/avatar_picker/color_picker.d.ts.map +1 -1
  369. package/build/screens/avatar_picker/color_picker.js +5 -4
  370. package/build/screens/avatar_picker/color_picker.js.map +1 -1
  371. package/build/screens/avatar_picker/emoji_tab.d.ts +2 -1
  372. package/build/screens/avatar_picker/emoji_tab.d.ts.map +1 -1
  373. package/build/screens/avatar_picker/emoji_tab.js +13 -12
  374. package/build/screens/avatar_picker/emoji_tab.js.map +1 -1
  375. package/build/screens/avatar_picker/icon_grid.d.ts +2 -1
  376. package/build/screens/avatar_picker/icon_grid.d.ts.map +1 -1
  377. package/build/screens/avatar_picker/icon_grid.js +5 -4
  378. package/build/screens/avatar_picker/icon_grid.js.map +1 -1
  379. package/build/screens/avatar_picker/upload_tab.d.ts +2 -1
  380. package/build/screens/avatar_picker/upload_tab.d.ts.map +1 -1
  381. package/build/screens/avatar_picker/upload_tab.js +4 -3
  382. package/build/screens/avatar_picker/upload_tab.js.map +1 -1
  383. package/build/screens/bug_report_screen.d.ts +2 -1
  384. package/build/screens/bug_report_screen.d.ts.map +1 -1
  385. package/build/screens/bug_report_screen.js +117 -11
  386. package/build/screens/bug_report_screen.js.map +1 -1
  387. package/build/screens/conversation/message_read_receipts_screen.d.ts +2 -1
  388. package/build/screens/conversation/message_read_receipts_screen.d.ts.map +1 -1
  389. package/build/screens/conversation/message_read_receipts_screen.js +20 -4
  390. package/build/screens/conversation/message_read_receipts_screen.js.map +1 -1
  391. package/build/screens/conversation_details_screen.d.ts +2 -1
  392. package/build/screens/conversation_details_screen.d.ts.map +1 -1
  393. package/build/screens/conversation_details_screen.js +106 -43
  394. package/build/screens/conversation_details_screen.js.map +1 -1
  395. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts +1 -1
  396. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts.map +1 -1
  397. package/build/screens/conversation_filter_recipients/components/checkbox_row.js +9 -3
  398. package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +1 -1
  399. package/build/screens/conversation_filter_recipients/components/header_row.d.ts +1 -1
  400. package/build/screens/conversation_filter_recipients/components/header_row.d.ts.map +1 -1
  401. package/build/screens/conversation_filter_recipients/components/header_row.js +12 -2
  402. package/build/screens/conversation_filter_recipients/components/header_row.js.map +1 -1
  403. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts +2 -1
  404. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
  405. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +44 -20
  406. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
  407. package/build/screens/conversation_filters/components/conversation_filters.d.ts +2 -1
  408. package/build/screens/conversation_filters/components/conversation_filters.d.ts.map +1 -1
  409. package/build/screens/conversation_filters/components/conversation_filters.js +11 -10
  410. package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
  411. package/build/screens/conversation_filters/components/rows.d.ts +6 -6
  412. package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
  413. package/build/screens/conversation_filters/components/rows.js +34 -7
  414. package/build/screens/conversation_filters/components/rows.js.map +1 -1
  415. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts +1 -1
  416. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
  417. package/build/screens/conversation_filters/context/conversation_filter_context.js +1 -2
  418. package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
  419. package/build/screens/conversation_filters/group_filters.d.ts +2 -1
  420. package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
  421. package/build/screens/conversation_filters/group_filters.js +2 -2
  422. package/build/screens/conversation_filters/group_filters.js.map +1 -1
  423. package/build/screens/conversation_filters/team_filters.d.ts +2 -1
  424. package/build/screens/conversation_filters/team_filters.d.ts.map +1 -1
  425. package/build/screens/conversation_filters/team_filters.js +2 -2
  426. package/build/screens/conversation_filters/team_filters.js.map +1 -1
  427. package/build/screens/conversation_filters_screen.d.ts +2 -1
  428. package/build/screens/conversation_filters_screen.d.ts.map +1 -1
  429. package/build/screens/conversation_filters_screen.js +16 -4
  430. package/build/screens/conversation_filters_screen.js.map +1 -1
  431. package/build/screens/conversation_new/components/avatar_selection_row.d.ts +3 -2
  432. package/build/screens/conversation_new/components/avatar_selection_row.d.ts.map +1 -1
  433. package/build/screens/conversation_new/components/avatar_selection_row.js +16 -6
  434. package/build/screens/conversation_new/components/avatar_selection_row.js.map +1 -1
  435. package/build/screens/conversation_new/components/filter_by_plan.d.ts +4 -3
  436. package/build/screens/conversation_new/components/filter_by_plan.d.ts.map +1 -1
  437. package/build/screens/conversation_new/components/filter_by_plan.js +46 -22
  438. package/build/screens/conversation_new/components/filter_by_plan.js.map +1 -1
  439. package/build/screens/conversation_new/components/form_list.d.ts +3 -2
  440. package/build/screens/conversation_new/components/form_list.d.ts.map +1 -1
  441. package/build/screens/conversation_new/components/form_list.js +6 -4
  442. package/build/screens/conversation_new/components/form_list.js.map +1 -1
  443. package/build/screens/conversation_new/components/gender_filter_toggle.d.ts +2 -1
  444. package/build/screens/conversation_new/components/gender_filter_toggle.d.ts.map +1 -1
  445. package/build/screens/conversation_new/components/gender_filter_toggle.js +20 -4
  446. package/build/screens/conversation_new/components/gender_filter_toggle.js.map +1 -1
  447. package/build/screens/conversation_new/components/groups_form.d.ts +2 -1
  448. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  449. package/build/screens/conversation_new/components/groups_form.js +30 -4
  450. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  451. package/build/screens/conversation_new/components/services_form.d.ts +2 -1
  452. package/build/screens/conversation_new/components/services_form.d.ts.map +1 -1
  453. package/build/screens/conversation_new/components/services_form.js +61 -27
  454. package/build/screens/conversation_new/components/services_form.js.map +1 -1
  455. package/build/screens/conversation_new/components/source_app_error_card.d.ts +1 -1
  456. package/build/screens/conversation_new/components/source_app_error_card.d.ts.map +1 -1
  457. package/build/screens/conversation_new/components/source_app_error_card.js +3 -2
  458. package/build/screens/conversation_new/components/source_app_error_card.js.map +1 -1
  459. package/build/screens/conversation_new/conversation_new_screen.d.ts +2 -1
  460. package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
  461. package/build/screens/conversation_new/conversation_new_screen.js +4 -4
  462. package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
  463. package/build/screens/conversation_notification_level_select_screen.d.ts +2 -1
  464. package/build/screens/conversation_notification_level_select_screen.d.ts.map +1 -1
  465. package/build/screens/conversation_notification_level_select_screen.js +6 -4
  466. package/build/screens/conversation_notification_level_select_screen.js.map +1 -1
  467. package/build/screens/conversation_screen.d.ts +3 -2
  468. package/build/screens/conversation_screen.d.ts.map +1 -1
  469. package/build/screens/conversation_screen.js +66 -25
  470. package/build/screens/conversation_screen.js.map +1 -1
  471. package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts +1 -1
  472. package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts.map +1 -1
  473. package/build/screens/conversation_select_recipients/components/groups_recipient_row.js +1 -2
  474. package/build/screens/conversation_select_recipients/components/groups_recipient_row.js.map +1 -1
  475. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts +2 -1
  476. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts.map +1 -1
  477. package/build/screens/conversation_select_recipients/components/recipient_link_row.js +15 -2
  478. package/build/screens/conversation_select_recipients/components/recipient_link_row.js.map +1 -1
  479. package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts +2 -1
  480. package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts.map +1 -1
  481. package/build/screens/conversation_select_recipients/components/restricted_group_row.js +14 -2
  482. package/build/screens/conversation_select_recipients/components/restricted_group_row.js.map +1 -1
  483. package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts +1 -1
  484. package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts.map +1 -1
  485. package/build/screens/conversation_select_recipients/components/team_recipient_row.js +1 -2
  486. package/build/screens/conversation_select_recipients/components/team_recipient_row.js.map +1 -1
  487. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts +1 -1
  488. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts.map +1 -1
  489. package/build/screens/conversation_select_recipients/components/view_more_link_row.js +5 -2
  490. package/build/screens/conversation_select_recipients/components/view_more_link_row.js.map +1 -1
  491. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts +2 -1
  492. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts.map +1 -1
  493. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js +11 -4
  494. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js.map +1 -1
  495. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts +1 -1
  496. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts.map +1 -1
  497. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js +83 -11
  498. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js.map +1 -1
  499. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts +2 -1
  500. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts.map +1 -1
  501. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js +14 -7
  502. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js.map +1 -1
  503. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts +2 -1
  504. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts.map +1 -1
  505. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js +18 -15
  506. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js.map +1 -1
  507. package/build/screens/conversation_select_type_screen.d.ts +2 -1
  508. package/build/screens/conversation_select_type_screen.d.ts.map +1 -1
  509. package/build/screens/conversation_select_type_screen.js +10 -3
  510. package/build/screens/conversation_select_type_screen.js.map +1 -1
  511. package/build/screens/conversations/components/chat_group_badge.d.ts +2 -1
  512. package/build/screens/conversations/components/chat_group_badge.d.ts.map +1 -1
  513. package/build/screens/conversations/components/chat_group_badge.js +4 -3
  514. package/build/screens/conversations/components/chat_group_badge.js.map +1 -1
  515. package/build/screens/conversations/components/list_header_action_button.d.ts +2 -1
  516. package/build/screens/conversations/components/list_header_action_button.d.ts.map +1 -1
  517. package/build/screens/conversations/components/list_header_action_button.js +5 -3
  518. package/build/screens/conversations/components/list_header_action_button.js.map +1 -1
  519. package/build/screens/conversations/components/list_header_component.d.ts +2 -1
  520. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  521. package/build/screens/conversations/components/list_header_component.js +42 -19
  522. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  523. package/build/screens/conversations/conversations_screen.d.ts +2 -1
  524. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  525. package/build/screens/conversations/conversations_screen.js +6 -2
  526. package/build/screens/conversations/conversations_screen.js.map +1 -1
  527. package/build/screens/design_system_screen.d.ts +2 -1
  528. package/build/screens/design_system_screen.d.ts.map +1 -1
  529. package/build/screens/design_system_screen.js +558 -35
  530. package/build/screens/design_system_screen.js.map +1 -1
  531. package/build/screens/get_help_screen.d.ts +1 -1
  532. package/build/screens/get_help_screen.d.ts.map +1 -1
  533. package/build/screens/get_help_screen.js +25 -4
  534. package/build/screens/get_help_screen.js.map +1 -1
  535. package/build/screens/group_notification_level_select_screen.d.ts +2 -1
  536. package/build/screens/group_notification_level_select_screen.d.ts.map +1 -1
  537. package/build/screens/group_notification_level_select_screen.js +4 -2
  538. package/build/screens/group_notification_level_select_screen.js.map +1 -1
  539. package/build/screens/group_notification_settings_screen.d.ts +2 -1
  540. package/build/screens/group_notification_settings_screen.d.ts.map +1 -1
  541. package/build/screens/group_notification_settings_screen.js +25 -3
  542. package/build/screens/group_notification_settings_screen.js.map +1 -1
  543. package/build/screens/message_actions_screen.d.ts +2 -1
  544. package/build/screens/message_actions_screen.d.ts.map +1 -1
  545. package/build/screens/message_actions_screen.js +28 -12
  546. package/build/screens/message_actions_screen.js.map +1 -1
  547. package/build/screens/message_report/components/message_preview.d.ts +2 -1
  548. package/build/screens/message_report/components/message_preview.d.ts.map +1 -1
  549. package/build/screens/message_report/components/message_preview.js +22 -2
  550. package/build/screens/message_report/components/message_preview.js.map +1 -1
  551. package/build/screens/message_report/components/report_reason_list.d.ts +2 -1
  552. package/build/screens/message_report/components/report_reason_list.d.ts.map +1 -1
  553. package/build/screens/message_report/components/report_reason_list.js +13 -4
  554. package/build/screens/message_report/components/report_reason_list.js.map +1 -1
  555. package/build/screens/message_report_screen.d.ts +2 -1
  556. package/build/screens/message_report_screen.d.ts.map +1 -1
  557. package/build/screens/message_report_screen.js +61 -9
  558. package/build/screens/message_report_screen.js.map +1 -1
  559. package/build/screens/not_found.d.ts +2 -1
  560. package/build/screens/not_found.d.ts.map +1 -1
  561. package/build/screens/not_found.js +5 -2
  562. package/build/screens/not_found.js.map +1 -1
  563. package/build/screens/notification_settings/hooks/groups.d.ts +1 -1
  564. package/build/screens/notification_settings/hooks/groups.d.ts.map +1 -1
  565. package/build/screens/notification_settings_screen.d.ts +2 -1
  566. package/build/screens/notification_settings_screen.d.ts.map +1 -1
  567. package/build/screens/notification_settings_screen.js +66 -28
  568. package/build/screens/notification_settings_screen.js.map +1 -1
  569. package/build/screens/preferred_app_selection_screen.d.ts +2 -1
  570. package/build/screens/preferred_app_selection_screen.d.ts.map +1 -1
  571. package/build/screens/preferred_app_selection_screen.js +21 -3
  572. package/build/screens/preferred_app_selection_screen.js.map +1 -1
  573. package/build/screens/reactions_screen.d.ts +2 -1
  574. package/build/screens/reactions_screen.d.ts.map +1 -1
  575. package/build/screens/reactions_screen.js +19 -7
  576. package/build/screens/reactions_screen.js.map +1 -1
  577. package/build/screens/send_giphy_screen.d.ts +2 -1
  578. package/build/screens/send_giphy_screen.d.ts.map +1 -1
  579. package/build/screens/send_giphy_screen.js +31 -5
  580. package/build/screens/send_giphy_screen.js.map +1 -1
  581. package/build/screens/settings_screen.d.ts +2 -1
  582. package/build/screens/settings_screen.d.ts.map +1 -1
  583. package/build/screens/settings_screen.js +26 -4
  584. package/build/screens/settings_screen.js.map +1 -1
  585. package/build/screens/system_message_people_screen.d.ts +2 -1
  586. package/build/screens/system_message_people_screen.d.ts.map +1 -1
  587. package/build/screens/system_message_people_screen.js +10 -4
  588. package/build/screens/system_message_people_screen.js.map +1 -1
  589. package/build/screens/team_conversation_screen.d.ts +1 -1
  590. package/build/screens/team_conversation_screen.d.ts.map +1 -1
  591. package/build/screens/team_conversation_screen.js +12 -4
  592. package/build/screens/team_conversation_screen.js.map +1 -1
  593. package/build/types/resources/conversation.d.ts +10 -1
  594. package/build/types/resources/conversation.d.ts.map +1 -1
  595. package/build/types/resources/conversation.js.map +1 -1
  596. package/build/utils/request/conversation.d.ts.map +1 -1
  597. package/build/utils/request/conversation.js +2 -0
  598. package/build/utils/request/conversation.js.map +1 -1
  599. package/build/utils/response_error.d.ts.map +1 -1
  600. package/build/utils/response_error.js +16 -6
  601. package/build/utils/response_error.js.map +1 -1
  602. package/build/utils/sha_256.js.map +1 -1
  603. package/build/utils/system_messages.d.ts +1 -1
  604. package/build/utils/system_messages.d.ts.map +1 -1
  605. package/build/utils/system_messages.js.map +1 -1
  606. package/build/utils/theme.d.ts +2 -2
  607. package/build/utils/theme.d.ts.map +1 -1
  608. package/build/utils/theme.js.map +1 -1
  609. package/package.json +12 -12
  610. package/src/__tests__/hooks/use_attachment_uploader.test.tsx +0 -1
  611. package/src/__tests__/hooks/use_font_scale.test.ts +3 -7
  612. package/src/__tests__/utils/native_adapters/configuration.ts +1 -1
  613. package/src/__tests__/utils/system_messages.ts +1 -1
  614. package/src/__tests__/utils/uri.ts +50 -8
  615. package/src/__utils__/handlers.ts +6 -5
  616. package/src/components/conversation/attachments/attachment_deleting_overlay.tsx +3 -10
  617. package/src/components/conversations/conversation_preview.tsx +58 -23
  618. package/src/components/conversations/unread_count_badge.tsx +13 -4
  619. package/src/components/page/__tests__/component_error_boundary.test.tsx +1 -1
  620. package/src/components/page/__tests__/error_boundary.test.tsx +2 -6
  621. package/src/components/page/__tests__/page_error_boundary.test.tsx +1 -1
  622. package/src/hooks/use_conversation.ts +2 -0
  623. package/src/hooks/use_conversation_jolt_events.ts +3 -19
  624. package/src/hooks/use_conversation_messages.ts +5 -6
  625. package/src/hooks/use_conversations_actions.ts +3 -1
  626. package/src/hooks/use_mark_latest_message_read.ts +3 -4
  627. package/src/index.tsx +1 -2
  628. package/src/polyfills/events/EventTarget.ts +1 -1
  629. package/src/screens/conversation_screen.tsx +2 -4
  630. package/src/screens/conversations/components/list_header_component.tsx +6 -6
  631. package/src/types/resources/conversation.ts +11 -1
  632. package/src/utils/__tests__/response_error.test.ts +7 -0
  633. package/src/utils/request/conversation.ts +2 -0
  634. package/src/utils/response_error.ts +18 -7
  635. package/src/utils/sha_256.ts +24 -24
  636. package/src/utils/system_messages.ts +1 -1
  637. package/src/utils/theme.ts +2 -3
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  import { FontAwesomeIcon } from '@fortawesome/react-native-fontawesome';
3
- import { useState } from 'react';
2
+ import React, { useState } from 'react';
4
3
  import { Alert, Pressable, ScrollView, StyleSheet, View } from 'react-native';
5
4
  import { Avatar, AvatarGroup, Badge, Banner, BannerCollapsible, Button, ConversationAvatar, EmojiAvatar, IconAvatar, ToggleButton, Heading, Icon, IconButton, Image, Person, Spinner, Switch, Text, TextButton, TextInlineButton, ImageAttachmentPreview, } from '../components/display';
6
5
  import { VideoAttachmentPreview } from '../components/display/video_attachment_preview';
@@ -53,51 +52,524 @@ const buttonPress = () => Alert.alert('Button clicked');
53
52
  // =================================
54
53
  export function DesignSystemScreen() {
55
54
  const styles = useStyles();
56
- return (_jsxs(ScrollView, { contentContainerStyle: styles.container, style: styles.scrollView, children: [_jsx(ThemeSection, {}), _jsx(IndicatorsSection, {}), _jsx(HeadingTextSection, {}), _jsx(PressablesSection, {}), _jsx(HapticsSection, {}), _jsx(ImageIconsSection, {}), _jsx(FormControlsSection, {}), _jsx(StatusComponentsSection, {}), _jsx(FontAwesomeIconsSection, {}), _jsx(MiscComponentsSection, { isLast: true })] }));
55
+ return (<ScrollView contentContainerStyle={styles.container} style={styles.scrollView}>
56
+ <ThemeSection />
57
+ <IndicatorsSection />
58
+ <HeadingTextSection />
59
+ <PressablesSection />
60
+ <HapticsSection />
61
+ <ImageIconsSection />
62
+ <FormControlsSection />
63
+ <StatusComponentsSection />
64
+ <FontAwesomeIconsSection />
65
+ <MiscComponentsSection isLast/>
66
+ </ScrollView>);
57
67
  }
58
68
  function ThemeSection({ isLast }) {
59
- return (_jsx(CollapsableSection, { title: "Theme", isLast: isLast, children: _jsxs(TextGroup, { children: [_jsx(Text, { children: "There are four main parts to our theming system\u2026" }), _jsxs(TextRow, { children: [_jsx(Heading, { variant: "h3", children: "Default theme" }), _jsx(Text, { children: "Start at `src/utils/theme` when adding new theme values or checking what target apps have access to. The file has more instructions and examples." }), _jsx(Text, { children: "At a high level, it provides\u2026" }), _jsx(TextListItem, { label: "1.", children: "Access to consuming app targets of what theme values that they can be customized." }), _jsx(TextListItem, { label: "2.", children: "Fallback values for our components to use if the values weren't overriden." })] }), _jsxs(TextRow, { children: [_jsx(Heading, { variant: "h3", children: "Customizing the theme" }), _jsx(Text, { children: "Apps can override any default theme value by passing a `theme` object to our `ChatProvider` that holds a `theme` and a `colorScheme`." }), _jsx(Text, { children: "Currently types can be enforced by setting the parent theme object to `CreateChatThemeProps`." }), _jsx(Text, { variant: "footnote", children: "Example setup: `apps/sandbox/src/context/chat_context_provider.tsx`" })] }), _jsxs(TextRow, { children: [_jsx(Heading, { variant: "h3", children: "Merged theme" }), _jsx(Text, { children: "In `src/contexts/chat_context.tsx` we merge the default theme and any custom values coming from a product target with the `useCreateChatTheme` hook. It creates a single `ChatTheme` type." })] }), _jsxs(TextRow, { children: [_jsx(Heading, { variant: "h3", children: "Using theme values" }), _jsx(Text, { children: "Inside of our own `chat-react-native` components we can access the merged `ChatTheme` object via our own `useTheme` hook." }), _jsx(Text, { variant: "footnote", children: "Example setup: `src/components/display/button.tsx`" })] })] }) }));
69
+ return (<CollapsableSection title="Theme" isLast={isLast}>
70
+ <TextGroup>
71
+ <Text>There are four main parts to our theming system…</Text>
72
+ <TextRow>
73
+ <Heading variant="h3">Default theme</Heading>
74
+ <Text>
75
+ Start at `src/utils/theme` when adding new theme values or checking what target apps
76
+ have access to. The file has more instructions and examples.
77
+ </Text>
78
+ <Text>At a high level, it provides…</Text>
79
+ <TextListItem label="1.">
80
+ Access to consuming app targets of what theme values that they can be customized.
81
+ </TextListItem>
82
+ <TextListItem label="2.">
83
+ Fallback values for our components to use if the values weren't overriden.
84
+ </TextListItem>
85
+ </TextRow>
86
+ <TextRow>
87
+ <Heading variant="h3">Customizing the theme</Heading>
88
+ <Text>
89
+ Apps can override any default theme value by passing a `theme` object to our
90
+ `ChatProvider` that holds a `theme` and a `colorScheme`.
91
+ </Text>
92
+ <Text>
93
+ Currently types can be enforced by setting the parent theme object to
94
+ `CreateChatThemeProps`.
95
+ </Text>
96
+ <Text variant="footnote">
97
+ Example setup: `apps/sandbox/src/context/chat_context_provider.tsx`
98
+ </Text>
99
+ </TextRow>
100
+ <TextRow>
101
+ <Heading variant="h3">Merged theme</Heading>
102
+ <Text>
103
+ In `src/contexts/chat_context.tsx` we merge the default theme and any custom values
104
+ coming from a product target with the `useCreateChatTheme` hook. It creates a single
105
+ `ChatTheme` type.
106
+ </Text>
107
+ </TextRow>
108
+ <TextRow>
109
+ <Heading variant="h3">Using theme values</Heading>
110
+ <Text>
111
+ Inside of our own `chat-react-native` components we can access the merged `ChatTheme`
112
+ object via our own `useTheme` hook.
113
+ </Text>
114
+ <Text variant="footnote">Example setup: `src/components/display/button.tsx`</Text>
115
+ </TextRow>
116
+ </TextGroup>
117
+ </CollapsableSection>);
60
118
  }
61
119
  function IndicatorsSection({ isLast }) {
62
- return (_jsx(CollapsableSection, { title: "Indicators", isLast: isLast, children: _jsx(Group, { title: "Spinner", description: "Loading indicators that can be used within or close to atomic components. Not intended for full-screen loading.", children: _jsx(Row, { children: _jsx(Spinner, { size: 24 }) }) }) }));
120
+ return (<CollapsableSection title="Indicators" isLast={isLast}>
121
+ <Group title="Spinner" description="Loading indicators that can be used within or close to atomic components. Not intended for full-screen loading.">
122
+ <Row>
123
+ <Spinner size={24}/>
124
+ </Row>
125
+ </Group>
126
+ </CollapsableSection>);
63
127
  }
64
128
  function HeadingTextSection({ isLast }) {
65
129
  const styles = useStyles();
66
- return (_jsxs(CollapsableSection, { title: "Heading & Text", isLast: isLast, children: [_jsx(Group, { title: "Heading", description: "Use for headings & titles as it includes the a11y 'header' role. Change the size and style with the h1-h4 variants.", children: _jsxs(Column, { style: styles.columnCenter, children: [_jsx(Heading, { children: "Heading 1" }), _jsx(Heading, { variant: "h2", children: "Heading 2" }), _jsx(Heading, { variant: "h3", children: "Heading 3" }), _jsx(Heading, { variant: "h4", children: "Heading 4" })] }) }), _jsx(Group, { title: "Text", description: "Use for body copy and supporting text.", children: _jsxs(Column, { style: styles.columnCenter, children: [_jsx(Text, { children: "Plain text" }), _jsx(Text, { variant: "secondary", children: "Secondary" }), _jsx(Text, { variant: "tertiary", children: "Tertiary" }), _jsx(Text, { variant: "footnote", children: "Footnote" })] }) })] }));
130
+ return (<CollapsableSection title="Heading & Text" isLast={isLast}>
131
+ <Group title="Heading" description="Use for headings & titles as it includes the a11y 'header' role. Change the size and style with the h1-h4 variants.">
132
+ <Column style={styles.columnCenter}>
133
+ <Heading>Heading 1</Heading>
134
+ <Heading variant="h2">Heading 2</Heading>
135
+ <Heading variant="h3">Heading 3</Heading>
136
+ <Heading variant="h4">Heading 4</Heading>
137
+ </Column>
138
+ </Group>
139
+ <Group title="Text" description="Use for body copy and supporting text.">
140
+ <Column style={styles.columnCenter}>
141
+ <Text>Plain text</Text>
142
+ <Text variant="secondary">Secondary</Text>
143
+ <Text variant="tertiary">Tertiary</Text>
144
+ <Text variant="footnote">Footnote</Text>
145
+ </Column>
146
+ </Group>
147
+ </CollapsableSection>);
67
148
  }
68
149
  function PressablesSection({ isLast }) {
69
150
  const styles = useStyles();
70
151
  const [filterSelected, setFilterSelected] = useState('Groups');
71
- return (_jsxs(CollapsableSection, { title: "Pressables", isLast: isLast, children: [_jsxs(Group, { title: "Button", description: "Feature fill and outline variants for primary and danger usecases, along with disabled & loading states. Optionally shows icons to the left and right of the text.", children: [_jsxs(Row, { children: [_jsx(Button, { onPress: buttonPress, title: "Default", size: "sm" }), _jsx(Button, { onPress: buttonPress, title: "Default", size: "md" }), _jsx(Button, { onPress: buttonPress, title: "Danger", appearance: "danger", size: "lg" })] }), _jsxs(Row, { children: [_jsx(Button, { disabled: true, onPress: buttonPress, title: "Disabled", size: "sm" }), _jsx(Button, { disabled: true, onPress: buttonPress, title: "Disabled", size: "md" }), _jsx(Button, { disabled: true, onPress: buttonPress, title: "Disabled", appearance: "danger", size: "lg" })] }), _jsxs(Row, { children: [_jsx(Button, { onPress: buttonPress, title: "Default", size: "sm", iconNameLeft: "general.plus", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { onPress: buttonPress, title: "Default", size: "md", iconNameRight: "churchCenter.sort", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { onPress: buttonPress, title: "Danger", appearance: "danger", size: "lg", iconNameLeft: "groups.cards", iconNameRight: "general.downChevron", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })] }), _jsxs(Row, { children: [_jsx(Button, { loading: true, onPress: buttonPress, title: "Default", size: "sm" }), _jsx(Button, { loading: true, onPress: buttonPress, title: "Default", size: "md" }), _jsx(Button, { loading: true, onPress: buttonPress, title: "Danger", appearance: "danger", size: "lg" })] }), _jsxs(Row, { children: [_jsx(Button, { onPress: buttonPress, title: "Default", size: "sm", variant: "outline" }), _jsx(Button, { onPress: buttonPress, title: "Default", size: "md", variant: "outline" }), _jsx(Button, { onPress: buttonPress, title: "Danger", appearance: "danger", size: "lg", variant: "outline" })] }), _jsxs(Row, { children: [_jsx(Button, { onPress: buttonPress, title: "Default", size: "sm", variant: "outline", iconNameLeft: "general.plus", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { onPress: buttonPress, title: "Default", size: "md", variant: "outline", iconNameRight: "churchCenter.sort", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { onPress: buttonPress, title: "Danger", appearance: "danger", size: "lg", variant: "outline", iconNameLeft: "groups.cards", iconNameRight: "general.downChevron", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })] }), _jsxs(Row, { children: [_jsx(Button, { disabled: true, onPress: buttonPress, title: "Disabled", size: "sm", variant: "outline", iconNameLeft: "general.plus", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { disabled: true, onPress: buttonPress, title: "Disabled", size: "md", variant: "outline", iconNameRight: "churchCenter.sort", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { disabled: true, onPress: buttonPress, title: "Disabled", appearance: "danger", size: "lg", variant: "outline", iconNameLeft: "groups.cards", iconNameRight: "general.downChevron", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })] }), _jsxs(Row, { children: [_jsx(Button, { loading: true, onPress: buttonPress, title: "Default", size: "sm", variant: "outline", iconNameLeft: "general.plus", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { loading: true, onPress: buttonPress, title: "Default", size: "md", variant: "outline", iconNameRight: "churchCenter.sort", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER }), _jsx(Button, { loading: true, onPress: buttonPress, title: "Danger", appearance: "danger", size: "lg", variant: "outline", iconNameLeft: "groups.cards", iconNameRight: "general.downChevron", maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })] })] }), _jsx(Group, { title: "ToggleButton", description: "Button with active and deactive states. Supports right & left icons, along with standard pressable props.", children: _jsxs(Row, { children: [_jsx(ToggleButton, { onPress: () => setFilterSelected('Groups'), title: "Groups", active: filterSelected === 'Groups', accessibilityLabel: "Filter to group conversations" }), _jsx(ToggleButton, { onPress: () => setFilterSelected('Teams'), title: "Teams", active: filterSelected === 'Teams', accessibilityLabel: "Filter to team conversations" }), _jsx(ToggleButton, { onPress: () => setFilterSelected('More'), title: "More", active: filterSelected === 'More', iconNameRight: "general.threeReducingHorizontalBars", accessibilityLabel: "View more filters" })] }) }), _jsxs(Group, { title: "IconButton", description: "Supports different appearances, sizes, along with loading & disabled states. Use `iconStyle` for custom colors and font sizes. Requires `accessibilityLabel` as icon's don't provide context to screen readers.", children: [_jsxs(Row, { children: [_jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", size: "md" }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", appearance: "danger", size: "lg" }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", appearance: "interaction", size: "xl" }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", iconStyle: styles.customIconButtonColor, size: "xxl" }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", size: "xxxl" })] }), _jsxs(Row, { children: [_jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", size: "md", disabled: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", appearance: "danger", size: "lg", disabled: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", appearance: "interaction", size: "xl", disabled: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", iconStyle: styles.customIconButtonColor, size: "xxl", disabled: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", size: "xxxl", disabled: true })] }), _jsxs(Row, { children: [_jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", size: "md", loading: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", appearance: "danger", size: "lg", loading: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", appearance: "interaction", size: "xl", loading: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", iconStyle: styles.customIconButtonColor, size: "xxl", loading: true }), _jsx(IconButton, { onPress: buttonPress, name: "general.paperclip", accessibilityLabel: "Add attachment", accessibilityHint: "Opens your device's image gallary", size: "xxxl", loading: true })] })] }), _jsxs(Group, { title: "TextButton", description: "Pressable text with default & danger appearance options. Can be disabled and accept `Text` variance props.", children: [_jsxs(Row, { children: [_jsx(TextButton, { onPress: buttonPress, children: "Default" }), _jsx(TextButton, { onPress: buttonPress, variant: "secondary", children: "Default" }), _jsx(TextButton, { onPress: buttonPress, variant: "tertiary", children: "Default" }), _jsx(TextButton, { onPress: buttonPress, variant: "footnote", children: "Default" })] }), _jsxs(Row, { children: [_jsx(TextButton, { onPress: buttonPress, appearance: "danger", children: "Danger" }), _jsx(TextButton, { onPress: buttonPress, variant: "secondary", appearance: "danger", children: "Danger" }), _jsx(TextButton, { onPress: buttonPress, variant: "tertiary", appearance: "danger", children: "Danger" }), _jsx(TextButton, { onPress: buttonPress, variant: "footnote", appearance: "danger", children: "Danger" })] }), _jsxs(Row, { children: [_jsx(TextButton, { onPress: buttonPress, disabled: true, children: "Disabled" }), _jsx(TextButton, { onPress: buttonPress, variant: "secondary", disabled: true, children: "Disabled" }), _jsx(TextButton, { onPress: buttonPress, variant: "tertiary", disabled: true, children: "Disabled" }), _jsx(TextButton, { onPress: buttonPress, variant: "footnote", disabled: true, children: "Disabled" })] })] }), _jsx(Group, { title: "TextInlineButton", description: "Supports nesting within `Text`. Temporary component until React Native fixes a layout bug in `Pressable` which used in `TextButton`.", children: _jsxs(Row, { style: styles.alignRowLeft, children: [_jsxs(Text, { children: ["This text is next to", ' ', _jsx(TextInlineButton, { onPress: buttonPress, children: "default button text" }), " Lorem ipsum dolor", ' ', _jsx(TextInlineButton, { onPress: buttonPress, appearance: "danger", children: "danger button text" }), ' ', "consectetur", ' ', _jsx(TextInlineButton, { onPress: buttonPress, disabled: true, children: "disabled button text" }), ' ', "elit."] }), _jsxs(Text, { variant: "secondary", children: ["This text is next to", ' ', _jsx(TextInlineButton, { variant: "secondary", onPress: buttonPress, children: "default button text" }), ' ', "Lorem ipsum dolor", ' ', _jsx(TextInlineButton, { variant: "secondary", onPress: buttonPress, appearance: "danger", children: "danger button text" }), ' ', "consectetur", ' ', _jsx(TextInlineButton, { variant: "secondary", onPress: buttonPress, disabled: true, children: "disabled button text" }), ' ', "elit."] }), _jsxs(Text, { variant: "tertiary", children: ["This text is next to", ' ', _jsx(TextInlineButton, { variant: "tertiary", onPress: buttonPress, children: "default button text" }), ' ', "Lorem ipsum dolor", ' ', _jsx(TextInlineButton, { variant: "tertiary", onPress: buttonPress, appearance: "danger", children: "danger button text" }), ' ', "consectetur", ' ', _jsx(TextInlineButton, { variant: "tertiary", onPress: buttonPress, disabled: true, children: "disabled button text" }), ' ', "elit."] }), _jsxs(Text, { variant: "footnote", children: ["This text is next to", ' ', _jsx(TextInlineButton, { variant: "footnote", onPress: buttonPress, children: "default button text" }), ' ', "Lorem ipsum dolor", ' ', _jsx(TextInlineButton, { variant: "footnote", onPress: buttonPress, appearance: "danger", children: "danger button text" }), ' ', "consectetur", ' ', _jsx(TextInlineButton, { variant: "footnote", onPress: buttonPress, disabled: true, children: "disabled button text" }), ' ', "elit."] })] }) })] }));
152
+ return (<CollapsableSection title="Pressables" isLast={isLast}>
153
+ <Group title="Button" description="Feature fill and outline variants for primary and danger usecases, along with disabled & loading states. Optionally shows icons to the left and right of the text.">
154
+ <Row>
155
+ <Button onPress={buttonPress} title="Default" size="sm"/>
156
+ <Button onPress={buttonPress} title="Default" size="md"/>
157
+ <Button onPress={buttonPress} title="Danger" appearance="danger" size="lg"/>
158
+ </Row>
159
+ <Row>
160
+ <Button disabled onPress={buttonPress} title="Disabled" size="sm"/>
161
+ <Button disabled onPress={buttonPress} title="Disabled" size="md"/>
162
+ <Button disabled onPress={buttonPress} title="Disabled" appearance="danger" size="lg"/>
163
+ </Row>
164
+ <Row>
165
+ <Button onPress={buttonPress} title="Default" size="sm" iconNameLeft="general.plus" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
166
+ <Button onPress={buttonPress} title="Default" size="md" iconNameRight="churchCenter.sort" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
167
+ <Button onPress={buttonPress} title="Danger" appearance="danger" size="lg" iconNameLeft="groups.cards" iconNameRight="general.downChevron" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
168
+ </Row>
169
+ <Row>
170
+ <Button loading onPress={buttonPress} title="Default" size="sm"/>
171
+ <Button loading onPress={buttonPress} title="Default" size="md"/>
172
+ <Button loading onPress={buttonPress} title="Danger" appearance="danger" size="lg"/>
173
+ </Row>
174
+ <Row>
175
+ <Button onPress={buttonPress} title="Default" size="sm" variant="outline"/>
176
+ <Button onPress={buttonPress} title="Default" size="md" variant="outline"/>
177
+ <Button onPress={buttonPress} title="Danger" appearance="danger" size="lg" variant="outline"/>
178
+ </Row>
179
+ <Row>
180
+ <Button onPress={buttonPress} title="Default" size="sm" variant="outline" iconNameLeft="general.plus" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
181
+ <Button onPress={buttonPress} title="Default" size="md" variant="outline" iconNameRight="churchCenter.sort" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
182
+ <Button onPress={buttonPress} title="Danger" appearance="danger" size="lg" variant="outline" iconNameLeft="groups.cards" iconNameRight="general.downChevron" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
183
+ </Row>
184
+ <Row>
185
+ <Button disabled onPress={buttonPress} title="Disabled" size="sm" variant="outline" iconNameLeft="general.plus" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
186
+ <Button disabled onPress={buttonPress} title="Disabled" size="md" variant="outline" iconNameRight="churchCenter.sort" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
187
+ <Button disabled onPress={buttonPress} title="Disabled" appearance="danger" size="lg" variant="outline" iconNameLeft="groups.cards" iconNameRight="general.downChevron" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
188
+ </Row>
189
+ <Row>
190
+ <Button loading onPress={buttonPress} title="Default" size="sm" variant="outline" iconNameLeft="general.plus" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
191
+ <Button loading onPress={buttonPress} title="Default" size="md" variant="outline" iconNameRight="churchCenter.sort" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
192
+ <Button loading onPress={buttonPress} title="Danger" appearance="danger" size="lg" variant="outline" iconNameLeft="groups.cards" iconNameRight="general.downChevron" maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER}/>
193
+ </Row>
194
+ </Group>
195
+ <Group title="ToggleButton" description="Button with active and deactive states. Supports right & left icons, along with standard pressable props.">
196
+ <Row>
197
+ <ToggleButton onPress={() => setFilterSelected('Groups')} title="Groups" active={filterSelected === 'Groups'} accessibilityLabel="Filter to group conversations"/>
198
+ <ToggleButton onPress={() => setFilterSelected('Teams')} title="Teams" active={filterSelected === 'Teams'} accessibilityLabel="Filter to team conversations"/>
199
+ <ToggleButton onPress={() => setFilterSelected('More')} title="More" active={filterSelected === 'More'} iconNameRight="general.threeReducingHorizontalBars" accessibilityLabel="View more filters"/>
200
+ </Row>
201
+ </Group>
202
+ <Group title="IconButton" description="Supports different appearances, sizes, along with loading & disabled states. Use `iconStyle` for custom colors and font sizes. Requires `accessibilityLabel` as icon's don't provide context to screen readers.">
203
+ <Row>
204
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" size="md"/>
205
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" appearance="danger" size="lg"/>
206
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" appearance="interaction" size="xl"/>
207
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" iconStyle={styles.customIconButtonColor} size="xxl"/>
208
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" size="xxxl"/>
209
+ </Row>
210
+ <Row>
211
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" size="md" disabled/>
212
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" appearance="danger" size="lg" disabled/>
213
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" appearance="interaction" size="xl" disabled/>
214
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" iconStyle={styles.customIconButtonColor} size="xxl" disabled/>
215
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" size="xxxl" disabled/>
216
+ </Row>
217
+ <Row>
218
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" size="md" loading/>
219
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" appearance="danger" size="lg" loading/>
220
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" appearance="interaction" size="xl" loading/>
221
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" iconStyle={styles.customIconButtonColor} size="xxl" loading/>
222
+ <IconButton onPress={buttonPress} name="general.paperclip" accessibilityLabel="Add attachment" accessibilityHint="Opens your device's image gallary" size="xxxl" loading/>
223
+ </Row>
224
+ </Group>
225
+ <Group title="TextButton" description="Pressable text with default & danger appearance options. Can be disabled and accept `Text` variance props.">
226
+ <Row>
227
+ <TextButton onPress={buttonPress}>Default</TextButton>
228
+ <TextButton onPress={buttonPress} variant="secondary">
229
+ Default
230
+ </TextButton>
231
+ <TextButton onPress={buttonPress} variant="tertiary">
232
+ Default
233
+ </TextButton>
234
+ <TextButton onPress={buttonPress} variant="footnote">
235
+ Default
236
+ </TextButton>
237
+ </Row>
238
+ <Row>
239
+ <TextButton onPress={buttonPress} appearance="danger">
240
+ Danger
241
+ </TextButton>
242
+ <TextButton onPress={buttonPress} variant="secondary" appearance="danger">
243
+ Danger
244
+ </TextButton>
245
+ <TextButton onPress={buttonPress} variant="tertiary" appearance="danger">
246
+ Danger
247
+ </TextButton>
248
+ <TextButton onPress={buttonPress} variant="footnote" appearance="danger">
249
+ Danger
250
+ </TextButton>
251
+ </Row>
252
+ <Row>
253
+ <TextButton onPress={buttonPress} disabled>
254
+ Disabled
255
+ </TextButton>
256
+ <TextButton onPress={buttonPress} variant="secondary" disabled>
257
+ Disabled
258
+ </TextButton>
259
+ <TextButton onPress={buttonPress} variant="tertiary" disabled>
260
+ Disabled
261
+ </TextButton>
262
+ <TextButton onPress={buttonPress} variant="footnote" disabled>
263
+ Disabled
264
+ </TextButton>
265
+ </Row>
266
+ </Group>
267
+ <Group title="TextInlineButton" description="Supports nesting within `Text`. Temporary component until React Native fixes a layout bug in `Pressable` which used in `TextButton`.">
268
+ <Row style={styles.alignRowLeft}>
269
+ <Text>
270
+ This text is next to{' '}
271
+ <TextInlineButton onPress={buttonPress}>default button text</TextInlineButton> Lorem
272
+ ipsum dolor{' '}
273
+ <TextInlineButton onPress={buttonPress} appearance="danger">
274
+ danger button text
275
+ </TextInlineButton>{' '}
276
+ consectetur{' '}
277
+ <TextInlineButton onPress={buttonPress} disabled>
278
+ disabled button text
279
+ </TextInlineButton>{' '}
280
+ elit.
281
+ </Text>
282
+ <Text variant="secondary">
283
+ This text is next to{' '}
284
+ <TextInlineButton variant="secondary" onPress={buttonPress}>
285
+ default button text
286
+ </TextInlineButton>{' '}
287
+ Lorem ipsum dolor{' '}
288
+ <TextInlineButton variant="secondary" onPress={buttonPress} appearance="danger">
289
+ danger button text
290
+ </TextInlineButton>{' '}
291
+ consectetur{' '}
292
+ <TextInlineButton variant="secondary" onPress={buttonPress} disabled>
293
+ disabled button text
294
+ </TextInlineButton>{' '}
295
+ elit.
296
+ </Text>
297
+ <Text variant="tertiary">
298
+ This text is next to{' '}
299
+ <TextInlineButton variant="tertiary" onPress={buttonPress}>
300
+ default button text
301
+ </TextInlineButton>{' '}
302
+ Lorem ipsum dolor{' '}
303
+ <TextInlineButton variant="tertiary" onPress={buttonPress} appearance="danger">
304
+ danger button text
305
+ </TextInlineButton>{' '}
306
+ consectetur{' '}
307
+ <TextInlineButton variant="tertiary" onPress={buttonPress} disabled>
308
+ disabled button text
309
+ </TextInlineButton>{' '}
310
+ elit.
311
+ </Text>
312
+ <Text variant="footnote">
313
+ This text is next to{' '}
314
+ <TextInlineButton variant="footnote" onPress={buttonPress}>
315
+ default button text
316
+ </TextInlineButton>{' '}
317
+ Lorem ipsum dolor{' '}
318
+ <TextInlineButton variant="footnote" onPress={buttonPress} appearance="danger">
319
+ danger button text
320
+ </TextInlineButton>{' '}
321
+ consectetur{' '}
322
+ <TextInlineButton variant="footnote" onPress={buttonPress} disabled>
323
+ disabled button text
324
+ </TextInlineButton>{' '}
325
+ elit.
326
+ </Text>
327
+ </Row>
328
+ </Group>
329
+ </CollapsableSection>);
72
330
  }
73
331
  function HapticsSection({ isLast }) {
74
- return (_jsxs(CollapsableSection, { title: "Haptics", isLast: isLast, children: [_jsx(TextGroup, { children: _jsx(Text, { children: "Haptics help communicate changes and interactions in the UI by making them feel physical and \"weighty\". They are a progressive enhancement and shouldn't replace visual feedback." }) }), _jsx(Group, { title: "Impact", description: "Communicates that a user interaction is occurring.", children: _jsxs(Row, { children: [_jsx(HapticButton, { title: "Impact Light", onPress: () => Haptic.impactLight() }), _jsx(HapticButton, { title: "Impact Medium", onPress: () => Haptic.impactMedium() }), _jsx(HapticButton, { title: "Impact Heavy", onPress: () => Haptic.impactHeavy() }), _jsx(HapticButton, { title: "Rigid", onPress: () => Haptic.rigid() }), _jsx(HapticButton, { title: "Soft", onPress: () => Haptic.soft() })] }) }), _jsx(Group, { title: "Notification", description: "Communicates the result of a user or application action.", children: _jsxs(Row, { children: [_jsx(HapticButton, { title: "Notification Success", onPress: () => Haptic.notificationSuccess() }), _jsx(HapticButton, { title: "Notification Warning", onPress: () => Haptic.notificationWarning() }), _jsx(HapticButton, { title: "Notification Error", onPress: () => Haptic.notificationError() })] }) })] }));
332
+ return (<CollapsableSection title="Haptics" isLast={isLast}>
333
+ <TextGroup>
334
+ <Text>
335
+ Haptics help communicate changes and interactions in the UI by making them feel physical
336
+ and "weighty". They are a progressive enhancement and shouldn't replace visual feedback.
337
+ </Text>
338
+ </TextGroup>
339
+ <Group title="Impact" description="Communicates that a user interaction is occurring.">
340
+ <Row>
341
+ <HapticButton title="Impact Light" onPress={() => Haptic.impactLight()}/>
342
+ <HapticButton title="Impact Medium" onPress={() => Haptic.impactMedium()}/>
343
+ <HapticButton title="Impact Heavy" onPress={() => Haptic.impactHeavy()}/>
344
+ <HapticButton title="Rigid" onPress={() => Haptic.rigid()}/>
345
+ <HapticButton title="Soft" onPress={() => Haptic.soft()}/>
346
+ </Row>
347
+ </Group>
348
+ <Group title="Notification" description="Communicates the result of a user or application action.">
349
+ <Row>
350
+ <HapticButton title="Notification Success" onPress={() => Haptic.notificationSuccess()}/>
351
+ <HapticButton title="Notification Warning" onPress={() => Haptic.notificationWarning()}/>
352
+ <HapticButton title="Notification Error" onPress={() => Haptic.notificationError()}/>
353
+ </Row>
354
+ </Group>
355
+ </CollapsableSection>);
75
356
  }
76
357
  function ImageIconsSection({ isLast }) {
77
358
  const styles = useStyles();
78
359
  const { colors } = useTheme();
79
- return (_jsxs(CollapsableSection, { title: "Images & Icons", isLast: isLast, children: [_jsx(Group, { title: "Image", description: "Foundational way of displaying images. Loading or broken images will fallback to show a spinner. Hide decortive images from screen readers with `alt=''`.", children: _jsxs(Row, { children: [_jsx(Image, { source: { uri: URL.broken }, style: styles.image, alt: "Mountain sunrise" }), _jsx(Image, { source: { uri: URL.image }, style: styles.image, alt: "Mountain sunrise" }), _jsx(Image, { source: { uri: URL.image }, style: styles.image, alt: "" })] }) }), _jsx(Group, { title: "ImageAttachmentPreview", description: "Displays an image attachment in different sizes with a close button. It takes a `fileName` prop that gets passed to the image's `alt` attribute. Can show loading and error states.", children: _jsxs(Row, { children: [_jsx(ImageAttachmentPreview, { size: "sm", uri: URL.image, fileName: "mountains.jpg", onRemovePress: buttonPress }), _jsx(ImageAttachmentPreview, { uri: URL.image, fileName: "mountains.jpg", onRemovePress: buttonPress }), _jsx(ImageAttachmentPreview, { size: "sm", uri: URL.image, fileName: "mountains.jpg", onRemovePress: buttonPress, loading: true, hideRemoveButton: true }), _jsx(ImageAttachmentPreview, { uri: URL.image, fileName: "mountains.jpg", onRemovePress: buttonPress, loading: true, hideRemoveButton: true }), _jsx(ImageAttachmentPreview, { size: "sm", uri: URL.image, fileName: "mountains.jpg", onRemovePress: buttonPress, error: true }), _jsx(ImageAttachmentPreview, { uri: URL.image, fileName: "mountains.jpg", onRemovePress: buttonPress, error: true })] }) }), _jsx(Group, { title: "VideoAttachmentPreview", description: "Displays an video attachment with a close button. It takes a `name` prop, an optional duration, and can show loading and error states.", children: _jsxs(Row, { children: [_jsx(VideoAttachmentPreview, { name: "mountains.mp4", onRemovePress: buttonPress }), _jsx(VideoAttachmentPreview, { name: "mountains.mp4", duration: "1:20", onRemovePress: buttonPress }), _jsx(VideoAttachmentPreview, { name: "mountains.mp4", onRemovePress: buttonPress, loading: true, hideRemoveButton: true }), _jsx(VideoAttachmentPreview, { name: "mountains.mp4", duration: "1:20", onRemovePress: buttonPress, error: true })] }) }), _jsxs(Group, { title: "Avatar", description: 'Displays the profile image for a user in different sizes and has a loading spinner. Can optionally show an online/offline "presence" indicator. Fallback condition and icon are optionally configurable.', children: [_jsxs(Row, { children: [_jsx(Avatar, { sourceUri: URL.broken }), _jsx(Avatar, { size: "md", sourceUri: URL.avatar_fallback }), _jsx(Avatar, { sourceUri: URL.avatar })] }), _jsxs(Row, { children: [_jsx(Avatar, { presence: "offline", sourceUri: URL.broken }), _jsx(Avatar, { presence: "online", size: "md", sourceUri: URL.avatar_fallback }), _jsx(Avatar, { presence: "offline", sourceUri: URL.avatar })] }), _jsxs(Row, { children: [_jsx(Avatar, { sourceUri: "" }), _jsx(Avatar, { sourceUri: "", size: "md" }), _jsx(Avatar, { sourceUri: "", size: "sm" }), _jsx(Avatar, { sourceUri: URL.broken, showFallback: true, fallbackIconName: "general.star", size: "sm" })] })] }), _jsxs(Group, { title: "AvatarGroup", description: "Shows 1-4 images in a grid at different sizes. Loading spinner shows until all images successfully load. Fallback condition and icon are optionally configurable.", children: [_jsxs(Row, { children: [_jsx(AvatarGroup, { sourceUris: [URL.broken] }), _jsx(AvatarGroup, { sourceUris: [URL.broken, URL.broken, ...URL.two_avatars] }), _jsx(AvatarGroup, { sourceUris: [URL.avatar] }), _jsx(AvatarGroup, { sourceUris: URL.two_avatars }), _jsx(AvatarGroup, { sourceUris: URL.three_avatars }), _jsx(AvatarGroup, { sourceUris: URL.four_avatars })] }), _jsxs(Row, { children: [_jsx(AvatarGroup, { sourceUris: [], showFallback: true, fallbackIconName: "general.person" }), _jsx(AvatarGroup, { sourceUris: [], showFallback: true, fallbackIconName: "people.noTextMessage" }), _jsx(AvatarGroup, { sourceUris: [], showFallback: true, fallbackIconName: "general.star", size: "md" }), _jsx(AvatarGroup, { sourceUris: [], showFallback: true, fallbackIconName: "general.heart", size: "sm" })] })] }), _jsxs(Group, { title: "IconAvatar", description: "Renders a FontAwesome icon centered on a gradient background. Used by ConversationAvatar for icon-type custom avatars, and reusable in the avatar picker UI.", children: [_jsxs(Row, { children: [_jsx(IconAvatar, { iconKey: "church", color: "warm-sunset", size: "lg" }), _jsx(IconAvatar, { iconKey: "guitar", color: "cosmic", size: "lg" }), _jsx(IconAvatar, { iconKey: "music", color: "iris", size: "md" }), _jsx(IconAvatar, { iconKey: "dove", color: "rose-teal", size: "sm" }), _jsx(IconAvatar, { iconKey: "cross", color: "gold", size: "xs" })] }), _jsxs(Row, { children: [_jsx(IconAvatar, { iconKey: "church", color: "garden", size: "lg" }), _jsx(IconAvatar, { iconKey: "church", color: "twilight", size: "lg" }), _jsx(IconAvatar, { iconKey: "church", color: "amethyst", size: "lg" }), _jsx(IconAvatar, { iconKey: "church", color: "rainbow", size: "lg" })] })] }), _jsx(Group, { title: "EmojiAvatar", description: "Renders an emoji centered on a gradient background. Used by ConversationAvatar for emoji-type custom avatars.", children: _jsxs(Row, { children: [_jsx(EmojiAvatar, { emoji: "\uD83C\uDF89", color: "warm-sunset", size: "lg" }), _jsx(EmojiAvatar, { emoji: "\uD83D\uDD25", color: "cosmic", size: "lg" }), _jsx(EmojiAvatar, { emoji: "\uD83D\uDCAC", color: "iris", size: "md" }), _jsx(EmojiAvatar, { emoji: "\u2B50", color: "gold", size: "sm" }), _jsx(EmojiAvatar, { emoji: "\uD83C\uDFB5", color: "navy-purple", size: "xs" })] }) }), _jsx(Group, { title: "ConversationAvatar", description: "Smart avatar that resolves a conversation's custom avatar (image, icon, or emoji) or falls back to the member AvatarGroup. Takes a conversation object and delegates to IconAvatar, EmojiAvatar, or AvatarGroup.", children: _jsxs(Row, { children: [_jsx(ConversationAvatar, { conversation: {
80
- customAvatarType: 'icon',
81
- customAvatarKey: 'church',
82
- customAvatarColor: 'warm-sunset',
83
- } }), _jsx(ConversationAvatar, { conversation: {
84
- customAvatarType: 'emoji',
85
- customAvatarKey: '🎉',
86
- customAvatarColor: 'cosmic',
87
- } }), _jsx(ConversationAvatar, { conversation: {
88
- customAvatarType: 'image',
89
- customAvatarImageUrl: URL.avatar,
90
- } }), _jsx(ConversationAvatar, { conversation: {
91
- previewAvatarUrls: URL.two_avatars,
92
- } }), _jsx(ConversationAvatar, { conversation: {}, fallbackIconName: "people.noTextMessage" })] }) }), _jsx(Group, { title: "Icon", description: "Displays any icon from @planningcenter/icons. Missing icons will fallback to a grey circle. Styling with `fontSize` will allow it to scale with the device's text a11y size.", children: _jsxs(Row, { children: [_jsx(Icon, { name: "missingIcon", size: 20 }), _jsx(Icon, { name: "general.textMessage", size: 20 }), _jsx(Icon, { name: "general.bell", size: 20, color: colors.needsDesignPass }), _jsx(Icon, { name: "churchCenter.sort", style: styles.icon })] }) })] }));
360
+ return (<CollapsableSection title="Images & Icons" isLast={isLast}>
361
+ <Group title="Image" description="Foundational way of displaying images. Loading or broken images will fallback to show a spinner. Hide decortive images from screen readers with `alt=''`.">
362
+ <Row>
363
+ <Image source={{ uri: URL.broken }} style={styles.image} alt="Mountain sunrise"/>
364
+ <Image source={{ uri: URL.image }} style={styles.image} alt="Mountain sunrise"/>
365
+ <Image source={{ uri: URL.image }} style={styles.image} alt=""/>
366
+ </Row>
367
+ </Group>
368
+ <Group title="ImageAttachmentPreview" description="Displays an image attachment in different sizes with a close button. It takes a `fileName` prop that gets passed to the image's `alt` attribute. Can show loading and error states.">
369
+ <Row>
370
+ <ImageAttachmentPreview size="sm" uri={URL.image} fileName="mountains.jpg" onRemovePress={buttonPress}/>
371
+ <ImageAttachmentPreview uri={URL.image} fileName="mountains.jpg" onRemovePress={buttonPress}/>
372
+ <ImageAttachmentPreview size="sm" uri={URL.image} fileName="mountains.jpg" onRemovePress={buttonPress} loading hideRemoveButton/>
373
+ <ImageAttachmentPreview uri={URL.image} fileName="mountains.jpg" onRemovePress={buttonPress} loading hideRemoveButton/>
374
+ <ImageAttachmentPreview size="sm" uri={URL.image} fileName="mountains.jpg" onRemovePress={buttonPress} error/>
375
+ <ImageAttachmentPreview uri={URL.image} fileName="mountains.jpg" onRemovePress={buttonPress} error/>
376
+ </Row>
377
+ </Group>
378
+ <Group title="VideoAttachmentPreview" description="Displays an video attachment with a close button. It takes a `name` prop, an optional duration, and can show loading and error states.">
379
+ <Row>
380
+ <VideoAttachmentPreview name="mountains.mp4" onRemovePress={buttonPress}/>
381
+ <VideoAttachmentPreview name="mountains.mp4" duration="1:20" onRemovePress={buttonPress}/>
382
+ <VideoAttachmentPreview name="mountains.mp4" onRemovePress={buttonPress} loading hideRemoveButton/>
383
+ <VideoAttachmentPreview name="mountains.mp4" duration="1:20" onRemovePress={buttonPress} error/>
384
+ </Row>
385
+ </Group>
386
+ <Group title="Avatar" description='Displays the profile image for a user in different sizes and has a loading spinner. Can optionally show an online/offline "presence" indicator. Fallback condition and icon are optionally configurable.'>
387
+ <Row>
388
+ <Avatar sourceUri={URL.broken}/>
389
+ <Avatar size="md" sourceUri={URL.avatar_fallback}/>
390
+ <Avatar sourceUri={URL.avatar}/>
391
+ </Row>
392
+ <Row>
393
+ <Avatar presence="offline" sourceUri={URL.broken}/>
394
+ <Avatar presence="online" size="md" sourceUri={URL.avatar_fallback}/>
395
+ <Avatar presence="offline" sourceUri={URL.avatar}/>
396
+ </Row>
397
+ <Row>
398
+ <Avatar sourceUri=""/>
399
+ <Avatar sourceUri="" size="md"/>
400
+ <Avatar sourceUri="" size="sm"/>
401
+ <Avatar sourceUri={URL.broken} showFallback={true} fallbackIconName="general.star" size="sm"/>
402
+ </Row>
403
+ </Group>
404
+ <Group title="AvatarGroup" description="Shows 1-4 images in a grid at different sizes. Loading spinner shows until all images successfully load. Fallback condition and icon are optionally configurable.">
405
+ <Row>
406
+ <AvatarGroup sourceUris={[URL.broken]}/>
407
+ <AvatarGroup sourceUris={[URL.broken, URL.broken, ...URL.two_avatars]}/>
408
+ <AvatarGroup sourceUris={[URL.avatar]}/>
409
+ <AvatarGroup sourceUris={URL.two_avatars}/>
410
+ <AvatarGroup sourceUris={URL.three_avatars}/>
411
+ <AvatarGroup sourceUris={URL.four_avatars}/>
412
+ </Row>
413
+ <Row>
414
+ <AvatarGroup sourceUris={[]} showFallback={true} fallbackIconName="general.person"/>
415
+ <AvatarGroup sourceUris={[]} showFallback={true} fallbackIconName="people.noTextMessage"/>
416
+ <AvatarGroup sourceUris={[]} showFallback={true} fallbackIconName="general.star" size="md"/>
417
+ <AvatarGroup sourceUris={[]} showFallback={true} fallbackIconName="general.heart" size="sm"/>
418
+ </Row>
419
+ </Group>
420
+ <Group title="IconAvatar" description="Renders a FontAwesome icon centered on a gradient background. Used by ConversationAvatar for icon-type custom avatars, and reusable in the avatar picker UI.">
421
+ <Row>
422
+ <IconAvatar iconKey="church" color="warm-sunset" size="lg"/>
423
+ <IconAvatar iconKey="guitar" color="cosmic" size="lg"/>
424
+ <IconAvatar iconKey="music" color="iris" size="md"/>
425
+ <IconAvatar iconKey="dove" color="rose-teal" size="sm"/>
426
+ <IconAvatar iconKey="cross" color="gold" size="xs"/>
427
+ </Row>
428
+ <Row>
429
+ <IconAvatar iconKey="church" color="garden" size="lg"/>
430
+ <IconAvatar iconKey="church" color="twilight" size="lg"/>
431
+ <IconAvatar iconKey="church" color="amethyst" size="lg"/>
432
+ <IconAvatar iconKey="church" color="rainbow" size="lg"/>
433
+ </Row>
434
+ </Group>
435
+ <Group title="EmojiAvatar" description="Renders an emoji centered on a gradient background. Used by ConversationAvatar for emoji-type custom avatars.">
436
+ <Row>
437
+ <EmojiAvatar emoji="🎉" color="warm-sunset" size="lg"/>
438
+ <EmojiAvatar emoji="🔥" color="cosmic" size="lg"/>
439
+ <EmojiAvatar emoji="💬" color="iris" size="md"/>
440
+ <EmojiAvatar emoji="⭐" color="gold" size="sm"/>
441
+ <EmojiAvatar emoji="🎵" color="navy-purple" size="xs"/>
442
+ </Row>
443
+ </Group>
444
+ <Group title="ConversationAvatar" description="Smart avatar that resolves a conversation's custom avatar (image, icon, or emoji) or falls back to the member AvatarGroup. Takes a conversation object and delegates to IconAvatar, EmojiAvatar, or AvatarGroup.">
445
+ <Row>
446
+ <ConversationAvatar conversation={{
447
+ customAvatarType: 'icon',
448
+ customAvatarKey: 'church',
449
+ customAvatarColor: 'warm-sunset',
450
+ }}/>
451
+ <ConversationAvatar conversation={{
452
+ customAvatarType: 'emoji',
453
+ customAvatarKey: '🎉',
454
+ customAvatarColor: 'cosmic',
455
+ }}/>
456
+ <ConversationAvatar conversation={{
457
+ customAvatarType: 'image',
458
+ customAvatarImageUrl: URL.avatar,
459
+ }}/>
460
+ <ConversationAvatar conversation={{
461
+ previewAvatarUrls: URL.two_avatars,
462
+ }}/>
463
+ <ConversationAvatar conversation={{}} fallbackIconName="people.noTextMessage"/>
464
+ </Row>
465
+ </Group>
466
+ <Group title="Icon" description="Displays any icon from @planningcenter/icons. Missing icons will fallback to a grey circle. Styling with `fontSize` will allow it to scale with the device's text a11y size.">
467
+ <Row>
468
+ {/* @ts-expect-error - Testing missing icon fallback */}
469
+ <Icon name="missingIcon" size={20}/>
470
+ <Icon name="general.textMessage" size={20}/>
471
+ <Icon name="general.bell" size={20} color={colors.needsDesignPass}/>
472
+ <Icon name="churchCenter.sort" style={styles.icon}/>
473
+ </Row>
474
+ </Group>
475
+ </CollapsableSection>);
93
476
  }
94
477
  function FormControlsSection({ isLast }) {
95
478
  const [switchOn, setSwitchOn] = useState(true);
96
479
  const [switchOff, setSwitchOff] = useState(false);
97
- return (_jsx(CollapsableSection, { title: "Form Controls", isLast: isLast, children: _jsx(Group, { title: "Switch", description: "Use to toggle a boolean value for some sort of contained setting. (ie. Muting a conversation) This is a light wrapper that takes into account themed colors.", children: _jsxs(Row, { children: [_jsx(Switch, { value: switchOn, onValueChange: value => setSwitchOn(value) }), _jsx(Switch, { value: switchOff, onValueChange: value => setSwitchOff(value) }), _jsx(Switch, { value: true, disabled: true }), _jsx(Switch, { value: false, disabled: true })] }) }) }));
480
+ return (<CollapsableSection title="Form Controls" isLast={isLast}>
481
+ <Group title="Switch" description="Use to toggle a boolean value for some sort of contained setting. (ie. Muting a conversation) This is a light wrapper that takes into account themed colors.">
482
+ <Row>
483
+ <Switch value={switchOn} onValueChange={value => setSwitchOn(value)}/>
484
+ <Switch value={switchOff} onValueChange={value => setSwitchOff(value)}/>
485
+ <Switch value={true} disabled/>
486
+ <Switch value={false} disabled/>
487
+ </Row>
488
+ </Group>
489
+ </CollapsableSection>);
98
490
  }
99
491
  function StatusComponentsSection({ isLast }) {
100
- return (_jsxs(CollapsableSection, { title: "Status components", isLast: isLast, children: [_jsxs(Group, { title: "Badge", description: "Badge that can convey a status and show an icon. It also supports a meta label and product logo for the conversation list and conversation header. Target products can change colors and hide the logo via theming.", children: [_jsxs(Row, { children: [_jsx(Badge, { label: "Neutral", appearance: "neutral" }), _jsx(Badge, { label: "Error", appearance: "error" }), _jsx(Badge, { label: "Info", appearance: "info" }), _jsx(Badge, { label: "Success", appearance: "success" }), _jsx(Badge, { label: "Warning", appearance: "warning" })] }), _jsxs(Row, { children: [_jsx(Badge, { label: "Neutral", appearance: "neutral", iconName: "general.star" }), _jsx(Badge, { label: "Error", appearance: "error", iconName: "general.exclamationTriangle" }), _jsx(Badge, { label: "Info", appearance: "info", iconName: "general.outlinedInfoCircle" }), _jsx(Badge, { label: "Success", appearance: "success", iconName: "general.check" }), _jsx(Badge, { label: "Warning", appearance: "warning", iconName: "general.shieldExclamation" })] }), _jsxs(Row, { children: [_jsx(Badge, { variant: "meta", productLogoName: "groups", label: "Group", metaLabel: "Worlds longest group name that will probably overflow if it gets very much longer" }), _jsx(Badge, { variant: "meta", productLogoName: "groups", label: "Group", metaLabel: "Young adults" }), _jsx(Badge, { variant: "meta", productLogoName: "services", label: "Plan", metaLabel: "June 19, 2025" }), _jsx(Badge, { variant: "meta", productLogoName: "services", label: "Team" })] }), _jsxs(Row, { children: [_jsx(Badge, { variant: "metaSubtle", productLogoName: "groups", label: "Group", metaLabel: "Worlds longest group name that will probably overflow if it gets very much longer" }), _jsx(Badge, { variant: "metaSubtle", productLogoName: "groups", label: "Group", metaLabel: "Young adults" }), _jsx(Badge, { variant: "metaSubtle", productLogoName: "services", label: "Plan", metaLabel: "June 19, 2025" }), _jsx(Badge, { variant: "metaSubtle", productLogoName: "services", label: "Team" })] })] }), _jsx(Group, { title: "Banner", description: "Banners that can convey a status with color and an optional icon. They render a description and optional heading. A `Banner.Link` can be used by wrapping it in `Banner.Text` and passing it to `description`. Target products can change colors via theming.", children: _jsxs(Column, { children: [_jsx(Banner, { appearance: "neutral", showIcon: false, description: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt." }), _jsx(Banner, { appearance: "info", heading: "Banner heading", description: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt." }), _jsx(Banner, { appearance: "success", heading: "Banner heading", description: _jsxs(BannerPrimitive.Text, { children: ["Et sint Quis non excepturi", ' ', _jsx(BannerPrimitive.Link, { onPress: buttonPress, children: "enim et conseq atur porro est" }), ' ', "galisum labore ea volupt."] }) }), _jsx(Banner, { appearance: "warning", iconName: "general.shieldExclamation", heading: "13 members under age 13", description: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt." }), _jsx(Banner, { appearance: "error", heading: "Banner heading", description: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt." })] }) }), _jsx(Group, { title: "BannerCollapsible", description: "Same as `Banner` but takes children that can be hidden/revealed on a tap.", children: _jsxs(Column, { children: [_jsx(BannerCollapsible, { appearance: "neutral", showIcon: false, heading: "Banner heading", children: _jsx(BannerPrimitive.Text, { children: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt." }) }), _jsx(BannerCollapsible, { appearance: "info", heading: "Banner heading", children: _jsx(BannerPrimitive.Text, { children: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt." }) }), _jsx(BannerCollapsible, { appearance: "success", heading: "Banner heading", children: _jsxs(BannerPrimitive.Text, { children: ["Et sint Quis non excepturi", ' ', _jsx(BannerPrimitive.Link, { onPress: buttonPress, children: "enim et conseq atur porro est" }), ' ', "galisum labore ea volupt."] }) }), _jsx(BannerCollapsible, { appearance: "warning", iconName: "general.shieldExclamation", heading: "13 members under age 13", description: "Et sint Quis non excepturi enim et conse.", children: _jsx(BannerPrimitive.Text, { children: "More hdden content that can be revealed on a tap. Lorem ipsum dolor sit amet, consectetur" }) }), _jsx(BannerCollapsible, { appearance: "error", heading: "Banner heading", description: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt.", children: _jsx(BannerPrimitive.Text, { children: "Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt. Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt. Et sint Quis non excepturi enim et ." }) })] }) })] }));
492
+ return (<CollapsableSection title="Status components" isLast={isLast}>
493
+ <Group title="Badge" description="Badge that can convey a status and show an icon. It also supports a meta label and product logo for the conversation list and conversation header. Target products can change colors and hide the logo via theming.">
494
+ <Row>
495
+ <Badge label="Neutral" appearance="neutral"/>
496
+ <Badge label="Error" appearance="error"/>
497
+ <Badge label="Info" appearance="info"/>
498
+ <Badge label="Success" appearance="success"/>
499
+ <Badge label="Warning" appearance="warning"/>
500
+ </Row>
501
+ <Row>
502
+ <Badge label="Neutral" appearance="neutral" iconName="general.star"/>
503
+ <Badge label="Error" appearance="error" iconName="general.exclamationTriangle"/>
504
+ <Badge label="Info" appearance="info" iconName="general.outlinedInfoCircle"/>
505
+ <Badge label="Success" appearance="success" iconName="general.check"/>
506
+ <Badge label="Warning" appearance="warning" iconName="general.shieldExclamation"/>
507
+ </Row>
508
+ <Row>
509
+ <Badge variant="meta" productLogoName="groups" label="Group" metaLabel="Worlds longest group name that will probably overflow if it gets very much longer"/>
510
+ <Badge variant="meta" productLogoName="groups" label="Group" metaLabel="Young adults"/>
511
+ <Badge variant="meta" productLogoName="services" label="Plan" metaLabel="June 19, 2025"/>
512
+ <Badge variant="meta" productLogoName="services" label="Team"/>
513
+ </Row>
514
+ <Row>
515
+ <Badge variant="metaSubtle" productLogoName="groups" label="Group" metaLabel="Worlds longest group name that will probably overflow if it gets very much longer"/>
516
+ <Badge variant="metaSubtle" productLogoName="groups" label="Group" metaLabel="Young adults"/>
517
+ <Badge variant="metaSubtle" productLogoName="services" label="Plan" metaLabel="June 19, 2025"/>
518
+ <Badge variant="metaSubtle" productLogoName="services" label="Team"/>
519
+ </Row>
520
+ </Group>
521
+ <Group title="Banner" description="Banners that can convey a status with color and an optional icon. They render a description and optional heading. A `Banner.Link` can be used by wrapping it in `Banner.Text` and passing it to `description`. Target products can change colors via theming.">
522
+ <Column>
523
+ <Banner appearance="neutral" showIcon={false} description="Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt."/>
524
+ <Banner appearance="info" heading="Banner heading" description="Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt."/>
525
+ <Banner appearance="success" heading="Banner heading" description={<BannerPrimitive.Text>
526
+ Et sint Quis non excepturi{' '}
527
+ <BannerPrimitive.Link onPress={buttonPress}>
528
+ enim et conseq atur porro est
529
+ </BannerPrimitive.Link>{' '}
530
+ galisum labore ea volupt.
531
+ </BannerPrimitive.Text>}/>
532
+ <Banner appearance="warning" iconName="general.shieldExclamation" heading="13 members under age 13" description="Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt."/>
533
+ <Banner appearance="error" heading="Banner heading" description="Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt."/>
534
+ </Column>
535
+ </Group>
536
+ <Group title="BannerCollapsible" description="Same as `Banner` but takes children that can be hidden/revealed on a tap.">
537
+ <Column>
538
+ <BannerCollapsible appearance="neutral" showIcon={false} heading="Banner heading">
539
+ <BannerPrimitive.Text>
540
+ Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt.
541
+ </BannerPrimitive.Text>
542
+ </BannerCollapsible>
543
+ <BannerCollapsible appearance="info" heading="Banner heading">
544
+ <BannerPrimitive.Text>
545
+ Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt.
546
+ </BannerPrimitive.Text>
547
+ </BannerCollapsible>
548
+ <BannerCollapsible appearance="success" heading="Banner heading">
549
+ <BannerPrimitive.Text>
550
+ Et sint Quis non excepturi{' '}
551
+ <BannerPrimitive.Link onPress={buttonPress}>
552
+ enim et conseq atur porro est
553
+ </BannerPrimitive.Link>{' '}
554
+ galisum labore ea volupt.
555
+ </BannerPrimitive.Text>
556
+ </BannerCollapsible>
557
+ <BannerCollapsible appearance="warning" iconName="general.shieldExclamation" heading="13 members under age 13" description="Et sint Quis non excepturi enim et conse.">
558
+ <BannerPrimitive.Text>
559
+ More hdden content that can be revealed on a tap. Lorem ipsum dolor sit amet,
560
+ consectetur
561
+ </BannerPrimitive.Text>
562
+ </BannerCollapsible>
563
+ <BannerCollapsible appearance="error" heading="Banner heading" description="Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt.">
564
+ <BannerPrimitive.Text>
565
+ Et sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt. Et
566
+ sint Quis non excepturi enim et conseq atur porro est galisum labore ea volupt. Et
567
+ sint Quis non excepturi enim et .
568
+ </BannerPrimitive.Text>
569
+ </BannerCollapsible>
570
+ </Column>
571
+ </Group>
572
+ </CollapsableSection>);
101
573
  }
102
574
  const FA_ICONS = [
103
575
  {
@@ -164,7 +636,18 @@ const FA_ICONS = [
164
636
  ];
165
637
  function FontAwesomeIconsSection({ isLast }) {
166
638
  const { colors } = useTheme();
167
- return (_jsx(CollapsableSection, { title: "FontAwesome Pro Icons", isLast: isLast, children: FA_ICONS.map(({ category, icons }) => (_jsx(Group, { title: category, children: _jsx(View, { style: faStyles.grid, children: icons.map(name => (_jsxs(View, { style: faStyles.cell, children: [_jsx(FontAwesomeIcon, { icon: ['fas', name], size: 20, color: colors.iconColorDefaultSecondary }), _jsx(Text, { variant: "footnote", numberOfLines: 1, children: name })] }, name))) }) }, category))) }));
639
+ return (<CollapsableSection title="FontAwesome Pro Icons" isLast={isLast}>
640
+ {FA_ICONS.map(({ category, icons }) => (<Group key={category} title={category}>
641
+ <View style={faStyles.grid}>
642
+ {icons.map(name => (<View key={name} style={faStyles.cell}>
643
+ <FontAwesomeIcon icon={['fas', name]} size={20} color={colors.iconColorDefaultSecondary}/>
644
+ <Text variant="footnote" numberOfLines={1}>
645
+ {name}
646
+ </Text>
647
+ </View>))}
648
+ </View>
649
+ </Group>))}
650
+ </CollapsableSection>);
168
651
  }
169
652
  const faStyles = StyleSheet.create({
170
653
  grid: {
@@ -179,44 +662,84 @@ const faStyles = StyleSheet.create({
179
662
  },
180
663
  });
181
664
  function MiscComponentsSection({ isLast }) {
182
- return (_jsxs(CollapsableSection, { title: "Misc components", isLast: isLast, children: [_jsx(Group, { title: "Person", description: "Takes a person object (`MemberResource` type) and displays an avatar, name, and badges. If person is a child we show a special badge and faded styles. Implomentation is based on a similar Chat Web component.", children: _jsxs(Column, { children: [_jsx(Person, { person: personAdult }), _jsx(Person, { person: personChild })] }) }), _jsx(Group, { title: "BlankState", description: "Compound component with primitives to display imagary, heading, title, and a button.", children: _jsx(Column, { children: _jsxs(BlankState.Root, { children: [_jsx(BlankState.Imagery, { name: "general.outlinedTextMessage" }), _jsxs(BlankState.Content, { children: [_jsx(BlankState.Heading, { children: "No messages" }), _jsx(BlankState.Text, { children: "Conversation is hidden from everyone until you send a message." })] }), _jsx(BlankState.Button, { onPress: buttonPress, title: "Go back", accessibilityHint: "Navigates back to the conversations list", accessibilityRole: "link" })] }) }) })] }));
665
+ return (<CollapsableSection title="Misc components" isLast={isLast}>
666
+ <Group title="Person" description="Takes a person object (`MemberResource` type) and displays an avatar, name, and badges. If person is a child we show a special badge and faded styles. Implomentation is based on a similar Chat Web component.">
667
+ <Column>
668
+ <Person person={personAdult}/>
669
+ <Person person={personChild}/>
670
+ </Column>
671
+ </Group>
672
+ <Group title="BlankState" description="Compound component with primitives to display imagary, heading, title, and a button.">
673
+ <Column>
674
+ <BlankState.Root>
675
+ <BlankState.Imagery name="general.outlinedTextMessage"/>
676
+ <BlankState.Content>
677
+ <BlankState.Heading>No messages</BlankState.Heading>
678
+ <BlankState.Text>
679
+ Conversation is hidden from everyone until you send a message.
680
+ </BlankState.Text>
681
+ </BlankState.Content>
682
+ <BlankState.Button onPress={buttonPress} title="Go back" accessibilityHint="Navigates back to the conversations list" accessibilityRole="link"/>
683
+ </BlankState.Root>
684
+ </Column>
685
+ </Group>
686
+ </CollapsableSection>);
183
687
  }
184
688
  function CollapsableSection({ children, title, isLast = false }) {
185
689
  const styles = useStyles();
186
690
  const { colors } = useTheme();
187
691
  const [collapsed, setCollapsed] = useState(true);
188
- return (_jsxs(View, { style: [styles.section, styles.sectionBorderTop, isLast && styles.sectionBorderBottom], children: [_jsxs(Pressable, { onPress: () => setCollapsed(!collapsed), style: ({ pressed }) => [styles.sectionHeader, pressed && platformPressedOpacityStyle], android_ripple: { color: colors.androidRippleNeutral, borderless: false, foreground: true }, children: [_jsx(Heading, { children: title }), _jsx(Icon, { name: collapsed ? 'general.plus' : 'general.minus', size: 16 })] }), !collapsed && _jsx(View, { style: styles.sectionChildren, children: children })] }));
692
+ return (<View style={[styles.section, styles.sectionBorderTop, isLast && styles.sectionBorderBottom]}>
693
+ <Pressable onPress={() => setCollapsed(!collapsed)} style={({ pressed }) => [styles.sectionHeader, pressed && platformPressedOpacityStyle]} android_ripple={{ color: colors.androidRippleNeutral, borderless: false, foreground: true }}>
694
+ <Heading>{title}</Heading>
695
+ <Icon name={collapsed ? 'general.plus' : 'general.minus'} size={16}/>
696
+ </Pressable>
697
+ {!collapsed && <View style={styles.sectionChildren}>{children}</View>}
698
+ </View>);
189
699
  }
190
700
  function Group({ title, description, children }) {
191
701
  const styles = useStyles();
192
- return (_jsxs(View, { style: styles.group, children: [_jsxs(View, { style: styles.groupHeading, children: [_jsx(Heading, { variant: "h3", children: title }), description && _jsx(Text, { variant: "tertiary", children: description })] }), children] }));
702
+ return (<View style={styles.group}>
703
+ <View style={styles.groupHeading}>
704
+ <Heading variant="h3">{title}</Heading>
705
+ {description && <Text variant="tertiary">{description}</Text>}
706
+ </View>
707
+ {children}
708
+ </View>);
193
709
  }
194
710
  function Row({ children, style }) {
195
711
  const styles = useStyles();
196
- return _jsx(View, { style: [styles.row, style], children: children });
712
+ return <View style={[styles.row, style]}>{children}</View>;
197
713
  }
198
714
  function Column({ children, style }) {
199
715
  const styles = useStyles();
200
- return _jsx(View, { style: [styles.column, style], children: children });
716
+ return <View style={[styles.column, style]}>{children}</View>;
201
717
  }
202
718
  function TextGroup({ children }) {
203
719
  const styles = useStyles();
204
- return _jsx(View, { style: styles.textGroup, children: children });
720
+ return <View style={styles.textGroup}>{children}</View>;
205
721
  }
206
722
  function TextRow({ children, style }) {
207
723
  const styles = useStyles();
208
- return _jsx(View, { style: [styles.textRow, style], children: children });
724
+ return <View style={[styles.textRow, style]}>{children}</View>;
209
725
  }
210
726
  function TextListItem({ label, children }) {
211
727
  const styles = useStyles();
212
- return (_jsxs(Text, { variant: "tertiary", children: [_jsx(Text, { variant: "tertiary", style: styles.mediumWeight, children: label }), ' ', children] }));
728
+ return (<Text variant="tertiary">
729
+ <Text variant="tertiary" style={styles.mediumWeight}>
730
+ {label}
731
+ </Text>{' '}
732
+ {children}
733
+ </Text>);
213
734
  }
214
735
  function HapticButton({ title, onPress }) {
215
736
  const styles = useStyles();
216
- return (_jsx(Pressable, { onPress: onPress, style: ({ pressed }) => ({
737
+ return (<Pressable onPress={onPress} style={({ pressed }) => ({
217
738
  ...styles.hapticButton,
218
739
  ...{ opacity: pressed ? 0.5 : 1 },
219
- }), children: _jsx(Text, { style: styles.hapticButtonText, children: title }) }));
740
+ })}>
741
+ <Text style={styles.hapticButtonText}>{title}</Text>
742
+ </Pressable>);
220
743
  }
221
744
  // =================================
222
745
  // ====== Styles ===================