@cossistant/react 0.0.3 → 0.0.5

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 (320) hide show
  1. package/README.md +74 -0
  2. package/_virtual/rolldown_runtime.js +19 -0
  3. package/conversation.d.ts +26 -3
  4. package/conversation.d.ts.map +1 -1
  5. package/hooks/index.d.ts +5 -3
  6. package/hooks/index.js +7 -5
  7. package/hooks/private/store/use-conversations-store.d.ts +8 -0
  8. package/hooks/private/store/use-conversations-store.d.ts.map +1 -1
  9. package/hooks/private/store/use-conversations-store.js +8 -0
  10. package/hooks/private/store/use-conversations-store.js.map +1 -1
  11. package/hooks/private/store/use-store-selector.d.ts +4 -0
  12. package/hooks/private/store/use-store-selector.d.ts.map +1 -1
  13. package/hooks/private/store/use-store-selector.js +5 -2
  14. package/hooks/private/store/use-store-selector.js.map +1 -1
  15. package/hooks/private/store/use-website-store.d.ts +4 -0
  16. package/hooks/private/store/use-website-store.d.ts.map +1 -1
  17. package/hooks/private/store/use-website-store.js +6 -3
  18. package/hooks/private/store/use-website-store.js.map +1 -1
  19. package/hooks/private/typing.d.ts +35 -0
  20. package/hooks/private/typing.d.ts.map +1 -0
  21. package/hooks/private/typing.js +49 -0
  22. package/hooks/private/typing.js.map +1 -0
  23. package/hooks/private/use-client-query.d.ts +5 -0
  24. package/hooks/private/use-client-query.d.ts.map +1 -1
  25. package/hooks/private/use-client-query.js +5 -0
  26. package/hooks/private/use-client-query.js.map +1 -1
  27. package/hooks/private/use-grouped-messages.d.ts +10 -4
  28. package/hooks/private/use-grouped-messages.d.ts.map +1 -1
  29. package/hooks/private/use-grouped-messages.js +24 -4
  30. package/hooks/private/use-grouped-messages.js.map +1 -1
  31. package/hooks/private/use-multimodal-input.d.ts.map +1 -1
  32. package/hooks/private/use-rest-client.d.ts.map +1 -1
  33. package/hooks/private/use-visitor-typing-reporter.d.ts +6 -0
  34. package/hooks/private/use-visitor-typing-reporter.d.ts.map +1 -1
  35. package/hooks/private/use-visitor-typing-reporter.js +6 -0
  36. package/hooks/private/use-visitor-typing-reporter.js.map +1 -1
  37. package/hooks/use-composer-refocus.d.ts.map +1 -1
  38. package/hooks/use-conversation-auto-seen.d.ts +9 -0
  39. package/hooks/use-conversation-auto-seen.d.ts.map +1 -1
  40. package/hooks/use-conversation-auto-seen.js +44 -3
  41. package/hooks/use-conversation-auto-seen.js.map +1 -1
  42. package/hooks/use-conversation-history-page.d.ts.map +1 -1
  43. package/hooks/use-conversation-history-page.js +16 -18
  44. package/hooks/use-conversation-history-page.js.map +1 -1
  45. package/hooks/use-conversation-lifecycle.d.ts.map +1 -1
  46. package/hooks/use-conversation-lifecycle.js +2 -4
  47. package/hooks/use-conversation-lifecycle.js.map +1 -1
  48. package/hooks/use-conversation-page.d.ts +6 -0
  49. package/hooks/use-conversation-page.d.ts.map +1 -1
  50. package/hooks/use-conversation-page.js +41 -3
  51. package/hooks/use-conversation-page.js.map +1 -1
  52. package/hooks/use-conversation-preview.d.ts +61 -0
  53. package/hooks/use-conversation-preview.d.ts.map +1 -0
  54. package/hooks/use-conversation-preview.js +173 -0
  55. package/hooks/use-conversation-preview.js.map +1 -0
  56. package/hooks/use-conversation-seen.d.ts +4 -0
  57. package/hooks/use-conversation-seen.d.ts.map +1 -1
  58. package/hooks/use-conversation-seen.js +4 -0
  59. package/hooks/use-conversation-seen.js.map +1 -1
  60. package/hooks/use-conversation-timeline-items.d.ts +4 -0
  61. package/hooks/use-conversation-timeline-items.d.ts.map +1 -1
  62. package/hooks/use-conversation-timeline-items.js +4 -0
  63. package/hooks/use-conversation-timeline-items.js.map +1 -1
  64. package/hooks/use-conversation-timeline.d.ts +32 -0
  65. package/hooks/use-conversation-timeline.d.ts.map +1 -0
  66. package/hooks/use-conversation-timeline.js +41 -0
  67. package/hooks/use-conversation-timeline.js.map +1 -0
  68. package/hooks/use-conversation-typing.d.ts +4 -0
  69. package/hooks/use-conversation-typing.d.ts.map +1 -1
  70. package/hooks/use-conversation-typing.js +4 -0
  71. package/hooks/use-conversation-typing.js.map +1 -1
  72. package/hooks/use-conversation.d.ts +11 -0
  73. package/hooks/use-conversation.d.ts.map +1 -1
  74. package/hooks/use-conversation.js +11 -0
  75. package/hooks/use-conversation.js.map +1 -1
  76. package/hooks/use-conversations.d.ts +12 -0
  77. package/hooks/use-conversations.d.ts.map +1 -1
  78. package/hooks/use-conversations.js +12 -0
  79. package/hooks/use-conversations.js.map +1 -1
  80. package/hooks/use-create-conversation.d.ts +5 -0
  81. package/hooks/use-create-conversation.d.ts.map +1 -1
  82. package/hooks/use-create-conversation.js +12 -9
  83. package/hooks/use-create-conversation.js.map +1 -1
  84. package/hooks/use-home-page.d.ts.map +1 -1
  85. package/hooks/use-home-page.js +6 -4
  86. package/hooks/use-home-page.js.map +1 -1
  87. package/hooks/use-message-composer.d.ts.map +1 -1
  88. package/hooks/use-realtime-support.d.ts.map +1 -1
  89. package/hooks/use-send-message.d.ts +9 -0
  90. package/hooks/use-send-message.d.ts.map +1 -1
  91. package/hooks/use-send-message.js +15 -13
  92. package/hooks/use-send-message.js.map +1 -1
  93. package/hooks/use-visitor.d.ts.map +1 -1
  94. package/hooks/use-visitor.js +28 -30
  95. package/hooks/use-visitor.js.map +1 -1
  96. package/hooks/use-window-visibility-focus.d.ts +4 -0
  97. package/hooks/use-window-visibility-focus.d.ts.map +1 -1
  98. package/hooks/use-window-visibility-focus.js +5 -2
  99. package/hooks/use-window-visibility-focus.js.map +1 -1
  100. package/identify-visitor.d.ts +12 -3
  101. package/identify-visitor.d.ts.map +1 -1
  102. package/identify-visitor.js +58 -9
  103. package/identify-visitor.js.map +1 -1
  104. package/index.d.ts +10 -7
  105. package/index.js +10 -9
  106. package/package.json +14 -17
  107. package/primitives/avatar/avatar.d.ts.map +1 -1
  108. package/primitives/avatar/fallback.d.ts.map +1 -1
  109. package/primitives/avatar/fallback.js +1 -3
  110. package/primitives/avatar/fallback.js.map +1 -1
  111. package/primitives/avatar/image.d.ts.map +1 -1
  112. package/primitives/avatar/index.d.ts +1 -0
  113. package/primitives/bubble.d.ts +2 -0
  114. package/primitives/bubble.d.ts.map +1 -1
  115. package/primitives/bubble.js +8 -2
  116. package/primitives/bubble.js.map +1 -1
  117. package/primitives/button.d.ts.map +1 -1
  118. package/primitives/conversation-timeline.d.ts.map +1 -1
  119. package/primitives/conversation-timeline.js +58 -5
  120. package/primitives/conversation-timeline.js.map +1 -1
  121. package/primitives/index.d.ts +1 -0
  122. package/primitives/index.parts.d.ts +1 -0
  123. package/primitives/multimodal-input.d.ts.map +1 -1
  124. package/primitives/timeline-item-group.d.ts +7 -7
  125. package/primitives/timeline-item-group.d.ts.map +1 -1
  126. package/primitives/timeline-item-group.js.map +1 -1
  127. package/primitives/timeline-item.d.ts +1 -1
  128. package/primitives/timeline-item.d.ts.map +1 -1
  129. package/primitives/timeline-item.js +7 -1
  130. package/primitives/timeline-item.js.map +1 -1
  131. package/primitives/window.d.ts +1 -1
  132. package/primitives/window.d.ts.map +1 -1
  133. package/primitives/window.js +4 -4
  134. package/primitives/window.js.map +1 -1
  135. package/provider.d.ts +23 -43
  136. package/provider.d.ts.map +1 -1
  137. package/provider.js +152 -49
  138. package/provider.js.map +1 -1
  139. package/realtime/event-filter.d.ts +4 -0
  140. package/realtime/event-filter.d.ts.map +1 -1
  141. package/realtime/event-filter.js +4 -0
  142. package/realtime/event-filter.js.map +1 -1
  143. package/realtime/index.js +1 -1
  144. package/realtime/provider.d.ts +7 -2
  145. package/realtime/provider.d.ts.map +1 -1
  146. package/realtime/provider.js +23 -1
  147. package/realtime/provider.js.map +1 -1
  148. package/realtime/seen-store.d.ts +13 -0
  149. package/realtime/seen-store.d.ts.map +1 -1
  150. package/realtime/seen-store.js +14 -2
  151. package/realtime/seen-store.js.map +1 -1
  152. package/realtime/support-provider.d.ts +1 -2
  153. package/realtime/support-provider.d.ts.map +1 -1
  154. package/realtime/support-provider.js +19 -20
  155. package/realtime/support-provider.js.map +1 -1
  156. package/realtime/typing-store.d.ts +18 -0
  157. package/realtime/typing-store.d.ts.map +1 -1
  158. package/realtime/typing-store.js +19 -2
  159. package/realtime/typing-store.js.map +1 -1
  160. package/realtime/use-realtime.d.ts +8 -4
  161. package/realtime/use-realtime.d.ts.map +1 -1
  162. package/realtime/use-realtime.js +4 -0
  163. package/realtime/use-realtime.js.map +1 -1
  164. package/realtime-events.d.ts +17 -3
  165. package/realtime-events.d.ts.map +1 -1
  166. package/schemas.d.ts +7 -1
  167. package/schemas.d.ts.map +1 -1
  168. package/support/components/avatar-stack.d.ts +8 -4
  169. package/support/components/avatar-stack.d.ts.map +1 -1
  170. package/support/components/avatar-stack.js +4 -0
  171. package/support/components/avatar-stack.js.map +1 -1
  172. package/support/components/avatar.d.ts +11 -6
  173. package/support/components/avatar.d.ts.map +1 -1
  174. package/support/components/avatar.js +4 -0
  175. package/support/components/avatar.js.map +1 -1
  176. package/support/components/bubble.d.ts.map +1 -1
  177. package/support/components/bubble.js +29 -6
  178. package/support/components/bubble.js.map +1 -1
  179. package/support/components/button.d.ts +8 -5
  180. package/support/components/button.d.ts.map +1 -1
  181. package/support/components/button.js +5 -1
  182. package/support/components/button.js.map +1 -1
  183. package/support/components/container.d.ts +0 -1
  184. package/support/components/container.d.ts.map +1 -1
  185. package/support/components/container.js +2 -8
  186. package/support/components/container.js.map +1 -1
  187. package/support/components/conversation-button-link.d.ts +8 -21
  188. package/support/components/conversation-button-link.d.ts.map +1 -1
  189. package/support/components/conversation-button-link.js +62 -178
  190. package/support/components/conversation-button-link.js.map +1 -1
  191. package/support/components/conversation-event.d.ts.map +1 -1
  192. package/support/components/conversation-event.js +4 -0
  193. package/support/components/conversation-event.js.map +1 -1
  194. package/support/components/conversation-timeline.d.ts +10 -1
  195. package/support/components/conversation-timeline.d.ts.map +1 -1
  196. package/support/components/conversation-timeline.js +63 -57
  197. package/support/components/conversation-timeline.js.map +1 -1
  198. package/support/components/cossistant-branding.d.ts +5 -2
  199. package/support/components/cossistant-branding.d.ts.map +1 -1
  200. package/support/components/cossistant-branding.js +3 -0
  201. package/support/components/cossistant-branding.js.map +1 -1
  202. package/support/components/header.d.ts.map +1 -1
  203. package/support/components/header.js +2 -2
  204. package/support/components/header.js.map +1 -1
  205. package/support/components/icons.d.ts.map +1 -1
  206. package/support/components/multimodal-input.d.ts.map +1 -1
  207. package/support/components/multimodal-input.js +5 -24
  208. package/support/components/multimodal-input.js.map +1 -1
  209. package/support/components/navigation-tab.d.ts +7 -2
  210. package/support/components/navigation-tab.d.ts.map +1 -1
  211. package/support/components/navigation-tab.js +4 -0
  212. package/support/components/navigation-tab.js.map +1 -1
  213. package/support/components/support-content.d.ts +1 -1
  214. package/support/components/support-content.d.ts.map +1 -1
  215. package/support/components/support-content.js +7 -10
  216. package/support/components/support-content.js.map +1 -1
  217. package/support/components/text-effect.d.ts +5 -2
  218. package/support/components/text-effect.d.ts.map +1 -1
  219. package/support/components/text-effect.js +4 -0
  220. package/support/components/text-effect.js.map +1 -1
  221. package/support/components/timeline-identification-tool.d.ts +7 -0
  222. package/support/components/timeline-identification-tool.d.ts.map +1 -0
  223. package/support/components/timeline-identification-tool.js +139 -0
  224. package/support/components/timeline-identification-tool.js.map +1 -0
  225. package/support/components/timeline-message-group.d.ts +2 -1
  226. package/support/components/timeline-message-group.d.ts.map +1 -1
  227. package/support/components/timeline-message-group.js +4 -19
  228. package/support/components/timeline-message-group.js.map +1 -1
  229. package/support/components/timeline-message-item.d.ts +6 -2
  230. package/support/components/timeline-message-item.d.ts.map +1 -1
  231. package/support/components/timeline-message-item.js +8 -4
  232. package/support/components/timeline-message-item.js.map +1 -1
  233. package/support/components/typing-indicator.d.ts +5 -2
  234. package/support/components/typing-indicator.d.ts.map +1 -1
  235. package/support/components/typing-indicator.js +4 -4
  236. package/support/components/typing-indicator.js.map +1 -1
  237. package/support/components/watermark.d.ts.map +1 -1
  238. package/support/context/websocket.d.ts +8 -0
  239. package/support/context/websocket.d.ts.map +1 -1
  240. package/support/context/websocket.js +12 -6
  241. package/support/context/websocket.js.map +1 -1
  242. package/support/index.d.ts +8 -8
  243. package/support/index.d.ts.map +1 -1
  244. package/support/index.js +18 -18
  245. package/support/index.js.map +1 -1
  246. package/support/pages/conversation-history.js +46 -54
  247. package/support/pages/conversation-history.js.map +1 -1
  248. package/support/pages/conversation.d.ts +3 -6
  249. package/support/pages/conversation.d.ts.map +1 -1
  250. package/support/pages/conversation.js +19 -9
  251. package/support/pages/conversation.js.map +1 -1
  252. package/support/pages/home.d.ts +2 -2
  253. package/support/pages/home.d.ts.map +1 -1
  254. package/support/pages/home.js +64 -77
  255. package/support/pages/home.js.map +1 -1
  256. package/support/store/support-store.d.ts +18 -2
  257. package/support/store/support-store.d.ts.map +1 -1
  258. package/support/store/support-store.js +20 -5
  259. package/support/store/support-store.js.map +1 -1
  260. package/support/{support-CMoDLQoC.css → support-Ck4jy29i.css} +1 -2
  261. package/support/support-Ck4jy29i.css.map +1 -0
  262. package/support/text/index.d.ts +15 -2
  263. package/support/text/index.d.ts.map +1 -1
  264. package/support/text/index.js +15 -2
  265. package/support/text/index.js.map +1 -1
  266. package/support/text/locales/en.js +22 -4
  267. package/support/text/locales/en.js.map +1 -1
  268. package/support/text/locales/es.js +18 -0
  269. package/support/text/locales/es.js.map +1 -1
  270. package/support/text/locales/fr.js +18 -0
  271. package/support/text/locales/fr.js.map +1 -1
  272. package/support/text/locales/keys.d.ts +69 -9
  273. package/support/text/locales/keys.d.ts.map +1 -1
  274. package/support/text/locales/keys.js +18 -0
  275. package/support/text/locales/keys.js.map +1 -1
  276. package/support/text/runtime.d.ts +21 -0
  277. package/support/text/runtime.d.ts.map +1 -1
  278. package/support/text/runtime.js +21 -0
  279. package/support/text/runtime.js.map +1 -1
  280. package/support/utils/index.d.ts +4 -0
  281. package/support/utils/index.d.ts.map +1 -1
  282. package/support/utils/index.js +4 -1
  283. package/support/utils/index.js.map +1 -1
  284. package/support/utils/time.d.ts +3 -0
  285. package/support/utils/time.d.ts.map +1 -1
  286. package/support/utils/time.js +3 -0
  287. package/support/utils/time.js.map +1 -1
  288. package/support-config.d.ts +2 -1
  289. package/support-config.d.ts.map +1 -1
  290. package/support-config.js.map +1 -1
  291. package/support.css +2 -2
  292. package/timeline-item.d.ts +10 -0
  293. package/timeline-item.d.ts.map +1 -1
  294. package/utils/conversation.d.ts +7 -0
  295. package/utils/conversation.d.ts.map +1 -0
  296. package/utils/conversation.js +18 -0
  297. package/utils/conversation.js.map +1 -0
  298. package/utils/id.d.ts +3 -0
  299. package/utils/id.d.ts.map +1 -1
  300. package/utils/id.js +3 -0
  301. package/utils/id.js.map +1 -1
  302. package/utils/index.d.ts +2 -1
  303. package/utils/index.js +2 -1
  304. package/utils/metadata-hash.d.ts +12 -0
  305. package/utils/metadata-hash.d.ts.map +1 -0
  306. package/utils/metadata-hash.js +26 -0
  307. package/utils/metadata-hash.js.map +1 -0
  308. package/utils/text.d.ts +3 -0
  309. package/utils/text.d.ts.map +1 -1
  310. package/utils/text.js +3 -0
  311. package/utils/text.js.map +1 -1
  312. package/utils/use-render-element.d.ts +3 -0
  313. package/utils/use-render-element.d.ts.map +1 -1
  314. package/utils/use-render-element.js +3 -0
  315. package/utils/use-render-element.js.map +1 -1
  316. package/support/context/config.d.ts +0 -32
  317. package/support/context/config.d.ts.map +0 -1
  318. package/support/context/config.js +0 -27
  319. package/support/context/config.js.map +0 -1
  320. package/support/support-CMoDLQoC.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"support-store.js","names":["patch: Partial<SupportConfig>"],"sources":["../../../src/support/store/support-store.ts"],"sourcesContent":["\"use client\";\n\nimport {\n\tcreateSupportStore,\n\ttype SupportConfig,\n\ttype SupportStore,\n\ttype SupportStoreState,\n} from \"@cossistant/core\";\nimport { useMemo, useRef, useSyncExternalStore } from \"react\";\n\nconst storage = typeof window !== \"undefined\" ? window.localStorage : undefined;\nconst store = createSupportStore({ storage });\n\ntype Selector<T> = (state: SupportStoreState) => T;\n\ntype EqualityChecker<T> = (previous: T, next: T) => boolean;\n\nfunction useSelector<TSelected>(\n\tselector: Selector<TSelected>,\n\tisEqual: EqualityChecker<TSelected> = Object.is\n): TSelected {\n\tconst selectionRef = useRef<TSelected>(undefined);\n\n\tconst subscribe = (onStoreChange: () => void) =>\n\t\tstore.subscribe(() => {\n\t\t\tonStoreChange();\n\t\t});\n\n\tconst snapshot = useSyncExternalStore(\n\t\tsubscribe,\n\t\tstore.getState,\n\t\tstore.getState\n\t);\n\n\tconst selected = selector(snapshot);\n\n\tif (\n\t\tselectionRef.current === undefined ||\n\t\t!isEqual(selectionRef.current, selected)\n\t) {\n\t\tselectionRef.current = selected;\n\t}\n\n\treturn selectionRef.current as TSelected;\n}\n\nexport type UseSupportStoreResult = SupportStoreState &\n\tPick<\n\t\tSupportStore,\n\t\t| \"navigate\"\n\t\t| \"replace\"\n\t\t| \"goBack\"\n\t\t| \"open\"\n\t\t| \"close\"\n\t\t| \"toggle\"\n\t\t| \"updateConfig\"\n\t\t| \"reset\"\n\t>;\n\nexport function useSupportStore(): UseSupportStoreResult {\n\tconst state = useSelector((current) => current);\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\t...state,\n\t\t\tnavigate: store.navigate,\n\t\t\treplace: store.replace,\n\t\t\tgoBack: store.goBack,\n\t\t\topen: store.open,\n\t\t\tclose: store.close,\n\t\t\ttoggle: store.toggle,\n\t\t\tupdateConfig: store.updateConfig,\n\t\t\treset: store.reset,\n\t\t}),\n\t\t[state]\n\t);\n}\n\nexport const useSupportConfig = () => {\n\tconst config = useSelector((state) => state.config);\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\t...config,\n\t\t\topen: store.open,\n\t\t\tclose: store.close,\n\t\t\ttoggle: store.toggle,\n\t\t}),\n\t\t[config]\n\t);\n};\n\nexport const useSupportNavigation = () => {\n\tconst navigation = useSelector((state) => state.navigation);\n\tconst { current, previousPages } = navigation;\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\tcurrent,\n\t\t\tpage: current.page,\n\t\t\tparams: current.params,\n\t\t\tpreviousPages,\n\t\t\tnavigate: store.navigate,\n\t\t\treplace: store.replace,\n\t\t\tgoBack: store.goBack,\n\t\t\tcanGoBack: previousPages.length > 0,\n\t\t}),\n\t\t[current, previousPages]\n\t);\n};\n\nexport const initializeSupportStore = (props: {\n\tmode?: SupportConfig[\"mode\"];\n\tsize?: SupportConfig[\"size\"];\n\tdefaultOpen?: boolean;\n}) => {\n\tconst patch: Partial<SupportConfig> = {};\n\n\tif (props.mode !== undefined) {\n\t\tpatch.mode = props.mode;\n\t}\n\n\tif (props.size !== undefined) {\n\t\tpatch.size = props.size;\n\t}\n\n\tif (props.defaultOpen !== undefined) {\n\t\tpatch.isOpen = props.defaultOpen;\n\t}\n\n\tif (Object.keys(patch).length > 0) {\n\t\tstore.updateConfig(patch);\n\t}\n};\n"],"mappings":";;;;;;;AAUA,MAAM,UAAU,OAAO,WAAW,cAAc,OAAO,eAAe;AACtE,MAAM,QAAQ,mBAAmB,EAAE,SAAS,CAAC;AAM7C,SAAS,YACR,UACA,UAAsC,OAAO,IACjC;CACZ,MAAM,eAAe,OAAkB,OAAU;CAEjD,MAAM,aAAa,kBAClB,MAAM,gBAAgB;AACrB,iBAAe;GACd;CAEH,MAAM,WAAW,qBAChB,WACA,MAAM,UACN,MAAM,SACN;CAED,MAAM,WAAW,SAAS,SAAS;AAEnC,KACC,aAAa,YAAY,UACzB,CAAC,QAAQ,aAAa,SAAS,SAAS,CAExC,cAAa,UAAU;AAGxB,QAAO,aAAa;;AAgBrB,SAAgB,kBAAyC;CACxD,MAAM,QAAQ,aAAa,YAAY,QAAQ;AAE/C,QAAO,eACC;EACN,GAAG;EACH,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,cAAc,MAAM;EACpB,OAAO,MAAM;EACb,GACD,CAAC,MAAM,CACP;;AAGF,MAAa,yBAAyB;CACrC,MAAM,SAAS,aAAa,UAAU,MAAM,OAAO;AAEnD,QAAO,eACC;EACN,GAAG;EACH,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,GACD,CAAC,OAAO,CACR;;AAGF,MAAa,6BAA6B;CAEzC,MAAM,EAAE,SAAS,kBADE,aAAa,UAAU,MAAM,WAAW;AAG3D,QAAO,eACC;EACN;EACA,MAAM,QAAQ;EACd,QAAQ,QAAQ;EAChB;EACA,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,cAAc,SAAS;EAClC,GACD,CAAC,SAAS,cAAc,CACxB;;AAGF,MAAa,0BAA0B,UAIjC;CACL,MAAMA,QAAgC,EAAE;AAExC,KAAI,MAAM,SAAS,OAClB,OAAM,OAAO,MAAM;AAGpB,KAAI,MAAM,SAAS,OAClB,OAAM,OAAO,MAAM;AAGpB,KAAI,MAAM,gBAAgB,OACzB,OAAM,SAAS,MAAM;AAGtB,KAAI,OAAO,KAAK,MAAM,CAAC,SAAS,EAC/B,OAAM,aAAa,MAAM"}
