{"_id":"@3halves-labs/score-trivia-widget","_rev":"9-831883587feaf37d7764fead8978704c","name":"@3halves-labs/score-trivia-widget","dist-tags":{"latest":"0.5.3"},"versions":{"0.2.0":{"name":"@3halves-labs/score-trivia-widget","version":"0.2.0","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.2.0","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"a074f740a2547f76643abc3eb3445f72576ff96e","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.2.0.tgz","fileCount":14,"integrity":"sha512-xgz50kC4UTdwmyOzWiE7e8+jQpUL04HjVXaW2n3IfK7bdsTozucYyhqqfrHXK13tQC6pcaeKWr+tFRZbFzgvtA==","signatures":[{"sig":"MEYCIQCfhkH48RPRpqIQQ1iTgG2QvO0RxG0ikw8wOs6FdIjVswIhANB/qqElu8MKXrZ69KYP+N8T9MDhYOw/IccgVZI5u3vC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208749},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"65b534ecc489c60ad144d836981e9c2512fabf5e","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.7.0","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"18.20.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.2.0_1787613703658_0.6463123995801077","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@3halves-labs/score-trivia-widget","version":"0.2.1","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.2.1","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"2930baa1e940ee91708e7276d7ec0e406291d193","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.2.1.tgz","fileCount":14,"integrity":"sha512-N0MVUaSvUoZ4bacJ5HyfXcyXSN7Yxj6zR1fKd7LYu14ZaHExBO28CtKpPcsH90cZEQRos/LgMJFs8j0/0TSQDQ==","signatures":[{"sig":"MEYCIQCSmbhaW9DUA1spNJS1LbSZQob0czb1LmgxMslu7A5HwQIhAPvSexgMGQAY20iFfwl06JdZzQPDJ87gMCG5e6kv63H7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221882},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"de24e6bfe5fd2d39529d7fd53d6fb0b464fcf1e0","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.7.0","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"18.20.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.2.1_1787616094901_0.7247521637031982","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@3halves-labs/score-trivia-widget","version":"0.2.2","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.2.2","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"4445c88dd2cfb3d0547935ff684ba2fca05e8f6b","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.2.2.tgz","fileCount":14,"integrity":"sha512-viMBXvNPaqoiCv8VZyeX+LEVaZRFWG7aZxOeaKkOi8R4F+hTCiBZLCpnNbGDzuJ0h2YlkQ0p1Wnsw2HzMr6GXQ==","signatures":[{"sig":"MEUCIQCAyMdjjBhQTAWhBNEJvhUJnRzVb9R5CSVEZNL99wXlXAIgXHDvBtKN1ygRVzw9JcquHnQIAoT3ZNavbLnPXur6k3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238342},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"7c75b0d9b97db074dd4d714d200bc22daf4ba239","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.2.2_1787940277129_0.3229095796764725","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@3halves-labs/score-trivia-widget","version":"0.3.0","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.3.0","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"890d775155086ff00c50dd6500ea0460860ef9fe","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.3.0.tgz","fileCount":14,"integrity":"sha512-dajDDo5O5P7/7vppa0cH+UJwOdMdnX3mRVmiGW5X2nlhtwhzwSOnLxPOrlAJOuBY8VmUkT78fPT1i/Hk2oUuHg==","signatures":[{"sig":"MEQCIEVRsgEX1uYCtfRLwaloGjcGHcLltUzZsgdPDqKUYQ+eAiAvX6oTbmW1o0kLFa+5BOaJFLXLkIO7ET5a8kEtjTd1XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415142},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"7a0e7309a64c90f94f97d3ded7117ac6818b874c","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.3.0_1787943449148_0.6114217904147845","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@3halves-labs/score-trivia-widget","version":"0.4.0","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.4.0","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"37e17007a7077ec6b33c56889b789e14a27276f5","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.4.0.tgz","fileCount":14,"integrity":"sha512-nwh2rsocpxGIcoUsDkmIFCK7OAZ17OnW1F7JifgxrD1KvI8auanPi3kSoKUh6MtTCImRM9wfEcGle6qmMS0Z1g==","signatures":[{"sig":"MEYCIQCqR8Bol4FDGhylhViI04froQi3xjoNm0sWrGG09BumDgIhAOyMEtpsixVgeCcvyX2NfgR1H21IQLLvVj5KwI8cEF4Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415142},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"0b67648d9720a6f0aec616b7211a4b01ee35b3b2","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.4.0_1788194959682_0.9449637975198009","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@3halves-labs/score-trivia-widget","version":"0.5.0","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.5.0","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"6350f1dfac3c1dca89663e81600329d5486cf661","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.5.0.tgz","fileCount":14,"integrity":"sha512-OxQ1lmsOavc0AX2ShwGC8JWJo44Zjjw4lo+eWeAawiFAVvasMtnaz0Yb1WdG4VkDfpD9nYsQeEHrAluVrBI1dg==","signatures":[{"sig":"MEYCIQC7Txuuwe1oiWH5QYPJkZetCpzfWmXhTjU2ET9+qtgRhQIhAJgB/YHuBKnGOxkdNx1y1lokVbXY9bdFiVJxwQY80a96","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":618348},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"7da95bd4278eb24dabffe274df491658e11e61d1","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.5.0_1788195569418_0.3896645992176777","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@3halves-labs/score-trivia-widget","version":"0.5.1","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.5.1","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"293e78b11d7d95dacc873ab637593556c6d7760e","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.5.1.tgz","fileCount":14,"integrity":"sha512-Oh5vaHT6Dca95/VBZr5n1Z5rS8wnFZhEciaWfaLnQL5g30elNxHFhnw4L99h4IesfCr4mw6fh9NC9pxkzUVoxA==","signatures":[{"sig":"MEUCIQDstbsjvMDIv678EuHa+nMC6t+9miFYQc/OBjoFiQkMIAIgDQ3UFs11qUOC66IlZC7fGUf5x2UvKuAZawOQm4NZBo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621596},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"c22bfcc391a0dbece89043e56333f393dc5b7911","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.5.1_1788196411225_0.037077754734070156","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@3halves-labs/score-trivia-widget","version":"0.5.2","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"license":"MIT","_id":"@3halves-labs/score-trivia-widget@0.5.2","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"dist":{"shasum":"9357084d3a92f5794b06d4ce8d4c0a5ba59065fa","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.5.2.tgz","fileCount":14,"integrity":"sha512-4XVWfafSeJgYx7pRg+nTsXu9bLY9kef4vHjz2jl6sfV2KTUhho4Jry4HSSH7IhRAqA2OPxgoHTS25v5q27Jogg==","signatures":[{"sig":"MEQCIDyvZb0aaWvQRcvChKT7gYUMQ8HCNeO2aJ6OB6VHLVFXAiARclPsM6BU/nA2MoEBLhPbTprU3BhL9SE9913kKgF8rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHg48gjcX4TtES0wiVhlu+VIGH62qZP1sWgCMaK6iCebAiA9PNcYBMXfP+EuZFMIKB6ZZmJ6i2zMptDLFF/a9N/+RQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621596},"main":"dist/index.cjs.js","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"9382931a3d0f939c2b748112781fcce993fc6f29","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/score-trivia-widget_0.5.2_1790961545538_0.017202979751675063","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"_id":"@3halves-labs/score-trivia-widget@0.5.3","dist":{"shasum":"918584cf8522db3f209324e7686e3b84843ce5d9","tarball":"https://registry.npmjs.org/@3halves-labs/score-trivia-widget/-/score-trivia-widget-0.5.3.tgz","fileCount":14,"integrity":"sha512-vKqCQ1nmeuUCSHwjXxbXXBO71V3fIrJZie8tZFIzfz5VuWePH34OqMRcIUPoTr4JmEwMEmRQlpLxYXAXxhY80w==","signatures":[{"sig":"MEUCIQCii7dD1oG2TY899BvqosS4SDL1mkRGTK1DOUrepr9kTAIgDCz+Bkk5CTQBNxE4XP+LtpSSo8D5zfL0I4KlqE6YV6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHu3qI/a+uQXgsmqUHILG/4WhuTH325uLh9Rcq0RAjbdAiAX7g3LJFHxt5dAmBjKQ/HjQdz7eut7OstpR2DFlQyGIg=="}],"unpackedSize":632611},"main":"dist/index.cjs.js","name":"@3halves-labs/score-trivia-widget","types":"dist/index.d.ts","module":"dist/index.esm.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.cjs.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.esm.js","require":"./dist/react/index.cjs.js"}},"gitHead":"587da49232192a3e65b8bab3135622b1f52a575c","license":"MIT","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rimraf dist","release":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget","typecheck":"tsc --noEmit","test:watch":"vitest","release:major":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget major","release:minor":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget minor","release:patch":"../scripts/release-sdk.sh score-trivia-widget score-trivia-widget patch","prepublishOnly":"npm run clean && npm run build"},"version":"0.5.3","_npmUser":{"name":"3halves-labs","email":"info@3halves-labs.com"},"keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"_npmVersion":"10.9.8","description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","directories":{},"maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.1","jsdom":"^25.0.1","react":"^18.2.0","rimraf":"^5.0.5","vitest":"^2.1.9","typescript":"^5.3.3","@types/react":"^18.2.0"},"peerDependencies":{"react":">=17"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/score-trivia-widget_0.5.3_1791002040737_0.7036487402989253"}}},"time":{"created":"2026-08-24T23:21:43.497Z","modified":"2026-10-03T04:34:01.002Z","0.2.0":"2026-08-24T23:21:43.810Z","0.2.1":"2026-08-25T00:01:35.031Z","0.2.2":"2026-08-28T18:04:37.526Z","0.3.0":"2026-08-28T18:57:29.331Z","0.4.0":"2026-08-31T16:49:19.826Z","0.5.0":"2026-08-31T16:59:29.573Z","0.5.1":"2026-08-31T17:13:31.388Z","0.5.2":"2026-10-02T17:19:05.617Z","0.5.3":"2026-10-03T04:34:00.836Z"},"license":"MIT","keywords":["loyalty","trivia","quiz","web-component","embeddable","widget","rugby","urc"],"description":"Embeddable widget for the Ruck & Recall trivia session game (/api/trivia/*) — web component + React, endless-run play with server-side scoring","maintainers":[{"name":"3halves-labs","email":"info@3halves-labs.com"}],"readme":"# @3halves-labs/score-trivia-widget\n\nAn embeddable widget for the **Ruck & Recall** trivia session game (`/api/trivia/*`). It drives the stateful, **endless-run** loop — open a session → serve a question → collect an answer → submit (server-scored, answer key withheld) → feedback → next / finish → summary. Karma is awarded asynchronously to the fan's loyalty balance.\n\nOn a wrong answer the feedback **reveals the correct answer and the explanation** the server returns (`correctAnswer` + `explanation` on the submit response) — so the widget teaches, not just scores.\n\n> Distinct from [`@3halves-labs/score-interactions`](../interactions), which renders the one-shot `score.game` \"interactions\" path (`/api/interactions/:id`). This one plays the R&R **session** game.\n\nShips three ways to embed, mirroring the interactions widget:\n\n## 1. Web component (script-tag drop-in)\n\n```html\n<script type=\"module\" src=\"https://…/score-trivia-widget.esm.js\"></script>\n<score-trivia track=\"learning_the_game\"\n              endpoint=\"https://api.urc.anything-loyalty.3halves-labs.com\"></score-trivia>\n```\n\n```js\nimport { defineTriviaElement } from '@3halves-labs/score-trivia-widget';\ndefineTriviaElement(); // registers <score-trivia>\n```\n\nThe trivia API needs a **fan bearer token**, so set a `.client` with a token provider (a bare `endpoint` attribute is unauthenticated):\n\n```js\nimport { createHttpClient } from '@3halves-labs/score-trivia-widget';\nconst elm = document.querySelector('score-trivia');\nelm.client = createHttpClient({ endpoint, getToken: () => fanToken });\nelm.addEventListener('complete', (e) => console.log(e.detail)); // { answered, correct, score, state }\n```\n\n## 2. Vanilla renderer\n\n```js\nimport { renderTriviaSession, createHttpClient } from '@3halves-labs/score-trivia-widget';\n\nconst ctl = renderTriviaSession(container, {\n  client: createHttpClient({ endpoint, getToken: () => fanToken }),\n  track: 'learning_the_game',\n  questionTimeMs: 20_000,          // per-question countdown (a question's own timeLimit wins)\n  autoStart: true,                 // false → show a Start button instead\n  capabilities: undefined,         // what to tell the server this client can render\n  theme: { vars: { primary: '#e4002b' } },\n  onAnswer:   (r) => {},           // { correct, score }\n  onComplete: (r) => {},           // { answered, correct, score, state }\n});\n// ctl.finish() ends the session early; ctl.setTheme(t) restyles in place;\n// ctl.destroy() tears down.\n```\n\n## 3. React\n\n```tsx\nimport { TriviaWidget } from '@3halves-labs/score-trivia-widget/react';\nimport { createHttpClient } from '@3halves-labs/score-trivia-widget';\n\n<TriviaWidget client={createHttpClient({ endpoint, getToken })} track=\"learning_the_game\" useDefaultTheme />\n```\n\n## Question types\n\nFifteen types are advertised on session create. Twelve are text\n(`RENDERABLE_QUESTION_TYPES`), each with a control in `answerControls.ts`; the\nother three lines below are the **image** pair, `IMAGE_QUESTION_TYPES`.\n\n```\nmultiple_choice  true_false  fill_blank  odd_one_out  multi_select\ntwo_truths_one_lie  higher_lower  numeric_estimate  cloze_passage\nordering  matching  categorise\nimage_identify        a headshot and four names   (grades like multiple_choice)\nimage_true_false      a headshot and one claim    (grades like true_false)\n```\n\nThe image types come with a catch worth knowing: the server drops them unless\nthe client advertises **both** the type *and* `media: ['image']`. `defaultCapabilities()`\nsends the pair, so they work out of the box. The picture arrives as a signed,\ntime-boxed `imageUrl` on the API host — never the upstream asset URL, because\nthe filename usually contains the player's name — and `createHttpClient`\nresolves it to an absolute URL before the renderer draws the `<img>`.\n\n> **Upgrading from 0.3:** this is a behaviour change under a caret range. 0.3\n> advertised the twelve text types; **0.4 advertises the image types too, by\n> default**, so an existing embedder starts being served headshot questions with\n> no code change. Keep the old behaviour with\n> `capabilities: { types: [...RENDERABLE_QUESTION_TYPES] }` (or the `no-images`\n> attribute). Decline them deliberately if you have an accessibility obligation:\n> as below, an image question cannot be answered by a screen-reader user, and\n> that limitation now arrives by default.\n\n**To decline pictures**, narrow the capabilities:\n\n```js\nimport { RENDERABLE_QUESTION_TYPES } from '@3halves-labs/score-trivia-widget';\nrenderTriviaSession(el, { client, capabilities: { types: [...RENDERABLE_QUESTION_TYPES] } });\n```\n```html\n<score-trivia no-images endpoint=\"…\"></score-trivia>\n```\n\nTwo caveats. A signed URL **expires** (an hour by default); a load failure\ndegrades to a short note and the question stays answerable, but the fix is to\nre-fetch the question. And an image question is **not answerable by a\nscreen-reader user** — `alt` is a fixed generic string on purpose, since\nanything descriptive would give the answer away, and the spec's accessible\nequivalent is a server-side gap. A host with a hard a11y requirement should\ndecline the image types.\n\n## Styling\n\nFour layers, smallest first. All of them key off the part names — every element\ncarries `part=\"…\"`, `data-st=\"…\"` and a matching `.st-…` class, and those names\nare stable across releases.\n\n**1 · CSS variables.** The default theme colours everything from `--st-*`, and\ncustom properties pierce shadow DOM, so a page stylesheet reaches inside\n`<score-trivia>`:\n\n```css\nscore-trivia { --st-primary: #e4002b; --st-radius: 16px; }\nscore-trivia::part(option) { text-transform: uppercase; }\n```\n\n**2 · A `theme` object**, for the same thing from JS plus two things CSS alone\ncannot do here:\n\n```js\nconst ctl = renderTriviaSession(el, {\n  client,\n  theme: {\n    vars: { primary: '#e4002b', radius: '16px' },   // → --st-primary, --st-radius\n    css: '.st-stem { letter-spacing: -.02em }',     // injected after the default sheet\n    classNames: { option: 'rounded-xl hover:bg-slate-100', stem: 'text-2xl font-bold' },\n  },\n});\n```\n\n**3 · `classNames` is the Tailwind hook** — a part → class-string map, applied\nas elements are created, including the markup a control rebuilds mid-question.\n\nYour classes win without `!important`. A utility ties with the built-in class on\nspecificity and takes the tie on document order, because **the shipped sheet is\ninjected first in the head** — anything the page links or injects afterwards\ncomes later and wins. The same holds for `theme.css` (injected last, into the\nsame root) and for your own `.st-*` rules.\n\n> The shipped rules use ordinary class specificity rather than `:where()`, which\n> 0.5.0 tried. Zero specificity meant a host's `button { … }` reset — or Tailwind's\n> **preflight**, which every Tailwind app has — outranked the widget's own button\n> styling, so in the light DOM the buttons rendered as bare transparent boxes.\n> A class beats an element selector; injection order handles the rest.\n\nAdd `replaceClasses: true` to drop the built-in `st-*` classes on the parts you\nname and start from bare markup — the deterministic option if you would rather\nnot depend on order at all. State classes (`st-selected`, the feedback verdict)\nstill land, so a utility theme does not lose the selected state.\n\n> Tailwind and the shadow DOM: a page's compiled Tailwind sheet does **not**\n> reach inside `<score-trivia>`. Use `renderTriviaSession` or the React wrapper\n> (both render in the light DOM), or pass compiled utilities via `theme.css`.\n\n**4 · Restyle a live widget** — no re-mount, so an in-flight question survives:\n\n```js\nctl.setTheme({ vars: { primary: '#0ea5e9' } });        // vanilla renderer\ndocument.querySelector('score-trivia').setTheme({ … }); // web component\n<TriviaWidget theme={theme} … />                        // React: prop changes apply in place\n```\n\n`applyTheme(element, theme)` applies `vars` + `css` to an already-rendered\nwidget on its own and returns a disposer. Set `no-default-theme` (web component)\nor omit `useDefaultTheme` (React) to skip the shipped sheet entirely.\n\nThe full part list is the `TriviaPart` union in `theme.ts`.\n\n## Dev / offline\n\n`createMockClient(questions, grade?)` serves a fixed question list in an endless loop and grades locally — for building UI without a backend:\n\n```js\nimport { renderTriviaSession, createMockClient } from '@3halves-labs/score-trivia-widget';\nrenderTriviaSession(el, { client: createMockClient(myQuestions, (q, a) => a === answerKey[q.id]) });\n```\n\n## Scripts\n\n```bash\nnpm run build      # tsup → CJS + ESM + d.ts (index + /react)\nnpm run typecheck  # tsc --noEmit\nnpm test           # vitest (jsdom)\n```\n\nThe session flow is powered by the same `/api/trivia/*` routes wrapped by `@3halves-labs/score-loyalty-sdk` (≥1.6.0); this package is the UI on top.\n","readmeFilename":"README.md"}