{"_id":"eloquent-chat-widget","_rev":"28-61eb7321b769bd30c7ecf7f3eca8938f","name":"eloquent-chat-widget","dist-tags":{"latest":"1.0.13"},"versions":{"1.0.0":{"name":"eloquent-chat-widget","version":"1.0.0","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.0","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"27d490e78ca460ec04574153e41712e4ca25834d","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.0.tgz","fileCount":9,"integrity":"sha512-eN2auIHnsYND5F2p/E2+Z0oeP9GLcysysfTVnzAhP0BzIS4EE9nQosYOY5d3jSz6dDa50O5DPC0Oge3/YAaf8w==","signatures":[{"sig":"MEUCICKWReLIJ+A/jVslyGSatgqFUFhNi9xA9Xriy3v0hyYyAiEA/vIoQMQdDzxtGIEJh9uyYiwWWb39BqIWqy+xt8VmGZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95307},"main":"dist/index.cjs","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"422daa720ae697a2f6b044dd06ee130c70004f8f","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --dts","prepare":"npm run build"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.0_1748214740718_0.9815456345629596","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"eloquent-chat-widget","version":"1.0.1","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.1","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"a1a8a7307d964604c193fb27acfde30b0c40ddf2","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.1.tgz","fileCount":9,"integrity":"sha512-tQvVRElOiDOzWnhO3xuYLnzG4KBT0ZtBHJABF6gfJ/+T9r+MVwHG7fXC0Xx7nral/P60HnfOJW6OMv9352l1gw==","signatures":[{"sig":"MEQCIE2vIx1CDHp4TjDFiwlxNMGV8p0d4e1ZTfx+VZbhYtHHAiA/QnVOUVV3+vXT54+amxFAQM832PZO/NSEWOtg2wJ4Ag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93503},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"d89dcbe09e38f7d442933388068ec03675906237","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --dts","prepare":"npm run build"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","typescript":"^5","@types/node":"^20","tailwindcss":"^4","@types/react":"^19","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.1_1748215313647_0.6188663392640605","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"eloquent-chat-widget","version":"1.0.4","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.4","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"2df9387d0edfad0cebcec485a37bc6efa64d16b9","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.4.tgz","fileCount":9,"integrity":"sha512-Jav2b75WCRNJ0Wdb7HJ3AaMXwxw6iSQY5dr9plKiLqJGBGxWxH90mk7VOrSx1PDg5DB/6cstlcf6zFze1ibbmg==","signatures":[{"sig":"MEQCIBQSERBMXoJFQVdl6aje1Jxp5cPK9pmCc0G7Iyu0T7DoAiBqTXNdZsm46+O22h+61r720CHiMceIRj7VU2F3ITYQIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93651},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"eeadacea9f07b018313e2325321f1ce7d2aaed38","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --dts","prepare":"npm run build","build:css":"tailwindcss -i ./src/styles.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.4_1748217123545_0.634310029961388","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"eloquent-chat-widget","version":"1.0.5","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.5","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"d55bcbf250e4e98063e73068af8541d959949ec1","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.5.tgz","fileCount":9,"integrity":"sha512-KZsxvZZuMWUQ5+hElSNLt//eb7V+UtcfwMmDSpF1jNfOY92nbmOHqAAEZ6WtKdmtstKVKTvVH/iFm5LJhmMsRA==","signatures":[{"sig":"MEUCIGAcCnZDQeGYxxFjZ3BKDikDlgIX6kMI9aqIGqbPt6wLAiEAwwcumAbhT3+Xzz6st3XFEABzV+xRnPmB2eoPqZrmglo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93656},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"87e60a560c1949c3665e99cf842bfc8e1c41252a","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --dts","prepare":"npm run build","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.5_1748217948522_0.03374163183842427","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"eloquent-chat-widget","version":"1.0.6","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.6","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"6335aaee6392bae859a6bc4e34045b627cd14bbd","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.6.tgz","fileCount":9,"integrity":"sha512-KaVSXwd1WPW+GrxVCjF9VHEEoEdRUGTETwcEaPaPwmSSi8mdsNjITJExZZLmGnaE9jtjAAadpgzeQfWisjw7fA==","signatures":[{"sig":"MEQCICJ8sDaVMJxC8pGBSZc2Z35eq9L2ahJvS2Jt+ZWYRXRSAiApvUuZmEWxzOGvFhKVo2OsP908LRbBxR+9fxeatD8Biw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93713},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"185b6e3717c5d9d9c1be385d815b1c4ae374ce09","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup src/index.ts --format esm,cjs --dts","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.6_1748218396865_0.5398034091979624","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"eloquent-chat-widget","version":"1.0.7","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.7","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"9f8a6e4bdceb0748b1252d949b7b3167d66ad22b","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.7.tgz","fileCount":10,"integrity":"sha512-esaN5Ckkh5vZ3A1/SOjD2rJshNUrv/T1QKsRHN4pUhXcZjDMAhyQTkVj0TyhQR+SwX/Zhe2fZgsVttdHtuMU3A==","signatures":[{"sig":"MEYCIQCOBEqPdcifBce1qIRXMuGgrlbCnVFpjP0ye7afmpaHSQIhANdW7F0AbkR92ly69ztV+q6Cg+SZA13D8RB85zpJk00b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102288},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"c87a96e461473439251dbb9f5f306f921e230f47","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.7_1748219396740_0.919604511978481","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"eloquent-chat-widget","version":"1.0.8","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.8","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"6c0b929c58e54f0d2b70cd780f6ca8c3a7e5169f","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.8.tgz","fileCount":10,"integrity":"sha512-gNPMRCo2CurUZuyhUhliXAegD73U+phsJW5ysYK5EiUV55I1YHkAYuUp/aadSmRKPn/HZzxs2yffbaTCrphhkw==","signatures":[{"sig":"MEYCIQC0d1G4xGNnAwDImBSzHy+o3Cv9J8ksFLZPa9Da/sW7TAIhAO8X1zR1VmqAEj6ghVnf0D4OkmEslQQnr9erqeJq29qg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102376},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"62eac73c90bfa2cf4b87c5338816079657e25fcb","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.8_1748221216253_0.39073698615714414","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"eloquent-chat-widget","version":"1.0.9","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.9","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"687bf3ad813c660490a53306b6d1a6bbc3de2ffd","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.9.tgz","fileCount":9,"integrity":"sha512-L5p+hDpU6HMiZ9HI6PVO7z1+eBDOA8HRHTGfv0FTxEK43BmLmIt9vFsUkLFdtpQo7SQ8GPLzmBYm9qkIUoQUlA==","signatures":[{"sig":"MEYCIQC8UQwxng5fvVRlGUmYeWYOZXK+4DW71xPtrEVR+F03nAIhANxlpIKqA4AkKxezYrOqExE9L3RNESA1CPyw0JZ5Ko3y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118981},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"b85e957e90cdda83281889beccd376bc2b9a5422","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.9_1748221990367_0.797452587443706","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"eloquent-chat-widget","version":"1.0.10","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.10","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"3c4d35bc1b14f8f7ee7bb17a845175a67623164a","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.10.tgz","fileCount":9,"integrity":"sha512-a0pDBowQD8NzjCzwWczES2PDkpK4yXPl74QGuuLMO5eW8srN1axlGNd+1hhJcuKGP90Vpc5/MYTaHzMz+ngBBg==","signatures":[{"sig":"MEQCIC0RRQAnYe4LYprWOf9T8uo1TR4Pnlko6eHZGOlkErakAiBqVpd0FRaKCCI1arp6n/pAuCIUgw9Y78bI6Ac/Xx4hpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119344},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"023a3b8aeec8dc2d3caf593509807d12b2d6ee3d","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.10_1748222475131_0.8810247646887015","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"eloquent-chat-widget","version":"1.0.11","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.11","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"970f25fd7c9f712c346d452c00c2cd1d5ece09ee","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.11.tgz","fileCount":9,"integrity":"sha512-M2CC6Wf6/q+sQf1mz9x6FZCFVv190oHMWD5uQ8Beo6H3/qVvlDmVkHokQbj6aRLgwsqhuRVeXdIiXLdvtz2QSg==","signatures":[{"sig":"MEQCIAJy1AMcWK/Qgs7lrA6VDEAkjwEzpI2OBEhlQSlanxNnAiBQK69ZzkLWyeeSNLqm+4AsQlSUAX4xnrqO4WkRhqYU0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119318},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"32be8aca5b472d137c3d282a94eb6e2b7fefe637","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.11_1748224335755_0.08478051369872763","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"eloquent-chat-widget","version":"1.0.12","keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.12","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"dist":{"shasum":"94f229b48499e68e8ad9cfb3572d6f63e2bdbb7e","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.12.tgz","fileCount":9,"integrity":"sha512-xx2HZYnGpmoSOXRJZ5nwSMBdhqDDMo9mdnNt6+oN1pzvQNKOpUZTBg3TIG3+7093lUPG9XeRy1CU1o72iTzESw==","signatures":[{"sig":"MEQCICU1LI0tklKT3yH5Wl55L38jRkLFPubZmHdt0UHqUj5XAiBwzMgbm7g/4f+mTVPC4JPXFEYnHu44CRRN/1W5osPmDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119466},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"6b18bd69bf0d9a818bfa9e285aa929da649b61f9","scripts":{"dev":"tsup src/index.ts --format esm,cjs --dts --watch","lint":"eslint . --ext .ts,.tsx","build":"npm run build:css && npm run build:js","prepare":"npm run build","build:js":"tsup","build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify"},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"_npmVersion":"10.8.2","description":"A reusable embeddable chat widget built with React and TypeScript","directories":{},"_nodeVersion":"18.20.5","dependencies":{"uuid":"^11.1.0","lucide-react":"^0.511.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^7.2.0","eslint":"^9","postcss":"^8.5.3","typescript":"^5","@types/node":"^20","tailwindcss":"^4.1.7","@types/react":"^19","autoprefixer":"^10.4.21","@types/react-dom":"^19"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eloquent-chat-widget_1.0.12_1748224554421_0.2500182696642541","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"eloquent-chat-widget","version":"1.0.13","description":"A reusable embeddable chat widget built with React and TypeScript","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build:css":"tailwindcss -i ./src/chat-widget.css -o ./dist/chat-widget.css --minify","build:js":"tsup","dev":"tsup src/index.ts --format esm,cjs --dts --watch","build":"npm run build:css && npm run build:js","lint":"eslint . --ext .ts,.tsx","prepare":"npm run build"},"peerDependencies":{"react":">=17.0.0","react-dom":">=17.0.0"},"dependencies":{"lucide-react":"^0.511.0","uuid":"^11.1.0"},"devDependencies":{"@types/node":"^20","@types/react":"^19","@types/react-dom":"^19","autoprefixer":"^10.4.21","eslint":"^9","postcss":"^8.5.3","tailwindcss":"^4.1.7","tsup":"^7.2.0","typescript":"^5"},"keywords":["chat","widget","react","typescript","component","npm-package"],"author":{"name":"Seu Nome"},"license":"MIT","_id":"eloquent-chat-widget@1.0.13","gitHead":"7a8cb081afda9dcb85e1ebd2d881f2cdafab65ce","_nodeVersion":"18.20.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-yGvCty9vm/HXsE9Vr0i1RB75nzb4H50H/LTwaPhDVqhWdT1sPSkUvhmImiQy7A/w8pLVfdyC5VUyNsYpAZWFxw==","shasum":"916fa1f45b0062be1b2cc2cd838a0fc04edeb3a6","tarball":"https://registry.npmjs.org/eloquent-chat-widget/-/eloquent-chat-widget-1.0.13.tgz","fileCount":9,"unpackedSize":122339,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBvFfwI5wWvWRUugl0A/HOBu7EIHGW5YveQVHReYSeUSAiEAiSHmfJ+QuNesJW9Waei079ZtRLL0+7AsXjIqmeycND0="}]},"_npmUser":{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"},"directories":{},"maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eloquent-chat-widget_1.0.13_1748225796872_0.5889342229141636"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-25T23:21:53.539Z","modified":"2025-05-26T02:16:37.245Z","0.0.0":"2025-05-23T18:16:27.474Z","0.0.1":"2025-05-24T07:23:55.009Z","0.0.2":"2025-05-24T07:23:57.564Z","0.1.0":"2025-05-24T07:30:44.122Z","0.1.2":"2025-05-24T07:40:16.650Z","0.1.3":"2025-05-24T07:42:12.620Z","0.1.4":"2025-05-24T07:46:20.093Z","0.1.5":"2025-05-24T07:59:52.420Z","0.1.6":"2025-05-24T08:21:55.501Z","0.1.7":"2025-05-24T08:30:05.794Z","0.1.8":"2025-05-24T08:47:38.687Z","0.1.9":"2025-05-24T12:15:49.934Z","0.2.0":"2025-05-24T13:41:32.249Z","0.2.1":"2025-05-24T13:45:59.940Z","0.2.2":"2025-05-24T13:59:44.170Z","1.0.0":"2025-05-25T23:12:20.894Z","1.0.1":"2025-05-25T23:21:53.814Z","1.0.4":"2025-05-25T23:52:03.729Z","1.0.5":"2025-05-26T00:05:48.708Z","1.0.6":"2025-05-26T00:13:17.062Z","1.0.7":"2025-05-26T00:29:56.963Z","1.0.8":"2025-05-26T01:00:16.409Z","1.0.9":"2025-05-26T01:13:10.568Z","1.0.10":"2025-05-26T01:21:15.346Z","1.0.11":"2025-05-26T01:52:15.939Z","1.0.12":"2025-05-26T01:55:54.620Z","1.0.13":"2025-05-26T02:16:37.052Z"},"author":{"name":"Seu Nome"},"license":"MIT","keywords":["chat","widget","react","typescript","component","npm-package"],"description":"A reusable embeddable chat widget built with React and TypeScript","maintainers":[{"name":"matheuscpimentel","email":"matheus08.pimentel@gmail.com"}],"readme":"# 🧠 Eloquent Chat Widget\n\nA fully embeddable and customizable React chat widget powered by **Ollama** and **Llama 3**, designed for seamless integration into any web application. Built with **TypeScript**, styled according to the **Eloquent AI** design language (purple theme + logo), and published on NPM.\n\n![Chat Light Mode](https://github.com/MatheusCPimentel/eloquent-chat/blob/main/public/chat-light.png?raw=true)\n\n![Chat Dark Mode](https://github.com/MatheusCPimentel/eloquent-chat/blob/main/public/chat-dark.png?raw=true)\n\n---\n\n## 🚀 Demo and Installation\n\n### 📦 Install via NPM:\n\n```bash\nnpm install eloquent-chat-widget\n```\n\nor\n\n```bash\nyarn add eloquent-chat-widget\n```\n\n### 💡 Also available at:\n\n- NPM: [https://www.npmjs.com/package/eloquent-chat-widget](https://www.npmjs.com/package/eloquent-chat-widget?activeTab=readme)\n- GitHub: [https://github.com/MatheusCPimentel/eloquent-chat](https://github.com/MatheusCPimentel/eloquent-chat)\n\n---\n\n## ⚙️ Features\n\n- ✅ **Position selector**: bottom-right, bottom-left, top-right, or top-left.\n- ✅ **Light and dark theme**.\n- ✅ **Custom title, subtitle, placeholder, and logo.**\n- ✅ **Maintenance mode** — disables input and shows a maintenance state.\n- ✅ **Error mode** — if an error occurs, the UI allows the user to retry.\n- ✅ **Local persistence** — messages are stored locally using `localStorage`.\n- ✅ **Works with Ollama + Llama 3 locally.**\n- ✅ **Typescript support out of the box.**\n- ✅ **100% standalone styling — doesn't conflict with the host website's styles.**\n- ✅ **No need for Tailwind in the host project — styles are embedded.**\n\n---\n\n## 🎨 Customization\n\n```tsx\n<ChatWidget\n  position=\"bottom-right\" // bottom-right | bottom-left | top-right | top-left\n  theme=\"dark\" // dark | light\n  title=\"Eloquent Chat\"\n  placeholder=\"Ask me anything...\"\n  maintenanceMode={false} // true disables input (maintenance screen)\n  logo=\"/path/to/your/logo.png\" // (Optional) default is Eloquent AI logo\n  onError={(error) => console.error(error)} // (Optional) error callback\n/>\n```\n\n---\n\n## 💻 Ollama + Llama3 Setup\n\nThis widget uses **Ollama** running **Llama 3** locally.\n\n### 👉 Install Ollama:\n\n```bash\nhttps://ollama.com/download\n```\n\n### 👉 Run the Llama3 model locally:\n\n```bash\nollama pull llama3\nollama serve\n```\n\n➡️ The widget will connect to `http://localhost:11434` by default.\n\n---\n\n## 🔥 Architectural Decisions\n\n- Initially, everything was developed in a **single component**, but as complexity grew, it was refactored into **smaller, reusable components** for better readability and maintainability.\n- The business logic (message handling, API interaction, state management) became large, leading to the creation of a dedicated **custom hook (`useChat`)** to encapsulate this logic cleanly.\n- First attempted with **OpenAI API**, but realized it required a paid API key. After research, **Ollama + Llama 3** was selected for running models **locally for free**.\n- Addressed UX issues like **auto-scroll to the bottom** on new messages and the ability to **clear user messages without losing AI context**.\n\n---\n\n## 🚧 Challenges Faced\n\n- **NPM packaging with Tailwind:** By default, Tailwind needs to be configured in the consuming project. To avoid this, I embedded all the generated CSS directly into the component — meaning **no Tailwind installation is required** for users.\n- **Build separation:** Managing CSS and JS build processes separately and ensuring the dist folder was clean but not deleting generated assets — handled via `tsup.config.ts`.\n- **Component UX:** Handling scroll behavior, retry mechanisms on error, and a clear but functional maintenance mode.\n\n---\n\n## ✨ Interaction with Host Website Styles\n\nTo comply with the requirement _\"Consider how it will interact with the host website’s styles and scripts\"_, the widget:\n\n- Ships with **precompiled CSS scoped to the widget itself.**\n- Doesn't require Tailwind or any external styles in the host application.\n- Fully encapsulated — styles won't leak in or out.\n\n---\n\n## 🚀 How to Build, Package, and Publish\n\n### ✅ Clone the repo:\n\n```bash\ngit clone https://github.com/MatheusCPimentel/eloquent-chat.git\ncd eloquent-chat\n```\n\n### ✅ Install dependencies:\n\n```bash\nnpm install\n```\n\n### ✅ Build the package:\n\n```bash\nnpm run build\n```\n\n### ✅ Publish to NPM locally for testing:\n\n```bash\nnpm pack\n```\n\n➡️ This generates a `.tgz` file which can be installed into any project:\n\n```bash\nnpm install ./eloquent-chat-widget-1.0.0.tgz\n```\n\n---\n\n## 🧑‍💻 Install & Use in Any HTML Page (React-based):\n\n1. Initialize a React app (Next.js, Vite, CRA — anything).\n2. Install the widget:\n\n```bash\nnpm install eloquent-chat-widget\n```\n\n3. Import and use:\n\n```tsx\nimport { ChatWidget } from \"eloquent-chat-widget\";\nimport \"eloquent-chat-widget/dist/chat-widget.css\"; // Import styles\n\nexport default function App() {\n  return <ChatWidget />;\n}\n```\n\n---\n\n## 💡 Summary of Approach\n\n- ✅ Focused on creating a **fully reusable, framework-agnostic widget**.\n- ✅ Refactored for clarity, maintainability, and clean separation of concerns (components + hooks + services).\n- ✅ Overcame NPM packaging challenges like **Tailwind embedding, asset handling, and clean builds**.\n- ✅ Chose **Ollama + Llama3** as a free, local alternative to OpenAI.\n- ✅ Delivered a widget that’s simple to install, beautiful (Eloquent AI purple theme), and robust.\n\n---\n\n## 🧠 System Architecture\n\nThis diagram represents how the chat widget interacts with the local Ollama API (Llama 3). It covers the main states of the application, including loading, error handling, maintenance mode, and the user interaction flow.\n\n![System Architecture](https://github.com/MatheusCPimentel/eloquent-chat/blob/main/public/system_architecture.png?raw=true)\n","readmeFilename":"README.md"}