@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,738 +1,96 @@
1
1
  ---
2
2
  name: cometchat-flutter-v6-customization
3
- description: >
4
- Customize CometChat Flutter UIKit v6 beyond defaults — four tiers: props/view slots,
5
- request builders, text formatters + message templates, and BubbleFactory/DataSource.
6
- Use when the user wants custom bubbles, custom headers, custom list items, custom
7
- message actions, or custom message types.
3
+ description: "Theme and brand the Flutter v6 UI Kit — light/dark mode, the CometChatColorPalette / CometChatTypography / CometChatSpacing theme extensions, per-widget style objects, and view slots. Triggers: 'change chat colors flutter', 'dark mode chat flutter', 'match my brand flutter', 'customize cometchat theme flutter', 'override message bubble styles'."
8
4
  license: "MIT"
9
- compatibility: "cometchat_chat_uikit ^6.0.1"
5
+ compatibility: "Flutter >=3.38.9; cometchat_chat_uikit ^6 (6.1.x, verified 6.1.0)"
10
6
  metadata:
11
7
  author: "CometChat"
12
- version: "3.0.0"
13
- tags: "cometchat flutter customization bubbles templates formatters datasource"
8
+ version: "1.0.0"
9
+ tags: "cometchat flutter customization theming theme-extension styles v6"
14
10
  ---
15
11
 
16
- > **Ground truth:** `cometchat_chat_uikit: ^6.0` — pub-cache source + `ui-kit/flutter`. **Official docs:** https://www.cometchat.com/docs/ui-kit/flutter/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.
12
+ > **Ground truth:** theming is Flutter's own `ThemeExtension` mechanism `CometChatColorPalette`, `CometChatTypography`, `CometChatSpacing`, all catalog-verified against 6.1.0. The exhaustive token list is FETCHED from the docs (`theme-introduction` · `color-resources` · `component-styling` · `message-bubble-styling` via `../cometchat-flutter-v6-core/references/docs-map.md`) do NOT bake it.
17
13
 
18
- # CometChat Flutter UIKit v6 — Customization Guide
14
+ ## Companion skills (read first)
15
+ - `cometchat-flutter-v6-core` — install, credentials, `init→login→render`. This skill ASSUMES it.
16
+ - `cometchat-flutter-v6-components` — the widget catalog whose style objects and slots this skill sets.
19
17
 
20
- Four tiers of customization, from lightest to deepest.
18
+ ## Use this skill when
19
+ Branding or theming: colors, fonts, light/dark, or per-widget style overrides.
21
20
 
22
- ## 1. Four-Tier Customization Model
21
+ ## Prerequisites & install
22
+ Covered by core. No new package.
23
23
 
