{"_id":"@caitdesk/viewer","_rev":"5-6b3ca485b78ba64c07e7a314cd9d2422","name":"@caitdesk/viewer","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@caitdesk/viewer","version":"0.1.0","keywords":["caitdesk","captions","viewer","svelte","websocket","real-time"],"license":"Proprietary","_id":"@caitdesk/viewer@0.1.0","maintainers":[{"name":"leakz34","email":"mickael@1capapp.com"}],"dist":{"shasum":"2c6b393a6d89d840b6e5e9a40e974702d4e04e75","tarball":"https://registry.npmjs.org/@caitdesk/viewer/-/viewer-0.1.0.tgz","fileCount":110,"integrity":"sha512-KjpZhy5nrnpAMVdcBTIMFJNEA40RwOIi3/FkSG9Dbbhdr3wAflsNFwmvyOE+7HQLE3GVNIkzOT/SZAhXqc4S3A==","signatures":[{"sig":"MEQCIFtE8qdXh2xKj4KvGfDf8R7fNd8J9Z5qY1rvjoJP2aN2AiA0KfiPpCSmT3LPVZZAgyzs5kEIfyJ4TOGwHEm6fRTGjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129724},"type":"module","shasum":"2c6b393a6d89d840b6e5e9a40e974702d4e04e75","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./styles/base.css":"./dist/styles/base.css","./styles/theme-shared.css":"./dist/styles/theme-shared.css","./styles/theme-viewer.css":"./dist/styles/theme-viewer.css"},"scripts":{"dev":"svelte-package -i src --watch","test":"vitest run","build":"svelte-package -i src","typecheck":"svelte-check --tsconfig ./tsconfig.json","release:major":"bun pm version major && bun publish --access public","release:minor":"bun pm version minor && bun publish --access public","release:patch":"bun pm version patch && bun publish --access public","prepublishOnly":"bun run build"},"_npmUser":{"name":"leakz34","email":"mickael@1capapp.com"},"_integrity":"sha512-KjpZhy5nrnpAMVdcBTIMFJNEA40RwOIi3/FkSG9Dbbhdr3wAflsNFwmvyOE+7HQLE3GVNIkzOT/SZAhXqc4S3A==","repository":{"url":"https://github.com/caitdesk/caitdesk","type":"git","directory":"packages/viewer"},"_npmVersion":"10.8.3","description":"Caption display, settings panel, and WebSocket source for CaitDesk viewers","directories":{},"_nodeVersion":"24.3.0","dependencies":{"clsx":"^2.1.1","tailwind-merge":"^3.4.0","tailwind-variants":"^3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"svelte":"^5.16.0","vitest":"^3.0.0","bits-ui":"^2.14.4","typescript":"^5.7.2","svelte-check":"^4.1.1","@lucide/svelte":"^0.561.0","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0","bits-ui":"^2.14.0","tailwindcss":"^4.0.0","@lucide/svelte":"^0.500.0","tw-animate-css":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/viewer_0.1.0_1772798900633_0.7097250020330932","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @caitdesk/captions-svelte"},"0.1.1":{"name":"@caitdesk/viewer","version":"0.1.1","keywords":["caitdesk","captions","viewer","svelte","websocket","real-time"],"license":"Proprietary","_id":"@caitdesk/viewer@0.1.1","maintainers":[{"name":"leakz34","email":"mickael@1capapp.com"}],"dist":{"shasum":"40fa0a759e20b3492345caf04b303655fd7ed5a4","tarball":"https://registry.npmjs.org/@caitdesk/viewer/-/viewer-0.1.1.tgz","fileCount":113,"integrity":"sha512-yPWXCCCgxo6tBDV9MYyXhO9N84Y7Kz9LpzOd5VZbmeiJ/QR7rIfDYCIs43jsmLonXZ/bRpbrXyqUMzKhZuvHiw==","signatures":[{"sig":"MEQCIEQAnXLchL9MxKPMLfC+JmwuPbnAidTlL0Px/AHbo+ALAiADGzv3XzeWiR97Cs1DIz5ZvmmEebNnz8oHsYpN+OwXuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134569},"type":"module","shasum":"40fa0a759e20b3492345caf04b303655fd7ed5a4","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./styles/base.css":"./dist/styles/base.css","./styles/theme-shared.css":"./dist/styles/theme-shared.css","./styles/theme-viewer.css":"./dist/styles/theme-viewer.css"},"scripts":{"dev":"svelte-package -i src --watch","test":"vitest run","build":"svelte-package -i src","typecheck":"svelte-check --tsconfig ./tsconfig.json","release:major":"bun pm version major && bun publish --access public","release:minor":"bun pm version minor && bun publish --access public","release:patch":"bun pm version patch && bun publish --access public","prepublishOnly":"bun run build"},"_npmUser":{"name":"leakz34","email":"mickael@1capapp.com"},"_integrity":"sha512-yPWXCCCgxo6tBDV9MYyXhO9N84Y7Kz9LpzOd5VZbmeiJ/QR7rIfDYCIs43jsmLonXZ/bRpbrXyqUMzKhZuvHiw==","repository":{"url":"https://github.com/caitdesk/caitdesk","type":"git","directory":"packages/viewer"},"_npmVersion":"10.8.3","description":"Caption display, settings panel, and WebSocket source for CaitDesk viewers","directories":{},"_nodeVersion":"24.3.0","dependencies":{"clsx":"^2.1.1","tailwind-merge":"^3.4.0","tailwind-variants":"^3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"svelte":"^5.16.0","vitest":"^3.0.0","bits-ui":"^2.14.4","typescript":"^5.7.2","svelte-check":"^4.1.1","@lucide/svelte":"^0.561.0","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0","bits-ui":"^2.14.0","tailwindcss":"^4.0.0","@lucide/svelte":"^0.500.0","tw-animate-css":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/viewer_0.1.1_1772840777673_0.8169571362874013","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @caitdesk/captions-svelte"},"0.1.2":{"name":"@caitdesk/viewer","version":"0.1.2","keywords":["caitdesk","captions","viewer","svelte","websocket","real-time"],"license":"Proprietary","_id":"@caitdesk/viewer@0.1.2","maintainers":[{"name":"leakz34","email":"mickael@1capapp.com"}],"dist":{"shasum":"3b47b1cae1eb1ac94d50ecde99dd1ae428071ab8","tarball":"https://registry.npmjs.org/@caitdesk/viewer/-/viewer-0.1.2.tgz","fileCount":114,"integrity":"sha512-PKIoNYJxr1LGncam3XeF+KtuQ3fez2RurIKvhCxOOgXbxBzkedzeQK3rCAkuNdq3JdPbkOmT4R0fkUZMoGHUiA==","signatures":[{"sig":"MEUCIA0AOjPiDzeJFBT9SLkBEhTjGNbaYNWBTfRwTyBFQuMCAiEA+8ppIaWjr3HKE/296QDqTgJbR7jYeplCg3DqNz+hzLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135517},"type":"module","shasum":"3b47b1cae1eb1ac94d50ecde99dd1ae428071ab8","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./styles/base.css":"./dist/styles/base.css","./styles/theme-shared.css":"./dist/styles/theme-shared.css","./styles/theme-viewer.css":"./dist/styles/theme-viewer.css"},"scripts":{"dev":"svelte-package -i src --watch","test":"vitest run","build":"svelte-package -i src","typecheck":"svelte-check --tsconfig ./tsconfig.json","release:major":"bun pm version major && bun publish --access public","release:minor":"bun pm version minor && bun publish --access public","release:patch":"bun pm version patch && bun publish --access public","prepublishOnly":"bun run build"},"_npmUser":{"name":"leakz34","email":"mickael@1capapp.com"},"caitdesk":{"protocol":1},"_integrity":"sha512-PKIoNYJxr1LGncam3XeF+KtuQ3fez2RurIKvhCxOOgXbxBzkedzeQK3rCAkuNdq3JdPbkOmT4R0fkUZMoGHUiA==","repository":{"url":"https://github.com/caitdesk/caitdesk","type":"git","directory":"packages/viewer"},"_npmVersion":"10.8.3","description":"Caption display, settings panel, and WebSocket source for CaitDesk viewers","directories":{},"_nodeVersion":"24.3.0","dependencies":{"clsx":"^2.1.1","tailwind-merge":"^3.4.0","tailwind-variants":"^3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"svelte":"^5.16.0","vitest":"^3.0.0","bits-ui":"^2.14.4","typescript":"^5.7.2","svelte-check":"^4.1.1","@lucide/svelte":"^0.561.0","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0","bits-ui":"^2.14.0","tailwindcss":"^4.0.0","@lucide/svelte":"^0.500.0","tw-animate-css":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/viewer_0.1.2_1784327801007_0.1949439799512862","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @caitdesk/captions-svelte"},"0.1.3":{"name":"@caitdesk/viewer","version":"0.1.3","keywords":["caitdesk","captions","viewer","svelte","websocket","real-time"],"license":"Proprietary","_id":"@caitdesk/viewer@0.1.3","maintainers":[{"name":"leakz34","email":"mickael@1capapp.com"}],"dist":{"shasum":"11029620c87b29b7e990a173956a9d9b03759ff9","tarball":"https://registry.npmjs.org/@caitdesk/viewer/-/viewer-0.1.3.tgz","fileCount":114,"integrity":"sha512-VphVHMJZd9FVVKAdW+nf6iJGXRBLavfLs4wqX5XS4o22N+jAqTD3/pSL0A5XLdpMZHSp5VQfwIa3dh4xr90ZUQ==","signatures":[{"sig":"MEYCIQC2fxuzSTkLj5HWjGfdhGepyTGDsdtb1uzZ+dETEak69wIhAL8QFfiq/ejzIsex+NqqyV+VsNKLeWucTRH4UUjmF/oG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135974},"type":"module","shasum":"11029620c87b29b7e990a173956a9d9b03759ff9","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./styles/base.css":"./dist/styles/base.css","./styles/theme-shared.css":"./dist/styles/theme-shared.css","./styles/theme-viewer.css":"./dist/styles/theme-viewer.css"},"scripts":{"dev":"svelte-package -i src --watch","test":"vitest run","build":"svelte-package -i src","typecheck":"svelte-check --tsconfig ./tsconfig.json","release:major":"bun pm version major && bun publish --access public","release:minor":"bun pm version minor && bun publish --access public","release:patch":"bun pm version patch && bun publish --access public","prepublishOnly":"bun run build"},"_npmUser":{"name":"leakz34","email":"mickael@1capapp.com"},"caitdesk":{"protocol":1},"_integrity":"sha512-VphVHMJZd9FVVKAdW+nf6iJGXRBLavfLs4wqX5XS4o22N+jAqTD3/pSL0A5XLdpMZHSp5VQfwIa3dh4xr90ZUQ==","repository":{"url":"https://github.com/caitdesk/caitdesk","type":"git","directory":"packages/viewer"},"_npmVersion":"10.8.3","description":"Caption display, settings panel, and WebSocket source for CaitDesk viewers","directories":{},"_nodeVersion":"24.3.0","dependencies":{"clsx":"^2.1.1","tailwind-merge":"^3.4.0","tailwind-variants":"^3.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"svelte":"^5.16.0","vitest":"^3.0.0","bits-ui":"^2.14.4","typescript":"^5.7.2","svelte-check":"^4.1.1","@lucide/svelte":"^0.561.0","@sveltejs/package":"^2.3.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"peerDependencies":{"svelte":"^5.0.0","bits-ui":"^2.14.0","tailwindcss":"^4.0.0","@lucide/svelte":"^0.500.0","tw-animate-css":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/viewer_0.1.3_1784623937447_0.095614038361159","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @caitdesk/captions-svelte"}},"time":{"created":"2026-03-06T12:08:20.524Z","modified":"2026-07-22T14:33:26.069Z","0.1.0":"2026-03-06T12:08:20.801Z","0.1.1":"2026-03-06T23:46:17.832Z","0.1.2":"2026-07-17T22:36:41.148Z","0.1.3":"2026-07-21T08:52:17.591Z"},"license":"Proprietary","keywords":["caitdesk","captions","viewer","svelte","websocket","real-time"],"repository":{"url":"https://github.com/caitdesk/caitdesk","type":"git","directory":"packages/viewer"},"description":"Caption display, settings panel, and WebSocket source for CaitDesk viewers","maintainers":[{"name":"leakz34","email":"mickael@1capapp.com"}],"readme":"# @caitdesk/viewer\r\n\r\nCaption display components, settings panel, and WebSocket source for CaitDesk viewers.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @caitdesk/viewer\r\n# Peer dependencies\r\nnpm install svelte bits-ui @lucide/svelte tailwindcss tw-animate-css\r\n```\r\n\r\n## Quick Start\r\n\r\nDrop-in `CaptionViewer` handles connection, display, and settings:\r\n\r\n```svelte\r\n<script>\r\n  import { CaptionViewer } from '@caitdesk/viewer';\r\n</script>\r\n\r\n<CaptionViewer\r\n  wsUrl=\"wss://broadcast.example.com/ws?ticket=...\"\r\n  eventId=\"evt-123\"\r\n  eventStatus=\"live\"\r\n/>\r\n```\r\n\r\n## CSS Setup\r\n\r\nImport the theme CSS in your app's stylesheet:\r\n\r\n```css\r\n@import \"tailwindcss\";\r\n@import \"@caitdesk/viewer/styles/base.css\";\r\n@import \"@caitdesk/viewer/styles/theme-shared.css\";\r\n@import \"@caitdesk/viewer/styles/theme-viewer.css\";\r\n\r\n/* Include viewer package in Tailwind source scanning */\r\n@source \"node_modules/@caitdesk/viewer/dist/**/*.{svelte,js}\";\r\n```\r\n\r\n## Individual Components\r\n\r\nFor more control, use the individual building blocks:\r\n\r\n```svelte\r\n<script>\r\n  import {\r\n    CaptionDisplay,\r\n    CaptionSettingsPanel,\r\n    createBroadcastCaptionSource,\r\n    createCaptionSettingsStore,\r\n    VIEWER_FIELDS,\r\n    EVENT_STATUS,\r\n  } from '@caitdesk/viewer';\r\n</script>\r\n```\r\n\r\n### Components\r\n\r\n| Component | Description |\r\n|-----------|-------------|\r\n| `CaptionViewer` | All-in-one: connects WebSocket, renders captions, shows settings gear |\r\n| `CaptionDisplay` | Caption renderer with transcript/subtitle modes, stream flow, auto-scroll |\r\n| `CaptionPreview` | Lightweight style preview with sample text |\r\n| `CaptionSettingsPanel` | Sheet drawer for editing caption display settings |\r\n\r\n### Source\r\n\r\n| Export | Description |\r\n|--------|-------------|\r\n| `createBroadcastCaptionSource(opts)` | WebSocket client with auto-reconnect, ping, latency tracking |\r\n\r\n### Store\r\n\r\n| Export | Description |\r\n|--------|-------------|\r\n| `createCaptionSettingsStore(eventId, defaults?)` | 3-layer settings merge: system defaults -> event -> localStorage |\r\n\r\n### Settings\r\n\r\n| Export | Description |\r\n|--------|-------------|\r\n| `VIEWER_FIELDS` | Field descriptors for caption display + style settings |\r\n| `groupSettingsFields(fields)` | Group fields by tab (Display / Styles) |\r\n| `formatSettingsValue(field, value)` | Format a value for read-only display |\r\n\r\n### Types\r\n\r\n| Export | Description |\r\n|--------|-------------|\r\n| `CaptionDisplaySettings` | All caption appearance options |\r\n| `CaptionSource` | Interface for any caption feed |\r\n| `BroadcastCaptionSource` | Extended source with viewer count, language selection |\r\n| `EVENT_STATUS` | Event lifecycle states |\r\n| `TRANSLATION_LANGUAGES` | ISO 639-1 code -> display name map |\r\n\r\n## CaptionViewer Props\r\n\r\n| Prop | Type | Required | Description |\r\n|------|------|----------|-------------|\r\n| `wsUrl` | `string` | Yes | WebSocket URL with auth ticket |\r\n| `eventId` | `string` | Yes | Event identifier |\r\n| `eventStatus` | `string` | Yes | Initial event status (`live`, `scheduled`, `ended`) |\r\n| `scheduledStart` | `string` | No | ISO date for scheduled events |\r\n| `description` | `string` | No | Event description |\r\n| `captionDisplay` | `Partial<CaptionDisplaySettings>` | No | Event-level display defaults |\r\n\r\n## License\r\n\r\nProprietary\r\n","readmeFilename":"README.md"}