1
+ {"version":3,"file":"support-store.js","names":["patch: Partial<SupportConfig>"],"sources":["../../../src/support/store/support-store.ts"],"sourcesContent":["\"use client\";\n\nimport {\n\tcreateSupportStore,\n\ttype SupportConfig,\n\ttype SupportStore,\n\ttype SupportStoreState,\n} from \"@cossistant/core\";\nimport { useMemo, useRef, useSyncExternalStore } from \"react\";\n\nconst storage = typeof window !== \"undefined\" ? window.localStorage : undefined;\nconst store = createSupportStore({ storage });\n\ntype Selector<T> = (state: SupportStoreState) => T;\n\ntype EqualityChecker<T> = (previous: T, next: T) => boolean;\n\nfunction useSelector<TSelected>(\n\tselector: Selector<TSelected>,\n\tisEqual: EqualityChecker<TSelected> = Object.is\n): TSelected {\n\tconst selectionRef = useRef<TSelected>(undefined);\n\n\tconst subscribe = (onStoreChange: () => void) =>\n\t\tstore.subscribe(() => {\n\t\t\tonStoreChange();\n\t\t});\n\n\tconst snapshot = useSyncExternalStore(\n\t\tsubscribe,\n\t\tstore.getState,\n\t\tstore.getState\n\t);\n\n\tconst selected = selector(snapshot);\n\n\tif (\n\t\tselectionRef.current === undefined ||\n\t\t!isEqual(selectionRef.current, selected)\n\t) {\n\t\tselectionRef.current = selected;\n\t}\n\n\treturn selectionRef.current as TSelected;\n}\n\nexport type UseSupportStoreResult = SupportStoreState &\n\tPick<\n\t\tSupportStore,\n\t\t| \"navigate\"\n\t\t| \"replace\"\n\t\t| \"goBack\"\n\t\t| \"open\"\n\t\t| \"close\"\n\t\t| \"toggle\"\n\t\t| \"updateConfig\"\n\t\t| \"reset\"\n\t>;\n\n/**\n * React hook wrapper around the shared support widget store. Exposes both the\n * raw state and imperative actions so UI components can drive navigation or\n * change configuration without importing the store singleton directly.\n */\nexport function useSupportStore(): UseSupportStoreResult {\n\tconst state = useSelector((current) => current);\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\t...state,\n\t\t\tnavigate: store.navigate,\n\t\t\treplace: store.replace,\n\t\t\tgoBack: store.goBack,\n\t\t\topen: store.open,\n\t\t\tclose: store.close,\n\t\t\ttoggle: store.toggle,\n\t\t\tupdateConfig: store.updateConfig,\n\t\t\treset: store.reset,\n\t\t}),\n\t\t[state]\n\t);\n}\n\n/**\n * Shortcut hook that returns the persisted widget configuration along with\n * open/close/toggle helpers for common UI bindings.\n */\nexport const useSupportConfig = () => {\n\tconst config = useSelector((state) => state.config);\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\t...config,\n\t\t\topen: store.open,\n\t\t\tclose: store.close,\n\t\t\ttoggle: store.toggle,\n\t\t}),\n\t\t[config]\n\t);\n};\n\n/**\n * Provides the current navigation entry, the stack history and helpers to\n * transition between screens inside the support widget.\n */\nexport const useSupportNavigation = () => {\n\tconst navigation = useSelector((state) => state.navigation);\n\tconst { current, previousPages } = navigation;\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\tcurrent,\n\t\t\tpage: current.page,\n\t\t\tparams: current.params,\n\t\t\tpreviousPages,\n\t\t\tnavigate: store.navigate,\n\t\t\treplace: store.replace,\n\t\t\tgoBack: store.goBack,\n\t\t\tcanGoBack: previousPages.length > 0,\n\t\t}),\n\t\t[current, previousPages]\n\t);\n};\n\n/**\n * Applies initial configuration derived from provider props or server state to\n * the singleton support store. Call this once during bootstrapping so that the\n * UI renders with the expected open state.\n */\nexport const initializeSupportStore = (props: {\n\tsize?: SupportConfig[\"size\"];\n\tdefaultOpen?: boolean;\n}) => {\n\tconst patch: Partial<SupportConfig> = {};\n\n\tif (props.size !== undefined) {\n\t\tpatch.size = props.size;\n\t}\n\n\tif (props.defaultOpen !== undefined) {\n\t\tpatch.isOpen = props.defaultOpen;\n\t}\n\n\tif (Object.keys(patch).length > 0) {\n\t\tstore.updateConfig(patch);\n\t}\n};\n"],"mappings":";;;;;;;AAWA,MAAM,QAAQ,mBAAmB,EAAE,SADnB,OAAO,WAAW,cAAc,OAAO,eAAe,QAC1B,CAAC;AAM7C,SAAS,YACR,UACA,UAAsC,OAAO,IACjC;CACZ,MAAM,eAAe,OAAkB,OAAU;CAEjD,MAAM,aAAa,kBAClB,MAAM,gBAAgB;AACrB,iBAAe;GACd;CAQH,MAAM,WAAW,SANA,qBAChB,WACA,MAAM,UACN,MAAM,SACN,CAEkC;AAEnC,KACC,aAAa,YAAY,UACzB,CAAC,QAAQ,aAAa,SAAS,SAAS,CAExC,cAAa,UAAU;AAGxB,QAAO,aAAa;;;;;;;AAqBrB,SAAgB,kBAAyC;CACxD,MAAM,QAAQ,aAAa,YAAY,QAAQ;AAE/C,QAAO,eACC;EACN,GAAG;EACH,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,cAAc,MAAM;EACpB,OAAO,MAAM;EACb,GACD,CAAC,MAAM,CACP;;;;;;AAOF,MAAa,yBAAyB;CACrC,MAAM,SAAS,aAAa,UAAU,MAAM,OAAO;AAEnD,QAAO,eACC;EACN,GAAG;EACH,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,QAAQ,MAAM;EACd,GACD,CAAC,OAAO,CACR;;;;;;AAOF,MAAa,6BAA6B;CAEzC,MAAM,EAAE,SAAS,kBADE,aAAa,UAAU,MAAM,WAAW;AAG3D,QAAO,eACC;EACN;EACA,MAAM,QAAQ;EACd,QAAQ,QAAQ;EAChB;EACA,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,QAAQ,MAAM;EACd,WAAW,cAAc,SAAS;EAClC,GACD,CAAC,SAAS,cAAc,CACxB;;;;;;;AAQF,MAAa,0BAA0B,UAGjC;CACL,MAAMA,QAAgC,EAAE;AAExC,KAAI,MAAM,SAAS,OAClB,OAAM,OAAO,MAAM;AAGpB,KAAI,MAAM,gBAAgB,OACzB,OAAM,SAAS,MAAM;AAGtB,KAAI,OAAO,KAAK,MAAM,CAAC,SAAS,EAC/B,OAAM,aAAa,MAAM"}
@@ -1,4 +1,3 @@
1
-
2
1
  @custom-variant dark (&:is(.dark *));
3
2
 
4
3
  @layer base {
@@ -405,4 +404,4 @@
405
404
  }
406
405
 
407
406
 