24
- | Tier | Mechanism | Scope | When to Use |
25
- |------|-----------|-------|-------------|
26
- | 1 | Props & View Slots | Per-component UI overrides | Custom list items, subtitles, trailing widgets, headers |
27
- | 2 | Request Builders | Data filtering & pagination | Filter conversations, users, groups, messages, group members |
28
- | 3 | Text Formatters & Message Templates | Message rendering & actions | Custom text styling, custom long-press options, custom bubble slots |
29
- | 4 | BubbleFactory & DataSource | New message types | Location bubbles, poll bubbles, any custom `category_type` |
30
-
31
- Start at Tier 1. Move deeper only when the lighter tier can't solve the problem.
32
-
33
- ## 2. Tier 1: Props & View Slots
34
-
35
- Every list-based component exposes view slot callbacks that let you replace individual parts of each list item without rebuilding the entire widget.
36
-
37
- ### CometChatConversations
38
-
39
- ```dart
40
- CometChatConversations(
41
- // Replace the entire list item
42
- listItemView: (Conversation conversation) => MyCustomConversationTile(conversation),
43
-
44
- // Replace individual slots
45
- subtitleView: (BuildContext context, Conversation conversation) {
46
- final last = conversation.lastMessage;
47
- final preview = last is TextMessage ? last.text : '';
48
- return Text(preview);
49
- },
50
- trailingView: (Conversation conversation) =>
51
- Icon(Icons.chevron_right),
52
- leadingView: (BuildContext context, Conversation conversation) =>
53
- CircleAvatar(child: Text(conversation.conversationWith?.name?[0] ?? '')),
54
- titleView: (BuildContext context, Conversation conversation) =>
55
- Text(conversation.conversationWith?.name ?? '', style: TextStyle(fontWeight: FontWeight.bold)),
56
-
57
- // State views
58
- emptyStateView: (context) => Center(child: Text('No conversations yet')),
59
- errorStateView: (context) => Center(child: Text('Something went wrong')),
60
- loadingStateView: (context) => Center(child: CircularProgressIndicator()),
61
- )
62
- ```
63
-
64
- ### CometChatUsers
65
-
66
- ```dart
67
- CometChatUsers(
68
- listItemView: (User user) => MyCustomUserTile(user),
69
- subtitleView: (BuildContext context, User user) => Text(user.status ?? ''),
70
- trailingView: (BuildContext context, User user) => Icon(Icons.message),
71
- leadingView: (BuildContext context, User user) => CometChatAvatar(name: user.name),
72
- titleView: (BuildContext context, User user) => Text(user.name),
73
- )
74
- ```
75
-
76
- ### CometChatGroups
77
-
78
- ```dart
79
- CometChatGroups(
80
- listItemView: (Group group) => MyCustomGroupTile(group),
81
- subtitleView: (BuildContext context, Group group) =>
82
- Text('${group.membersCount} members'),
83
- trailingView: (BuildContext context, Group group) => Icon(Icons.arrow_forward),
84
- leadingView: (BuildContext context, Group group) => CometChatAvatar(name: group.name),
85
- titleView: (BuildContext context, Group group) => Text(group.name),
86
- )
87
- ```
88
-
89
- ### CometChatMessageHeader
90
-
91
- ```dart
92
- CometChatMessageHeader(
93
- user: user,
94
- group: group,
95
- subtitleView: (Group? group, User? user, BuildContext context) =>
96
- Text('Custom subtitle'),
97
- trailingView: (User? user, Group? group, BuildContext context) => [
98
- IconButton(icon: Icon(Icons.search), onPressed: () {}),
99
- IconButton(icon: Icon(Icons.info_outline), onPressed: () {}),
100
- ],
101
- listItemView: (Group? group, User? user, BuildContext context) =>
102
- MyCustomHeaderWidget(user: user, group: group),
103
- titleView: null, // use default
104
- leadingStateView: null, // use default
105
- )
106
- ```
107
-
108
- ### CometChatMessageList
109
-
110
- ```dart
111
- CometChatMessageList(
112
- user: user,
113
- group: group,
114
- headerView: (context, {user, group, parentMessageId}) => MyCustomListHeader(),
115
- footerView: (context, {user, group, parentMessageId}) => MyCustomListFooter(),
116
- emptyStateView: (context) => Center(child: Text('Start a conversation')),
117
- emptyChatGreetingView: (context) => WelcomeWidget(),
118
- loadingStateView: (context) => ShimmerList(),
119
- errorStateView: (context) => RetryWidget(),
120
- )
121
- ```
122
-
123
- ### CometChatMessageComposer
124
-
125
- ```dart
126
- CometChatMessageComposer(
127
- user: user,
128
- group: group,
129
- headerView: (context, user, group, id) => ReplyPreviewBanner(),
130
- footerView: (context, user, group, id) => SuggestedActionsBar(),
131
- auxiliaryButtonView: (context, user, group, id) =>
132
- IconButton(icon: Icon(Icons.gif), onPressed: () {}),
133
- secondaryButtonView: (context, user, group, id) =>
134
- IconButton(icon: Icon(Icons.attach_file), onPressed: () {}),
135
- sendButtonView: Icon(Icons.send, color: Colors.blue),
136
- )
137
- ```
138
-
139
- ## 3. Tier 2: Request Builders
140
-
141
- Override the SDK request builder to control what data is fetched.
142
-
143
- ### ConversationsRequestBuilder
144
-
145
- ```dart
146
- CometChatConversations(
147
- conversationsRequestBuilder: ConversationsRequestBuilder()
148
- ..limit = 30
149
- ..conversationType = ConversationType.user // only 1-on-1 chats
150
- ..withTags = true
151
- ..tags = ['vip'],
152
- )
153
- ```
154
-
155
- ### MessagesRequestBuilder
156
-
157
- ```dart
158
- CometChatMessageList(
159
- user: user,
160
- messagesRequestBuilder: MessagesRequestBuilder()
161
- ..uid = user.uid
162
- ..limit = 50
163
- ..hideDeleted = true
164
- ..searchKeyword = 'invoice'
165
- ..categories = [MessageCategoryConstants.message]
166
- ..types = [MessageTypeConstants.text, MessageTypeConstants.image],
167
- )
168
- ```
169
-
170
- ### UsersRequestBuilder
171
-
172
- ```dart
173
- CometChatUsers(
174
- usersRequestBuilder: UsersRequestBuilder()
175
- ..limit = 30
176
- ..friendsOnly = true
177
- ..searchKeyword = 'john'
178
- ..roles = ['admin', 'moderator'],
179
- )
180
- ```
181
-
182
- ### GroupsRequestBuilder
183
-
184
- ```dart
185
- CometChatGroups(
186
- groupsRequestBuilder: GroupsRequestBuilder()
187
- ..limit = 30
188
- ..joinedOnly = true
189
- ..searchKeyword = 'team'
190
- ..withTags = true
191
- ..tags = ['project-alpha'],
192
- )
193
- ```
194
-
195
- ### GroupMembersRequestBuilder
196
-
197
- ```dart
198
- CometChatGroupMembers(
199
- group: group,
200
- groupMembersRequestBuilder: GroupMembersRequestBuilder(group.guid)
201
- ..limit = 30
202
- ..scopes = [CometChatMemberScope.admin, CometChatMemberScope.moderator],
203
- )
204
- ```
205
-
206
- ## 4. Tier 3: Text Formatters & Message Templates
207
-
208
- ### Text Formatters
209
-
210
- `CometChatTextFormatter` is the abstract base class. Subclass it to create custom text styling in both the message list and the composer.
211
-
212
- Built-in formatters:
213
-
214
- | Formatter | Purpose |
215
- |-----------|---------|
216
- | `CometChatMentionsFormatter` | @mention users with suggestion list |
217
- | `MarkdownTextFormatter` | Bold, italic, strikethrough, code, links, lists |
218
- | `CometChatUrlFormatter` | Clickable URLs |
219
- | `CometChatPhoneNumberFormatter` | Clickable phone numbers |
220
- | `CometChatEmailFormatter` | Clickable email addresses |
221
-
222
- Key properties on `CometChatTextFormatter`:
223
-
224
- ```dart
225
- abstract class CometChatTextFormatter implements Formatter {
226
- String? trackingCharacter; // e.g. '@' for mentions
227
- RegExp? pattern; // regex to match in text
228
- Function(String?)? onSearch; // called when tracking character typed
229
- bool? showLoadingIndicator;
230
- BaseMessage? message;
231
- User? user;
232
- Group? group;
233
- StreamSink<List<SuggestionListItem>>? suggestionListEventSink;
234
-
235
- void init();
236
- void handlePreMessageSend(BuildContext context, BaseMessage baseMessage);
237
- void onScrollToBottom(TextEditingController textEditingController);
238
- void onChange(TextEditingController textEditingController, String previousText);
239
-
240
- List<AttributedText> buildInputFieldText({...});
241
- List<AttributedText> getAttributedText(String text, BuildContext context, BubbleAlignment? alignment, {...});
242
- TextStyle getMessageBubbleTextStyle(BuildContext context, BubbleAlignment? alignment, {bool forConversation = false});
243
- TextStyle getMessageInputTextStyle(BuildContext context);
244
- }
245
- ```
246
-
247
- Pass the same formatters to both list and composer:
248
-
249
- ```dart
250
- final formatters = [
251
- CometChatMentionsFormatter(user: user, group: group),
252
- MarkdownTextFormatter(),
253
- CometChatUrlFormatter(),
254
- CometChatPhoneNumberFormatter(),
255
- CometChatEmailFormatter(),
256
- ];
257
-
258
- CometChatMessageList(user: user, textFormatters: formatters)
259
- CometChatMessageComposer(user: user, textFormatters: formatters)
260
- ```
261
-
262
- ### Message Templates
263
-
264
- `CometChatMessageTemplate` controls how a message type renders in the bubble and what long-press options appear.
265
-
266
- ```dart
267
- class CometChatMessageTemplate {
268
- CometChatMessageTemplate({
269
- required this.type, // e.g. 'text', 'image', or 'location'
270
- required this.category, // e.g. 'message' or 'custom'
271
- this.bubbleView, // replaces the ENTIRE bubble
272
- this.headerView, // top of bubble (sender name area)
273
- this.contentView, // main content area
274
- this.footerView, // below statusInfoView
275
- this.bottomView, // below contentView
276
- this.statusInfoView, // receipts/time area
277
- this.threadView, // thread reply indicator
278
- this.replyView, // quoted-reply preview area (3-arg builder, NO additionalConfigurations)
279
- this.options, // long-press menu options
280
- });
281
- }
282
-
283
- // `replyView` exists on BOTH CometChatMessageTemplate (template-level, signature
284
- // `(BaseMessage, BuildContext, BubbleAlignment)`) AND on CometChatMessageBubble
285
- // (the widget slot). Verified: only the clean_architecture template is exported
286
- // (shared_ui/src/clean_architecture/data/models/cometchat_message_template.dart:79)
287
- // — the legacy shared_ui/src/models/ copy without replyView is NOT exported.
288
- ```
289
-
290
- Override templates on `CometChatMessageList`:
291
-
292
- ```dart
293
- CometChatMessageList(
294
- user: user,
295
- // Replace all templates
296
- templates: [
297
- CometChatMessageTemplate(
298
- type: MessageTypeConstants.text,
299
- category: MessageCategoryConstants.message,
300
- contentView: (message, context, alignment, {additionalConfigurations}) =>
301
- MyCustomTextContent(message: message),
302
- options: (loggedInUser, message, context, group, additionalConfigurations) => [
303
- CometChatMessageOption(
304
- id: 'bookmark',
305
- title: 'Bookmark',
306
- icon: Icon(Icons.bookmark_border, size: 24),
307
- onItemClick: (message, state) {
308
- // handle bookmark
309
- },
310
- ),
311
- ],
312
- ),
313
- ],
314
- // Or add templates alongside defaults
315
- addTemplate: [
316
- CometChatMessageTemplate(
317
- type: 'location',
318
- category: 'custom',
319
- contentView: (message, context, alignment, {additionalConfigurations}) =>
320
- LocationBubbleContent(message: message as CustomMessage),
321
- ),
322
- ],
323
- )
324
- ```
325
-
326
- `CometChatMessageOption` model:
327
-
328
- ```dart
329
- CometChatMessageOption(
330
- id: 'pin', // unique identifier
331
- title: 'Pin Message', // display text
332
- icon: Icon(Icons.push_pin), // leading icon
333
- onItemClick: (BaseMessage message, CometChatMessageListControllerProtocol state) {
334
- // your action
335
- },
336
- messageOptionSheetStyle: CometChatMessageOptionSheetStyle(...),
337
- )
338
- ```
339
-
340
- ### Custom attachment options — the builder REPLACES, so spread the defaults
341
-
342
- `CometChatMessageComposer.attachmentOptions` is a `ComposerActionsBuilder` — `List<CometChatMessageComposerAction> Function(BuildContext, User?, Group?, Map<String,dynamic>? id)`. **Whatever list you return becomes the entire menu**; there is no merge. To add one option while keeping photo/video/audio/file/poll, seed the list from `ComposerAttachmentUtils.getAttachmentOptions(...)`.
343
-
344
- > ⚠️ **`ComposerAttachmentUtils` is NOT exported from the package barrel** (`cometchat_chat_uikit.dart`) — verified by `dart analyze` against published `cometchat_chat_uikit 6.0.1`. The normal `import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';` does **not** expose it; you must add a **deep import** of the internal path:
345
- > ```dart
346
- > import 'package:cometchat_chat_uikit/chat_ui/src/message_composer/utils/composer_attachment_utils.dart';
347
- > ```
348
- > This is an internal (`src/`) path — it works on 6.0.1 but is not part of the public API contract, so it may move across patch versions. There is no public accessor for the default attachment list in V6; this deep import is the only way to seed the defaults.
24
+ ## Customization mechanism (BAKED v6)
25
+ Three tiers, in the order you should reach for them:
349
26
 
