@appsupportkit/support-sdk 0.1.2 → 0.3.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 (224) hide show
  1. package/lib/commonjs/api.js +17 -2
  2. package/lib/commonjs/api.js.map +1 -1
  3. package/lib/commonjs/components/BottomSheet.js +67 -47
  4. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  5. package/lib/commonjs/components/LauncherButton.js +177 -0
  6. package/lib/commonjs/components/LauncherButton.js.map +1 -0
  7. package/lib/commonjs/components/SupportButton.js +168 -190
  8. package/lib/commonjs/components/SupportButton.js.map +1 -1
  9. package/lib/commonjs/components/icons.js +110 -23
  10. package/lib/commonjs/components/icons.js.map +1 -1
  11. package/lib/commonjs/components/primitives.js +191 -44
  12. package/lib/commonjs/components/primitives.js.map +1 -1
  13. package/lib/commonjs/components/screens/ComposeScreen.js +108 -60
  14. package/lib/commonjs/components/screens/ComposeScreen.js.map +1 -1
  15. package/lib/commonjs/components/screens/HomeScreen.js +221 -118
  16. package/lib/commonjs/components/screens/HomeScreen.js.map +1 -1
  17. package/lib/commonjs/components/screens/LanguageScreen.js +150 -0
  18. package/lib/commonjs/components/screens/LanguageScreen.js.map +1 -0
  19. package/lib/commonjs/components/screens/ThreadScreen.js +237 -111
  20. package/lib/commonjs/components/screens/ThreadScreen.js.map +1 -1
  21. package/lib/commonjs/i18n/index.js +101 -0
  22. package/lib/commonjs/i18n/index.js.map +1 -0
  23. package/lib/commonjs/i18n/languages.js +95 -0
  24. package/lib/commonjs/i18n/languages.js.map +1 -0
  25. package/lib/commonjs/i18n/strings/de.js +72 -0
  26. package/lib/commonjs/i18n/strings/de.js.map +1 -0
  27. package/lib/commonjs/i18n/strings/en.js +88 -0
  28. package/lib/commonjs/i18n/strings/en.js.map +1 -0
  29. package/lib/commonjs/i18n/strings/es.js +72 -0
  30. package/lib/commonjs/i18n/strings/es.js.map +1 -0
  31. package/lib/commonjs/i18n/strings/fr.js +72 -0
  32. package/lib/commonjs/i18n/strings/fr.js.map +1 -0
  33. package/lib/commonjs/i18n/strings/hi.js +72 -0
  34. package/lib/commonjs/i18n/strings/hi.js.map +1 -0
  35. package/lib/commonjs/i18n/strings/it.js +72 -0
  36. package/lib/commonjs/i18n/strings/it.js.map +1 -0
  37. package/lib/commonjs/i18n/strings/ja.js +72 -0
  38. package/lib/commonjs/i18n/strings/ja.js.map +1 -0
  39. package/lib/commonjs/i18n/strings/ko.js +72 -0
  40. package/lib/commonjs/i18n/strings/ko.js.map +1 -0
  41. package/lib/commonjs/i18n/strings/nl.js +72 -0
  42. package/lib/commonjs/i18n/strings/nl.js.map +1 -0
  43. package/lib/commonjs/i18n/strings/pl.js +72 -0
  44. package/lib/commonjs/i18n/strings/pl.js.map +1 -0
  45. package/lib/commonjs/i18n/strings/pt.js +72 -0
  46. package/lib/commonjs/i18n/strings/pt.js.map +1 -0
  47. package/lib/commonjs/i18n/strings/ru.js +72 -0
  48. package/lib/commonjs/i18n/strings/ru.js.map +1 -0
  49. package/lib/commonjs/i18n/strings/tr.js +72 -0
  50. package/lib/commonjs/i18n/strings/tr.js.map +1 -0
  51. package/lib/commonjs/i18n/strings/zh.js +72 -0
  52. package/lib/commonjs/i18n/strings/zh.js.map +1 -0
  53. package/lib/commonjs/index.js +31 -0
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/theme.js +136 -17
  56. package/lib/commonjs/theme.js.map +1 -1
  57. package/lib/commonjs/types.js +18 -0
  58. package/lib/commonjs/types.js.map +1 -1
  59. package/lib/commonjs/unread.js +92 -0
  60. package/lib/commonjs/unread.js.map +1 -0
  61. package/lib/commonjs/useSupportThreads.js +296 -0
  62. package/lib/commonjs/useSupportThreads.js.map +1 -0
  63. package/lib/commonjs/utils.js +58 -10
  64. package/lib/commonjs/utils.js.map +1 -1
  65. package/lib/module/api.js +16 -2
  66. package/lib/module/api.js.map +1 -1
  67. package/lib/module/components/BottomSheet.js +68 -48
  68. package/lib/module/components/BottomSheet.js.map +1 -1
  69. package/lib/module/components/LauncherButton.js +172 -0
  70. package/lib/module/components/LauncherButton.js.map +1 -0
  71. package/lib/module/components/SupportButton.js +172 -194
  72. package/lib/module/components/SupportButton.js.map +1 -1
  73. package/lib/module/components/icons.js +107 -22
  74. package/lib/module/components/icons.js.map +1 -1
  75. package/lib/module/components/primitives.js +187 -45
  76. package/lib/module/components/primitives.js.map +1 -1
  77. package/lib/module/components/screens/ComposeScreen.js +114 -64
  78. package/lib/module/components/screens/ComposeScreen.js.map +1 -1
  79. package/lib/module/components/screens/HomeScreen.js +224 -121
  80. package/lib/module/components/screens/HomeScreen.js.map +1 -1
  81. package/lib/module/components/screens/LanguageScreen.js +147 -0
  82. package/lib/module/components/screens/LanguageScreen.js.map +1 -0
  83. package/lib/module/components/screens/ThreadScreen.js +243 -115
  84. package/lib/module/components/screens/ThreadScreen.js.map +1 -1
  85. package/lib/module/i18n/index.js +56 -0
  86. package/lib/module/i18n/index.js.map +1 -0
  87. package/lib/module/i18n/languages.js +88 -0
  88. package/lib/module/i18n/languages.js.map +1 -0
  89. package/lib/module/i18n/strings/de.js +68 -0
  90. package/lib/module/i18n/strings/de.js.map +1 -0
  91. package/lib/module/i18n/strings/en.js +84 -0
  92. package/lib/module/i18n/strings/en.js.map +1 -0
  93. package/lib/module/i18n/strings/es.js +68 -0
  94. package/lib/module/i18n/strings/es.js.map +1 -0
  95. package/lib/module/i18n/strings/fr.js +68 -0
  96. package/lib/module/i18n/strings/fr.js.map +1 -0
  97. package/lib/module/i18n/strings/hi.js +68 -0
  98. package/lib/module/i18n/strings/hi.js.map +1 -0
  99. package/lib/module/i18n/strings/it.js +68 -0
  100. package/lib/module/i18n/strings/it.js.map +1 -0
  101. package/lib/module/i18n/strings/ja.js +68 -0
  102. package/lib/module/i18n/strings/ja.js.map +1 -0
  103. package/lib/module/i18n/strings/ko.js +68 -0
  104. package/lib/module/i18n/strings/ko.js.map +1 -0
  105. package/lib/module/i18n/strings/nl.js +68 -0
  106. package/lib/module/i18n/strings/nl.js.map +1 -0
  107. package/lib/module/i18n/strings/pl.js +68 -0
  108. package/lib/module/i18n/strings/pl.js.map +1 -0
  109. package/lib/module/i18n/strings/pt.js +68 -0
  110. package/lib/module/i18n/strings/pt.js.map +1 -0
  111. package/lib/module/i18n/strings/ru.js +68 -0
  112. package/lib/module/i18n/strings/ru.js.map +1 -0
  113. package/lib/module/i18n/strings/tr.js +68 -0
  114. package/lib/module/i18n/strings/tr.js.map +1 -0
  115. package/lib/module/i18n/strings/zh.js +68 -0
  116. package/lib/module/i18n/strings/zh.js.map +1 -0
  117. package/lib/module/index.js +1 -0
  118. package/lib/module/index.js.map +1 -1
  119. package/lib/module/theme.js +135 -16
  120. package/lib/module/theme.js.map +1 -1
  121. package/lib/module/types.js +18 -0
  122. package/lib/module/types.js.map +1 -1
  123. package/lib/module/unread.js +83 -0
  124. package/lib/module/unread.js.map +1 -0
  125. package/lib/module/useSupportThreads.js +291 -0
  126. package/lib/module/useSupportThreads.js.map +1 -0
  127. package/lib/module/utils.js +55 -10
  128. package/lib/module/utils.js.map +1 -1
  129. package/lib/typescript/api.d.ts +9 -0
  130. package/lib/typescript/api.d.ts.map +1 -1
  131. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  132. package/lib/typescript/components/LauncherButton.d.ts +14 -0
  133. package/lib/typescript/components/LauncherButton.d.ts.map +1 -0
  134. package/lib/typescript/components/SupportButton.d.ts +3 -3
  135. package/lib/typescript/components/SupportButton.d.ts.map +1 -1
  136. package/lib/typescript/components/icons.d.ts +18 -2
  137. package/lib/typescript/components/icons.d.ts.map +1 -1
  138. package/lib/typescript/components/primitives.d.ts +42 -7
  139. package/lib/typescript/components/primitives.d.ts.map +1 -1
  140. package/lib/typescript/components/screens/ComposeScreen.d.ts +3 -1
  141. package/lib/typescript/components/screens/ComposeScreen.d.ts.map +1 -1
  142. package/lib/typescript/components/screens/HomeScreen.d.ts +8 -2
  143. package/lib/typescript/components/screens/HomeScreen.d.ts.map +1 -1
  144. package/lib/typescript/components/screens/LanguageScreen.d.ts +30 -0
  145. package/lib/typescript/components/screens/LanguageScreen.d.ts.map +1 -0
  146. package/lib/typescript/components/screens/ThreadScreen.d.ts +3 -1
  147. package/lib/typescript/components/screens/ThreadScreen.d.ts.map +1 -1
  148. package/lib/typescript/i18n/index.d.ts +15 -0
  149. package/lib/typescript/i18n/index.d.ts.map +1 -0
  150. package/lib/typescript/i18n/languages.d.ts +36 -0
  151. package/lib/typescript/i18n/languages.d.ts.map +1 -0
  152. package/lib/typescript/i18n/strings/de.d.ts +3 -0
  153. package/lib/typescript/i18n/strings/de.d.ts.map +1 -0
  154. package/lib/typescript/i18n/strings/en.d.ts +83 -0
  155. package/lib/typescript/i18n/strings/en.d.ts.map +1 -0
  156. package/lib/typescript/i18n/strings/es.d.ts +3 -0
  157. package/lib/typescript/i18n/strings/es.d.ts.map +1 -0
  158. package/lib/typescript/i18n/strings/fr.d.ts +3 -0
  159. package/lib/typescript/i18n/strings/fr.d.ts.map +1 -0
  160. package/lib/typescript/i18n/strings/hi.d.ts +3 -0
  161. package/lib/typescript/i18n/strings/hi.d.ts.map +1 -0
  162. package/lib/typescript/i18n/strings/it.d.ts +3 -0
  163. package/lib/typescript/i18n/strings/it.d.ts.map +1 -0
  164. package/lib/typescript/i18n/strings/ja.d.ts +3 -0
  165. package/lib/typescript/i18n/strings/ja.d.ts.map +1 -0
  166. package/lib/typescript/i18n/strings/ko.d.ts +3 -0
  167. package/lib/typescript/i18n/strings/ko.d.ts.map +1 -0
  168. package/lib/typescript/i18n/strings/nl.d.ts +3 -0
  169. package/lib/typescript/i18n/strings/nl.d.ts.map +1 -0
  170. package/lib/typescript/i18n/strings/pl.d.ts +3 -0
  171. package/lib/typescript/i18n/strings/pl.d.ts.map +1 -0
  172. package/lib/typescript/i18n/strings/pt.d.ts +3 -0
  173. package/lib/typescript/i18n/strings/pt.d.ts.map +1 -0
  174. package/lib/typescript/i18n/strings/ru.d.ts +3 -0
  175. package/lib/typescript/i18n/strings/ru.d.ts.map +1 -0
  176. package/lib/typescript/i18n/strings/tr.d.ts +3 -0
  177. package/lib/typescript/i18n/strings/tr.d.ts.map +1 -0
  178. package/lib/typescript/i18n/strings/zh.d.ts +3 -0
  179. package/lib/typescript/i18n/strings/zh.d.ts.map +1 -0
  180. package/lib/typescript/index.d.ts +2 -1
  181. package/lib/typescript/index.d.ts.map +1 -1
  182. package/lib/typescript/theme.d.ts +44 -3
  183. package/lib/typescript/theme.d.ts.map +1 -1
  184. package/lib/typescript/types.d.ts +54 -2
  185. package/lib/typescript/types.d.ts.map +1 -1
  186. package/lib/typescript/unread.d.ts +22 -0
  187. package/lib/typescript/unread.d.ts.map +1 -0
  188. package/lib/typescript/useSupportThreads.d.ts +38 -0
  189. package/lib/typescript/useSupportThreads.d.ts.map +1 -0
  190. package/lib/typescript/utils.d.ts +8 -2
  191. package/lib/typescript/utils.d.ts.map +1 -1
  192. package/package.json +3 -3
  193. package/src/api.ts +24 -1
  194. package/src/components/BottomSheet.tsx +61 -43
  195. package/src/components/LauncherButton.tsx +217 -0
  196. package/src/components/SupportButton.tsx +195 -210
  197. package/src/components/icons.tsx +113 -19
  198. package/src/components/primitives.tsx +230 -39
  199. package/src/components/screens/ComposeScreen.tsx +129 -63
  200. package/src/components/screens/HomeScreen.tsx +230 -120
  201. package/src/components/screens/LanguageScreen.tsx +172 -0
  202. package/src/components/screens/ThreadScreen.tsx +319 -122
  203. package/src/i18n/index.ts +81 -0
  204. package/src/i18n/languages.ts +106 -0
  205. package/src/i18n/strings/de.ts +78 -0
  206. package/src/i18n/strings/en.ts +94 -0
  207. package/src/i18n/strings/es.ts +77 -0
  208. package/src/i18n/strings/fr.ts +78 -0
  209. package/src/i18n/strings/hi.ts +77 -0
  210. package/src/i18n/strings/it.ts +77 -0
  211. package/src/i18n/strings/ja.ts +77 -0
  212. package/src/i18n/strings/ko.ts +76 -0
  213. package/src/i18n/strings/nl.ts +77 -0
  214. package/src/i18n/strings/pl.ts +77 -0
  215. package/src/i18n/strings/pt.ts +77 -0
  216. package/src/i18n/strings/ru.ts +77 -0
  217. package/src/i18n/strings/tr.ts +77 -0
  218. package/src/i18n/strings/zh.ts +75 -0
  219. package/src/index.tsx +9 -0
  220. package/src/theme.ts +165 -18
  221. package/src/types.ts +56 -2
  222. package/src/unread.ts +91 -0
  223. package/src/useSupportThreads.ts +392 -0
  224. package/src/utils.ts +48 -10
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ export const nl = {
4
+ 'home.title': 'Support',
5
+ 'home.subtitle': 'Begin een gesprek — we antwoorden hier.',
6
+ 'home.close': 'Support sluiten',
7
+ 'home.open': 'Open',
8
+ 'home.resolved': 'Afgehandeld',
9
+ 'home.empty': 'Nog geen gesprekken',
10
+ 'home.emptyHint': 'Alles wat je stuurt komt bij het team terecht, en hun antwoorden verschijnen in dit venster.',
11
+ 'home.noMessages': 'Nog geen berichten',
12
+ 'home.you': 'Jij',
13
+ 'home.threadA11y': 'Gesprek: {type}',
14
+ 'home.threadUnreadA11y': 'Gesprek: {type}, {count} ongelezen',
15
+ 'home.newA11y': 'Nieuw: {type}',
16
+ 'home.language': 'Taal',
17
+ 'type.feedback': 'Feedback',
18
+ 'type.feature_request': 'Functieverzoek',
19
+ 'type.bug_report': 'Bugmelding',
20
+ 'hint.feedback': 'Vertel ons wat je ervan vindt',
21
+ 'hint.feature_request': 'Stel een verbetering voor',
22
+ 'hint.bug_report': 'Er werkt iets niet',
23
+ 'prompt.feedback': 'Wat moeten we weten?',
24
+ 'prompt.feature_request': 'Wat zou je graag willen zien?',
25
+ 'prompt.bug_report': 'Wat gebeurde er, en wat had je verwacht?',
26
+ 'sub.feedback': 'Goed of slecht — het gaat rechtstreeks naar het team.',
27
+ 'sub.feature_request': 'Vertel ons wat je probeert te doen.',
28
+ 'sub.bug_report': 'Stappen, scherm en wat je verwachtte helpen allemaal.',
29
+ 'compose.back': 'Terug naar gesprekken',
30
+ 'compose.sent': 'Verzonden',
31
+ 'compose.sentHint': 'We antwoorden hier. Je vindt het gesprek onder Open, en de knop toont een badge zodra we reageren.',
32
+ 'compose.done': 'Klaar',
33
+ 'compose.send': 'Verzenden',
34
+ 'compose.sending': 'Verzenden…',
35
+ 'compose.minChars': 'Minstens {count} tekens',
36
+ 'thread.support': 'Support',
37
+ 'thread.new': 'Nieuw',
38
+ 'thread.resolvedAt': 'Afgehandeld · {date}',
39
+ 'thread.readOnly': 'Dit gesprek is afgehandeld en alleen-lezen',
40
+ 'thread.placeholder': 'Schrijf een antwoord…',
41
+ 'thread.sendA11y': 'Antwoord verzenden',
42
+ 'thread.sendingA11y': 'Bezig met verzenden',
43
+ 'thread.translating': 'Vertalen…',
44
+ 'status.open': 'Open',
45
+ 'status.resolved': 'Afgehandeld',
46
+ 'error.tryAgain': 'Opnieuw proberen',
47
+ 'error.rateLimited': 'Te veel verzoeken — probeer het later opnieuw',
48
+ 'error.offline': 'Je bent offline — controleer je verbinding',
49
+ 'error.sendFailed': 'Verzenden mislukt — probeer het opnieuw',
50
+ 'error.loadFailed': 'Je gesprekken konden niet worden geladen',
51
+ 'error.unavailable': 'Support is momenteel niet beschikbaar',
52
+ 'error.loadRateLimited': 'Te veel verzoeken — probeer het zo opnieuw',
53
+ 'lang.title': 'Kies je taal',
54
+ 'lang.subtitle': 'Schrijf in de taal die jij wilt — wij vertalen tussen jou en het supportteam.',
55
+ 'lang.continue': 'Doorgaan',
56
+ 'lang.change': 'Taal wijzigen',
57
+ 'lang.saveFailed': 'Opslaan mislukt — probeer het opnieuw',
58
+ 'time.justNow': 'zojuist',
59
+ 'time.minutes': '{count} min geleden',
60
+ 'time.hours': '{count} u geleden',
61
+ 'time.days': '{count} d geleden',
62
+ 'time.weeks': '{count} w geleden',
63
+ 'time.months': '{count} mnd geleden',
64
+ 'time.years': '{count} j geleden',
65
+ 'time.today': 'Vandaag',
66
+ 'time.yesterday': 'Gisteren'
67
+ };
68
+ //# sourceMappingURL=nl.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ export const pl = {
4
+ 'home.title': 'Pomoc',
5
+ 'home.subtitle': 'Rozpocznij rozmowę — odpowiadamy tutaj.',
6
+ 'home.close': 'Zamknij pomoc',
7
+ 'home.open': 'Otwarte',
8
+ 'home.resolved': 'Rozwiązane',
9
+ 'home.empty': 'Nie ma jeszcze rozmów',
10
+ 'home.emptyHint': 'Wszystko, co wyślesz, trafia do zespołu, a odpowiedzi wracają do tego okna.',
11
+ 'home.noMessages': 'Nie ma jeszcze wiadomości',
12
+ 'home.you': 'Ty',
13
+ 'home.threadA11y': 'Rozmowa: {type}',
14
+ 'home.threadUnreadA11y': 'Rozmowa: {type}, nieprzeczytane: {count}',
15
+ 'home.newA11y': 'Nowe: {type}',
16
+ 'home.language': 'Język',
17
+ 'type.feedback': 'Opinia',
18
+ 'type.feature_request': 'Prośba o funkcję',
19
+ 'type.bug_report': 'Zgłoszenie błędu',
20
+ 'hint.feedback': 'Powiedz nam, co myślisz',
21
+ 'hint.feature_request': 'Zaproponuj ulepszenie',
22
+ 'hint.bug_report': 'Coś nie działa',
23
+ 'prompt.feedback': 'Co powinniśmy wiedzieć?',
24
+ 'prompt.feature_request': 'Co chciałbyś zobaczyć?',
25
+ 'prompt.bug_report': 'Co się stało i czego się spodziewałeś?',
26
+ 'sub.feedback': 'Dobra czy zła — trafia prosto do zespołu.',
27
+ 'sub.feature_request': 'Napisz, co próbujesz osiągnąć.',
28
+ 'sub.bug_report': 'Kroki, ekran i to, czego oczekiwałeś — wszystko pomaga.',
29
+ 'compose.back': 'Wróć do rozmów',
30
+ 'compose.sent': 'Wysłano',
31
+ 'compose.sentHint': 'Odpowiemy tutaj. Rozmowę znajdziesz w sekcji Otwarte, a przycisk pokaże znacznik, gdy odpiszemy.',
32
+ 'compose.done': 'Gotowe',
33
+ 'compose.send': 'Wyślij',
34
+ 'compose.sending': 'Wysyłanie…',
35
+ 'compose.minChars': 'Co najmniej {count} znaków',
36
+ 'thread.support': 'Pomoc',
37
+ 'thread.new': 'Nowe',
38
+ 'thread.resolvedAt': 'Rozwiązane · {date}',
39
+ 'thread.readOnly': 'Ta rozmowa jest rozwiązana i tylko do odczytu',
40
+ 'thread.placeholder': 'Napisz odpowiedź…',
41
+ 'thread.sendA11y': 'Wyślij odpowiedź',
42
+ 'thread.sendingA11y': 'Wysyłanie',
43
+ 'thread.translating': 'Tłumaczenie…',
44
+ 'status.open': 'Otwarta',
45
+ 'status.resolved': 'Rozwiązana',
46
+ 'error.tryAgain': 'Spróbuj ponownie',
47
+ 'error.rateLimited': 'Zbyt wiele żądań — spróbuj później',
48
+ 'error.offline': 'Jesteś offline — sprawdź połączenie',
49
+ 'error.sendFailed': 'Nie udało się wysłać — spróbuj ponownie',
50
+ 'error.loadFailed': 'Nie udało się wczytać rozmów',
51
+ 'error.unavailable': 'Pomoc jest teraz niedostępna',
52
+ 'error.loadRateLimited': 'Zbyt wiele żądań — spróbuj za chwilę',
53
+ 'lang.title': 'Wybierz swój język',
54
+ 'lang.subtitle': 'Pisz w dowolnym języku — tłumaczymy między Tobą a zespołem pomocy.',
55
+ 'lang.continue': 'Dalej',
56
+ 'lang.change': 'Zmień język',
57
+ 'lang.saveFailed': 'Nie udało się zapisać — spróbuj ponownie',
58
+ 'time.justNow': 'przed chwilą',
59
+ 'time.minutes': '{count} min temu',
60
+ 'time.hours': '{count} godz. temu',
61
+ 'time.days': '{count} dni temu',
62
+ 'time.weeks': '{count} tyg. temu',
63
+ 'time.months': '{count} mies. temu',
64
+ 'time.years': '{count} lat temu',
65
+ 'time.today': 'Dzisiaj',
66
+ 'time.yesterday': 'Wczoraj'
67
+ };
68
+ //# sourceMappingURL=pl.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ export const pt = {
4
+ 'home.title': 'Suporte',
5
+ 'home.subtitle': 'Inicie uma conversa — respondemos aqui mesmo.',
6
+ 'home.close': 'Fechar suporte',
7
+ 'home.open': 'Abertas',
8
+ 'home.resolved': 'Resolvidas',
9
+ 'home.empty': 'Ainda não há conversas',
10
+ 'home.emptyHint': 'Tudo o que você enviar chega à equipe, e as respostas voltam para esta janela.',
11
+ 'home.noMessages': 'Ainda não há mensagens',
12
+ 'home.you': 'Você',
13
+ 'home.threadA11y': 'Conversa: {type}',
14
+ 'home.threadUnreadA11y': 'Conversa: {type}, {count} não lidas',
15
+ 'home.newA11y': 'Novo: {type}',
16
+ 'home.language': 'Idioma',
17
+ 'type.feedback': 'Feedback',
18
+ 'type.feature_request': 'Sugestão de recurso',
19
+ 'type.bug_report': 'Relato de erro',
20
+ 'hint.feedback': 'Conte o que você acha',
21
+ 'hint.feature_request': 'Sugira uma melhoria',
22
+ 'hint.bug_report': 'Algo não está funcionando',
23
+ 'prompt.feedback': 'O que precisamos saber?',
24
+ 'prompt.feature_request': 'O que você gostaria de ver?',
25
+ 'prompt.bug_report': 'O que aconteceu e o que você esperava?',
26
+ 'sub.feedback': 'Bom ou ruim — vai direto para a equipe.',
27
+ 'sub.feature_request': 'Conte o que você está tentando fazer.',
28
+ 'sub.bug_report': 'Os passos, a tela e o que você esperava ajudam muito.',
29
+ 'compose.back': 'Voltar às conversas',
30
+ 'compose.sent': 'Enviado',
31
+ 'compose.sentHint': 'Vamos responder aqui mesmo. Você encontra a conversa em Abertas, e o botão mostra um aviso quando respondermos.',
32
+ 'compose.done': 'Concluído',
33
+ 'compose.send': 'Enviar',
34
+ 'compose.sending': 'Enviando…',
35
+ 'compose.minChars': 'Pelo menos {count} caracteres',
36
+ 'thread.support': 'Suporte',
37
+ 'thread.new': 'Novo',
38
+ 'thread.resolvedAt': 'Resolvida · {date}',
39
+ 'thread.readOnly': 'Esta conversa está resolvida e é somente leitura',
40
+ 'thread.placeholder': 'Escreva uma resposta…',
41
+ 'thread.sendA11y': 'Enviar resposta',
42
+ 'thread.sendingA11y': 'Enviando',
43
+ 'thread.translating': 'Traduzindo…',
44
+ 'status.open': 'Aberta',
45
+ 'status.resolved': 'Resolvida',
46
+ 'error.tryAgain': 'Tentar novamente',
47
+ 'error.rateLimited': 'Muitas solicitações — tente novamente mais tarde',
48
+ 'error.offline': 'Você está sem conexão — verifique sua rede',
49
+ 'error.sendFailed': 'Não foi possível enviar — tente novamente',
50
+ 'error.loadFailed': 'Não foi possível carregar suas conversas',
51
+ 'error.unavailable': 'O suporte está indisponível no momento',
52
+ 'error.loadRateLimited': 'Muitas solicitações — tente novamente em instantes',
53
+ 'lang.title': 'Escolha seu idioma',
54
+ 'lang.subtitle': 'Escreva no idioma que preferir — traduzimos entre você e a equipe de suporte.',
55
+ 'lang.continue': 'Continuar',
56
+ 'lang.change': 'Alterar idioma',
57
+ 'lang.saveFailed': 'Não foi possível salvar — tente novamente',
58
+ 'time.justNow': 'agora mesmo',
59
+ 'time.minutes': 'há {count} min',
60
+ 'time.hours': 'há {count} h',
61
+ 'time.days': 'há {count} d',
62
+ 'time.weeks': 'há {count} sem',
63
+ 'time.months': 'há {count} meses',
64
+ 'time.years': 'há {count} anos',
65
+ 'time.today': 'Hoje',
66
+ 'time.yesterday': 'Ontem'
67
+ };
68
+ //# sourceMappingURL=pt.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ export const ru = {
4
+ 'home.title': 'Поддержка',
5
+ 'home.subtitle': 'Начните разговор — мы ответим прямо здесь.',
6
+ 'home.close': 'Закрыть поддержку',
7
+ 'home.open': 'Открытые',
8
+ 'home.resolved': 'Решённые',
9
+ 'home.empty': 'Пока нет разговоров',
10
+ 'home.emptyHint': 'Всё, что вы отправите, попадёт к команде, а ответы вернутся в это окно.',
11
+ 'home.noMessages': 'Пока нет сообщений',
12
+ 'home.you': 'Вы',
13
+ 'home.threadA11y': 'Разговор: {type}',
14
+ 'home.threadUnreadA11y': 'Разговор: {type}, непрочитанных: {count}',
15
+ 'home.newA11y': 'Новое: {type}',
16
+ 'home.language': 'Язык',
17
+ 'type.feedback': 'Отзыв',
18
+ 'type.feature_request': 'Запрос функции',
19
+ 'type.bug_report': 'Сообщение об ошибке',
20
+ 'hint.feedback': 'Расскажите, что вы думаете',
21
+ 'hint.feature_request': 'Предложите улучшение',
22
+ 'hint.bug_report': 'Что-то не работает',
23
+ 'prompt.feedback': 'Что нам следует знать?',
24
+ 'prompt.feature_request': 'Что вы хотели бы увидеть?',
25
+ 'prompt.bug_report': 'Что произошло и чего вы ожидали?',
26
+ 'sub.feedback': 'Хороший или плохой — он идёт прямо к команде.',
27
+ 'sub.feature_request': 'Расскажите, что вы пытаетесь сделать.',
28
+ 'sub.bug_report': 'Шаги, экран и ваши ожидания — всё это помогает.',
29
+ 'compose.back': 'Назад к разговорам',
30
+ 'compose.sent': 'Отправлено',
31
+ 'compose.sentHint': 'Мы ответим прямо здесь. Разговор появится в разделе «Открытые», а на кнопке загорится значок, когда мы ответим.',
32
+ 'compose.done': 'Готово',
33
+ 'compose.send': 'Отправить',
34
+ 'compose.sending': 'Отправка…',
35
+ 'compose.minChars': 'Не менее {count} символов',
36
+ 'thread.support': 'Поддержка',
37
+ 'thread.new': 'Новое',
38
+ 'thread.resolvedAt': 'Решено · {date}',
39
+ 'thread.readOnly': 'Этот разговор решён и доступен только для чтения',
40
+ 'thread.placeholder': 'Напишите ответ…',
41
+ 'thread.sendA11y': 'Отправить ответ',
42
+ 'thread.sendingA11y': 'Отправка',
43
+ 'thread.translating': 'Перевод…',
44
+ 'status.open': 'Открыт',
45
+ 'status.resolved': 'Решён',
46
+ 'error.tryAgain': 'Повторить',
47
+ 'error.rateLimited': 'Слишком много запросов — попробуйте позже',
48
+ 'error.offline': 'Нет подключения — проверьте сеть',
49
+ 'error.sendFailed': 'Не удалось отправить — попробуйте ещё раз',
50
+ 'error.loadFailed': 'Не удалось загрузить ваши разговоры',
51
+ 'error.unavailable': 'Поддержка сейчас недоступна',
52
+ 'error.loadRateLimited': 'Слишком много запросов — попробуйте через минуту',
53
+ 'lang.title': 'Выберите язык',
54
+ 'lang.subtitle': 'Пишите на удобном вам языке — мы переводим между вами и командой поддержки.',
55
+ 'lang.continue': 'Продолжить',
56
+ 'lang.change': 'Изменить язык',
57
+ 'lang.saveFailed': 'Не удалось сохранить — попробуйте ещё раз',
58
+ 'time.justNow': 'только что',
59
+ 'time.minutes': '{count} мин назад',
60
+ 'time.hours': '{count} ч назад',
61
+ 'time.days': '{count} дн назад',
62
+ 'time.weeks': '{count} нед назад',
63
+ 'time.months': '{count} мес назад',
64
+ 'time.years': '{count} г назад',
65
+ 'time.today': 'Сегодня',
66
+ 'time.yesterday': 'Вчера'
67
+ };
68
+ //# sourceMappingURL=ru.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ export const tr = {
4
+ 'home.title': 'Destek',
5
+ 'home.subtitle': 'Bir görüşme başlatın — tam burada yanıtlıyoruz.',
6
+ 'home.close': 'Desteği kapat',
7
+ 'home.open': 'Açık',
8
+ 'home.resolved': 'Çözüldü',
9
+ 'home.empty': 'Henüz görüşme yok',
10
+ 'home.emptyHint': 'Gönderdiğiniz her şey ekibe ulaşır ve yanıtları bu pencereye geri gelir.',
11
+ 'home.noMessages': 'Henüz mesaj yok',
12
+ 'home.you': 'Siz',
13
+ 'home.threadA11y': 'Görüşme: {type}',
14
+ 'home.threadUnreadA11y': 'Görüşme: {type}, {count} okunmamış',
15
+ 'home.newA11y': 'Yeni: {type}',
16
+ 'home.language': 'Dil',
17
+ 'type.feedback': 'Geri bildirim',
18
+ 'type.feature_request': 'Özellik isteği',
19
+ 'type.bug_report': 'Hata bildirimi',
20
+ 'hint.feedback': 'Ne düşündüğünüzü söyleyin',
21
+ 'hint.feature_request': 'Bir iyileştirme önerin',
22
+ 'hint.bug_report': 'Bir şey çalışmıyor',
23
+ 'prompt.feedback': 'Neyi bilmemiz gerekiyor?',
24
+ 'prompt.feature_request': 'Neyi görmek istersiniz?',
25
+ 'prompt.bug_report': 'Ne oldu ve ne olmasını bekliyordunuz?',
26
+ 'sub.feedback': 'İyi ya da kötü — doğrudan ekibe gider.',
27
+ 'sub.feature_request': 'Ne yapmaya çalıştığınızı anlatın.',
28
+ 'sub.bug_report': 'Adımlar, ekran ve beklentiniz bize yardımcı olur.',
29
+ 'compose.back': 'Görüşmelere dön',
30
+ 'compose.sent': 'Gönderildi',
31
+ 'compose.sentHint': 'Tam burada yanıtlayacağız. Görüşmeyi Açık bölümünde bulursunuz ve yanıtladığımızda düğmede bir işaret belirir.',
32
+ 'compose.done': 'Tamam',
33
+ 'compose.send': 'Gönder',
34
+ 'compose.sending': 'Gönderiliyor…',
35
+ 'compose.minChars': 'En az {count} karakter',
36
+ 'thread.support': 'Destek',
37
+ 'thread.new': 'Yeni',
38
+ 'thread.resolvedAt': 'Çözüldü · {date}',
39
+ 'thread.readOnly': 'Bu görüşme çözüldü ve salt okunur',
40
+ 'thread.placeholder': 'Bir yanıt yazın…',
41
+ 'thread.sendA11y': 'Yanıtı gönder',
42
+ 'thread.sendingA11y': 'Gönderiliyor',
43
+ 'thread.translating': 'Çevriliyor…',
44
+ 'status.open': 'Açık',
45
+ 'status.resolved': 'Çözüldü',
46
+ 'error.tryAgain': 'Tekrar dene',
47
+ 'error.rateLimited': 'Çok fazla istek — daha sonra tekrar deneyin',
48
+ 'error.offline': 'Çevrimdışısınız — bağlantınızı kontrol edin',
49
+ 'error.sendFailed': 'Gönderilemedi — tekrar deneyin',
50
+ 'error.loadFailed': 'Görüşmeleriniz yüklenemedi',
51
+ 'error.unavailable': 'Destek şu anda kullanılamıyor',
52
+ 'error.loadRateLimited': 'Çok fazla istek — birazdan tekrar deneyin',
53
+ 'lang.title': 'Dilinizi seçin',
54
+ 'lang.subtitle': 'İstediğiniz dilde yazın — sizinle destek ekibi arasında çeviri yapıyoruz.',
55
+ 'lang.continue': 'Devam',
56
+ 'lang.change': 'Dili değiştir',
57
+ 'lang.saveFailed': 'Kaydedilemedi — tekrar deneyin',
58
+ 'time.justNow': 'az önce',
59
+ 'time.minutes': '{count} dk önce',
60
+ 'time.hours': '{count} sa önce',
61
+ 'time.days': '{count} g önce',
62
+ 'time.weeks': '{count} hf önce',
63
+ 'time.months': '{count} ay önce',
64
+ 'time.years': '{count} yıl önce',
65
+ 'time.today': 'Bugün',
66
+ 'time.yesterday': 'Dün'
67
+ };
68
+ //# sourceMappingURL=tr.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ export const zh = {
4
+ 'home.title': '客服支持',
5
+ 'home.subtitle': '发起一次对话 —— 我们就在这里回复你。',
6
+ 'home.close': '关闭客服',
7
+ 'home.open': '进行中',
8
+ 'home.resolved': '已解决',
9
+ 'home.empty': '还没有对话',
10
+ 'home.emptyHint': '你发送的内容都会送到团队,他们的回复也会回到这个窗口。',
11
+ 'home.noMessages': '还没有消息',
12
+ 'home.you': '你',
13
+ 'home.threadA11y': '对话:{type}',
14
+ 'home.threadUnreadA11y': '对话:{type},{count} 条未读',
15
+ 'home.newA11y': '新建:{type}',
16
+ 'home.language': '语言',
17
+ 'type.feedback': '反馈',
18
+ 'type.feature_request': '功能请求',
19
+ 'type.bug_report': '错误报告',
20
+ 'hint.feedback': '告诉我们你的想法',
21
+ 'hint.feature_request': '提出一个改进建议',
22
+ 'hint.bug_report': '有功能无法正常使用',
23
+ 'prompt.feedback': '有什么想让我们知道的?',
24
+ 'prompt.feature_request': '你希望看到什么?',
25
+ 'prompt.bug_report': '发生了什么,你期待的结果是什么?',
26
+ 'sub.feedback': '好评差评都会直接送到团队。',
27
+ 'sub.feature_request': '告诉我们你想完成什么。',
28
+ 'sub.bug_report': '操作步骤、所在页面和你的预期都很有帮助。',
29
+ 'compose.back': '返回对话列表',
30
+ 'compose.sent': '已发送',
31
+ 'compose.sentHint': '我们会在这里回复。对话会出现在「进行中」,我们回复后按钮上会显示提示。',
32
+ 'compose.done': '完成',
33
+ 'compose.send': '发送',
34
+ 'compose.sending': '发送中…',
35
+ 'compose.minChars': '至少输入 {count} 个字符',
36
+ 'thread.support': '客服支持',
37
+ 'thread.new': '新消息',
38
+ 'thread.resolvedAt': '已解决 · {date}',
39
+ 'thread.readOnly': '此对话已解决,仅供查看',
40
+ 'thread.placeholder': '写下回复…',
41
+ 'thread.sendA11y': '发送回复',
42
+ 'thread.sendingA11y': '发送中',
43
+ 'thread.translating': '翻译中…',
44
+ 'status.open': '进行中',
45
+ 'status.resolved': '已解决',
46
+ 'error.tryAgain': '重试',
47
+ 'error.rateLimited': '请求过于频繁 —— 请稍后再试',
48
+ 'error.offline': '你已离线 —— 请检查网络连接',
49
+ 'error.sendFailed': '发送失败 —— 请重试',
50
+ 'error.loadFailed': '无法加载你的对话',
51
+ 'error.unavailable': '客服支持暂时不可用',
52
+ 'error.loadRateLimited': '请求过于频繁 —— 请稍等片刻再试',
53
+ 'lang.title': '选择你的语言',
54
+ 'lang.subtitle': '用你习惯的语言书写 —— 我们会在你和客服团队之间翻译。',
55
+ 'lang.continue': '继续',
56
+ 'lang.change': '更改语言',
57
+ 'lang.saveFailed': '保存失败 —— 请重试',
58
+ 'time.justNow': '刚刚',
59
+ 'time.minutes': '{count} 分钟前',
60
+ 'time.hours': '{count} 小时前',
61
+ 'time.days': '{count} 天前',
62
+ 'time.weeks': '{count} 周前',
63
+ 'time.months': '{count} 个月前',
64
+ 'time.years': '{count} 年前',
65
+ 'time.today': '今天',
66
+ 'time.yesterday': '昨天'
67
+ };
68
+ //# sourceMappingURL=zh.js.map
@@ -0,0 +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":[]}
@@ -4,5 +4,6 @@ export { SupportButton } from './components/SupportButton';
4
4
  export { supportDarkTheme, supportLightTheme, resolveTheme } from './theme';
