@cometchat/skills 4.4.2 → 5.0.0

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