27
+ **1. App-wide theme — `ThemeExtension` on your `ThemeData`.** This is the main lever; it restyles every CometChat widget at once.
350
28
  ```dart
351
29
  import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
352
- import 'package:cometchat_chat_uikit/chat_ui/src/message_composer/utils/composer_attachment_utils.dart'; // ComposerAttachmentUtils (not barrel-exported)
353
-
354
- CometChatMessageComposer(
355
- attachmentOptions: (context, user, group, id) => [
356
- ...ComposerAttachmentUtils.getAttachmentOptions(context, id, null), // defaults
357
- CometChatMessageComposerAction(
358
- id: 'location',
359
- title: 'Send Location',
360
- onItemClick: (ctx, u, g) { /* pick + send (below) */ },
361
- ),
30
+ import 'package:flutter/material.dart';
31
+
32
+ final cometchatLight = ThemeData(
33
+ fontFamily: 'Inter',
34
+ extensions: [
35
+ CometChatColorPalette(primary: const Color(0xFFF76808)),
36
+ CometChatTypography(),
37
+ CometChatSpacing(),
362
38
  ],
363
- )
364
- ```
365
-
366
- ```dart
367
- // ❌ returns ONLY your option — every default attachment disappears
368
- attachmentOptions: (context, user, group, id) => [locationAction],
369
- ```
370
-
371
- ### Sending a custom message — use the UIKit path, not the raw SDK
372
-
373
- A `contentView`/`BubbleFactory` only renders the type; send the message with **`CometChatUIKit.sendCustomMessage(...)`**, not `CometChat.sendCustomMessage(...)`. The UIKit wrapper sets `muid` + sender and fires `ccMessageSent`, which makes the new bubble **append** to the open list. The raw SDK call skips those, giving a recipient error and a realtime bubble that **replaces** an existing one (no `muid` dedup).
374
-
375
- ```dart
376
- final message = CustomMessage(
377
- receiverUid: user.uid,
378
- receiverType: ReceiverTypeConstants.user, // or .group
379
- type: 'location', // matches the template type
380
- customData: {'lat': 19.07, 'lng': 72.87},
381
39
  );
382
- // ✅ kit path — sets muid + sender, emits ccMessageSent → list appends
383
- await CometChatUIKit.sendCustomMessage(message);
384
- // ❌ await CometChat.sendCustomMessage(message); // recipient error + realtime replace
385
40
  ```