5
5
  export { SupportApiError } from './api';
6
6
  export { isPushAvailable } from './push';
7
+ export { DEFAULT_LANGUAGE, deviceLanguage, isSupportedLanguage, LANGUAGE_LABELS, SUPPORTED_LANGUAGES } from './i18n/languages';
7
8
  export { QUERY_TYPE_LABEL, USER_MESSAGE_MAX, USER_MESSAGE_MIN } from './types';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SupportButton","supportDarkTheme","supportLightTheme","resolveTheme","SupportApiError","isPushAvailable","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;AAaxC,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,QACX,SAAS","ignoreList":[]}
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,23 +1,142 @@
1
1
  "use strict";
2
2
 
3
3
  // The SDK consumes the same design tokens as the admin dashboard, so both
4
- // surfaces look like one product.
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
7
  import { darkColors, lightColors, motion, radii, spacing } from '@appsupportkit/design-tokens';
6
- export const supportDarkTheme = {
7
- name: 'dark',
8
- colors: darkColors,
9
- spacing,
10
- radii,
11
- motion
8
+ /** Rounder than the dashboard: touch targets read better with more radius. */
9
+ export const supportRadii = {
10
+ ...radii,
11
+ control: 10,
12
+ card: 14,
13
+ cardLg: 18,
14
+ /** Message bubbles. */
15
+ bubble: 18,
16
+ /** The tight corner on a bubble's sender side. */
17
+ bubbleTail: 6,
18
+ sheet: 24,
19
+ pill: 999
12
20
  };
13
- export const supportLightTheme = {
14
- name: 'light',
15
- colors: lightColors,
16
- spacing,
17
- radii,
18
- motion
19
- };
20
- export function resolveTheme(name) {
21
- return name === 'light' ? supportLightTheme : supportDarkTheme;
21
+
22
+ /**
23
+ * The launcher sits on the host app's own background rather than on an SDK
24
+ * surface, so the two themes need different treatment: on near-black a
25
+ * solid fill needs a hairline to separate from the background and a black
26
+ * shadow, while on white the accent-tinted shadow does that work and a
27
+ * borderless mark has to be darkened to stay legible.
28
+ */
29
+
30
+ // Color helpers come first: the themes below are built at module load, so
31
+ // anything they reach for has to already be initialized. (A `const` used
32
+ // before its definition survives tsc but lands as `undefined` on Hermes.)
33
+ const HEX = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
34
+ function parseHex(color) {
35
+ const match = HEX.exec(color.trim());
36
+ const digits = match?.[1];
37
+ if (digits === undefined) return null;
38
+ const hex = digits.length === 3 ? digits.split('').map(c => c + c).join('') : digits;
39
+ return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16)];
40
+ }
41
+ function mix([r, g, b], target, amount) {
42
+ const channel = c => Math.round(c + (target - c) * amount);
43
+ return `rgb(${channel(r)}, ${channel(g)}, ${channel(b)})`;
44
+ }
45
+ function shadowsFor(name, accent) {
46
+ const dark = name === 'dark';
47
+ return {
48
+ launcher: {
49
+ // Tinting the launcher's shadow with the accent is what makes it read
50
+ // as lifted rather than pasted on.
51
+ shadowColor: dark ? '#000000' : accent,
52
+ shadowOpacity: dark ? 0.45 : 0.3,
53
+ shadowRadius: 14,
54
+ shadowOffset: {
55
+ width: 0,
56
+ height: 6
57
+ },
58
+ elevation: 8
59
+ },
60
+ sheet: {
61
+ shadowColor: '#000000',
62
+ shadowOpacity: dark ? 0.5 : 0.16,
63
+ shadowRadius: 24,
64
+ shadowOffset: {
65
+ width: 0,
66
+ height: -6
67
+ },
68
+ elevation: 24
69
+ },
70
+ badge: {
71
+ shadowColor: '#000000',
72
+ shadowOpacity: 0.25,
73
+ shadowRadius: 3,
74
+ shadowOffset: {
75
+ width: 0,
76
+ height: 1
77
+ },
78
+ elevation: 3
79
+ }
80
+ };
81
+ }
82
+ function launcherFor(name, accent) {
83
+ const rgb = parseHex(accent);
84
+ return {
85
+ solidRing: name === 'dark' ? 'rgba(255, 255, 255, 0.14)' : 'rgba(0, 0, 0, 0.06)',
86
+ // On a dark app background the raw accent is too close to the surface
87
+ // to read as a glyph; lift it toward white.
88
+ minimalMark: name === 'dark' && rgb !== null ? mix(rgb, 255, 0.35) : accent
89
+ };
90
+ }
91
+ function buildTheme(name, colors) {
92
+ return {
93
+ name,
94
+ colors,
95
+ spacing,
96
+ radii: supportRadii,
97
+ motion,
98
+ shadows: shadowsFor(name, colors.accent),
99
+ launcher: launcherFor(name, colors.accent)
100
+ };
101
+ }
102
+ export const supportDarkTheme = buildTheme('dark', darkColors);
103
+ export const supportLightTheme = buildTheme('light', lightColors);
104
+
105
+ /**
106
+ * 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).
109
+ */
110
+ function withAccent(theme, accent) {
111
+ const rgb = parseHex(accent);
112
+ if (!rgb) return theme;
113
+ 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;
116
+ const colors = {
117
+ ...theme.colors,
118
+ accent,
119
+ accentHover: mix(rgb, theme.name === 'dark' ? 255 : 0, 0.12),
120
+ accentMuted: `rgba(${r}, ${g}, ${b}, 0.12)`,
121
+ accentForeground: luminance > 0.62 ? '#111113' : '#FFFFFF',
122
+ statusOpen: accent,
123
+ statusOpenBg: `rgba(${r}, ${g}, ${b}, 0.10)`,
124
+ focusRing: accent
125
+ };
126
+ return {
127
+ ...theme,
128
+ colors,
129
+ shadows: shadowsFor(theme.name, accent),
130
+ launcher: launcherFor(theme.name, accent)
131
+ };
132
+ }
133
+
134
+ /**
135
+ * @param name "light" | "dark" (default dark).
136
+ * @param accentColor Optional brand color (hex) replacing the default accent.
137
+ */
138
+ export function resolveTheme(name, accentColor) {
139
+ const base = name === 'light' ? supportLightTheme : supportDarkTheme;
140
+ return accentColor ? withAccent(base, accentColor) : base;
22
141
  }
23
142
  //# sourceMappingURL=theme.js.map