{"_id":"@aligfx/quay","name":"@aligfx/quay","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aligfx/quay","version":"0.1.0","description":"Quay Chat — open-source site chat widget that docks to any channel (Slack, Telegram, webhook, or your own backend).","license":"MIT","author":{"name":"Ali Al-Janabi"},"homepage":"https://github.com/aligfx/quay#readme","repository":{"type":"git","url":"git+https://github.com/aligfx/quay.git"},"bugs":{"url":"https://github.com/aligfx/quay/issues"},"keywords":["chat","widget","live-chat","slack","telegram","webhook","customer-support","quay"],"type":"module","sideEffects":["*.css"],"main":"./dist/quay.cjs","module":"./dist/quay.js","types":"./dist/quay.d.ts","exports":{".":{"types":"./dist/quay.d.ts","import":"./dist/quay.js","require":"./dist/quay.cjs"},"./style.css":"./dist/quay.css","./package.json":"./package.json"},"unpkg":"./dist/quay.iife.js","jsdelivr":"./dist/quay.iife.js","scripts":{"build":"tsup && node scripts/copy-css.mjs","build:site":"node scripts/build-site.mjs","dev":"node demo/mock-server.mjs","demo":"node demo/mock-server.mjs","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"gitHead":"7a7b27131fa2fea970b248d829e13942a9c1a01d","_id":"@aligfx/quay@0.1.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-LrjTEqr3EduNPwIF72jk6CP5wObmG1yCrVeJBPhbDkjaHMj7S9DN/LQhKlAZ4GZsb3kk+GaMQT1PO6UuADcQFg==","shasum":"6bab8cb82740df4e6fc87d512e5048be02e928a9","tarball":"https://registry.npmjs.org/@aligfx/quay/-/quay-0.1.0.tgz","fileCount":9,"unpackedSize":217773,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCeEimK2b8eTe8focQXnfMqaQa+B47PtseXry2D2RKM+AIgMXs740YUJUD32mT7vUOxCHWnu9FEMLNEoyuOKI+yN5A="}]},"_npmUser":{"name":"aligfx","email":"hi@aligfx.com"},"directories":{},"maintainers":[{"name":"aligfx","email":"hi@aligfx.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/quay_0.1.0_1787590749631_0.5494211431124267"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-24T16:59:09.383Z","0.1.0":"2026-08-24T16:59:09.865Z","modified":"2026-08-24T16:59:10.060Z"},"maintainers":[{"name":"aligfx","email":"hi@aligfx.com"}],"description":"Quay Chat — open-source site chat widget that docks to any channel (Slack, Telegram, webhook, or your own backend).","homepage":"https://github.com/aligfx/quay#readme","keywords":["chat","widget","live-chat","slack","telegram","webhook","customer-support","quay"],"repository":{"type":"git","url":"git+https://github.com/aligfx/quay.git"},"author":{"name":"Ali Al-Janabi"},"bugs":{"url":"https://github.com/aligfx/quay/issues"},"license":"MIT","readme":"<p align=\"center\">\n  <img src=\"docs/media/quay-chat-og.jpg\" alt=\"Quay Chat\" width=\"100%\" />\n</p>\n\n# Quay Chat\n\nOpen-source site chat widget. Visitors message from your site; you answer in Slack, Telegram, a webhook, or your own backend.\n\nQuay is the UI. You bring the backend. Point `endpoint` at something that speaks the [Quay HTTP protocol](./docs/protocol.md), or start from the [example adapters](./examples/adapters/).\n\n> Desktop-only for now (large screens with fine pointers). Mobile support comes later.\n\n## Install\n\n```bash\nnpm i @aligfx/quay\n```\n\n```ts\nimport { createQuay } from \"@aligfx/quay\";\nimport \"@aligfx/quay/style.css\";\n\ncreateQuay({\n  endpoint: \"https://chat.example.com\",\n  title: \"Support\",\n  avatar: \"/avatar.png\",\n  position: \"right\",\n  theme: {\n    panel: \"#141416\",\n    well: \"#1a1a1d\",\n    fg: \"#ececee\",\n    muted: \"#8b8b93\",\n  },\n});\n```\n\n### Script tag (CDN)\n\n```html\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@aligfx/quay/dist/quay.css\" />\n<script src=\"https://cdn.jsdelivr.net/npm/@aligfx/quay/dist/quay.iife.js\"></script>\n<script>\n  Quay.init({\n    endpoint: \"https://chat.example.com\",\n    title: \"Support\",\n  });\n</script>\n```\n\n## Quick demo\n\n**Live:** [aligfx.github.io/quay](https://aligfx.github.io/quay/)\n\nLocal:\n\n```bash\ngit clone https://github.com/aligfx/quay.git\ncd quay\nnpm install\nnpm run build\nnpm run demo\n```\n\nOpen the URL printed in the terminal. Pushing to `main` rebuilds the hosted demo via GitHub Pages.\n\n## Configuration\n\n| Option | Type | Default | Description |\n| --- | --- | --- | --- |\n| `endpoint` | `string` | — | **Required.** Backend base URL |\n| `title` | `string` | `\"Chat\"` | Panel title |\n| `avatar` | `string` | — | Avatar image URL |\n| `hostLabel` | `string` | `title` / `\"Host\"` | Label on host messages |\n| `emptyText` | `string` | — | Empty-state copy |\n| `placeholder` | `string` | — | Composer placeholder |\n| `subtitle` | `string` | — | Optional line on the name gate |\n| `position` | `\"left\" \\| \"right\"` | `\"right\"` | Dock side |\n| `storageKey` | `string` | `\"quay_chat_v1\"` | localStorage key |\n| `theme` | `object` | — | CSS token overrides (`fg` → `--quay-fg`) |\n| `desktopOnly` | `boolean` | `true` | Skip mount on non-desktop |\n\nFull reference: [docs/configuration.md](./docs/configuration.md)\n\n## Bring your own channel\n\n1. Deploy something that implements [docs/protocol.md](./docs/protocol.md)\n2. Or adapt an example:\n   - [Generic webhook](./examples/adapters/generic-webhook.md)\n   - [Slack Incoming Webhook](./examples/adapters/slack.md)\n   - [Telegram Bot](./examples/adapters/telegram.md)\n\n## Docs\n\n- [Configuration](./docs/configuration.md)\n- [HTTP protocol](./docs/protocol.md)\n- [Theming](./docs/theming.md)\n- [Adapters](./docs/adapters.md)\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md","_rev":"1-2ec6d86ba604a125be744cf9fc021b6e"}