386
41
 
387
- Verified (v6, `dart analyze` vs published 6.0.1): `ComposerAttachmentUtils.getAttachmentOptions(BuildContext, Map?, AdditionalConfigurations?)` (composer_attachment_utils.dart:254 **NOT barrel-exported; requires the deep import above**), `CometChatUIKit.sendCustomMessage(CustomMessage)`, `CustomMessage(receiverUid:, receiverType:, type:, customData:)`, `CometChatMessageComposerAction(id:, title:, icon:, style:, onItemClick:(BuildContext,User?,Group?))` (cometchat_message_composer_action.dart:23), `CometChatMessageOption(id:, title:, icon:, onItemClick:(BaseMessage,CometChatMessageListControllerProtocol), messageOptionSheetStyle:)` (cometchat_message_option.dart:21), `CometChatMessageTemplate({required type, required category, bubbleView, headerView, contentView, footerView, bottomView, statusInfoView, threadView, replyView, options})` (clean_architecture/data/models/cometchat_message_template.dart:23), `CometChatMessageList(templates:, addTemplate:)` (chat_ui/.../message_list/widgets/cometchat_message_list.dart:46-47).
388
-
389
- ## 5. Tier 4: BubbleFactory & DataSource
390
-
391
- ### BubbleFactory
392
-
393
- The deepest customization for rendering message content. Each factory handles one `category_type` key.
394
-
42
+ **2. Light / darkFlutter's own switching, nothing CometChat-specific.** Supply both themes and let `themeMode` decide; `ThemeMode.system` follows the OS, which is the right default for a fresh app.
395
43
  ```dart
396
- /// Abstract factory — one per message type.
397
- abstract class BubbleFactory<T extends BaseMessage> {
398
- Widget build(
399
- BuildContext context,
400
- T message,
401
- BubbleAlignment alignment, {
402
- CometChatColorPalette? colorPalette,
403
- CometChatTypography? typography,
404
- CometChatSpacing? spacing,
405
- });
406
-
407
- /// Returns "category_type" key, or "deleted" for deleted messages.
408
- static String getFactoryKey(BaseMessage message);
409
-
410
- /// Creates a key from category + type strings.
411
- static String createKey(String category, String type) => '${category}_$type';
412
- }
413
- ```
414
-
415
- ### DefaultBubbleFactories
416
-
417
- The built-in registry:
418
-
419
- ```dart
420
- class DefaultBubbleFactories {
421
- static Map<String, BubbleFactory> getDefaults({
422
- List<CometChatTextFormatter>? textFormatters,
423
- CometChatTextBubbleStyle? incomingTextStyle,
424
- CometChatTextBubbleStyle? outgoingTextStyle,
425
- CometChatImageBubbleStyle? imageStyle,
426
- CometChatVideoBubbleStyle? videoStyle,
427
- CometChatAudioBubbleStyle? audioStyle,
428
- CometChatFileBubbleStyle? fileStyle,
429
- });
430
- }
431
- ```
432
-
433
- Default keys registered:
434
- - `message_text` → `TextBubbleFactory`
435
- - `message_image` → `ImageBubbleFactory`
436
- - `message_video` → `VideoBubbleFactory`
437
- - `message_audio` → `AudioBubbleFactory`
438
- - `message_file` → `FileBubbleFactory`
439
- - `deleted` → `DeletedBubbleFactory`
440
-
441
- ### Creating a Custom BubbleFactory
442
-
443
- Example: a location message bubble.
444
-
445
- ```dart
446
- class LocationBubbleFactory extends BubbleFactory<CustomMessage> {
447
- @override
448
- Widget build(
449
- BuildContext context,
450
- CustomMessage message,
451
- BubbleAlignment alignment, {
452
- CometChatColorPalette? colorPalette,
453
- CometChatTypography? typography,
454
- CometChatSpacing? spacing,
455
- }) {
456
- final data = message.customData;
457
- final lat = data?['latitude'] as double? ?? 0;
458
- final lng = data?['longitude'] as double? ?? 0;
44
+ import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
45
+ import 'package:flutter/material.dart';
459
46
 
460
- return GestureDetector(
461
- onTap: () => _openMap(lat, lng),
462
- child: Column(
463
- mainAxisSize: MainAxisSize.min,
464
- children: [
465
- Image.network(
466
- 'https://maps.googleapis.com/maps/api/staticmap?center=$lat,$lng&zoom=15&size=300x200&key=YOUR_KEY',
467
- width: 240,
468
- height: 160,
469
- fit: BoxFit.cover,
470
- ),
471
- Padding(
472
- padding: EdgeInsets.all(spacing?.padding2 ?? 8),
473
- child: Text(
474
- '📍 $lat, $lng',
475
- style: typography?.body?.regular,
476
- ),
477
- ),
478
- ],
47
+ Widget app(Widget home) => MaterialApp(
48
+ theme: ThemeData(extensions: [CometChatColorPalette(primary: const Color(0xFFF76808))]),
49
+ darkTheme: ThemeData.dark().copyWith(
50
+ extensions: [CometChatColorPalette(primary: const Color(0xFFF76808))],
479
51
  ),
52
+ themeMode: ThemeMode.system, // follow the device setting
53
+ home: home,
480
54
  );
481
- }
482
- }
483
- ```
484
-
485
- ### Registering Custom Factories
486
-
487
- Merge your custom factories with the defaults using `CometChatMessageTemplate.addTemplate` on the message list, or by providing a custom `templates` list that includes a `contentView` for your custom type.
488
-
489
- `CometChatMessageBubble` is a pure slot widget — it accepts pre-built `contentView`, `headerView`, `footerView`, `replyView`, `threadView`, `bottomView`, `statusInfoView`, and `leadingView` widgets. It does NOT resolve message types via a factory registry; factory resolution happens one layer up, inside `CometChatMessageList`, which picks the right template based on `category_type` and invokes that template's `contentView` builder.
490
-
491
- ```dart
492
- // Using addTemplate to register a custom type alongside defaults
493
- CometChatMessageList(
494
- user: user,
495
- addTemplate: [
496
- CometChatMessageTemplate(
497
- type: 'location',
498
- category: 'custom',
499
- contentView: (message, context, alignment, {additionalConfigurations}) {
500
- final factory = LocationBubbleFactory();
501
- return factory.build(context, message as CustomMessage, alignment);
502
- },
503
- ),
504
- ],
505
- )
506
- ```
507
-
508
- ### DataSource Pattern
509
-
510
- > **V6 ≠ V5 here.** V6 has **no** `ChatConfigurator`, `DataSource`/`DataSourceDecorator`, `ExtensionsDataSource`, `CometChatUIKit.getDataSource()`, or `getAllMessageTemplates()` override-and-register flow — that GetX-era framework is **V5-only** (verified absent in the v6 clone). In V6 you merge custom templates with the widget-level `addTemplate:` prop and customize data fetching by supplying a custom BLoC. Don't carry the V5 decorator recipe over.
511
-
512
- Each component follows Clean Architecture with its own data source layer. The data sources abstract SDK calls behind interfaces:
513
-
514
- ```dart
515
- // Example: ConversationsRemoteDataSource (full real interface)
516
- abstract class ConversationsRemoteDataSource {
517
- Future<List<Conversation>> getConversations({int limit = 30, String? fromId});
518
- Future<Conversation?> getConversation(String conversationWith, String conversationType);
519
- Future<void> deleteConversation(String conversationWith, String conversationType);
520
- Future<void> markMessageAsRead(BaseMessage message);
521
- Future<Conversation?> updateConversation(BaseMessage message);
522
- }
523
-
524
- class ConversationsRemoteDataSourceImpl implements ConversationsRemoteDataSource {
525
- // Delegates to CometChat SDK — must implement ALL five methods above.
526
- }
527
- ```
528
-
529
- To customize data fetching, provide a custom BLoC instance:
530
-
531
- ```dart
532
- CometChatConversations(
533
- conversationsBloc: MyCustomConversationsBloc(),
534
- )
535
-
536
- CometChatUsers(
537
- usersBloc: MyCustomUsersBloc(),
538
- )
539
-
540
- CometChatGroups(
541
- groupsBloc: MyCustomGroupsBloc(),
542
- )
543
-
544
- CometChatMessageList(
545
- messageListBloc: MyCustomMessageListBloc(),
546
- )
547
- ```
548
-
549
- ## 6. Style Overrides
550
-
551
- Every component has a `CometChat{Component}Style` class that extends `ThemeExtension`. Styles use a `merge()` pattern — your overrides layer on top of theme defaults.
552
-
553
- ### Pattern
554
-
555
- ```dart
556
- @immutable
557
- class CometChatTextBubbleStyle extends ThemeExtension<CometChatTextBubbleStyle> {
558
- const CometChatTextBubbleStyle({
559
- this.textStyle,
560
- this.textColor,
561
- this.backgroundColor,
562
- this.border,
563
- this.borderRadius,
564
- this.messageBubbleAvatarStyle,
565
- this.messageBubbleDateStyle,
566
- this.messageBubbleBackgroundImage,
567
- this.senderNameTextStyle,
568
- this.messageReceiptStyle,
569
- // ...
570
- });
571
-
572
- // Factory to get theme-registered instance
573
- static CometChatTextBubbleStyle of(BuildContext context) => const CometChatTextBubbleStyle();
574
-
575
- // Merge your overrides on top of theme defaults
576
- CometChatTextBubbleStyle merge(CometChatTextBubbleStyle? style);
577
-
578
- // copyWith for selective overrides
579
- CometChatTextBubbleStyle copyWith({...});
580
- }
581
- ```
582
-
583
- ### Usage
584
-
585
- ```dart
586
- CometChatConversations(
587
- conversationsStyle: CometChatConversationsStyle(
588
- backgroundColor: Colors.grey[100],
589
- titleTextStyle: TextStyle(fontSize: 18, fontWeight: FontWeight.w600),
590
- ),
591
- )
592
-
593
- CometChatMessageHeader(
594
- user: user,
595
- messageHeaderStyle: CometChatMessageHeaderStyle(
596
- backgroundColor: colorPalette.background1,
597
- ),
598
- )
599
-
600
- CometChatMessageList(
601
- user: user,
602
- style: CometChatMessageListStyle(
603
- backgroundColor: Colors.white,
604
- ),
605
- )
606
-
607
- CometChatMessageComposer(
608
- user: user,
609
- messageComposerStyle: CometChatMessageComposerStyle(
610
- backgroundColor: Colors.white,
611
- borderRadius: BorderRadius.circular(24),
612
- ),
613
- )
614
- ```
615
-
616
- ### Theme Caching
617
-
618
- For performance, parent widgets cache theme lookups in `didChangeDependencies()` and pass them to children via optional `colorPalette`, `spacing`, `typography` params. This avoids expensive `CometChatThemeHelper` lookups during keyboard animation rebuilds.
619
-
620
- ```dart
621
- // Parent caches once
622
- late CometChatColorPalette _colorPalette;
623
- bool _themeInitialized = false;
624
-
625
- @override
626
- void didChangeDependencies() {
627
- super.didChangeDependencies();
628
- if (!_themeInitialized) {
629
- _colorPalette = CometChatThemeHelper.getColorPalette(context);
630
- _themeInitialized = true;
631
- }
632
- }
633
-
634
- // Pass to children — CometChatMessageBubble exposes colorPalette + spacing only
635
- CometChatMessageBubble(
636
- colorPalette: _colorPalette, // pre-cached, zero lookups in child
637
- spacing: _spacing,
638
- // For typography, read CometChatThemeHelper.getTypography(context) in the
639
- // parent and use it directly inside the slot widgets you pass in.
640
- )
641
- ```
642
-
643
- ## 7. Anti-Patterns
644
-
645
- ```dart
646
- // ❌ WRONG — different formatters for list and composer
647
- CometChatMessageList(textFormatters: [MarkdownTextFormatter()])
648
- CometChatMessageComposer(textFormatters: []) // inconsistent rendering
649
-
650
- // ✅ CORRECT — same formatter list
651
- final formatters = [CometChatMentionsFormatter(user: user), MarkdownTextFormatter()];
652
- CometChatMessageList(textFormatters: formatters)
653
- CometChatMessageComposer(textFormatters: formatters)
654
- ```
655
-
656
- ```dart
657
- // ❌ WRONG — calling CometChatThemeHelper in build() of a frequently-rebuilt widget
658
- @override
659
- Widget build(BuildContext context) {
660
- final colorPalette = CometChatThemeHelper.getColorPalette(context); // expensive every rebuild
661
- return Container(color: colorPalette.primary);
662
- }
663
-
664
- // ✅ CORRECT — cache in didChangeDependencies, use _themeInitialized flag
665
55
  ```
