{"_id":"@asiri-ng/elements","_rev":"9-6e7c00b0ed2ab637d1edd2f6a9f7727c","name":"@asiri-ng/elements","dist-tags":{"latest":"0.6.3"},"versions":{"0.1.0":{"name":"@asiri-ng/elements","version":"0.1.0","license":"UNLICENSED","_id":"@asiri-ng/elements@0.1.0","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"5ce5fd2d1ed5ff4fa30a6a9143b311460f2dd675","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.1.0.tgz","fileCount":50,"integrity":"sha512-77ByaGglnfMhI1gO4u71mt0sOFSEQy3NWFDWVBELcbROyXRcOkA9eCpFRwwHilm4JhceRevYovW4Folz57xN0g==","signatures":[{"sig":"MEQCICF9mVYdi4RYE+5bG17XMQy/HpaNerMBmxRMOjIEY7nfAiBXCDw8eiNKIMOm/qIasuQTBXx0o7sHJXR/dstIc8FXMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":580056},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"pnpm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},"jsdelivr":"./dist/elements.global.js","_npmVersion":"10.9.7","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.1.0_1782253424336_0.20864633238464902","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@asiri-ng/elements","version":"0.2.0","license":"UNLICENSED","_id":"@asiri-ng/elements@0.2.0","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"acc756075efec024c097abb62cca4f56c2c75b51","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.2.0.tgz","fileCount":53,"integrity":"sha512-gi7cGlnLpx4dNoI+mq421M+BDr2Or6nUn5Q6MYobHo9GbrScrL/+YpMf8emljTu+HrNFHT76hmilOlf7pW6MRA==","signatures":[{"sig":"MEYCIQCFjtZkXlRnNE4J59O+yIKYVGsXjgPLiiktDWiGnbiTOQIhAIcAZlg87In3rwexy4YP6ScyqQaPr2gJ5Ax3b98cT548","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":590459},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.2.0.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.2.0.tgz","_integrity":"sha512-gi7cGlnLpx4dNoI+mq421M+BDr2Or6nUn5Q6MYobHo9GbrScrL/+YpMf8emljTu+HrNFHT76hmilOlf7pW6MRA==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.2.0_1782293795372_0.11856839020755539","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@asiri-ng/elements","version":"0.3.0","license":"UNLICENSED","_id":"@asiri-ng/elements@0.3.0","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"c582ff8b93076f4b60aa091b61fa906a9ebfc4d9","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.3.0.tgz","fileCount":53,"integrity":"sha512-ceQX7jQbwOpdvxW4XSMsdCTI45+FGl4wOd2mCDxBsnFb34Rhs1tdZr5WsR5F6aR73T4muF5NYLAYb1s9u2NTDQ==","signatures":[{"sig":"MEQCIETB058JeqMCQzp4sqyWIzpoT/qDhdAMDdx0KKVcbRbPAiARG2o+ZV0Nibrj9i7HkSyFaPQ+oiXMQjY1OUU6tDSCqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":598349},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.3.0.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.3.0.tgz","_integrity":"sha512-ceQX7jQbwOpdvxW4XSMsdCTI45+FGl4wOd2mCDxBsnFb34Rhs1tdZr5WsR5F6aR73T4muF5NYLAYb1s9u2NTDQ==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.3.0_1782300453774_0.16583461831822421","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@asiri-ng/elements","version":"0.4.0","license":"UNLICENSED","_id":"@asiri-ng/elements@0.4.0","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"3bf0b8420a0d9c5eb8ea2cc8b214de6d50945904","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.4.0.tgz","fileCount":53,"integrity":"sha512-VGyWYWjIWTAnxmqD9noJs5f6gGq1Y/sb9UCT7+YiYBsUGMVZqiBBncfE8NQK29noLWEYqX7hXC1+4d2a94s1NA==","signatures":[{"sig":"MEUCIQCJmW8lzJ8+a/Qra/5vVh/LjNIbeWWqGQXBFBcF3ffudgIgV3UnmIHzVicxReRC3UT/QGy43jgvlMhltXnhvxDSsrw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":611296},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.4.0.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.4.0.tgz","_integrity":"sha512-VGyWYWjIWTAnxmqD9noJs5f6gGq1Y/sb9UCT7+YiYBsUGMVZqiBBncfE8NQK29noLWEYqX7hXC1+4d2a94s1NA==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.4.0_1782322453407_0.5100206054188872","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asiri-ng/elements","version":"0.5.0","license":"UNLICENSED","_id":"@asiri-ng/elements@0.5.0","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"8bfb68c434a23d1855d0ac8a2f006ec2048d4e0b","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.5.0.tgz","fileCount":55,"integrity":"sha512-Sgd8m6FBAZx9EiVIp8fSOenGXpIGPuJGSWRXWYDMh9DJrj0mcq+/SJ+lV8Zge3pR1oTZ5l63+U4ytbjnRVPZVA==","signatures":[{"sig":"MEUCIQCKUhQv6Y1fRzn4LWubOkB+t8N6SiYnZd3ZNXMJ2rDKZgIgP3b7UBiKWzeeH5r08ElmXd0LVqNMy6TtkGY89K/qVeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627015},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.5.0.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.5.0.tgz","_integrity":"sha512-Sgd8m6FBAZx9EiVIp8fSOenGXpIGPuJGSWRXWYDMh9DJrj0mcq+/SJ+lV8Zge3pR1oTZ5l63+U4ytbjnRVPZVA==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.5.0_1782324883184_0.270369217818869","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@asiri-ng/elements","version":"0.6.0","license":"UNLICENSED","_id":"@asiri-ng/elements@0.6.0","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"863fff940765d41fb1f9e4fa6ae474289c06ff33","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.6.0.tgz","fileCount":57,"integrity":"sha512-rJ7L8ECIY0gfkEDH7bXkLkF2BbnjXbvaCfhiY4Ut24isIyeqaxQ7LyMr6ywFjMCHP51iXvKUCJdxmIhdrFa0mg==","signatures":[{"sig":"MEQCIBoC+RaCBY3WHxN1Yn8+aielY+YW2Q+ODp9SRg0EuUd5AiA4BdSq7isL+8T8o9JrP9PJvWBgXg2+s5gb5cJtUDuQjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64299830},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.6.0.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.6.0.tgz","_integrity":"sha512-rJ7L8ECIY0gfkEDH7bXkLkF2BbnjXbvaCfhiY4Ut24isIyeqaxQ7LyMr6ywFjMCHP51iXvKUCJdxmIhdrFa0mg==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.6.0_1782562041971_0.40472614586793987","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@asiri-ng/elements","version":"0.6.1","license":"UNLICENSED","_id":"@asiri-ng/elements@0.6.1","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"3560de9c32f6eff2cf8335aa3a814b477fcd4fc4","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.6.1.tgz","fileCount":57,"integrity":"sha512-wlWaIBeoMweGx2CT3EwfB3DA4JCRnrh59COa1V0fculsVv+6YNYd35uDwOPuZX7ob6+Q3hMc17QPcDBtfi982g==","signatures":[{"sig":"MEUCIHAsnSwuybxBwirjO7ROjc/eYm3eORGNfdB0DaqLWylNAiEAlHjqL+91lf66unMq9NiaqYRn58LorGT3ghVuCNdi0yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64139125},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.6.1.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.6.1.tgz","_integrity":"sha512-wlWaIBeoMweGx2CT3EwfB3DA4JCRnrh59COa1V0fculsVv+6YNYd35uDwOPuZX7ob6+Q3hMc17QPcDBtfi982g==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.6.1_1782571626772_0.5770073705035761","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@asiri-ng/elements","version":"0.6.2","license":"UNLICENSED","_id":"@asiri-ng/elements@0.6.2","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"dist":{"shasum":"13c3d539b25067e7189c96ef1cff386c21ad051e","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.6.2.tgz","fileCount":57,"integrity":"sha512-jJyGW7MqLd6G+XIxqri8X6xyGfbhH7EW/y3ihh4avrx4LRyd9yzlkvrCk86kGhyXhyka7/xRNsjdeiEqMp7GWA==","signatures":[{"sig":"MEQCIAEK6/ua3S8Ef6AVWMz5znLMFZFqtknG/T5fxa8ijFkHAiBbYsLNd5cBk1YYINaRa6F66xWth8lTjxjXJDbr5F3Sbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64142408},"main":"./dist/index.js","type":"module","_from":"file:dist/asiri-ng-elements-0.6.2.tgz","types":"./dist/index.d.ts","unpkg":"./dist/elements.global.js","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./package.json":"./package.json","./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"}},"private":false,"scripts":{"lint":"eslint . --max-warnings=0","test":"vitest run","build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","test:unit":"vitest run","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"jsdelivr":"./dist/elements.global.js","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.6.2.tgz","_integrity":"sha512-jJyGW7MqLd6G+XIxqri8X6xyGfbhH7EW/y3ihh4avrx4LRyd9yzlkvrCk86kGhyXhyka7/xRNsjdeiEqMp7GWA==","_npmVersion":"11.17.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","directories":{},"sideEffects":true,"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^4.1.8","esbuild":"0.28.1","globals":"^15.13.0","typescript":"^5.7.2","@asiri/config":"0.0.0"},"_npmOperationalInternal":{"tmp":"tmp/elements_0.6.2_1782575512403_0.550306364196939","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@asiri-ng/elements","version":"0.6.3","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","private":false,"license":"Apache-2.0","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./consent":{"types":"./dist/consent/index.d.ts","import":"./dist/consent.js"},"./trust-badge":{"types":"./dist/trust-badge/index.d.ts","import":"./dist/trust-badge.js"},"./dsr":{"types":"./dist/dsr/index.d.ts","import":"./dist/dsr.js"},"./trust-access":{"types":"./dist/trust-access/index.d.ts","import":"./dist/trust-access.js"},"./trust-subscribe":{"types":"./dist/trust-subscribe/index.d.ts","import":"./dist/trust-subscribe.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"unpkg":"./dist/elements.global.js","jsdelivr":"./dist/elements.global.js","sideEffects":true,"devDependencies":{"esbuild":"0.28.1","eslint":"^9.16.0","globals":"^15.13.0","typescript":"^5.7.2","vitest":"^4.1.8","@asiri/config":"0.0.0"},"scripts":{"build":"node esbuild.mjs && tsc -p tsconfig.build.json --emitDeclarationOnly","typecheck":"tsc --noEmit","lint":"eslint . --max-warnings=0","test":"vitest run","test:unit":"vitest run"},"_id":"@asiri-ng/elements@0.6.3","_integrity":"sha512-VscxZIRgwYsVEMlP8uRjfZajx/yVZ3gLzLdj7WUSPkPaYfdc4hUU0XiAk+zpaqeN82YmC+xX4mbU6NGqMnlIgw==","_resolved":"/home/runner/work/asiri/asiri/dist/asiri-ng-elements-0.6.3.tgz","_from":"file:dist/asiri-ng-elements-0.6.3.tgz","_nodeVersion":"22.23.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-VscxZIRgwYsVEMlP8uRjfZajx/yVZ3gLzLdj7WUSPkPaYfdc4hUU0XiAk+zpaqeN82YmC+xX4mbU6NGqMnlIgw==","shasum":"37e7e981a46fb4d647e9c86c75815b015efe3a66","tarball":"https://registry.npmjs.org/@asiri-ng/elements/-/elements-0.6.3.tgz","fileCount":58,"unpackedSize":64171247,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD179ujKb8a4M9kE0ahzRtPOvmU6qYOBBKdrZRbxPxgcwIgVtqR5bzutesBijAZ2lpuDnd2E2LCN+0K7QyDJRtpWvA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4ddd029a-34b3-4a50-8963-6768289bff5e"}},"directories":{},"maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elements_0.6.3_1784366744369_0.35247289493197376"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T22:23:44.162Z","modified":"2026-07-18T09:25:45.234Z","0.1.0":"2026-06-23T22:23:44.516Z","0.2.0":"2026-06-24T09:36:35.503Z","0.3.0":"2026-06-24T11:27:33.913Z","0.4.0":"2026-06-24T17:34:13.601Z","0.5.0":"2026-06-24T18:14:43.379Z","0.6.0":"2026-06-27T12:07:22.737Z","0.6.1":"2026-06-27T14:47:07.636Z","0.6.2":"2026-06-27T15:51:53.152Z","0.6.3":"2026-07-18T09:25:45.065Z"},"license":"Apache-2.0","description":"Asiri embeddable web components — consent banner, trust badge, DSR, and more (framework-agnostic, dependency-free).","maintainers":[{"name":"abrahamtanta","email":"abraham@tantainnovatives.com"},{"name":"mr-tanta","email":"admin@asiri.ng"}],"readme":"# @asiri-ng/elements\n\nAsiri embeddable web components — framework-agnostic, dependency-free.\n\n| Component                  | Status    | Tag                       |\n| -------------------------- | --------- | ------------------------- |\n| Consent banner             | Available | `<asiri-consent>`         |\n| Trust badge                | Available | `<asiri-trust-badge>`     |\n| DSR (Data Subject Request) | Available | `<asiri-dsr>`             |\n| Trust access request       | Available | `<asiri-trust-access>`    |\n| Trust subscribe            | Available | `<asiri-trust-subscribe>` |\n\n---\n\n## Install via npm (recommended)\n\nnpm install is the recommended way to integrate every component: your lockfile\npins the exact version, updates arrive through your normal dependency workflow,\nbundlers tree-shake unused components, and there is no CDN script or SRI hash to\nmaintain. Use the plain `<script>` tag only when you cannot run a build step\n(e.g. WordPress or Google Tag Manager).\n\n```bash\npnpm add @asiri-ng/elements\n```\n\nImport the consent component (self-registers the `asiri-consent` custom element):\n\n```ts\nimport '@asiri-ng/elements/consent';\n```\n\nOr import everything (registers all available components):\n\n```ts\nimport '@asiri-ng/elements';\n```\n\nPlace the element in your markup:\n\n```html\n<asiri-consent notice-id=\"YOUR_NOTICE_ID\"></asiri-consent>\n```\n\n### Programmatic mount\n\n```ts\nimport { mountAsiriConsent } from '@asiri-ng/elements/consent';\n\nmountAsiriConsent({ noticeId: 'YOUR_NOTICE_ID' });\n```\n\n---\n\n## Plain `<script>` tag (no build)\n\nConsent component only:\n\n```html\n<script\n  src=\"https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/consent.global.js\"\n  integrity=\"sha384-REPLACE_WITH_HASH_FROM_NPM_PUBLISH\"\n  crossorigin=\"anonymous\"\n></script>\n<asiri-consent notice-id=\"YOUR_NOTICE_ID\"></asiri-consent>\n```\n\nAll components (consent + future additions):\n\n```html\n<script\n  src=\"https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/elements.global.js\"\n  integrity=\"sha384-REPLACE_WITH_HASH_FROM_NPM_PUBLISH\"\n  crossorigin=\"anonymous\"\n></script>\n<asiri-consent notice-id=\"YOUR_NOTICE_ID\"></asiri-consent>\n```\n\nAlways pin the version and include `integrity`/`crossorigin` for Subresource Integrity (SRI) protection. Generate the hash after publishing:\n\n```bash\ncurl -sL https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/consent.global.js \\\n  | openssl dgst -sha384 -binary | openssl base64 -A | sed 's/^/sha384-/'\n```\n\n---\n\n## Gating API\n\n```js\nwindow.AsiriConsent.onDecision(({ purposes }) => {\n  if (purposes['analytics']) startAnalytics();\n});\n// or listen to DOM events:\ndocument.addEventListener('asiri-consent', (e) => console.log(e.detail));\n```\n\n### `window.AsiriConsent` methods\n\n| Method           | Returns                | Description                                                                                    |\n| ---------------- | ---------------------- | ---------------------------------------------------------------------------------------------- |\n| `get()`          | `ConsentState \\| null` | Current decision, or `null` before any decision.                                               |\n| `onDecision(cb)` | `() => void`           | Subscribe to decisions; fires immediately if already decided. Returns an unsubscribe function. |\n| `open()`         | `void`                 | Re-open the preferences panel.                                                                 |\n\n### `<asiri-consent>` attributes\n\n| Attribute   | Required | Default                | Description                               |\n| ----------- | -------- | ---------------------- | ----------------------------------------- |\n| `notice-id` | Yes      | —                      | Your published consent notice ID.         |\n| `api-base`  | No       | `https://api.asiri.ng` | Override the API base URL (e.g. staging). |\n\n### CSS custom properties (design tokens)\n\nThe banner ships with a neutral light look. Every colour, radius, shadow, and\nfont is exposed as a `--asiri-consent-*` custom property that pierces the shadow\nboundary, so you can restyle it from your page CSS without forking the\ncomponent:\n\n```css\nasiri-consent {\n  /* surfaces */\n  --asiri-consent-bg: #ffffff; /* banner + panel background */\n  --asiri-consent-bg-2: #f7f4ef; /* purpose rows in the preferences panel */\n  --asiri-consent-border: #d9dde7;\n  --asiri-consent-radius: 16px;\n  --asiri-consent-shadow: 0 12px 40px rgba(20, 23, 43, 0.18);\n  /* text */\n  --asiri-consent-text: #14172b;\n  --asiri-consent-muted: #4b5163;\n  --asiri-consent-font: -apple-system, sans-serif;\n  /* actions */\n  --asiri-consent-primary-bg: #19203f; /* Accept all / Save choices */\n  --asiri-consent-primary-fg: #f7f3ec;\n  --asiri-consent-outline-border: #19203f; /* Reject non-essential */\n  --asiri-consent-outline-fg: #19203f;\n  --asiri-consent-ghost-fg: #4b5163; /* Customize */\n  /* controls */\n  --asiri-consent-accent: #19203f; /* toggle \"on\" state */\n  --asiri-consent-toggle-off: #d9dde7;\n  --asiri-consent-pill-bg: #f4ead2; /* \"Required\" pill */\n  --asiri-consent-pill-fg: #854a00;\n}\n```\n\nDark-site example (only override what you need):\n\n```css\nasiri-consent {\n  --asiri-consent-bg: #141d36;\n  --asiri-consent-text: #eef2fc;\n  --asiri-consent-muted: #7d8db4;\n  --asiri-consent-border: #2c3757;\n  --asiri-consent-bg-2: #232c44;\n  --asiri-consent-primary-bg: #f5c542;\n  --asiri-consent-primary-fg: #070b16;\n  --asiri-consent-outline-fg: #eef2fc;\n  --asiri-consent-accent: #f5c542;\n}\n```\n\n### `::part()` selectors\n\nFor styling beyond the design tokens, the following shadow parts are exposed:\n\n`banner`, `title`, `description`, `actions`, `button`, `accept`, `reject`,\n`customize`, `panel`, `panel-title`, `panel-description`, `purposes`,\n`purpose`, `toggle`, `panel-footer`, `save`.\n\n```css\nasiri-consent::part(banner) {\n  backdrop-filter: blur(8px);\n}\nasiri-consent::part(button accept) {\n  text-transform: uppercase;\n}\n```\n\n### Troubleshooting\n\nIf the configured notice cannot be loaded (unpublished, deleted, or wrong\n`api-base`), the banner still renders with generic copy so visitors are never\nblocked — but consent decisions are **not** recorded, and the component logs a\n`[asiri-consent]` warning to the console explaining why. Treat that warning as\na deploy blocker.\n\n---\n\n## Trust badge\n\n### Quick start — no build required\n\n```html\n<script\n  async\n  src=\"https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/trust-badge.global.js\"\n  integrity=\"sha384-REPLACE_WITH_HASH_FROM_NPM_PUBLISH\"\n  crossorigin=\"anonymous\"\n></script>\n<asiri-trust-badge tenant=\"YOUR_TENANT_SLUG\"></asiri-trust-badge>\n```\n\n### Install via npm\n\n```ts\nimport '@asiri-ng/elements/trust-badge';\n```\n\nPlace the element in your markup:\n\n```html\n<asiri-trust-badge tenant=\"YOUR_TENANT_SLUG\"></asiri-trust-badge>\n```\n\n### Programmatic mount\n\n```ts\nimport { mountAsiriTrustBadge } from '@asiri-ng/elements/trust-badge';\n\nmountAsiriTrustBadge({\n  tenant: 'YOUR_TENANT_SLUG',\n});\n```\n\n### `<asiri-trust-badge>` attributes\n\n| Attribute         | Required | Default                           | Description                                                                                           |\n| ----------------- | -------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |\n| `tenant`          | Yes      | —                                 | Your tenant slug (used to load the public trust widget).                                              |\n| `api-base`        | No       | `https://api.asiri.ng`            | Override the API base URL (e.g. staging).                                                             |\n| `variant`         | No       | `compact`                         | Backwards-compatible no-op. The element always renders badge-only.                                    |\n| `design`          | No       | saved app setting                 | Badge artwork: `option-1` through `option-10`. Overrides the saved Trust Center setting when present. |\n| `theme`           | No       | `light`                           | Backwards-compatible no-op for older snippets.                                                        |\n| `accent`          | No       | `#C58A2A`                         | Focus-ring accent colour (CSS colour value).                                                          |\n| `radius`          | No       | `lg`                              | Backwards-compatible no-op for older snippets.                                                        |\n| `size`            | No       | `md`                              | Backwards-compatible no-op for older snippets.                                                        |\n| `position`        | No       | `bottom-right`                    | Backwards-compatible no-op for older snippets.                                                        |\n| `show-frameworks` | No       | `true`                            | Backwards-compatible no-op for older snippets.                                                        |\n| `show-updated`    | No       | `true`                            | Backwards-compatible no-op for older snippets.                                                        |\n| `show-powered-by` | No       | `true`                            | Backwards-compatible no-op for older snippets.                                                        |\n| `locale`          | No       | browser default                   | Backwards-compatible no-op for older snippets.                                                        |\n| `trust-url`       | No       | `https://asiri.ng/trust/{tenant}` | Override the Trust Center link URL.                                                                   |\n\nThe `api-base` override is intended for Asiri production, Asiri staging, and\nlocalhost development. Badge attestation verification only trusts JWKS from\n`https://api.asiri.ng`, `https://api.staging.asiri.ng`, or localhost when the\nembedding page is also local.\n\n### CSS custom properties\n\nThe badge artwork is bundled into the package as transparent PNG data, so npm\nand CDN installs do not need separate asset hosting. The element renders only\nthe selected badge image inside a link to the Trust Center. If `design` is\nomitted, the element uses the tenant's saved badge design from Settings → Trust\nCenter → Website badge and updates after the public widget cache refreshes. Use\n`design` only when you want a specific website install to stay pinned to one\nbadge artwork.\n\nAll design tokens are exposed on `:host` so you can override them from outside:\n\n```css\nasiri-trust-badge {\n  --asiri-tb-accent: #7c3aed;\n  --asiri-tb-radius: 8px;\n}\n```\n\n### `::part()` selectors\n\nThe following shadow parts are exposed for targeted styling:\n\n`mark`, `cta`, `badge-image`.\n\n---\n\n## DSR (Data Subject Request)\n\nAllow your users to submit privacy requests (access, erasure, rectification, portability, restriction, objection) directly from your product.\n\n### Quick start — no build required\n\n```html\n<script\n  async\n  src=\"https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/dsr.global.js\"\n></script>\n<asiri-dsr tenant=\"YOUR_TENANT_SLUG\"></asiri-dsr>\n```\n\n### Install via npm\n\n```ts\nimport '@asiri-ng/elements/dsr';\n```\n\nPlace the element in your markup:\n\n```html\n<asiri-dsr tenant=\"YOUR_TENANT_SLUG\" variant=\"button\" theme=\"auto\"></asiri-dsr>\n```\n\n### Programmatic mount\n\n```ts\nimport { mountAsiriDsr } from '@asiri-ng/elements/dsr';\n\nmountAsiriDsr({ tenant: 'YOUR_TENANT_SLUG', variant: 'inline', theme: 'auto' });\n```\n\n### `<asiri-dsr>` attributes\n\n| Attribute            | Required | Default                | Description                                                       |\n| -------------------- | -------- | ---------------------- | ----------------------------------------------------------------- |\n| `tenant`             | Yes      | —                      | Your tenant slug.                                                 |\n| `api-base`           | No       | `https://api.asiri.ng` | Override the API base URL (e.g. staging).                         |\n| `variant`            | No       | `button`               | Layout: `button` (trigger → modal), `inline`, `floating` (fixed). |\n| `theme`              | No       | `light`                | Colour mode: `light`, `dark`, `auto`.                             |\n| `accent`             | No       | `#142044`              | Brand accent colour (CSS colour value).                           |\n| `radius`             | No       | `md`                   | Corner radius: `sm`, `md`, `lg`, `pill`.                          |\n| `size`               | No       | `md`                   | Relative size: `sm`, `md`, `lg`.                                  |\n| `position`           | No       | `bottom-right`         | Floating variant position: `bottom-left/right`, `top-left/right`. |\n| `label`              | No       | `Privacy request`      | Trigger button text.                                              |\n| `locale`             | No       | browser default        | BCP 47 locale (reserved for future use).                          |\n| `turnstile-site-key` | No       | —                      | Cloudflare Turnstile site key — enables captcha on the form.      |\n\n### CSS custom properties (design tokens)\n\nAll tokens are exposed on `:host` so you can override from outside:\n\n```css\nasiri-dsr {\n  --asiri-dsr-accent: #7c3aed;\n  --asiri-dsr-radius: 8px;\n  --asiri-dsr-bg: #ffffff;\n  --asiri-dsr-bg-2: #f8fafc;\n  --asiri-dsr-text: #101322;\n  --asiri-dsr-muted: #647084;\n  --asiri-dsr-border: #dfe4ee;\n  --asiri-dsr-shadow: 0 22px 64px rgba(16, 24, 40, 0.14);\n  --asiri-dsr-danger: #c0392b;\n  --asiri-dsr-success: #2f9b63;\n  --asiri-dsr-font: Inter, sans-serif;\n}\n```\n\nToken precedence: `accent` / `radius` **attributes** take priority over CSS token overrides, which take priority over built-in defaults. Only set them if explicitly provided by the consumer.\n\n### `::part()` selectors\n\n`trigger`, `float-button`, `dialog`, `backdrop`, `header`, `form`, `field`, `label`, `input`, `select`, `textarea`, `submit`, `cancel`, `success`, `error`, `close`.\n\n### Captcha (Turnstile)\n\nWhen `turnstile-site-key` is set the component lazily injects the Cloudflare Turnstile script and renders the challenge widget inside the form. The resulting token is sent as `captchaToken` in the POST body. If the attribute is omitted the form submits without a token.\n\n---\n\n## Trust access request\n\nLet prospects request access to gated resources (SOC 2 report, security questionnaire, sandbox) straight from your Trust Center. Renders a button that opens a modal email-capture form (or an inline form).\n\n### Quick start — no build required\n\n```html\n<script\n  async\n  src=\"https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/trust-access.global.js\"\n></script>\n<asiri-trust-access tenant=\"YOUR_TENANT_SLUG\"></asiri-trust-access>\n```\n\n### Install via npm\n\n```ts\nimport '@asiri-ng/elements/trust-access';\n```\n\n```html\n<asiri-trust-access tenant=\"YOUR_TENANT_SLUG\" variant=\"button\" theme=\"auto\"></asiri-trust-access>\n```\n\n### Programmatic mount\n\n```ts\nimport { mountAsiriTrustAccess } from '@asiri-ng/elements/trust-access';\n\nmountAsiriTrustAccess({ tenant: 'YOUR_TENANT_SLUG', variant: 'inline', theme: 'auto' });\n```\n\n### `<asiri-trust-access>` attributes\n\n| Attribute            | Required | Default                | Description                                                  |\n| -------------------- | -------- | ---------------------- | ------------------------------------------------------------ |\n| `tenant`             | Yes      | —                      | Your tenant slug.                                            |\n| `api-base`           | No       | `https://api.asiri.ng` | Override the API base URL (e.g. staging).                    |\n| `variant`            | No       | `button`               | Layout: `button` (trigger → modal) or `inline`.              |\n| `label`              | No       | `Request access`       | Trigger button text.                                         |\n| `resource-id`        | No       | —                      | Identifier of the gated resource being requested.            |\n| `theme`              | No       | `light`                | Colour mode: `light`, `dark`, `auto`.                        |\n| `accent`             | No       | `#142044`              | Brand accent colour (CSS colour value).                      |\n| `radius`             | No       | `md`                   | Corner radius: `sm`, `md`, `lg`, `pill`.                     |\n| `size`               | No       | `md`                   | Relative size: `sm`, `md`, `lg`.                             |\n| `locale`             | No       | browser default        | BCP 47 locale (reserved for future use).                     |\n| `turnstile-site-key` | No       | —                      | Cloudflare Turnstile site key — enables captcha on the form. |\n\nForm fields: **email** (required), name (optional), company (optional), **message** (required).\n\n### CSS custom properties (design tokens)\n\n```css\nasiri-trust-access {\n  --asiri-ta-accent: #7c3aed;\n  --asiri-ta-radius: 8px;\n  --asiri-ta-bg: #ffffff;\n  --asiri-ta-bg-2: #f8fafc;\n  --asiri-ta-text: #101322;\n  --asiri-ta-muted: #647084;\n  --asiri-ta-border: #dfe4ee;\n  --asiri-ta-shadow: 0 22px 64px rgba(16, 24, 40, 0.14);\n  --asiri-ta-danger: #c0392b;\n  --asiri-ta-success: #2f9b63;\n  --asiri-ta-font: Inter, sans-serif;\n}\n```\n\nToken precedence: `accent` / `radius` **attributes** beat CSS token overrides, which beat built-in defaults.\n\n### `::part()` selectors\n\n`trigger`, `dialog`, `backdrop`, `header`, `form`, `field`, `label`, `input`, `textarea`, `submit`, `cancel`, `success`, `error`, `close`.\n\n---\n\n## Trust subscribe\n\nCapture emails for security/compliance update notifications from your Trust Center. Renders a button that opens a modal email-capture form (or an inline form).\n\n### Quick start — no build required\n\n```html\n<script\n  async\n  src=\"https://cdn.jsdelivr.net/npm/@asiri-ng/elements@0.6.3/dist/trust-subscribe.global.js\"\n></script>\n<asiri-trust-subscribe tenant=\"YOUR_TENANT_SLUG\"></asiri-trust-subscribe>\n```\n\n### Install via npm\n\n```ts\nimport '@asiri-ng/elements/trust-subscribe';\n```\n\n```html\n<asiri-trust-subscribe\n  tenant=\"YOUR_TENANT_SLUG\"\n  variant=\"button\"\n  theme=\"auto\"\n></asiri-trust-subscribe>\n```\n\n### Programmatic mount\n\n```ts\nimport { mountAsiriTrustSubscribe } from '@asiri-ng/elements/trust-subscribe';\n\nmountAsiriTrustSubscribe({ tenant: 'YOUR_TENANT_SLUG', variant: 'inline', theme: 'auto' });\n```\n\n### `<asiri-trust-subscribe>` attributes\n\n| Attribute            | Required | Default                | Description                                                  |\n| -------------------- | -------- | ---------------------- | ------------------------------------------------------------ |\n| `tenant`             | Yes      | —                      | Your tenant slug.                                            |\n| `api-base`           | No       | `https://api.asiri.ng` | Override the API base URL (e.g. staging).                    |\n| `variant`            | No       | `button`               | Layout: `button` (trigger → modal) or `inline`.              |\n| `label`              | No       | `Subscribe to updates` | Trigger button text.                                         |\n| `segment`            | No       | —                      | Subscription segment / list identifier.                      |\n| `theme`              | No       | `light`                | Colour mode: `light`, `dark`, `auto`.                        |\n| `accent`             | No       | `#142044`              | Brand accent colour (CSS colour value).                      |\n| `radius`             | No       | `md`                   | Corner radius: `sm`, `md`, `lg`, `pill`.                     |\n| `size`               | No       | `md`                   | Relative size: `sm`, `md`, `lg`.                             |\n| `locale`             | No       | browser default        | BCP 47 locale (reserved for future use).                     |\n| `turnstile-site-key` | No       | —                      | Cloudflare Turnstile site key — enables captcha on the form. |\n\nForm fields: **email** (required), name (optional), company (optional).\n\n### CSS custom properties (design tokens)\n\n```css\nasiri-trust-subscribe {\n  --asiri-ts-accent: #7c3aed;\n  --asiri-ts-radius: 8px;\n  --asiri-ts-bg: #ffffff;\n  --asiri-ts-bg-2: #f8fafc;\n  --asiri-ts-text: #101322;\n  --asiri-ts-muted: #647084;\n  --asiri-ts-border: #dfe4ee;\n  --asiri-ts-shadow: 0 22px 64px rgba(16, 24, 40, 0.14);\n  --asiri-ts-danger: #c0392b;\n  --asiri-ts-success: #2f9b63;\n  --asiri-ts-font: Inter, sans-serif;\n}\n```\n\nToken precedence: `accent` / `radius` **attributes** beat CSS token overrides, which beat built-in defaults.\n\n### `::part()` selectors\n\n`trigger`, `dialog`, `backdrop`, `header`, `form`, `field`, `label`, `input`, `submit`, `cancel`, `success`, `error`, `close`.\n","readmeFilename":"README.md"}