408
- /*# sourceMappingURL=support-CMoDLQoC.css.map*/
407
+ /*# sourceMappingURL=support-Ck4jy29i.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-Ck4jy29i.css","names":[],"sources":["../../src/support/support.css"],"sourcesContent":["@custom-variant dark (&:is(.dark *));\n\n@layer base {\n\t.cossistant {\n\t\t@apply border-co-border;\n\t\t@apply scroll-smooth;\n\n\t\tcolor-scheme: inherit;\n\n\t\t/* Typeface tokens */\n\t\t--co-font-sans: var(\n\t\t\t--co-theme-font-sans,\n\t\t\tvar(--font-sans, \"Geist\", \"Inter\", sans-serif)\n\t\t);\n\t\t--co-font-mono: var(\n\t\t\t--co-theme-font-mono,\n\t\t\tvar(--font-mono, \"Geist Mono\", \"Inter Mono\", monospace)\n\t\t);\n\n\t\t--co-border-color: var(\n\t\t\t--co-theme-border-color,\n\t\t\tvar(--color-border, oklch(92.2% 0 0))\n\t\t);\n\n\t\t/* Core surfaces */\n\t\t--co-radius: var(--co-theme-radius, var(--radius, 0.625rem));\n\t\t--co-background-base: var(\n\t\t\t--co-theme-background,\n\t\t\tvar(--background, oklch(99% 0 0))\n\t\t);\n\t\t--co-foreground-base: var(\n\t\t\t--co-theme-foreground,\n\t\t\tvar(--foreground, oklch(14.5% 0 0))\n\t\t);\n\t\t--co-popover-base: var(\n\t\t\t--co-theme-popover,\n\t\t\tvar(--popover, var(--co-background-base))\n\t\t);\n\t\t--co-popover-foreground-base: var(\n\t\t\t--co-theme-popover-foreground,\n\t\t\tvar(--popover-foreground, var(--co-foreground-base))\n\t\t);\n\t\t--co-primary-base: var(\n\t\t\t--co-theme-primary,\n\t\t\tvar(--primary, oklch(20.5% 0 0))\n\t\t);\n\t\t--co-primary-foreground-base: var(\n\t\t\t--co-theme-primary-foreground,\n\t\t\tvar(--primary-foreground, oklch(98.5% 0 0))\n\t\t);\n\t\t--co-secondary-base: var(\n\t\t\t--co-theme-secondary,\n\t\t\tvar(--secondary, oklch(97% 0 0))\n\t\t);\n\t\t--co-secondary-foreground-base: var(\n\t\t\t--co-theme-secondary-foreground,\n\t\t\tvar(--secondary-foreground, oklch(20.5% 0 0))\n\t\t);\n\t\t--co-border-base: var(--co-theme-border, var(--border, oklch(92.2% 0 0)));\n\t\t--co-input-base: var(--co-theme-input, var(--input, oklch(92.2% 0 0)));\n\t\t--co-ring-base: var(--co-theme-ring, var(--ring, var(--co-primary-base)));\n\t\t--co-accent-base: var(\n\t\t\t--co-theme-accent,\n\t\t\tvar(--accent, var(--co-primary-base))\n\t\t);\n\t\t--co-accent-foreground-base: var(\n\t\t\t--co-theme-accent-foreground,\n\t\t\tvar(--accent-foreground, var(--co-primary-foreground-base))\n\t\t);\n\n\t\t/* Neutral shades derived from the background */\n\t\t--co-background-50-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 98%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-100-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 97%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-200-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 96%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-300-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 95%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-400-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 94%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-500-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 93%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-600-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 92%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\n\t\t/* Muted tones */\n\t\t--co-muted-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 85%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-muted-foreground-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-foreground-base) 70%,\n\t\t\twhite\n\t\t);\n\n\t\t/* Public tokens consumed by Tailwind theme */\n\t\t--co-background: var(--co-background-base);\n\t\t--co-background-50: var(\n\t\t\t--co-theme-background-50,\n\t\t\tvar(--co-background-50-mix, oklch(92% 0 0))\n\t\t);\n\t\t--co-background-100: var(\n\t\t\t--co-theme-background-100,\n\t\t\tvar(--co-background-100-mix, oklch(93% 0 0))\n\t\t);\n\t\t--co-background-200: var(\n\t\t\t--co-theme-background-200,\n\t\t\tvar(--co-background-200-mix, oklch(94% 0 0))\n\t\t);\n\t\t--co-background-300: var(\n\t\t\t--co-theme-background-300,\n\t\t\tvar(--co-background-300-mix, oklch(95% 0 0))\n\t\t);\n\t\t--co-background-400: var(\n\t\t\t--co-theme-background-400,\n\t\t\tvar(--co-background-400-mix, oklch(96% 0 0))\n\t\t);\n\t\t--co-background-500: var(\n\t\t\t--co-theme-background-500,\n\t\t\tvar(--co-background-500-mix, oklch(97% 0 0))\n\t\t);\n\t\t--co-background-600: var(\n\t\t\t--co-theme-background-600,\n\t\t\tvar(--co-background-600-mix, oklch(98% 0 0))\n\t\t);\n\n\t\t--co-foreground: var(--co-foreground-base);\n\t\t--co-popover: var(--co-popover-base);\n\t\t--co-popover-foreground: var(--co-popover-foreground-base);\n\t\t--co-primary: var(--co-primary-base);\n\t\t--co-primary-foreground: var(--co-primary-foreground-base);\n\t\t--co-secondary: var(--co-secondary-base);\n\t\t--co-secondary-foreground: var(--co-secondary-foreground-base);\n\t\t--co-muted: var(\n\t\t\t--co-theme-muted,\n\t\t\tvar(--muted, var(--co-muted-mix, oklch(97% 0 0)))\n\t\t);\n\t\t--co-muted-foreground: var(\n\t\t\t--co-theme-muted-foreground,\n\t\t\tvar(--muted-foreground, var(--co-muted-foreground-mix, oklch(55.6% 0 0)))\n\t\t);\n\t\t--co-border: var(--co-border-base);\n\t\t--co-input: var(--co-input-base);\n\t\t--co-ring: var(--co-ring-base);\n\t\t--co-accent: var(--co-accent-base);\n\t\t--co-accent-foreground: var(--co-accent-foreground-base);\n\n\t\t/* Accent palette */\n\t\t--co-pink: var(--co-theme-pink, oklch(76.3% 0.152 354));\n\t\t--co-yellow: var(--co-theme-yellow, oklch(86.4% 0.144 99));\n\t\t--co-blue: var(--co-theme-blue, oklch(72.5% 0.132 241));\n\t\t--co-orange: var(--co-theme-orange, oklch(74.5% 0.166 50));\n\n\t\t/* Status colors */\n\t\t--co-destructive: var(--co-theme-destructive, oklch(57.7% 0.245 27.325));\n\t\t--co-destructive-foreground: var(\n\t\t\t--co-theme-destructive-foreground,\n\t\t\toklch(57.7% 0.245 27.325)\n\t\t);\n\t\t--co-success: var(--co-theme-success, oklch(71.7% 0.18 142));\n\t\t--co-success-foreground: var(\n\t\t\t--co-theme-success-foreground,\n\t\t\toklch(26.5% 0.052 142.7)\n\t\t);\n\t\t--co-neutral: var(--co-theme-neutral, oklch(60.8% 0 0));\n\t\t--co-neutral-foreground: var(\n\t\t\t--co-theme-neutral-foreground,\n\t\t\toklch(25.6% 0 0)\n\t\t);\n\t\t--co-warning: var(--co-theme-warning, oklch(86.4% 0.144 99));\n\t\t--co-warning-foreground: var(\n\t\t\t--co-theme-warning-foreground,\n\t\t\toklch(41.4% 0.071 99)\n\t\t);\n\t}\n\n\t.dark .cossistant,\n\t.cossistant[data-color-scheme=\"dark\"] {\n\t\t/* Provide dark defaults without overriding host tokens */\n\t\t--co-background-base: var(\n\t\t\t--co-theme-background,\n\t\t\tvar(--background, oklch(15.5% 0 0))\n\t\t);\n\t\t--co-foreground-base: var(\n\t\t\t--co-theme-foreground,\n\t\t\tvar(--foreground, oklch(98.5% 0 0))\n\t\t);\n\t\t--co-border-color: var(\n\t\t\t--co-theme-border-color,\n\t\t\tvar(--color-border, oklch(26.9% 0 0))\n\t\t);\n\t\t--co-popover-base: var(\n\t\t\t--co-theme-popover,\n\t\t\tvar(--popover, oklch(14.5% 0 0))\n\t\t);\n\t\t--co-popover-foreground-base: var(\n\t\t\t--co-theme-popover-foreground,\n\t\t\tvar(--popover-foreground, oklch(98.5% 0 0))\n\t\t);\n\t\t--co-primary-base: var(\n\t\t\t--co-theme-primary,\n\t\t\tvar(--primary, oklch(98.5% 0 0))\n\t\t);\n\t\t--co-primary-foreground-base: var(\n\t\t\t--co-theme-primary-foreground,\n\t\t\tvar(--primary-foreground, oklch(20.5% 0 0))\n\t\t);\n\t\t--co-secondary-base: var(\n\t\t\t--co-theme-secondary,\n\t\t\tvar(--secondary, oklch(26.9% 0 0))\n\t\t);\n\t\t--co-secondary-foreground-base: var(\n\t\t\t--co-theme-secondary-foreground,\n\t\t\tvar(--secondary-foreground, oklch(98.5% 0 0))\n\t\t);\n\t\t--co-border-base: var(--co-theme-border, var(--border, oklch(26.9% 0 0)));\n\t\t--co-input-base: var(--co-theme-input, var(--input, oklch(26.9% 0 0)));\n\t\t--co-ring-base: var(--co-theme-ring, var(--ring, var(--co-primary-base)));\n\t\t--co-accent-base: var(\n\t\t\t--co-theme-accent,\n\t\t\tvar(--accent, var(--co-primary-base))\n\t\t);\n\t\t--co-accent-foreground-base: var(\n\t\t\t--co-theme-accent-foreground,\n\t\t\tvar(--accent-foreground, var(--co-primary-foreground-base))\n\t\t);\n\n\t\t--co-muted-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 55%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-muted-foreground-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-foreground-base) 65%,\n\t\t\twhite\n\t\t);\n\n\t\t--co-background-50-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 98%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-100-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 96%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-200-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 94%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-300-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 92%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-400-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 90%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-500-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 88%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\t\t--co-background-600-mix: color-mix(\n\t\t\tin oklch,\n\t\t\tvar(--co-background-base) 86%,\n\t\t\tvar(--co-foreground-base)\n\t\t);\n\n\t\t--co-pink: var(--co-theme-pink, oklch(84.2% 0.109 354));\n\t\t--co-yellow: var(--co-theme-yellow, oklch(90.3% 0.111 99));\n\t\t--co-blue: var(--co-theme-blue, oklch(79.8% 0.089 241));\n\t\t--co-orange: var(--co-theme-orange, oklch(68.2% 0.194 50));\n\n\t\t--co-destructive: var(--co-theme-destructive, oklch(39.6% 0.141 25.723));\n\t\t--co-destructive-foreground: var(\n\t\t\t--co-theme-destructive-foreground,\n\t\t\toklch(63.7% 0.237 25.331)\n\t\t);\n\t\t--co-success: var(--co-theme-success, oklch(60% 0.15 142));\n\t\t--co-success-foreground: var(\n\t\t\t--co-theme-success-foreground,\n\t\t\toklch(85% 0.12 142)\n\t\t);\n\t\t--co-neutral: var(--co-theme-neutral, oklch(50% 0 0));\n\t\t--co-neutral-foreground: var(--co-theme-neutral-foreground, oklch(85% 0 0));\n\t\t--co-warning: var(--co-theme-warning, oklch(90.3% 0.111 99));\n\t\t--co-warning-foreground: var(\n\t\t\t--co-theme-warning-foreground,\n\t\t\toklch(85% 0.1 99)\n\t\t);\n\t}\n}\n\n@theme inline {\n\t--font-co-sans: var(--co-font-sans);\n\t--font-co-mono: var(--co-font-mono);\n\t--color-co-background: var(--co-background);\n\t--color-co-background-50: var(--co-background-50);\n\t--color-co-background-100: var(--co-background-100);\n\t--color-co-background-200: var(--co-background-200);\n\t--color-co-background-300: var(--co-background-300);\n\t--color-co-background-400: var(--co-background-400);\n\t--color-co-background-500: var(--co-background-500);\n\t--color-co-background-600: var(--co-background-600);\n\n\t--color-co-foreground: var(--co-foreground);\n\n\t--color-co-primary: var(--co-primary);\n\t--color-co-primary-foreground: var(--co-primary-foreground);\n\t--color-co-secondary: var(--co-secondary);\n\t--color-co-secondary-foreground: var(--co-secondary-foreground);\n\t--color-co-muted: var(--co-muted);\n\t--color-co-muted-foreground: var(--co-muted-foreground);\n\t--color-co-border: var(--co-border);\n\t--color-co-input: var(--co-input);\n\t--color-co-ring: var(--co-ring);\n\t--radius-co: var(--co-radius);\n\n\t/* custom colors */\n\t--color-co-pink: var(--co-pink);\n\t--color-co-yellow: var(--co-yellow);\n\t--color-co-blue: var(--co-blue);\n\t--color-co-orange: var(--co-orange);\n\n\t/* status colors */\n\t--color-co-destructive: var(--co-destructive);\n\t--color-co-destructive-foreground: var(--co-destructive-foreground);\n\t--color-co-success: var(--co-success);\n\t--color-co-success-foreground: var(--co-success-foreground);\n\t--color-co-neutral: var(--co-neutral);\n\t--color-co-neutral-foreground: var(--co-neutral-foreground);\n\t--color-co-warning: var(--co-warning);\n\t--color-co-warning-foreground: var(--co-warning-foreground);\n}\n\n@layer utilities {\n\t.cossistant {\n\t\t.animation-delay-0 {\n\t\t\tanimation-delay: 0ms;\n\t\t}\n\t\t.animation-delay-200 {\n\t\t\tanimation-delay: 200ms;\n\t\t}\n\t\t.animation-delay-400 {\n\t\t\tanimation-delay: 400ms;\n\t\t}\n\n\t\t@keyframes bounce-dot {\n\t\t\t0%,\n\t\t\t80%,\n\t\t\t100% {\n\t\t\t\ttransform: translateY(0);\n\t\t\t}\n\t\t\t40% {\n\t\t\t\ttransform: translateY(-6px);\n\t\t\t}\n\t\t}\n\n\t\t.dot-bounce-1 {\n\t\t\tanimation: bounce-dot 1.4s infinite;\n\t\t\tanimation-delay: 0s;\n\t\t}\n\n\t\t.dot-bounce-2 {\n\t\t\tanimation: bounce-dot 1.4s infinite;\n\t\t\tanimation-delay: 0.16s;\n\t\t}\n\n\t\t.dot-bounce-3 {\n\t\t\tanimation: bounce-dot 1.4s infinite;\n\t\t\tanimation-delay: 0.32s;\n\t\t}\n\t}\n}\n"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,6 +1,5 @@
1
1
  import { SupportLocale, SupportTextContentOverrides, SupportTextDefinitions, SupportTextKey, SupportTextResolvedFormatter, SupportTextVariables } from "./locales/keys.js";
2
2
  import React from "react";
3
- import * as react_jsx_runtime12 from "react/jsx-runtime";
4
3
 
5
4
  //#region src/support/text/index.d.ts
6
5
  type SupportTextProviderProps<Locale extends string = SupportLocale> = {
@@ -8,11 +7,20 @@ type SupportTextProviderProps<Locale extends string = SupportLocale> = {
8
7
  locale?: Locale;
9
8
  content?: SupportTextContentOverrides<Locale>;
10
9
  };
10
+ /**
11
+ * Supplies localized copy and formatting helpers for the support widget. The
12
+ * provider merges bundled locale strings with optional runtime overrides and
13
+ * exposes a formatter that understands visitor/website context.
14
+ */
11
15
  declare function SupportTextProvider<Locale extends string = SupportLocale>({
12
16
  children,
13
17
  locale,
14
18
  content
15
- }: SupportTextProviderProps<Locale>): react_jsx_runtime12.JSX.Element;
19
+ }: SupportTextProviderProps<Locale>): React.ReactElement;
20
+ /**
21
+ * Returns the active text formatter for the support widget. Throws if used
22
+ * outside of `SupportTextProvider` to help catch integration mistakes.
23
+ */
16
24
  declare function useSupportText(): SupportTextResolvedFormatter;
17
25
  type OptionalVariablesProp<K extends SupportTextKey> = SupportTextDefinitions[K]["variables"] extends undefined ? {
18
26
  variables?: undefined;
@@ -27,6 +35,11 @@ type TextProps<K extends SupportTextKey, As extends keyof React.JSX.IntrinsicEle
27
35
  textKey: K;
28
36
  as?: As;
29
37
  } & Omit<React.ComponentPropsWithoutRef<As>, "children">;
38
+ /**
39
+ * Convenience component that renders localized support copy via the
40
+ * `SupportTextProvider` context while still allowing callers to customize the
41
+ * rendered HTML element.
42
+ */
30
43
  declare const Text: <K extends SupportTextKey, As extends keyof React.JSX.IntrinsicElements = "span">(props: TextProps<K, As> & {
31
44
  ref?: React.ComponentPropsWithRef<As>["ref"];
32
45
  }) => React.ReactElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/support/text/index.tsx"],"sourcesContent":[],"mappings":";;;;;KAwBK,iDAAiD;EAAjD,QAAA,EACM,KAAA,CAAM,SADZ;EAAwB,MAAA,CAAA,EAEnB,MAFmB;SAAyB,CAAA,EAG3C,2BAH2C,CAGf,MAHe,CAAA;;AAE5C,iBAOM,mBAPN,CAAA,eAAA,MAAA,GAOkD,aAPlD,CAAA,CAAA;EAAA,QAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAWP,wBAXO,CAWkB,MAXlB,CAAA,CAAA,EAWyB,mBAAA,CAAA,GAAA,CAAA,OAXzB;AAC6B,iBA+EvB,cAAA,CAAA,CA/EuB,EA+EL,4BA/EK;KAwFlC,qBAxFM,CAAA,UAwF0B,cAxF1B,CAAA,GAyFV,sBAzFU,CAyFa,CAzFb,CAAA,CAAA,WAAA,CAAA,SAAA,SAAA,GAAA;EAA2B,SAAA,CAAA,EAAA,SAAA;AAMtC,CAAA,GAAgB,UAAA,SAAA,MAqFa,sBArFM,CAqFiB,CArFjB,CAAA,GAsF9B,sBAtF8B,CAsFP,CAtFO,CAAA,CAAA,UAAA,CAAA,SAAA,IAAA,GAAA;EAAA,SAAA,CAAA,EAuFf,oBAvFe,CAuFM,CAvFN,CAAA;;WAClC,EAuFkB,oBAvFlB,CAuFuC,CAvFvC,CAAA;;WAEA,EAsFiB,oBAtFjB,CAsFsC,CAtFtC,CAAA;;KAwFI,SAvFF,CAAA,UAwFQ,cAxFR,EAAA,WAAA,MAyFe,KAAA,CAAM,GAAA,CAAI,iBAzFzB,GAAA,MAAA,CAAA,GA0FC,qBA1FD,CA0FuB,CA1FvB,CAAA,GAAA;SAAgC,EA2FzB,CA3FyB;EAAA,EAAA,CAAA,EA4F7B,EA5F6B;AAqEnC,CAAA,GAwBI,IAxBY,CAwBP,KAAA,CAAM,wBAxBmB,CAwBM,EAxBN,CAAA,EAAA,UAAA,CAAA;AAS7B,cAwCQ,IAxCR,EAAA,CAAqB,UAyCf,cAzCe,EAAA,WAAA,MA0CR,KAAA,CAAM,GAAA,CAAI,iBA1CF,GAAA,MAAA,CAAA,CAAA,KAAA,EA4ClB,SA5CkB,CA4CR,CA5CQ,EA4CL,EA5CK,CAAA,GAAA;EAAA,GAAA,CAAA,EA4CS,KAAA,CAAM,qBA5Cf,CA4CqC,EA5CrC,CAAA,CAAA,KAAA,CAAA;MA6CrB,KAAA,CAAM,YA7C0B,GAAA,IAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/support/text/index.tsx"],"sourcesContent":[],"mappings":";;;;AAewB,KASnB,wBAAA,CAAA,eAAwB,MAAA,GAAyB,aAAzB,CAAA,GAAA;EAAyB,QAAA,EAC3C,KAAA,CAAM,SADqC;EAC3C,MAAM,CAAA,EACP,MADO;EACP,OAAA,CAAA,EACC,2BADD,CAC6B,MAD7B,CAAA;CAC6B;;;AAWvC;;;AAEC,iBAFe,mBAEf,CAAA,eAAA,MAAA,GAF2D,aAE3D,CAAA,CAAA;EAAA,QAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAEE,wBAFF,CAE2B,MAF3B,CAAA,CAAA,EAEqC,KAAA,CAAM,YAF3C;;;;;AAEuD,iBAyExC,cAAA,CAAA,CAzEwC,EAyEtB,4BAzEsB;AAyExD,KASK,qBATyB,CAAA,UASO,cATH,CAAA,GAUjC,sBAV6D,CAUtC,CAVsC,CAAA,CAAA,WAAA,CAAA,SAAA,SAAA,GAAA;EASzD,SAAA,CAAA,EAAA,SAAA;CAAgC,GAAA,UAAA,SAAA,MAGR,sBAHQ,CAGe,CAHf,CAAA,GAIhC,sBAJgC,CAIT,CAJS,CAAA,CAAA,UAAA,CAAA,SAAA,IAAA,GAAA;EACpC,SAAA,CAAA,EAImB,oBAJnB,CAIwC,CAJxC,CAAA;CAAuB,GAAA;EAEK,SAAA,EAGV,oBAHU,CAGW,CAHX,CAAA;CAAuB,GAAA;EAC/C,SAAA,EAGa,oBAHb,CAGkC,CAHlC,CAAA;CAAuB;KAKvB,SAJoC,CAAA,UAK9B,cAL8B,EAAA,WAAA,MAMvB,KAAA,CAAM,GAAA,CAAI,iBANa,GAAA,MAAA,CAAA,GAOrC,qBAPqC,CAOf,CAPe,CAAA,GAAA;EAArB,OAAA,EAQV,CARU;EACoB,EAAA,CAAA,EAQlC,EARkC;CAArB,GASf,IATe,CASV,KAAA,CAAM,wBATI,CASqB,EATrB,CAAA,EAAA,UAAA,CAAA;;;;AACmB;;AAId,cAkCX,IAlCe,EAAA,CAAA,UAmCjB,cAnCiB,EAAA,WAAA,MAoCV,KAAA,CAAM,GAAA,CAAI,iBApCA,GAAA,MAAA,CAAA,CAAA,KAAA,EAsCpB,SAtCoB,CAsCV,CAtCU,EAsCP,EAtCO,CAAA,GAAA;EACF,GAAA,CAAA,EAqCS,KAAA,CAAM,qBArCf,CAqCqC,EArCrC,CAAA,CAAA,KAAA,CAAA;CAAtB,EAAA,GAsCC,KAAA,CAAM,YAtCP,GAAA,IAAA"}
@@ -6,6 +6,11 @@ import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/support/text/index.tsx
8
8
  const SupportTextRuntimeContext = React.createContext(null);
9
+ /**
10
+ * Supplies localized copy and formatting helpers for the support widget. The
11
+ * provider merges bundled locale strings with optional runtime overrides and
12
+ * exposes a formatter that understands visitor/website context.
13
+ */
9
14
  function SupportTextProvider({ children, locale, content }) {
10
15
  const { website, availableHumanAgents, availableAIAgents, visitor } = useSupport();
11
16
  const [isHydrated, setIsHydrated] = React.useState(false);
@@ -29,8 +34,7 @@ function SupportTextProvider({ children, locale, content }) {
29
34
  const format = ((key, variables) => {
30
35
  const definition = supportTextDefinitions[key];
31
36
  if (definition.variables !== void 0 && !("optional" in definition && definition.optional === true) && variables === void 0) throw new Error(`Missing variables for text key "${key}".`);
32
- const resolved = resolveMessage(key, localeChain, normalizedOverrides);
33
- return evaluateMessage(key, resolved, variables, textContext, utils);
37
+ return evaluateMessage(key, resolveMessage(key, localeChain, normalizedOverrides), variables, textContext, utils);
34
38
  });
35
39
  const value = React.useMemo(() => ({
36
40
  format,
@@ -46,6 +50,10 @@ function SupportTextProvider({ children, locale, content }) {
46
50
  children
47
51
  });
48
52
  }
53
+ /**
54
+ * Returns the active text formatter for the support widget. Throws if used
55
+ * outside of `SupportTextProvider` to help catch integration mistakes.
56
+ */
49
57
  function useSupportText() {
50
58
  const context = React.useContext(SupportTextRuntimeContext);
51
59
  if (!context) throw new Error("useSupportText must be used within SupportTextProvider");
@@ -63,6 +71,11 @@ function TextInner(props, forwardedRef) {
63
71
  children: content
64
72
  });
65
73
  }
74
+ /**
75
+ * Convenience component that renders localized support copy via the
76
+ * `SupportTextProvider` context while still allowing callers to customize the
77
+ * rendered HTML element.
78
+ */
66
79
  const Text = React.forwardRef(TextInner);
67
80
  Text.displayName = "SupportText";
68
81
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/support/text/index.tsx"],"sourcesContent":["/** biome-ignore-all lint/correctness/useExhaustiveDependencies: dependencies are intentionally managed */\n/** biome-ignore-all lint/correctness/noChildrenProp: children prop is needed for React.createElement */\nimport React from \"react\";\n\nimport { useSupport } from \"../../provider\";\nimport {\n\ttype SupportLocale,\n\ttype SupportTextContentOverrides,\n\ttype SupportTextContext,\n\ttype SupportTextDefinitions,\n\ttype SupportTextKey,\n\ttype SupportTextProviderValue,\n\ttype SupportTextResolvedFormatter,\n\ttype SupportTextVariables,\n\tsupportTextDefinitions,\n} from \"./locales/keys\";\nimport {\n\tbuildLocaleChain,\n\tcreateTextUtils,\n\tevaluateMessage,\n\tnormalizeOverrides,\n\tresolveMessage,\n} from \"./runtime\";\n\ntype SupportTextProviderProps<Locale extends string = SupportLocale> = {\n\tchildren: React.ReactNode;\n\tlocale?: Locale;\n\tcontent?: SupportTextContentOverrides<Locale>;\n};\n\nconst SupportTextRuntimeContext =\n\tReact.createContext<SupportTextProviderValue | null>(null);\n\nexport function SupportTextProvider<Locale extends string = SupportLocale>({\n\tchildren,\n\tlocale,\n\tcontent,\n}: SupportTextProviderProps<Locale>) {\n\tconst { website, availableHumanAgents, availableAIAgents, visitor } =\n\t\tuseSupport();\n\tconst [isHydrated, setIsHydrated] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tsetIsHydrated(true);\n\t}, []);\n\n\tconst localeChain = React.useMemo(\n\t\t() => buildLocaleChain([locale, visitor?.locale]),\n\t\t[locale, visitor?.locale]\n\t);\n\n\tconst normalizedOverrides = React.useMemo(\n\t\t() => normalizeOverrides(content),\n\t\t[content]\n\t);\n\n\tconst utils = React.useMemo(\n\t\t() => createTextUtils(localeChain[0] ?? \"en\", isHydrated),\n\t\t[localeChain, isHydrated]\n\t);\n\n\tconst textContext = React.useMemo<SupportTextContext>(\n\t\t() => ({\n\t\t\twebsite,\n\t\t\tvisitor: visitor ?? null,\n\t\t\thumanAgents: availableHumanAgents,\n\t\t\taiAgents: availableAIAgents,\n\t\t}),\n\t\t[website, visitor, availableHumanAgents, availableAIAgents]\n\t);\n\n\tconst format = ((key: SupportTextKey, variables?: unknown) => {\n\t\tconst definition = supportTextDefinitions[key];\n\t\tconst requiresVariables =\n\t\t\tdefinition.variables !== undefined &&\n\t\t\t!(\"optional\" in definition && definition.optional === true);\n\n\t\tif (requiresVariables && variables === undefined) {\n\t\t\tthrow new Error(`Missing variables for text key \"${key}\".`);\n\t\t}\n\n\t\tconst resolved = resolveMessage(key, localeChain, normalizedOverrides);\n\t\treturn evaluateMessage(\n\t\t\tkey,\n\t\t\tresolved,\n\t\t\tvariables as SupportTextVariables<typeof key>,\n\t\t\ttextContext,\n\t\t\tutils\n\t\t);\n\t}) as SupportTextResolvedFormatter;\n\n\tconst value = React.useMemo<SupportTextProviderValue>(\n\t\t() => ({\n\t\t\tformat,\n\t\t\tlocale: localeChain[0] ?? \"en\",\n\t\t}),\n\t\t[localeChain, normalizedOverrides, textContext, utils]\n\t);\n\n\treturn (\n\t\t<SupportTextRuntimeContext.Provider value={value}>\n\t\t\t{children}\n\t\t</SupportTextRuntimeContext.Provider>\n\t);\n}\n\nexport function useSupportText(): SupportTextResolvedFormatter {\n\tconst context = React.useContext(SupportTextRuntimeContext);\n\tif (!context) {\n\t\tthrow new Error(\"useSupportText must be used within SupportTextProvider\");\n\t}\n\n\treturn context.format;\n}\n\ntype OptionalVariablesProp<K extends SupportTextKey> =\n\tSupportTextDefinitions[K][\"variables\"] extends undefined\n\t\t? { variables?: undefined }\n\t\t: \"optional\" extends keyof SupportTextDefinitions[K]\n\t\t\t? SupportTextDefinitions[K][\"optional\"] extends true\n\t\t\t\t? { variables?: SupportTextVariables<K> }\n\t\t\t\t: { variables: SupportTextVariables<K> }\n\t\t\t: { variables: SupportTextVariables<K> };\n\ntype TextProps<\n\tK extends SupportTextKey,\n\tAs extends keyof React.JSX.IntrinsicElements = \"span\",\n> = OptionalVariablesProp<K> & {\n\ttextKey: K;\n\tas?: As;\n} & Omit<React.ComponentPropsWithoutRef<As>, \"children\">;\n\nfunction TextInner<\n\tK extends SupportTextKey,\n\tAs extends keyof React.JSX.IntrinsicElements = \"span\",\n>(\n\tprops: TextProps<K, As>,\n\tforwardedRef: React.ComponentPropsWithRef<As>[\"ref\"]\n) {\n\tconst { textKey, variables, as, ...rest } = props as TextProps<K, As>;\n\tconst format = useSupportText();\n\tconst Component = (as ?? \"span\") as As;\n\tconst content =\n\t\tvariables !== undefined\n\t\t\t? format(textKey, variables as SupportTextVariables<K>)\n\t\t\t: format(textKey);\n\n\treturn React.createElement(Component, {\n\t\t...rest,\n\t\tref: forwardedRef,\n\t\t\"data-key-name\": textKey,\n\t\tchildren: content,\n\t});\n}\n\nexport const Text = React.forwardRef(TextInner) as <\n\tK extends SupportTextKey,\n\tAs extends keyof React.JSX.IntrinsicElements = \"span\",\n>(\n\tprops: TextProps<K, As> & { ref?: React.ComponentPropsWithRef<As>[\"ref\"] }\n) => React.ReactElement | null;\n\n(Text as { displayName?: string }).displayName = \"SupportText\";\n\nexport type {\n\tSupportLocale,\n\tSupportTextContentOverrides,\n\tSupportTextKey,\n\tSupportTextVariables,\n} from \"./locales/keys\";\n"],"mappings":";;;;;;;AA8BA,MAAM,4BACL,MAAM,cAA+C,KAAK;AAE3D,SAAgB,oBAA2D,EAC1E,UACA,QACA,WACoC;CACpC,MAAM,EAAE,SAAS,sBAAsB,mBAAmB,YACzD,YAAY;CACb,MAAM,CAAC,YAAY,iBAAiB,MAAM,SAAS,MAAM;AAEzD,OAAM,gBAAgB;AACrB,gBAAc,KAAK;IACjB,EAAE,CAAC;CAEN,MAAM,cAAc,MAAM,cACnB,iBAAiB,CAAC,QAAQ,SAAS,OAAO,CAAC,EACjD,CAAC,QAAQ,SAAS,OAAO,CACzB;CAED,MAAM,sBAAsB,MAAM,cAC3B,mBAAmB,QAAQ,EACjC,CAAC,QAAQ,CACT;CAED,MAAM,QAAQ,MAAM,cACb,gBAAgB,YAAY,MAAM,MAAM,WAAW,EACzD,CAAC,aAAa,WAAW,CACzB;CAED,MAAM,cAAc,MAAM,eAClB;EACN;EACA,SAAS,WAAW;EACpB,aAAa;EACb,UAAU;EACV,GACD;EAAC;EAAS;EAAS;EAAsB;EAAkB,CAC3D;CAED,MAAM,WAAW,KAAqB,cAAwB;EAC7D,MAAM,aAAa,uBAAuB;AAK1C,MAHC,WAAW,cAAc,UACzB,EAAE,cAAc,cAAc,WAAW,aAAa,SAE9B,cAAc,OACtC,OAAM,IAAI,MAAM,mCAAmC,IAAI,IAAI;EAG5D,MAAM,WAAW,eAAe,KAAK,aAAa,oBAAoB;AACtE,SAAO,gBACN,KACA,UACA,WACA,aACA,MACA;;CAGF,MAAM,QAAQ,MAAM,eACZ;EACN;EACA,QAAQ,YAAY,MAAM;EAC1B,GACD;EAAC;EAAa;EAAqB;EAAa;EAAM,CACtD;AAED,QACC,oBAAC,0BAA0B;EAAgB;EACzC;GACmC;;AAIvC,SAAgB,iBAA+C;CAC9D,MAAM,UAAU,MAAM,WAAW,0BAA0B;AAC3D,KAAI,CAAC,QACJ,OAAM,IAAI,MAAM,yDAAyD;AAG1E,QAAO,QAAQ;;AAoBhB,SAAS,UAIR,OACA,cACC;CACD,MAAM,EAAE,SAAS,WAAW,GAAI,GAAG,SAAS;CAC5C,MAAM,SAAS,gBAAgB;CAC/B,MAAM,YAAa,MAAM;CACzB,MAAM,UACL,cAAc,SACX,OAAO,SAAS,UAAqC,GACrD,OAAO,QAAQ;AAEnB,QAAO,MAAM,cAAc,WAAW;EACrC,GAAG;EACH,KAAK;EACL,iBAAiB;EACjB,UAAU;EACV,CAAC;;AAGH,MAAa,OAAO,MAAM,WAAW,UAAU;AAO/C,AAAC,KAAkC,cAAc"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/support/text/index.tsx"],"sourcesContent":["/** biome-ignore-all lint/correctness/useExhaustiveDependencies: dependencies are intentionally managed */\n/** biome-ignore-all lint/correctness/noChildrenProp: children prop is needed for React.createElement */\nimport React from \"react\";\n\nimport { useSupport } from \"../../provider\";\nimport {\n\ttype SupportLocale,\n\ttype SupportTextContentOverrides,\n\ttype SupportTextContext,\n\ttype SupportTextDefinitions,\n\ttype SupportTextKey,\n\ttype SupportTextProviderValue,\n\ttype SupportTextResolvedFormatter,\n\ttype SupportTextVariables,\n\tsupportTextDefinitions,\n} from \"./locales/keys\";\nimport {\n\tbuildLocaleChain,\n\tcreateTextUtils,\n\tevaluateMessage,\n\tnormalizeOverrides,\n\tresolveMessage,\n} from \"./runtime\";\n\ntype SupportTextProviderProps<Locale extends string = SupportLocale> = {\n\tchildren: React.ReactNode;\n\tlocale?: Locale;\n\tcontent?: SupportTextContentOverrides<Locale>;\n};\n\nconst SupportTextRuntimeContext =\n\tReact.createContext<SupportTextProviderValue | null>(null);\n\n/**\n * Supplies localized copy and formatting helpers for the support widget. The\n * provider merges bundled locale strings with optional runtime overrides and\n * exposes a formatter that understands visitor/website context.\n */\nexport function SupportTextProvider<Locale extends string = SupportLocale>({\n\tchildren,\n\tlocale,\n\tcontent,\n}: SupportTextProviderProps<Locale>): React.ReactElement {\n\tconst { website, availableHumanAgents, availableAIAgents, visitor } =\n\t\tuseSupport();\n\tconst [isHydrated, setIsHydrated] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tsetIsHydrated(true);\n\t}, []);\n\n\tconst localeChain = React.useMemo(\n\t\t() => buildLocaleChain([locale, visitor?.locale]),\n\t\t[locale, visitor?.locale]\n\t);\n\n\tconst normalizedOverrides = React.useMemo(\n\t\t() => normalizeOverrides(content),\n\t\t[content]\n\t);\n\n\tconst utils = React.useMemo(\n\t\t() => createTextUtils(localeChain[0] ?? \"en\", isHydrated),\n\t\t[localeChain, isHydrated]\n\t);\n\n\tconst textContext = React.useMemo<SupportTextContext>(\n\t\t() => ({\n\t\t\twebsite,\n\t\t\tvisitor: visitor ?? null,\n\t\t\thumanAgents: availableHumanAgents,\n\t\t\taiAgents: availableAIAgents,\n\t\t}),\n\t\t[website, visitor, availableHumanAgents, availableAIAgents]\n\t);\n\n\tconst format = ((key: SupportTextKey, variables?: unknown) => {\n\t\tconst definition = supportTextDefinitions[key];\n\t\tconst requiresVariables =\n\t\t\tdefinition.variables !== undefined &&\n\t\t\t!(\"optional\" in definition && definition.optional === true);\n\n\t\tif (requiresVariables && variables === undefined) {\n\t\t\tthrow new Error(`Missing variables for text key \"${key}\".`);\n\t\t}\n\n\t\tconst resolved = resolveMessage(key, localeChain, normalizedOverrides);\n\t\treturn evaluateMessage(\n\t\t\tkey,\n\t\t\tresolved,\n\t\t\tvariables as SupportTextVariables<typeof key>,\n\t\t\ttextContext,\n\t\t\tutils\n\t\t);\n\t}) as SupportTextResolvedFormatter;\n\n\tconst value = React.useMemo<SupportTextProviderValue>(\n\t\t() => ({\n\t\t\tformat,\n\t\t\tlocale: localeChain[0] ?? \"en\",\n\t\t}),\n\t\t[localeChain, normalizedOverrides, textContext, utils]\n\t);\n\n\treturn (\n\t\t<SupportTextRuntimeContext.Provider value={value}>\n\t\t\t{children}\n\t\t</SupportTextRuntimeContext.Provider>\n\t);\n}\n\n/**\n * Returns the active text formatter for the support widget. Throws if used\n * outside of `SupportTextProvider` to help catch integration mistakes.\n */\nexport function useSupportText(): SupportTextResolvedFormatter {\n\tconst context = React.useContext(SupportTextRuntimeContext);\n\tif (!context) {\n\t\tthrow new Error(\"useSupportText must be used within SupportTextProvider\");\n\t}\n\n\treturn context.format;\n}\n\ntype OptionalVariablesProp<K extends SupportTextKey> =\n\tSupportTextDefinitions[K][\"variables\"] extends undefined\n\t\t? { variables?: undefined }\n\t\t: \"optional\" extends keyof SupportTextDefinitions[K]\n\t\t\t? SupportTextDefinitions[K][\"optional\"] extends true\n\t\t\t\t? { variables?: SupportTextVariables<K> }\n\t\t\t\t: { variables: SupportTextVariables<K> }\n\t\t\t: { variables: SupportTextVariables<K> };\n\ntype TextProps<\n\tK extends SupportTextKey,\n\tAs extends keyof React.JSX.IntrinsicElements = \"span\",\n> = OptionalVariablesProp<K> & {\n\ttextKey: K;\n\tas?: As;\n} & Omit<React.ComponentPropsWithoutRef<As>, \"children\">;\n\nfunction TextInner<\n\tK extends SupportTextKey,\n\tAs extends keyof React.JSX.IntrinsicElements = \"span\",\n>(\n\tprops: TextProps<K, As>,\n\tforwardedRef: React.ComponentPropsWithRef<As>[\"ref\"]\n) {\n\tconst { textKey, variables, as, ...rest } = props as TextProps<K, As>;\n\tconst format = useSupportText();\n\tconst Component = (as ?? \"span\") as As;\n\tconst content =\n\t\tvariables !== undefined\n\t\t\t? format(textKey, variables as SupportTextVariables<K>)\n\t\t\t: format(textKey);\n\n\treturn React.createElement(Component, {\n\t\t...rest,\n\t\tref: forwardedRef,\n\t\t\"data-key-name\": textKey,\n\t\tchildren: content,\n\t});\n}\n\n/**\n * Convenience component that renders localized support copy via the\n * `SupportTextProvider` context while still allowing callers to customize the\n * rendered HTML element.\n */\nexport const Text = React.forwardRef(TextInner) as <\n\tK extends SupportTextKey,\n\tAs extends keyof React.JSX.IntrinsicElements = \"span\",\n>(\n\tprops: TextProps<K, As> & { ref?: React.ComponentPropsWithRef<As>[\"ref\"] }\n) => React.ReactElement | null;\n\n(Text as { displayName?: string }).displayName = \"SupportText\";\n\nexport type {\n\tSupportLocale,\n\tSupportTextContentOverrides,\n\tSupportTextKey,\n\tSupportTextVariables,\n} from \"./locales/keys\";\n"],"mappings":";;;;;;;AA8BA,MAAM,4BACL,MAAM,cAA+C,KAAK;;;;;;AAO3D,SAAgB,oBAA2D,EAC1E,UACA,QACA,WACwD;CACxD,MAAM,EAAE,SAAS,sBAAsB,mBAAmB,YACzD,YAAY;CACb,MAAM,CAAC,YAAY,iBAAiB,MAAM,SAAS,MAAM;AAEzD,OAAM,gBAAgB;AACrB,gBAAc,KAAK;IACjB,EAAE,CAAC;CAEN,MAAM,cAAc,MAAM,cACnB,iBAAiB,CAAC,QAAQ,SAAS,OAAO,CAAC,EACjD,CAAC,QAAQ,SAAS,OAAO,CACzB;CAED,MAAM,sBAAsB,MAAM,cAC3B,mBAAmB,QAAQ,EACjC,CAAC,QAAQ,CACT;CAED,MAAM,QAAQ,MAAM,cACb,gBAAgB,YAAY,MAAM,MAAM,WAAW,EACzD,CAAC,aAAa,WAAW,CACzB;CAED,MAAM,cAAc,MAAM,eAClB;EACN;EACA,SAAS,WAAW;EACpB,aAAa;EACb,UAAU;EACV,GACD;EAAC;EAAS;EAAS;EAAsB;EAAkB,CAC3D;CAED,MAAM,WAAW,KAAqB,cAAwB;EAC7D,MAAM,aAAa,uBAAuB;AAK1C,MAHC,WAAW,cAAc,UACzB,EAAE,cAAc,cAAc,WAAW,aAAa,SAE9B,cAAc,OACtC,OAAM,IAAI,MAAM,mCAAmC,IAAI,IAAI;AAI5D,SAAO,gBACN,KAFgB,eAAe,KAAK,aAAa,oBAAoB,EAIrE,WACA,aACA,MACA;;CAGF,MAAM,QAAQ,MAAM,eACZ;EACN;EACA,QAAQ,YAAY,MAAM;EAC1B,GACD;EAAC;EAAa;EAAqB;EAAa;EAAM,CACtD;AAED,QACC,oBAAC,0BAA0B;EAAgB;EACzC;GACmC;;;;;;AAQvC,SAAgB,iBAA+C;CAC9D,MAAM,UAAU,MAAM,WAAW,0BAA0B;AAC3D,KAAI,CAAC,QACJ,OAAM,IAAI,MAAM,yDAAyD;AAG1E,QAAO,QAAQ;;AAoBhB,SAAS,UAIR,OACA,cACC;CACD,MAAM,EAAE,SAAS,WAAW,GAAI,GAAG,SAAS;CAC5C,MAAM,SAAS,gBAAgB;CAC/B,MAAM,YAAa,MAAM;CACzB,MAAM,UACL,cAAc,SACX,OAAO,SAAS,UAAqC,GACrD,OAAO,QAAQ;AAEnB,QAAO,MAAM,cAAc,WAAW;EACrC,GAAG;EACH,KAAK;EACL,iBAAiB;EACjB,UAAU;EACV,CAAC;;;;;;;AAQH,MAAa,OAAO,MAAM,WAAW,UAAU;AAO/C,AAAC,KAAkC,cAAc"}
@@ -17,12 +17,12 @@ const en = {
17
17
  "page.home.greeting": ({ variables, context, utils }) => {
18
18
  const period = utils.timeOfDay();
19
19
  const phrases = {
20
- morning: "morning",
21
- afternoon: "afternoon",
22
- evening: "evening"
20
+ morning: "Morning",
21
+ afternoon: "Afternoon",
22
+ evening: "Evening"
23
23
  };
24
24
  const visitorName = variables?.visitorName || context.visitor?.contact?.name;
25
- return `Good ${phrases[period.token]}${visitorName ? ` ${visitorName}` : ""}, How can we help?`;
25
+ return `${phrases[period.token]}${visitorName ? ` ${visitorName}` : ""}, how can we help?`;
26
26
  },
27
27
  "page.home.history.more": ({ variables, utils }) => {
28
28
  const count = variables.count;
@@ -40,6 +40,10 @@ const en = {
40
40
  "component.conversationButtonLink.lastMessage.agent": ({ variables }) => `${variables.name} - ${variables.time}`,
41
41
  "component.conversationButtonLink.lastMessage.visitor": ({ variables }) => `You - ${variables.time}`,
42
42
  "component.conversationButtonLink.typing": ({ variables }) => `${variables.name} is typing...`,
43
+ "component.conversationButtonLink.status.open": "Open",
44
+ "component.conversationButtonLink.status.resolved": "Resolved",
45
+ "component.conversationButtonLink.status.spam": "Spam",
46
+ "component.conversationButtonLink.status.closed": "closed",
43
47
  "component.conversationEvent.assigned": ({ variables }) => `${variables.actorName} assigned the conversation`,
44
48
  "component.conversationEvent.unassigned": ({ variables }) => `${variables.actorName} unassigned the conversation`,
45
49
  "component.conversationEvent.default": ({ variables }) => `${variables.actorName} performed an action`,
@@ -52,6 +56,20 @@ const en = {
52
56
  "component.conversationEvent.statusChanged": ({ variables }) => `${variables.actorName} changed the status`,
53
57
  "component.conversationEvent.tagAdded": ({ variables }) => `${variables.actorName} added a tag`,
54
58
  "component.conversationEvent.tagRemoved": ({ variables }) => `${variables.actorName} removed a tag`,
59
+ "component.conversationEvent.visitorBlocked": ({ variables }) => `${variables.actorName} blocked the visitor`,
60
+ "component.conversationEvent.visitorUnblocked": ({ variables }) => `${variables.actorName} unblocked the visitor`,
61
+ "component.conversationEvent.visitorIdentified": () => "Contact details confirmed",
62
+ "component.identificationTool.title": "Let us keep in touch",
63
+ "component.identificationTool.description": "Leave your email so we can follow up on this conversation.",
64
+ "component.identificationTool.cta": "Share email",
65
+ "component.identificationTool.loading": "Saving...",
66
+ "component.identificationTool.success": "Thanks! We'll reach out to you at this email if we need to.",
67
+ "component.identificationTool.error": "We couldn't save your email. Please try again.",
68
+ "component.identificationTool.validation": "Enter an email address to continue.",
69
+ "component.identificationTool.inputPlaceholder": "you@example.com",
70
+ "component.identificationTool.inputLabel": "Email address",
71
+ "component.identificationTool.eventLog": "Visitor confirmed their email address",
72
+ "component.conversationPage.closedMessage": "This conversation is closed, start a new one to talk with us",
55
73
  "component.multimodalInput.placeholder": "Type your message...",
56
74
  "component.multimodalInput.remove": ({ variables }) => `Remove ${variables.fileName}`,
57
75
  "component.navigation.articles": "Articles",
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","names":["en: SupportLocaleMessages","phrases: Record<typeof period.token, string>"],"sources":["../../../../src/support/text/locales/en.tsx"],"sourcesContent":["import type { SupportLocaleMessages } from \"./keys\";\n\nconst en: SupportLocaleMessages = {\n\t\"common.actions.askQuestion\": \"Ask us a question\",\n\t\"common.actions.attachFiles\": \"Attach files\",\n\t\"common.actions.removeFile\": ({ variables }) =>\n\t\t`Remove ${variables.fileName}`,\n\t\"common.brand.watermark\": \"We run on\",\n\t\"common.fallbacks.aiAssistant\": \"AI assistant\",\n\t\"common.fallbacks.cossistant\": \"Cossistant\",\n\t\"common.fallbacks.someone\": \"Someone\",\n\t\"common.fallbacks.supportTeam\": \"Support\",\n\t\"common.fallbacks.unknown\": \"Unknown\",\n\t\"common.fallbacks.you\": \"You\",\n\t\"common.labels.aiAgentIndicator\": \"AI agent\",\n\t\"common.labels.supportOnline\": \"Support online\",\n\t\"page.conversationHistory.showMore\": ({ variables, utils }) =>\n\t\t`+${utils.formatNumber(variables.count)} more`,\n\t\"page.conversationHistory.title\": \"Conversation history\",\n\t\"page.home.greeting\": ({ variables, context, utils }) => {\n\t\tconst period = utils.timeOfDay();\n\t\tconst phrases: Record<typeof period.token, string> = {\n\t\t\tmorning: \"morning\",\n\t\t\tafternoon: \"afternoon\",\n\t\t\tevening: \"evening\",\n\t\t};\n\t\tconst visitorName =\n\t\t\tvariables?.visitorName || context.visitor?.contact?.name;\n\t\treturn `Good ${phrases[period.token]}${visitorName ? ` ${visitorName}` : \"\"}, How can we help?`;\n\t},\n\t\"page.home.history.more\": ({ variables, utils }) => {\n\t\tconst count = variables.count;\n\t\tconst noun = utils.pluralize(count, {\n\t\t\tone: \"conversation\",\n\t\t\tother: \"conversations\",\n\t\t});\n\t\treturn `+ ${utils.formatNumber(count)} more ${noun}`;\n\t},\n\t\"page.home.tagline\": ({ variables, context, utils }) => {\n\t\tconst websiteName = variables?.websiteName || context.website?.name || \"\";\n\t\tconst formatted = websiteName\n\t\t\t? `${utils.titleCase(websiteName)} support`\n\t\t\t: \"Support\";\n\t\treturn formatted;\n\t},\n\t\"component.conversationButtonLink.fallbackTitle\": \"Untitled conversation\",\n\t\"component.conversationButtonLink.lastMessage.agent\": ({ variables }) =>\n\t\t`${variables.name} - ${variables.time}`,\n\t\"component.conversationButtonLink.lastMessage.visitor\": ({ variables }) =>\n\t\t`You - ${variables.time}`,\n\t\"component.conversationButtonLink.typing\": ({ variables }) =>\n\t\t`${variables.name} is typing...`,\n\t\"component.conversationEvent.assigned\": ({ variables }) =>\n\t\t`${variables.actorName} assigned the conversation`,\n\t\"component.conversationEvent.unassigned\": ({ variables }) =>\n\t\t`${variables.actorName} unassigned the conversation`,\n\t\"component.conversationEvent.default\": ({ variables }) =>\n\t\t`${variables.actorName} performed an action`,\n\t\"component.conversationEvent.participantJoined\": ({ variables }) =>\n\t\t`${variables.actorName} joined the conversation`,\n\t\"component.conversationEvent.participantLeft\": ({ variables }) =>\n\t\t`${variables.actorName} left the conversation`,\n\t\"component.conversationEvent.participantRequested\": ({ variables }) =>\n\t\t`${variables.actorName} requested to join`,\n\t\"component.conversationEvent.priorityChanged\": ({ variables }) =>\n\t\t`${variables.actorName} changed the priority`,\n\t\"component.conversationEvent.reopened\": ({ variables }) =>\n\t\t`${variables.actorName} reopened the conversation`,\n\t\"component.conversationEvent.resolved\": ({ variables }) =>\n\t\t`${variables.actorName} resolved the conversation`,\n\t\"component.conversationEvent.statusChanged\": ({ variables }) =>\n\t\t`${variables.actorName} changed the status`,\n\t\"component.conversationEvent.tagAdded\": ({ variables }) =>\n\t\t`${variables.actorName} added a tag`,\n\t\"component.conversationEvent.tagRemoved\": ({ variables }) =>\n\t\t`${variables.actorName} removed a tag`,\n\t\"component.multimodalInput.placeholder\": \"Type your message...\",\n\t\"component.multimodalInput.remove\": ({ variables }) =>\n\t\t`Remove ${variables.fileName}`,\n\t\"component.navigation.articles\": \"Articles\",\n\t\"component.navigation.home\": \"Home\",\n\t\"component.message.timestamp.aiIndicator\": \"• AI agent\",\n};\n\nexport default en;\n"],"mappings":";AAEA,MAAMA,KAA4B;CACjC,8BAA8B;CAC9B,8BAA8B;CAC9B,8BAA8B,EAAE,gBAC/B,UAAU,UAAU;CACrB,0BAA0B;CAC1B,gCAAgC;CAChC,+BAA+B;CAC/B,4BAA4B;CAC5B,gCAAgC;CAChC,4BAA4B;CAC5B,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;CAC/B,sCAAsC,EAAE,WAAW,YAClD,IAAI,MAAM,aAAa,UAAU,MAAM,CAAC;CACzC,kCAAkC;CAClC,uBAAuB,EAAE,WAAW,SAAS,YAAY;EACxD,MAAM,SAAS,MAAM,WAAW;EAChC,MAAMC,UAA+C;GACpD,SAAS;GACT,WAAW;GACX,SAAS;GACT;EACD,MAAM,cACL,WAAW,eAAe,QAAQ,SAAS,SAAS;AACrD,SAAO,QAAQ,QAAQ,OAAO,SAAS,cAAc,IAAI,gBAAgB,GAAG;;CAE7E,2BAA2B,EAAE,WAAW,YAAY;EACnD,MAAM,QAAQ,UAAU;EACxB,MAAM,OAAO,MAAM,UAAU,OAAO;GACnC,KAAK;GACL,OAAO;GACP,CAAC;AACF,SAAO,KAAK,MAAM,aAAa,MAAM,CAAC,QAAQ;;CAE/C,sBAAsB,EAAE,WAAW,SAAS,YAAY;EACvD,MAAM,cAAc,WAAW,eAAe,QAAQ,SAAS,QAAQ;AAIvE,SAHkB,cACf,GAAG,MAAM,UAAU,YAAY,CAAC,YAChC;;CAGJ,kDAAkD;CAClD,uDAAuD,EAAE,gBACxD,GAAG,UAAU,KAAK,KAAK,UAAU;CAClC,yDAAyD,EAAE,gBAC1D,SAAS,UAAU;CACpB,4CAA4C,EAAE,gBAC7C,GAAG,UAAU,KAAK;CACnB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,wCAAwC,EAAE,gBACzC,GAAG,UAAU,UAAU;CACxB,kDAAkD,EAAE,gBACnD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,qDAAqD,EAAE,gBACtD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,8CAA8C,EAAE,gBAC/C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,yCAAyC;CACzC,qCAAqC,EAAE,gBACtC,UAAU,UAAU;CACrB,iCAAiC;CACjC,6BAA6B;CAC7B,2CAA2C;CAC3C;AAED,iBAAe"}
1
+ {"version":3,"file":"en.js","names":["en: SupportLocaleMessages","phrases: Record<typeof period.token, string>"],"sources":["../../../../src/support/text/locales/en.tsx"],"sourcesContent":["import type { SupportLocaleMessages } from \"./keys\";\n\nconst en: SupportLocaleMessages = {\n\t\"common.actions.askQuestion\": \"Ask us a question\",\n\t\"common.actions.attachFiles\": \"Attach files\",\n\t\"common.actions.removeFile\": ({ variables }) =>\n\t\t`Remove ${variables.fileName}`,\n\t\"common.brand.watermark\": \"We run on\",\n\t\"common.fallbacks.aiAssistant\": \"AI assistant\",\n\t\"common.fallbacks.cossistant\": \"Cossistant\",\n\t\"common.fallbacks.someone\": \"Someone\",\n\t\"common.fallbacks.supportTeam\": \"Support\",\n\t\"common.fallbacks.unknown\": \"Unknown\",\n\t\"common.fallbacks.you\": \"You\",\n\t\"common.labels.aiAgentIndicator\": \"AI agent\",\n\t\"common.labels.supportOnline\": \"Support online\",\n\t\"page.conversationHistory.showMore\": ({ variables, utils }) =>\n\t\t`+${utils.formatNumber(variables.count)} more`,\n\t\"page.conversationHistory.title\": \"Conversation history\",\n\t\"page.home.greeting\": ({ variables, context, utils }) => {\n\t\tconst period = utils.timeOfDay();\n\t\tconst phrases: Record<typeof period.token, string> = {\n\t\t\tmorning: \"Morning\",\n\t\t\tafternoon: \"Afternoon\",\n\t\t\tevening: \"Evening\",\n\t\t};\n\t\tconst visitorName =\n\t\t\tvariables?.visitorName || context.visitor?.contact?.name;\n\t\treturn `${phrases[period.token]}${visitorName ? ` ${visitorName}` : \"\"}, how can we help?`;\n\t},\n\t\"page.home.history.more\": ({ variables, utils }) => {\n\t\tconst count = variables.count;\n\t\tconst noun = utils.pluralize(count, {\n\t\t\tone: \"conversation\",\n\t\t\tother: \"conversations\",\n\t\t});\n\t\treturn `+ ${utils.formatNumber(count)} more ${noun}`;\n\t},\n\t\"page.home.tagline\": ({ variables, context, utils }) => {\n\t\tconst websiteName = variables?.websiteName || context.website?.name || \"\";\n\t\tconst formatted = websiteName\n\t\t\t? `${utils.titleCase(websiteName)} support`\n\t\t\t: \"Support\";\n\t\treturn formatted;\n\t},\n\t\"component.conversationButtonLink.fallbackTitle\": \"Untitled conversation\",\n\t\"component.conversationButtonLink.lastMessage.agent\": ({ variables }) =>\n\t\t`${variables.name} - ${variables.time}`,\n\t\"component.conversationButtonLink.lastMessage.visitor\": ({ variables }) =>\n\t\t`You - ${variables.time}`,\n\t\"component.conversationButtonLink.typing\": ({ variables }) =>\n\t\t`${variables.name} is typing...`,\n\t\"component.conversationButtonLink.status.open\": \"Open\",\n\t\"component.conversationButtonLink.status.resolved\": \"Resolved\",\n\t\"component.conversationButtonLink.status.spam\": \"Spam\",\n\t\"component.conversationButtonLink.status.closed\": \"closed\",\n\t\"component.conversationEvent.assigned\": ({ variables }) =>\n\t\t`${variables.actorName} assigned the conversation`,\n\t\"component.conversationEvent.unassigned\": ({ variables }) =>\n\t\t`${variables.actorName} unassigned the conversation`,\n\t\"component.conversationEvent.default\": ({ variables }) =>\n\t\t`${variables.actorName} performed an action`,\n\t\"component.conversationEvent.participantJoined\": ({ variables }) =>\n\t\t`${variables.actorName} joined the conversation`,\n\t\"component.conversationEvent.participantLeft\": ({ variables }) =>\n\t\t`${variables.actorName} left the conversation`,\n\t\"component.conversationEvent.participantRequested\": ({ variables }) =>\n\t\t`${variables.actorName} requested to join`,\n\t\"component.conversationEvent.priorityChanged\": ({ variables }) =>\n\t\t`${variables.actorName} changed the priority`,\n\t\"component.conversationEvent.reopened\": ({ variables }) =>\n\t\t`${variables.actorName} reopened the conversation`,\n\t\"component.conversationEvent.resolved\": ({ variables }) =>\n\t\t`${variables.actorName} resolved the conversation`,\n\t\"component.conversationEvent.statusChanged\": ({ variables }) =>\n\t\t`${variables.actorName} changed the status`,\n\t\"component.conversationEvent.tagAdded\": ({ variables }) =>\n\t\t`${variables.actorName} added a tag`,\n\t\"component.conversationEvent.tagRemoved\": ({ variables }) =>\n\t\t`${variables.actorName} removed a tag`,\n\t\"component.conversationEvent.visitorBlocked\": ({ variables }) =>\n\t\t`${variables.actorName} blocked the visitor`,\n\t\"component.conversationEvent.visitorUnblocked\": ({ variables }) =>\n\t\t`${variables.actorName} unblocked the visitor`,\n\t\"component.conversationEvent.visitorIdentified\": () =>\n\t\t\"Contact details confirmed\",\n\t\"component.identificationTool.title\": \"Let us keep in touch\",\n\t\"component.identificationTool.description\":\n\t\t\"Leave your email so we can follow up on this conversation.\",\n\t\"component.identificationTool.cta\": \"Share email\",\n\t\"component.identificationTool.loading\": \"Saving...\",\n\t\"component.identificationTool.success\":\n\t\t\"Thanks! We'll reach out to you at this email if we need to.\",\n\t\"component.identificationTool.error\":\n\t\t\"We couldn't save your email. Please try again.\",\n\t\"component.identificationTool.validation\":\n\t\t\"Enter an email address to continue.\",\n\t\"component.identificationTool.inputPlaceholder\": \"you@example.com\",\n\t\"component.identificationTool.inputLabel\": \"Email address\",\n\t\"component.identificationTool.eventLog\":\n\t\t\"Visitor confirmed their email address\",\n\t\"component.conversationPage.closedMessage\":\n\t\t\"This conversation is closed, start a new one to talk with us\",\n\t\"component.multimodalInput.placeholder\": \"Type your message...\",\n\t\"component.multimodalInput.remove\": ({ variables }) =>\n\t\t`Remove ${variables.fileName}`,\n\t\"component.navigation.articles\": \"Articles\",\n\t\"component.navigation.home\": \"Home\",\n\t\"component.message.timestamp.aiIndicator\": \"• AI agent\",\n};\n\nexport default en;\n"],"mappings":";AAEA,MAAMA,KAA4B;CACjC,8BAA8B;CAC9B,8BAA8B;CAC9B,8BAA8B,EAAE,gBAC/B,UAAU,UAAU;CACrB,0BAA0B;CAC1B,gCAAgC;CAChC,+BAA+B;CAC/B,4BAA4B;CAC5B,gCAAgC;CAChC,4BAA4B;CAC5B,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;CAC/B,sCAAsC,EAAE,WAAW,YAClD,IAAI,MAAM,aAAa,UAAU,MAAM,CAAC;CACzC,kCAAkC;CAClC,uBAAuB,EAAE,WAAW,SAAS,YAAY;EACxD,MAAM,SAAS,MAAM,WAAW;EAChC,MAAMC,UAA+C;GACpD,SAAS;GACT,WAAW;GACX,SAAS;GACT;EACD,MAAM,cACL,WAAW,eAAe,QAAQ,SAAS,SAAS;AACrD,SAAO,GAAG,QAAQ,OAAO,SAAS,cAAc,IAAI,gBAAgB,GAAG;;CAExE,2BAA2B,EAAE,WAAW,YAAY;EACnD,MAAM,QAAQ,UAAU;EACxB,MAAM,OAAO,MAAM,UAAU,OAAO;GACnC,KAAK;GACL,OAAO;GACP,CAAC;AACF,SAAO,KAAK,MAAM,aAAa,MAAM,CAAC,QAAQ;;CAE/C,sBAAsB,EAAE,WAAW,SAAS,YAAY;EACvD,MAAM,cAAc,WAAW,eAAe,QAAQ,SAAS,QAAQ;AAIvE,SAHkB,cACf,GAAG,MAAM,UAAU,YAAY,CAAC,YAChC;;CAGJ,kDAAkD;CAClD,uDAAuD,EAAE,gBACxD,GAAG,UAAU,KAAK,KAAK,UAAU;CAClC,yDAAyD,EAAE,gBAC1D,SAAS,UAAU;CACpB,4CAA4C,EAAE,gBAC7C,GAAG,UAAU,KAAK;CACnB,gDAAgD;CAChD,oDAAoD;CACpD,gDAAgD;CAChD,kDAAkD;CAClD,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,wCAAwC,EAAE,gBACzC,GAAG,UAAU,UAAU;CACxB,kDAAkD,EAAE,gBACnD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,qDAAqD,EAAE,gBACtD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,8CAA8C,EAAE,gBAC/C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,+CAA+C,EAAE,gBAChD,GAAG,UAAU,UAAU;CACxB,iDAAiD,EAAE,gBAClD,GAAG,UAAU,UAAU;CACxB,uDACC;CACD,sCAAsC;CACtC,4CACC;CACD,oCAAoC;CACpC,wCAAwC;CACxC,wCACC;CACD,sCACC;CACD,2CACC;CACD,iDAAiD;CACjD,2CAA2C;CAC3C,yCACC;CACD,4CACC;CACD,yCAAyC;CACzC,qCAAqC,EAAE,gBACtC,UAAU,UAAU;CACrB,iCAAiC;CACjC,6BAA6B;CAC7B,2CAA2C;CAC3C;AAED,iBAAe"}
@@ -39,6 +39,9 @@ const es = {
39
39
  "component.conversationButtonLink.lastMessage.agent": ({ variables }) => `${variables.name} - ${variables.time}`,
40
40
  "component.conversationButtonLink.lastMessage.visitor": ({ variables }) => `Tú - ${variables.time}`,
41
41
  "component.conversationButtonLink.typing": ({ variables }) => `${variables.name} está escribiendo...`,
42
+ "component.conversationButtonLink.status.open": "Abierta",
43
+ "component.conversationButtonLink.status.resolved": "Resuelta",
44
+ "component.conversationButtonLink.status.spam": "Spam",
42
45
  "component.conversationEvent.assigned": ({ variables }) => `${variables.actorName} asignó la conversación`,
43
46
  "component.conversationEvent.unassigned": ({ variables }) => `${variables.actorName} retiró la asignación de la conversación`,
44
47
  "component.conversationEvent.default": ({ variables }) => `${variables.actorName} realizó una acción`,
@@ -48,9 +51,24 @@ const es = {
48
51
  "component.conversationEvent.priorityChanged": ({ variables }) => `${variables.actorName} cambió la prioridad`,
49
52
  "component.conversationEvent.reopened": ({ variables }) => `${variables.actorName} reabrió la conversación`,
50
53
  "component.conversationEvent.resolved": ({ variables }) => `${variables.actorName} resolvió la conversación`,
54
+ "component.conversationButtonLink.status.closed": "Cerrada",
51
55
  "component.conversationEvent.statusChanged": ({ variables }) => `${variables.actorName} cambió el estado`,
52
56
  "component.conversationEvent.tagAdded": ({ variables }) => `${variables.actorName} agregó una etiqueta`,
53
57
  "component.conversationEvent.tagRemoved": ({ variables }) => `${variables.actorName} quitó una etiqueta`,
58
+ "component.conversationEvent.visitorBlocked": ({ variables }) => `${variables.actorName} bloqueó al visitante`,
59
+ "component.conversationEvent.visitorUnblocked": ({ variables }) => `${variables.actorName} desbloqueó al visitante`,
60
+ "component.conversationEvent.visitorIdentified": () => "Detalles de contacto confirmados",
61
+ "component.identificationTool.title": "Comparte tu correo",
62
+ "component.identificationTool.description": "Déjanos tu correo electrónico para que podamos continuar la conversación.",
63
+ "component.identificationTool.cta": "Compartir correo",
64
+ "component.identificationTool.loading": "Guardando...",
65
+ "component.identificationTool.success": "¡Gracias! Usaremos este correo si necesitamos contactarte.",
66
+ "component.identificationTool.error": "No pudimos guardar tu correo. Inténtalo de nuevo.",
67
+ "component.identificationTool.validation": "Ingresa un correo electrónico para continuar.",
68
+ "component.identificationTool.inputPlaceholder": "tu@ejemplo.com",
69
+ "component.identificationTool.inputLabel": "Correo electrónico",
70
+ "component.identificationTool.eventLog": "El visitante confirmó su correo electrónico",
71
+ "component.conversationPage.closedMessage": "Esta conversación está cerrada, inicia una nueva para hablar con nosotros",
54
72
  "component.multimodalInput.placeholder": "Escribe tu mensaje...",
55
73
  "component.multimodalInput.remove": ({ variables }) => `Eliminar ${variables.fileName}`,
56
74
  "component.navigation.articles": "Artículos",
@@ -1 +1 @@
1
- {"version":3,"file":"es.js","names":["es: SupportLocaleMessages"],"sources":["../../../../src/support/text/locales/es.tsx"],"sourcesContent":["import type { SupportLocaleMessages } from \"./keys\";\n\nconst es: SupportLocaleMessages = {\n\t\"common.actions.askQuestion\": \"Haznos una pregunta\",\n\t\"common.actions.attachFiles\": \"Adjuntar archivos\",\n\t\"common.actions.removeFile\": ({ variables }) =>\n\t\t`Eliminar ${variables.fileName}`,\n\t\"common.brand.watermark\": \"Impulsado por\",\n\t\"common.fallbacks.aiAssistant\": \"Asistente de IA\",\n\t\"common.fallbacks.cossistant\": \"Cossistant\",\n\t\"common.fallbacks.someone\": \"Alguien\",\n\t\"common.fallbacks.supportTeam\": \"Soporte\",\n\t\"common.fallbacks.unknown\": \"Desconocido\",\n\t\"common.fallbacks.you\": \"Tú\",\n\t\"common.labels.aiAgentIndicator\": \"Agente IA\",\n\t\"common.labels.supportOnline\": \"Soporte en línea\",\n\t\"page.conversationHistory.showMore\": ({ variables, utils }) =>\n\t\t`+${utils.formatNumber(variables.count)} más`,\n\t\"page.conversationHistory.title\": \"Historial de conversaciones\",\n\t\"page.home.greeting\": ({ variables, context, utils }) => {\n\t\tconst period = utils.timeOfDay();\n\t\tconst prefixes: Record<typeof period.token, string> = {\n\t\t\tmorning: \"Buenos días\",\n\t\t\tafternoon: \"Buenas tardes\",\n\t\t\tevening: \"Buenas noches\",\n\t\t};\n\t\tconst prefix = prefixes[period.token];\n\t\tconst visitorName =\n\t\t\tvariables?.visitorName || context.visitor?.contact?.name;\n\t\treturn `${prefix}${visitorName ? ` ${visitorName}` : \"\"}, ¿en qué podemos ayudarte?`;\n\t},\n\t\"page.home.history.more\": ({ variables, utils }) => {\n\t\tconst count = variables.count;\n\t\tconst noun = utils.pluralize(count, {\n\t\t\tone: \"conversación más\",\n\t\t\tother: \"conversaciones más\",\n\t\t});\n\t\treturn `+ ${utils.formatNumber(count)} ${noun}`;\n\t},\n\t\"page.home.tagline\": ({ variables, context, utils }) => {\n\t\tconst websiteName = variables?.websiteName || context.website?.name || \"\";\n\t\treturn websiteName ? `Soporte ${utils.titleCase(websiteName)}` : \"Soporte\";\n\t},\n\t\"component.conversationButtonLink.fallbackTitle\": \"Conversación sin título\",\n\t\"component.conversationButtonLink.lastMessage.agent\": ({ variables }) =>\n\t\t`${variables.name} - ${variables.time}`,\n\t\"component.conversationButtonLink.lastMessage.visitor\": ({ variables }) =>\n\t\t`Tú - ${variables.time}`,\n\t\"component.conversationButtonLink.typing\": ({ variables }) =>\n\t\t`${variables.name} está escribiendo...`,\n\t\"component.conversationEvent.assigned\": ({ variables }) =>\n\t\t`${variables.actorName} asignó la conversación`,\n\t\"component.conversationEvent.unassigned\": ({ variables }) =>\n\t\t`${variables.actorName} retiró la asignación de la conversación`,\n\t\"component.conversationEvent.default\": ({ variables }) =>\n\t\t`${variables.actorName} realizó una acción`,\n\t\"component.conversationEvent.participantJoined\": ({ variables }) =>\n\t\t`${variables.actorName} se unió a la conversación`,\n\t\"component.conversationEvent.participantLeft\": ({ variables }) =>\n\t\t`${variables.actorName} salió de la conversación`,\n\t\"component.conversationEvent.participantRequested\": ({ variables }) =>\n\t\t`${variables.actorName} solicitó unirse`,\n\t\"component.conversationEvent.priorityChanged\": ({ variables }) =>\n\t\t`${variables.actorName} cambió la prioridad`,\n\t\"component.conversationEvent.reopened\": ({ variables }) =>\n\t\t`${variables.actorName} reabrió la conversación`,\n\t\"component.conversationEvent.resolved\": ({ variables }) =>\n\t\t`${variables.actorName} resolvió la conversación`,\n\t\"component.conversationEvent.statusChanged\": ({ variables }) =>\n\t\t`${variables.actorName} cambió el estado`,\n\t\"component.conversationEvent.tagAdded\": ({ variables }) =>\n\t\t`${variables.actorName} agregó una etiqueta`,\n\t\"component.conversationEvent.tagRemoved\": ({ variables }) =>\n\t\t`${variables.actorName} quitó una etiqueta`,\n\t\"component.multimodalInput.placeholder\": \"Escribe tu mensaje...\",\n\t\"component.multimodalInput.remove\": ({ variables }) =>\n\t\t`Eliminar ${variables.fileName}`,\n\t\"component.navigation.articles\": \"Artículos\",\n\t\"component.navigation.home\": \"Inicio\",\n\t\"component.message.timestamp.aiIndicator\": \"• Agente IA\",\n};\n\nexport default es;\n"],"mappings":";AAEA,MAAMA,KAA4B;CACjC,8BAA8B;CAC9B,8BAA8B;CAC9B,8BAA8B,EAAE,gBAC/B,YAAY,UAAU;CACvB,0BAA0B;CAC1B,gCAAgC;CAChC,+BAA+B;CAC/B,4BAA4B;CAC5B,gCAAgC;CAChC,4BAA4B;CAC5B,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;CAC/B,sCAAsC,EAAE,WAAW,YAClD,IAAI,MAAM,aAAa,UAAU,MAAM,CAAC;CACzC,kCAAkC;CAClC,uBAAuB,EAAE,WAAW,SAAS,YAAY;EAOxD,MAAM,SALgD;GACrD,SAAS;GACT,WAAW;GACX,SAAS;GACT,CALc,MAAM,WAAW,CAMD;EAC/B,MAAM,cACL,WAAW,eAAe,QAAQ,SAAS,SAAS;AACrD,SAAO,GAAG,SAAS,cAAc,IAAI,gBAAgB,GAAG;;CAEzD,2BAA2B,EAAE,WAAW,YAAY;EACnD,MAAM,QAAQ,UAAU;EACxB,MAAM,OAAO,MAAM,UAAU,OAAO;GACnC,KAAK;GACL,OAAO;GACP,CAAC;AACF,SAAO,KAAK,MAAM,aAAa,MAAM,CAAC,GAAG;;CAE1C,sBAAsB,EAAE,WAAW,SAAS,YAAY;EACvD,MAAM,cAAc,WAAW,eAAe,QAAQ,SAAS,QAAQ;AACvE,SAAO,cAAc,WAAW,MAAM,UAAU,YAAY,KAAK;;CAElE,kDAAkD;CAClD,uDAAuD,EAAE,gBACxD,GAAG,UAAU,KAAK,KAAK,UAAU;CAClC,yDAAyD,EAAE,gBAC1D,QAAQ,UAAU;CACnB,4CAA4C,EAAE,gBAC7C,GAAG,UAAU,KAAK;CACnB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,wCAAwC,EAAE,gBACzC,GAAG,UAAU,UAAU;CACxB,kDAAkD,EAAE,gBACnD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,qDAAqD,EAAE,gBACtD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,8CAA8C,EAAE,gBAC/C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,yCAAyC;CACzC,qCAAqC,EAAE,gBACtC,YAAY,UAAU;CACvB,iCAAiC;CACjC,6BAA6B;CAC7B,2CAA2C;CAC3C;AAED,iBAAe"}
1
+ {"version":3,"file":"es.js","names":["es: SupportLocaleMessages"],"sources":["../../../../src/support/text/locales/es.tsx"],"sourcesContent":["import type { SupportLocaleMessages } from \"./keys\";\n\nconst es: SupportLocaleMessages = {\n\t\"common.actions.askQuestion\": \"Haznos una pregunta\",\n\t\"common.actions.attachFiles\": \"Adjuntar archivos\",\n\t\"common.actions.removeFile\": ({ variables }) =>\n\t\t`Eliminar ${variables.fileName}`,\n\t\"common.brand.watermark\": \"Impulsado por\",\n\t\"common.fallbacks.aiAssistant\": \"Asistente de IA\",\n\t\"common.fallbacks.cossistant\": \"Cossistant\",\n\t\"common.fallbacks.someone\": \"Alguien\",\n\t\"common.fallbacks.supportTeam\": \"Soporte\",\n\t\"common.fallbacks.unknown\": \"Desconocido\",\n\t\"common.fallbacks.you\": \"Tú\",\n\t\"common.labels.aiAgentIndicator\": \"Agente IA\",\n\t\"common.labels.supportOnline\": \"Soporte en línea\",\n\t\"page.conversationHistory.showMore\": ({ variables, utils }) =>\n\t\t`+${utils.formatNumber(variables.count)} más`,\n\t\"page.conversationHistory.title\": \"Historial de conversaciones\",\n\t\"page.home.greeting\": ({ variables, context, utils }) => {\n\t\tconst period = utils.timeOfDay();\n\t\tconst prefixes: Record<typeof period.token, string> = {\n\t\t\tmorning: \"Buenos días\",\n\t\t\tafternoon: \"Buenas tardes\",\n\t\t\tevening: \"Buenas noches\",\n\t\t};\n\t\tconst prefix = prefixes[period.token];\n\t\tconst visitorName =\n\t\t\tvariables?.visitorName || context.visitor?.contact?.name;\n\t\treturn `${prefix}${visitorName ? ` ${visitorName}` : \"\"}, ¿en qué podemos ayudarte?`;\n\t},\n\t\"page.home.history.more\": ({ variables, utils }) => {\n\t\tconst count = variables.count;\n\t\tconst noun = utils.pluralize(count, {\n\t\t\tone: \"conversación más\",\n\t\t\tother: \"conversaciones más\",\n\t\t});\n\t\treturn `+ ${utils.formatNumber(count)} ${noun}`;\n\t},\n\t\"page.home.tagline\": ({ variables, context, utils }) => {\n\t\tconst websiteName = variables?.websiteName || context.website?.name || \"\";\n\t\treturn websiteName ? `Soporte ${utils.titleCase(websiteName)}` : \"Soporte\";\n\t},\n\t\"component.conversationButtonLink.fallbackTitle\": \"Conversación sin título\",\n\t\"component.conversationButtonLink.lastMessage.agent\": ({ variables }) =>\n\t\t`${variables.name} - ${variables.time}`,\n\t\"component.conversationButtonLink.lastMessage.visitor\": ({ variables }) =>\n\t\t`Tú - ${variables.time}`,\n\t\"component.conversationButtonLink.typing\": ({ variables }) =>\n\t\t`${variables.name} está escribiendo...`,\n\t\"component.conversationButtonLink.status.open\": \"Abierta\",\n\t\"component.conversationButtonLink.status.resolved\": \"Resuelta\",\n\t\"component.conversationButtonLink.status.spam\": \"Spam\",\n\t\"component.conversationEvent.assigned\": ({ variables }) =>\n\t\t`${variables.actorName} asignó la conversación`,\n\t\"component.conversationEvent.unassigned\": ({ variables }) =>\n\t\t`${variables.actorName} retiró la asignación de la conversación`,\n\t\"component.conversationEvent.default\": ({ variables }) =>\n\t\t`${variables.actorName} realizó una acción`,\n\t\"component.conversationEvent.participantJoined\": ({ variables }) =>\n\t\t`${variables.actorName} se unió a la conversación`,\n\t\"component.conversationEvent.participantLeft\": ({ variables }) =>\n\t\t`${variables.actorName} salió de la conversación`,\n\t\"component.conversationEvent.participantRequested\": ({ variables }) =>\n\t\t`${variables.actorName} solicitó unirse`,\n\t\"component.conversationEvent.priorityChanged\": ({ variables }) =>\n\t\t`${variables.actorName} cambió la prioridad`,\n\t\"component.conversationEvent.reopened\": ({ variables }) =>\n\t\t`${variables.actorName} reabrió la conversación`,\n\t\"component.conversationEvent.resolved\": ({ variables }) =>\n\t\t`${variables.actorName} resolvió la conversación`,\n\t\"component.conversationButtonLink.status.closed\": \"Cerrada\",\n\t\"component.conversationEvent.statusChanged\": ({ variables }) =>\n\t\t`${variables.actorName} cambió el estado`,\n\t\"component.conversationEvent.tagAdded\": ({ variables }) =>\n\t\t`${variables.actorName} agregó una etiqueta`,\n\t\"component.conversationEvent.tagRemoved\": ({ variables }) =>\n\t\t`${variables.actorName} quitó una etiqueta`,\n\t\"component.conversationEvent.visitorBlocked\": ({ variables }) =>\n\t\t`${variables.actorName} bloqueó al visitante`,\n\t\"component.conversationEvent.visitorUnblocked\": ({ variables }) =>\n\t\t`${variables.actorName} desbloqueó al visitante`,\n\t\"component.conversationEvent.visitorIdentified\": () =>\n\t\t\"Detalles de contacto confirmados\",\n\t\"component.identificationTool.title\": \"Comparte tu correo\",\n\t\"component.identificationTool.description\":\n\t\t\"Déjanos tu correo electrónico para que podamos continuar la conversación.\",\n\t\"component.identificationTool.cta\": \"Compartir correo\",\n\t\"component.identificationTool.loading\": \"Guardando...\",\n\t\"component.identificationTool.success\":\n\t\t\"¡Gracias! Usaremos este correo si necesitamos contactarte.\",\n\t\"component.identificationTool.error\":\n\t\t\"No pudimos guardar tu correo. Inténtalo de nuevo.\",\n\t\"component.identificationTool.validation\":\n\t\t\"Ingresa un correo electrónico para continuar.\",\n\t\"component.identificationTool.inputPlaceholder\": \"tu@ejemplo.com\",\n\t\"component.identificationTool.inputLabel\": \"Correo electrónico\",\n\t\"component.identificationTool.eventLog\":\n\t\t\"El visitante confirmó su correo electrónico\",\n\t\"component.conversationPage.closedMessage\":\n\t\t\"Esta conversación está cerrada, inicia una nueva para hablar con nosotros\",\n\t\"component.multimodalInput.placeholder\": \"Escribe tu mensaje...\",\n\t\"component.multimodalInput.remove\": ({ variables }) =>\n\t\t`Eliminar ${variables.fileName}`,\n\t\"component.navigation.articles\": \"Artículos\",\n\t\"component.navigation.home\": \"Inicio\",\n\t\"component.message.timestamp.aiIndicator\": \"• Agente IA\",\n};\n\nexport default es;\n"],"mappings":";AAEA,MAAMA,KAA4B;CACjC,8BAA8B;CAC9B,8BAA8B;CAC9B,8BAA8B,EAAE,gBAC/B,YAAY,UAAU;CACvB,0BAA0B;CAC1B,gCAAgC;CAChC,+BAA+B;CAC/B,4BAA4B;CAC5B,gCAAgC;CAChC,4BAA4B;CAC5B,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;CAC/B,sCAAsC,EAAE,WAAW,YAClD,IAAI,MAAM,aAAa,UAAU,MAAM,CAAC;CACzC,kCAAkC;CAClC,uBAAuB,EAAE,WAAW,SAAS,YAAY;EAOxD,MAAM,SALgD;GACrD,SAAS;GACT,WAAW;GACX,SAAS;GACT,CALc,MAAM,WAAW,CAMD;EAC/B,MAAM,cACL,WAAW,eAAe,QAAQ,SAAS,SAAS;AACrD,SAAO,GAAG,SAAS,cAAc,IAAI,gBAAgB,GAAG;;CAEzD,2BAA2B,EAAE,WAAW,YAAY;EACnD,MAAM,QAAQ,UAAU;EACxB,MAAM,OAAO,MAAM,UAAU,OAAO;GACnC,KAAK;GACL,OAAO;GACP,CAAC;AACF,SAAO,KAAK,MAAM,aAAa,MAAM,CAAC,GAAG;;CAE1C,sBAAsB,EAAE,WAAW,SAAS,YAAY;EACvD,MAAM,cAAc,WAAW,eAAe,QAAQ,SAAS,QAAQ;AACvE,SAAO,cAAc,WAAW,MAAM,UAAU,YAAY,KAAK;;CAElE,kDAAkD;CAClD,uDAAuD,EAAE,gBACxD,GAAG,UAAU,KAAK,KAAK,UAAU;CAClC,yDAAyD,EAAE,gBAC1D,QAAQ,UAAU;CACnB,4CAA4C,EAAE,gBAC7C,GAAG,UAAU,KAAK;CACnB,gDAAgD;CAChD,oDAAoD;CACpD,gDAAgD;CAChD,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,wCAAwC,EAAE,gBACzC,GAAG,UAAU,UAAU;CACxB,kDAAkD,EAAE,gBACnD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,qDAAqD,EAAE,gBACtD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,kDAAkD;CAClD,8CAA8C,EAAE,gBAC/C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,+CAA+C,EAAE,gBAChD,GAAG,UAAU,UAAU;CACxB,iDAAiD,EAAE,gBAClD,GAAG,UAAU,UAAU;CACxB,uDACC;CACD,sCAAsC;CACtC,4CACC;CACD,oCAAoC;CACpC,wCAAwC;CACxC,wCACC;CACD,sCACC;CACD,2CACC;CACD,iDAAiD;CACjD,2CAA2C;CAC3C,yCACC;CACD,4CACC;CACD,yCAAyC;CACzC,qCAAqC,EAAE,gBACtC,YAAY,UAAU;CACvB,iCAAiC;CACjC,6BAA6B;CAC7B,2CAA2C;CAC3C;AAED,iBAAe"}
@@ -39,6 +39,10 @@ const fr = {
39
39
  "component.conversationButtonLink.lastMessage.agent": ({ variables }) => `${variables.name} - ${variables.time}`,
40
40
  "component.conversationButtonLink.lastMessage.visitor": ({ variables }) => `Vous - ${variables.time}`,
41
41
  "component.conversationButtonLink.typing": ({ variables }) => `${variables.name} est en train d'écrire...`,
42
+ "component.conversationButtonLink.status.open": "Ouverte",
43
+ "component.conversationButtonLink.status.resolved": "Résolue",
44
+ "component.conversationButtonLink.status.closed": "Fermée",
45
+ "component.conversationButtonLink.status.spam": "Indésirable",
42
46
  "component.conversationEvent.assigned": ({ variables }) => `${variables.actorName} a attribué la conversation`,
43
47
  "component.conversationEvent.unassigned": ({ variables }) => `${variables.actorName} a retiré l'attribution de la conversation`,
44
48
  "component.conversationEvent.default": ({ variables }) => `${variables.actorName} a effectué une action`,
@@ -51,6 +55,20 @@ const fr = {
51
55
  "component.conversationEvent.statusChanged": ({ variables }) => `${variables.actorName} a modifié le statut`,
52
56
  "component.conversationEvent.tagAdded": ({ variables }) => `${variables.actorName} a ajouté une étiquette`,
53
57
  "component.conversationEvent.tagRemoved": ({ variables }) => `${variables.actorName} a retiré une étiquette`,
58
+ "component.conversationEvent.visitorBlocked": ({ variables }) => `${variables.actorName} a bloqué le visiteur`,
59
+ "component.conversationEvent.visitorUnblocked": ({ variables }) => `${variables.actorName} a débloqué le visiteur`,
60
+ "component.conversationEvent.visitorIdentified": () => "Coordonnées confirmées",
61
+ "component.identificationTool.title": "Partagez votre e-mail",
62
+ "component.identificationTool.description": "Laissez-nous votre adresse e-mail afin que nous puissions vous recontacter.",
63
+ "component.identificationTool.cta": "Partager l'e-mail",
64
+ "component.identificationTool.loading": "Enregistrement...",
65
+ "component.identificationTool.success": "Merci ! Nous utiliserons cette adresse si nous devons vous recontacter.",
66
+ "component.identificationTool.error": "Impossible d'enregistrer votre e-mail. Veuillez réessayer.",
67
+ "component.identificationTool.validation": "Veuillez saisir une adresse e-mail pour continuer.",
68
+ "component.identificationTool.inputPlaceholder": "vous@example.com",
69
+ "component.identificationTool.inputLabel": "Adresse e-mail",
70
+ "component.identificationTool.eventLog": "Le visiteur a confirmé son adresse e-mail",
71
+ "component.conversationPage.closedMessage": "Cette conversation est close, commencez-en une nouvelle pour discuter avec nous",
54
72
  "component.multimodalInput.placeholder": "Écrivez votre message...",
55
73
  "component.multimodalInput.remove": ({ variables }) => `Supprimer ${variables.fileName}`,
56
74
  "component.navigation.articles": "Articles",
@@ -1 +1 @@
1
- {"version":3,"file":"fr.js","names":["fr: SupportLocaleMessages"],"sources":["../../../../src/support/text/locales/fr.tsx"],"sourcesContent":["import type { SupportLocaleMessages } from \"./keys\";\n\nconst fr: SupportLocaleMessages = {\n\t\"common.actions.askQuestion\": \"Posez-nous une question\",\n\t\"common.actions.attachFiles\": \"Joindre des fichiers\",\n\t\"common.actions.removeFile\": ({ variables }) =>\n\t\t`Supprimer ${variables.fileName}`,\n\t\"common.brand.watermark\": \"Propulsé par\",\n\t\"common.fallbacks.aiAssistant\": \"Assistant IA\",\n\t\"common.fallbacks.cossistant\": \"Cossistant\",\n\t\"common.fallbacks.someone\": \"Quelqu'un\",\n\t\"common.fallbacks.supportTeam\": \"Support\",\n\t\"common.fallbacks.unknown\": \"Inconnu\",\n\t\"common.fallbacks.you\": \"Vous\",\n\t\"common.labels.aiAgentIndicator\": \"Agent IA\",\n\t\"common.labels.supportOnline\": \"Support en ligne\",\n\t\"page.conversationHistory.showMore\": ({ variables, utils }) =>\n\t\t`+${utils.formatNumber(variables.count)} de plus`,\n\t\"page.conversationHistory.title\": \"Historique des conversations\",\n\t\"page.home.greeting\": ({ variables, context, utils }) => {\n\t\tconst period = utils.timeOfDay();\n\t\tconst prefixes: Record<typeof period.token, string> = {\n\t\t\tmorning: \"Bonjour\",\n\t\t\tafternoon: \"Bon après-midi\",\n\t\t\tevening: \"Bonsoir\",\n\t\t};\n\t\tconst prefix = prefixes[period.token];\n\t\tconst visitorName =\n\t\t\tvariables?.visitorName || context.visitor?.contact?.name;\n\t\treturn `${prefix}${visitorName ? ` ${visitorName}` : \"\"}, comment pouvons-nous vous aider ?`;\n\t},\n\t\"page.home.history.more\": ({ variables, utils }) => {\n\t\tconst count = variables.count;\n\t\tconst noun = utils.pluralize(count, {\n\t\t\tone: \"conversation supplémentaire\",\n\t\t\tother: \"conversations supplémentaires\",\n\t\t});\n\t\treturn `+ ${utils.formatNumber(count)} ${noun}`;\n\t},\n\t\"page.home.tagline\": ({ variables, context, utils }) => {\n\t\tconst websiteName = variables?.websiteName || context.website?.name || \"\";\n\t\treturn websiteName ? `Support ${utils.titleCase(websiteName)}` : \"Support\";\n\t},\n\t\"component.conversationButtonLink.fallbackTitle\": \"Conversation sans titre\",\n\t\"component.conversationButtonLink.lastMessage.agent\": ({ variables }) =>\n\t\t`${variables.name} - ${variables.time}`,\n\t\"component.conversationButtonLink.lastMessage.visitor\": ({ variables }) =>\n\t\t`Vous - ${variables.time}`,\n\t\"component.conversationButtonLink.typing\": ({ variables }) =>\n\t\t`${variables.name} est en train d'écrire...`,\n\t\"component.conversationEvent.assigned\": ({ variables }) =>\n\t\t`${variables.actorName} a attribué la conversation`,\n\t\"component.conversationEvent.unassigned\": ({ variables }) =>\n\t\t`${variables.actorName} a retiré l'attribution de la conversation`,\n\t\"component.conversationEvent.default\": ({ variables }) =>\n\t\t`${variables.actorName} a effectué une action`,\n\t\"component.conversationEvent.participantJoined\": ({ variables }) =>\n\t\t`${variables.actorName} a rejoint la conversation`,\n\t\"component.conversationEvent.participantLeft\": ({ variables }) =>\n\t\t`${variables.actorName} a quitté la conversation`,\n\t\"component.conversationEvent.participantRequested\": ({ variables }) =>\n\t\t`${variables.actorName} a demandé à rejoindre`,\n\t\"component.conversationEvent.priorityChanged\": ({ variables }) =>\n\t\t`${variables.actorName} a modifié la priorité`,\n\t\"component.conversationEvent.reopened\": ({ variables }) =>\n\t\t`${variables.actorName} a rouvert la conversation`,\n\t\"component.conversationEvent.resolved\": ({ variables }) =>\n\t\t`${variables.actorName} a résolu la conversation`,\n\t\"component.conversationEvent.statusChanged\": ({ variables }) =>\n\t\t`${variables.actorName} a modifié le statut`,\n\t\"component.conversationEvent.tagAdded\": ({ variables }) =>\n\t\t`${variables.actorName} a ajouté une étiquette`,\n\t\"component.conversationEvent.tagRemoved\": ({ variables }) =>\n\t\t`${variables.actorName} a retiré une étiquette`,\n\t\"component.multimodalInput.placeholder\": \"Écrivez votre message...\",\n\t\"component.multimodalInput.remove\": ({ variables }) =>\n\t\t`Supprimer ${variables.fileName}`,\n\t\"component.navigation.articles\": \"Articles\",\n\t\"component.navigation.home\": \"Accueil\",\n\t\"component.message.timestamp.aiIndicator\": \"• Agent IA\",\n};\n\nexport default fr;\n"],"mappings":";AAEA,MAAMA,KAA4B;CACjC,8BAA8B;CAC9B,8BAA8B;CAC9B,8BAA8B,EAAE,gBAC/B,aAAa,UAAU;CACxB,0BAA0B;CAC1B,gCAAgC;CAChC,+BAA+B;CAC/B,4BAA4B;CAC5B,gCAAgC;CAChC,4BAA4B;CAC5B,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;CAC/B,sCAAsC,EAAE,WAAW,YAClD,IAAI,MAAM,aAAa,UAAU,MAAM,CAAC;CACzC,kCAAkC;CAClC,uBAAuB,EAAE,WAAW,SAAS,YAAY;EAOxD,MAAM,SALgD;GACrD,SAAS;GACT,WAAW;GACX,SAAS;GACT,CALc,MAAM,WAAW,CAMD;EAC/B,MAAM,cACL,WAAW,eAAe,QAAQ,SAAS,SAAS;AACrD,SAAO,GAAG,SAAS,cAAc,IAAI,gBAAgB,GAAG;;CAEzD,2BAA2B,EAAE,WAAW,YAAY;EACnD,MAAM,QAAQ,UAAU;EACxB,MAAM,OAAO,MAAM,UAAU,OAAO;GACnC,KAAK;GACL,OAAO;GACP,CAAC;AACF,SAAO,KAAK,MAAM,aAAa,MAAM,CAAC,GAAG;;CAE1C,sBAAsB,EAAE,WAAW,SAAS,YAAY;EACvD,MAAM,cAAc,WAAW,eAAe,QAAQ,SAAS,QAAQ;AACvE,SAAO,cAAc,WAAW,MAAM,UAAU,YAAY,KAAK;;CAElE,kDAAkD;CAClD,uDAAuD,EAAE,gBACxD,GAAG,UAAU,KAAK,KAAK,UAAU;CAClC,yDAAyD,EAAE,gBAC1D,UAAU,UAAU;CACrB,4CAA4C,EAAE,gBAC7C,GAAG,UAAU,KAAK;CACnB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,wCAAwC,EAAE,gBACzC,GAAG,UAAU,UAAU;CACxB,kDAAkD,EAAE,gBACnD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,qDAAqD,EAAE,gBACtD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,8CAA8C,EAAE,gBAC/C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,yCAAyC;CACzC,qCAAqC,EAAE,gBACtC,aAAa,UAAU;CACxB,iCAAiC;CACjC,6BAA6B;CAC7B,2CAA2C;CAC3C;AAED,iBAAe"}
1
+ {"version":3,"file":"fr.js","names":["fr: SupportLocaleMessages"],"sources":["../../../../src/support/text/locales/fr.tsx"],"sourcesContent":["import type { SupportLocaleMessages } from \"./keys\";\n\nconst fr: SupportLocaleMessages = {\n\t\"common.actions.askQuestion\": \"Posez-nous une question\",\n\t\"common.actions.attachFiles\": \"Joindre des fichiers\",\n\t\"common.actions.removeFile\": ({ variables }) =>\n\t\t`Supprimer ${variables.fileName}`,\n\t\"common.brand.watermark\": \"Propulsé par\",\n\t\"common.fallbacks.aiAssistant\": \"Assistant IA\",\n\t\"common.fallbacks.cossistant\": \"Cossistant\",\n\t\"common.fallbacks.someone\": \"Quelqu'un\",\n\t\"common.fallbacks.supportTeam\": \"Support\",\n\t\"common.fallbacks.unknown\": \"Inconnu\",\n\t\"common.fallbacks.you\": \"Vous\",\n\t\"common.labels.aiAgentIndicator\": \"Agent IA\",\n\t\"common.labels.supportOnline\": \"Support en ligne\",\n\t\"page.conversationHistory.showMore\": ({ variables, utils }) =>\n\t\t`+${utils.formatNumber(variables.count)} de plus`,\n\t\"page.conversationHistory.title\": \"Historique des conversations\",\n\t\"page.home.greeting\": ({ variables, context, utils }) => {\n\t\tconst period = utils.timeOfDay();\n\t\tconst prefixes: Record<typeof period.token, string> = {\n\t\t\tmorning: \"Bonjour\",\n\t\t\tafternoon: \"Bon après-midi\",\n\t\t\tevening: \"Bonsoir\",\n\t\t};\n\t\tconst prefix = prefixes[period.token];\n\t\tconst visitorName =\n\t\t\tvariables?.visitorName || context.visitor?.contact?.name;\n\t\treturn `${prefix}${visitorName ? ` ${visitorName}` : \"\"}, comment pouvons-nous vous aider ?`;\n\t},\n\t\"page.home.history.more\": ({ variables, utils }) => {\n\t\tconst count = variables.count;\n\t\tconst noun = utils.pluralize(count, {\n\t\t\tone: \"conversation supplémentaire\",\n\t\t\tother: \"conversations supplémentaires\",\n\t\t});\n\t\treturn `+ ${utils.formatNumber(count)} ${noun}`;\n\t},\n\t\"page.home.tagline\": ({ variables, context, utils }) => {\n\t\tconst websiteName = variables?.websiteName || context.website?.name || \"\";\n\t\treturn websiteName ? `Support ${utils.titleCase(websiteName)}` : \"Support\";\n\t},\n\t\"component.conversationButtonLink.fallbackTitle\": \"Conversation sans titre\",\n\t\"component.conversationButtonLink.lastMessage.agent\": ({ variables }) =>\n\t\t`${variables.name} - ${variables.time}`,\n\t\"component.conversationButtonLink.lastMessage.visitor\": ({ variables }) =>\n\t\t`Vous - ${variables.time}`,\n\t\"component.conversationButtonLink.typing\": ({ variables }) =>\n\t\t`${variables.name} est en train d'écrire...`,\n\t\"component.conversationButtonLink.status.open\": \"Ouverte\",\n\t\"component.conversationButtonLink.status.resolved\": \"Résolue\",\n\t\"component.conversationButtonLink.status.closed\": \"Fermée\",\n\t\"component.conversationButtonLink.status.spam\": \"Indésirable\",\n\t\"component.conversationEvent.assigned\": ({ variables }) =>\n\t\t`${variables.actorName} a attribué la conversation`,\n\t\"component.conversationEvent.unassigned\": ({ variables }) =>\n\t\t`${variables.actorName} a retiré l'attribution de la conversation`,\n\t\"component.conversationEvent.default\": ({ variables }) =>\n\t\t`${variables.actorName} a effectué une action`,\n\t\"component.conversationEvent.participantJoined\": ({ variables }) =>\n\t\t`${variables.actorName} a rejoint la conversation`,\n\t\"component.conversationEvent.participantLeft\": ({ variables }) =>\n\t\t`${variables.actorName} a quitté la conversation`,\n\t\"component.conversationEvent.participantRequested\": ({ variables }) =>\n\t\t`${variables.actorName} a demandé à rejoindre`,\n\t\"component.conversationEvent.priorityChanged\": ({ variables }) =>\n\t\t`${variables.actorName} a modifié la priorité`,\n\t\"component.conversationEvent.reopened\": ({ variables }) =>\n\t\t`${variables.actorName} a rouvert la conversation`,\n\t\"component.conversationEvent.resolved\": ({ variables }) =>\n\t\t`${variables.actorName} a résolu la conversation`,\n\t\"component.conversationEvent.statusChanged\": ({ variables }) =>\n\t\t`${variables.actorName} a modifié le statut`,\n\t\"component.conversationEvent.tagAdded\": ({ variables }) =>\n\t\t`${variables.actorName} a ajouté une étiquette`,\n\t\"component.conversationEvent.tagRemoved\": ({ variables }) =>\n\t\t`${variables.actorName} a retiré une étiquette`,\n\t\"component.conversationEvent.visitorBlocked\": ({ variables }) =>\n\t\t`${variables.actorName} a bloqué le visiteur`,\n\t\"component.conversationEvent.visitorUnblocked\": ({ variables }) =>\n\t\t`${variables.actorName} a débloqué le visiteur`,\n\t\"component.conversationEvent.visitorIdentified\": () =>\n\t\t\"Coordonnées confirmées\",\n\t\"component.identificationTool.title\": \"Partagez votre e-mail\",\n\t\"component.identificationTool.description\":\n\t\t\"Laissez-nous votre adresse e-mail afin que nous puissions vous recontacter.\",\n\t\"component.identificationTool.cta\": \"Partager l'e-mail\",\n\t\"component.identificationTool.loading\": \"Enregistrement...\",\n\t\"component.identificationTool.success\":\n\t\t\"Merci ! Nous utiliserons cette adresse si nous devons vous recontacter.\",\n\t\"component.identificationTool.error\":\n\t\t\"Impossible d'enregistrer votre e-mail. Veuillez réessayer.\",\n\t\"component.identificationTool.validation\":\n\t\t\"Veuillez saisir une adresse e-mail pour continuer.\",\n\t\"component.identificationTool.inputPlaceholder\": \"vous@example.com\",\n\t\"component.identificationTool.inputLabel\": \"Adresse e-mail\",\n\t\"component.identificationTool.eventLog\":\n\t\t\"Le visiteur a confirmé son adresse e-mail\",\n\t\"component.conversationPage.closedMessage\":\n\t\t\"Cette conversation est close, commencez-en une nouvelle pour discuter avec nous\",\n\t\"component.multimodalInput.placeholder\": \"Écrivez votre message...\",\n\t\"component.multimodalInput.remove\": ({ variables }) =>\n\t\t`Supprimer ${variables.fileName}`,\n\t\"component.navigation.articles\": \"Articles\",\n\t\"component.navigation.home\": \"Accueil\",\n\t\"component.message.timestamp.aiIndicator\": \"• Agent IA\",\n};\n\nexport default fr;\n"],"mappings":";AAEA,MAAMA,KAA4B;CACjC,8BAA8B;CAC9B,8BAA8B;CAC9B,8BAA8B,EAAE,gBAC/B,aAAa,UAAU;CACxB,0BAA0B;CAC1B,gCAAgC;CAChC,+BAA+B;CAC/B,4BAA4B;CAC5B,gCAAgC;CAChC,4BAA4B;CAC5B,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;CAC/B,sCAAsC,EAAE,WAAW,YAClD,IAAI,MAAM,aAAa,UAAU,MAAM,CAAC;CACzC,kCAAkC;CAClC,uBAAuB,EAAE,WAAW,SAAS,YAAY;EAOxD,MAAM,SALgD;GACrD,SAAS;GACT,WAAW;GACX,SAAS;GACT,CALc,MAAM,WAAW,CAMD;EAC/B,MAAM,cACL,WAAW,eAAe,QAAQ,SAAS,SAAS;AACrD,SAAO,GAAG,SAAS,cAAc,IAAI,gBAAgB,GAAG;;CAEzD,2BAA2B,EAAE,WAAW,YAAY;EACnD,MAAM,QAAQ,UAAU;EACxB,MAAM,OAAO,MAAM,UAAU,OAAO;GACnC,KAAK;GACL,OAAO;GACP,CAAC;AACF,SAAO,KAAK,MAAM,aAAa,MAAM,CAAC,GAAG;;CAE1C,sBAAsB,EAAE,WAAW,SAAS,YAAY;EACvD,MAAM,cAAc,WAAW,eAAe,QAAQ,SAAS,QAAQ;AACvE,SAAO,cAAc,WAAW,MAAM,UAAU,YAAY,KAAK;;CAElE,kDAAkD;CAClD,uDAAuD,EAAE,gBACxD,GAAG,UAAU,KAAK,KAAK,UAAU;CAClC,yDAAyD,EAAE,gBAC1D,UAAU,UAAU;CACrB,4CAA4C,EAAE,gBAC7C,GAAG,UAAU,KAAK;CACnB,gDAAgD;CAChD,oDAAoD;CACpD,kDAAkD;CAClD,gDAAgD;CAChD,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,wCAAwC,EAAE,gBACzC,GAAG,UAAU,UAAU;CACxB,kDAAkD,EAAE,gBACnD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,qDAAqD,EAAE,gBACtD,GAAG,UAAU,UAAU;CACxB,gDAAgD,EAAE,gBACjD,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,8CAA8C,EAAE,gBAC/C,GAAG,UAAU,UAAU;CACxB,yCAAyC,EAAE,gBAC1C,GAAG,UAAU,UAAU;CACxB,2CAA2C,EAAE,gBAC5C,GAAG,UAAU,UAAU;CACxB,+CAA+C,EAAE,gBAChD,GAAG,UAAU,UAAU;CACxB,iDAAiD,EAAE,gBAClD,GAAG,UAAU,UAAU;CACxB,uDACC;CACD,sCAAsC;CACtC,4CACC;CACD,oCAAoC;CACpC,wCAAwC;CACxC,wCACC;CACD,sCACC;CACD,2CACC;CACD,iDAAiD;CACjD,2CAA2C;CAC3C,yCACC;CACD,4CACC;CACD,yCAAyC;CACzC,qCAAqC,EAAE,gBACtC,aAAa,UAAU;CACxB,iCAAiC;CACjC,6BAA6B;CAC7B,2CAA2C;CAC3C;AAED,iBAAe"}
@@ -105,6 +105,18 @@ declare const supportTextDefinitions: {
105
105
  readonly name: string;
106
106
  };
107
107
  };
108
+ readonly "component.conversationButtonLink.status.open": {
109
+ readonly variables: undefined;
110
+ };
111
+ readonly "component.conversationButtonLink.status.resolved": {
112
+ readonly variables: undefined;
113
+ };
114
+ readonly "component.conversationButtonLink.status.closed": {
115
+ readonly variables: undefined;
116
+ };
117
+ readonly "component.conversationButtonLink.status.spam": {
118
+ readonly variables: undefined;
119
+ };
108
120
  readonly "component.conversationEvent.assigned": {
109
121
  readonly variables: {
110
122
  readonly actorName: string;
@@ -165,6 +177,54 @@ declare const supportTextDefinitions: {
165
177
  readonly actorName: string;
166
178
  };
167
179
  };
180
+ readonly "component.conversationEvent.visitorBlocked": {
181
+ readonly variables: {
182
+ readonly actorName: string;
183
+ };
184
+ };
185
+ readonly "component.conversationEvent.visitorUnblocked": {
186
+ readonly variables: {
187
+ readonly actorName: string;
188
+ };
189
+ };
190
+ readonly "component.conversationEvent.visitorIdentified": {
191
+ readonly variables: {
192
+ readonly actorName: string;
193
+ };
194
+ };
195
+ readonly "component.identificationTool.title": {
196
+ readonly variables: undefined;
197
+ };
198
+ readonly "component.identificationTool.description": {
199
+ readonly variables: undefined;
200
+ };
201
+ readonly "component.identificationTool.cta": {
202
+ readonly variables: undefined;
203
+ };
204
+ readonly "component.identificationTool.loading": {
205
+ readonly variables: undefined;
206
+ };
207
+ readonly "component.identificationTool.success": {
208
+ readonly variables: undefined;
209
+ };
210
+ readonly "component.identificationTool.error": {
211
+ readonly variables: undefined;
212
+ };
213
+ readonly "component.identificationTool.validation": {
214
+ readonly variables: undefined;
215
+ };
216
+ readonly "component.identificationTool.inputPlaceholder": {
217
+ readonly variables: undefined;
218
+ };
219
+ readonly "component.identificationTool.inputLabel": {
220
+ readonly variables: undefined;
221
+ };
222
+ readonly "component.identificationTool.eventLog": {
223
+ readonly variables: undefined;
224
+ };
225
+ readonly "component.conversationPage.closedMessage": {
226
+ readonly variables: undefined;
227
+ };
168
228
  readonly "component.multimodalInput.placeholder": {
169
229
  readonly variables: undefined;
170
230
  };
@@ -185,26 +245,26 @@ declare const supportTextDefinitions: {
185
245
  };
186
246
  type SupportTextDefinitions = typeof supportTextDefinitions;
187
247
  type SupportTextKey = keyof SupportTextDefinitions;
188
- type SupportTextVariables<K extends SupportTextKey> = SupportTextDefinitions[K]["variables"];
189
- type OptionalFlag<K extends SupportTextKey> = SupportTextDefinitions[K] extends {
248
+ type SupportTextVariables<K$1 extends SupportTextKey> = SupportTextDefinitions[K$1]["variables"];
249
+ type OptionalFlag<K$1 extends SupportTextKey> = SupportTextDefinitions[K$1] extends {
190
250
  optional: true;
191
251
  } ? true : false;
192
- type MessageVariables<K extends SupportTextKey, Vars = SupportTextVariables<K>> = Vars extends undefined ? undefined : OptionalFlag<K> extends true ? Vars | undefined : Vars;
193
- type SupportTextMessage<K extends SupportTextKey, Vars = SupportTextVariables<K>> = string | ((args: {
194
- variables: MessageVariables<K, Vars>;
252
+ type MessageVariables<K$1 extends SupportTextKey, Vars = SupportTextVariables<K$1>> = Vars extends undefined ? undefined : OptionalFlag<K$1> extends true ? Vars | undefined : Vars;
253
+ type SupportTextMessage<K$1 extends SupportTextKey, Vars = SupportTextVariables<K$1>> = string | ((args: {
254
+ variables: MessageVariables<K$1, Vars>;
195
255
  context: SupportTextContext;
196
256
  utils: SupportTextUtils;
197
257
  }) => string);
198
258
  type SupportLocaleMessages = { [K in SupportTextKey]: SupportTextMessage<K> };
199
259
  type SupportTextContentOverrides<Locale extends string = SupportLocale> = Partial<{ [K in SupportTextKey]: SupportTextMessage<K> | Partial<Record<SupportLocale | Locale, SupportTextMessage<K>>> }>;
200
260
  type SupportTextFormatter = {
201
- <K extends SupportTextKey>(key: K, variables: SupportTextVariables<K>): string;
202
- <K extends SupportTextKey>(key: K): string;
261
+ <K$1 extends SupportTextKey>(key: K$1, variables: SupportTextVariables<K$1>): string;
262
+ <K$1 extends SupportTextKey>(key: K$1): string;
203
263
  };
204
264
  type KeysWithVariables = { [K in SupportTextKey]: SupportTextVariables<K> extends undefined ? never : OptionalFlag<K> extends true ? never : K }[SupportTextKey];
205
265
  type StrictSupportTextFormatter = {
206
- <K extends KeysWithVariables>(key: K, variables: SupportTextVariables<K>): string;
207
- <K extends Exclude<SupportTextKey, KeysWithVariables>>(key: K, variables?: SupportTextVariables<K>): string;
266
+ <K$1 extends KeysWithVariables>(key: K$1, variables: SupportTextVariables<K$1>): string;
267
+ <K$1 extends Exclude<SupportTextKey, KeysWithVariables>>(key: K$1, variables?: SupportTextVariables<K$1>): string;
208
268
  };
209
269
  type SupportTextResolvedFormatter = StrictSupportTextFormatter & SupportTextFormatter;
210
270
  type SupportTextProviderValue = {
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","names":[],"sources":["../../../../src/support/text/locales/keys.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.d.ts","names":[],"sources":["../../../../src/support/text/locales/keys.ts"],"sourcesContent":[],"mappings":"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"}