@cometchat/skills 4.4.2 → 5.0.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 (490) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/LICENSE +21 -0
  5. package/README.md +41 -163
  6. package/RULES.md +114 -0
  7. package/bin/cometchat-skills.mjs +1180 -0
  8. package/bin/legacy-skills.json +95 -0
  9. package/catalogs/android-v6.json +1646 -0
  10. package/catalogs/flutter-v6.json +651 -0
  11. package/catalogs/ios-v5.json +1383 -0
  12. package/catalogs/rn-calls-v5.json +134 -0
  13. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  14. package/catalogs/rn-sdk-v4.json +672 -0
  15. package/catalogs/rn-v5.json +449 -0
  16. package/catalogs/rn-v5.symbols.txt +216 -0
  17. package/catalogs/sdk-android-v5.json +514 -0
  18. package/contracts.android-calls-v5.json +122 -0
  19. package/contracts.android-v6.json +135 -0
  20. package/contracts.angular-v5.json +694 -0
  21. package/contracts.flutter-calls-v5.json +77 -0
  22. package/contracts.flutter-v6.json +126 -0
  23. package/contracts.ios-calls-v5.json +67 -0
  24. package/contracts.ios-v5.json +436 -0
  25. package/contracts.json +82 -0
  26. package/contracts.rn-calls-v5.json +77 -0
  27. package/contracts.rn-v5.json +727 -0
  28. package/contracts.sdk-android-v5.json +15 -0
  29. package/contracts.web-calls-v5.json +45 -0
  30. package/features.android-calls-v5.json +246 -0
  31. package/features.android-v6.json +65 -0
  32. package/features.angular-v5.json +521 -0
  33. package/features.flutter-calls-v5.json +286 -0
  34. package/features.flutter-v6.json +484 -0
  35. package/features.ios-calls-v5.json +236 -0
  36. package/features.ios-v5.json +573 -0
  37. package/features.json +61 -0
  38. package/features.rn-calls-v5.json +187 -0
  39. package/features.rn-v5.json +614 -0
  40. package/features.sdk-android-v5.json +40 -0
  41. package/features.sdk-jsv4.json +24 -0
  42. package/features.web-calls-v5.json +108 -0
  43. package/package.json +151 -74
  44. package/peers.yaml +312 -0
  45. package/registry/README.md +31 -0
  46. package/registry/android-calls-v5.json +54 -0
  47. package/registry/android-v6.json +137 -0
  48. package/registry/angular-v5.json +114 -0
  49. package/registry/flutter-calls-v5.json +54 -0
  50. package/registry/flutter-v6.json +119 -0
  51. package/registry/ios-calls-v5.json +59 -0
  52. package/registry/ios-v5.json +97 -0
  53. package/registry/rn-calls-v5.json +59 -0
  54. package/registry/rn-v5.json +129 -0
  55. package/registry/sdk-android-v5.json +53 -0
  56. package/registry/sdk-jsv4.json +53 -0
  57. package/registry/web-calls-v5.json +54 -0
  58. package/registry/web-v7.json +99 -0
  59. package/skills/cometchat/SKILL.md +42 -2096
  60. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  67. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  68. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  69. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  70. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  71. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  72. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  73. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  74. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  75. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  76. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  77. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  78. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  79. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  80. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  81. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  82. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  83. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  84. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  85. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  86. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  87. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  88. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  89. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  90. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  91. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  92. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  93. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  94. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  95. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  96. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  97. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  98. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  99. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  100. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  101. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  102. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  103. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  104. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  105. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  106. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  107. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  108. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  109. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  110. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  111. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  112. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  113. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  114. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  115. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  116. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  117. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  118. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  119. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  120. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  121. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  122. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  123. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  127. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  128. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  129. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  130. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  131. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  132. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  133. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  134. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  135. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  136. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  137. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  138. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  139. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  140. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  141. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  142. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  143. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  144. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  145. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  146. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  147. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  148. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  149. package/skills/cometchat-ios-components/SKILL.md +44 -834
  150. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  151. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  152. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  153. package/skills/cometchat-ios-core/references/install.md +23 -0
  154. package/skills/cometchat-ios-core/references/layout.md +186 -0
  155. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  156. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  157. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  158. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  159. package/skills/cometchat-ios-features/SKILL.md +29 -738
  160. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  161. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  162. package/skills/cometchat-ios-push/SKILL.md +24 -602
  163. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  164. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  165. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  166. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  167. package/skills/cometchat-onboarding/SKILL.md +89 -0
  168. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  169. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  170. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  171. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  172. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  173. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  174. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  175. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  176. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  177. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  178. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  179. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  180. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  181. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  182. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  183. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  184. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  185. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  186. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  187. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  188. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  189. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  190. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  191. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  192. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  193. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  194. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  195. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  196. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  198. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  199. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  200. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  201. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  202. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  203. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  204. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  205. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  206. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  207. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  208. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  209. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  210. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  211. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  212. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  213. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  214. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  215. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  216. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  217. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  218. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  219. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  220. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  221. package/test-suite/README.md +70 -0
  222. package/test-suite/catalogs/android-calls-v5.json +830 -0
  223. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  224. package/test-suite/catalogs/android-v6.json +1646 -0
  225. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  226. package/test-suite/catalogs/angular-v5.json +7587 -0
  227. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  228. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  229. package/test-suite/catalogs/flutter-v6.json +651 -0
  230. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  231. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  232. package/test-suite/catalogs/ios-v5.json +1383 -0
  233. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  234. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  235. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  236. package/test-suite/catalogs/rn-v5.json +449 -0
  237. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  238. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  239. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  240. package/test-suite/catalogs/web-calls-v5.json +195 -0
  241. package/test-suite/catalogs/web-v7.json +1243 -0
  242. package/test-suite/scripts/build-registry.mjs +113 -0
  243. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  244. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  245. package/test-suite/scripts/lint-skills.mjs +909 -0
  246. package/test-suite/scripts/measure-tokens.mjs +169 -0
  247. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  248. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  249. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  250. package/test-suite/scripts/verify-catalog.mjs +242 -0
  251. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  252. package/test-suite/scripts/verify-detection.mjs +178 -0
  253. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  254. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  255. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  256. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  257. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  258. package/test-suite/typecheck/angular-v5/package.json +21 -0
  259. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  260. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  261. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  262. package/test-suite/typecheck/web-v7/package.json +18 -0
  263. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  264. package/bin/install.js +0 -1003
  265. package/skills/.claude-plugin/marketplace.json +0 -86
  266. package/skills/cometchat/references/asking-questions.md +0 -48
  267. package/skills/cometchat-a11y/SKILL.md +0 -477
  268. package/skills/cometchat-android-v5/SKILL.md +0 -121
  269. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  270. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  271. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  272. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  273. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  274. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  275. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  276. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  277. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  278. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  279. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  280. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  281. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  282. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  283. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  284. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  285. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  286. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  287. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  288. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  289. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  290. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  291. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  292. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  293. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  294. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  295. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  296. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  297. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  298. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  299. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  300. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  301. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  302. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  303. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  304. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  305. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  306. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  307. package/skills/cometchat-android-v6/SKILL.md +0 -108
  308. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  309. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  310. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  311. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  312. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  313. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  314. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  315. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  316. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  317. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  318. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  319. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  320. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  321. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  322. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  323. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  324. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  325. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  326. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  327. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  328. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  329. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  330. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  331. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  332. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  333. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  334. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  335. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  336. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  337. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  338. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  339. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  340. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  341. package/skills/cometchat-angular-components/SKILL.md +0 -235
  342. package/skills/cometchat-angular-core/SKILL.md +0 -386
  343. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  344. package/skills/cometchat-angular-features/SKILL.md +0 -329
  345. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  346. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  347. package/skills/cometchat-angular-production/SKILL.md +0 -564
  348. package/skills/cometchat-angular-push/SKILL.md +0 -389
  349. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  350. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  351. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  352. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  353. package/skills/cometchat-calls/SKILL.md +0 -364
  354. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  355. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  356. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  357. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  358. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  359. package/skills/cometchat-components/SKILL.md +0 -1142
  360. package/skills/cometchat-core/SKILL.md +0 -1048
  361. package/skills/cometchat-customization/SKILL.md +0 -580
  362. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  363. package/skills/cometchat-features/SKILL.md +0 -861
  364. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  365. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  366. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  367. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  368. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  369. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  370. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  371. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  372. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  373. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  374. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  375. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  376. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  377. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  378. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  379. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  380. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  381. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  382. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  383. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  384. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  385. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  386. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  387. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  388. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  389. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  390. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  391. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  392. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  393. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  394. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  395. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  396. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  397. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  398. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  399. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  400. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  401. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  402. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  403. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  404. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  405. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  406. package/skills/cometchat-i18n/SKILL.md +0 -419
  407. package/skills/cometchat-ios/SKILL.md +0 -325
  408. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  409. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  410. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  411. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  412. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  413. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  414. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  415. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  416. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  417. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  418. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  419. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  420. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  421. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  422. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  423. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  424. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  425. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  426. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  427. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  428. package/skills/cometchat-ios-production/SKILL.md +0 -738
  429. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  430. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  431. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  432. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  433. package/skills/cometchat-native-calls/SKILL.md +0 -671
  434. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  435. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  436. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  437. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  438. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  439. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  440. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  441. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  442. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  443. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  444. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  445. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  446. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  447. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  448. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  449. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  450. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  451. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  452. package/skills/cometchat-native-components/SKILL.md +0 -628
  453. package/skills/cometchat-native-core/SKILL.md +0 -679
  454. package/skills/cometchat-native-customization/SKILL.md +0 -716
  455. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  456. package/skills/cometchat-native-features/SKILL.md +0 -638
  457. package/skills/cometchat-native-placement/SKILL.md +0 -509
  458. package/skills/cometchat-native-production/SKILL.md +0 -700
  459. package/skills/cometchat-native-push/SKILL.md +0 -594
  460. package/skills/cometchat-native-testing/SKILL.md +0 -582
  461. package/skills/cometchat-native-theming/SKILL.md +0 -681
  462. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  463. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  464. package/skills/cometchat-placement/SKILL.md +0 -1360
  465. package/skills/cometchat-production/SKILL.md +0 -1027
  466. package/skills/cometchat-react-calls/SKILL.md +0 -752
  467. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  468. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  469. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  470. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  471. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  472. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  473. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  474. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  475. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  476. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  477. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  478. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  479. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  480. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  481. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  482. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  483. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  484. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  485. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  486. package/skills/cometchat-react-push/SKILL.md +0 -634
  487. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  488. package/skills/cometchat-react-testing/SKILL.md +0 -413
  489. package/skills/cometchat-theming/SKILL.md +0 -498
  490. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,839 +1,49 @@
