{"_id":"@astrapi69/ai-key-vault-react","_rev":"7-01d06a4d02faf78ce2734fb9bdb34c7b","name":"@astrapi69/ai-key-vault-react","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"@astrapi69/ai-key-vault-react","version":"0.1.0","keywords":["react","ai","byok","api-key","vault","settings","components"],"author":{"name":"Asterios Raptis"},"license":"MIT","_id":"@astrapi69/ai-key-vault-react@0.1.0","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"homepage":"https://github.com/astrapi69/ai-key-vault#readme","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"dist":{"shasum":"2b06f1830a0e34d0c379dde54f750906300d567e","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.1.0.tgz","fileCount":8,"integrity":"sha512-/lUyzly64u1fnM2DBjZ8XXyQ/YhUEAv0rVc7R8LZjzS4dnHhEkO8SmXZYJoO+xsfp/vGA735k/HRXoS1a4u4Vg==","signatures":[{"sig":"MEUCIEOa0fLcHpw/baVJEQoY/IcTNy305k0LHjjrVUaNLQwzAiEAxGdJK5VJIFzCfImv5Gx1tqeMGslw8taHo7QXKeQ3K7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422522},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"434d7ee6dda03ced57eed624a3c80bd180e6336f","scripts":{"build":"tsup"},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"repository":{"url":"git+https://github.com/astrapi69/ai-key-vault.git","type":"git","directory":"packages/react"},"_npmVersion":"11.16.0","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@astrapi69/ai-key-vault":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/ai-key-vault-react_0.1.0_1784547418670_0.27878417703881864","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@astrapi69/ai-key-vault-react","version":"0.1.1","keywords":["react","ai","byok","api-key","vault","settings","components"],"author":{"name":"Asterios Raptis"},"license":"MIT","_id":"@astrapi69/ai-key-vault-react@0.1.1","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"homepage":"https://github.com/astrapi69/ai-key-vault#readme","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"dist":{"shasum":"c202725defdc6af961087613c33b20fc1c9eaefa","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.1.1.tgz","fileCount":8,"integrity":"sha512-7jM4S+WbRRMnQjMThzmrYSjgxm+9PdCB1v6oCZqntvo3f8iEKL2DGidSIPWTg7OxiFT3DOVGAs9445UwW07tEA==","signatures":[{"sig":"MEQCIGf1pg4Ie6YvAGKJQNFV381KScgo3eh6DD0INCPqC4PAAiA6QyDPNi+LFZpfzDmc0ifmCu9Z2GUhIx8zpnnwXtox3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425402},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"e4e8f03e5576dd106f4b24d02b7f24c3760c395b","scripts":{"build":"tsup"},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"repository":{"url":"git+https://github.com/astrapi69/ai-key-vault.git","type":"git","directory":"packages/react"},"_npmVersion":"11.16.0","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@astrapi69/ai-key-vault":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/ai-key-vault-react_0.1.1_1784550060856_0.12034271226067195","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@astrapi69/ai-key-vault-react","version":"0.1.2","keywords":["react","ai","byok","api-key","vault","settings","components"],"author":{"name":"Asterios Raptis"},"license":"MIT","_id":"@astrapi69/ai-key-vault-react@0.1.2","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"homepage":"https://github.com/astrapi69/ai-key-vault#readme","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"dist":{"shasum":"b70b95134019ef30666ab88c478c0dda32280b2c","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.1.2.tgz","fileCount":8,"integrity":"sha512-67KSw3mh7RUksOZkg69QWQBxYh3XzvAwLoAZ72CE6u5YY2vPWBTROEsK2Jzqzit6aupXYLSD4wloh6wc9biWOQ==","signatures":[{"sig":"MEUCIQCoGNmMr1xoAqgoxM4hPTcMAbz7AVOJMInfJSJcIce95QIgP0RAjuqN9TAS/JBjA73lxqdduFMtTxdK9ArKoHE1A9M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425402},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"ba91c13872030084ba2bff73290c1838550532be","scripts":{"build":"tsup"},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"repository":{"url":"git+https://github.com/astrapi69/ai-key-vault.git","type":"git","directory":"packages/react"},"_npmVersion":"11.16.0","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@astrapi69/ai-key-vault":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/ai-key-vault-react_0.1.2_1784567023893_0.8398628422199295","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@astrapi69/ai-key-vault-react","version":"0.2.0","keywords":["react","ai","byok","api-key","vault","settings","components"],"author":{"name":"Asterios Raptis"},"license":"MIT","_id":"@astrapi69/ai-key-vault-react@0.2.0","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"homepage":"https://github.com/astrapi69/ai-key-vault#readme","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"dist":{"shasum":"04c73346cf2fe1684511f527f679ebf1ffd36f68","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.2.0.tgz","fileCount":8,"integrity":"sha512-K2baNrM8K6MDDmarIBg7c24TYOh8ZxM10Di74MCuFbQN+DX4C1hTZPsLAmbXLhAAyNmWsAfWFfG42CNkwduwHg==","signatures":[{"sig":"MEYCIQDFa1xJHsgtDxNMDNkSz9nkFy13S2WuhZBgveJg+HS7XgIhAPLuZgRssxT8V3sRbjVo/5oY73ddaew8ga138NJ++5CR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425908},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"dabc92fcc1b7081fa8ddfb41f97b6ac3a9d1bdcd","scripts":{"build":"tsup"},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"repository":{"url":"git+https://github.com/astrapi69/ai-key-vault.git","type":"git","directory":"packages/react"},"_npmVersion":"12.0.1","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@astrapi69/ai-key-vault":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/ai-key-vault-react_0.2.0_1786188581543_0.6822060143119653","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@astrapi69/ai-key-vault-react","version":"0.3.0","keywords":["react","ai","byok","api-key","vault","settings","components"],"author":{"name":"Asterios Raptis"},"license":"MIT","_id":"@astrapi69/ai-key-vault-react@0.3.0","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"homepage":"https://github.com/astrapi69/ai-key-vault#readme","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"dist":{"shasum":"4f8c00b6211d60637bbb45b2c53348a0cf1afd6f","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.3.0.tgz","fileCount":8,"integrity":"sha512-fMMEoDDs4Y1e5tfGDZdmGjpMbsZYmISkNWEkQwjKoOZNQIisNEX34VVAw/Ohkmb9LvideJkdCZaafDHwGz9QBg==","signatures":[{"sig":"MEQCIGWOVyZgbaDTJquIYKhR4hFtll1l9tE9yKcc+wkPdLLwAiAGpAu8gZ6uBEfaZjehSpZcjwOozabEvSjfHE5WO1XwEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431332},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a33c6e09449a1a659f665119648ec6123fab5bb2","scripts":{"build":"tsup"},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"repository":{"url":"git+https://github.com/astrapi69/ai-key-vault.git","type":"git","directory":"packages/react"},"_npmVersion":"12.0.1","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@astrapi69/ai-key-vault":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/ai-key-vault-react_0.3.0_1786194659980_0.0025180081598905613","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@astrapi69/ai-key-vault-react","version":"0.3.1","keywords":["react","ai","byok","api-key","vault","settings","components"],"author":{"name":"Asterios Raptis"},"license":"MIT","_id":"@astrapi69/ai-key-vault-react@0.3.1","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"homepage":"https://github.com/astrapi69/ai-key-vault#readme","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"dist":{"shasum":"58e570cdf12183f078098a72d26ebd82ca2e81ee","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.3.1.tgz","fileCount":8,"integrity":"sha512-F7luAOv4AOidI+s8QqQxbGgboSxH+7claGzJ54eMmEn8Xt1eA8Nxz4p4s3haWn4BsP44XeimCLm4PFyWM0F8lQ==","signatures":[{"sig":"MEQCIBkUhuuepGgwNsEM0c+wN6YeTQQw3DLTB2MfC2FDJBkwAiBy2rk3wtmm3MFyXBSqosxGysWDwzBA3QrcjWALKNR8Fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":432052},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"1da4ce9b8b3a67aa7afbe540d5d37087e901cd6e","scripts":{"build":"tsup"},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"repository":{"url":"git+https://github.com/astrapi69/ai-key-vault.git","type":"git","directory":"packages/react"},"_npmVersion":"12.0.1","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@astrapi69/ai-key-vault":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18 || ^19"},"_npmOperationalInternal":{"tmp":"tmp/ai-key-vault-react_0.3.1_1786456134614_0.9121188411521155","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@astrapi69/ai-key-vault-react","version":"0.3.2","description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","license":"MIT","author":{"name":"Asterios Raptis"},"repository":{"type":"git","url":"git+https://github.com/astrapi69/ai-key-vault.git","directory":"packages/react"},"keywords":["react","ai","byok","api-key","vault","settings","components"],"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"sideEffects":false,"scripts":{"build":"tsup"},"dependencies":{"@astrapi69/ai-key-vault":"0.2.0"},"peerDependencies":{"react":"^18 || ^19"},"publishConfig":{"access":"public"},"engines":{"node":">=20"},"gitHead":"749375762c82d5138dfd4ec61dbac4b18d1c3c03","_id":"@astrapi69/ai-key-vault-react@0.3.2","bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"homepage":"https://github.com/astrapi69/ai-key-vault#readme","_nodeVersion":"24.15.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-gkS19JDTS+1EJ8Sq4v+nfJI5+rNy0B9oFFx2agVptlfK7niPjVapbuFXdQXyxslUQWaXoZyDBBxM1ENN3mJW4w==","shasum":"d0494e93507f4eea09f3f2889ce1a95eb4dbb535","tarball":"https://registry.npmjs.org/@astrapi69/ai-key-vault-react/-/ai-key-vault-react-0.3.2.tgz","fileCount":8,"unpackedSize":432244,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDK+A4ynfv1Oh+ovsDXRRxacryPxLU2FOfVt/zyD+NuOwIhAKMvREHckqL4/zwjjnNVElyT+ElFoaUxukLa+EEohvGG"}]},"_npmUser":{"name":"astrapi69","email":"asterios.raptis@gmx.net"},"directories":{},"maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-key-vault-react_0.3.2_1786457827450_0.5477480437834803"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-20T11:36:58.401Z","modified":"2026-08-11T14:17:07.763Z","0.1.0":"2026-07-20T11:36:58.851Z","0.1.1":"2026-07-20T12:21:01.003Z","0.1.2":"2026-07-20T17:03:44.039Z","0.2.0":"2026-08-08T11:29:41.712Z","0.3.0":"2026-08-08T13:11:00.219Z","0.3.1":"2026-08-11T13:48:54.745Z","0.3.2":"2026-08-11T14:17:07.591Z"},"bugs":{"url":"https://github.com/astrapi69/ai-key-vault/issues"},"author":{"name":"Asterios Raptis"},"license":"MIT","homepage":"https://github.com/astrapi69/ai-key-vault#readme","keywords":["react","ai","byok","api-key","vault","settings","components"],"repository":{"type":"git","url":"git+https://github.com/astrapi69/ai-key-vault.git","directory":"packages/react"},"description":"React UI for BYOK AI provider settings and the encrypted key vault: settings panel, provider table, key vault import/export — storage-, i18n- and UI-slot-injectable","maintainers":[{"name":"astrapi69","email":"asterios.raptis@gmx.net"}],"readme":"# @astrapi69/ai-key-vault-react\n\nReact UI for **bring-your-own-key (BYOK) AI provider settings** and the\nencrypted key vault. Built on\n[`@astrapi69/ai-key-vault`](https://www.npmjs.com/package/@astrapi69/ai-key-vault);\nextracted from\n[adaptive-learner](https://github.com/astrapi69/adaptive-learner).\n\nThe components import no storage, i18n framework, router or toast library.\nEverything app-specific is injected once, at the provider.\n\n## Setup\n\n```tsx\nimport {\n    BUILTIN_REGISTRY,\n    createProviderRegistry,\n    BUILTIN_PROVIDERS,\n} from \"@astrapi69/ai-key-vault\";\nimport {\n    AiSettingsProvider,\n    AiSettingsPanel,\n    KeyVaultSection,\n    ApiKeyRequiredNotice,\n    useApiKeyStatus,\n} from \"@astrapi69/ai-key-vault-react\";\n\n<AiSettingsProvider\n    adapter={myKeyStoreAdapter}   // implements AiKeyStoreAdapter over your storage\n    registry={BUILTIN_REGISTRY}   // or createProviderRegistry([...])\n    userId={currentUserId}\n    t={myI18n.t}                  // (key, fallback) => string; optional\n    notify={myToasts}             // { success, error, warning }; optional\n    confirm={myConfirmDialog}     // (opts) => Promise<boolean>; optional\n    Button={MyButton}             // design-system slots; optional (plain defaults otherwise)\n    Input={MyInput}\n    Link={MyRouterLink}           // { to } => element; default <a href>\n>\n    <AiSettingsPanel />\n    <KeyVaultSection />\n</AiSettingsProvider>;\n```\n\nEverything except `adapter`, `registry` and `userId` has a default, so the\nUI renders with zero wiring and adopts your look/behaviour as you override\nslots.\n\n### Styling the native file-picker button\n\n`KeyVaultImportForm`'s file input is plain native HTML (no slot for it -\nthere's no sane way to inject a whole `<input type=\"file\">` replacement), so\nit renders as unstyled OS chrome by default, same as any bare file input. It\ncarries a stable class, `akv-file-input`, so a host can style the native\nbutton from its OWN stylesheet without depending on an undocumented\n`data-testid`:\n\n```css\n.akv-file-input::file-selector-button {\n    /* also add ::-webkit-file-upload-button for older Safari/Chrome */\n    cursor: pointer;\n    border: 0;\n    border-radius: 0.375rem;\n    padding: 0.5rem 1rem;\n    background: var(--your-accent-token);\n    color: var(--your-accent-fg-token);\n}\n```\n\nThe kit ships no rule of its own for it - consistent with the slot\nphilosophy above, appearance is entirely the host's call.\n\n## What you get\n\n- **`AiSettingsPanel`** — provider overview, active-provider select,\n  per-provider model overrides, and the API-key manager (save / live-test /\n  delete, with the auto-test-on-save last-known-good backup flow).\n- **`KeyVaultSection`** + **`KeyVaultImportForm`** — passphrase-encrypted\n  export/import of the keys, capability-aware (server-managed keys show a\n  notice instead of a dead export form; import always works).\n- **`ConfiguredProvidersTable`**, **`ApiKeyRow`**, **`ApiKeyRequiredNotice`**,\n  **`SecretInput`** — the building blocks, usable on their own.\n- **`useAiKeyStore`** / **`useApiKeyStatus`** — the state + gating hooks.\n\n## Capabilities\n\nOptional adapter methods (`testApiKey`, `backupApiKey`,\n`getApiKeyBackup`, `restoreApiKeyBackup`) are surfaced as capabilities; the\nUI shows the Test button and the restore link only when the adapter\nimplements them.\n\n## Peer dependency\n\n`react ^18 || ^19`.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}