@appsupportkit/support-sdk 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/lib/commonjs/api.js +49 -15
  2. package/lib/commonjs/api.js.map +1 -1
  3. package/lib/commonjs/components/BottomSheet.js +1 -1
  4. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  5. package/lib/commonjs/components/LauncherButton.js +4 -4
  6. package/lib/commonjs/components/LauncherButton.js.map +1 -1
  7. package/lib/commonjs/components/SupportButton.js +123 -97
  8. package/lib/commonjs/components/SupportButton.js.map +1 -1
  9. package/lib/commonjs/components/icons.js +81 -110
  10. package/lib/commonjs/components/icons.js.map +1 -1
  11. package/lib/commonjs/components/primitives.js +0 -153
  12. package/lib/commonjs/components/primitives.js.map +1 -1
  13. package/lib/commonjs/components/screens/ChatScreen.js +487 -0
  14. package/lib/commonjs/components/screens/ChatScreen.js.map +1 -0
  15. package/lib/commonjs/i18n/strings/de.js +3 -0
  16. package/lib/commonjs/i18n/strings/de.js.map +1 -1
  17. package/lib/commonjs/i18n/strings/en.js +3 -0
  18. package/lib/commonjs/i18n/strings/en.js.map +1 -1
  19. package/lib/commonjs/i18n/strings/es.js +3 -0
  20. package/lib/commonjs/i18n/strings/es.js.map +1 -1
  21. package/lib/commonjs/i18n/strings/fr.js +3 -0
  22. package/lib/commonjs/i18n/strings/fr.js.map +1 -1
  23. package/lib/commonjs/i18n/strings/hi.js +3 -0
  24. package/lib/commonjs/i18n/strings/hi.js.map +1 -1
  25. package/lib/commonjs/i18n/strings/it.js +3 -0
  26. package/lib/commonjs/i18n/strings/it.js.map +1 -1
  27. package/lib/commonjs/i18n/strings/ja.js +3 -0
  28. package/lib/commonjs/i18n/strings/ja.js.map +1 -1
  29. package/lib/commonjs/i18n/strings/ko.js +3 -0
  30. package/lib/commonjs/i18n/strings/ko.js.map +1 -1
  31. package/lib/commonjs/i18n/strings/nl.js +3 -0
  32. package/lib/commonjs/i18n/strings/nl.js.map +1 -1
  33. package/lib/commonjs/i18n/strings/pl.js +3 -0
  34. package/lib/commonjs/i18n/strings/pl.js.map +1 -1
  35. package/lib/commonjs/i18n/strings/pt.js +3 -0
  36. package/lib/commonjs/i18n/strings/pt.js.map +1 -1
  37. package/lib/commonjs/i18n/strings/ru.js +3 -0
  38. package/lib/commonjs/i18n/strings/ru.js.map +1 -1
  39. package/lib/commonjs/i18n/strings/tr.js +3 -0
  40. package/lib/commonjs/i18n/strings/tr.js.map +1 -1
  41. package/lib/commonjs/i18n/strings/zh.js +3 -0
  42. package/lib/commonjs/i18n/strings/zh.js.map +1 -1
  43. package/lib/commonjs/index.js +7 -0
  44. package/lib/commonjs/index.js.map +1 -1
  45. package/lib/commonjs/push.js +78 -3
  46. package/lib/commonjs/push.js.map +1 -1
  47. package/lib/commonjs/review.js +54 -0
  48. package/lib/commonjs/review.js.map +1 -0
  49. package/lib/commonjs/theme.js +142 -23
  50. package/lib/commonjs/theme.js.map +1 -1
  51. package/lib/commonjs/types.js +21 -3
  52. package/lib/commonjs/types.js.map +1 -1
  53. package/lib/commonjs/useSupportThreads.js +22 -15
  54. package/lib/commonjs/useSupportThreads.js.map +1 -1
  55. package/lib/commonjs/utils.js +13 -33
  56. package/lib/commonjs/utils.js.map +1 -1
  57. package/lib/commonjs/version.js +13 -0
  58. package/lib/commonjs/version.js.map +1 -0
  59. package/lib/module/api.js +46 -13
  60. package/lib/module/api.js.map +1 -1
  61. package/lib/module/components/BottomSheet.js +1 -1
  62. package/lib/module/components/BottomSheet.js.map +1 -1
  63. package/lib/module/components/LauncherButton.js +5 -5
  64. package/lib/module/components/LauncherButton.js.map +1 -1
  65. package/lib/module/components/SupportButton.js +128 -102
  66. package/lib/module/components/SupportButton.js.map +1 -1
  67. package/lib/module/components/icons.js +80 -107
  68. package/lib/module/components/icons.js.map +1 -1
  69. package/lib/module/components/primitives.js +2 -146
  70. package/lib/module/components/primitives.js.map +1 -1
  71. package/lib/module/components/screens/ChatScreen.js +485 -0
  72. package/lib/module/components/screens/ChatScreen.js.map +1 -0
  73. package/lib/module/i18n/strings/de.js +3 -0
  74. package/lib/module/i18n/strings/de.js.map +1 -1
  75. package/lib/module/i18n/strings/en.js +3 -0
  76. package/lib/module/i18n/strings/en.js.map +1 -1
  77. package/lib/module/i18n/strings/es.js +3 -0
  78. package/lib/module/i18n/strings/es.js.map +1 -1
  79. package/lib/module/i18n/strings/fr.js +3 -0
  80. package/lib/module/i18n/strings/fr.js.map +1 -1
  81. package/lib/module/i18n/strings/hi.js +3 -0
  82. package/lib/module/i18n/strings/hi.js.map +1 -1
  83. package/lib/module/i18n/strings/it.js +3 -0
  84. package/lib/module/i18n/strings/it.js.map +1 -1
  85. package/lib/module/i18n/strings/ja.js +3 -0
  86. package/lib/module/i18n/strings/ja.js.map +1 -1
  87. package/lib/module/i18n/strings/ko.js +3 -0
  88. package/lib/module/i18n/strings/ko.js.map +1 -1
  89. package/lib/module/i18n/strings/nl.js +3 -0
  90. package/lib/module/i18n/strings/nl.js.map +1 -1
  91. package/lib/module/i18n/strings/pl.js +3 -0
  92. package/lib/module/i18n/strings/pl.js.map +1 -1
  93. package/lib/module/i18n/strings/pt.js +3 -0
  94. package/lib/module/i18n/strings/pt.js.map +1 -1
  95. package/lib/module/i18n/strings/ru.js +3 -0
  96. package/lib/module/i18n/strings/ru.js.map +1 -1
  97. package/lib/module/i18n/strings/tr.js +3 -0
  98. package/lib/module/i18n/strings/tr.js.map +1 -1
  99. package/lib/module/i18n/strings/zh.js +3 -0
  100. package/lib/module/i18n/strings/zh.js.map +1 -1
  101. package/lib/module/index.js +1 -0
  102. package/lib/module/index.js.map +1 -1
  103. package/lib/module/push.js +77 -3
  104. package/lib/module/push.js.map +1 -1
  105. package/lib/module/review.js +48 -0
  106. package/lib/module/review.js.map +1 -0
  107. package/lib/module/theme.js +141 -23
  108. package/lib/module/theme.js.map +1 -1
  109. package/lib/module/types.js +21 -3
  110. package/lib/module/types.js.map +1 -1
  111. package/lib/module/useSupportThreads.js +22 -15
  112. package/lib/module/useSupportThreads.js.map +1 -1
  113. package/lib/module/utils.js +12 -32
  114. package/lib/module/utils.js.map +1 -1
  115. package/lib/module/version.js +9 -0
  116. package/lib/module/version.js.map +1 -0
  117. package/lib/typescript/api.d.ts +33 -12
  118. package/lib/typescript/api.d.ts.map +1 -1
  119. package/lib/typescript/components/SupportButton.d.ts +2 -2
  120. package/lib/typescript/components/SupportButton.d.ts.map +1 -1
  121. package/lib/typescript/components/icons.d.ts +5 -14
  122. package/lib/typescript/components/icons.d.ts.map +1 -1
  123. package/lib/typescript/components/primitives.d.ts +0 -31
  124. package/lib/typescript/components/primitives.d.ts.map +1 -1
  125. package/lib/typescript/components/screens/ChatScreen.d.ts +21 -0
  126. package/lib/typescript/components/screens/ChatScreen.d.ts.map +1 -0
  127. package/lib/typescript/i18n/strings/de.d.ts.map +1 -1
  128. package/lib/typescript/i18n/strings/en.d.ts +3 -0
  129. package/lib/typescript/i18n/strings/en.d.ts.map +1 -1
  130. package/lib/typescript/i18n/strings/es.d.ts.map +1 -1
  131. package/lib/typescript/i18n/strings/fr.d.ts.map +1 -1
  132. package/lib/typescript/i18n/strings/hi.d.ts.map +1 -1
  133. package/lib/typescript/i18n/strings/it.d.ts.map +1 -1
  134. package/lib/typescript/i18n/strings/ja.d.ts.map +1 -1
  135. package/lib/typescript/i18n/strings/ko.d.ts.map +1 -1
  136. package/lib/typescript/i18n/strings/nl.d.ts.map +1 -1
  137. package/lib/typescript/i18n/strings/pl.d.ts.map +1 -1
  138. package/lib/typescript/i18n/strings/pt.d.ts.map +1 -1
  139. package/lib/typescript/i18n/strings/ru.d.ts.map +1 -1
  140. package/lib/typescript/i18n/strings/tr.d.ts.map +1 -1
  141. package/lib/typescript/i18n/strings/zh.d.ts.map +1 -1
  142. package/lib/typescript/index.d.ts +3 -2
  143. package/lib/typescript/index.d.ts.map +1 -1
  144. package/lib/typescript/push.d.ts +14 -2
  145. package/lib/typescript/push.d.ts.map +1 -1
  146. package/lib/typescript/review.d.ts +15 -0
  147. package/lib/typescript/review.d.ts.map +1 -0
  148. package/lib/typescript/theme.d.ts +23 -5
  149. package/lib/typescript/theme.d.ts.map +1 -1
  150. package/lib/typescript/types.d.ts +54 -11
  151. package/lib/typescript/types.d.ts.map +1 -1
  152. package/lib/typescript/useSupportThreads.d.ts +9 -3
  153. package/lib/typescript/useSupportThreads.d.ts.map +1 -1
  154. package/lib/typescript/utils.d.ts +3 -2
  155. package/lib/typescript/utils.d.ts.map +1 -1
  156. package/lib/typescript/version.d.ts +7 -0
  157. package/lib/typescript/version.d.ts.map +1 -0
  158. package/package.json +1 -1
  159. package/src/api.ts +59 -30
  160. package/src/components/BottomSheet.tsx +1 -1
  161. package/src/components/LauncherButton.tsx +4 -4
  162. package/src/components/SupportButton.tsx +140 -111
  163. package/src/components/icons.tsx +60 -101
  164. package/src/components/primitives.tsx +1 -163
  165. package/src/components/screens/ChatScreen.tsx +541 -0
  166. package/src/i18n/strings/de.ts +3 -0
  167. package/src/i18n/strings/en.ts +3 -0
  168. package/src/i18n/strings/es.ts +3 -0
  169. package/src/i18n/strings/fr.ts +3 -0
  170. package/src/i18n/strings/hi.ts +3 -0
  171. package/src/i18n/strings/it.ts +3 -0
  172. package/src/i18n/strings/ja.ts +3 -0
  173. package/src/i18n/strings/ko.ts +3 -0
  174. package/src/i18n/strings/nl.ts +3 -0
  175. package/src/i18n/strings/pl.ts +3 -0
  176. package/src/i18n/strings/pt.ts +3 -0
  177. package/src/i18n/strings/ru.ts +3 -0
  178. package/src/i18n/strings/tr.ts +3 -0
  179. package/src/i18n/strings/zh.ts +3 -0
  180. package/src/index.tsx +5 -0
  181. package/src/push.ts +100 -2
  182. package/src/review.ts +54 -0
  183. package/src/theme.ts +182 -28
  184. package/src/types.ts +53 -11
  185. package/src/useSupportThreads.ts +31 -18
  186. package/src/utils.ts +14 -21
  187. package/src/version.ts +6 -0
  188. package/lib/commonjs/components/screens/ComposeScreen.js +0 -219
  189. package/lib/commonjs/components/screens/ComposeScreen.js.map +0 -1
  190. package/lib/commonjs/components/screens/HomeScreen.js +0 -334
  191. package/lib/commonjs/components/screens/HomeScreen.js.map +0 -1
  192. package/lib/commonjs/components/screens/ThreadScreen.js +0 -339
  193. package/lib/commonjs/components/screens/ThreadScreen.js.map +0 -1
  194. package/lib/module/components/screens/ComposeScreen.js +0 -217
  195. package/lib/module/components/screens/ComposeScreen.js.map +0 -1
  196. package/lib/module/components/screens/HomeScreen.js +0 -330
  197. package/lib/module/components/screens/HomeScreen.js.map +0 -1
  198. package/lib/module/components/screens/ThreadScreen.js +0 -337
  199. package/lib/module/components/screens/ThreadScreen.js.map +0 -1
  200. package/lib/typescript/components/screens/ComposeScreen.d.ts +0 -12
  201. package/lib/typescript/components/screens/ComposeScreen.d.ts.map +0 -1
  202. package/lib/typescript/components/screens/HomeScreen.d.ts +0 -19
  203. package/lib/typescript/components/screens/HomeScreen.d.ts.map +0 -1
  204. package/lib/typescript/components/screens/ThreadScreen.d.ts +0 -12
  205. package/lib/typescript/components/screens/ThreadScreen.d.ts.map +0 -1
  206. package/src/components/screens/ComposeScreen.tsx +0 -229
  207. package/src/components/screens/HomeScreen.tsx +0 -346
  208. package/src/components/screens/ThreadScreen.tsx +0 -424
