API Key
better-auth-ui/api-keyFreeComponent
API Key plugin: list, create, copy, and revoke API keys. Registers an API Keys security card in account settings.
Live preview
live · rendered by the registry
Rendered by better-auth-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://better-auth-ui.com/r/api-key.jsonSource
1"use client"23import {4 type ListedApiKey,5 useAuth,6 useAuthPlugin7} from "@better-auth-ui/react"8import { Key, X } from "lucide-react"9import { useState } from "react"1011import { Button } from "@/components/ui/button"12import {13 Item,14 ItemActions,15 ItemContent,16 ItemDescription,17 ItemMedia,18 ItemTitle19} from "@/components/ui/item"20import { apiKeyPlugin } from "@/lib/auth/api-key-plugin"21import { DeleteApiKeyDialog } from "./delete-api-key-dialog"2223export type ApiKeyProps = {24 apiKey: ListedApiKey25 /** Hide the row's delete button (e.g., when caller lacks `apiKey:delete`). */26 hideDelete?: boolean27 /** Scope the delete payload to an organization (sets `configId`). */28 organizationId?: string29}3031export function ApiKey({ apiKey, hideDelete, organizationId }: ApiKeyProps) {32 const { localization } = useAuth()33 const { localization: apiKeyLocalization } = useAuthPlugin(apiKeyPlugin)34 const [deleteOpen, setDeleteOpen] = useState(false)3536 const preview = `${apiKey.start}${"*".repeat(16)}`3738 return (39 <Item>40 <ItemMedia variant="icon">41 <Key />42 </ItemMedia>43 <ItemContent>44 <ItemTitle>{apiKey.name || apiKeyLocalization.apiKey}</ItemTitle>45 <ItemDescription className="font-mono">{preview}</ItemDescription>46 <ItemDescription>47 {apiKeyLocalization.created}{" "}48 {new Date(apiKey.createdAt).toLocaleString(undefined, {49 dateStyle: "medium",50 timeStyle: "short"51 })}52 </ItemDescription>53 <ItemDescription>54 {apiKey.expiresAt55 ? `${apiKeyLocalization.expires} ${new Date(56 apiKey.expiresAt57 ).toLocaleString(undefined, {58 dateStyle: "medium",59 timeStyle: "short"60 })}`61 : apiKeyLocalization.neverExpires}62 </ItemDescription>63 </ItemContent>64 <ItemActions>65 {!hideDelete && (66 <>67 <Button68 variant="outline"69 size="sm"70 onClick={() => setDeleteOpen(true)}71 aria-label={apiKeyLocalization.deleteApiKey}72 >73 <X />7475 {localization.settings.delete}76 </Button>7778 <DeleteApiKeyDialog79 open={deleteOpen}80 onOpenChange={setDeleteOpen}81 apiKey={apiKey}82 organizationId={organizationId}83 />84 </>85 )}86 </ItemActions>87 </Item>88 )89}
What it pulls in
npm packages
Other registry items
Files it writes
More from better-auth-ui
All 49 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Account Settingsaccount-settings | better-auth-ui | Components | Free | 2 deps | |
| Active Sessionsactive-sessions | better-auth-ui | Components | Free | 5 deps · 2 files | |
| Additional Fieldadditional-field | better-auth-ui | Components | Free | 5 deps | |
| Adminadmin | better-auth-ui | Components | Free | 4 deps · 3 files | |
| Anonymousanonymous | better-auth-ui | Components | Free | 4 deps · 3 files | |
| Authauth | better-auth-ui | Components | Free | 2 deps | |
| Auth Providerauth-provider | better-auth-ui | Components | Free | 4 deps · 2 files | |
| Auth Redirectauth-redirect | better-auth-ui | Components | Free | 3 deps |
