@cometchat/skills 4.4.2 → 5.0.1

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