@@ -38,6 +38,9 @@ export const ja = {
38
38
  'thread.resolvedAt': '解決済み · {date}',
39
39
  'thread.readOnly': 'この会話は解決済みで、読み取り専用です',
40
40
  'thread.placeholder': '返信を入力…',
41
+ 'chat.placeholder': 'メッセージを入力…',
42
+ 'review.appStore': 'App Storeで評価する',
43
+ 'review.playStore': 'Google Playで評価する',
41
44
  'thread.sendA11y': '返信を送信',
42
45
  'thread.sendingA11y': '送信中',
43
46
  'thread.translating': '翻訳中…',
@@ -1 +1 @@
1
- {"version":3,"names":["ja"],"sourceRoot":"../../../../src","sources":["i18n/strings/ja.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,MAAM;EACpB,eAAe,EAAE,6BAA6B;EAC9C,YAAY,EAAE,UAAU;EACxB,WAAW,EAAE,KAAK;EAClB,eAAe,EAAE,MAAM;EACvB,YAAY,EAAE,YAAY;EAC1B,gBAAgB,EACd,+BAA+B;EACjC,iBAAiB,EAAE,eAAe;EAClC,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,WAAW;EAC9B,uBAAuB,EAAE,wBAAwB;EACjD,cAAc,EAAE,WAAW;EAC3B,eAAe,EAAE,IAAI;EAErB,eAAe,EAAE,SAAS;EAC1B,sBAAsB,EAAE,SAAS;EACjC,iBAAiB,EAAE,MAAM;EACzB,eAAe,EAAE,cAAc;EAC/B,sBAAsB,EAAE,YAAY;EACpC,iBAAiB,EAAE,WAAW;EAC9B,iBAAiB,EAAE,oBAAoB;EACvC,wBAAwB,EAAE,iBAAiB;EAC3C,mBAAmB,EAAE,mBAAmB;EACxC,cAAc,EAAE,wBAAwB;EACxC,qBAAqB,EAAE,qBAAqB;EAC5C,gBAAgB,EAAE,wBAAwB;EAE1C,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,QAAQ;EACxB,kBAAkB,EAChB,8CAA8C;EAChD,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,IAAI;EACpB,iBAAiB,EAAE,MAAM;EACzB,kBAAkB,EAAE,sBAAsB;EAE1C,gBAAgB,EAAE,MAAM;EACxB,YAAY,EAAE,IAAI;EAClB,mBAAmB,EAAE,eAAe;EACpC,iBAAiB,EAAE,qBAAqB;EACxC,oBAAoB,EAAE,QAAQ;EAC9B,iBAAiB,EAAE,OAAO;EAC1B,oBAAoB,EAAE,KAAK;EAC3B,oBAAoB,EAAE,MAAM;EAE5B,aAAa,EAAE,KAAK;EACpB,iBAAiB,EAAE,MAAM;EAEzB,gBAAgB,EAAE,KAAK;EACvB,mBAAmB,EAAE,2BAA2B;EAChD,eAAe,EAAE,qBAAqB;EACtC,kBAAkB,EAAE,wBAAwB;EAC5C,kBAAkB,EAAE,eAAe;EACnC,mBAAmB,EAAE,mBAAmB;EACxC,uBAAuB,EAAE,4BAA4B;EAErD,YAAY,EAAE,OAAO;EACrB,eAAe,EACb,iCAAiC;EACnC,eAAe,EAAE,KAAK;EACtB,aAAa,EAAE,OAAO;EACtB,iBAAiB,EAAE,wBAAwB;EAE3C,cAAc,EAAE,MAAM;EACtB,cAAc,EAAE,YAAY;EAC5B,YAAY,EAAE,aAAa;EAC3B,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,aAAa;EAC3B,aAAa,EAAE,aAAa;EAC5B,YAAY,EAAE,YAAY;EAC1B,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ja"],"sourceRoot":"../../../../src","sources":["i18n/strings/ja.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,MAAM;EACpB,eAAe,EAAE,6BAA6B;EAC9C,YAAY,EAAE,UAAU;EACxB,WAAW,EAAE,KAAK;EAClB,eAAe,EAAE,MAAM;EACvB,YAAY,EAAE,YAAY;EAC1B,gBAAgB,EACd,+BAA+B;EACjC,iBAAiB,EAAE,eAAe;EAClC,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,WAAW;EAC9B,uBAAuB,EAAE,wBAAwB;EACjD,cAAc,EAAE,WAAW;EAC3B,eAAe,EAAE,IAAI;EAErB,eAAe,EAAE,SAAS;EAC1B,sBAAsB,EAAE,SAAS;EACjC,iBAAiB,EAAE,MAAM;EACzB,eAAe,EAAE,cAAc;EAC/B,sBAAsB,EAAE,YAAY;EACpC,iBAAiB,EAAE,WAAW;EAC9B,iBAAiB,EAAE,oBAAoB;EACvC,wBAAwB,EAAE,iBAAiB;EAC3C,mBAAmB,EAAE,mBAAmB;EACxC,cAAc,EAAE,wBAAwB;EACxC,qBAAqB,EAAE,qBAAqB;EAC5C,gBAAgB,EAAE,wBAAwB;EAE1C,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,QAAQ;EACxB,kBAAkB,EAChB,8CAA8C;EAChD,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,IAAI;EACpB,iBAAiB,EAAE,MAAM;EACzB,kBAAkB,EAAE,sBAAsB;EAE1C,gBAAgB,EAAE,MAAM;EACxB,YAAY,EAAE,IAAI;EAClB,mBAAmB,EAAE,eAAe;EACpC,iBAAiB,EAAE,qBAAqB;EACxC,oBAAoB,EAAE,QAAQ;EAC9B,kBAAkB,EAAE,WAAW;EAC/B,iBAAiB,EAAE,gBAAgB;EACnC,kBAAkB,EAAE,kBAAkB;EACtC,iBAAiB,EAAE,OAAO;EAC1B,oBAAoB,EAAE,KAAK;EAC3B,oBAAoB,EAAE,MAAM;EAE5B,aAAa,EAAE,KAAK;EACpB,iBAAiB,EAAE,MAAM;EAEzB,gBAAgB,EAAE,KAAK;EACvB,mBAAmB,EAAE,2BAA2B;EAChD,eAAe,EAAE,qBAAqB;EACtC,kBAAkB,EAAE,wBAAwB;EAC5C,kBAAkB,EAAE,eAAe;EACnC,mBAAmB,EAAE,mBAAmB;EACxC,uBAAuB,EAAE,4BAA4B;EAErD,YAAY,EAAE,OAAO;EACrB,eAAe,EACb,iCAAiC;EACnC,eAAe,EAAE,KAAK;EACtB,aAAa,EAAE,OAAO;EACtB,iBAAiB,EAAE,wBAAwB;EAE3C,cAAc,EAAE,MAAM;EACtB,cAAc,EAAE,YAAY;EAC5B,YAAY,EAAE,aAAa;EAC3B,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,aAAa;EAC3B,aAAa,EAAE,aAAa;EAC5B,YAAY,EAAE,YAAY;EAC1B,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const ko = {
38
38
  'thread.resolvedAt': '해결됨 · {date}',
39
39
  'thread.readOnly': '이 대화는 해결되어 읽기 전용입니다',
40
40
  'thread.placeholder': '답장을 입력하세요…',
41
+ 'chat.placeholder': '메시지를 입력하세요…',
42
+ 'review.appStore': 'App Store에서 평가하기',
43
+ 'review.playStore': 'Google Play에서 평가하기',
41
44
  'thread.sendA11y': '답장 보내기',
42
45
  'thread.sendingA11y': '보내는 중',
43
46
  'thread.translating': '번역 중…',
@@ -1 +1 @@
1
- {"version":3,"names":["ko"],"sourceRoot":"../../../../src","sources":["i18n/strings/ko.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,MAAM;EACpB,eAAe,EAAE,6BAA6B;EAC9C,YAAY,EAAE,SAAS;EACvB,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,KAAK;EACtB,YAAY,EAAE,aAAa;EAC3B,gBAAgB,EAAE,mCAAmC;EACrD,iBAAiB,EAAE,cAAc;EACjC,UAAU,EAAE,GAAG;EACf,iBAAiB,EAAE,YAAY;EAC/B,uBAAuB,EAAE,4BAA4B;EACrD,cAAc,EAAE,gBAAgB;EAChC,eAAe,EAAE,IAAI;EAErB,eAAe,EAAE,KAAK;EACtB,sBAAsB,EAAE,OAAO;EAC/B,iBAAiB,EAAE,OAAO;EAC1B,eAAe,EAAE,kBAAkB;EACnC,sBAAsB,EAAE,kBAAkB;EAC1C,iBAAiB,EAAE,eAAe;EAClC,iBAAiB,EAAE,cAAc;EACjC,wBAAwB,EAAE,eAAe;EACzC,mBAAmB,EAAE,yBAAyB;EAC9C,cAAc,EAAE,4BAA4B;EAC5C,qBAAqB,EAAE,qBAAqB;EAC5C,gBAAgB,EAAE,gCAAgC;EAElD,cAAc,EAAE,cAAc;EAC9B,cAAc,EAAE,OAAO;EACvB,kBAAkB,EAChB,sDAAsD;EACxD,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,KAAK;EACrB,iBAAiB,EAAE,QAAQ;EAC3B,kBAAkB,EAAE,qBAAqB;EAEzC,gBAAgB,EAAE,MAAM;EACxB,YAAY,EAAE,OAAO;EACrB,mBAAmB,EAAE,cAAc;EACnC,iBAAiB,EAAE,qBAAqB;EACxC,oBAAoB,EAAE,YAAY;EAClC,iBAAiB,EAAE,QAAQ;EAC3B,oBAAoB,EAAE,OAAO;EAC7B,oBAAoB,EAAE,OAAO;EAE7B,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,KAAK;EAExB,gBAAgB,EAAE,OAAO;EACzB,mBAAmB,EAAE,8BAA8B;EACnD,eAAe,EAAE,0BAA0B;EAC3C,kBAAkB,EAAE,wBAAwB;EAC5C,kBAAkB,EAAE,gBAAgB;EACpC,mBAAmB,EAAE,sBAAsB;EAC3C,uBAAuB,EAAE,+BAA+B;EAExD,YAAY,EAAE,WAAW;EACzB,eAAe,EACb,uCAAuC;EACzC,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE,OAAO;EACtB,iBAAiB,EAAE,yBAAyB;EAE5C,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,YAAY;EAC5B,YAAY,EAAE,aAAa;EAC3B,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY;EAC1B,aAAa,EAAE,aAAa;EAC5B,YAAY,EAAE,YAAY;EAC1B,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ko"],"sourceRoot":"../../../../src","sources":["i18n/strings/ko.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,MAAM;EACpB,eAAe,EAAE,6BAA6B;EAC9C,YAAY,EAAE,SAAS;EACvB,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,KAAK;EACtB,YAAY,EAAE,aAAa;EAC3B,gBAAgB,EAAE,mCAAmC;EACrD,iBAAiB,EAAE,cAAc;EACjC,UAAU,EAAE,GAAG;EACf,iBAAiB,EAAE,YAAY;EAC/B,uBAAuB,EAAE,4BAA4B;EACrD,cAAc,EAAE,gBAAgB;EAChC,eAAe,EAAE,IAAI;EAErB,eAAe,EAAE,KAAK;EACtB,sBAAsB,EAAE,OAAO;EAC/B,iBAAiB,EAAE,OAAO;EAC1B,eAAe,EAAE,kBAAkB;EACnC,sBAAsB,EAAE,kBAAkB;EAC1C,iBAAiB,EAAE,eAAe;EAClC,iBAAiB,EAAE,cAAc;EACjC,wBAAwB,EAAE,eAAe;EACzC,mBAAmB,EAAE,yBAAyB;EAC9C,cAAc,EAAE,4BAA4B;EAC5C,qBAAqB,EAAE,qBAAqB;EAC5C,gBAAgB,EAAE,gCAAgC;EAElD,cAAc,EAAE,cAAc;EAC9B,cAAc,EAAE,OAAO;EACvB,kBAAkB,EAChB,sDAAsD;EACxD,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,KAAK;EACrB,iBAAiB,EAAE,QAAQ;EAC3B,kBAAkB,EAAE,qBAAqB;EAEzC,gBAAgB,EAAE,MAAM;EACxB,YAAY,EAAE,OAAO;EACrB,mBAAmB,EAAE,cAAc;EACnC,iBAAiB,EAAE,qBAAqB;EACxC,oBAAoB,EAAE,YAAY;EAClC,kBAAkB,EAAE,aAAa;EACjC,iBAAiB,EAAE,kBAAkB;EACrC,kBAAkB,EAAE,oBAAoB;EACxC,iBAAiB,EAAE,QAAQ;EAC3B,oBAAoB,EAAE,OAAO;EAC7B,oBAAoB,EAAE,OAAO;EAE7B,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,KAAK;EAExB,gBAAgB,EAAE,OAAO;EACzB,mBAAmB,EAAE,8BAA8B;EACnD,eAAe,EAAE,0BAA0B;EAC3C,kBAAkB,EAAE,wBAAwB;EAC5C,kBAAkB,EAAE,gBAAgB;EACpC,mBAAmB,EAAE,sBAAsB;EAC3C,uBAAuB,EAAE,+BAA+B;EAExD,YAAY,EAAE,WAAW;EACzB,eAAe,EACb,uCAAuC;EACzC,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE,OAAO;EACtB,iBAAiB,EAAE,yBAAyB;EAE5C,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,YAAY;EAC5B,YAAY,EAAE,aAAa;EAC3B,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY;EAC1B,aAAa,EAAE,aAAa;EAC5B,YAAY,EAAE,YAAY;EAC1B,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const nl = {
38
38
  'thread.resolvedAt': 'Afgehandeld · {date}',
39
39
  'thread.readOnly': 'Dit gesprek is afgehandeld en alleen-lezen',
40
40
  'thread.placeholder': 'Schrijf een antwoord…',
41
+ 'chat.placeholder': 'Schrijf een bericht…',
42
+ 'review.appStore': 'Beoordelen in de App Store',
43
+ 'review.playStore': 'Beoordelen in Google Play',
41
44
  'thread.sendA11y': 'Antwoord verzenden',
42
45
  'thread.sendingA11y': 'Bezig met verzenden',
43
46
  'thread.translating': 'Vertalen…',
@@ -1 +1 @@
1
- {"version":3,"names":["nl"],"sourceRoot":"../../../../src","sources":["i18n/strings/nl.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,SAAS;EACvB,eAAe,EAAE,yCAAyC;EAC1D,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,aAAa;EAC9B,YAAY,EAAE,qBAAqB;EACnC,gBAAgB,EACd,8FAA8F;EAChG,iBAAiB,EAAE,oBAAoB;EACvC,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,iBAAiB;EACpC,uBAAuB,EAAE,oCAAoC;EAC7D,cAAc,EAAE,eAAe;EAC/B,eAAe,EAAE,MAAM;EAEvB,eAAe,EAAE,UAAU;EAC3B,sBAAsB,EAAE,gBAAgB;EACxC,iBAAiB,EAAE,YAAY;EAC/B,eAAe,EAAE,+BAA+B;EAChD,sBAAsB,EAAE,2BAA2B;EACnD,iBAAiB,EAAE,oBAAoB;EACvC,iBAAiB,EAAE,sBAAsB;EACzC,wBAAwB,EAAE,+BAA+B;EACzD,mBAAmB,EAAE,0CAA0C;EAC/D,cAAc,EAAE,uDAAuD;EACvE,qBAAqB,EAAE,qCAAqC;EAC5D,gBAAgB,EAAE,uDAAuD;EAEzE,cAAc,EAAE,uBAAuB;EACvC,cAAc,EAAE,WAAW;EAC3B,kBAAkB,EAChB,oGAAoG;EACtG,cAAc,EAAE,OAAO;EACvB,cAAc,EAAE,WAAW;EAC3B,iBAAiB,EAAE,YAAY;EAC/B,kBAAkB,EAAE,yBAAyB;EAE7C,gBAAgB,EAAE,SAAS;EAC3B,YAAY,EAAE,OAAO;EACrB,mBAAmB,EAAE,sBAAsB;EAC3C,iBAAiB,EAAE,4CAA4C;EAC/D,oBAAoB,EAAE,uBAAuB;EAC7C,iBAAiB,EAAE,oBAAoB;EACvC,oBAAoB,EAAE,qBAAqB;EAC3C,oBAAoB,EAAE,WAAW;EAEjC,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,aAAa;EAEhC,gBAAgB,EAAE,kBAAkB;EACpC,mBAAmB,EAAE,+CAA+C;EACpE,eAAe,EAAE,4CAA4C;EAC7D,kBAAkB,EAAE,yCAAyC;EAC7D,kBAAkB,EAAE,0CAA0C;EAC9D,mBAAmB,EAAE,uCAAuC;EAC5D,uBAAuB,EAAE,4CAA4C;EAErE,YAAY,EAAE,cAAc;EAC5B,eAAe,EACb,+EAA+E;EACjF,eAAe,EAAE,UAAU;EAC3B,aAAa,EAAE,eAAe;EAC9B,iBAAiB,EAAE,uCAAuC;EAE1D,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,qBAAqB;EACrC,YAAY,EAAE,mBAAmB;EACjC,WAAW,EAAE,mBAAmB;EAChC,YAAY,EAAE,mBAAmB;EACjC,aAAa,EAAE,qBAAqB;EACpC,YAAY,EAAE,mBAAmB;EACjC,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["nl"],"sourceRoot":"../../../../src","sources":["i18n/strings/nl.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,SAAS;EACvB,eAAe,EAAE,yCAAyC;EAC1D,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,aAAa;EAC9B,YAAY,EAAE,qBAAqB;EACnC,gBAAgB,EACd,8FAA8F;EAChG,iBAAiB,EAAE,oBAAoB;EACvC,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,iBAAiB;EACpC,uBAAuB,EAAE,oCAAoC;EAC7D,cAAc,EAAE,eAAe;EAC/B,eAAe,EAAE,MAAM;EAEvB,eAAe,EAAE,UAAU;EAC3B,sBAAsB,EAAE,gBAAgB;EACxC,iBAAiB,EAAE,YAAY;EAC/B,eAAe,EAAE,+BAA+B;EAChD,sBAAsB,EAAE,2BAA2B;EACnD,iBAAiB,EAAE,oBAAoB;EACvC,iBAAiB,EAAE,sBAAsB;EACzC,wBAAwB,EAAE,+BAA+B;EACzD,mBAAmB,EAAE,0CAA0C;EAC/D,cAAc,EAAE,uDAAuD;EACvE,qBAAqB,EAAE,qCAAqC;EAC5D,gBAAgB,EAAE,uDAAuD;EAEzE,cAAc,EAAE,uBAAuB;EACvC,cAAc,EAAE,WAAW;EAC3B,kBAAkB,EAChB,oGAAoG;EACtG,cAAc,EAAE,OAAO;EACvB,cAAc,EAAE,WAAW;EAC3B,iBAAiB,EAAE,YAAY;EAC/B,kBAAkB,EAAE,yBAAyB;EAE7C,gBAAgB,EAAE,SAAS;EAC3B,YAAY,EAAE,OAAO;EACrB,mBAAmB,EAAE,sBAAsB;EAC3C,iBAAiB,EAAE,4CAA4C;EAC/D,oBAAoB,EAAE,uBAAuB;EAC7C,kBAAkB,EAAE,sBAAsB;EAC1C,iBAAiB,EAAE,4BAA4B;EAC/C,kBAAkB,EAAE,2BAA2B;EAC/C,iBAAiB,EAAE,oBAAoB;EACvC,oBAAoB,EAAE,qBAAqB;EAC3C,oBAAoB,EAAE,WAAW;EAEjC,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,aAAa;EAEhC,gBAAgB,EAAE,kBAAkB;EACpC,mBAAmB,EAAE,+CAA+C;EACpE,eAAe,EAAE,4CAA4C;EAC7D,kBAAkB,EAAE,yCAAyC;EAC7D,kBAAkB,EAAE,0CAA0C;EAC9D,mBAAmB,EAAE,uCAAuC;EAC5D,uBAAuB,EAAE,4CAA4C;EAErE,YAAY,EAAE,cAAc;EAC5B,eAAe,EACb,+EAA+E;EACjF,eAAe,EAAE,UAAU;EAC3B,aAAa,EAAE,eAAe;EAC9B,iBAAiB,EAAE,uCAAuC;EAE1D,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,qBAAqB;EACrC,YAAY,EAAE,mBAAmB;EACjC,WAAW,EAAE,mBAAmB;EAChC,YAAY,EAAE,mBAAmB;EACjC,aAAa,EAAE,qBAAqB;EACpC,YAAY,EAAE,mBAAmB;EACjC,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const pl = {
38
38
  'thread.resolvedAt': 'Rozwiązane · {date}',
39
39
  'thread.readOnly': 'Ta rozmowa jest rozwiązana i tylko do odczytu',
40
40
  'thread.placeholder': 'Napisz odpowiedź…',
41
+ 'chat.placeholder': 'Napisz wiadomość…',
42
+ 'review.appStore': 'Oceń w App Store',
43
+ 'review.playStore': 'Oceń w Google Play',
41
44
  'thread.sendA11y': 'Wyślij odpowiedź',
42
45
  'thread.sendingA11y': 'Wysyłanie',
43
46
  'thread.translating': 'Tłumaczenie…',
@@ -1 +1 @@
1
- {"version":3,"names":["pl"],"sourceRoot":"../../../../src","sources":["i18n/strings/pl.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,OAAO;EACrB,eAAe,EAAE,yCAAyC;EAC1D,YAAY,EAAE,eAAe;EAC7B,WAAW,EAAE,SAAS;EACtB,eAAe,EAAE,YAAY;EAC7B,YAAY,EAAE,uBAAuB;EACrC,gBAAgB,EACd,6EAA6E;EAC/E,iBAAiB,EAAE,2BAA2B;EAC9C,UAAU,EAAE,IAAI;EAChB,iBAAiB,EAAE,iBAAiB;EACpC,uBAAuB,EAAE,0CAA0C;EACnE,cAAc,EAAE,cAAc;EAC9B,eAAe,EAAE,OAAO;EAExB,eAAe,EAAE,QAAQ;EACzB,sBAAsB,EAAE,kBAAkB;EAC1C,iBAAiB,EAAE,kBAAkB;EACrC,eAAe,EAAE,yBAAyB;EAC1C,sBAAsB,EAAE,uBAAuB;EAC/C,iBAAiB,EAAE,gBAAgB;EACnC,iBAAiB,EAAE,yBAAyB;EAC5C,wBAAwB,EAAE,wBAAwB;EAClD,mBAAmB,EAAE,wCAAwC;EAC7D,cAAc,EAAE,2CAA2C;EAC3D,qBAAqB,EAAE,gCAAgC;EACvD,gBAAgB,EAAE,yDAAyD;EAE3E,cAAc,EAAE,gBAAgB;EAChC,cAAc,EAAE,SAAS;EACzB,kBAAkB,EAChB,kGAAkG;EACpG,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,QAAQ;EACxB,iBAAiB,EAAE,YAAY;EAC/B,kBAAkB,EAAE,4BAA4B;EAEhD,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,MAAM;EACpB,mBAAmB,EAAE,qBAAqB;EAC1C,iBAAiB,EAAE,+CAA+C;EAClE,oBAAoB,EAAE,mBAAmB;EACzC,iBAAiB,EAAE,kBAAkB;EACrC,oBAAoB,EAAE,WAAW;EACjC,oBAAoB,EAAE,cAAc;EAEpC,aAAa,EAAE,SAAS;EACxB,iBAAiB,EAAE,YAAY;EAE/B,gBAAgB,EAAE,kBAAkB;EACpC,mBAAmB,EAAE,oCAAoC;EACzD,eAAe,EAAE,qCAAqC;EACtD,kBAAkB,EAAE,yCAAyC;EAC7D,kBAAkB,EAAE,8BAA8B;EAClD,mBAAmB,EAAE,8BAA8B;EACnD,uBAAuB,EAAE,sCAAsC;EAE/D,YAAY,EAAE,oBAAoB;EAClC,eAAe,EACb,oEAAoE;EACtE,eAAe,EAAE,OAAO;EACxB,aAAa,EAAE,aAAa;EAC5B,iBAAiB,EAAE,0CAA0C;EAE7D,cAAc,EAAE,cAAc;EAC9B,cAAc,EAAE,kBAAkB;EAClC,YAAY,EAAE,oBAAoB;EAClC,WAAW,EAAE,kBAAkB;EAC/B,YAAY,EAAE,mBAAmB;EACjC,aAAa,EAAE,oBAAoB;EACnC,YAAY,EAAE,kBAAkB;EAChC,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["pl"],"sourceRoot":"../../../../src","sources":["i18n/strings/pl.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,OAAO;EACrB,eAAe,EAAE,yCAAyC;EAC1D,YAAY,EAAE,eAAe;EAC7B,WAAW,EAAE,SAAS;EACtB,eAAe,EAAE,YAAY;EAC7B,YAAY,EAAE,uBAAuB;EACrC,gBAAgB,EACd,6EAA6E;EAC/E,iBAAiB,EAAE,2BAA2B;EAC9C,UAAU,EAAE,IAAI;EAChB,iBAAiB,EAAE,iBAAiB;EACpC,uBAAuB,EAAE,0CAA0C;EACnE,cAAc,EAAE,cAAc;EAC9B,eAAe,EAAE,OAAO;EAExB,eAAe,EAAE,QAAQ;EACzB,sBAAsB,EAAE,kBAAkB;EAC1C,iBAAiB,EAAE,kBAAkB;EACrC,eAAe,EAAE,yBAAyB;EAC1C,sBAAsB,EAAE,uBAAuB;EAC/C,iBAAiB,EAAE,gBAAgB;EACnC,iBAAiB,EAAE,yBAAyB;EAC5C,wBAAwB,EAAE,wBAAwB;EAClD,mBAAmB,EAAE,wCAAwC;EAC7D,cAAc,EAAE,2CAA2C;EAC3D,qBAAqB,EAAE,gCAAgC;EACvD,gBAAgB,EAAE,yDAAyD;EAE3E,cAAc,EAAE,gBAAgB;EAChC,cAAc,EAAE,SAAS;EACzB,kBAAkB,EAChB,kGAAkG;EACpG,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,QAAQ;EACxB,iBAAiB,EAAE,YAAY;EAC/B,kBAAkB,EAAE,4BAA4B;EAEhD,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,MAAM;EACpB,mBAAmB,EAAE,qBAAqB;EAC1C,iBAAiB,EAAE,+CAA+C;EAClE,oBAAoB,EAAE,mBAAmB;EACzC,kBAAkB,EAAE,mBAAmB;EACvC,iBAAiB,EAAE,kBAAkB;EACrC,kBAAkB,EAAE,oBAAoB;EACxC,iBAAiB,EAAE,kBAAkB;EACrC,oBAAoB,EAAE,WAAW;EACjC,oBAAoB,EAAE,cAAc;EAEpC,aAAa,EAAE,SAAS;EACxB,iBAAiB,EAAE,YAAY;EAE/B,gBAAgB,EAAE,kBAAkB;EACpC,mBAAmB,EAAE,oCAAoC;EACzD,eAAe,EAAE,qCAAqC;EACtD,kBAAkB,EAAE,yCAAyC;EAC7D,kBAAkB,EAAE,8BAA8B;EAClD,mBAAmB,EAAE,8BAA8B;EACnD,uBAAuB,EAAE,sCAAsC;EAE/D,YAAY,EAAE,oBAAoB;EAClC,eAAe,EACb,oEAAoE;EACtE,eAAe,EAAE,OAAO;EACxB,aAAa,EAAE,aAAa;EAC5B,iBAAiB,EAAE,0CAA0C;EAE7D,cAAc,EAAE,cAAc;EAC9B,cAAc,EAAE,kBAAkB;EAClC,YAAY,EAAE,oBAAoB;EAClC,WAAW,EAAE,kBAAkB;EAC/B,YAAY,EAAE,mBAAmB;EACjC,aAAa,EAAE,oBAAoB;EACnC,YAAY,EAAE,kBAAkB;EAChC,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const pt = {
38
38
  'thread.resolvedAt': 'Resolvida · {date}',
39
39
  'thread.readOnly': 'Esta conversa está resolvida e é somente leitura',
40
40
  'thread.placeholder': 'Escreva uma resposta…',
41
+ 'chat.placeholder': 'Escreva uma mensagem…',
42
+ 'review.appStore': 'Avaliar na App Store',
43
+ 'review.playStore': 'Avaliar no Google Play',
41
44
  'thread.sendA11y': 'Enviar resposta',
42
45
  'thread.sendingA11y': 'Enviando',
43
46
  'thread.translating': 'Traduzindo…',
@@ -1 +1 @@
1
- {"version":3,"names":["pt"],"sourceRoot":"../../../../src","sources":["i18n/strings/pt.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,SAAS;EACvB,eAAe,EAAE,+CAA+C;EAChE,YAAY,EAAE,gBAAgB;EAC9B,WAAW,EAAE,SAAS;EACtB,eAAe,EAAE,YAAY;EAC7B,YAAY,EAAE,wBAAwB;EACtC,gBAAgB,EACd,gFAAgF;EAClF,iBAAiB,EAAE,wBAAwB;EAC3C,UAAU,EAAE,MAAM;EAClB,iBAAiB,EAAE,kBAAkB;EACrC,uBAAuB,EAAE,qCAAqC;EAC9D,cAAc,EAAE,cAAc;EAC9B,eAAe,EAAE,QAAQ;EAEzB,eAAe,EAAE,UAAU;EAC3B,sBAAsB,EAAE,qBAAqB;EAC7C,iBAAiB,EAAE,gBAAgB;EACnC,eAAe,EAAE,uBAAuB;EACxC,sBAAsB,EAAE,qBAAqB;EAC7C,iBAAiB,EAAE,2BAA2B;EAC9C,iBAAiB,EAAE,yBAAyB;EAC5C,wBAAwB,EAAE,6BAA6B;EACvD,mBAAmB,EAAE,wCAAwC;EAC7D,cAAc,EAAE,yCAAyC;EACzD,qBAAqB,EAAE,uCAAuC;EAC9D,gBAAgB,EAAE,uDAAuD;EAEzE,cAAc,EAAE,qBAAqB;EACrC,cAAc,EAAE,SAAS;EACzB,kBAAkB,EAChB,iHAAiH;EACnH,cAAc,EAAE,WAAW;EAC3B,cAAc,EAAE,QAAQ;EACxB,iBAAiB,EAAE,WAAW;EAC9B,kBAAkB,EAAE,+BAA+B;EAEnD,gBAAgB,EAAE,SAAS;EAC3B,YAAY,EAAE,MAAM;EACpB,mBAAmB,EAAE,oBAAoB;EACzC,iBAAiB,EAAE,kDAAkD;EACrE,oBAAoB,EAAE,uBAAuB;EAC7C,iBAAiB,EAAE,iBAAiB;EACpC,oBAAoB,EAAE,UAAU;EAChC,oBAAoB,EAAE,aAAa;EAEnC,aAAa,EAAE,QAAQ;EACvB,iBAAiB,EAAE,WAAW;EAE9B,gBAAgB,EAAE,kBAAkB;EACpC,mBAAmB,EAAE,kDAAkD;EACvE,eAAe,EAAE,4CAA4C;EAC7D,kBAAkB,EAAE,2CAA2C;EAC/D,kBAAkB,EAAE,0CAA0C;EAC9D,mBAAmB,EAAE,wCAAwC;EAC7D,uBAAuB,EAAE,oDAAoD;EAE7E,YAAY,EAAE,oBAAoB;EAClC,eAAe,EACb,+EAA+E;EACjF,eAAe,EAAE,WAAW;EAC5B,aAAa,EAAE,gBAAgB;EAC/B,iBAAiB,EAAE,2CAA2C;EAE9D,cAAc,EAAE,aAAa;EAC7B,cAAc,EAAE,gBAAgB;EAChC,YAAY,EAAE,cAAc;EAC5B,WAAW,EAAE,cAAc;EAC3B,YAAY,EAAE,gBAAgB;EAC9B,aAAa,EAAE,kBAAkB;EACjC,YAAY,EAAE,iBAAiB;EAC/B,YAAY,EAAE,MAAM;EACpB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["pt"],"sourceRoot":"../../../../src","sources":["i18n/strings/pt.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,SAAS;EACvB,eAAe,EAAE,+CAA+C;EAChE,YAAY,EAAE,gBAAgB;EAC9B,WAAW,EAAE,SAAS;EACtB,eAAe,EAAE,YAAY;EAC7B,YAAY,EAAE,wBAAwB;EACtC,gBAAgB,EACd,gFAAgF;EAClF,iBAAiB,EAAE,wBAAwB;EAC3C,UAAU,EAAE,MAAM;EAClB,iBAAiB,EAAE,kBAAkB;EACrC,uBAAuB,EAAE,qCAAqC;EAC9D,cAAc,EAAE,cAAc;EAC9B,eAAe,EAAE,QAAQ;EAEzB,eAAe,EAAE,UAAU;EAC3B,sBAAsB,EAAE,qBAAqB;EAC7C,iBAAiB,EAAE,gBAAgB;EACnC,eAAe,EAAE,uBAAuB;EACxC,sBAAsB,EAAE,qBAAqB;EAC7C,iBAAiB,EAAE,2BAA2B;EAC9C,iBAAiB,EAAE,yBAAyB;EAC5C,wBAAwB,EAAE,6BAA6B;EACvD,mBAAmB,EAAE,wCAAwC;EAC7D,cAAc,EAAE,yCAAyC;EACzD,qBAAqB,EAAE,uCAAuC;EAC9D,gBAAgB,EAAE,uDAAuD;EAEzE,cAAc,EAAE,qBAAqB;EACrC,cAAc,EAAE,SAAS;EACzB,kBAAkB,EAChB,iHAAiH;EACnH,cAAc,EAAE,WAAW;EAC3B,cAAc,EAAE,QAAQ;EACxB,iBAAiB,EAAE,WAAW;EAC9B,kBAAkB,EAAE,+BAA+B;EAEnD,gBAAgB,EAAE,SAAS;EAC3B,YAAY,EAAE,MAAM;EACpB,mBAAmB,EAAE,oBAAoB;EACzC,iBAAiB,EAAE,kDAAkD;EACrE,oBAAoB,EAAE,uBAAuB;EAC7C,kBAAkB,EAAE,uBAAuB;EAC3C,iBAAiB,EAAE,sBAAsB;EACzC,kBAAkB,EAAE,wBAAwB;EAC5C,iBAAiB,EAAE,iBAAiB;EACpC,oBAAoB,EAAE,UAAU;EAChC,oBAAoB,EAAE,aAAa;EAEnC,aAAa,EAAE,QAAQ;EACvB,iBAAiB,EAAE,WAAW;EAE9B,gBAAgB,EAAE,kBAAkB;EACpC,mBAAmB,EAAE,kDAAkD;EACvE,eAAe,EAAE,4CAA4C;EAC7D,kBAAkB,EAAE,2CAA2C;EAC/D,kBAAkB,EAAE,0CAA0C;EAC9D,mBAAmB,EAAE,wCAAwC;EAC7D,uBAAuB,EAAE,oDAAoD;EAE7E,YAAY,EAAE,oBAAoB;EAClC,eAAe,EACb,+EAA+E;EACjF,eAAe,EAAE,WAAW;EAC5B,aAAa,EAAE,gBAAgB;EAC/B,iBAAiB,EAAE,2CAA2C;EAE9D,cAAc,EAAE,aAAa;EAC7B,cAAc,EAAE,gBAAgB;EAChC,YAAY,EAAE,cAAc;EAC5B,WAAW,EAAE,cAAc;EAC3B,YAAY,EAAE,gBAAgB;EAC9B,aAAa,EAAE,kBAAkB;EACjC,YAAY,EAAE,iBAAiB;EAC/B,YAAY,EAAE,MAAM;EACpB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const ru = {
38
38
  'thread.resolvedAt': 'Решено · {date}',
39
39
  'thread.readOnly': 'Этот разговор решён и доступен только для чтения',
40
40
  'thread.placeholder': 'Напишите ответ…',
41
+ 'chat.placeholder': 'Напишите сообщение…',
42
+ 'review.appStore': 'Оценить в App Store',
43
+ 'review.playStore': 'Оценить в Google Play',
41
44
  'thread.sendA11y': 'Отправить ответ',
42
45
  'thread.sendingA11y': 'Отправка',
43
46
  'thread.translating': 'Перевод…',
@@ -1 +1 @@
1
- {"version":3,"names":["ru"],"sourceRoot":"../../../../src","sources":["i18n/strings/ru.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,WAAW;EACzB,eAAe,EAAE,4CAA4C;EAC7D,YAAY,EAAE,mBAAmB;EACjC,WAAW,EAAE,UAAU;EACvB,eAAe,EAAE,UAAU;EAC3B,YAAY,EAAE,qBAAqB;EACnC,gBAAgB,EACd,yEAAyE;EAC3E,iBAAiB,EAAE,oBAAoB;EACvC,UAAU,EAAE,IAAI;EAChB,iBAAiB,EAAE,kBAAkB;EACrC,uBAAuB,EAAE,0CAA0C;EACnE,cAAc,EAAE,eAAe;EAC/B,eAAe,EAAE,MAAM;EAEvB,eAAe,EAAE,OAAO;EACxB,sBAAsB,EAAE,gBAAgB;EACxC,iBAAiB,EAAE,qBAAqB;EACxC,eAAe,EAAE,4BAA4B;EAC7C,sBAAsB,EAAE,sBAAsB;EAC9C,iBAAiB,EAAE,oBAAoB;EACvC,iBAAiB,EAAE,wBAAwB;EAC3C,wBAAwB,EAAE,2BAA2B;EACrD,mBAAmB,EAAE,kCAAkC;EACvD,cAAc,EAAE,+CAA+C;EAC/D,qBAAqB,EAAE,uCAAuC;EAC9D,gBAAgB,EAAE,iDAAiD;EAEnE,cAAc,EAAE,oBAAoB;EACpC,cAAc,EAAE,YAAY;EAC5B,kBAAkB,EAChB,iHAAiH;EACnH,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,WAAW;EAC3B,iBAAiB,EAAE,WAAW;EAC9B,kBAAkB,EAAE,2BAA2B;EAE/C,gBAAgB,EAAE,WAAW;EAC7B,YAAY,EAAE,OAAO;EACrB,mBAAmB,EAAE,iBAAiB;EACtC,iBAAiB,EAAE,kDAAkD;EACrE,oBAAoB,EAAE,iBAAiB;EACvC,iBAAiB,EAAE,iBAAiB;EACpC,oBAAoB,EAAE,UAAU;EAChC,oBAAoB,EAAE,UAAU;EAEhC,aAAa,EAAE,QAAQ;EACvB,iBAAiB,EAAE,OAAO;EAE1B,gBAAgB,EAAE,WAAW;EAC7B,mBAAmB,EAAE,2CAA2C;EAChE,eAAe,EAAE,kCAAkC;EACnD,kBAAkB,EAAE,2CAA2C;EAC/D,kBAAkB,EAAE,qCAAqC;EACzD,mBAAmB,EAAE,6BAA6B;EAClD,uBAAuB,EAAE,kDAAkD;EAE3E,YAAY,EAAE,eAAe;EAC7B,eAAe,EACb,6EAA6E;EAC/E,eAAe,EAAE,YAAY;EAC7B,aAAa,EAAE,eAAe;EAC9B,iBAAiB,EAAE,2CAA2C;EAE9D,cAAc,EAAE,YAAY;EAC5B,cAAc,EAAE,mBAAmB;EACnC,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,kBAAkB;EAC/B,YAAY,EAAE,mBAAmB;EACjC,aAAa,EAAE,mBAAmB;EAClC,YAAY,EAAE,iBAAiB;EAC/B,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ru"],"sourceRoot":"../../../../src","sources":["i18n/strings/ru.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,WAAW;EACzB,eAAe,EAAE,4CAA4C;EAC7D,YAAY,EAAE,mBAAmB;EACjC,WAAW,EAAE,UAAU;EACvB,eAAe,EAAE,UAAU;EAC3B,YAAY,EAAE,qBAAqB;EACnC,gBAAgB,EACd,yEAAyE;EAC3E,iBAAiB,EAAE,oBAAoB;EACvC,UAAU,EAAE,IAAI;EAChB,iBAAiB,EAAE,kBAAkB;EACrC,uBAAuB,EAAE,0CAA0C;EACnE,cAAc,EAAE,eAAe;EAC/B,eAAe,EAAE,MAAM;EAEvB,eAAe,EAAE,OAAO;EACxB,sBAAsB,EAAE,gBAAgB;EACxC,iBAAiB,EAAE,qBAAqB;EACxC,eAAe,EAAE,4BAA4B;EAC7C,sBAAsB,EAAE,sBAAsB;EAC9C,iBAAiB,EAAE,oBAAoB;EACvC,iBAAiB,EAAE,wBAAwB;EAC3C,wBAAwB,EAAE,2BAA2B;EACrD,mBAAmB,EAAE,kCAAkC;EACvD,cAAc,EAAE,+CAA+C;EAC/D,qBAAqB,EAAE,uCAAuC;EAC9D,gBAAgB,EAAE,iDAAiD;EAEnE,cAAc,EAAE,oBAAoB;EACpC,cAAc,EAAE,YAAY;EAC5B,kBAAkB,EAChB,iHAAiH;EACnH,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,WAAW;EAC3B,iBAAiB,EAAE,WAAW;EAC9B,kBAAkB,EAAE,2BAA2B;EAE/C,gBAAgB,EAAE,WAAW;EAC7B,YAAY,EAAE,OAAO;EACrB,mBAAmB,EAAE,iBAAiB;EACtC,iBAAiB,EAAE,kDAAkD;EACrE,oBAAoB,EAAE,iBAAiB;EACvC,kBAAkB,EAAE,qBAAqB;EACzC,iBAAiB,EAAE,qBAAqB;EACxC,kBAAkB,EAAE,uBAAuB;EAC3C,iBAAiB,EAAE,iBAAiB;EACpC,oBAAoB,EAAE,UAAU;EAChC,oBAAoB,EAAE,UAAU;EAEhC,aAAa,EAAE,QAAQ;EACvB,iBAAiB,EAAE,OAAO;EAE1B,gBAAgB,EAAE,WAAW;EAC7B,mBAAmB,EAAE,2CAA2C;EAChE,eAAe,EAAE,kCAAkC;EACnD,kBAAkB,EAAE,2CAA2C;EAC/D,kBAAkB,EAAE,qCAAqC;EACzD,mBAAmB,EAAE,6BAA6B;EAClD,uBAAuB,EAAE,kDAAkD;EAE3E,YAAY,EAAE,eAAe;EAC7B,eAAe,EACb,6EAA6E;EAC/E,eAAe,EAAE,YAAY;EAC7B,aAAa,EAAE,eAAe;EAC9B,iBAAiB,EAAE,2CAA2C;EAE9D,cAAc,EAAE,YAAY;EAC5B,cAAc,EAAE,mBAAmB;EACnC,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,kBAAkB;EAC/B,YAAY,EAAE,mBAAmB;EACjC,aAAa,EAAE,mBAAmB;EAClC,YAAY,EAAE,iBAAiB;EAC/B,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const tr = {
38
38
  'thread.resolvedAt': 'Çözüldü · {date}',
39
39
  'thread.readOnly': 'Bu görüşme çözüldü ve salt okunur',
40
40
  'thread.placeholder': 'Bir yanıt yazın…',
41
+ 'chat.placeholder': 'Bir mesaj yazın…',
42
+ 'review.appStore': "App Store'da değerlendir",
43
+ 'review.playStore': "Google Play'de değerlendir",
41
44
  'thread.sendA11y': 'Yanıtı gönder',
42
45
  'thread.sendingA11y': 'Gönderiliyor',
43
46
  'thread.translating': 'Çevriliyor…',
@@ -1 +1 @@
1
- {"version":3,"names":["tr"],"sourceRoot":"../../../../src","sources":["i18n/strings/tr.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,QAAQ;EACtB,eAAe,EAAE,iDAAiD;EAClE,YAAY,EAAE,eAAe;EAC7B,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,SAAS;EAC1B,YAAY,EAAE,mBAAmB;EACjC,gBAAgB,EACd,0EAA0E;EAC5E,iBAAiB,EAAE,iBAAiB;EACpC,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,iBAAiB;EACpC,uBAAuB,EAAE,oCAAoC;EAC7D,cAAc,EAAE,cAAc;EAC9B,eAAe,EAAE,KAAK;EAEtB,eAAe,EAAE,eAAe;EAChC,sBAAsB,EAAE,gBAAgB;EACxC,iBAAiB,EAAE,gBAAgB;EACnC,eAAe,EAAE,2BAA2B;EAC5C,sBAAsB,EAAE,wBAAwB;EAChD,iBAAiB,EAAE,oBAAoB;EACvC,iBAAiB,EAAE,0BAA0B;EAC7C,wBAAwB,EAAE,yBAAyB;EACnD,mBAAmB,EAAE,uCAAuC;EAC5D,cAAc,EAAE,wCAAwC;EACxD,qBAAqB,EAAE,mCAAmC;EAC1D,gBAAgB,EAAE,mDAAmD;EAErE,cAAc,EAAE,iBAAiB;EACjC,cAAc,EAAE,YAAY;EAC5B,kBAAkB,EAChB,gHAAgH;EAClH,cAAc,EAAE,OAAO;EACvB,cAAc,EAAE,QAAQ;EACxB,iBAAiB,EAAE,eAAe;EAClC,kBAAkB,EAAE,wBAAwB;EAE5C,gBAAgB,EAAE,QAAQ;EAC1B,YAAY,EAAE,MAAM;EACpB,mBAAmB,EAAE,kBAAkB;EACvC,iBAAiB,EAAE,mCAAmC;EACtD,oBAAoB,EAAE,kBAAkB;EACxC,iBAAiB,EAAE,eAAe;EAClC,oBAAoB,EAAE,cAAc;EACpC,oBAAoB,EAAE,aAAa;EAEnC,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,SAAS;EAE5B,gBAAgB,EAAE,aAAa;EAC/B,mBAAmB,EAAE,6CAA6C;EAClE,eAAe,EAAE,6CAA6C;EAC9D,kBAAkB,EAAE,gCAAgC;EACpD,kBAAkB,EAAE,4BAA4B;EAChD,mBAAmB,EAAE,+BAA+B;EACpD,uBAAuB,EAAE,2CAA2C;EAEpE,YAAY,EAAE,gBAAgB;EAC9B,eAAe,EACb,2EAA2E;EAC7E,eAAe,EAAE,OAAO;EACxB,aAAa,EAAE,eAAe;EAC9B,iBAAiB,EAAE,gCAAgC;EAEnD,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,iBAAiB;EACjC,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,gBAAgB;EAC7B,YAAY,EAAE,iBAAiB;EAC/B,aAAa,EAAE,iBAAiB;EAChC,YAAY,EAAE,kBAAkB;EAChC,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["tr"],"sourceRoot":"../../../../src","sources":["i18n/strings/tr.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,QAAQ;EACtB,eAAe,EAAE,iDAAiD;EAClE,YAAY,EAAE,eAAe;EAC7B,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,SAAS;EAC1B,YAAY,EAAE,mBAAmB;EACjC,gBAAgB,EACd,0EAA0E;EAC5E,iBAAiB,EAAE,iBAAiB;EACpC,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,iBAAiB;EACpC,uBAAuB,EAAE,oCAAoC;EAC7D,cAAc,EAAE,cAAc;EAC9B,eAAe,EAAE,KAAK;EAEtB,eAAe,EAAE,eAAe;EAChC,sBAAsB,EAAE,gBAAgB;EACxC,iBAAiB,EAAE,gBAAgB;EACnC,eAAe,EAAE,2BAA2B;EAC5C,sBAAsB,EAAE,wBAAwB;EAChD,iBAAiB,EAAE,oBAAoB;EACvC,iBAAiB,EAAE,0BAA0B;EAC7C,wBAAwB,EAAE,yBAAyB;EACnD,mBAAmB,EAAE,uCAAuC;EAC5D,cAAc,EAAE,wCAAwC;EACxD,qBAAqB,EAAE,mCAAmC;EAC1D,gBAAgB,EAAE,mDAAmD;EAErE,cAAc,EAAE,iBAAiB;EACjC,cAAc,EAAE,YAAY;EAC5B,kBAAkB,EAChB,gHAAgH;EAClH,cAAc,EAAE,OAAO;EACvB,cAAc,EAAE,QAAQ;EACxB,iBAAiB,EAAE,eAAe;EAClC,kBAAkB,EAAE,wBAAwB;EAE5C,gBAAgB,EAAE,QAAQ;EAC1B,YAAY,EAAE,MAAM;EACpB,mBAAmB,EAAE,kBAAkB;EACvC,iBAAiB,EAAE,mCAAmC;EACtD,oBAAoB,EAAE,kBAAkB;EACxC,kBAAkB,EAAE,kBAAkB;EACtC,iBAAiB,EAAE,0BAA0B;EAC7C,kBAAkB,EAAE,4BAA4B;EAChD,iBAAiB,EAAE,eAAe;EAClC,oBAAoB,EAAE,cAAc;EACpC,oBAAoB,EAAE,aAAa;EAEnC,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,SAAS;EAE5B,gBAAgB,EAAE,aAAa;EAC/B,mBAAmB,EAAE,6CAA6C;EAClE,eAAe,EAAE,6CAA6C;EAC9D,kBAAkB,EAAE,gCAAgC;EACpD,kBAAkB,EAAE,4BAA4B;EAChD,mBAAmB,EAAE,+BAA+B;EACpD,uBAAuB,EAAE,2CAA2C;EAEpE,YAAY,EAAE,gBAAgB;EAC9B,eAAe,EACb,2EAA2E;EAC7E,eAAe,EAAE,OAAO;EACxB,aAAa,EAAE,eAAe;EAC9B,iBAAiB,EAAE,gCAAgC;EAEnD,cAAc,EAAE,SAAS;EACzB,cAAc,EAAE,iBAAiB;EACjC,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,gBAAgB;EAC7B,YAAY,EAAE,iBAAiB;EAC/B,aAAa,EAAE,iBAAiB;EAChC,YAAY,EAAE,kBAAkB;EAChC,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -38,6 +38,9 @@ export const zh = {
38
38
  'thread.resolvedAt': '已解决 · {date}',
39
39
  'thread.readOnly': '此对话已解决,仅供查看',
40
40
  'thread.placeholder': '写下回复…',
41
+ 'chat.placeholder': '输入消息…',
42
+ 'review.appStore': '在 App Store 评分',
43
+ 'review.playStore': '在 Google Play 评分',
41
44
  'thread.sendA11y': '发送回复',
42
45
  'thread.sendingA11y': '发送中',
43
46
  'thread.translating': '翻译中…',
@@ -1 +1 @@
1
- {"version":3,"names":["zh"],"sourceRoot":"../../../../src","sources":["i18n/strings/zh.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,MAAM;EACpB,eAAe,EAAE,sBAAsB;EACvC,YAAY,EAAE,MAAM;EACpB,WAAW,EAAE,KAAK;EAClB,eAAe,EAAE,KAAK;EACtB,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE,6BAA6B;EAC/C,iBAAiB,EAAE,OAAO;EAC1B,UAAU,EAAE,GAAG;EACf,iBAAiB,EAAE,WAAW;EAC9B,uBAAuB,EAAE,uBAAuB;EAChD,cAAc,EAAE,WAAW;EAC3B,eAAe,EAAE,IAAI;EAErB,eAAe,EAAE,IAAI;EACrB,sBAAsB,EAAE,MAAM;EAC9B,iBAAiB,EAAE,MAAM;EACzB,eAAe,EAAE,UAAU;EAC3B,sBAAsB,EAAE,UAAU;EAClC,iBAAiB,EAAE,WAAW;EAC9B,iBAAiB,EAAE,aAAa;EAChC,wBAAwB,EAAE,UAAU;EACpC,mBAAmB,EAAE,kBAAkB;EACvC,cAAc,EAAE,eAAe;EAC/B,qBAAqB,EAAE,aAAa;EACpC,gBAAgB,EAAE,sBAAsB;EAExC,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,KAAK;EACrB,kBAAkB,EAChB,qCAAqC;EACvC,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,IAAI;EACpB,iBAAiB,EAAE,MAAM;EACzB,kBAAkB,EAAE,kBAAkB;EAEtC,gBAAgB,EAAE,MAAM;EACxB,YAAY,EAAE,KAAK;EACnB,mBAAmB,EAAE,cAAc;EACnC,iBAAiB,EAAE,aAAa;EAChC,oBAAoB,EAAE,OAAO;EAC7B,iBAAiB,EAAE,MAAM;EACzB,oBAAoB,EAAE,KAAK;EAC3B,oBAAoB,EAAE,MAAM;EAE5B,aAAa,EAAE,KAAK;EACpB,iBAAiB,EAAE,KAAK;EAExB,gBAAgB,EAAE,IAAI;EACtB,mBAAmB,EAAE,iBAAiB;EACtC,eAAe,EAAE,iBAAiB;EAClC,kBAAkB,EAAE,aAAa;EACjC,kBAAkB,EAAE,UAAU;EAC9B,mBAAmB,EAAE,WAAW;EAChC,uBAAuB,EAAE,mBAAmB;EAE5C,YAAY,EAAE,QAAQ;EACtB,eAAe,EAAE,8BAA8B;EAC/C,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,aAAa;EAEhC,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,aAAa;EAC7B,YAAY,EAAE,aAAa;EAC3B,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY;EAC1B,aAAa,EAAE,aAAa;EAC5B,YAAY,EAAE,YAAY;EAC1B,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["zh"],"sourceRoot":"../../../../src","sources":["i18n/strings/zh.ts"],"mappings":";;AAEA,OAAO,MAAMA,EAAe,GAAG;EAC7B,YAAY,EAAE,MAAM;EACpB,eAAe,EAAE,sBAAsB;EACvC,YAAY,EAAE,MAAM;EACpB,WAAW,EAAE,KAAK;EAClB,eAAe,EAAE,KAAK;EACtB,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE,6BAA6B;EAC/C,iBAAiB,EAAE,OAAO;EAC1B,UAAU,EAAE,GAAG;EACf,iBAAiB,EAAE,WAAW;EAC9B,uBAAuB,EAAE,uBAAuB;EAChD,cAAc,EAAE,WAAW;EAC3B,eAAe,EAAE,IAAI;EAErB,eAAe,EAAE,IAAI;EACrB,sBAAsB,EAAE,MAAM;EAC9B,iBAAiB,EAAE,MAAM;EACzB,eAAe,EAAE,UAAU;EAC3B,sBAAsB,EAAE,UAAU;EAClC,iBAAiB,EAAE,WAAW;EAC9B,iBAAiB,EAAE,aAAa;EAChC,wBAAwB,EAAE,UAAU;EACpC,mBAAmB,EAAE,kBAAkB;EACvC,cAAc,EAAE,eAAe;EAC/B,qBAAqB,EAAE,aAAa;EACpC,gBAAgB,EAAE,sBAAsB;EAExC,cAAc,EAAE,QAAQ;EACxB,cAAc,EAAE,KAAK;EACrB,kBAAkB,EAChB,qCAAqC;EACvC,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,IAAI;EACpB,iBAAiB,EAAE,MAAM;EACzB,kBAAkB,EAAE,kBAAkB;EAEtC,gBAAgB,EAAE,MAAM;EACxB,YAAY,EAAE,KAAK;EACnB,mBAAmB,EAAE,cAAc;EACnC,iBAAiB,EAAE,aAAa;EAChC,oBAAoB,EAAE,OAAO;EAC7B,kBAAkB,EAAE,OAAO;EAC3B,iBAAiB,EAAE,gBAAgB;EACnC,kBAAkB,EAAE,kBAAkB;EACtC,iBAAiB,EAAE,MAAM;EACzB,oBAAoB,EAAE,KAAK;EAC3B,oBAAoB,EAAE,MAAM;EAE5B,aAAa,EAAE,KAAK;EACpB,iBAAiB,EAAE,KAAK;EAExB,gBAAgB,EAAE,IAAI;EACtB,mBAAmB,EAAE,iBAAiB;EACtC,eAAe,EAAE,iBAAiB;EAClC,kBAAkB,EAAE,aAAa;EACjC,kBAAkB,EAAE,UAAU;EAC9B,mBAAmB,EAAE,WAAW;EAChC,uBAAuB,EAAE,mBAAmB;EAE5C,YAAY,EAAE,QAAQ;EACtB,eAAe,EAAE,8BAA8B;EAC/C,eAAe,EAAE,IAAI;EACrB,aAAa,EAAE,MAAM;EACrB,iBAAiB,EAAE,aAAa;EAEhC,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,aAAa;EAC7B,YAAY,EAAE,aAAa;EAC3B,WAAW,EAAE,YAAY;EACzB,YAAY,EAAE,YAAY;EAC1B,aAAa,EAAE,aAAa;EAC5B,YAAY,EAAE,YAAY;EAC1B,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE;AACpB,CAAC","ignoreList":[]}
@@ -3,6 +3,7 @@
3
3
  export { SupportButton } from './components/SupportButton';
4
4
  export { supportDarkTheme, supportLightTheme, resolveTheme } from './theme';
5
5
  export { SupportApiError } from './api';
6
+ export { SDK_VERSION } from './version';
6
7
  export { isPushAvailable } from './push';
7
8
  export { DEFAULT_LANGUAGE, deviceLanguage, isSupportedLanguage, LANGUAGE_LABELS, SUPPORTED_LANGUAGES } from './i18n/languages';
8
9
  export { QUERY_TYPE_LABEL, USER_MESSAGE_MAX, USER_MESSAGE_MIN } from './types';
@@ -1 +1 @@
1
- {"version":3,"names":["SupportButton","supportDarkTheme","supportLightTheme","resolveTheme","SupportApiError","isPushAvailable","DEFAULT_LANGUAGE","deviceLanguage","isSupportedLanguage","LANGUAGE_LABELS","SUPPORTED_LANGUAGES","QUERY_TYPE_LABEL","USER_MESSAGE_MAX","USER_MESSAGE_MIN"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,SACEC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAY,QAEP,SAAS;AAChB,SAASC,eAAe,QAAQ,OAAO;AACvC,SAASC,eAAe,QAAQ,QAAQ;AACxC,SACEC,gBAAgB,EAChBC,cAAc,EACdC,mBAAmB,EACnBC,eAAe,EACfC,mBAAmB,QAEd,kBAAkB;AAczB,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,QACX,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["SupportButton","supportDarkTheme","supportLightTheme","resolveTheme","SupportApiError","SDK_VERSION","isPushAvailable","DEFAULT_LANGUAGE","deviceLanguage","isSupportedLanguage","LANGUAGE_LABELS","SUPPORTED_LANGUAGES","QUERY_TYPE_LABEL","USER_MESSAGE_MAX","USER_MESSAGE_MIN"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,SACEC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAY,QAGP,SAAS;AAChB,SAASC,eAAe,QAAQ,OAAO;AACvC,SAASC,WAAW,QAAQ,WAAW;AACvC,SAASC,eAAe,QAAQ,QAAQ;AACxC,SACEC,gBAAgB,EAChBC,cAAc,EACdC,mBAAmB,EACnBC,eAAe,EACfC,mBAAmB,QAEd,kBAAkB;AAiBzB,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,QACX,SAAS","ignoreList":[]}
@@ -12,6 +12,8 @@
12
12
  // badges. The status is reported purely so the dashboard can show whether
13
13
  // the user is reachable.
14
14
 
15
+ /** The slice of a NotificationResponse that tap handling reads. */
16
+
15
17
  /** The slice of expo-notifications this SDK uses. */
16
18
 
17
19
  function loadNotifications() {
@@ -35,12 +37,16 @@ function normalizeStatus(status) {
35
37
 
36
38
  /**
37
39
  * Ensures notification permission has been requested, and returns the
38
- * outcome plus an Expo push token when one is obtainable.
40
+ * outcome plus an Expo push token when one is obtainable. With
41
+ * `prompt: false` it only reads the current state — for refreshing the token
42
+ * at launch without ever showing the OS prompt outside the support sheet.
39
43
  *
40
44
  * Never throws: any failure resolves to an 'undetermined' registration so
41
45
  * callers can report it and move on.
42
46
  */
43
- export async function ensurePushPermission(expoProjectId) {
47
+ export async function ensurePushPermission(expoProjectId, {
48
+ prompt = true
49
+ } = {}) {
44
50
  if (!notifications) {
45
51
  return {
46
52
  status: 'undetermined',
@@ -55,7 +61,7 @@ export async function ensurePushPermission(expoProjectId) {
55
61
 
56
62
  // Only prompt when the OS will actually show something. Re-prompting a
57
63
  // user who already decided is impossible on iOS and annoying on Android.
58
- if (status === 'undetermined' && current.canAskAgain) {
64
+ if (prompt && status === 'undetermined' && current.canAskAgain) {
59
65
  const requested = await notifications.requestPermissionsAsync();
60
66
  status = normalizeStatus(requested.status);
61
67
  asked = true;
@@ -95,4 +101,72 @@ export async function ensurePushPermission(expoProjectId) {
95
101
  };
96
102
  }
97
103
  }
104
+
105
+ // ---------- opening the thread from a tapped notification ----------
106
+ //
107
+ // send-push tags every support reply with `{ type: 'support_reply',
108
+ // query_id }`. Tapping one should land the user in that thread, not wherever
109
+ // the host app happens to open.
110
+ //
111
+ // The observer starts when this module loads rather than when a launcher
112
+ // mounts, for two reasons: a cold start's tap is only reported once, early,
113
+ // and a host app may mount the launcher later (behind auth, on a settings
114
+ // screen). A tap seen before any launcher is listening is held for
115
+ // PENDING_TAP_TTL_MS and then dropped — opening the sheet minutes after the
116
+ // tap, the first time the user wanders onto that screen, would be a surprise.
117
+
118
+ const PENDING_TAP_TTL_MS = 60_000;
119
+ const tapListeners = [];
120
+ let pendingTap = null;
121
+ // Both the listener and getLastNotificationResponseAsync can report the same
122
+ // cold-start tap, and the latter keeps reporting it for the life of the
123
+ // process. Each tap is handled once.
124
+ const handledTaps = new Set();
125
+ function supportReplyThreadId(response) {
126
+ const defaultAction = notifications?.DEFAULT_ACTION_IDENTIFIER;
127
+ if (defaultAction && response.actionIdentifier !== defaultAction) return null;
128
+ const data = response.notification?.request?.content?.data;
129
+ if (data?.type !== 'support_reply') return null;
130
+ return typeof data.query_id === 'string' ? data.query_id : null;
131
+ }
132
+ function handleResponse(response) {
133
+ if (!response) return;
134
+ const threadId = supportReplyThreadId(response);
135
+ const tapId = response.notification?.request?.identifier;
136
+ if (threadId === null || !tapId || handledTaps.has(tapId)) return;
137
+ handledTaps.add(tapId);
138
+
139
+ // One sheet, not one per mounted launcher: the newest launcher takes it.
140
+ const listener = tapListeners[tapListeners.length - 1];
141
+ if (listener) listener(threadId);else pendingTap = {
142
+ threadId,
143
+ at: Date.now()
144
+ };
145
+ }
146
+ if (notifications) {
147
+ try {
148
+ notifications.addNotificationResponseReceivedListener(handleResponse);
149
+ notifications.getLastNotificationResponseAsync().then(handleResponse).catch(() => {});
150
+ } catch {
151
+ // Same contract as the rest of this file: push never breaks support.
152
+ }
153
+ }
154
+
155
+ /**
156
+ * Calls `listener` with the thread id whenever the user taps a support-reply
157
+ * notification — including, once, a tap from the last minute that arrived
158
+ * before anything was listening. Returns an unsubscribe function.
159
+ */
160
+ export function onSupportNotificationTap(listener) {
161
+ tapListeners.push(listener);
162
+ const pending = pendingTap;
163
+ pendingTap = null;
164
+ if (pending && Date.now() - pending.at < PENDING_TAP_TTL_MS) {
165
+ listener(pending.threadId);
166
+ }
167
+ return () => {
168
+ const index = tapListeners.lastIndexOf(listener);
169
+ if (index !== -1) tapListeners.splice(index, 1);
170
+ };
171
+ }
98
172
  //# sourceMappingURL=push.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["loadNotifications","mod","require","getPermissionsAsync","notifications","isPushAvailable","normalizeStatus","status","ensurePushPermission","expoProjectId","asked","token","current","canAskAgain","requested","requestPermissionsAsync","getExpoPushTokenAsync","projectId","undefined","data"],"sourceRoot":"../../src","sources":["push.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AASA,SAASA,iBAAiBA,CAAA,EAAmC;EAC3D,IAAI;IACF;IACA,MAAMC,GAAG,GAAGC,OAAO,CAAC,oBAAoB,CAA4B;IACpE,OAAO,OAAOD,GAAG,EAAEE,mBAAmB,KAAK,UAAU,GAAGF,GAAG,GAAG,IAAI;EACpE,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,MAAMG,aAAa,GAAGJ,iBAAiB,CAAC,CAAC;;AAEzC;AACA,OAAO,MAAMK,eAAe,GAAGD,aAAa,KAAK,IAAI;AASrD,SAASE,eAAeA,CAACC,MAAc,EAAwB;EAC7D,IAAIA,MAAM,KAAK,SAAS,EAAE,OAAO,SAAS;EAC1C,IAAIA,MAAM,KAAK,QAAQ,EAAE,OAAO,QAAQ;EACxC,OAAO,cAAc;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,oBAAoBA,CACxCC,aAAsB,EACK;EAC3B,IAAI,CAACL,aAAa,EAAE;IAClB,OAAO;MAAEG,MAAM,EAAE,cAAc;MAAEG,KAAK,EAAE,KAAK;MAAEC,KAAK,EAAE;IAAK,CAAC;EAC9D;EAEA,IAAI;IACF,MAAMC,OAAO,GAAG,MAAMR,aAAa,CAACD,mBAAmB,CAAC,CAAC;IACzD,IAAII,MAAM,GAAGD,eAAe,CAACM,OAAO,CAACL,MAAM,CAAC;IAC5C,IAAIG,KAAK,GAAG,KAAK;;IAEjB;IACA;IACA,IAAIH,MAAM,KAAK,cAAc,IAAIK,OAAO,CAACC,WAAW,EAAE;MACpD,MAAMC,SAAS,GAAG,MAAMV,aAAa,CAACW,uBAAuB,CAAC,CAAC;MAC/DR,MAAM,GAAGD,eAAe,CAACQ,SAAS,CAACP,MAAM,CAAC;MAC1CG,KAAK,GAAG,IAAI;IACd;IAEA,IAAIH,MAAM,KAAK,SAAS,EAAE;MACxB,OAAO;QAAEA,MAAM;QAAEG,KAAK;QAAEC,KAAK,EAAE;MAAK,CAAC;IACvC;;IAEA;IACA;IACA;IACA,IAAI;MACF,MAAMA,KAAK,GAAG,MAAMP,aAAa,CAACY,qBAAqB,CACrDP,aAAa,GAAG;QAAEQ,SAAS,EAAER;MAAc,CAAC,GAAGS,SACjD,CAAC;MACD,OAAO;QAAEX,MAAM;QAAEG,KAAK;QAAEC,KAAK,EAAEA,KAAK,CAACQ;MAAK,CAAC;IAC7C,CAAC,CAAC,MAAM;MACN,OAAO;QAAEZ,MAAM;QAAEG,KAAK;QAAEC,KAAK,EAAE;MAAK,CAAC;IACvC;EACF,CAAC,CAAC,MAAM;IACN,OAAO;MAAEJ,MAAM,EAAE,cAAc;MAAEG,KAAK,EAAE,KAAK;MAAEC,KAAK,EAAE;IAAK,CAAC;EAC9D;AACF","ignoreList":[]}
1
+ {"version":3,"names":["loadNotifications","mod","require","getPermissionsAsync","notifications","isPushAvailable","normalizeStatus","status","ensurePushPermission","expoProjectId","prompt","asked","token","current","canAskAgain","requested","requestPermissionsAsync","getExpoPushTokenAsync","projectId","undefined","data","PENDING_TAP_TTL_MS","tapListeners","pendingTap","handledTaps","Set","supportReplyThreadId","response","defaultAction","DEFAULT_ACTION_IDENTIFIER","actionIdentifier","notification","request","content","type","query_id","handleResponse","threadId","tapId","identifier","has","add","listener","length","at","Date","now","addNotificationResponseReceivedListener","getLastNotificationResponseAsync","then","catch","onSupportNotificationTap","push","pending","index","lastIndexOf","splice"],"sourceRoot":"../../src","sources":["push.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ // Review requests: a support reply with a "Rate on the App Store / Google
4
+ // Play" button. The button opens the store's write-a-review page — the store
5
+ // app where there is one, its website otherwise. It is a link, not a prompt:
6
+ // Apple's guidelines reserve in-app rating prompts for SKStoreReviewController,
7
+ // and linking to the review page is what they document for everything else.
8
+
9
+ import { Linking, Platform } from 'react-native';
10
+ /** Links for this device's store, or null when the team hasn't set one up. */
11
+ export function storeLinks(store) {
12
+ if (Platform.OS === 'ios' && store?.app_store_id) {
13
+ const id = encodeURIComponent(store.app_store_id);
14
+ return {
15
+ app: `itms-apps://apps.apple.com/app/id${id}?action=write-review`,
16
+ web: `https://apps.apple.com/app/id${id}?action=write-review`
17
+ };
18
+ }
19
+ if (Platform.OS === 'android' && store?.play_store_package) {
20
+ const pkg = encodeURIComponent(store.play_store_package);
21
+ return {
22
+ app: `market://details?id=${pkg}&showAllReviews=true`,
23
+ web: `https://play.google.com/store/apps/details?id=${pkg}&showAllReviews=true`
24
+ };
25
+ }
26
+ return null;
27
+ }
28
+
29
+ /** Opens the review page; resolves false if neither link would open. */
30
+ export async function openStoreReview(links) {
31
+ try {
32
+ await Linking.openURL(links.app);
33
+ return true;
34
+ } catch {
35
+ try {
36
+ await Linking.openURL(links.web);
37
+ return true;
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+ }
43
+
44
+ /** The platform the backend should know this user by, if it's a store one. */
45
+ export function storePlatform() {
46
+ return Platform.OS === 'ios' || Platform.OS === 'android' ? Platform.OS : undefined;
47
+ }
48
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Linking","Platform","storeLinks","store","OS","app_store_id","id","encodeURIComponent","app","web","play_store_package","pkg","openStoreReview","links","openURL","storePlatform","undefined"],"sourceRoot":"../../src","sources":["review.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,cAAc;AAUhD;AACA,OAAO,SAASC,UAAUA,CAACC,KAAsC,EAAqB;EACpF,IAAIF,QAAQ,CAACG,EAAE,KAAK,KAAK,IAAID,KAAK,EAAEE,YAAY,EAAE;IAChD,MAAMC,EAAE,GAAGC,kBAAkB,CAACJ,KAAK,CAACE,YAAY,CAAC;IACjD,OAAO;MACLG,GAAG,EAAE,oCAAoCF,EAAE,sBAAsB;MACjEG,GAAG,EAAE,gCAAgCH,EAAE;IACzC,CAAC;EACH;EACA,IAAIL,QAAQ,CAACG,EAAE,KAAK,SAAS,IAAID,KAAK,EAAEO,kBAAkB,EAAE;IAC1D,MAAMC,GAAG,GAAGJ,kBAAkB,CAACJ,KAAK,CAACO,kBAAkB,CAAC;IACxD,OAAO;MACLF,GAAG,EAAE,uBAAuBG,GAAG,sBAAsB;MACrDF,GAAG,EAAE,iDAAiDE,GAAG;IAC3D,CAAC;EACH;EACA,OAAO,IAAI;AACb;;AAEA;AACA,OAAO,eAAeC,eAAeA,CAACC,KAAiB,EAAoB;EACzE,IAAI;IACF,MAAMb,OAAO,CAACc,OAAO,CAACD,KAAK,CAACL,GAAG,CAAC;IAChC,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,IAAI;MACF,MAAMR,OAAO,CAACc,OAAO,CAACD,KAAK,CAACJ,GAAG,CAAC;MAChC,OAAO,IAAI;IACb,CAAC,CAAC,MAAM;MACN,OAAO,KAAK;IACd;EACF;AACF;;AAEA;AACA,OAAO,SAASM,aAAaA,CAAA,EAAkC;EAC7D,OAAOd,QAAQ,CAACG,EAAE,KAAK,KAAK,IAAIH,QAAQ,CAACG,EAAE,KAAK,SAAS,GAAGH,QAAQ,CAACG,EAAE,GAAGY,SAAS;AACrF","ignoreList":[]}
@@ -2,8 +2,10 @@
2
2
 
3
3
  // The SDK consumes the same design tokens as the admin dashboard, so both
4
4
  // surfaces look like one product. On top of those it adds the few values
5
- // that only exist on mobile: sheet/bubble radii and the elevation used by
6
- // the launcher and the sheet (the web side gets those from CSS).
5
+ // that only exist on mobile: sheet/bubble radii, the elevation used by the
6
+ // launcher and the sheet (the web side gets those from CSS), and a re-cut of
7
+ // the surfaces and text ramp for a sheet held at arm's length (see
8
+ // SHEET_OVERRIDES).
7
9
  import { darkColors, lightColors, motion, radii, spacing } from '@appsupportkit/design-tokens';
8
10
  /** Rounder than the dashboard: touch targets read better with more radius. */
9
11
  export const supportRadii = {
@@ -30,7 +32,12 @@ export const supportRadii = {
30
32
  // Color helpers come first: the themes below are built at module load, so
31
33
  // anything they reach for has to already be initialized. (A `const` used
32
34
  // before its definition survives tsc but lands as `undefined` on Hermes.)
35
+
33
36
  const HEX = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
37
+ const WHITE = [255, 255, 255];
38
+ /** Foreground for light accents — the dashboard's near-black, not pure black. */
39
+ const INK = '#111113';
40
+ const INK_RGB = [17, 17, 19];
34
41
  function parseHex(color) {
35
42
  const match = HEX.exec(color.trim());
36
43
  const digits = match?.[1];
@@ -38,10 +45,83 @@ function parseHex(color) {
38
45
  const hex = digits.length === 3 ? digits.split('').map(c => c + c).join('') : digits;
39
46
  return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16)];
40
47
  }
41
- function mix([r, g, b], target, amount) {
48
+ function toHex(rgb) {
49
+ return `#${rgb.map(c => c.toString(16).padStart(2, '0')).join('').toUpperCase()}`;
50
+ }
51
+ function mixRgb([r, g, b], target, amount) {
42
52
  const channel = c => Math.round(c + (target - c) * amount);
43
- return `rgb(${channel(r)}, ${channel(g)}, ${channel(b)})`;
53
+ return [channel(r), channel(g), channel(b)];
54
+ }
55
+ function mix(rgb, target, amount) {
56
+ return toHex(mixRgb(rgb, target, amount));
57
+ }
58
+
59
+ /** WCAG relative luminance. */
60
+ function luminance(rgb) {
61
+ const [r, g, b] = rgb.map(c => {
62
+ const s = c / 255;
63
+ return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
64
+ });
65
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b;
66
+ }
67
+
68
+ /** WCAG contrast ratio, 1–21. */
69
+ function contrast(a, b) {
70
+ const [hi, lo] = [luminance(a), luminance(b)].sort((x, y) => y - x);
71
+ return (hi + 0.05) / (lo + 0.05);
44
72
  }
73
+
74
+ /**
75
+ * Nudges `color` toward white (dark theme) or black (light theme) in 5%
76
+ * steps until it reaches `ratio` against every background. The smallest
77
+ * step that works wins, so a brand color stays recognizably itself.
78
+ */
79
+ function legible(color, backgrounds, ratio, name) {
80
+ const rgb = parseHex(color);
81
+ if (rgb === null) return color;
82
+ const against = backgrounds.map(parseHex).filter(c => c !== null);
83
+ const target = name === 'dark' ? 255 : 0;
84
+ for (let step = 0; step <= 20; step += 1) {
85
+ const candidate = mixRgb(rgb, target, step * 0.05);
86
+ if (against.every(bg => contrast(candidate, bg) >= ratio)) {
87
+ return toHex(candidate);
88
+ }
89
+ }
90
+ return name === 'dark' ? '#FFFFFF' : '#000000';
91
+ }
92
+
93
+ /**
94
+ * Where the SDK departs from the dashboard tokens.
95
+ *
96
+ * Dark: the sheet floats over the host app, so it takes an elevated gray the
97
+ * way iOS sheets do, and the cards and bubbles on it step lighter again. On
98
+ * the dashboard's near-black base, cards sat 1.05:1 from the background and
99
+ * the layering disappeared.
100
+ *
101
+ * Both: the text ramp is re-cut so every step clears WCAG AA (4.5:1) on the
102
+ * sheet and on the cards over it. Tertiary carries timestamps and labels at
103
+ * 11–12px and was 3.1:1 (dark) and 2.5:1 (light); secondary moves too, so
104
+ * the two stay a visible step apart.
105
+ */
106
+ const SHEET_OVERRIDES = {
107
+ dark: {
108
+ sheet: '#161618',
109
+ surface: '#1F1F23',
110
+ surfaceHover: '#26262B',
111
+ surfaceActive: '#2D2D33',
112
+ border: '#2E2E35',
113
+ borderStrong: '#3C3C44',
114
+ textSecondary: '#A3A3AB',
115
+ // 6.5:1 on surface
116
+ textTertiary: '#87878F' // 4.6:1 on surface, 5.1:1 on sheet
117
+ },
118
+ light: {
119
+ sheet: lightColors.bg,
120
+ textSecondary: '#5A5A62',
121
+ // 6.5:1 on sheet
122
+ textTertiary: '#717179' // 4.6:1 on sheet, 4.8:1 on surface
123
+ }
124
+ };
45
125
  function shadowsFor(name, accent) {
46
126
  const dark = name === 'dark';
47
127
  return {
@@ -88,7 +168,21 @@ function launcherFor(name, accent) {
88
168
  minimalMark: name === 'dark' && rgb !== null ? mix(rgb, 255, 0.35) : accent
89
169
  };
90
170
  }
91
- function buildTheme(name, colors) {
171
+ function buildTheme(name, tokens) {
172
+ const base = {
173
+ ...tokens,
174
+ ...SHEET_OVERRIDES[name]
175
+ };
176
+ // Status tones double as 12px labels, so they get the text bar too.
177
+ const onSheet = [base.sheet, base.surface];
178
+ const colors = {
179
+ ...base,
180
+ statusOpen: legible(base.statusOpen, onSheet, 4.5, name),
181
+ statusProgress: legible(base.statusProgress, onSheet, 4.5, name),
182
+ statusResolved: legible(base.statusResolved, onSheet, 4.5, name),
183
+ statusDanger: legible(base.statusDanger, onSheet, 4.5, name),
184
+ accentText: legible(base.accent, onSheet, 4.5, name)
185
+ };
92
186
  return {
93
187
  name,
94
188
  colors,
@@ -104,39 +198,63 @@ export const supportLightTheme = buildTheme('light', lightColors);
104
198
 
105
199
  /**
106
200
  * Derives the accent family from a single brand color: a pressed shade, the
107
- * 12% wash used behind chips and own-message bubbles, and a foreground that
108
- * stays legible on top (dark text on light brands, white on dark ones).
201
+ * 12% wash used behind chips, a text-safe variant, and whichever of white or
202
+ * ink reads better on top of it.
203
+ *
204
+ * `adapt` is for a color that has to serve both themes: it is lifted just
205
+ * far enough to read as a fill (3:1, the WCAG bar for UI components) on this
206
+ * theme's sheet — a navy brand would otherwise vanish in dark mode. A color
207
+ * given for this mode specifically is used as is.
109
208
  */
110
- function withAccent(theme, accent) {
111
- const rgb = parseHex(accent);
112
- if (!rgb) return theme;
209
+ function withAccent(theme, accent, adapt) {
210
+ if (parseHex(accent) === null) return theme;
211
+ const {
212
+ name
213
+ } = theme;
214
+ const fill = adapt ? legible(accent, [theme.colors.sheet], 3, name) : toHex(parseHex(accent));
215
+ const rgb = parseHex(fill);
113
216
  const [r, g, b] = rgb;
114
- // Relative luminance, sRGB coefficients — good enough to pick a foreground.
115
- const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
217
+ const accentText = legible(fill, [theme.colors.sheet, theme.colors.surface], 4.5, name);
116
218
  const colors = {
117
219
  ...theme.colors,
118
- accent,
119
- accentHover: mix(rgb, theme.name === 'dark' ? 255 : 0, 0.12),
220
+ accent: fill,
221
+ accentHover: mix(rgb, name === 'dark' ? 255 : 0, 0.12),
120
222
  accentMuted: `rgba(${r}, ${g}, ${b}, 0.12)`,
121
- accentForeground: luminance > 0.62 ? '#111113' : '#FFFFFF',
122
- statusOpen: accent,
223
+ accentForeground: contrast(rgb, WHITE) >= contrast(rgb, INK_RGB) ? '#FFFFFF' : INK,
224
+ accentText,
225
+ statusOpen: accentText,
123
226
  statusOpenBg: `rgba(${r}, ${g}, ${b}, 0.10)`,
124
- focusRing: accent
227
+ focusRing: fill
125
228
  };
126
229
  return {
127
230
  ...theme,
128
231
  colors,
129
- shadows: shadowsFor(theme.name, accent),
130
- launcher: launcherFor(theme.name, accent)
232
+ shadows: shadowsFor(name, fill),
233
+ launcher: launcherFor(name, fill)
131
234
  };
132
235
  }
133
236
 
134
237
  /**
135
- * @param name "light" | "dark" (default dark).
136
- * @param accentColor Optional brand color (hex) replacing the default accent.
238
+ * The theme for one resolved mode. `accent` is the color for this mode
239
+ * (already picked from a light/dark pair), and `adapt` says whether it was a
240
+ * single color that has to be made to work here.
137
241
  */
138
- export function resolveTheme(name, accentColor) {
242
+ export function themeFor(name, accent, adapt) {
139
243
  const base = name === 'light' ? supportLightTheme : supportDarkTheme;
140
- return accentColor ? withAccent(base, accentColor) : base;
244
+ return accent ? withAccent(base, accent, adapt) : base;
245
+ }
246
+
247
+ /**
248
+ * @param name "light" | "dark" (default dark). SupportButton resolves its
249
+ * "system" default before calling this.
250
+ * @param accentColor Optional brand color: one hex for both modes (adjusted
251
+ * per mode where needed), or a `{ light, dark }` pair used as given.
252
+ */
253
+ export function resolveTheme(name, accentColor) {
254
+ const mode = name === 'light' ? 'light' : 'dark';
255
+ if (typeof accentColor === 'object' && accentColor !== null) {
256
+ return themeFor(mode, accentColor[mode], false);
257
+ }
258
+ return themeFor(mode, accentColor, true);
141
259
  }
142
260
  //# sourceMappingURL=theme.js.map