{"_id":"@arythmatic/connect-sdk","_rev":"8-5c10502d6800ccb7a436ee4e0f7c1fe0","name":"@arythmatic/connect-sdk","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@arythmatic/connect-sdk","version":"0.1.0","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.io"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.1.0","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"541f6d40cc00fbe35d4c2ef59d4b6e802d044cad","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.1.0.tgz","fileCount":10,"integrity":"sha512-s55vXcv/UBS6VanXya8Lc+MaYOI60R6alqbJGHIh+AZ8LBZEbzR4kykRHXxGfxuJg5tAWkBbHAlP+yqBHkKuBQ==","signatures":[{"sig":"MEYCIQCHvoNjoQ1ykhOnrVTvTlniRjGb8xIDu3h5iewsYB1J3QIhANaA/2rlY6LCyQ647PCXhUz7zHi1qjbZDM6JV85eumnL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48612},"main":"./dist/arythmatic-connect.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.js","require":"./dist/arythmatic-connect.umd.cjs"}},"gitHead":"5be7e0b4f3698a950706121d9cd16474c1ddadd3","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.5.2","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.1.0_1778509353141_0.5513458903307853","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@arythmatic/connect-sdk","version":"0.1.1","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.1.1","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"7144b1091d7bf147634f45b5c8e9ef6876242e14","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.1.1.tgz","fileCount":10,"integrity":"sha512-LZynGzWYMPedJy7od5I+gjlDgHkTvHCkp8KKXbtHyv1M495bMwPt4B2xqsxS06kkCjxOAOqgUMgKfMJowkWVoA==","signatures":[{"sig":"MEUCIBFRGjAdXCMz7dfE88X2HNMpY4zZVuLToRr85PL/3K8eAiEAkBVilmU3I7KvbLTy1lg9B1g91cdh6+fTJ0W6ry8o2Cs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48932},"main":"./dist/arythmatic-connect.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.js","require":"./dist/arythmatic-connect.umd.cjs"}},"gitHead":"4ee7f07f98e20f5ef8e4d3acdb2e2c7ff35be7c5","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.5.2","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.1.1_1778528693794_0.0842491370413716","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@arythmatic/connect-sdk","version":"0.1.2","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.1.2","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"fabaa7bdc9f5e3bb5b49a5f045998d7ef26e924a","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.1.2.tgz","fileCount":10,"integrity":"sha512-vIuPTxWHdC20KnZD4uEP1Lz5HRFsB4Vl2PtsCWQ9pi7TsvooTb6210pNXA5Xl2K0ilLCnWM46sg/7aWDd9UVTw==","signatures":[{"sig":"MEQCIH1x5+Fu+I7bb4O3626NF5tHd1qGtsq60LOAYrnTO8CwAiB5Cs2ru5IoBMEGbCwJychd08atKWiFKpj6vXOtDSDvyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48931},"main":"./dist/arythmatic-connect.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.mjs","require":"./dist/arythmatic-connect.umd.js"}},"gitHead":"22d66d11cb3e06f53a163714b941bbf65a8e0c83","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.5.2","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.1.2_1778529299590_0.2921777241619985","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@arythmatic/connect-sdk","version":"0.1.3","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.1.3","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"730b487677fe53bfee199200f4611cb344b2d4f9","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.1.3.tgz","fileCount":10,"integrity":"sha512-oiUPcc6xAMwoYZtulHuArYLhd22W9tT/2xORtAFKxSrP+NzFT6oML8QMK5vT/lfzt+EjCF9d+x41no8sIkvppw==","signatures":[{"sig":"MEUCIEKEQWC5S9dqw7BDj0RNOenTS41DEiWZS9iDRif9Bie9AiEAuy2VY0QASvMcs3bSiMT5Oz/84bHXicah9Nm434yZ4cI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49978},"main":"./dist/arythmatic-connect.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.mjs","require":"./dist/arythmatic-connect.umd.js"}},"gitHead":"2c2cf72e00380756f7a02e82bd943ef8e5aa6db5","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.5.2","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.1.3_1778530234082_0.3348611933510932","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@arythmatic/connect-sdk","version":"0.1.4","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.1.4","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"4a9354d54413171f0acd2de9001304fc7fc5038b","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.1.4.tgz","fileCount":10,"integrity":"sha512-lwcP0ppZmAIU/G01q3c0s2JKk02IN6ZRvNaPWC+aMkxXLX2eq+eGUXDIi/Q8r7hB7zLU9lS4qPEpOLJU6ueQOA==","signatures":[{"sig":"MEQCIBLxt6QQJfUOMIqMwuR/G7nK5+ERCR59pYmH6epEUg6DAiAPK39PPQP4TacAkh+YbDjiwdHA+BhvtVYw28NOFmEY2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58034},"main":"./dist/arythmatic-connect.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.mjs","require":"./dist/arythmatic-connect.umd.js"}},"gitHead":"2255716b9d794bb5732537b5f97f1d3316828204","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.5.2","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.1.4_1778535695137_0.8353352039397548","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@arythmatic/connect-sdk","version":"0.1.5","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.1.5","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"9dd9cfa14026650282a8a3a3deda8163bb1ffeda","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.1.5.tgz","fileCount":10,"integrity":"sha512-8CCzPcAq0odm4lyvJ+U2Psv0M0iSqcEHR+YUwtwZaWuYU8LW2VGrIj4FakP1bqXkN6XXOw12c+1RzIqHlbVW7g==","signatures":[{"sig":"MEQCIAp07W6NGSzaZyI04j8+WMTPWV2DMmnc6sojbNLrK1rQAiAedBxmYmwnVR9I7QM+OUNbtQo2KXKXeryTVTCBizynuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68360},"main":"./dist/arythmatic-connect.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.mjs","require":"./dist/arythmatic-connect.umd.js"}},"gitHead":"ae35b76ddb261a96c5a0ac725ac5555df78b949c","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.5.2","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.1.5_1778615113327_0.4778575901693658","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@arythmatic/connect-sdk","version":"0.2.0","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","_id":"@arythmatic/connect-sdk@0.2.0","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"dist":{"shasum":"32fe6ddc03b6b975fe858f518d7a9ebd7aeb358c","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.2.0.tgz","fileCount":10,"integrity":"sha512-e/nPOtPeewZNrQ/pHSAB1gqhESEkvAgByEobyEPtSBvnznRCuwKMVLQS0yJ5nXzHeCD4KnL10z19RRq1SAipKQ==","signatures":[{"sig":"MEUCIQChc37Adf4t9gtXN9Yyu6HRL0ZbtnDPET5/8bl3kaAZgQIgSS7WW4jm4T8Hx1breids2hi6SvgAZHZZBXpohDWWrKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71444},"main":"./dist/arythmatic-connect.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/arythmatic-connect.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.mjs","require":"./dist/arythmatic-connect.umd.js"}},"gitHead":"94b1cca93059eed7ba5aa2514e8ebcbb0c811d0f","scripts":{"dev":"vite build --watch","build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"repository":{"url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","type":"git","directory":"sdk"},"_npmVersion":"11.13.0","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"terser":"^5.46.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/connect-sdk_0.2.0_1782157872330_0.32601322151024914","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@arythmatic/connect-sdk","version":"0.2.1","description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","license":"MIT","author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","repository":{"type":"git","url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","directory":"sdk"},"bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"type":"module","main":"./dist/arythmatic-connect.umd.js","module":"./dist/arythmatic-connect.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/arythmatic-connect.mjs","require":"./dist/arythmatic-connect.umd.js"}},"sideEffects":false,"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"vite build && tsc --declaration --emitDeclarationOnly --outDir dist","dev":"vite build --watch","prepublishOnly":"npm run build"},"devDependencies":{"typescript":"^5.5.0","vite":"^5.4.0"},"dependencies":{"terser":"^5.46.2"},"gitHead":"41e2c1d9e7f85ed5f554eb2575b851c3e2b0747f","_id":"@arythmatic/connect-sdk@0.2.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-SKpkoESu3a3tJLGxnKannYJV0iUW1msk9alJV2v2FEvxfMKvIyEchUQo1Pc73rDQFTrRNgctUia+uXxr6GedDA==","shasum":"3cff70c2772ead8fe543725b2ea1e34360cf73bb","tarball":"https://registry.npmjs.org/@arythmatic/connect-sdk/-/connect-sdk-0.2.1.tgz","fileCount":10,"unpackedSize":73066,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC93Zh6RMtj+uE5KvM8eTe08GBp9CGU69iatnN6waiXagIhALViCk4Q8NhuYKDJbhMPd5IWlWI0IsA5xSD06mm3wSgG"}]},"_npmUser":{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"},"directories":{},"maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/connect-sdk_0.2.1_1784283988597_0.6907729166449865"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T14:22:33.040Z","modified":"2026-07-17T10:26:28.927Z","0.1.0":"2026-05-11T14:22:33.301Z","0.1.1":"2026-05-11T19:44:53.935Z","0.1.2":"2026-05-11T19:54:59.744Z","0.1.3":"2026-05-11T20:10:34.249Z","0.1.4":"2026-05-11T21:41:35.315Z","0.1.5":"2026-05-12T19:45:13.502Z","0.2.0":"2026-06-22T19:51:12.476Z","0.2.1":"2026-07-17T10:26:28.722Z"},"bugs":{"url":"https://github.com/askmeidentitycorp/Arythmatic-community-web/issues"},"author":{"name":"Arythmatic","email":"engineering@arythmatic.cloud"},"license":"MIT","homepage":"https://github.com/askmeidentitycorp/Arythmatic-community-web/tree/main/sdk","keywords":["arythmatic","connect","community","embed","iframe","sdk","lms"],"repository":{"type":"git","url":"git+https://github.com/askmeidentitycorp/Arythmatic-community-web.git","directory":"sdk"},"description":"Embed Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals) via a sandboxed iframe.","maintainers":[{"name":"arythmaticsuperroot","email":"support@arythmatic.cloud"}],"readme":"# @arythmatic/connect-sdk\n\nThin JavaScript SDK for embedding Arythmatic Connect community workspaces into third-party platforms (LMS, CRM, portals, etc.) via a sandboxed `<iframe>`.\n\n## How it works\n\n1. **Host platform** (e.g. your Next.js LMS) includes the SDK and creates an `ArythmaticEmbed` instance.\n2. The SDK injects an `<iframe>` pointing to `/embed/:workspace/:path` on the Arythmatic Community domain.\n3. The iframe redirects to the canonical workspace route (`/w/:workspace/:path?embed=1`).\n4. The host sends the user's JWT to the iframe via `postMessage`.\n5. The iframe stores the token in `localStorage` — the existing API client picks it up automatically.\n6. No Auth0 redirect is triggered; the user is silently authenticated.\n\n## Tenant & workspace identification\n\n| Resource | How it's identified |\n|----------|---------------------|\n| **Workspace** | URL slug (`/w/:workspaceSlug`) — passed explicitly in SDK options |\n| **Tenant** | **Preferred**: iframe subdomain (`acme.connect.arythmatic.cloud`) — resolved by backend from hostname |\n| **Tenant (fallback)** | `tenant` SDK option → cached in iframe → sent as `X-Embed-Tenant` header on every API call |\n| **User** | `Bearer <token>` — validated by backend; LMS must issue JWTs the backend can verify |\n\n### Subdomain mode (recommended)\n\nSet `tenant` and point `baseUrl` at your apex domain:\n\n```ts\nconst embed = new ArythmaticEmbed({\n  container: '#community-root',\n  workspace: 'acme-corp',\n  tenant: 'acme',                       // iframe loads from acme.connect.arythmatic.cloud\n  baseUrl: 'https://connect.arythmatic.cloud',\n  token: lmsJwt,\n});\n```\n\nThe iframe loads from `https://acme.connect.arythmatic.cloud/embed/acme-corp`. The backend resolves the tenant from the hostname exactly like the standalone app.\n\n### Central-domain mode (fallback)\n\nIf you must load from a single domain:\n\n```ts\nconst embed = new ArythmaticEmbed({\n  container: '#community-root',\n  workspace: 'acme-corp',\n  tenant: 'acme',                       // forwarded to backend via X-Embed-Tenant header\n  baseUrl: 'https://connect.arythmatic.cloud',\n  token: lmsJwt,\n});\n```\n\nThe iframe loads from `https://connect.arythmatic.cloud/embed/acme-corp`. The SDK passes `tenant: 'acme'` via `postMessage`; the iframe caches it in `localStorage` and the API client sends `X-Embed-Tenant: acme` on every authenticated request.\n\n### Backend contract\n\nFor the embed auth flow to work, the backend must:\n\n1. **Validate LMS tokens** — accept `Authorization: Bearer <lms-jwt>` and verify the issuer/signature/audience.\n2. **Extract user identity** from the LMS JWT claims (`sub`, `email`, or a custom claim like `arythmatic_user_id`).\n3. **Map to a `CommunityUser`** — auto-provision or look up the user in the tenant's user pool.\n4. **Support `X-Embed-Tenant`** (for central-domain mode) — read the header when `org_id` isn't available from the JWT or hostname.\n\n## Install\n\n> Looking for framework-specific recipes (React, Next.js, Vue, Angular)?\n> See [NPM_INTEGRATION.md](./NPM_INTEGRATION.md) — focused step-by-step guide\n> for integrators using the npm package.\n\n### Option A: npm (ES modules)\n\n```bash\nnpm install @arythmatic/connect-sdk\n```\n\n```ts\nimport { ArythmaticEmbed } from '@arythmatic/connect-sdk';\n\nconst embed = new ArythmaticEmbed({\n  container: '#community-root',\n  workspace: 'acme-corp',\n  path: 'feed',\n  tenant: 'acme',\n  token: lmsJwt,\n});\n\nembed.mount();\n```\n\n### Compact chat mode\n\nPass `mode: 'chat'` to render a **chatbot-sized, chat-only** panel instead of\nthe full workspace. It shows just the user's channels, DMs, and group chats\n(plus a Browse-channels entry); selecting one opens the chat screen with a back\nbutton to the list. No feed, sidebar, or top chrome — ideal for a small docked\nwidget inside an LMS. Size the iframe small via `width` / `height`:\n\n> **Note:** the option key is `mode`, not `embedMode`. (`embedMode=chat` is an\n> internal query parameter the SDK appends to the iframe URL — passing it as a\n> constructor option is rejected as an unsupported key.)\n\n```ts\nconst chat = new ArythmaticEmbed({\n  container: '#community-chat',\n  workspace: 'acme-corp',\n  tenant: 'acme',\n  token: lmsJwt,\n  mode: 'chat',\n  width: '380px',\n  height: '560px',\n});\nchat.mount();\n\n// Deep-link straight into a channel/conversation if you want:\n//   new ArythmaticEmbed({ ..., mode: 'chat', path: 'general' })\n```\n\n### Option B: CDN (UMD via jsDelivr)\n\nAny `npm`-published package is automatically mirrored by jsDelivr, so no\nseparate CDN deploy is needed. Pin to a specific version for production\nto avoid surprise updates:\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@arythmatic/connect-sdk@0.2.0/dist/arythmatic-connect.umd.js\"></script>\n<script>\n  const embed = new ArythmaticConnectSDK.ArythmaticEmbed({\n    container: '#community-root',\n    workspace: 'acme-corp',\n    tenant: 'acme',\n    token: userJwt,\n  });\n  embed.mount();\n</script>\n```\n\nFor demos / staging you can use a major-range pointer like\n`@arythmatic/connect-sdk@0` instead of `@0.2.0`, but production should\nalways pin to an exact version (and ideally use an `integrity=\"sha384-…\"`\nSRI hash — jsDelivr exposes one in the file's `<details>` panel).\n\n## API\n\n### `new ArythmaticEmbed(options)`\n\n| Option | Type | Required | Default | Description |\n|--------|------|----------|---------|-------------|\n| `container` | `string \\| HTMLElement` | **Yes** | — | DOM element or selector where the iframe is injected. |\n| `workspace` | `string` | **Yes** | — | Workspace slug to open. |\n| `mode` | `'full' \\| 'chat'` | No | `'full'` | `full` = the whole workspace shell. `chat` = a compact, chatbot-sized panel showing only channels + DMs + group chats (with Browse channels); selecting one opens the chat. See [Compact chat mode](#compact-chat-mode). |\n| `path` | `string` | No | — | Initial route inside the workspace (e.g. `\"channels/general\"`). |\n| `baseUrl` | `string` | No | `https://connect.arythmatic.cloud` | Arythmatic Community base URL. |\n| `tenant` | `string` | No | — | Tenant slug. Used for subdomain routing and `X-Embed-Tenant` header. |\n| `token` | `string` | No | — | JWT access token from the host platform. |\n| `width` | `string` | No | `\"100%\"` | Iframe width. |\n| `height` | `string` | No | `\"600px\"` | Iframe height. |\n| `className` | `string` | No | — | CSS class(es) for the iframe element. |\n| `style` | `object` | No | — | Additional inline styles for the iframe. |\n| `onReady` | `() => void` | No | — | Called when the iframe signals it is ready. |\n| `onAuthError` | `(err) => void` | No | — | Called on auth failures inside the iframe. |\n| `onNavigate` | `(path) => void` | No | — | Called when the user navigates inside the embed. |\n| `theme` | `ArythmaticEmbedTheme` | No | — | Theme overrides — see [Theming](#theming) below. |\n\n### Instance methods\n\n- `embed.setToken(token)` — Update the auth token (e.g. after LMS refresh).\n- `embed.setTheme(theme)` — Update the theme at runtime (field-by-field merge).\n- `embed.navigate(path)` — Programmatically navigate the embed.\n- `embed.resize(width?, height?)` — Adjust iframe dimensions.\n- `embed.destroy()` — Remove the iframe and clean up listeners.\n\n## Theming\n\nThe embed exposes every colour the standalone app uses, plus a light/dark mode toggle.\n\n```ts\nconst embed = new ArythmaticEmbed({\n  container: '#community-root',\n  workspace: 'acme-corp',\n  tenant: 'acme',\n  token: lmsJwt,\n  theme: {\n    mode: 'light',                  // 'light' | 'dark' | 'auto' (follow OS)\n    colors: {\n      accent: '#FF6600',            // primary brand colour\n      bgSurface: '#ffffff',\n      textPrimary: '#111111',\n    },\n    // Per-mode overrides applied on top of `colors`. Use these when your\n    // brand needs different tones in light vs. dark mode.\n    dark: {\n      accent: '#FF8833',            // brighter accent for legibility on dark\n      bgBase: '#0e0e10',\n    },\n    light: {\n      accent: '#CC4400',            // deeper accent for contrast on light\n    },\n  },\n});\n```\n\n### What you can override\n\n`theme.colors`, `theme.light`, and `theme.dark` all accept the same shape (`ArythmaticThemeColors`):\n\n| Group | Fields | Maps to |\n|-------|--------|---------|\n| Brand | `accent`, `accentHover`, `accentSoft`, `accentRing`, `accentDeep` | `--color-accent`, `--color-accent-hover`, `--color-accent-soft`, `--color-accent-ring`, `--color-accent-deep` |\n| Surfaces | `bgBase`, `bgSurface`, `bgElevated`, `bgHover` | `--color-bg-base`, `--color-bg-surface`, `--color-bg-elevated`, `--color-bg-hover` |\n| Text | `textPrimary`, `textSecondary`, `textMuted` | `--color-text-primary`, `--color-text-secondary`, `--color-text-muted` |\n| Borders | `borderSubtle`, `borderStrong` | `--color-border-subtle`, `--color-border-strong` |\n| Status | `danger`, `success` | `--color-danger`, `--color-success` |\n\nPass only the fields you want to change — everything else falls back to the embed's built-in palette for the current mode.\n\n### Smart defaults for accent\n\nIf you set only `accent`, the embed auto-derives the related variants so the UI stays coherent:\n\n- `accentHover` → ~12% lighter\n- `accentSoft` → 15% alpha\n- `accentRing` → 35% alpha\n- `accentDeep` → ~15% darker\n\nOverride any of these explicitly to pin them.\n\n### Merge order\n\nHighest priority last:\n\n1. The embed's built-in palette for `mode`\n2. `theme.colors`\n3. `theme.light` (when mode is light) **or** `theme.dark` (when mode is dark)\n\n### Runtime updates\n\n`embed.setTheme({ dark: { accent: '#ff6600' } })` merges field-by-field on top of the current theme. You can drop or change any single field without resending the rest.\n\n### Security\n\nEvery colour value must be a hex (`#rgb` / `#rrggbb` / `#rrggbbaa`), a CSS named colour, or `rgb()` / `rgba()` / `hsl()` / `hsla()` functional notation. Values containing `;`, `{`, `}`, or HTML are rejected so the host can't inject arbitrary CSS through this prop. Unknown field names are silently dropped.\n\n## Build\n\n```bash\ncd sdk\nnpm install\nnpm run build\n```\n\nOutputs:\n- `dist/arythmatic-connect.mjs` — ES module\n- `dist/arythmatic-connect.umd.js` — UMD bundle (browser `<script>` tag)\n- `dist/index.d.ts` — TypeScript declarations\n\n## Publishing\n\nFrom the `sdk/` directory:\n\n```bash\nnpm login                       # one-time, npm credentials with publish rights on @arythmatic\nnpm version patch               # or minor / major — bumps package.json + creates a git tag\nnpm publish                     # `prepublishOnly` rebuilds dist/ first; `publishConfig.access` makes it public\ngit push --follow-tags          # push the version-bump commit + tag\n```\n\nPre-publish dry-run to inspect what will go up:\n\n```bash\nnpm pack --dry-run\n```\n\n## Security notes\n\n- The SDK validates `postMessage` origins against the configured `baseUrl` (or tenant subdomain).\n- The iframe uses `sandbox=\"allow-same-origin allow-scripts allow-popups allow-forms\"`.\n- The token is never exposed in the iframe URL; it travels exclusively via `postMessage`.\n- Host platforms should issue short-lived JWTs scoped to the Arythmatic Community audience.\n- The `X-Embed-Tenant` header is only sent when a `tenant` option was provided, preventing cross-tenant leakage.\n","readmeFilename":"README.md"}