56
+ > Unlike the web kit (a `theme` prop + CSS variables), Flutter has no CometChat-specific mode switch — **do not invent one**. Register the palette on BOTH themes or dark mode falls back to defaults.
666
57
 
58
+ **3. Per-widget style objects — scope one surface only.** Every widget takes a `*Style` object: `CometChatConversationsStyle` · `CometChatMessageHeaderStyle` · `CometChatMessageListStyle` · `CometChatMessageComposerStyle` · `CometChatThreadedHeaderStyle` · `CometChatSearchStyle` · `CometChatIncomingMessageBubbleStyle` / `CometChatOutgoingMessageBubbleStyle` · `CometChatCallLogsStyle`.
667
59
  ```dart
668
- // ❌ WRONG — overriding templates without providing options (loses default long-press menu)
669
- CometChatMessageList(
670
- templates: [
671
- CometChatMessageTemplate(
672
- type: MessageTypeConstants.text,
673
- category: MessageCategoryConstants.message,
674
- contentView: (msg, ctx, align, {additionalConfigurations}) => Text(msg is TextMessage ? msg.text : ''),
675
- // options: null — no long-press menu at all!
676
- ),
677
- ],
678
- )
679
-
680
- // ✅ CORRECT — use addTemplate to add new types, or include options when overriding templates
681
- ```
682
-
683
- ```dart
684
- // ❌ WRONG — creating a BubbleFactory that ignores the colorPalette/spacing params
685
- class BadFactory extends BubbleFactory<CustomMessage> {
686
- @override
687
- Widget build(BuildContext context, CustomMessage message, BubbleAlignment alignment, {
688
- CometChatColorPalette? colorPalette,
689
- CometChatTypography? typography,
690
- CometChatSpacing? spacing,
691
- }) {
692
- return Container(color: Colors.blue); // hardcoded color, ignores theme
693
- }
694
- }
695
-
696
- // ✅ CORRECT — use the passed theme values
697
- return Container(color: colorPalette?.primary ?? Colors.blue);
698
- ```
699
-
700
- ```dart
701
- // ✅ CORRECT on ^6.0.1 — true (or omit; true is the default). The composer
702
- // clamps the keyboard height to viewInsets (kit fix ENG-34434), so true does
703
- // NOT double-compensate.
704
- Scaffold(
705
- resizeToAvoidBottomInset: true,
706
- body: Column(children: [
707
- Expanded(child: CometChatMessageList(user: user)),
708
- CometChatMessageComposer(user: user),
709
- ]),
710
- )
711
-
712
- // ⚠ PRE-6.0.1 ONLY — false was the stopgap before the clamp landed. On ^6.0.1
713
- // this is unnecessary; if you still see a double keyboard gap, upgrade the kit.
714
- Scaffold(
715
- resizeToAvoidBottomInset: false,
716
- body: Column(children: [
717
- Expanded(child: CometChatMessageList(user: user)),
718
- CometChatMessageComposer(user: user),
719
- ]),
720
- )
60
+ import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
61
+ import 'package:flutter/material.dart';
62
+
63
+ Widget themedHeader(User user) => CometChatMessageHeader(
64
+ user: user,
65
+ messageHeaderStyle: const CometChatMessageHeaderStyle(
66
+ backgroundColor: Color(0xFFFFFFFF),
67
+ titleTextColor: Color(0xFF141414),
68
+ subtitleTextColor: Color(0xFF727272),
69
+ onlineStatusColor: Color(0xFF09C26F),
70
+ ),
71
+ );
721
72
  ```
