{"_id":"@aravinthansankar/chat-components","_rev":"7-8cd5495daacc0b5b9580392411fb23c9","name":"@aravinthansankar/chat-components","dist-tags":{"latest":"1.0.7"},"versions":{"0.0.1":{"name":"@aravinthansankar/chat-components","version":"0.0.1","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","_id":"@aravinthansankar/chat-components@0.0.1","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"homepage":"https://github.com/your-org/attain-chat-components#readme","bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"nx":{"targets":{"build":{"options":{"main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","outputPath":"libs/ui-components/dist","skipTypeCheck":true,"stripLeadingPaths":true},"outputs":["{options.outputPath}"],"executor":"@nx/js:swc"}},"sourceRoot":"libs/ui-components/src"},"dist":{"shasum":"d77a6e052e6413f7f8fbec1de513c27aed0dd692","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-0.0.1.tgz","fileCount":12,"integrity":"sha512-O/wgCJHRsV2JT+0vW8SGFkpFk/IrSACXADNKioQd0tiGSHjSVbnkL2kzaKM7KBDwWTg/OPSJtNGbae7ozDJHew==","signatures":[{"sig":"MEUCIQDRwDILWjLBDnmkbx84gnmuvWQmwKB355pYJ7mFJkdGXgIgNfx0TIGCl+iF6NIAgMyn2YJj7vL7mqYCZw4Ha+6mflQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41078},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","development":"./src/index.ts"},"./package.json":"./package.json"},"_npmUser":{"name":"aravinthantest","actor":{"name":"aravinthantest","type":"user","email":"aravinthansankar97@gmail.com"},"email":"aravinthansankar97@gmail.com"},"repository":{"url":"git+https://github.com/your-org/attain-chat-components.git","type":"git"},"_npmVersion":"11.3.0","description":"A framework-agnostic chat component library with TypeScript support","directories":{},"_nodeVersion":"24.1.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-components_0.0.1_1750831833113_0.6786749950298734","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@aravinthansankar/chat-components","version":"0.0.2","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","_id":"@aravinthansankar/chat-components@0.0.2","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"homepage":"https://github.com/your-org/attain-chat-components#readme","bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"nx":{"targets":{"build":{"options":{"main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","outputPath":"libs/ui-components/dist","skipTypeCheck":true,"stripLeadingPaths":true},"outputs":["{options.outputPath}"],"executor":"@nx/js:swc"}},"sourceRoot":"libs/ui-components/src"},"dist":{"shasum":"880e5479ded57cb8b8abc06252e0970b0c94d227","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-0.0.2.tgz","fileCount":12,"integrity":"sha512-yWAc1qQoAODaAHD1QdZRard1Fk6131nXbnBuHQDkYNHV5EpMvq3hs8NOHVTS/mPJiLXjA/zkqIrE1XRZDGtn5A==","signatures":[{"sig":"MEUCIQDrs7U027VEVkzc7XAYLwpVJdJl06ACGy7QXLn1v53byAIgVrM+ZA/1l2rg/Eulvnk8ZaWUpY3IlPZ6eMcpjyPEVvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41078},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","development":"./src/index.ts"},"./package.json":"./package.json"},"_npmUser":{"name":"aravinthantest","actor":{"name":"aravinthantest","type":"user","email":"aravinthansankar97@gmail.com"},"email":"aravinthansankar97@gmail.com"},"repository":{"url":"git+https://github.com/your-org/attain-chat-components.git","type":"git"},"_npmVersion":"11.3.0","description":"A framework-agnostic chat component library with TypeScript support","directories":{},"_nodeVersion":"24.1.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-components_0.0.2_1750832433765_0.3570055758294626","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@aravinthansankar/chat-components","version":"0.0.3","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","_id":"@aravinthansankar/chat-components@0.0.3","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"homepage":"https://github.com/your-org/attain-chat-components#readme","bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"nx":{"targets":{"build":{"options":{"main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","outputPath":"libs/ui-components/dist","skipTypeCheck":true,"stripLeadingPaths":true},"outputs":["{options.outputPath}"],"executor":"@nx/js:swc"}},"sourceRoot":"libs/ui-components/src"},"dist":{"shasum":"d69296960432abd4acc545fd3256885ac920ac73","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-0.0.3.tgz","fileCount":28,"integrity":"sha512-OoYkSQI1m8Z51sxOWG7qmetydPJfDY6jBtfOzKvHcovZ3glVzeDoCKQmF+qSbB/4PbejlfhOLC5K+TZ/5GqqKw==","signatures":[{"sig":"MEYCIQD2lH2a3eIoKReHQBmYIkqsLs0KSsbTTCxC62GL7ek/cgIhAJ9Mnrwme92hFU5wQRxAdyhRWOl0udxAcYMLtbG3vHl9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90780},"main":"./dist/cjs/index.js","type":"module","module":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"2d3d36a622d52b96725cbfe2e0bda24b79ff6208","scripts":{"build:all":"npm run build:esm && npm run build:cjs","build:cjs":"swc src -d dist/cjs --config-file .swcrc.cjs","build:esm":"swc src -d dist/esm --config-file .swcrc"},"_npmUser":{"name":"aravinthantest","actor":{"name":"aravinthantest","type":"user","email":"aravinthansankar97@gmail.com"},"email":"aravinthansankar97@gmail.com"},"repository":{"url":"git+https://github.com/your-org/attain-chat-components.git","type":"git"},"_npmVersion":"11.3.0","description":"A framework-agnostic chat component library with TypeScript support","directories":{},"_nodeVersion":"24.1.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-components_0.0.3_1750836761353_0.8573961741824163","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@aravinthansankar/chat-components","version":"0.0.4","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","_id":"@aravinthansankar/chat-components@0.0.4","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"homepage":"https://github.com/your-org/attain-chat-components#readme","bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"nx":{"targets":{"build":{"options":{"main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","outputPath":"libs/ui-components/dist","skipTypeCheck":true,"stripLeadingPaths":true},"outputs":["{options.outputPath}"],"executor":"@nx/js:swc"}},"sourceRoot":"libs/ui-components/src"},"dist":{"shasum":"58c739dd9d2501b14154f39cb5a78eaf1263e3a9","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-0.0.4.tgz","fileCount":40,"integrity":"sha512-XuvY8jkMjyaPMlsznFHEltjncP5Y5GlsxuU5eUE/xElSTyvNqjNqUw7N5hUSjiUqd/IKlph9J9K9wAn9zC2onQ==","signatures":[{"sig":"MEUCIQDAurL+MqH4hHF/8XVaGmeLf5VxQgFC9GymZdo3Z3AVQAIgZWVlXt3i0MCC2hOrh/2PuNjyaa4/+jsWJAkeZhMDGjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97539},"main":"./dist/cjs/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"2d3d36a622d52b96725cbfe2e0bda24b79ff6208","scripts":{"build:all":"npm run build:esm && npm run build:cjs && npm run build:types","build:cjs":"swc src -d dist/cjs --config-file .swcrc.cjs","build:esm":"swc src -d dist/esm --config-file .swcrc","build:types":"tsc --emitDeclarationOnly --declaration --project tsconfig.lib.json"},"_npmUser":{"name":"aravinthantest","actor":{"name":"aravinthantest","type":"user","email":"aravinthansankar97@gmail.com"},"email":"aravinthansankar97@gmail.com"},"repository":{"url":"git+https://github.com/your-org/attain-chat-components.git","type":"git"},"_npmVersion":"11.3.0","description":"A framework-agnostic chat component library with TypeScript support","directories":{},"_nodeVersion":"24.1.0","dependencies":{"@swc/helpers":"~0.5.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-components_0.0.4_1750837463577_0.8891500455413577","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@aravinthansankar/chat-components","version":"0.0.5","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","_id":"@aravinthansankar/chat-components@0.0.5","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"homepage":"https://github.com/your-org/attain-chat-components#readme","bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"nx":{"targets":{"build":{"options":{"main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","outputPath":"libs/ui-components/dist","skipTypeCheck":true,"stripLeadingPaths":true},"outputs":["{options.outputPath}"],"executor":"@nx/js:swc"}},"sourceRoot":"libs/ui-components/src"},"dist":{"shasum":"eb7d7cc66ddd22a6cf7c13e15d37afa8d5fd29f2","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-0.0.5.tgz","fileCount":30,"integrity":"sha512-T8i+qpX/WhDgd70oj60sKWLiiAriUrVEnLqveKhAub3ee6xDidVMzmdhERMvydgctgPC6UdqZN2WE2BmfTaGMw==","signatures":[{"sig":"MEQCIE1o6nrypCdK22kbflHx+MkbOr7qRgsIxvtdzN9wJk84AiAuMbb7wC4CyH03j/z52Pzn6xJjztPbRUE4uHhFxHsinA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65790},"main":"./dist/cjs/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"gitHead":"2d3d36a622d52b96725cbfe2e0bda24b79ff6208","scripts":{"build:all":"npm run build:esm && npm run build:cjs && npm run build:types","build:cjs":"swc src -d dist/cjs --config-file .swcrc.cjs","build:esm":"swc src -d dist/esm --config-file .swcrc","build:types":"tsc --emitDeclarationOnly --declaration --project tsconfig.lib.json"},"_npmUser":{"name":"aravinthantest","actor":{"name":"aravinthantest","type":"user","email":"aravinthansankar97@gmail.com"},"email":"aravinthansankar97@gmail.com"},"repository":{"url":"git+https://github.com/your-org/attain-chat-components.git","type":"git"},"_npmVersion":"11.3.0","description":"A framework-agnostic chat component library with TypeScript support","directories":{},"_nodeVersion":"24.1.0","dependencies":{"@swc/helpers":"~0.5.11","@aravinthansankar/chat-components":"^0.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@swc/cli":"^0.6.0","@swc/core":"^1.5.29","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-components_0.0.5_1750838867817_0.22854046747197443","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aravinthansankar/chat-components","version":"1.0.6","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","_id":"@aravinthansankar/chat-components@1.0.6","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"homepage":"https://github.com/your-org/attain-chat-components#readme","bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"nx":{"targets":{"build":{"options":{"main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","outputPath":"libs/ui-components/dist","skipTypeCheck":true,"stripLeadingPaths":true},"outputs":["{options.outputPath}"],"executor":"@nx/js:swc"}},"sourceRoot":"libs/ui-components/src"},"dist":{"shasum":"f7a5125bd5586036764cf807aed57705754def86","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-1.0.6.tgz","fileCount":30,"integrity":"sha512-cIhanXYofxNNpeVHpkpHsKMeES9wVZ1/KII7in9ApiwpMObOouPUolBJPgxmhGjC/uyJ24rPFL0RN2m9O7FSKA==","signatures":[{"sig":"MEUCIQCThcu0xwWVhVUee87N+IraTRMyUE3VE15oc/TlEExZlgIgWDXzhXz9DwRTNWFGVqxbnpiwQ1quKajxjjIye/2JGW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65806},"main":"./dist/cjs/src/index.js","type":"module","types":"./dist/types/index.d.ts","module":"./dist/esm/src/index.js","exports":{"import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"},"gitHead":"2d3d36a622d52b96725cbfe2e0bda24b79ff6208","scripts":{"build:all":"npm run build:esm && npm run build:cjs && npm run build:types","build:cjs":"swc src -d dist/cjs --config-file .swcrc.cjs","build:esm":"swc src -d dist/esm --config-file .swcrc","build:types":"tsc --emitDeclarationOnly --declaration --project tsconfig.lib.json"},"_npmUser":{"name":"aravinthantest","actor":{"name":"aravinthantest","type":"user","email":"aravinthansankar97@gmail.com"},"email":"aravinthansankar97@gmail.com"},"repository":{"url":"git+https://github.com/your-org/attain-chat-components.git","type":"git"},"_npmVersion":"11.3.0","description":"A framework-agnostic chat component library with TypeScript support","directories":{},"_nodeVersion":"24.1.0","dependencies":{"@swc/helpers":"~0.5.11","@aravinthansankar/chat-components":"^0.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@swc/cli":"^0.6.0","@swc/core":"^1.5.29","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^16.1.0","@testing-library/jest-dom":"^6.6.3"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/chat-components_1.0.6_1750839154397_0.36249588615295103","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@aravinthansankar/chat-components","version":"1.0.7","description":"A framework-agnostic chat component library with TypeScript support","type":"module","main":"./dist/cjs/src/index.js","module":"./dist/esm/src/index.js","types":"./dist/types/index.d.ts","exports":{"import":"./dist/esm/src/index.js","require":"./dist/cjs/src/index.js"},"keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"author":{"name":"Attain AI"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/your-org/attain-chat-components.git"},"bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"homepage":"https://github.com/your-org/attain-chat-components#readme","publishConfig":{"access":"public"},"nx":{"sourceRoot":"libs/ui-components/src","targets":{"build":{"executor":"@nx/js:swc","outputs":["{options.outputPath}"],"options":{"outputPath":"libs/ui-components/dist","main":"libs/ui-components/src/index.ts","tsConfig":"libs/ui-components/tsconfig.lib.json","skipTypeCheck":true,"stripLeadingPaths":true}}}},"scripts":{"build:esm":"swc src -d dist/esm --config-file .swcrc","build:cjs":"swc src -d dist/cjs --config-file .swcrc.cjs","build:types":"tsc --emitDeclarationOnly --declaration --project tsconfig.lib.json","build:all":"npm run build:esm && npm run build:cjs && npm run build:types"},"dependencies":{"@aravinthansankar/chat-components":"^0.0.4","@swc/helpers":"~0.5.11"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"devDependencies":{"@swc/cli":"^0.6.0","@swc/core":"^1.5.29","@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.1.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0"},"_id":"@aravinthansankar/chat-components@1.0.7","gitHead":"2d3d36a622d52b96725cbfe2e0bda24b79ff6208","_nodeVersion":"24.1.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-BlaVtfhUOoawq6hcBFfpuCB5OLaUvuYcaf6WsRRk1pViuNC7pSXi/VAXv+BwWVRtbC5+zEdr2HnqgpznBNzp/Q==","shasum":"3817a93f26360b469468001df262021beb7bdd87","tarball":"https://registry.npmjs.org/@aravinthansankar/chat-components/-/chat-components-1.0.7.tgz","fileCount":30,"unpackedSize":65763,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDzXn4ikNXi9ukg6AXfg45EX0DLBuE7jXM0EhWvCu744AiEA78172VIikNrCsx9SZzdo4Ylzs/SWp5fFDApW5CvuRRg="}]},"_npmUser":{"name":"aravinthantest","email":"aravinthansankar97@gmail.com","actor":{"name":"aravinthantest","email":"aravinthansankar97@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chat-components_1.0.7_1750892577802_0.4716585662245816"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-25T06:10:33.008Z","modified":"2025-06-25T23:02:58.161Z","0.0.1":"2025-06-25T06:10:33.315Z","0.0.2":"2025-06-25T06:20:33.949Z","0.0.3":"2025-06-25T07:32:41.532Z","0.0.4":"2025-06-25T07:44:23.782Z","0.0.5":"2025-06-25T08:07:47.982Z","1.0.6":"2025-06-25T08:12:34.546Z","1.0.7":"2025-06-25T23:02:57.975Z"},"bugs":{"url":"https://github.com/your-org/attain-chat-components/issues"},"author":{"name":"Attain AI"},"license":"MIT","homepage":"https://github.com/your-org/attain-chat-components#readme","keywords":["chat","messaging","ui","components","typescript","framework-agnostic","react","angular"],"repository":{"type":"git","url":"git+https://github.com/your-org/attain-chat-components.git"},"description":"A framework-agnostic chat component library with TypeScript support","maintainers":[{"name":"aravinthantest","email":"aravinthansankar97@gmail.com"}],"readme":"# @attain/chat-components\n\nA framework-agnostic chat component library with full TypeScript support, designed to be used across different React and Angular applications.\n\n## Features\n\n- **Complete Chat Interface**: Full-featured chat component with message bubbles, input, and attachments\n- **Framework-agnostic**: Works with React, Angular, and other frameworks\n- **Full TypeScript support**: Complete type definitions for all components\n- **Customizable**: Easy theming and styling customization\n- **Accessible**: Built with accessibility in mind\n- **Tree-shakeable**: Only import what you need\n- **File Attachments**: Support for images, documents, and other file types\n- **Real-time Features**: Typing indicators, message status, and timestamps\n- **Dark/Light Themes**: Built-in theme support\n\n## Installation\n\n```bash\nnpm install @attain/chat-components\n```\n\n## Usage\n\n### Basic Chat Component\n\n```tsx\nimport { Chat, ChatMessage } from '@attain/chat-components';\nimport { useState } from 'react';\n\nfunction App() {\n  const [messages, setMessages] = useState<ChatMessage[]>([\n    {\n      id: '1',\n      text: 'Hello! How can I help you today?',\n      sender: 'bot',\n      timestamp: new Date(),\n      metadata: {\n        name: 'Support Bot',\n        avatar: '/bot-avatar.png'\n      }\n    }\n  ]);\n\n  const handleSendMessage = (message: string) => {\n    const newMessage: ChatMessage = {\n      id: Date.now().toString(),\n      text: message,\n      sender: 'user',\n      timestamp: new Date(),\n      status: 'sending'\n    };\n    \n    setMessages(prev => [...prev, newMessage]);\n    \n    // Simulate bot response\n    setTimeout(() => {\n      const botResponse: ChatMessage = {\n        id: (Date.now() + 1).toString(),\n        text: 'Thanks for your message! I\\'ll get back to you soon.',\n        sender: 'bot',\n        timestamp: new Date(),\n        metadata: {\n          name: 'Support Bot',\n          avatar: '/bot-avatar.png'\n        }\n      };\n      setMessages(prev => [...prev, botResponse]);\n    }, 1000);\n  };\n\n  return (\n    <div className=\"h-screen p-4\">\n      <Chat\n        messages={messages}\n        onSendMessage={handleSendMessage}\n        placeholder=\"Type your message...\"\n        theme=\"light\"\n        maxHeight=\"600px\"\n        allowAttachments={true}\n        attachmentTypes={['image/*', 'application/pdf']}\n        maxAttachmentSize={10}\n      />\n    </div>\n  );\n}\n```\n\n### Advanced Usage with File Uploads\n\n```tsx\nimport { Chat, ChatMessage, ChatAttachment } from '@attain/chat-components';\n\nfunction App() {\n  const handleAttachmentUpload = async (file: File): Promise<string> => {\n    // Upload file to your server\n    const formData = new FormData();\n    formData.append('file', file);\n    \n    const response = await fetch('/api/upload', {\n      method: 'POST',\n      body: formData\n    });\n    \n    const { url } = await response.json();\n    return url;\n  };\n\n  const handleSendMessage = (message: string) => {\n    // Handle message sending with attachments\n    console.log('Sending message:', message);\n  };\n\n  return (\n    <Chat\n      messages={messages}\n      onSendMessage={handleSendMessage}\n      onAttachmentUpload={handleAttachmentUpload}\n      allowAttachments={true}\n      attachmentTypes={['image/*', 'application/pdf', 'text/plain']}\n      maxAttachmentSize={5} // 5MB\n      showTypingIndicator={true}\n      typingUsers={['John', 'Jane']}\n      theme=\"dark\"\n    />\n  );\n}\n```\n\n## Components\n\n### Chat\n\nThe main chat component that includes message display, input, and file upload functionality.\n\n**Props:**\n- `messages`: ChatMessage[] - Array of chat messages\n- `onSendMessage`: (message: string) => void - Callback when user sends a message\n- `onAttachmentUpload?`: (file: File) => Promise<string> - Optional file upload handler\n- `placeholder?`: string - Input placeholder text\n- `disabled?`: boolean - Disable the chat input\n- `loading?`: boolean - Show loading state\n- `theme?`: 'light' | 'dark' - Theme variant\n- `className?`: string - Additional CSS classes\n- `maxHeight?`: string - Maximum height of the chat container\n- `showTypingIndicator?`: boolean - Show typing indicators\n- `typingUsers?`: string[] - List of users currently typing\n- `allowAttachments?`: boolean - Enable file attachments\n- `attachmentTypes?`: string[] - Allowed file types\n- `maxAttachmentSize?`: number - Maximum file size in MB\n\n### ChatBubble\n\nIndividual message bubble component.\n\n**Props:**\n- `message`: ChatMessage - The message to display\n- `isOwnMessage`: boolean - Whether this is the current user's message\n- `showAvatar?`: boolean - Show user avatar\n- `showTimestamp?`: boolean - Show message timestamp\n- `theme?`: 'light' | 'dark' - Theme variant\n\n### ChatInput\n\nInput component for sending messages and uploading files.\n\n**Props:**\n- `onSend`: (message: string) => void - Send message callback\n- `onAttachmentUpload?`: (file: File) => Promise<string> - File upload handler\n- `placeholder?`: string - Input placeholder\n- `disabled?`: boolean - Disable input\n- `loading?`: boolean - Show loading state\n- `allowAttachments?`: boolean - Enable file attachments\n- `attachmentTypes?`: string[] - Allowed file types\n- `maxAttachmentSize?`: number - Maximum file size\n\n## Types\n\n### ChatMessage\n\n```typescript\ninterface ChatMessage {\n  id: string;\n  text: string;\n  sender: 'user' | 'bot' | 'system';\n  timestamp: Date;\n  status?: 'sending' | 'sent' | 'delivered' | 'read' | 'error';\n  metadata?: {\n    avatar?: string;\n    name?: string;\n    typing?: boolean;\n    attachments?: ChatAttachment[];\n  };\n}\n```\n\n### ChatAttachment\n\n```typescript\ninterface ChatAttachment {\n  id: string;\n  type: 'image' | 'file' | 'audio' | 'video';\n  url: string;\n  name: string;\n  size?: number;\n  thumbnail?: string;\n}\n```\n\n## Theming\n\nThe library includes a comprehensive theming system:\n\n```tsx\nimport { Theme, defaultTheme } from '@attain/chat-components';\n\nconst customTheme: Theme = {\n  colors: {\n    primary: '#your-primary-color',\n    secondary: '#your-secondary-color',\n    background: '#your-background-color',\n    surface: '#your-surface-color',\n    text: {\n      primary: '#your-text-color',\n      secondary: '#your-secondary-text-color',\n      disabled: '#your-disabled-text-color',\n    },\n  },\n  // ... other theme customizations\n};\n```\n\n## Framework Integration\n\n### React\n\n```tsx\nimport { Chat } from '@attain/chat-components';\n```\n\n### Angular\n\nFor Angular, you'll need to create a wrapper component:\n\n```typescript\n// chat.component.ts\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'app-chat',\n  template: '<div #chatContainer></div>'\n})\nexport class ChatComponent {\n  @Input() messages: any[] = [];\n  @Output() sendMessage = new EventEmitter<string>();\n\n  ngAfterViewInit() {\n    // Initialize React component in Angular\n    // You'll need to use a library like react2angular or create a custom wrapper\n  }\n}\n```\n\n## Development\n\n### Building the Library\n\n```bash\n# Build the library\nnx build ui-components\n\n# Run tests\nnx test ui-components\n\n# Lint the code\nnx lint ui-components\n```\n\n### Publishing\n\n```bash\n# Build and publish to npm\ncd libs/ui-components\n./scripts/publish.sh\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for new functionality\n5. Submit a pull request\n\n## License\n\nMIT\n","readmeFilename":"README.md"}