1
1
  ---
2
2
  name: cometchat-ios-components
3
- description: "Complete catalog of CometChat iOS UI Kit v5 components with correct usage patterns from official documentation."
3
+ description: "The CometChat iOS UI Kit component catalogue what each component is for, its real API shape, and where custom UI goes. Use when picking or customising an individual component. Triggers: 'which cometchat component', 'customise the conversation row', 'add a custom view to the message list', 'ios component list'."
4
4
  license: "MIT"
5
- compatibility: "CometChatUIKitSwift ^5; CometChatSDK ^4; iOS 13+"
5
+ compatibility: "CometChatUIKitSwift 5.1.22 · iOS 15.1+"
6
6
  metadata:
7
7
  author: "CometChat"
8
- version: "3.0.0"
9
- tags: "chat cometchat ios swift components catalog reference ui-kit"
10
- ---
11
-
12
- > **Ground truth:** `CometChatUIKitSwift ~> 5` component catalog (Pods/SPM `.swiftinterface`) + `docs/ui-kit/ios`. **Official docs:** https://www.cometchat.com/docs/ui-kit/ios/components-overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
-
14
- ## Purpose
15
-
16
- This is the single source of truth for CometChat iOS UI Kit v5 component names, properties, and usage patterns. All examples are based on official CometChat documentation.
17
-
18
- All components are imported from `CometChatUIKitSwift`. All SDK types are imported from `CometChatSDK`.
19
-
20
- ---
21
-
22
- ## 1. CometChatConversations
23
-
24
- A `UIViewController` that displays a scrollable list of the logged-in user's conversations.
25
-
26
- **Usage:**
27
- ```swift
28
- import CometChatUIKitSwift
29
- import CometChatSDK
30
-
31
- let conversationsVC = CometChatConversations()
32
- let navController = UINavigationController(rootViewController: conversationsVC)
33
-
34
- conversationsVC.set(onItemClick: { [weak navController] conversation, indexPath in
35
- let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
36
- if let group = conversation.conversationWith as? Group {
37
- messagesVC.group = group
38
- } else if let user = conversation.conversationWith as? User {
39
- messagesVC.user = user
40
- }
41
- navController?.pushViewController(messagesVC, animated: true)
42
- })
43
- ```
44
-
45
- **Key Properties:**
46
- | Property | Type | Description |
47
- |---|---|---|
48
- | `style` | `ConversationsStyle` | Visual styling |
49
- | `hideReceipts` | `Bool` | Hide message read receipts |
50
- | `hideUserStatus` | `Bool` | Hide online/offline status |
51
- | `disableTyping` | `Bool` | Disable typing indicators |
52
- | `disableSoundForMessages` | `Bool` | Disable message sounds |
53
-
54
- **Callbacks:**
55
- | Callback | Method | Description |
56
- |---|---|---|
57
- | `onItemClick` | `set(onItemClick:)` | Conversation tapped |
58
- | `onItemLongClick` | `set(onItemLongClick:)` | Conversation long-pressed |
59
- | `onError` | `set(onError:)` | Error occurred |
60
- | `onEmpty` | `set(onEmpty:)` | List is empty |
61
- | `onLoad` | `set(onLoad:)` | Conversations loaded |
62
-
63
- ---
64
-
65
- ## 2. CometChatUsers
66
-
67
- A `UIViewController` that displays a list of users.
68
-
69
- **Usage:**
70
- ```swift
71
- let usersVC = CometChatUsers()
72
- let usersNav = UINavigationController(rootViewController: usersVC)
73
-
74
- usersVC.set(onItemClick: { [weak usersNav] user, indexPath in
75
- let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
76
- messagesVC.user = user
77
- usersNav?.pushViewController(messagesVC, animated: true)
78
- })
79
- ```
80
-
81
- **Key Properties:**
82
- | Property | Type | Description |
83
- |---|---|---|
84
- | `style` | `UsersStyle` | Visual styling |
85
- | `hideSearch` | `Bool` | Hide the built-in search bar (inherited from `CometChatListBase`; default `true`) |
86
- | `hideUserStatus` | `Bool` | Hide online/offline indicator |
87
- | `selectionMode` | `SelectionMode` | `.none`, `.single`, `.multiple` |
88
-
89
- **Callbacks:**
90
- | Callback | Method | Description |
91
- |---|---|---|
92
- | `onItemClick` | `set(onItemClick:)` | User tapped |
93
- | `onSelection` | `set(onSelection:)` | Selection changed |
94
- | `onError` | `set(onError:)` | Error occurred |
95
-
96
- **Custom Subtitle View:**
97
- ```swift
98
- import CometChatSDK
99
-
100
- let usersVC = CometChatUsers()
101
-
102
- // Custom subtitle with explicit type annotation
103
- usersVC.set(subtitle: { (user: User?) -> UIView in
104
- let label = UILabel()
105
- label.font = .systemFont(ofSize: 13)
106
- if user?.status == .online {
107
- label.text = "Online"
108
- label.textColor = .systemGreen
109
- } else {
110
- label.text = "Offline"
111
- label.textColor = .secondaryLabel
112
- }
113
- return label
114
- })
115
- ```
116
-
117
- **Custom Request Builder:**
118
- ```swift
119
- let usersVC = CometChatUsers()
120
- usersVC.set(userRequestBuilder: UsersRequest.UsersRequestBuilder()
121
- .set(limit: 30)
122
- .set(searchKeyword: "john")
123
- )
124
- ```
125
-
126
- ---
127
-
128
- ## 3. CometChatGroups
129
-
130
- A `UIViewController` that displays a list of groups.
131
-
132
- **Usage:**
133
- ```swift
134
- let groupsVC = CometChatGroups()
135
- let groupsNav = UINavigationController(rootViewController: groupsVC)
136
-
137
- groupsVC.set(onItemClick: { [weak groupsNav] group, indexPath in
138
- let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
139
- messagesVC.group = group
140
- groupsNav?.pushViewController(messagesVC, animated: true)
141
- })
142
- ```
143
-
144
- **Key Properties:**
145
- | Property | Type | Description |
146
- |---|---|---|
147
- | `style` | `GroupsStyle` | Visual styling |
148
- | `hideSearch` | `Bool` | Hide the built-in search bar (inherited from `CometChatListBase`; default `true`) |
149
- | `selectionMode` | `SelectionMode` | `.none`, `.single`, `.multiple` |
150
-
151
- **Callbacks:**
152
- | Callback | Method | Description |
153
- |---|---|---|
154
- | `onItemClick` | `set(onItemClick:)` | Group tapped |
155
- | `onSelection` | `set(onSelection:)` | Selection changed |
156
- | `onError` | `set(onError:)` | Error occurred |
157
-
158
- ---
159
-
160
- ## 4. CometChatMessageHeader
161
-
162
- A `UIView` that displays user/group info and back button at the top of a message view.
163
-
164
- **Usage:**
165
- ```swift
166
- private lazy var headerView: CometChatMessageHeader = {
167
- let view = CometChatMessageHeader()
168
- view.translatesAutoresizingMaskIntoConstraints = false
169
- if let user = user {
170
- view.set(user: user)
171
- } else if let group = group {
172
- view.set(group: group)
173
- }
174
- view.set(controller: self)
175
- return view
176
- }()
177
- ```
178
-
179
- **Key Properties:**
180
- | Property | Type | Description |
181
- |---|---|---|
182
- | `style` | `MessageHeaderStyle` | Visual styling |
183
- | `hideBackButton` | `Bool` | Hide back button |
184
- | `hideVideoCallButton` | `Bool` | Hide video call button |
185
- | `hideVoiceCallButton` | `Bool` | Hide voice call button |
186
-
187
- **Important:** Always call `view.set(controller: self)` to enable navigation.
188
-
189
- ---
190
-
191
- ## 5. CometChatMessageList
192
-
193
- A `UIView` that displays messages with real-time updates.
194
-
195
- **Usage:**
196
- ```swift
197
- private lazy var messageListView: CometChatMessageList = {
198
- let listView = CometChatMessageList()
199
- listView.translatesAutoresizingMaskIntoConstraints = false
200
- if let user = user {
201
- listView.set(user: user)
202
- } else if let group = group {
203
- listView.set(group: group)
204
- }
205
- listView.set(controller: self)
206
- return listView
207
- }()
208
- ```
209
-
210
- **Key Properties:**
211
- | Property | Type | Description |
212
- |---|---|---|
213
- | `style` | `MessageListStyle` | Visual styling |
214
- | `hideReceipts` | `Bool` | Hide read receipts |
215
- | `hideDateSeparator` | `Bool` | Hide date separators |
216
- | `hideAvatar` | `Bool` | Hide sender avatars |
217
- | `scrollToBottomOnNewMessages` | `Bool` | Auto-scroll on new messages |
218
- | `messageAlignment` | `MessageListAlignment` | `.standard` or `.leftAligned` |
219
-
220
- **Important:** Always call `listView.set(controller: self)` for proper functionality.
221
-
222
- ---
223
-
224
- ## 6. CometChatMessageComposer
225
-
226
- A `UIView` for composing and sending messages.
227
-
228
- **Usage:**
229
- ```swift
230
- private lazy var composerView: CometChatMessageComposer = {
231
- let composer = CometChatMessageComposer()
232
- composer.translatesAutoresizingMaskIntoConstraints = false
233
- if let user = user {
234
- composer.set(user: user)
235
- } else if let group = group {
236
- composer.set(group: group)
237
- }
238
- composer.set(controller: self)
239
- return composer
240
- }()
241
- ```
242
-
243
- **Key Properties:**
244
- | Property | Type | Description |
245
- |---|---|---|
246
- | `style` | `MessageComposerStyle` | Visual styling |
247
- | `placeholderText` | `String` | Placeholder text |
248
- | `hideVoiceRecordingButton` | `Bool` | Hide voice recording button |
249
- | `hideAttachmentButton` | `Bool` | Hide attachment button |
250
- | `hideStickersButton` | `Bool` | Hide stickers button |
251
-
252
- **Important:** Always call `composer.set(controller: self)` for proper functionality.
253
-
254
- ---
255
-
256
- ## 7. CometChatCallLogs
257
-
258
- A `UIViewController` that displays call history.
259
-
260
- **Requires:** `CometChatCallsSDK`
261
-
262
- **Usage:**
263
- ```swift
264
- #if canImport(CometChatCallsSDK)
265
- let callLogsVC = CometChatCallLogs()
266
- let callLogsNav = UINavigationController(rootViewController: callLogsVC)
267
- #endif
268
- ```
269
-
270
- ---
271
-
272
- ## 8. CometChatGroupMembers
273
-
274
- A `UIViewController` that displays members of a specific group.
275
-
276
- **Usage:**
277
- ```swift
278
- // CometChatGroupMembers has a zero-arg initializer; pass the group via
279
- // `set(group:)`. There is no `CometChatGroupMembers(group:)` initializer.
280
- let groupMembers = CometChatGroupMembers()
281
- groupMembers.set(group: group)
282
- navigationController?.pushViewController(groupMembers, animated: true)
283
- ```
284
-
285
- ---
286
-
287
- ## 9. User / Group details — build your own VC
288
-
289
- There is **no `CometChatDetails` view controller exported by the kit.** The sample app builds a details screen by composing avatar, list rows, and action sheets directly. Follow the same pattern in your app — `SampleApp/View Controllers/DetailsPage/UserDetailsViewController.swift` is a reasonable starting point to copy.
290
-
291
- ---
292
-
293
- ## 10. CometChatUIKit
294
-
295
- Static class for initialization and authentication.
296
-
297
- **Initialization:**
298
- ```swift
299
- let uikitSettings = UIKitSettings()
300
- .set(appID: "APP_ID")
301
- .set(region: "REGION")
302
- .set(authKey: "AUTH_KEY")
303
- .subscribePresenceForAllUsers()
304
- .build()
305
-
306
- // Init takes a `UIKitSettings` and a `Result<Bool, Error>` completion.
307
- // Both `CometChatUIKit(uiKitSettings: ...) { ... }` (constructor form)
308
- // and `CometChatUIKit.init(uiKitSettings: ...) { ... }` (explicit `.init`
309
- // call) compile to the same thing in Swift; the kit's sample apps use
310
- // the `.init` form, so don't be alarmed if you see both. See
311
- // cometchat-ios-core § 2 for the recommended singleton pattern.
312
- CometChatUIKit(uiKitSettings: uikitSettings) { result in
313
- switch result {
314
- case .success:
315
- debugPrint("CometChat initialized")
316
- case .failure(let error):
317
- debugPrint("Init failed: \(error.localizedDescription)")
318
- }
319
- }
320
- ```
321
-
322
- **Login:**
323
- ```swift
324
- CometChatUIKit.login(uid: "cometchat-uid-1") { result in
325
- switch result {
326
- case .success(let user):
327
- print("Login successful: \(user.name ?? "")")
328
- case .onError(let error):
329
- print("Login failed: \(error.errorDescription)")
330
- @unknown default:
331
- break
332
- }
333
- }
334
- ```
335
-
336
- **Logout:**
337
- ```swift
338
- if let currentUser = CometChat.getLoggedInUser() {
339
- CometChatUIKit.logout(user: currentUser) { result in
340
- switch result {
341
- case .success:
342
- print("Logged out successfully")
343
- case .onError(let error):
344
- print("Logout failed: \(error.errorDescription)")
345
- @unknown default:
346
- break
347
- }
348
- }
349
- }
350
- ```
351
-
352
- ---
353
-
354
- ## 11. Composing a chat screen — `MessagesVC`
355
-
356
- The kit does **not** ship a `CometChatMessages` or `CometChatConversationsWithMessages` view controller. The standard pattern (and what the sample app uses) is to compose `CometChatMessageHeader` + `CometChatMessageList` + `CometChatMessageComposer` inside your own `UIViewController`. See § 12 below for the full implementation — it's ~50 lines and gives you full control over navigation and lifecycle.
357
-
358
- If you previously read about a "pre-built `CometChatMessages` UIViewController" in older docs or AI-generated guides, that was incorrect. Always build your own `MessagesVC` as shown in § 12 (or copy `SampleApp/View Controllers/CometChat Components/MessagesVC.swift` from the kit's sample app).
359
-
360
- ---
361
-
362
- ## 12. Custom MessagesVC Implementation
363
-
364
- If you need more control over the messaging UI, create a custom view controller that combines header, list, and composer:
365
-
366
- ```swift
367
- import UIKit
368
- import CometChatSDK
369
- import CometChatUIKitSwift
370
-
371
- class MessagesVC: UIViewController {
372
-
373
- // MARK: - Properties
374
- var user: User?
375
- var group: Group?
376
-
377
- // MARK: - UI Components
378
- private lazy var headerView: CometChatMessageHeader = {
379
- let view = CometChatMessageHeader()
380
- view.translatesAutoresizingMaskIntoConstraints = false
381
- if let user = user {
382
- view.set(user: user)
383
- } else if let group = group {
384
- view.set(group: group)
385
- }
386
- view.set(controller: self)
387
- return view
388
- }()
389
-
390
- private lazy var messageListView: CometChatMessageList = {
391
- let listView = CometChatMessageList()
392
- listView.translatesAutoresizingMaskIntoConstraints = false
393
- if let user = user {
394
- listView.set(user: user)
395
- } else if let group = group {
396
- listView.set(group: group)
397
- }
398
- listView.set(controller: self)
399
- return listView
400
- }()
401
-
402
- private lazy var composerView: CometChatCompactMessageComposer = {
403
- let composer = CometChatCompactMessageComposer()
404
- composer.translatesAutoresizingMaskIntoConstraints = false
405
- if let user = user {
406
- composer.set(user: user)
407
- } else if let group = group {
408
- composer.set(group: group)
409
- }
410
- composer.set(controller: self)
411
- return composer
412
- }()
413
-
414
- // MARK: - Lifecycle
415
- override func viewDidLoad() {
416
- super.viewDidLoad()
417
- configureView()
418
- setupLayout()
419
- }
420
-
421
- override func viewWillDisappear(_ animated: Bool) {
422
- super.viewWillDisappear(animated)
423
- navigationController?.setNavigationBarHidden(false, animated: true)
424
- }
425
-
426
- // MARK: - Setup
427
- private func configureView() {
428
- view.backgroundColor = .systemBackground
429
- navigationController?.setNavigationBarHidden(true, animated: false)
430
- }
431
-
432
- private func setupLayout() {
433
- [headerView, messageListView, composerView].forEach { view.addSubview($0) }
434
-
435
- NSLayoutConstraint.activate([
436
- headerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
437
- headerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
438
- headerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
439
- headerView.heightAnchor.constraint(equalToConstant: 50),
440
-
441
- messageListView.topAnchor.constraint(equalTo: headerView.bottomAnchor),
442
- messageListView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
443
- messageListView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
444
- messageListView.bottomAnchor.constraint(equalTo: composerView.topAnchor),
445
-
446
- composerView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
447
- composerView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
448
- composerView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
449
- ])
450
- }
451
- }
452
- ```
453
-
454
- ---
455
-
456
- ## 14. Complete Tab-Based Chat App
457
-
458
- Full implementation of a tabbed chat app with Chats, Calls, Users, and Groups:
459
-
460
- ```swift
461
- import UIKit
462
- import CometChatUIKitSwift
463
- import CometChatSDK
464
-
465
- class SceneDelegate: UIResponder, UIWindowSceneDelegate {
466
-
467
- var window: UIWindow?
468
-
469
- func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
470
- guard let windowScene = (scene as? UIWindowScene) else { return }
471
-
472
- let uikitSettings = UIKitSettings()
473
- .set(appID: "APP_ID")
474
- .set(region: "REGION")
475
- .set(authKey: "AUTH_KEY")
476
- .subscribePresenceForAllUsers()
477
- .build()
478
-
479
- CometChatUIKit.init(uiKitSettings: uikitSettings) { result in
480
- switch result {
481
- case .success:
482
- CometChatUIKit.login(uid: "cometchat-uid-1") { loginResult in
483
- switch loginResult {
484
- case .success:
485
- DispatchQueue.main.async {
486
- self.setupTabbedView(windowScene: windowScene)
487
- }
488
- case .onError(let error):
489
- print("Login failed: \(error.errorDescription)")
490
- @unknown default:
491
- break
492
- }
493
- }
494
- case .failure(let error):
495
- print("Init failed: \(error)")
496
- }
497
- }
498
- }
499
-
500
- func setupTabbedView(windowScene: UIWindowScene) {
501
- let tabBarController = UITabBarController()
502
- tabBarController.tabBar.backgroundColor = .white
503
-
504
- // Conversations Tab
505
- let conversationsVC = CometChatConversations()
506
- let conversationsNav = UINavigationController(rootViewController: conversationsVC)
507
- conversationsVC.tabBarItem = UITabBarItem(
508
- title: "CHATS",
509
- image: UIImage(systemName: "message.fill"),
510
- tag: 0
511
- )
512
-
513
- conversationsVC.set(onItemClick: { [weak conversationsNav] conversation, indexPath in
514
- let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
515
- if let group = conversation.conversationWith as? Group {
516
- messagesVC.group = group
517
- } else if let user = conversation.conversationWith as? User {
518
- messagesVC.user = user
519
- }
520
- messagesVC.hidesBottomBarWhenPushed = true
521
- conversationsNav?.pushViewController(messagesVC, animated: true)
522
- })
523
-
524
- // Call Logs Tab
525
- #if canImport(CometChatCallsSDK)
526
- let callLogsVC = CometChatCallLogs()
527
- let callLogsNav = UINavigationController(rootViewController: callLogsVC)
528
- callLogsVC.tabBarItem = UITabBarItem(
529
- title: "CALLS",
530
- image: UIImage(systemName: "phone.fill"),
531
- tag: 1
532
- )
533
- #endif
534
-
535
- // Users Tab
536
- let usersVC = CometChatUsers()
537
- let usersNav = UINavigationController(rootViewController: usersVC)
538
- usersVC.tabBarItem = UITabBarItem(
539
- title: "USERS",
540
- image: UIImage(systemName: "person.2.fill"),
541
- tag: 2
542
- )
543
-
544
- usersVC.set(onItemClick: { [weak usersNav] user, indexPath in
545
- let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
546
- messagesVC.user = user
547
- messagesVC.hidesBottomBarWhenPushed = true
548
- usersNav?.pushViewController(messagesVC, animated: true)
549
- })
550
-
551
- // Groups Tab
552
- let groupsVC = CometChatGroups()
553
- let groupsNav = UINavigationController(rootViewController: groupsVC)
554
- groupsVC.tabBarItem = UITabBarItem(
555
- title: "GROUPS",
556
- image: UIImage(systemName: "person.3.fill"),
557
- tag: 3
558
- )
559
-
560
- groupsVC.set(onItemClick: { [weak groupsNav] group, indexPath in
561
- let messagesVC = MessagesVC() // your own VC composing CometChatMessageHeader + List + Composer; see cometchat-ios-components § 12
562
- messagesVC.group = group
563
- messagesVC.hidesBottomBarWhenPushed = true
564
- groupsNav?.pushViewController(messagesVC, animated: true)
565
- })
566
-
567
- #if canImport(CometChatCallsSDK)
568
- tabBarController.viewControllers = [conversationsNav, callLogsNav, usersNav, groupsNav]
569
- #else
570
- tabBarController.viewControllers = [conversationsNav, usersNav, groupsNav]
571
- #endif
572
-
573
- window = UIWindow(windowScene: windowScene)
574
- window?.rootViewController = tabBarController
575
- window?.makeKeyAndVisible()
576
- }
577
- }
578
- ```
579
-
580
- ---
581
-
582
- ## 15. Shared UI Components
583
-
584
- ### CometChatAvatar
585
- ```swift
586
- let avatar = CometChatAvatar()
587
- avatar.setAvatar(avatarUrl: user.avatar ?? "", with: user.name)
588
- ```
589
-
590
- ### CometChatBadge
591
- ```swift
592
- let badge = CometChatBadge()
593
- badge.set(count: 5)
594
- ```
595
-
596
- ### CometChatStatusIndicator
597
- ```swift
598
- let statusIndicator = CometChatStatusIndicator()
599
- statusIndicator.set(status: .online)
600
- ```
601
-
602
- ---
603
-
604
- ## 16. AI Components
605
-
606
- ### CometChatAIConversationStarter
607
- Displays AI-suggested conversation starters.
608
-
609
- ### CometChatAISmartReply
610
- Displays AI-suggested quick replies.
611
-
612
- ### CometChatAIConversationSummary
613
- Displays AI-generated conversation summary.
614
-
615
- ---
616
-
617
- ## 17. Extensions
618
-
619
- ### CometChatPollsBubble
620
- Renders poll messages.
621
-
622
- ### CometChatStickerKeyboard
623
- Sticker picker keyboard.
624
-
625
- ### CometChatLinkPreviewBubble
626
- Renders URL link previews.
627
-
628
- ---
629
-
630
- ## 19. Additional v5 components
631
-
632
- These components ship in `CometChatUIKitSwift` v5 and appear in the docs nav. Verify symbols against the kit source before use — never invent properties.
633
-
634
- ### 19.1 CometChatSearch
635
-
636
- A `UIViewController` that searches across conversations and messages, with filter chips (Unread, Groups, Photos, Videos, Links, Documents, Audio). Push it inside a `UINavigationController` — it installs its own `UISearchController` into `navigationItem`.
637
-
638
- **Usage:**
639
- ```swift
640
- let searchVC = CometChatSearch()
641
- searchVC.set(searchIn: [.conversations, .messages]) // SearchScope
642
- searchVC.set(onConversationClicked: { conversation, indexPath in
643
- // navigate to the conversation
644
- })
645
- searchVC.set(onMessageClicked: { message in
646
- // jump to the message
647
- })
648
- navigationController?.pushViewController(searchVC, animated: true)
649
- ```
650
-
651
- To scope a search to a single user or group, set `searchVC.user` or `searchVC.group` before pushing.
652
-
653
- **Key Properties:**
654
- | Property | Type | Description |
655
- |---|---|---|
656
- | `style` | `SearchStyle` | Visual styling |
657
- | `searchScopes` | `[SearchScope]` | `.conversations`, `.messages` (also via `set(searchIn:)`) |
658
- | `user` | `User?` | Scope search to one user |
659
- | `group` | `Group?` | Scope search to one group |
660
- | `hideUserStatus` | `Bool` | Hide online/offline indicator |
661
- | `hideGroupType` | `Bool` | Hide private/protected group icon |
662
- | `disableTyping` | `Bool` | Disable typing indicators |
663
-
664
- **Callbacks:**
665
- | Callback | Method | Description |
666
- |---|---|---|
667
- | `onConversationClicked` | `set(onConversationClicked:)` | Conversation result tapped |
668
- | `onMessageClicked` | `set(onMessageClicked:)` | Message result tapped |
669
-
670
- Filter configuration: `set(searchFilters:initialFilter:)` (takes `[SearchFilter]`).
671
-
672
- ---
673
-
674
- ### 19.2 CometChatNotificationFeed
675
-
676
- A `UIViewController` (subclass of `CometChatListBase`) that renders an **in-app** notification feed — a scrollable list of `NotificationFeedItem` cards with category filter chips and unread counts. This is the in-app feed UI; it is **distinct from push notifications** (see `cometchat-ios-push` for FCM/APNs delivery). Push it inside a `UINavigationController`.
677
-
678
- **Usage:**
679
- ```swift
680
- // tier2-expect-error — CometChatNotificationFeed is verified real in the v5 UI Kit
681
- // source (Components/Notification Feed/), but postdates the 5.1.13 Pods snapshot the
682
- // Tier-2 harness compiles against. A fresh `pod 'CometChatUIKitSwift', '~> 5.1'`
683
- // install resolves a newer 5.x that ships it.
684
- let feedVC = CometChatNotificationFeed()
685
- feedVC.set(showFilterChips: true)
686
- feedVC.set(onItemClick: { feedItem in
687
- // handle the tapped feed item
688
- })
689
- feedVC.set(onActionClick: { feedItem, actionEvent in
690
- // handle a card action button (CometChatCardActionEvent)
691
- })
692
- navigationController?.pushViewController(feedVC, animated: true)
693
- ```
694
-
695
- **Key Properties:**
696
- | Property | Type | Description |
697
- |---|---|---|
698
- | `style` | `NotificationFeedStyle` | Visual styling (chips, cards, badges, timestamps) |
699
- | `showFilterChips` | `Bool` | Show category filter chips (default `true`) |
700
- | `showBackButton` | `Bool` | Show back button (default `true`) |
701
- | `cardThemeMode` | `String` | Card theme mode, e.g. `"auto"` |
702
-
703
- **Callbacks:**
704
- | Callback | Method | Description |
705
- |---|---|---|
706
- | `onItemClick` | `set(onItemClick:)` | Feed item tapped (`NotificationFeedItem`) |
707
- | `onActionClick` | `set(onActionClick:)` | Card action tapped (`CometChatCardActionEvent`) |
708
- | `onError` | `set(onError:)` | Error occurred |
709
-
710
- **Data operations:** `insert(feedItem:at:)`, `remove(feedItemId:)`, `clearList()`, `refresh()`, `size()`, `getFeedItems()`, `getUnreadCount()`. Custom fetch via `set(notificationFeedRequestBuilder:)` and `set(notificationCategoriesRequestBuilder:)`.
711
-
712
- ---
713
-
714
- ### 19.3 CometChatCompactMessageComposer
715
-
716
- A `UIView` — the **compact variant of `CometChatMessageComposer`** (§ 6) — with built-in rich-text formatting (bold/italic/code/blockquote/lists via a `CometChatRichTextToolbar`). Use it where a single-line, space-constrained composer is needed. Same `set(user:)` / `set(group:)` data wiring as the standard composer.
717
-
718
- **Usage:**
719
- ```swift
720
- private lazy var compactComposer: CometChatCompactMessageComposer = {
721
- let composer = CometChatCompactMessageComposer()
722
- composer.translatesAutoresizingMaskIntoConstraints = false
723
- if let user = user {
724
- composer.set(user: user)
725
- } else if let group = group {
726
- composer.set(group: group)
727
- }
728
- composer.set(controller: self)
729
- return composer
730
- }()
731
- ```
732
-
733
- **Key Properties / Configuration:**
734
- | Member | Type | Description |
735
- |---|---|---|
736
- | `style` | `CompactMessageComposerStyle` | Visual styling |
737
- | `set(placeholder:)` | `String` | Placeholder text |
738
- | `set(maxLines:)` | `Int` | Max text length |
739
- | `set(textFormatter:)` | `[CometChatTextFormatter]` | Text formatters (mentions, etc.) |
740
- | `set(controller:)` | `UIViewController` | Hosting controller (call for attachments/sheets) |
741
- | `disable(soundForMessages:)` | `Bool` | Disable message sounds |
742
- | `disable(typingEvents:)` | `Bool` | Disable typing events |
743
- | `disable(mentions:)` | `Bool` | Disable mentions |
744
-
745
- **Callbacks:**
746
- | Callback | Method | Description |
747
- |---|---|---|
748
- | `onSendButtonClick` | `set(onSendButtonClick:)` | Send tapped (`BaseMessage`) |
749
- | `onTextChangedListener` | `set(onTextChangedListener:)` | Text changed (`String`) |
750
- | `onError` | `set(onError:)` | Error occurred |
751
-
752
- **Edit / reply:** `edit(message:)`, `reply(message:)`, `preview(message:mode:)` (`ComposerState`).
753
-
754
- ---
755
-
756
- ### 19.4 CometChatAIAssistanceChatHistory
757
-
758
- A `UIViewController` that lists prior AI-assistant chat sessions (history) for a user or group, with a "New Chat" affordance. Push it inside a `UINavigationController`. (Note the class name spelling: `AIAssistance`; its style struct is `AiAssistantChatHistoryStyle`.)
759
-
760
- **Usage:**
761
- ```swift
762
- let historyVC = CometChatAIAssistanceChatHistory()
763
- historyVC.set(user: user) // or set(group:)
764
- historyVC.onMessageClicked = { message in
765
- // open the selected AI chat
766
- }
767
- historyVC.onNewChatButtonClicked = { user in
768
- // start a new AI chat
769
- }
770
- navigationController?.pushViewController(historyVC, animated: true)
771
- ```
772
-
773
- **Key Properties:**
774
- | Property | Type | Description |
775
- |---|---|---|
776
- | `style` | `AiAssistantChatHistoryStyle` | Visual styling |
777
- | `user` | `User?` | History scope |
778
- | `group` | `Group?` | History scope |
779
- | `hideDateSeparator` | `Bool` | Hide date separators |
780
- | `onMessageClicked` | `((BaseMessage) -> Void)?` | History row tapped |
781
- | `onNewChatButtonClicked` | `((User) -> Void)?` | "New Chat" tapped |
782
-
783
- **Configuration:** `set(user:parentMessage:withParent:)`, `set(group:parentMessage:)`, `set(messagesRequestBuilder:)`, plus `set(onError:)`, `set(onLoad:)`, `set(onEmpty:)`, `set(errorView:)`, `set(emptyView:)`, `set(loadingView:)`.
784
-
785
- ---
786
-
787
- ### 19.5 CometChatThreadedMessageHeader
788
-
789
- A `UIView` that renders the parent message bubble plus the reply count at the top of a thread/reply screen. Compose it above a `CometChatMessageList` (configured with the parent message's thread) inside your own thread VC — analogous to how `CometChatMessageHeader` sits atop a chat screen (§ 4, § 12).
790
-
791
- **Usage:**
792
- ```swift
793
- private lazy var threadHeader: CometChatThreadedMessageHeader = {
794
- let header = CometChatThreadedMessageHeader()
795
- header.translatesAutoresizingMaskIntoConstraints = false
796
- header.set(parentMessage: parentMessage)
797
- header.set(count: parentMessage.replyCount)
798
- header.set(controller: self)
799
- return header
800
- }()
801
- ```
802
-
803
- **Key Properties:**
804
- | Property | Type | Description |
805
- |---|---|---|
806
- | `style` | `ThreadedMessageHeaderStyle` | Visual styling |
807
- | `maxHeight` | `CGFloat` | Max bubble area height (default `250`) |
808
- | `messageAlignment` | `MessageListAlignment` | `.standard` or `.leftAligned` |
809
- | `hideReceipt` | `Bool` | Hide read receipts |
810
- | `hideReplyCount` | `Bool` | Hide the reply count |
811
- | `hideReplyCountBar` | `Bool` | Hide the reply-count bar |
812
-
813
- **Configuration:** `set(parentMessage:)`, `set(count:)`, `incrementCount()`, `reset()`, `set(templates:)`, `add(template:)`, `set(textFormatters:)`, `set(controller:)`.
814
-
815
- ---
816
-
817
- ## 18. SwiftUI Integration
818
-
819
- Wrap UIKit components for SwiftUI:
820
-
821
- ```swift
822
- import SwiftUI
823
- import CometChatUIKitSwift
824
- import CometChatSDK
825
-
826
- struct ConversationsView: UIViewControllerRepresentable {
827
- @Binding var selectedConversation: Conversation?
828
-
829
- func makeUIViewController(context: Context) -> UINavigationController {
830
- let conversationsVC = CometChatConversations()
831
- conversationsVC.set(onItemClick: { conversation, _ in
832
- selectedConversation = conversation
833
- })
834
- return UINavigationController(rootViewController: conversationsVC)
835
- }
836
-
837
- func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {}
838
- }
839
- ```
8
+ version: "1.0.0"
9
+ tags: "cometchat ios components swift uikit v5"
10
+ ---
11
+
12
+ ## Companion skills (read first)
13
+ - `cometchat-ios-core` owns install, credentials, `init → login → render` and the golden-path chat surface. This skill ADDS the per-component catalogue; it never restates core's setup. Fetch exact API via `cometchat-ios-core/references/docs-map.md`.
14
+
15
+ ## Use this skill when
16
+ Choosing a component, or customising one: "what shows the member list?", "put a badge on the conversation row", "swap the message bubble".
17
+
18
+ ## The catalogue (catalog-verified nothing else exists)
19
+ | Component | For |
20
+ |---|---|
21
+ | `CometChatConversations` | Recent-chats list · the usual entry point |
22
+ | `CometChatMessageHeader` · `CometChatMessageList` · `CometChatCompactMessageComposer` | The chat screen — **you compose these three yourself** |
23
+ | `CometChatUsers` · `CometChatGroups` · `CometChatGroupMembers` | Pickers and rosters |
24
+ | `CometChatSearch` | Global search over conversations and messages |
25
+ | `CometChatThreadedMessageHeader` | Thread parent header |
26
+ | `CometChatCallButtons` · `CometChatIncomingCall` · `CometChatOngoingCall` · `CometChatCallLogs` | Calling → `cometchat-ios-calls` |
27
+ | `CometChatAvatar` · `CometChatBadge` · `CometChatStatusIndicator` · `CometChatDate` · `CometChatReceipt` | Base building blocks |
28
+ | `CometChatMessageInformation` · `CometChatAIAssistanceChatHistory` | Per-message detail · AI history |
29
+ | `CometChatScopeChange` | Change a member's role. `set(group:groupMember:)`, `options: [(String, CometChat.MemberScope)]` (property). PRESENT it as a sheet — its Cancel calls `dismiss()`, so pushing it strands the user. `CometChatGroupMembers` already presents it on row tap. |
30
+
31
+ > **There is NO composite component.** `CometChatMessages`, `CometChat{Users,Groups,Conversations}WithMessages`, `CometChatAddMembers`, `CometChatMessageHeaderOption` are v4 or non-existent — never emit them. If a symbol is not in `catalogs/ios-v5.json`, it does not exist in v5, whatever a page says.
32
+
33
+ ## Three API shapes — get this right or nothing compiles
34
+ 1. **Setters** return `Self` and are chainable: `set(user:)`, `set(onItemClick:)`, `set(subtitle:)`.
35
+ 2. **Properties** are assigned: `list.avatarStyle = …`, `conversations.onSearchClick = { }`, `groups.onSelectedItemProceed = { }`.
36
+ 3. **Named setters** `setXxx(xxx:)` with the label repeated: `CometChatMessageInformation` uses `setSubtitle(subtitle:)`, `setBubbleView(bubbleView:)`, `setListItemView(listItemView:)`, `setOnError(onError:)`. Writing them in shape-1 form (`set(subtitle:)`) does not compile on that component.
37
+ Which is which is **per component, and the kit is not consistent** — `CometChatConversations` has `set(subtitleView:)`/`set(trailView:)` while `CometChatUsers` and `CometChatGroups` have `set(subtitle:)`/`set(trailingView:)`, and `CometChatGroupMembers` uses the Conversations spelling. **Never generalise a name across components — fetch the component's `.md` twin.**
38
+
39
+ ## Where custom UI goes — IN the component's slot, never beside it
40
+ Every list component exposes: `set(listItemView:)` (whole row) · `set(leadingView:)` · `set(titleView:)` · subtitle · trailing · `set(options:)` (swipe/overflow actions). Use these instead of building your own row above the list.
41
+ Empty/error/loading are **assignable views** inherited from `CometChatListBase`: `emptyStateView`, `errorStateView`, `loadingView`, plus `emptyStateTitleText` / `emptyStateSubTitleText` to retitle the built-in one. `CometChatSearch` is the exception — it does NOT inherit `CometChatListBase`, so it has none of that chrome; it uses `set(emptyView:)` / `set(errorView:)` / `set(loadingView:)` instead.
42
+
43
+ ## Gotchas
44
+ - **`set(controller:)` on any component that presents something** (header, list, composer) or its built-in affordances render and do nothing.
45
+ - **`CometChatAvatar` — use `setAvatar(avatarUrl:with:)`. `set(image:)` and `init(image:)` compile but render NOTHING.** There is no `set(user:)`. Measured on 5.1.19: an avatar given a `UIImage` through either `set(image:)` or `init(image:)` draws an empty circle — the image never appears, with no warning and no error, because the kit paints its own content over it. `setAvatar(avatarUrl:with:)` is the working path, and its `with:` name renders initials when no URL loads. There is also **no no-arg init**: `CometChatAvatar()` does not compile — construct with `CometChatAvatar(image: nil)` or `CometChatAvatar(frame:)` and then call `setAvatar`.
46
+ - **Search slots are per result TYPE**: `set(listItemViewForMessage:)` plus `…ForImage/Video/Audio/Document/Link/Conversation`. There are no `*ForMessage` granular (title/subtitle/leading/trailing) slots — those exist for conversations only, as properties.
47
+
48
+ ## Verify it works
49
+ The component renders at full size, its custom slot appears in the right place (inside the row, not above the list), and every rendered control does something when tapped.