722
-
723
- ## 8. Checklist
724
-
725
- - [ ] Start at Tier 1 (props/view slots) before going deeper
726
- - [ ] Same `textFormatters` list passed to both `CometChatMessageList` and `CometChatMessageComposer`
727
- - [ ] Use `addTemplate` to add new message types alongside defaults (don't replace `templates` unless intentional)
728
- - [ ] Custom `BubbleFactory.build()` uses the passed `colorPalette`/`typography`/`spacing` params, not hardcoded values
729
- - [ ] Style overrides use `merge()` pattern, not constructor replacement
730
- - [ ] Theme lookups cached in `didChangeDependencies()` with `_themeInitialized` flag
731
- - [ ] `Scaffold` containing `CometChatMessageComposer` uses `resizeToAvoidBottomInset: true` (or omits it) on `^6.0.1` composer clamps to `viewInsets` (ENG-34434); `false` is only the pre-6.0.1 stopgap
732
- - [ ] Custom `CometChatMessageOption.onItemClick` handles both `BaseMessage` and the controller protocol
733
- - [ ] Request builders set `limit` to a reasonable value (default 30–50)
734
- - [ ] Mutable `_user`/`_group` state copies passed to UIKit components, not `widget.user`/`widget.group`
735
-
736
- ## Sound (in-app message + call sounds)
737
-
738
- Sound is a customization sub-dimension. The UI Kit plays incoming/outgoing message + call sounds via `CometChatSoundManager` — mute it, swap custom audio, or play a specific sound. The full API + recipe lives in **`cometchat-flutter-v6-theming`** (Sound section). Verify the access path against the installed kit before relying on it.
73
+ > **Style parameter names are per-widget and NOT guessable** — the header uses `titleTextColor`/`onlineStatusColor`, the threaded header uses `bubbleContainerBackGroundColor`/`countTextColor`, search uses `searchBackgroundColor`/`searchBorderRadius`. Fetch the widget's `.md` twin before writing a style block.
74
+ > Message bubbles are themed app-wide through `CometChatIncomingMessageBubbleStyle` / `CometChatOutgoingMessageBubbleStyle` registered as theme extensions — see `message-bubble-styling`.
75
+
76
+ ## Reading theme values in your own widgets
77
+ `CometChatThemeHelper.getColorPalette(context)` (and the typography/spacing equivalents) returns the resolved palette, so custom UI in a slot matches the kit instead of hard-coding hexes.
78
+
79
+ ## Beyond colour the other customization axes (FETCH the page)
80
+ - **View slots** replace any row/section (`customization-view-slots`); custom UI goes IN the slot.
81
+ - **State views** `loadingStateView` / `emptyStateView` / `errorStateView` (`customization-state-views`).
82
+ - **Menu options** add or remove message actions via `CometChatMessageOption` and the template's `options` (`customization-menu-options`). The callback is `onItemClick(message, state)`.
83
+ - **Text formatters** `CometChatMentionsFormatter` and custom `CometChatTextFormatter` subclasses (`customization-text-formatters`, `custom-text-formatter-guide`). A subclass must implement `init`, `getMessageInputTextStyle`, `handlePreMessageSend`, `onChange` and `onScrollToBottom` — the class is abstract.
84
+ - **Message templates** custom message types and bubbles (`message-template`, `-components`).
85
+ - **Sounds** the class is **`SoundManager`**, UN-prefixed (there is no `CometChatSoundManager`), a singleton: `SoundManager().play(sound: Sound.incomingMessage, customSound: "assets/ping.mp3")` / `.stop()`. Compiler-verified vs 6.1.0. It is absent from the catalog only because that tracks `CometChat*` symbols — same as `User`/`Group`. Page: `sound-manager`.
86
+ - **Localization** — via `CometChatLocalize`, the same localization class the other families use: register its delegate in `MaterialApp.localizationsDelegates` and read/override strings through it. Fetch the exact Flutter API from the live `localize` page (`references/docs-map.md` → Localization). **[STAGED — needs the UI Kit change]** `CometChatLocalize` requires a `cometchat_chat_uikit` version that exposes it; the pinned **6.1.0 does not** (it exposes `Translations`). Bump the pin + refresh `catalogs/flutter-v6.json` when that kit ships — until then Flutter localization emitted this way will not compile.
87
+
88
+ ## Common pitfalls (BAKED)
89
+ - **Inventing a CometChat dark-mode switch.** Use `ThemeData` + `themeMode`; register the palette on both themes.
90
+ - **Guessing style parameter names.** They differ per widget — fetch the twin.
91
+ - **Hard-coding colours in a custom slot** instead of reading `CometChatThemeHelper`.
92
+ - **v5 theming APIs** — `CometChatTheme` is now only a `mergeThemeExtensions` helper, not a palette holder; the v5 `CometChatThemeData`/`DataSource` styling path is gone (→ `-migration`).
93
+ - **Restyling by wrapping the widget** rather than passing its style object or slot.
94
+
95
+ ## Verify it works
96
+ The brand colour appears on the surfaces you expect, light and dark both render (toggle the OS setting), custom slot UI matches the kit's palette, and no widget silently kept its default because the palette was registered on only one theme.