@cometchat/skills 4.4.1 → 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 (489) 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/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. 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.