@cometchat/skills 4.4.1 → 5.0.0

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