{"_id":"@contegris/rn-intellicon-chat-sdk","_rev":"11-71d4a16314be603de1d28a31ba633f4b","name":"@contegris/rn-intellicon-chat-sdk","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@contegris/rn-intellicon-chat-sdk@1.0.0","maintainers":[{"name":"devcx9","email":"devcx9@gmail.com"},{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"}],"dist":{"shasum":"5c789faa97ae6cc1444c0ab7752439f2bc480155","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.0.tgz","fileCount":26,"integrity":"sha512-IA821L614mQb7NsbFQXCNswHPqOKPHCOC5gNgET3CeYnrcURZNIgdCZww1dcJtXIOCcMEEeNL30X4wjUZrDfBw==","signatures":[{"sig":"MEUCIQCqQcAy8U20lKGF/teZnJsRzq8Ukc5v2fJOwDdQJwrdlQIgL+5IYrpLlgCvZBZXMLpKSVGyi0x5xBcgm55H7d50MuM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":231020},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.7.0","description":"A React Native SDK for integrating chat functionality into your application.","directories":{"lib":"lib"},"_nodeVersion":"22.1.0","dependencies":{"moment":"^2.30.1","form-data":"^4.0.0","jwt-decode":"^4.0.0","react-native":"^0.74.3","react-native-fs":"^2.20.0","intelli-chat-sdk":"^1.1.6","react-native-video":"^6.3.0","react-native-fast-image":"^8.6.3","react-native-simple-toast":"^3.3.1","react-native-vector-icons":"^10.1.0","react-native-document-picker":"^9.3.0","react-native-gesture-handler":"^2.17.1"},"_hasShrinkwrap":false,"devDependencies":{"@babel/cli":"^7.24.7","@babel/core":"^7.24.7","@babel/preset-env":"^7.24.7","@babel/preset-react":"^7.24.7","@babel/preset-typescript":"^7.24.7","@babel/plugin-transform-runtime":"^7.24.7"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.0_1720695998561_0.033016715942021824","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@contegris/rn-intellicon-chat-sdk@1.0.1","maintainers":[{"name":"devcx9","email":"devcx9@gmail.com"},{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"}],"dist":{"shasum":"19c319ab63f916d4a46d0a6a1b292b6a28b3e0cd","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.1.tgz","fileCount":26,"integrity":"sha512-edtuPh4IMyYtEWNThPrwWVg5SPdZtV5bAe/we13g8boRLvk00a9hX6zsBUGjN2kbYIX6kEhWzVZLvUj9evqw3A==","signatures":[{"sig":"MEYCIQCpVdzUXuHTn9bWgB3DbLsipZ5y36S2wsstElb1TzTeVQIhAMCsAjhipVeAXiSRi1LVJ/Pw/yyvBxprFW3TcIKxbEq8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":231054},"main":"lib/index.js","scripts":{"build":"babel src --out-dir lib"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.7.0","description":"A React Native SDK for integrating chat functionality into your application.","directories":{"lib":"lib"},"_nodeVersion":"22.1.0","dependencies":{"moment":"^2.30.1","form-data":"^4.0.0","jwt-decode":"^4.0.0","react-native":"^0.74.3","react-native-fs":"^2.20.0","intelli-chat-sdk":"^1.1.6","react-native-video":"^6.3.0","react-native-fast-image":"^8.6.3","react-native-simple-toast":"^3.3.1","react-native-vector-icons":"^10.1.0","react-native-document-picker":"^9.3.0","react-native-gesture-handler":"^2.17.1"},"_hasShrinkwrap":false,"devDependencies":{"@babel/cli":"^7.24.7","@babel/core":"^7.24.7","@babel/preset-env":"^7.24.7","@babel/preset-react":"^7.24.7","@babel/preset-typescript":"^7.24.7","@babel/plugin-transform-runtime":"^7.24.7"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.1_1720696091713_0.12854748180665587","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.2","keywords":["react-native","expo","chat","sdk","intellicon","socket.io"],"author":{"name":"RajaSabiq"},"license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.2","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"d44e34b7c238fbd9018793b12233871197cf9d88","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.2.tgz","fileCount":8,"integrity":"sha512-/GnQahEanEmKRfqkeaZsJAthh5MIHmutp5MBGt0HT7JLsNIYAQ9yCKnJULhB0yOm6MZ20XS1mph8ikt+3Hfw5w==","signatures":[{"sig":"MEUCIQDXUhFUK8wqKF5QOCWF2vIzRUmZhW5ouaX1VGxX0emTRAIgdBxEJQih1lxgfEaml0kplteBaJGeA4wiXkzCuwl37Pc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200538},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts","lint":"eslint \"src/**/*.{ts,tsx}\"","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts --clean"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Production-ready React Native Intellicon Chat SDK with Expo and CLI support","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","socket.io-client":"^2.3.0","rn-emoji-keyboard":"^1.7.0","lucide-react-native":"^0.395.0"},"_hasShrinkwrap":false,"devDependencies":{"expo":"^55.0.17","jest":"^29.7.0","tsup":"^8.1.0","expo-av":"^16.0.8","expo-audio":"^55.0.14","expo-video":"^3.0.16","typescript":"^5.4.5","@types/react":"^18.2.0","react-native-svg":"^15.15.4","expo-image-picker":"^55.0.19","react-native-mmkv":"^2.12.2","@types/react-native":"^0.73.0","expo-document-picker":"^55.0.13","@types/socket.io-client":"^1.4.36","react-native-safe-area-context":"^5.7.0","@react-native-async-storage/async-storage":"^3.0.2"},"peerDependencies":{"expo":">=51","react":">=18","expo-av":">=14","expo-video":">=1.0.0","react-native":">=0.74","react-native-svg":">=15.0.0","expo-image-picker":">=15","expo-document-picker":">=12","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":">=1.23.1"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.2_1777365476512_0.6429017848057128","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.3","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.3","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"1ba12154332c5043a6fb46b5b5f9073a203be396","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.3.tgz","fileCount":4,"integrity":"sha512-KInRIlEy6wgTsdEYBevvLCGOvTDobZ/e3l+6+VuV1asxtPRlqWcbllPyvs/S0TOohYC2qAeUd1HBHKuR70wd8Q==","signatures":[{"sig":"MEQCIG4aTzHSsjBIDElR3a1zmZPes/vfvWqVYkXSSSxE7RtOAiAEtEJeR/EsT5p/qCZ5Gfq9/40G0rrx8F1mfAeFyMSJmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263411},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"4131b102513c175634400a6bacf83d43571e6d4b","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","react-native-svg":">=15.0.0","socket.io-client":"^2.3.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","@types/react-native":"^0.73.0","@types/socket.io-client":"^1.4.36"},"peerDependencies":{"react":">=18","react-native":">=0.74"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.3_1779371901870_0.21309577962412307","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.4","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.4","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"09ea4f2f45d4258e4a742082f209e22d49f16132","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.4.tgz","fileCount":6,"integrity":"sha512-HlUOxASLFFgh0PBac88svafGFxrRmP4Y4KerdI/eOBNOzaIcfP2sHF1ARlOrd+Kolk9IR5mqJqWQmd0X11OZOg==","signatures":[{"sig":"MEQCIDFgGuCs3eZusXuy8MFnGNsRzoCYzlo+3Oo2uQ/Sa5j3AiB0+nIa4fvRVT1K1bt7dFSVoTML0eJY3SeG+WzNVTkzhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":359758},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"c156588c7a45c51febadfc185cc9923291a91beb","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","react-native-svg":">=15.0.0","socket.io-client":"^2.3.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","@types/react-native":"^0.73.0","@types/socket.io-client":"^1.4.36"},"peerDependencies":{"react":">=18","react-native":">=0.74"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.4_1780318707740_0.7581353081155899","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.5","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.5","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"44c6f6d238298ae929234551bc025610a70155af","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.5.tgz","fileCount":6,"integrity":"sha512-gFMyOxQ+zSMJRyrwD5vxxP9nYikvFxxZGCmSJhvWChbDiq7t9Gj/yW3HGeeyQr58wK19NjK0wXdmGMY0TP/uAw==","signatures":[{"sig":"MEQCIHjDlNnttZB2gIwtLjl6PIrCul0qeFYH/+ft1dvid/Z5AiALb9sMXl2CKhIxH4iO30rCvTbGP2kUk80YG+LhduECtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360100},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a9759bbe376dc8bad71eba6ee6145da89fef51c3","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","react-native-svg":">=15.0.0","socket.io-client":"^2.3.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","@types/react-native":"^0.73.0","@types/socket.io-client":"^1.4.36"},"peerDependencies":{"react":">=18","react-native":">=0.74"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.5_1780324545511_0.792598710025292","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.6","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.6","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"f4acfaf1697d61b0129a2b31066d9ea71b1be0a4","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.6.tgz","fileCount":6,"integrity":"sha512-246Y6gjc2JBByuRuQgvIh92Sy8YIeC5UqFk9DNM8w2SJWsgv9HtWDFnEhDiUldalEmN8MH0jFVWZYUibetMTIQ==","signatures":[{"sig":"MEUCIQDoK/QpxXflkQVZKTUEE9vDlF/l8w7Ny5GIAqBaoTLJ8wIgEcIAfoo4+1V6EnTh6YbfPv6vTk5yWmaaza8KpM5QV9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":360129},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0ed25e778d31d8439c4961d8422a2d10939ac6f5","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","socket.io-client":"^2.3.0"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","react-native-svg":"^15.0.0","@types/react-native":"^0.73.0","lucide-react-native":"^0.395.0","@types/socket.io-client":"^1.4.36","react-native-safe-area-context":"^4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"peerDependencies":{"react":">=18","react-native":">=0.74","react-native-svg":">=15.0.0","rn-emoji-keyboard":">=1.7.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.6_1780359072934_0.24490814278981698","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.7","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.7","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"6d71182cca29057cbd67778a8a81f62094863924","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.7.tgz","fileCount":6,"integrity":"sha512-FQKukULysYL1xfrIUROAgDOomRFZrWSS3pT/GN6vooLku0r9XDy3+SS13p8nCuX1WvQbv29P57TFIoRvA4Sb8g==","signatures":[{"sig":"MEUCIQDtxWI5uXMXaTp9bHwyiCp+Z9J2BJURclO80Wv8vdkiNAIgD94SHn4r0qUJnn4SkplLODUbVmVSVHI+0/1eHPRID7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378278},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"35cb78c3df44299f375e13579dc15b8f33c7bec3","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","socket.io-client":"^2.3.0"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","react-native-svg":"^15.0.0","@types/react-native":"^0.73.0","lucide-react-native":"^0.395.0","@types/socket.io-client":"^1.4.36","react-native-safe-area-context":"^4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"peerDependencies":{"react":">=18","react-native":">=0.74","react-native-svg":">=15.0.0","rn-emoji-keyboard":">=1.7.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.7_1780471879875_0.3397127137700071","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.8","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.8","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"992c9213e208e760aaa2696c81a8826ff1590946","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.8.tgz","fileCount":6,"integrity":"sha512-3JnpLq56yNzZ8tjIvlbm1oz3zI7vOgQfUP2F3xFOzP5el2YzZE6yQF0Sh1EFhd5GwNJhHx2jr4HoEpy6N3YMSg==","signatures":[{"sig":"MEQCIDijCTYAWmOatdeAqgW3+XnzGwgdFfWF7g/aCnCdZjr3AiBPMAeYpMYOSePZaHhkVZ1M9LDd6xJuxjtMBs/UiiPGvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379061},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"cf62ff85733ee30fcd1bdedb8ba1f6f452ad3ad1","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","socket.io-client":"^2.3.0"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","react-native-svg":"^15.0.0","@types/react-native":"^0.73.0","lucide-react-native":"^0.395.0","@types/socket.io-client":"^1.4.36","react-native-safe-area-context":"^4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"peerDependencies":{"react":">=18","react-native":">=0.74","react-native-svg":">=15.0.0","rn-emoji-keyboard":">=1.7.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.8_1780529172816_0.2914968191344336","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.0.9","license":"MIT","_id":"@contegris/rn-intellicon-chat-sdk@1.0.9","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"dist":{"shasum":"c36e394563b082c3f0181c144211e29f3ba07e39","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.0.9.tgz","fileCount":6,"integrity":"sha512-LJ2D1101Lap/VUCKzYgHq2hW/BGHIDS36h6dlqDyM89+/qkhxkrBcPbfm98IRsU+c9ZcrsTbenHj7QTGYqt6bQ==","signatures":[{"sig":"MEQCIDuiHc2lU8U4UX4f5MiB2i18R6XIflPtmowcxTAphXaRAiA4vTdtxKeyVe1TfzPk+NXyYX9WfLpWZwI1TUeHg+6mtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387013},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"6e6bae4e559b331876b6f44e2b5e1bc45bb7ce3f","scripts":{"dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"_npmVersion":"10.9.4","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","directories":{},"_nodeVersion":"22.22.1","dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","socket.io-client":"^2.3.0"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","@types/react":"^19.2.14","react-native":"^0.85.3","react-native-svg":"^15.0.0","@types/react-native":"^0.73.0","lucide-react-native":"^0.395.0","@types/socket.io-client":"^1.4.36","react-native-safe-area-context":"^4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"peerDependencies":{"react":">=18","react-native":">=0.74","react-native-svg":">=15.0.0","rn-emoji-keyboard":">=1.7.0","lucide-react-native":"^0.395.0","react-native-safe-area-context":">=4.0.0","@react-native-async-storage/async-storage":"^1.23.1"},"_npmOperationalInternal":{"tmp":"tmp/rn-intellicon-chat-sdk_1.0.9_1781022725798_0.48648366462094583","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@contegris/rn-intellicon-chat-sdk","version":"1.1.1","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","main":"dist/index.js","module":"dist/index.mjs","react-native":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard","dev":"tsup src/index.ts --format cjs,esm --watch --dts --external react --external react-native --external react-native-safe-area-context --external react-native-svg --external @react-native-async-storage/async-storage --external lucide-react-native --external rn-emoji-keyboard"},"dependencies":{"axios":"^1.15.2","date-fns":"^3.6.0","jwt-decode":"^4.0.0","socket.io-client":"^2.3.0"},"peerDependencies":{"@react-native-async-storage/async-storage":"^1.23.1","lucide-react-native":"^0.395.0","react":">=18","react-native":">=0.74","react-native-safe-area-context":">=4.0.0","react-native-svg":">=15.0.0","rn-emoji-keyboard":">=1.7.0"},"license":"MIT","devDependencies":{"@react-native-async-storage/async-storage":"^1.23.1","@types/react":"^19.2.14","@types/react-native":"^0.73.0","@types/socket.io-client":"^1.4.36","lucide-react-native":"^0.395.0","react":"^19.2.6","react-native":"^0.85.3","react-native-safe-area-context":"^4.0.0","react-native-svg":"^15.0.0"},"_id":"@contegris/rn-intellicon-chat-sdk@1.1.1","gitHead":"92a18697a62f45d8a41f907c3af27a05f7b62567","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-vEgF+FOx/gOGkq/vljBi8txisNTpnx77mpm7k7y4w6qNQkbwSvj5N+ODxEaB5oEf9Jotqy4ewMU9QsCUPz7SWA==","shasum":"c2e216512321d6540139e30497ed7b250a56d358","tarball":"https://registry.npmjs.org/@contegris/rn-intellicon-chat-sdk/-/rn-intellicon-chat-sdk-1.1.1.tgz","fileCount":6,"unpackedSize":399871,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBBXmkT/e5GWYv0MiPn9yNaWdC/mazdlltKJYn3Ec6vxAiAMnmBa+o7tSY7kos7BplGPF6GbKOwhvZWSDY6VN/e1+Q=="}]},"_npmUser":{"name":"devcx9","email":"devcx9@gmail.com"},"directories":{},"maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rn-intellicon-chat-sdk_1.1.1_1781276530998_0.6594443363108"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-11T11:06:38.433Z","modified":"2026-06-12T15:02:11.297Z","1.0.0":"2024-07-11T11:06:38.735Z","1.0.1":"2024-07-11T11:08:11.946Z","1.0.2":"2026-04-28T08:37:56.660Z","1.0.3":"2026-05-21T13:58:22.062Z","1.0.4":"2026-06-01T12:58:27.888Z","1.0.5":"2026-06-01T14:35:45.703Z","1.0.6":"2026-06-02T00:11:13.076Z","1.0.7":"2026-06-03T07:31:20.029Z","1.0.8":"2026-06-03T23:26:12.945Z","1.0.9":"2026-06-09T16:32:05.982Z","1.1.1":"2026-06-12T15:02:11.158Z"},"license":"MIT","description":"Intellicon Chat SDK - Core (platform-agnostic, text messaging out of the box)","maintainers":[{"name":"rajasabiq","email":"ther.sabiqarfan@gmail.com"},{"name":"habibshahid","email":"habib@contegris.com"},{"name":"devcx9","email":"devcx9@gmail.com"}],"readme":"# @contegris/rn-intellicon-chat-sdk (Core)\n\n[![npm version](https://img.shields.io/npm/v/@contegris/rn-intellicon-chat-sdk)](https://www.npmjs.com/package/@contegris/rn-intellicon-chat-sdk)\n[![license](https://img.shields.io/npm/l/@contegris/rn-intellicon-chat-sdk)](../../LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-ready-blue)](https://www.typescriptlang.org/)\n[![Platform](https://img.shields.io/badge/platform-ios%20%7C%20android-lightgrey)](https://reactnative.dev/)\n\n> **Platform-agnostic chat SDK with text messaging out of the box**  \n> Zero native dependencies. Perfect for lightweight integrations, internal tools, or custom UI implementations.\n\n---\n\n## Table of Contents\n\n- [Overview](#overview)\n- [When to Use Core Package](#when-to-use-core-package)\n- [Features](#features)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Configuration](#configuration)\n- [Props Reference](#props-reference)\n- [API Reference](#api-reference)\n- [Theming](#theming)\n- [Headless Mode](#headless-mode)\n- [Events](#events)\n- [Offline Support](#offline-support)\n- [Performance](#performance)\n- [Troubleshooting](#troubleshooting)\n- [FAQ](#faq)\n- [License](#license)\n\n---\n\n## Overview\n\nThe **Core** package is a lightweight, platform-agnostic chat SDK that provides:\n\n- Real-time text messaging\n- Image display (no upload capability)\n- Complete UI components\n- State management\n- Offline queue\n- Theme system\n- TypeScript support\n\n**Bundle Size:** ~1.5 MB (includes all dependencies)\n\n### Architecture\n\n```\nCore Package\n├── Components (UI)\n│   ├── Chat.tsx (main component)\n│   ├── MessageBubble.tsx\n│   ├── ImageBubble.tsx (display + download with downloadFile prop)\n│   ├── ZoomableImage.tsx (pinch-to-zoom viewer, exported)\n│   ├── FeedbackBubble.tsx\n│   └── Snackbar.tsx\n├── Hooks (Business Logic)\n│   ├── useChat (main hook)\n│   ├── useUpload (upload queue)\n│   └── useConnectionStatus\n├── Services (Singletons)\n│   ├── SocketService (WebSocket)\n│   ├── ApiService (HTTP)\n│   ├── UploadManager (upload queue)\n│   └── OfflineQueue (AsyncStorage)\n└── Theme System\n    ├── ThemeContext\n    └── Typography\n```\n\n---\n\n## When to Use Core Package\n\n### ✅ Use Core If:\n\n- You only need **text messaging** (no media uploads)\n- You want the **smallest bundle size** (~1.5 MB)\n- You're building an **internal tool** or support chat\n- You want to **avoid native module complexity**\n- You want to build a **custom UI** (headless mode with `useChat` hook)\n- You need **maximum platform compatibility**\n\n### ❌ Don't Use Core If:\n\n- You need **media attachments** (images, videos, audio, documents)\n  - → Use [`@contegris/rn-intellicon-chat-sdk-expo`](https://www.npmjs.com/package/@contegris/rn-intellicon-chat-sdk-expo) (Expo projects)\n  - → Use [`@contegris/rn-intellicon-chat-sdk-cli`](https://www.npmjs.com/package/@contegris/rn-intellicon-chat-sdk-cli) (React Native CLI projects)\n\n---\n\n## Features\n\n### ✅ What's Included\n\n- **Real-time Messaging:** Socket.IO v2.3.0 with automatic reconnection\n- **Offline Support:** Messages queued in AsyncStorage and sent when online\n- **Optimistic UI:** Instant visual feedback for sent messages\n- **Paginated History:** Infinite scroll with 20 messages per page\n- **Delivery Status:** Visual indicators (pending ⏱ / delivered ✓✓)\n- **Date Separators:** Automatic grouping by day\n- **Feedback Widget:** Post-conversation star ratings\n- **Connection Monitoring:** Real-time connection status\n- **Theme System:** 50+ customization tokens\n- **TypeScript:** 100% type coverage\n- **Headless Mode:** `useChat` hook for custom UIs\n- **Performance Tracking:** Built-in APM hooks via `onPerformanceReport`\n- **iOS Audio Playback:** Reliable play-till-end detection with `AVAudioPlayerDelegate` support\n\n### ❌ What's NOT Included\n\n- **Image Uploads:** Can display images from URLs, but cannot upload\n- **Video Attachments:** Not supported\n- **Audio Messages:** Not supported\n- **Document Attachments:** Not supported\n- **Camera Access:** Not supported\n- **Gallery Access:** Not supported\n- **Emoji Keyboard:** Not supported\n\n**Upgrade Path:** Install Expo or CLI package for full media support.\n\n---\n\n## Installation\n\n### Step 1: Install Package\n\n```bash\n# npm\nnpm install @contegris/rn-intellicon-chat-sdk\n\n# yarn\nyarn add @contegris/rn-intellicon-chat-sdk\n\n# pnpm\npnpm add @contegris/rn-intellicon-chat-sdk\n```\n\n### Step 2: Verify Peer Dependencies\n\nThe core package requires:\n\n```json\n{\n  \"react\": \">=18\",\n  \"react-native\": \">=0.74\"\n}\n```\n\n### Dependencies (Auto-Installed)\n\n```json\n{\n  \"@react-native-async-storage/async-storage\": \"^1.23.1\",\n  \"axios\": \"^1.15.2\",\n  \"date-fns\": \"^3.6.0\",\n  \"jwt-decode\": \"^4.0.0\",\n  \"lucide-react-native\": \"^0.395.0\",\n  \"react-native-safe-area-context\": \">=4.0.0\",\n  \"react-native-svg\": \">=15.0.0\",\n  \"socket.io-client\": \"^2.3.0\"\n}\n```\n\n### Step 3: No Additional Setup Required\n\nThe core package works immediately after installation. No native modules to link, no permissions to configure.\n\n---\n\n## Quick Start\n\n### Basic Usage\n\n```tsx\nimport React from 'react';\nimport { Chat } from '@contegris/rn-intellicon-chat-sdk';\n\nexport default function App() {\n  return (\n    <Chat\n      user={{\n        participantId: 'user-123',\n        name: 'John Doe',\n      }}\n      config={{\n        baseUrl: 'https://democc.contegris.com:443',\n        appId: 'your-app-id',\n        title: 'Customer Support',\n      }}\n      onFeedbackSubmit={() => {\n        // Called when user submits the post-conversation rating\n        // e.g. navigation.goBack()\n      }}\n    />\n  );\n}\n```\n\nThat's it! The chat UI is now fully functional with:\n- Real-time messaging\n- Offline support\n- Message history\n- Connection status indicators\n- Error handling\n\n### With Custom Theme\n\n```tsx\nimport { Chat } from '@contegris/rn-intellicon-chat-sdk';\n\n<Chat\n  user={{ participantId: 'user-123', name: 'John Doe' }}\n  config={{ baseUrl: 'https://example.com', appId: 'app-id' }}\n  theme={{\n    backgroundColor: '#F5F5F5',\n    appBar: {\n      bgColor: '#2563EB',\n      titleStyle: { color: '#FFFFFF', fontSize: 18, fontWeight: '600' },\n    },\n    bubbleStyle: {\n      visitor: { bgColor: '#2563EB', textStyle: { color: '#FFFFFF' } },\n      agent: { bgColor: '#FFFFFF', textStyle: { color: '#000000' } },\n    },\n  }}\n/>\n```\n\n### With History Loading\n\n```tsx\n<Chat\n  user={{ participantId: 'user-123', name: 'John Doe' }}\n  config={{\n    baseUrl: 'https://example.com',\n    appId: 'app-id',\n    history: {\n      show: true,              // Load previous messages\n      view: 'inSingleView',    // Display mode\n    },\n  }}\n/>\n```\n\n---\n\n## Configuration\n\n### User Configuration\n\n```tsx\ninterface User {\n  participantId: string;  // REQUIRED: Unique user identifier\n  name: string;           // REQUIRED: Display name\n  fcmToken?: string;      // OPTIONAL: Push notification token\n}\n```\n\n| Property | Type | Required | Description | Example |\n|----------|------|----------|-------------|---------|\n| `participantId` | `string` | ✅ Yes | Unique identifier (must be consistent across sessions) | `\"user-67890\"` |\n| `name` | `string` | ✅ Yes | Display name shown in chat | `\"Jane Smith\"` |\n| `fcmToken` | `string` | ❌ No | Firebase Cloud Messaging token for push notifications | `\"fcm-token-abc...\"` |\n\n### Config Object\n\n```tsx\ninterface Config {\n  baseUrl: string;        // REQUIRED: Server URL\n  appId: string;          // REQUIRED: App identifier\n  title?: string;         // OPTIONAL: AppBar title\n  history?: History;      // OPTIONAL: History settings\n}\n```\n\n| Property | Type | Required | Default | Description |\n|----------|------|----------|---------|-------------|\n| `baseUrl` | `string` | ✅ Yes | N/A | Intellicon server URL (include protocol and port) |\n| `appId` | `string` | ✅ Yes | N/A | Widget identifier from Intellicon dashboard |\n| `title` | `string` | ❌ No | `\"Chat\"` | Title displayed in AppBar |\n| `history.show` | `boolean` | ❌ No | `false` | Whether to load previous messages |\n| `history.view` | `'inSingleView' \\| 'listView'` | ❌ No | `'inSingleView'` | History display mode |\n\n### Custom Data\n\n```tsx\n<Chat\n  {...props}\n  customData={{\n    customerType: 'premium',\n    language: 'en',\n    department: 'billing',\n  }}\n/>\n```\n\n`customData` is forwarded to the server and can be used for:\n- Customer segmentation\n- Analytics tracking\n- Agent routing\n- Context preservation\n\n---\n\n## Props Reference\n\n### Chat Component\n\n```tsx\ninterface ChatProps {\n  user: User;\n  config: Config;\n  customData?: Record<string, unknown>;\n  theme?: ChatTheme;\n  downloadFile?: (params: { url: string; stopLoading: () => void; type: 'image' | 'video' | 'document'; fileName?: string }) => void;\n  onFeedbackSubmit?: () => void;\n  onPerformanceReport?: (report: PerformanceReport) => void;\n  showLogToggle?: boolean;\n  keyboardVerticalOffset?: number;\n  goBack?: () => void;\n}\n```\n\n| Prop | Type | Required | Description |\n|------|------|----------|-------------|\n| `user` | `User` | ✅ Yes | User identification object |\n| `config` | `Config` | ✅ Yes | Server configuration |\n| `customData` | `Record<string, unknown>` | ❌ No | Arbitrary metadata sent to server |\n| `theme` | `ChatTheme` | ❌ No | Visual customization (50+ tokens) |\n| `downloadFile` | `function` | ❌ No | Custom download handler for media (image, video, document) |\n| `onFeedbackSubmit` | `() => void` | ❌ No | Called after user submits feedback. Use to navigate away or close the screen. |\n| `onPerformanceReport` | `function` | ❌ No | Callback for APM integration |\n| `showLogToggle` | `boolean` | ❌ No | Show debug toggle button (dev only) |\n| `keyboardVerticalOffset` | `number` | ❌ No | Keyboard vertical offset for KeyboardAvoidingView on iOS |\n| `goBack` | `() => void` | ❌ No | When provided, renders a back arrow in the AppBar. Use to navigate back (e.g., `navigation.goBack()`). |\n\n---\n\n## API Reference\n\n### useChat Hook\n\nThe main hook for chat functionality. Returns stateful values and functions to control the chat.\n\n```tsx\nimport { useChat } from '@contegris/rn-intellicon-chat-sdk';\n\nconst {\n  messages,\n  isLoading,\n  isLoadingMore,\n  fatalError,\n  toastMsg,\n  dismissToast,\n  sendMessage,\n  sendMediaMessage,\n  cancelUpload,\n  retryUpload,\n  getTaskByUniqueId,\n  loadMore,\n  tokenData,\n  interactionId,\n  uploadTasks,\n} = useChat(user, config, customData);\n```\n\n**Parameters:**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `user` | `User` | User identification |\n| `config` | `Config` | Server configuration |\n| `customData` | `Record<string, unknown>` (optional) | Arbitrary metadata |\n\n**Returns:**\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `messages` | `Message[]` | Array of messages (newest first) |\n| `isLoading` | `boolean` | Initial loading state |\n| `isLoadingMore` | `boolean` | Pagination loading state |\n| `fatalError` | `string` | Fatal error message |\n| `toastMsg` | `string` | Toast message |\n| `dismissToast` | `() => void` | Dismiss toast |\n| `sendMessage` | `(text: string) => void` | Send text message |\n| `sendMediaMessage` | `(uri, name, mime, type, size) => Promise<void>` | Send media (core doesn't upload) |\n| `cancelUpload` | `(uploadId, uniqueId) => void` | Cancel upload |\n| `retryUpload` | `(uploadId) => void` | Retry failed upload |\n| `getTaskByUniqueId` | `(uniqueId) => UploadTask \\| undefined` | Get upload task |\n| `loadMore` | `() => void` | Load next page (20 messages) |\n| `tokenData` | `TokenData \\| null` | Server token data |\n| `interactionId` | `string` | Current conversation ID |\n| `uploadTasks` | `ReadonlyMap<string, UploadTask>` | All upload tasks |\n\n**Example: Custom UI with useChat**\n\n```tsx\nimport React from 'react';\nimport { View, TextInput, Button, FlatList, Text } from 'react-native';\nimport { useChat } from '@contegris/rn-intellicon-chat-sdk';\n\nexport default function CustomChat() {\n  const { messages, isLoading, sendMessage, loadMore } = useChat(\n    { participantId: 'user-123', name: 'John' },\n    { baseUrl: 'https://chat.example.com', appId: 'app-id' }\n  );\n\n  const [text, setText] = React.useState('');\n\n  if (isLoading) return <Text>Loading...</Text>;\n\n  return (\n    <View style={{ flex: 1 }}>\n      <FlatList\n        data={messages}\n        keyExtractor={(item) => item.uniqueId || item.id}\n        renderItem={({ item }) => (\n          <Text>{item.author?.name}: {item.message}</Text>\n        )}\n        inverted\n        onEndReached={loadMore}\n      />\n      <View style={{ flexDirection: 'row' }}>\n        <TextInput value={text} onChangeText={setText} />\n        <Button\n          title=\"Send\"\n          onPress={() => {\n            sendMessage(text);\n            setText('');\n          }}\n        />\n      </View>\n    </View>\n  );\n}\n```\n\n### useConnectionStatus Hook\n\nMonitor WebSocket connection status.\n\n```tsx\nimport { useConnectionStatus } from '@contegris/rn-intellicon-chat-sdk';\n\nconst status = useConnectionStatus();\n// 'connected' | 'disconnected' | 'reconnecting' | 'reconnect_failed'\n```\n\n**Example:**\n\n```tsx\nconst status = useConnectionStatus();\n\nreturn (\n  <View>\n    {status === 'connected' && <Text style={{ color: 'green' }}>●</Text>}\n    {status === 'disconnected' && <Text style={{ color: 'red' }}>●</Text>}\n    {status === 'reconnecting' && <Text style={{ color: 'orange' }}>●</Text>}\n  </View>\n);\n```\n\n### Services\n\n#### SocketService\n\nSingleton WebSocket manager.\n\n```tsx\nimport { SocketService } from '@contegris/rn-intellicon-chat-sdk';\n\n// Check connection\nconst isConnected = SocketService.isConnected;\n\n// Listen for connection changes\nSocketService.onConnectionChange((status) => {\n  console.log('Connection status:', status);\n});\n\n// Disconnect (cleanup)\nSocketService.disconnect();\n```\n\n#### ApiService\n\nHTTP client for token fetching and uploads.\n\n```tsx\nimport { ApiService } from '@contegris/rn-intellicon-chat-sdk';\n\nApiService.getToken(user, config, callback, eventCallback);\n```\n\n#### OfflineQueue\n\nOffline message queue (AsyncStorage-backed).\n\n```tsx\nimport OfflineQueue from '@contegris/rn-intellicon-chat-sdk';\n\nOfflineQueue.load();\nOfflineQueue.enqueue({ uniqueId, message, timestamp });\nOfflineQueue.remove(uniqueId);\nconst pending = OfflineQueue.getAll();\n```\n\n---\n\n## Theming\n\nCustomize every aspect of the UI using the `ChatTheme` interface. All properties are optional and fall back to [DEFAULT_CHAT_THEME](./src/types/theme.types.ts:252).\n\n### Theme Structure\n\nThe theme interface has 50+ properties organized into the following categories:\n\n```tsx\ninterface ChatTheme {\n  // Global\n  fontFamily?: string | null;\n  \n  // Background\n  backgroundColor?: string;\n  backgroundImage?: string;\n  backgroundGradientColors?: string[];\n  backgroundGradientDirection?: 'horizontal' | 'vertical' | 'diagonal';\n  backgroundOverlay?: string;\n  \n  // Loading & Error\n  loaderColor?: string;\n  loaderSize?: 'small' | 'large';\n  LoadingComponent?: React.ComponentType;\n  ErrorComponent?: React.ComponentType<{ message: string }>;\n  errorTextStyle?: TextStyle;\n  errorContainerStyle?: ViewStyle;\n  \n  // Layout\n  containerStyle?: ViewStyle;\n  listContentStyle?: ViewStyle;\n  listPaddingVertical?: number;\n  listPaddingHorizontal?: number;\n  \n  // Pagination\n  loadMoreThreshold?: number;\n  loadMoreLoaderColor?: string;\n  showLoadMoreSpinner?: boolean;\n  \n  // Components\n  appBar?: AppBarStyle;            // 7 properties\n  bubbleStyle?: BubbleStyle;       // agent/visitor with audio/video/document styles\n  dateSeparator?: DateSeparatorStyle;\n  messageInput?: MessageInputStyle; // 14 properties\n  feedback?: FeedbackStyle;        // 5 properties\n}\n```\n\n### Quick Theme Examples\n\n**Minimal Dark Theme:**\n\n```tsx\nconst theme: ChatTheme = {\n  fontFamily: 'Inter',\n  backgroundColor: '#0F172A',\n  appBar: { bgColor: '#1E293B', iconColor: '#60A5FA' },\n};\n```\n\n**Light Theme:**\n\n```tsx\nconst theme: ChatTheme = {\n  backgroundColor: '#FFFFFF',\n  appBar: {\n    bgColor: '#F5F5F5',\n    titleStyle: { color: '#000000' },\n    iconColor: '#2563EB',\n  },\n  bubbleStyle: {\n    visitor: { bgColor: '#2563EB', textStyle: { color: '#FFFFFF' } },\n    agent: { bgColor: '#E5E7EB', textStyle: { color: '#000000' } },\n  },\n  messageInput: { bgColor: '#F5F5F5', sendIconColor: '#2563EB' },\n};\n```\n\n**Gradient Background:**\n\n```tsx\nconst theme: ChatTheme = {\n  backgroundGradientColors: ['#667eea', '#764ba2', '#ee0979'],\n  backgroundGradientDirection: 'diagonal',\n  backgroundOverlay: 'rgba(0,0,0,0.3)',\n};\n```\n\n**Custom Font:**\n\n```tsx\nconst theme: ChatTheme = {\n  fontFamily: 'Inter',  // Use custom font loaded by host app\n  // or\n  fontFamily: null,     // Explicitly use system font (SF Pro / Roboto)\n  // omit fontFamily to use default 'Outfit' font\n};\n```\n\n### Complete Theme Reference\n\nFor the full list of all 50+ theme properties with examples, see:\n- **Type Definition:** [theme.types.ts](./src/types/theme.types.ts:162-221)\n- **Default Values:** [DEFAULT_CHAT_THEME](./src/types/theme.types.ts:252-375)\n- **Detailed Guide:** [Root README Theming Section](../../README.md#theming)\n\n#### Key Theme Objects\n\n**AppBarStyle** (7 properties):\n- `enabled`, `bgColor`, `gradientColors`, `gradientDirection`, `titleStyle`, `iconColor`, `centerTitle`\n\n**BubbleStyle** (agent/visitor with nested objects):\n- Each bubble has: `bgColor`, `textStyle`, `audioMessage`, `videoMessage`, `documentMessage`\n- Each media type has 3-5 style properties\n\n**MessageInputStyle** (14 properties):\n- `bgColor`, `inputContainerStyle`, `hintStyle`, `messageTextStyle`, `emojiIconColor`, `attachmentIconColor`, `attachmentModalBgColor`, `micInactiveIconColor`, `micActiveIconColor`, `micSendBgColor`, `sendIconColor`, `sendVoiceMessageIconColor`, `deleteVoiceMessageIconColor`\n\n**FeedbackStyle** (5 properties):\n- `containerStyle`, `activeColor`, `inactiveColor`, `textActiveColor`, `textInactiveColor`\n\n**DateSeparatorStyle** (2 properties):\n- `containerStyle`, `textStyle`\n\n---\n\n## Headless Mode\n\nUse the `useChat` hook to build completely custom UIs without using the built-in components.\n\n### Example: Minimal Chat\n\n```tsx\nimport React from 'react';\nimport { View, TextInput, Button, FlatList, Text } from 'react-native';\nimport { useChat } from '@contegris/rn-intellicon-chat-sdk';\n\nexport default function MinimalChat() {\n  const { messages, sendMessage } = useChat(\n    { participantId: 'user-123', name: 'John' },\n    { baseUrl: 'https://example.com', appId: 'app-id' }\n  );\n\n  const [text, setText] = React.useState('');\n\n  return (\n    <View style={{ flex: 1 }}>\n      <FlatList\n        data={messages}\n        renderItem={({ item }) => <Text>{item.message}</Text>}\n        inverted\n      />\n      <TextInput value={text} onChangeText={setText} />\n      <Button title=\"Send\" onPress={() => sendMessage(text)} />\n    </View>\n  );\n}\n```\n\n### Example: With Connection Status\n\n```tsx\nimport { useChat, useConnectionStatus } from '@contegris/rn-intellicon-chat-sdk';\n\nconst { messages, sendMessage } = useChat(user, config);\nconst status = useConnectionStatus();\n\nreturn (\n  <View>\n    <Text>Status: {status}</Text>\n    {/* Your custom UI */}\n  </View>\n);\n```\n\n---\n\n## Events\n\n### Socket Events\n\nThe SDK uses Socket.IO for real-time communication.\n\n**Outgoing Events (Client → Server):**\n\n| Event | Payload | Description |\n|-------|---------|-------------|\n| `new-message` | `{ interactionId, message, author, uniqueId }` | Send text message |\n| `open-interaction` | `{}` | Request open interactions |\n| `new-interaction` | `{ message, author, appId }` | Create new conversation |\n| `interaction-message` | `{ interactionId, offset }` | Fetch messages (pagination) |\n\n**Incoming Events (Server → Client):**\n\n| Event | Payload | Description |\n|-------|---------|-------------|\n| `ready` | `{}` | Connection established |\n| `open-interactions` | `{ interactions: [] }` | List of open interactions |\n| `new-interaction` | `{ interaction }` | New interaction created |\n| `interaction-messages` | `{ messages, count }` | Batch of messages |\n| `new-message` | `{ message }` | New message received |\n\n### Event Listeners\n\n```tsx\nimport { SocketService } from '@contegris/rn-intellicon-chat-sdk';\n\n// Listen for custom events\nSocketService.onConnectionChange((status) => {\n  console.log('Connection:', status);\n});\n\n// Cleanup\nSocketService.removeConnectionChangeListener(listener);\n```\n\n---\n\n## Offline Support\n\n### How It Works\n\n1. **Message Queued:** When offline, messages are saved to AsyncStorage\n2. **UI Updates:** Optimistic UI shows message immediately (pending status)\n3. **Auto-Sync:** When connection restored, queued messages are sent automatically\n4. **User Feedback:** Toasts inform user (\"Queued. Will send when online\")\n\n### Storage Key\n\n```\n@intellicon:offline-queue\n```\n\n### Data Structure\n\n```json\n[\n  {\n    \"uniqueId\": \"msg-123\",\n    \"message\": \"Hello\",\n    \"timestamp\": 1642723200000,\n    \"messageType\": \"text\"\n  }\n]\n```\n\n### Manual Control\n\n```tsx\nimport OfflineQueue from '@contegris/rn-intellicon-chat-sdk';\n\n// Load queue from storage\nawait OfflineQueue.load();\n\n// Get pending messages\nconst pending = OfflineQueue.getAll();\n\n// Remove from queue\nOfflineQueue.remove(uniqueId);\n```\n\n---\n\n## Performance\n\n### Bundle Size\n\n| Component | Size |\n|-----------|------|\n| Core Package | ~250 KB (uncompressed) |\n| Dependencies | ~1.2 MB (socket.io-client, axios, etc.) |\n| **Total** | **~1.5 MB** |\n\n### Memory Usage\n\n- **Base:** ~15 MB (React Native runtime included)\n- **Per Message:** ~2-5 KB\n- **Recommended Max Messages in Memory:** 500\n\n### Optimization Tips\n\n1. **Use React.memo for Custom Message Components:**\n   ```tsx\n   const MessageItem = React.memo(({ message }) => {\n     return <Text>{message.message}</Text>;\n   });\n   ```\n\n2. **Use FlatList Optimizations:**\n   ```tsx\n   <FlatList\n     removeClippedSubviews={true}\n     maxToRenderPerBatch={10}\n     windowSize={21}\n   />\n   ```\n\n3. **Memoize Theme:**\n   ```tsx\n   const theme = useMemo(() => ({ ... }), []);\n   ```\n\n---\n\n## Troubleshooting\n\n### Common Issues\n\n#### \"Cannot resolve module @contegris/rn-intellicon-chat-sdk\"\n\n**Solution:**\n\n```bash\nnpx react-native start --reset-cache\n```\n\n#### \"Failed to connect to server\"\n\n**Cause:** Invalid `baseUrl` or server unreachable.\n\n**Solution:**\n1. Check baseUrl format: `https://example.com:443`\n2. Test URL in browser\n3. Verify server is running\n\n#### Messages Not Sending\n\n**Check:**\n1. Internet connection\n2. Server URL correct\n3. AppId matches server configuration\n4. Check offline queue (messages queued if offline)\n\n### Debug Logging\n\n**Enable:**\n\n```tsx\nimport { logger } from '@contegris/rn-intellicon-chat-sdk';\n\nlogger.setEnabled(true);\n```\n\n**Or use visual toggle:**\n\n```tsx\n<Chat {...props} showLogToggle={__DEV__} />\n```\n\n### Performance Monitoring\n\n```tsx\n<Chat\n  {...props}\n  onPerformanceReport={(report) => {\n    console.log('Metric:', report.metric, 'Duration:', report.value, 'ms');\n  }}\n/>\n```\n\n---\n\n## FAQ\n\n### Can I use this without the UI components?\n\nYes! Use the `useChat` hook to build your own UI (headless mode).\n\n### Does this work with Expo?\n\nYes! The core package is platform-agnostic and works with both Expo and React Native CLI. For full media support, use the Expo package.\n\n### Can I display images?\n\nYes, images from URLs are displayed. However, uploading images is not supported (use Expo/CLI package).\n\n### How do I customize the theme?\n\nPass a `theme` prop with your custom styles. See [Theming](#theming) section.\n\n### Is TypeScript supported?\n\nYes! The package is written in TypeScript and includes complete type definitions.\n\n### How do I handle errors?\n\nThe SDK shows user-friendly error messages via toasts. Fatal errors show an error screen with retry button.\n\n### Can I use this in production?\n\nYes! The package is production-ready and battle-tested.\n\n---\n\n## License\n\nMIT License\n\nCopyright (c) 2025 Contegris\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n---\n\n**Support:**\n- Documentation: [Root README](../../README.md)\n- Issues: [GitHub Issues](https://github.com/contegris/rn-intellicon-chat-sdk/issues)\n- Email: support@contegris.com\n\n**Related Packages:**\n- [@contegris/rn-intellicon-chat-sdk-expo](../expo) - Full media support for Expo\n- [@contegris/rn-intellicon-chat-sdk-cli](../cli) - Full media support for React Native CLI\n","readmeFilename":"README.md"}