@plumix/admin 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/-errors-RB-rEi-I.js +1 -0
- package/dist/assets/{_-C6mMIz3l.js → _-DngjjFK4.js} +1 -1
- package/dist/assets/{_-CljmxTlS.js → _-h-_izgKQ.js} +2 -2
- package/dist/assets/_authenticated-Bgi03W1b.js +1 -0
- package/dist/assets/{_authenticated-kVO_-7Sn.js → _authenticated-CH4N_cSi.js} +2 -2
- package/dist/assets/{_authenticated-BYa_DMSE.js → _authenticated-E1SDZnP9.js} +1 -1
- package/dist/assets/{_name-aKYVqU32.js → _name-BEnhsrWI.js} +2 -2
- package/dist/assets/{_name-BGOHegOZ.js → _name-DQVev0AG.js} +1 -1
- package/dist/assets/_page-D0l1kYXx.js +1 -0
- package/dist/assets/_page-wrWlHYyD.js +2 -0
- package/dist/assets/{_slug-Bdb7jL1l.js → _slug-BfC_rJhz.js} +1 -1
- package/dist/assets/{_slug-DWmiGCz6.js → _slug-Bztim-i3.js} +2 -2
- package/dist/assets/{_token-s0TefqyQ.js → _token-D-j4VVVI.js} +1 -1
- package/dist/assets/{_token-DVnFp6Xw.js → _token-Dsc9zTxr.js} +2 -2
- package/dist/assets/{allowed-domains-CQYTKIje.js → allowed-domains-B6oGNO8i.js} +1 -1
- package/dist/assets/{ar-Dh1_Madu.js → ar-D0lPKYVq.js} +1 -1
- package/dist/assets/{bootstrap-DAMkwOTO.js → bootstrap-Dbv-AIOo.js} +2 -2
- package/dist/assets/{bootstrap-oBDU-2AF.js → bootstrap-jj58lGRM.js} +1 -1
- package/dist/assets/breadcrumb-Di_E7s51.js +1 -0
- package/dist/assets/{create-CaxQlu5L.js → create-CXFn-yel.js} +1 -1
- package/dist/assets/{create-DQ5AIyqG.js → create-Cvo5wKBV.js} +2 -2
- package/dist/assets/{create-DgEbjT-H.js → create-CylSqfDG.js} +1 -1
- package/dist/assets/create-Dg10UEnK.js +1 -0
- package/dist/assets/{create-CICYrKqG.js → create-DnLK3SmI.js} +2 -2
- package/dist/assets/{de-BDyIkMJC.js → de-ByPNuZ6R.js} +1 -1
- package/dist/assets/{device-COTq1gdI.js → device-CxnTgMZ6.js} +1 -1
- package/dist/assets/{device-Ae_X8x7B.js → device-vY_uxsCV.js} +2 -2
- package/dist/assets/{edit-BAIuOGAs.js → edit-2aEJRHSG.js} +3 -3
- package/dist/assets/edit-BPw2fZ5B.js +1 -0
- package/dist/assets/{edit-BskWld1E.js → edit-BRhq3mGx.js} +2 -2
- package/dist/assets/{edit-DtsKHyYT.js → edit-Cc5hxhM7.js} +2 -2
- package/dist/assets/{edit-DLcsu05p.js → edit-Cu_XtYMX.js} +1 -1
- package/dist/assets/edit-D9-iSIWu.js +2 -0
- package/dist/assets/edit-DOoYH9tG.js +1 -0
- package/dist/assets/{en-DYui4aSX.js → en-LRPc5lfW.js} +1 -1
- package/dist/assets/form-CY307HEl.js +1 -0
- package/dist/assets/index-B9lFt9M4.css +1 -0
- package/dist/assets/{index-MLqJwsKQ.js → index-D7rrOihJ.js} +3 -3
- package/dist/assets/json-code-editor-9PGQwSkN.js +12 -0
- package/dist/assets/{login-DU7y_Ylt.js → login-0-PQLYlS.js} +2 -2
- package/dist/assets/{login-Bify50W1.js → login-Dk-LKP1e.js} +1 -1
- package/dist/assets/{mailer-DoyD5gWW.js → mailer-BemLhNOI.js} +1 -1
- package/dist/assets/{mailer-DeygotUf.js → mailer-CTVZRBU2.js} +2 -2
- package/dist/assets/manifest-2YUNz_ML.js +1 -0
- package/dist/assets/meta-box-CwZHh0Nj.js +1 -0
- package/dist/assets/meta-field-errors-Za3ulViR.js +1 -0
- package/dist/assets/{palette-commands-DX18c0wH.js → palette-commands-Di6Dnj4z.js} +2 -2
- package/dist/assets/{plugin-registry-nSDhEMki.js → plugin-registry-DLDusPOA.js} +1 -1
- package/dist/assets/{register-core-blocks-Bh6u65qH.js → register-core-blocks-CVavxPiP.js} +1 -1
- package/dist/assets/rich-text-field-DGgpOqHQ.js +123 -0
- package/dist/assets/{search-input-BG9KotQw.js → search-input-B7zZp8UE.js} +2 -2
- package/dist/assets/{settings-CXPqdjqb.js → settings-199pUzJn.js} +1 -1
- package/dist/assets/{settings-BtTviWkj.js → settings-DZyJ36D2.js} +2 -2
- package/dist/assets/{toast-CWtRg47-.js → toast-26daCjvR.js} +1 -1
- package/dist/assets/{uk-Cq7H12wQ.js → uk-CTQT1XuD.js} +1 -1
- package/dist/assets/use-visible-fields-C0FKrnz6.js +2 -0
- package/dist/assets/{users-DzXByAic.js → users-BmZY207i.js} +1 -1
- package/dist/assets/{users-CMJAWmSV.js → users-ZRNKnWGa.js} +2 -2
- package/dist/assets/{utils-kFAy0YTP.js → utils-RSNxndzY.js} +2 -2
- package/dist/assets/{valibot-DO4fmSyX.js → valibot-CHirPb_E.js} +1 -1
- package/dist/assets/w3c-keyname-BOAvb0qz.js +1 -0
- package/dist/assets/{zh-CN-YIfV5Hug.js → zh-CN-g4V81dTW.js} +1 -1
- package/dist/index.html +23 -23
- package/package.json +9 -5
- package/dist/assets/-errors-CapunOga.js +0 -1
- package/dist/assets/_authenticated-Dcp2Ynic.js +0 -1
- package/dist/assets/_page--PcGMzdu.js +0 -2
- package/dist/assets/_page-Be9sR1G2.js +0 -1
- package/dist/assets/breadcrumb-x0qfIbU9.js +0 -1
- package/dist/assets/create-3wo13Gal.js +0 -1
- package/dist/assets/edit-DU82eAhY.js +0 -1
- package/dist/assets/edit-Ds4B6Pmi.js +0 -2
- package/dist/assets/edit-evcBUaDE.js +0 -1
- package/dist/assets/form-B_PPIck3.js +0 -1
- package/dist/assets/index-BtnQdcjJ.css +0 -1
- package/dist/assets/manifest-Bdiv3Qyq.js +0 -1
- package/dist/assets/meta-box-B-hP57rw.js +0 -1
- package/dist/assets/meta-box-field-BTDudxyS.js +0 -1
- package/dist/assets/meta-box-grid-CoW6o7O7.js +0 -1
- package/dist/assets/rich-text-field-CS-OOttw.js +0 -123
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{i as r,n as i}from"./dist-BL2bKHuR.js";import{s as a,t as o}from"./orpc-CmtRGLtZ.js";import{t as s}from"./useMutation-vgMtqBOX.js";import{o as c,t as l}from"./link-CI3qhqYu.js";import{a as u,i as d,n as f,r as p,s as m,t as h}from"./select-D3kIVy0H.js";import{t as g}from"./button-DG1Ca1S5.js";import{t as _}from"./arrow-left-CWzmtp8T.js";import{n as v,t as y}from"./clipboard-D6ZMYUE8.js";import{t as b}from"./use-label-CykSHq9A.js";import{D as x,h as S,l as C,r as w,v as T,w as E,y as D}from"./dist-ClOzYsk5.js";import{n as O}from"./vmessage-CRX68a8a.js";import{n as k}from"./user-role-labels-NFC7DRSs.js";import{n as A,r as j,t as M}from"./-constants-D2aYlJ-p.js";import{a as N,i as P,n as F,r as I,t as L}from"./card-L2-kK5VK.js";import{t as R}from"./input-xYuLUQID.js";import{a as z,c as B,f as V,i as H,n as U,o as W,s as G,t as K}from"./form-
|
|
1
|
+
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{i as r,n as i}from"./dist-BL2bKHuR.js";import{s as a,t as o}from"./orpc-CmtRGLtZ.js";import{t as s}from"./useMutation-vgMtqBOX.js";import{o as c,t as l}from"./link-CI3qhqYu.js";import{a as u,i as d,n as f,r as p,s as m,t as h}from"./select-D3kIVy0H.js";import{t as g}from"./button-DG1Ca1S5.js";import{t as _}from"./arrow-left-CWzmtp8T.js";import{n as v,t as y}from"./clipboard-D6ZMYUE8.js";import{t as b}from"./use-label-CykSHq9A.js";import{D as x,h as S,l as C,r as w,v as T,w as E,y as D}from"./dist-ClOzYsk5.js";import{n as O}from"./vmessage-CRX68a8a.js";import{n as k}from"./user-role-labels-NFC7DRSs.js";import{n as A,r as j,t as M}from"./-constants-D2aYlJ-p.js";import{a as N,i as P,n as F,r as I,t as L}from"./card-L2-kK5VK.js";import{t as R}from"./input-xYuLUQID.js";import{a as z,c as B,f as V,i as H,n as U,o as W,s as G,t as K}from"./form-CY307HEl.js";import{n as q,t as J}from"./alert-cwX3fWUu.js";import{t as Y}from"./valibot-CHirPb_E.js";var X=e(n()),Z=e(t()),Q={copyAria:{id:`userInvite.copy.aria`},errEmailTaken:{id:`userInvite.error.emailTaken`},errFallback:{id:`userInvite.error.fallback`}},$=S({email:D(E(),x(),w(O({id:`userInvite.email.invalid`})),C(255)),name:D(E(),x(),C(100)),role:T(A)});function ee(){let e=c(),t=b(),[n,r]=(0,X.useState)({status:`idle`}),[a,m]=(0,X.useState)(null),v=s({mutationFn:e=>o.user.invite.call({email:e.email,role:e.role,...e.name.length>0?{name:e.name}:{}}),onMutate:()=>{m(null)},onSuccess:e=>{r({status:`success`,user:e.user,inviteUrl:te(e.inviteToken)})},onError:e=>{m(ne(e))}}),y=V({resolver:Y($),defaultValues:{email:``,name:``,role:`subscriber`},mode:`onBlur`}),x=y.handleSubmit(e=>{v.mutate(e)});return n.status===`success`?(0,Z.jsx)(re,{user:n.user,inviteUrl:n.inviteUrl,onInviteAnother:()=>{r({status:`idle`}),m(null),y.reset()},onBackToList:()=>{e({to:`/users`,search:M})}}):(0,Z.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-4`,children:[(0,Z.jsxs)(l,{to:`/users`,search:M,className:`text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-sm`,"data-testid":`invite-back-link`,children:[(0,Z.jsx)(_,{className:`size-4 rtl:rotate-180`}),(0,Z.jsx)(i,{id:`userInvite.backToList`,message:`Back to users`})]}),(0,Z.jsxs)(L,{children:[(0,Z.jsxs)(P,{children:[(0,Z.jsx)(N,{children:(0,Z.jsx)(`h1`,{"data-testid":`invite-heading`,children:(0,Z.jsx)(i,{id:`userInvite.title`,message:`Invite user`})})}),(0,Z.jsx)(I,{children:(0,Z.jsx)(i,{id:`userInvite.description`,message:`They'll enrol a passkey the first time they open the invite link. No password required.`})})]}),(0,Z.jsx)(F,{children:(0,Z.jsx)(K,{...y,children:(0,Z.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:x,children:[(0,Z.jsx)(H,{control:y.control,name:`email`,render:({field:e})=>(0,Z.jsxs)(z,{children:[(0,Z.jsx)(W,{children:(0,Z.jsx)(i,{id:`userInvite.email.label`,message:`Email`})}),(0,Z.jsx)(U,{children:(0,Z.jsx)(R,{type:`email`,autoComplete:`email`,required:!0,disabled:v.isPending,"data-testid":`invite-email-input`,...e})}),(0,Z.jsx)(G,{})]})}),(0,Z.jsx)(H,{control:y.control,name:`name`,render:({field:e})=>(0,Z.jsxs)(z,{children:[(0,Z.jsx)(W,{children:(0,Z.jsx)(i,{id:`userInvite.name.label`,message:`Name`})}),(0,Z.jsx)(U,{children:(0,Z.jsx)(R,{type:`text`,autoComplete:`name`,disabled:v.isPending,"data-testid":`invite-name-input`,...e})}),(0,Z.jsx)(G,{})]})}),(0,Z.jsx)(H,{control:y.control,name:`role`,render:({field:e})=>(0,Z.jsxs)(z,{children:[(0,Z.jsx)(W,{children:(0,Z.jsx)(i,{id:`userInvite.role.label`,message:`Role`})}),(0,Z.jsxs)(h,{value:e.value,onValueChange:t=>{j(t)&&e.onChange(t)},disabled:v.isPending,children:[(0,Z.jsx)(U,{children:(0,Z.jsx)(d,{className:`w-full`,onBlur:e.onBlur,"data-testid":`invite-role-select`,children:(0,Z.jsx)(u,{})})}),(0,Z.jsx)(f,{children:A.map(e=>(0,Z.jsx)(p,{value:e,"data-testid":`invite-role-select-${e}`,children:t(k[e])},e))})]}),(0,Z.jsx)(G,{})]})}),a?(0,Z.jsx)(J,{variant:`destructive`,"data-testid":`invite-server-error`,children:(0,Z.jsx)(q,{children:t(a)})}):null,(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(g,{type:`button`,variant:`outline`,onClick:()=>{e({to:`/users`,search:M})},disabled:v.isPending,children:(0,Z.jsx)(i,{id:`userInvite.cancel`,message:`Cancel`})}),(0,Z.jsx)(g,{type:`submit`,disabled:v.isPending,"data-testid":`invite-submit`,children:v.isPending?(0,Z.jsx)(i,{id:`userInvite.submit.pending`,message:`Inviting…`}):(0,Z.jsx)(i,{id:`userInvite.submit.idle`,message:`Send invite`})})]})]})})})]})]})}function te(e){return`${window.location.origin}${a}/accept-invite/${e}`}function ne(e){return e&&typeof e==`object`&&`data`in e&&e.data?.reason===`email_taken`?Q.errEmailTaken:e instanceof Error?e.message:Q.errFallback}function re({user:e,inviteUrl:t,onInviteAnother:n,onBackToList:a}){let{i18n:o}=r(),[s,c]=(0,X.useState)(!1),l=async()=>{try{await y(t),c(!0),setTimeout(()=>{c(!1)},2e3)}catch{let e=document.getElementById(`invite-url`);e instanceof HTMLInputElement&&(e.focus(),e.select())}},u=(0,Z.jsx)(`bdi`,{children:e.email});return(0,Z.jsx)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-4`,children:(0,Z.jsxs)(L,{children:[(0,Z.jsxs)(P,{children:[(0,Z.jsx)(N,{children:(0,Z.jsx)(`h1`,{"data-testid":`invite-success-heading`,children:(0,Z.jsx)(i,{id:`userInvite.success.title`,message:`Invite ready`})})}),(0,Z.jsx)(I,{children:(0,Z.jsx)(i,{id:`userInvite.success.description`,message:`Share the link below with {email}. They'll enrol a passkey the first time they open it. Link expires in 7 days.`,values:{email:u},comment:`email: the invited user's address`})})]}),(0,Z.jsxs)(F,{className:`flex flex-col gap-4`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(B,{htmlFor:`invite-url`,children:(0,Z.jsx)(i,{id:`userInvite.success.link.label`,message:`Invite link`})}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(R,{id:`invite-url`,readOnly:!0,value:t,onFocus:e=>{e.currentTarget.select()},"data-testid":`invite-url-input`,className:`bg-muted text-muted-foreground font-mono`}),(0,Z.jsx)(g,{type:`button`,variant:`outline`,onClick:()=>{l()},"data-testid":`invite-copy-button`,"aria-label":o._(Q.copyAria.id,void 0,{message:Q.copyAria.message}),children:s?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(m,{}),(0,Z.jsx)(`span`,{children:(0,Z.jsx)(i,{id:`userInvite.copy.copied`,message:`Copied`})})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(v,{}),(0,Z.jsx)(`span`,{children:(0,Z.jsx)(i,{id:`userInvite.copy.idle`,message:`Copy`})})]})})]})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(g,{type:`button`,variant:`outline`,onClick:n,"data-testid":`invite-another-button`,children:(0,Z.jsx)(i,{id:`userInvite.success.another`,message:`Invite another`})}),(0,Z.jsx)(g,{type:`button`,onClick:a,"data-testid":`invite-done-button`,children:(0,Z.jsx)(i,{id:`userInvite.success.backToList`,message:`Back to users`})})]})]})]})})}export{ee as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{t as r}from"./orpc-CmtRGLtZ.js";import{t as i}from"./useMutation-vgMtqBOX.js";import{o as a}from"./link-CI3qhqYu.js";import{t as o}from"./button-DG1Ca1S5.js";import{t as s}from"./error-placeholder-ULkA-k6_.js";import{t as c}from"./use-label-CykSHq9A.js";import{t as l}from"./create-DnLK3SmI.js";import{t as u}from"./slugify-DglnCNxs.js";var d=e(n()),f=e(t()),p={pendingGeneric:{id:`editor.entry.create.pending.generic`},failedTitle:{id:`editor.entry.create.failedTitle`},failedBody:{id:`editor.entry.create.failed`},retry:{id:`editor.entry.create.retry`}};function m(){let{entryType:e}=l.useRouteContext(),t=c(),n=a(),m=(0,d.useRef)(!1),h=i({mutationFn:()=>r.entry.create.call({type:e.name,slug:u(`untitled-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`),status:`draft`}),onSuccess:t=>{n({to:`/entries/$slug/$id/edit`,params:{slug:e.adminSlug,id:t.id},replace:!0})}});return(0,d.useEffect)(()=>{m.current||(m.current=!0,h.mutate())},[h]),h.isError?(0,f.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[(0,f.jsx)(s,{testId:`create-entry-error`,title:t(p.failedTitle),description:t(p.failedBody)}),(0,f.jsx)(o,{variant:`outline`,"data-testid":`create-entry-retry`,onClick:()=>h.mutate(),children:t(p.retry)})]}):(0,f.jsx)(`div`,{className:`text-muted-foreground flex flex-1 items-center justify-center text-sm`,"data-testid":`create-entry-pending`,children:t(p.pendingGeneric)})}export{m as component};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./create-
|
|
2
|
-
import{T as e,a as t,t as n}from"./lazyRouteComponent-CQbKoKTD.js";import{s as r}from"./matchContext-DKtpdvCQ.js";import{r as i}from"./manifest-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./create-Dg10UEnK.js","./jsx-runtime-DUAcabCT.js","./react-DbyrFoBd.js","./orpc-CmtRGLtZ.js","./useMutation-vgMtqBOX.js","./link-CI3qhqYu.js","./react-dom-i-Mcm3wj.js","./useStore-Vo4KhxPy.js","./with-selector-Bf4HMdmS.js","./button-DG1Ca1S5.js","./dist-Dgy1ZZMQ.js","./utils-DKOQrNEG.js","./dist-B66OmIyr.js","./error-placeholder-ULkA-k6_.js","./empty-p3QKoEqD.js","./triangle-alert-BpzHmkii.js","./createLucideIcon-C0O-yxZG.js","./use-label-CykSHq9A.js","./dist-BL2bKHuR.js","./slugify-DglnCNxs.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{T as e,a as t,t as n}from"./lazyRouteComponent-CQbKoKTD.js";import{s as r}from"./matchContext-DKtpdvCQ.js";import{r as i}from"./manifest-2YUNz_ML.js";import{t as a}from"./caps-SYhabp1B.js";var o=t(`/_editor/entries/$slug/create`)({beforeLoad:({context:e,params:t})=>{let n=i(t.slug);if(!n)throw r();let o=n.capabilityType??n.name;if(!a(e.user.capabilities,`entry:${o}:create`))throw r();return{entryType:n}},component:n(()=>e(()=>import(`./create-Dg10UEnK.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]),import.meta.url),`component`)});export{o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=JSON.parse(`{"admin.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"allowedDomains.add.defaultRole.label":["Standardrolle"],"allowedDomains.add.description":["Verwenden Sie die nackte Domain — kein Protokoll, kein Pfad."],"allowedDomains.add.domain.invalid":["Gültigen Hostnamen eingeben (z. B. example.com)."],"allowedDomains.add.domain.label":["Domain"],"allowedDomains.add.placeholder":["example.com"],"allowedDomains.add.submit.idle":["Hinzufügen"],"allowedDomains.add.submit.pending":["Wird hinzugefügt…"],"allowedDomains.add.title":["Domain hinzufügen"],"allowedDomains.description":["E-Mail-Domains, die für die OAuth-Registrierung erlaubt sind. Neue OAuth-Konten werden mit der hier festgelegten Rolle erstellt. Deaktivierte Zeilen lehnen die Registrierung ab, behalten aber ihre Rollenzuordnung."],"allowedDomains.error.domainExists":["Diese Domain ist bereits konfiguriert."],"allowedDomains.error.fallback":["Domain konnte nicht gespeichert werden. Bitte erneut versuchen."],"allowedDomains.list.empty":["Keine Domains konfiguriert. OAuth-Registrierung ist geschlossen, bis mindestens eine aktivierte Domain hinzugefügt wurde."],"allowedDomains.list.loading":["Wird geladen…"],"allowedDomains.list.title":["Konfigurierte Domains"],"allowedDomains.row.deleteAria":[["domain"]," löschen"],"allowedDomains.row.deleteCancel":["Abbrechen"],"allowedDomains.row.deleteConfirm":["Löschen bestätigen"],"allowedDomains.row.disabled":["Deaktiviert"],"allowedDomains.row.enabled":["Aktiviert"],"allowedDomains.title":["Erlaubte Domains"],"apiTokens.col.actions":["Aktionen"],"apiTokens.col.expires":["Läuft ab"],"apiTokens.col.lastUsed":["Zuletzt verwendet"],"apiTokens.col.name":["Name"],"apiTokens.col.prefix":["Präfix"],"apiTokens.col.scopes":["Berechtigungen"],"apiTokens.create.capabilities":["Berechtigungen"],"apiTokens.create.capabilities.help":["Eine Berechtigung pro Zeile. Das Token kann die Rechte Ihrer Rolle niemals überschreiten — dies ist eine zusätzliche Einschränkung."],"apiTokens.create.capabilities.placeholder":["entry:post:read\\nentry:post:edit_own"],"apiTokens.create.expires":["Läuft ab"],"apiTokens.create.name":["Name"],"apiTokens.create.namePlaceholder":["github-actions / claude-code / mcp-prod"],"apiTokens.create.nameRequired":["Name ist erforderlich."],"apiTokens.create.nameTooLong":["Name muss ≤ 64 Zeichen lang sein."],"apiTokens.create.permissions":["Berechtigungen"],"apiTokens.create.scope.inherit":["Alle Ihre Berechtigungen erben"],"apiTokens.create.scope.restrict":["Auf bestimmte Berechtigungen beschränken"],"apiTokens.create.submit.idle":["Token erstellen"],"apiTokens.create.submit.pending":["Wird erstellt…"],"apiTokens.description.admin":["Von diesem Benutzer erstellte Tokens. Sie können jedes davon widerrufen — das Erstellen erfordert die authentifizierte Browser-Sitzung des Besitzers."],"apiTokens.description.self":["Persönliche Zugriffstokens für CLIs, MCP-Server, CI-Bots oder andere Nicht-Browser-Clients. Das vollständige Geheimnis wird einmalig zum Zeitpunkt der Erstellung angezeigt."],"apiTokens.empty.description.admin":["Dieser Benutzer hat keine API-Tokens erstellt."],"apiTokens.empty.description.self":["Erstellen Sie oben eines für Ihre CLI / Ihren MCP-Server / Ihren CI-Bot."],"apiTokens.empty.title":["Noch keine Tokens"],"apiTokens.expiry.30":["30 Tage"],"apiTokens.expiry.7":["7 Tage"],"apiTokens.expiry.90":["90 Tage"],"apiTokens.expiry.never":["Nie"],"apiTokens.loading":["Tokens werden geladen…"],"apiTokens.mint.fallback":["Token konnte nicht erstellt werden. Bitte erneut versuchen."],"apiTokens.never":["Nie"],"apiTokens.revoke.button":["Widerrufen"],"apiTokens.revoke.cancel":["Abbrechen"],"apiTokens.revoke.confirm":["Widerrufen"],"apiTokens.revoke.description":["Das Token funktioniert sofort nicht mehr. Jeder Client, der es verwendet, erhält bei der nächsten Anfrage 401."],"apiTokens.revoke.fallback":["Widerruf fehlgeschlagen. Bitte erneut versuchen."],"apiTokens.revoke.pending":["Wird widerrufen…"],"apiTokens.revoke.title":["\\"",["name"],"\\" widerrufen?"],"apiTokens.scope.empty":["Keine Rechte"],"apiTokens.scope.inheritRole":["Rolle erben"],"apiTokens.secret.copyAria":["Token kopieren"],"apiTokens.secret.description":["Kopieren Sie das Geheimnis jetzt. Wir zeigen es nicht erneut an — wenn Sie es verlieren, müssen Sie es widerrufen und neu erstellen."],"apiTokens.secret.done":["Fertig"],"apiTokens.secret.title":["Token \\"",["name"],"\\" erstellt"],"apiTokens.title":["API-Tokens"],"auth.acceptInvite.description":["Richten Sie einen Passkey ein, um die Kontoerstellung abzuschließen. Ihr Browser oder Gerät führt Sie durch die Eingabeaufforderung."],"auth.acceptInvite.name":["Name"],"auth.acceptInvite.submit.idle":["Passkey erstellen"],"auth.acceptInvite.submit.pending":["Wird eingerichtet…"],"auth.acceptInvite.title":["Einladung annehmen"],"auth.bootstrap.description":["Richten Sie Ihre Website ein — diese E-Mail wird das Administrator-Konto."],"auth.bootstrap.email":["E-Mail"],"auth.bootstrap.name":["Name"],"auth.bootstrap.submit.idle":["Konto mit Passkey erstellen"],"auth.bootstrap.submit.pending":["Konto wird erstellt…"],"auth.bootstrap.title":["Administrator-Konto erstellen"],"auth.device.approve.confirmTitle":["\\"",["userCode"],"\\" bestätigen"],"auth.device.approve.description":["Ein neues API-Token wird für Ihr Konto erstellt und an die CLI übergeben. Geben Sie ihm einen Namen, damit Sie es später in Ihrem Profil finden, und beschränken Sie optional, was es tun darf."],"auth.device.approve.error.alreadyApproved":["Dieser Code wurde bereits in einem anderen Tab genehmigt."],"auth.device.approve.error.alreadyDenied":["Dieser Code wurde bereits abgelehnt."],"auth.device.approve.error.expired":["Dieser Code ist abgelaufen, bevor Sie fertig werden konnten — starten Sie Ihre CLI neu."],"auth.device.approve.error.fallback":["Anfrage konnte nicht abgeschlossen werden. Bitte erneut versuchen."],"auth.device.approve.idle":["Genehmigen"],"auth.device.approve.pending":["Wird genehmigt…"],"auth.device.approved":["Genehmigt. Ihre CLI sollte das Token innerhalb weniger Sekunden erhalten — Sie können diesen Tab schließen."],"auth.device.cancel":["Abbrechen"],"auth.device.denied":["Abgelehnt. Die CLI erhält eine access_denied-Antwort und stoppt die Abfragen."],"auth.device.deny.idle":["Ablehnen"],"auth.device.deny.pending":["Wird abgelehnt…"],"auth.device.description":["Eine CLI fordert ein API-Token für Ihr Konto an. Bestätigen Sie, dass der von Ihrer CLI angezeigte Code mit dem untenstehenden übereinstimmt, bevor Sie zustimmen."],"auth.device.lookup.description":["Die CLI zeigt einen 8-stelligen, durch einen Bindestrich getrennten Code — «ABCD-EFGH». Nur Buchstaben und Ziffern, keine Nullen oder Einsen."],"auth.device.lookup.error.alreadyApproved":["Dieser Code wurde bereits genehmigt. Starten Sie Ihre CLI neu, falls sie das Token nicht erhalten hat."],"auth.device.lookup.error.alreadyDenied":["Dieser Code wurde bereits abgelehnt."],"auth.device.lookup.error.expired":["Dieser Code ist abgelaufen. Starten Sie Ihre CLI neu, um einen neuen zu erhalten."],"auth.device.lookup.error.fallback":["Dieser Code konnte nicht gefunden werden. Bitte erneut versuchen."],"auth.device.lookup.error.notFound":["Code nicht gefunden. Prüfen Sie, ob er mit dem von Ihrer CLI ausgegebenen übereinstimmt."],"auth.device.lookup.submit.idle":["Weiter"],"auth.device.lookup.submit.pending":["Wird geprüft…"],"auth.device.lookup.title":["Code aus Ihrer CLI eingeben"],"auth.device.lookup.userCode.label":["Benutzer-Code"],"auth.device.scopeMode.inherit":["Alle meine Berechtigungen erben"],"auth.device.scopeMode.label":["Berechtigungen"],"auth.device.scopeMode.restrict":["Auf bestimmte Berechtigungen beschränken"],"auth.device.scopes.label":["Berechtigungen"],"auth.device.scopes.placeholder":["entry:post:read\\nentry:post:edit_own"],"auth.device.title":["CLI-Zugriff autorisieren"],"auth.device.tokenName.default":["CLI"],"auth.device.tokenName.label":["Token-Name"],"auth.device.tokenName.placeholder":["claude-code / github-actions / mcp-prod"],"auth.device.tokenName.required":["Name ist erforderlich."],"auth.device.tokenName.tooLong":["Name muss ≤ 64 Zeichen lang sein."],"auth.device.userCode.placeholder":["ABCD-EFGH"],"blockActions.copyJson":["JSON kopieren"],"blockActions.delete":["Löschen"],"blockActions.duplicate":["Duplizieren"],"blockActions.empty":["Wählen Sie einen Block, um Aktionen anzuzeigen."],"blockActions.transformTo":["Umwandeln in"],"blockScopePicker.cancel":["Abbrechen"],"blockScopePicker.description":["Wählen Sie ein Layout zum Einfügen oder brechen Sie ab, um mit einem leeren ",["blockTitle"]," zu beginnen."],"blockScopePicker.title":["Layout für ",["blockTitle"]," auswählen"],"breadcrumb.addNew":["Hinzufügen"],"breadcrumb.admin":["Administration"],"breadcrumb.create":["Erstellen"],"breadcrumb.createTerm":["Create ",["singular"]],"breadcrumb.dashboard":["Dashboard"],"breadcrumb.edit":["Bearbeiten"],"breadcrumb.editTerm":["Edit ",["singular"]],"breadcrumb.editUser":["Benutzer bearbeiten"],"breadcrumb.entries":["Beiträge"],"breadcrumb.profile":["Profil"],"breadcrumb.settings":["Einstellungen"],"breadcrumb.terms":["Begriffe"],"breadcrumb.users":["Benutzer"],"core.adminNav.content":["Beiträge"],"core.adminNav.item.allowedDomains":["Erlaubte Domains"],"core.adminNav.item.dashboard":["Dashboard"],"core.adminNav.item.mailer":["Mailer"],"core.adminNav.item.settings":["Einstellungen"],"core.adminNav.item.users":["Benutzer"],"core.adminNav.keyword.accounts":["accounts"],"core.adminNav.keyword.configuration":["configuration"],"core.adminNav.keyword.domains":["domains"],"core.adminNav.keyword.email":["email"],"core.adminNav.keyword.home":["home"],"core.adminNav.keyword.options":["options"],"core.adminNav.keyword.overview":["overview"],"core.adminNav.keyword.people":["people"],"core.adminNav.keyword.preferences":["preferences"],"core.adminNav.keyword.signups":["signups"],"core.adminNav.keyword.smtp":["smtp"],"core.adminNav.keyword.team":["team"],"core.adminNav.management":["Verwaltung"],"core.adminNav.overview":["Übersicht"],"core.adminNav.termTaxonomies":["Taxonomien"],"core.settings.general.description":["Grundlegende Website-Identität und Metadaten."],"core.settings.general.label":["Allgemein"],"core.settings.site.default_og_image":["Default social image URL"],"core.settings.site.description":["Öffentlicher Name, Slogan und Social-Media-Links."],"core.settings.site.github":["GitHub-URL"],"core.settings.site.label":["Website-Identität"],"core.settings.site.mastodon":["Mastodon-URL"],"core.settings.site.public":["Allow search engines to index this site"],"core.settings.site.tagline":["Slogan"],"core.settings.site.title":["Website-Titel"],"core.settings.site.twitter":["X-(Twitter-)URL"],"dashboard.count.draft":[["count","plural",{"one":["#"," Entwurf"],"other":["#"," Entwürfe"]}]],"dashboard.count.published":[["count","plural",{"one":["#"," veröffentlicht"],"other":["#"," veröffentlicht"]}]],"dashboard.empty.description":["Fügen Sie ein Plugin hinzu, das einen Beitragstyp registriert (z. B. <0>@plumix/plugin-blog</0>), um ihn hier zu sehen."],"dashboard.empty.title":["Noch keine Inhaltstypen"],"dashboard.recent.empty":["Noch nichts."],"dashboard.recent.title":["Letzte Aktivität"],"dashboard.tagline":["Woran möchten Sie heute arbeiten?"],"dashboard.tile.browse":["Browse ",["labelLower"]],"dashboard.tile.browse.generic":["Durchsuchen"],"dashboard.tile.description":["Write, edit, and publish ",["labelLower"],"."],"dashboard.tile.description.generic":["Schreiben, bearbeiten und veröffentlichen."],"dashboard.welcome":["Willkommen, ",["greeting"]],"dataTable.emptyState":["Keine Ergebnisse."],"dataTable.loading":["Wird geladen"],"editor.autosave.error":["Speichern fehlgeschlagen"],"editor.autosave.saved":["Gespeichert"],"editor.autosave.saving":["Wird gespeichert..."],"editor.coAuthorIndicator.activeAriaLabel":["Aktive Co-Autoren"],"editor.coAuthorIndicator.presenceAriaLabel":[["display"]," · zuletzt gesehen ",["lastSeen"]],"editor.copyPattern.untitled":["Untitled"],"editor.device.desktop":["Desktop"],"editor.device.mobile":["Mobil"],"editor.device.tablet":["Tablet"],"editor.document.excerpt":["Excerpt"],"editor.document.parent":["Parent"],"editor.document.parent.none":["(no parent)"],"editor.document.slug":["Slug"],"editor.document.template":["Template"],"editor.document.template.default":["(theme default)"],"editor.document.title":["Title"],"editor.entry.create.failed":["Something went wrong while creating a draft. Try again."],"editor.entry.create.failedTitle":["Couldn't create the entry"],"editor.entry.create.pending":["Creating new ",["singular"],"…"],"editor.entry.create.pending.generic":["Wird erstellt…"],"editor.entry.create.retry":["Try again"],"editor.entry.create.untitled":["Ohne Titel"],"editor.entry.edit.headline":["Edit ",["singular"]],"editor.entry.edit.headline.generic":["Edit"],"editor.entry.edit.loadFailed":["Dieser Eintrag konnte nicht geladen werden."],"editor.entry.edit.loadFailedTitle":["Dieser Eintrag konnte nicht geladen werden"],"editor.entry.edit.loading":["Beitrag wird geladen…"],"editor.entry.edit.restore.conflict":["Ein anderer Bearbeiter hat diesen Eintrag geändert. Neu laden und erneut versuchen."],"editor.entry.edit.saveFailed":["Speichern fehlgeschlagen."],"editor.entry.edit.stale.loading":["Wird geladen…"],"editor.entry.edit.toast.discardFailed":["Entwurf konnte nicht verworfen werden — bitte erneut versuchen."],"editor.entry.edit.toast.draftDiscarded":["Entwurf verworfen."],"editor.entry.edit.toast.publishFailed":["Veröffentlichen fehlgeschlagen — bitte erneut versuchen."],"editor.entry.edit.toast.published":["Veröffentlicht."],"editor.headingAudit.empty":["Keine Probleme mit der Überschriftenstruktur erkannt."],"editor.headingAudit.emptyHeading":["Leere Überschrift. Text hinzufügen oder Block entfernen."],"editor.headingAudit.multipleH1":["Mehrere <h1> auf der Seite (",["count"]," gefunden). Behalten Sie nur eine Überschrift der obersten Ebene."],"editor.headingAudit.skippedLevel":["Überschrift springt von h",["from"]," zu h",["to"],". Fügen Sie ein h",["between"]," dazwischen ein."],"editor.headingAudit.warningPrefix":["Warnung:"],"editor.layout.canvas.copyAsPatternSource":["Als Mustervorlage kopieren"],"editor.layout.canvas.pickStarter":["Vorlage auswählen…"],"editor.layout.canvas.zoomIn":["Hineinzoomen"],"editor.layout.canvas.zoomOut":["Herauszoomen"],"editor.layout.characterCount":[["characters","plural",{"one":["#"," Zeichen"],"other":["#"," Zeichen"]}]],"editor.layout.copy.copied":["Copied to clipboard"],"editor.layout.copy.failed":["Couldn't copy to clipboard"],"editor.layout.copyAsPattern.untitledFallback":["Ohne Titel"],"editor.layout.draft.discard":["Verwerfen"],"editor.layout.draft.discarding":["Wird verworfen…"],"editor.layout.draft.publish":["Veröffentlichen"],"editor.layout.draft.publishing":["Wird veröffentlicht…"],"editor.layout.draft.save":["Entwurf speichern"],"editor.layout.draft.saving":["Wird gespeichert…"],"editor.layout.draftBanner.body":["Klicken Sie auf «Veröffentlichen», um sie live zu schalten, oder auf «Verwerfen», um zurückzusetzen."],"editor.layout.draftBanner.title":["Sie haben nicht veröffentlichte Entwurfsänderungen."],"editor.layout.header.backToList":["Zurück zur Liste"],"editor.layout.header.titlePlaceholder":["Ohne Titel"],"editor.layout.mobile.blocksSheetDescription":["Einfügbare Blöcke, Gliederung und Überschriften-Audit für diesen Beitrag."],"editor.layout.mobile.blocksSheetTitle":["Blöcke"],"editor.layout.mobile.blocksTrigger":["Blöcke"],"editor.layout.mobile.inspectorSheetDescription":["Block-Aktionen, Felder und Stil-Steuerungen für den ausgewählten Block."],"editor.layout.mobile.inspectorSheetTitle":["Inspektor"],"editor.layout.mobile.inspectorTrigger":["Inspektor"],"editor.layout.publish":["Veröffentlichen"],"editor.layout.slashMenu.description":["Suchen Sie Blöcke und Muster nach Titel oder Stichwort und drücken Sie Eingabe zum Einfügen."],"editor.layout.slashMenu.title":["Block oder Muster einfügen"],"editor.layout.tab.audit":["Prüfung"],"editor.layout.tab.block":["Block"],"editor.layout.tab.blocks":["Blöcke"],"editor.layout.tab.document":["Document"],"editor.layout.tab.outline":["Gliederung"],"editor.layout.tab.style":["Stil"],"editor.layout.titleAriaLabel":["Beitragstitel"],"editor.layout.wordCount":[["words","plural",{"one":["#"," Wort"],"other":["#"," Wörter"]}]],"editor.loading":["Opening the editor…"],"editor.patternRef.detach":["Lösen"],"editor.patternRef.openSource":["Quelle öffnen"],"editor.patternRef.unresolved":["Muster nicht registriert: <code>",["slug"],"</code>"],"editor.plainForm.publish":["Veröffentlichen"],"editor.plainForm.save":["Speichern"],"editor.plainForm.status.error":["Speichern fehlgeschlagen"],"editor.plainForm.status.saved":["Gespeichert"],"editor.plainForm.status.saving":["Wird gespeichert..."],"editor.plainForm.titleAriaLabel":["Beitragstitel"],"editor.plainForm.titlePlaceholder":["Ohne Titel"],"editor.preview.more":["More preview options"],"editor.preview.open":["Preview"],"editor.preview.tooltip":["Open a preview in a new tab"],"editor.previewFailed":["Couldn't open this entry in the editor."],"editor.previewFailedTitle":["Couldn't open the editor"],"editor.previewLink.copied":["Vorschaulink in die Zwischenablage kopiert"],"editor.previewLink.copy":["Vorschaulink kopieren"],"editor.previewLink.failed":["Vorschaulink konnte nicht erstellt werden"],"editor.revision.conflict":["This entry changed since the preview loaded — reload and retry."],"editor.revisions.diff.empty":["Keine Änderungen."],"editor.revisions.diff.field.excerpt":["Auszug"],"editor.revisions.diff.field.slug":["Slug"],"editor.revisions.diff.field.title":["Titel"],"editor.revisions.diff.tab.json":["Rohes JSON"],"editor.revisions.diff.tab.visual":["Visuell"],"editor.revisions.diffDialog.description":["Nebeneinander: diese Revision (links) vs. der aktuelle Eintrag (rechts)."],"editor.revisions.diffDialog.pane.current":["Aktuell"],"editor.revisions.diffDialog.pane.error":["Snapshot konnte nicht geladen werden."],"editor.revisions.diffDialog.pane.thisRevision":["Diese Revision"],"editor.revisions.diffDialog.title":["Revisions-JSON-Diff"],"editor.revisions.preview.backToLive":["← Zurück zur aktuellen Version"],"editor.revisions.preview.restore":["Diese Revision wiederherstellen"],"editor.revisions.preview.restoring":["Wird wiederhergestellt…"],"editor.revisions.preview.subtitle":[["when"]," von ",["author"]],"editor.revisions.preview.title":["Vorschau der Revision"],"editor.revisions.sheet.autosavesEmpty":["Automatische Speicherungen erscheinen hier, sobald Entwürfe-von-veröffentlicht verfügbar sind."],"editor.revisions.sheet.commentCancel":["Abbrechen"],"editor.revisions.sheet.commentPlaceholder":["Diese Revision beschreiben…"],"editor.revisions.sheet.commentSave":["Speichern"],"editor.revisions.sheet.commentSaving":["…"],"editor.revisions.sheet.description":["Jede Speicherung erstellt eine neue Revision. Neueste zuerst."],"editor.revisions.sheet.diffAriaLabel":["JSON-Diff ansehen"],"editor.revisions.sheet.empty":["Noch keine Revisionen."],"editor.revisions.sheet.error":["Revisionen konnten nicht geladen werden."],"editor.revisions.sheet.loadMore":["Mehr laden"],"editor.revisions.sheet.loadingAria":["Revisionen werden geladen"],"editor.revisions.sheet.loadingMore":["Wird geladen…"],"editor.revisions.sheet.tab.all":["Alle"],"editor.revisions.sheet.tab.autosaves":["Automatisches Speichern"],"editor.revisions.sheet.tab.publishes":["Veröffentlichungen"],"editor.revisions.sheet.title":["Revisionen"],"editor.revisions.sheet.trigger":["Revisionen"],"editor.revisions.sheet.unknownAuthor":["Unbekannt"],"editor.stale.loading":["Loading…"],"editor.staleDraft.compare":["Vergleichen"],"editor.staleDraft.description":["Jemand anderes hat Änderungen an diesem Eintrag veröffentlicht, während Sie ausstehende Änderungen hatten. Wählen Sie aus, welche Version beibehalten werden soll, bevor Sie fortfahren."],"editor.staleDraft.discarding":["Wird verworfen…"],"editor.staleDraft.hideComparison":["Vergleich ausblenden"],"editor.staleDraft.liveNow":["Aktuelle Version"],"editor.staleDraft.title":["Ihr Entwurf ist veraltet"],"editor.staleDraft.useMine":["Meine verwenden"],"editor.staleDraft.useTheirs":["Ihre verwenden"],"editor.staleDraft.yourDraft":["Ihr Entwurf"],"editor.styleTab.activeBucket":["Bearbeiten für: ",["device"]],"editor.styleTab.empty":["Wählen Sie einen Block zum Stylen aus."],"editor.styleTab.section.background":["Hintergrund"],"editor.styleTab.section.fontSize":["Schriftgröße"],"editor.styleTab.section.padding":["Innenabstand"],"editor.styleTab.section.textColor":["Textfarbe"],"editor.styleTab.select.none":["Keiner"],"editor.toast.autosaveFailed":["Couldn't save your changes — they may contain invalid content."],"editor.toast.discardFailed":["Couldn't discard the draft — try again."],"editor.toast.discarded":["Draft discarded."],"editor.toast.publishFailed":["Couldn't publish — try again."],"editor.toast.published":["Published."],"emailChange.error.accountDisabled":["Das Konto, zu dem diese Bestätigung gehört, ist deaktiviert."],"emailChange.error.emailTaken":["Jemand anderes hat diese E-Mail zwischen Anfrage und Klick beansprucht. Fordern Sie eine neue Änderung auf eine andere Adresse an."],"emailChange.error.fallback":["E-Mail-Änderung konnte nicht bestätigt werden. Bitte erneut versuchen."],"emailChange.error.missingToken":["Diesem Bestätigungslink fehlt das Token. Fordern Sie eine neue E-Mail-Änderung an."],"emailChange.error.tokenExpired":["Dieser Bestätigungslink ist abgelaufen. Fordern Sie eine neue E-Mail-Änderung an."],"emailChange.error.tokenInvalid":["Dieser Bestätigungslink ist nicht gültig. Möglicherweise wurde er bereits verwendet."],"emailChange.error.userNotFound":["Das Konto, zu dem diese Bestätigung gehört, wurde entfernt."],"entries.list.authorFilter.all":["Alle Autoren"],"entries.list.authorFilter.mine":["Meine"],"entries.list.bulk.cancel":["Abbrechen"],"entries.list.bulk.confirm":["Bestätigen"],"entries.list.bulk.delete":["Endgültig löschen"],"entries.list.bulk.deleteBody":["Dies löscht die ausgewählten Einträge und ihre Revisionen endgültig. Das kann nicht rückgängig gemacht werden."],"entries.list.bulk.deleteTitle":[["count","plural",{"one":["#"," Eintrag endgültig löschen?"],"other":["#"," Einträge endgültig löschen?"]}]],"entries.list.bulk.restore":["Wiederherstellen"],"entries.list.bulk.selected":[["count","plural",{"one":["#"," Eintrag ausgewählt"],"other":["#"," Einträge ausgewählt"]}]],"entries.list.bulk.toastDeleted":[["count","plural",{"one":["#"," Eintrag gelöscht."],"other":["#"," Einträge gelöscht."]}]],"entries.list.bulk.toastFailed":["Das hat nicht geklappt — bitte erneut versuchen."],"entries.list.bulk.toastRestored":[["count","plural",{"one":["#"," Eintrag wiederhergestellt."],"other":["#"," Einträge wiederhergestellt."]}]],"entries.list.bulk.toastTrashed":[["count","plural",{"one":["#"," Eintrag in den Papierkorb verschoben."],"other":["#"," Einträge in den Papierkorb verschoben."]}]],"entries.list.bulk.trash":["In den Papierkorb"],"entries.list.bulk.trashTitle":[["count","plural",{"one":["#"," Eintrag in den Papierkorb verschieben?"],"other":["#"," Einträge in den Papierkorb verschieben?"]}]],"entries.list.column.status":["Status"],"entries.list.column.title":["Titel"],"entries.list.column.updated":["Aktualisiert"],"entries.list.deleteDialog.cancel":["Abbrechen"],"entries.list.deleteDialog.confirm":["Endgültig löschen"],"entries.list.deleteDialog.deleting":["Wird gelöscht…"],"entries.list.deleteDialog.description":["Der Eintrag und seine Revisionen werden endgültig gelöscht. Das kann nicht rückgängig gemacht werden."],"entries.list.deleteDialog.title":["Endgültig löschen?"],"entries.list.empty.cta":["New ",["singularLower"]],"entries.list.empty.description":["Erstellen Sie einen, um ihn hier zu sehen."],"entries.list.empty.title":["No ",["pluralLower"]," yet"],"entries.list.filterAuthorAria":["Nach Autor filtern"],"entries.list.filterStatusAria":["Nach Status filtern"],"entries.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"entries.list.loadingLabel":["Loading ",["pluralLower"]],"entries.list.newButton":["New ",["singularLower"]],"entries.list.noTitle":["(kein Titel)"],"entries.list.row.deletePermanently":["Endgültig löschen"],"entries.list.row.duplicate":["Duplizieren"],"entries.list.row.duplicating":["Wird dupliziert…"],"entries.list.row.edit":["Bearbeiten"],"entries.list.row.restore":["Wiederherstellen"],"entries.list.row.restoring":["Wird wiederhergestellt…"],"entries.list.row.trash":["In den Papierkorb"],"entries.list.row.trashing":["Wird in den Papierkorb verschoben…"],"entries.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"entries.list.selectAllAria":["Alle Einträge auf dieser Seite auswählen"],"entries.list.selectRowAria":["Eintrag auswählen"],"entries.list.sortAria":["Nach ",["label"]," sortieren (",["direction"],")"],"entries.list.statusFilter.all":["Alle"],"entries.list.statusFilter.draft":["Entwurf"],"entries.list.statusFilter.published":["Veröffentlicht"],"entries.list.statusFilter.scheduled":["Geplant"],"entries.list.statusFilter.trash":["Papierkorb"],"entries.list.taxonomyFilter.all":["All ",["pluralLower"]],"entries.list.taxonomyFilter.empty":["No ",["pluralLower"]," match."],"entries.list.taxonomyFilter.search":["Search ",["pluralLower"],"…"],"entries.list.toast.deleted":["Endgültig gelöscht."],"entries.list.toast.duplicated":["Als Entwurf dupliziert."],"entries.list.toast.failed":["Das hat nicht geklappt — bitte erneut versuchen."],"entries.list.toast.restored":["In Entwürfe wiederhergestellt."],"entries.list.toast.trashed":["In den Papierkorb verschoben."],"entries.list.trashDialog.cancel":["Abbrechen"],"entries.list.trashDialog.confirm":["In den Papierkorb verschieben"],"entries.list.trashDialog.description":["Sie können ihn später aus der Papierkorb-Ansicht wiederherstellen."],"entries.list.trashDialog.moving":["Wird verschoben…"],"entries.list.trashDialog.title":["Move ",["singularLower"]," to trash?"],"errorBoundary.hideError":["Fehler ausblenden"],"errorBoundary.showError":["Fehler anzeigen"],"errorBoundary.title":["Etwas ist schiefgelaufen"],"fieldTypes.boolean.no":["Nein"],"fieldTypes.boolean.yes":["Ja"],"form.multiSelect.empty":["Keine Treffer."],"form.multiSelect.placeholder":["Auswählen…"],"form.multiSelect.search":["Suchen…"],"form.multiSelect.selectedCount":[["count"]," ausgewählt"],"listPagination.next.aria":["Zur nächsten Seite"],"listPagination.next.label":["Weiter"],"listPagination.page":["Seite ",["page"]],"listPagination.prev.aria":["Zur vorherigen Seite"],"listPagination.prev.label":["Zurück"],"login.description":["Verwenden Sie einen Passkey, holen Sie sich einen einmaligen E-Mail-Link oder fahren Sie mit einem Anbieter fort."],"login.email.invalid":["Gültige E-Mail-Adresse eingeben."],"login.email.label":["E-Mail"],"login.emailChange.success":["E-Mail bestätigt. Mit der neuen Adresse anmelden."],"login.locale.aria":["Sprache"],"login.magicLink.back":["Zurück"],"login.magicLink.emailRequired":["Zuerst Ihre E-Mail oben eingeben."],"login.magicLink.pending":["Wird gesendet…"],"login.magicLink.sent.description":["Wenn ein Konto für diese E-Mail existiert, haben wir einen Anmelde-Link gesendet. Der Link läuft in 15 Minuten ab."],"login.magicLink.sent.title":["E-Mail prüfen"],"login.magicLink.submit":["Link per E-Mail senden"],"login.oauth.continueWith":["Weiter mit ",["label"]],"login.oauth.separator":["oder"],"login.passkey.pending":["Anmeldung läuft…"],"login.passkey.submit":["Mit Passkey anmelden"],"login.title":["Anmelden"],"magicLink.error.accountDisabled":["Dieses Konto ist deaktiviert."],"magicLink.error.domainNotAllowed":["Ihre E-Mail-Domain ist nicht mehr auf der Whitelist. Bitten Sie einen Administrator, sie hinzuzufügen."],"magicLink.error.fallback":["Anmeldung fehlgeschlagen. Bitte erneut versuchen."],"magicLink.error.missingToken":["Diesem Anmeldelink fehlt das Token. Fordern Sie einen neuen an und versuchen Sie es erneut."],"magicLink.error.registrationClosed":["Selbstregistrierung ist nicht verfügbar, bis ein Administrator die Einrichtung abgeschlossen hat."],"magicLink.error.tokenExpired":["Dieser Anmeldelink ist abgelaufen. Fordern Sie einen neuen an."],"magicLink.error.tokenInvalid":["Dieser Anmeldelink ist nicht gültig. Möglicherweise wurde er bereits verwendet. Fordern Sie einen neuen an."],"magicLinkRequest.error.invalidInput":["Gültige E-Mail-Adresse eingeben."],"magicLinkRequest.error.network":["Link konnte nicht gesendet werden. Bitte erneut versuchen."],"magicLinkRequest.error.notConfigured":["Magic-Link-Anmeldung ist auf dieser Website nicht konfiguriert."],"mailer.description":["Testet, dass der konfigurierte ausgehende E-Mail-Transport tatsächlich zustellt. Verwendet von Magic-Link-Anmeldung, Einladungs-E-Mails und jedem Plugin, das den gemeinsamen Mailer nutzt."],"mailer.test.description":["Sendet eine einmalige Nachricht über denselben Transport, den Magic-Link verwendet. Fehler erscheinen hier wortwörtlich — im Gegensatz zum Magic-Link-Anfrage-Flow, der Mailer-Fehler absichtlich verschluckt, damit die Antwortform nicht verrät, ob eine E-Mail registriert ist."],"mailer.test.error.fallback":["Testnachricht konnte nicht gesendet werden. Bitte erneut versuchen."],"mailer.test.error.notConfigured":["Kein Mailer-Adapter konfiguriert. Übergeben Sie einen \`mailer:\` an \`plumix({...})\` (z. B. consoleMailer() für die Entwicklung oder Ihren Resend-/Postmark-/SES-Wrapper)."],"mailer.test.error.sendFailed":["Der Mailer-Adapter hat beim Senden einen Fehler ausgelöst. Prüfen Sie die Worker-Protokolle auf den zugrundeliegenden Fehler."],"mailer.test.feedback.ok":["Testnachricht an ",["to"]," gesendet. Wenn sie nicht innerhalb einer Minute ankommt, prüfen Sie die Protokolle Ihres Transport-Adapters."],"mailer.test.recipient.invalid":["Gültige E-Mail-Adresse eingeben."],"mailer.test.recipient.label":["Empfänger"],"mailer.test.recipient.placeholder":["ops@example.com"],"mailer.test.submit.idle":["Test senden"],"mailer.test.submit.pending":["Wird gesendet…"],"mailer.test.title":["Testnachricht senden"],"mailer.title":["Mailer"],"menu.profile":["Profil"],"menu.settings":["Einstellungen"],"menu.signOut":["Abmelden"],"menu.signOut.pending":["Abmeldung läuft…"],"metaBox.field.json.invalid":["Ungültiges JSON"],"metaBox.multiReference.addMore":["Hinzufügen"],"metaBox.multiReference.dialogDescription":[["kind"],"-Einträge suchen und auswählen"],"metaBox.multiReference.emptyValue":["Nichts ausgewählt"],"metaBox.multiReference.loading":["Wird geladen…"],"metaBox.multiReference.noMatches":["Keine Treffer"],"metaBox.multiReference.orphan":["Referenz fehlt — entfernen oder erneut auswählen"],"metaBox.multiReference.resolveError":["Ausgewählte Elemente konnten nicht geladen werden — Aktualisieren zum erneuten Versuchen."],"metaBox.multiReference.searchPlaceholder":[["kind"]," suchen…"],"metaBox.multiReference.selectIdle":["Auswählen"],"metaBox.pluginField.crashed":["Dieses Feld konnte nicht gerendert werden. Details in der Browser-Konsole."],"metaBox.reference.clear":["Zurücksetzen"],"metaBox.reference.dialogDescription":[["kind"]," suchen und auswählen"],"metaBox.reference.emptyValue":["Nichts ausgewählt"],"metaBox.reference.loading":["Wird geladen…"],"metaBox.reference.noMatches":["Keine Treffer"],"metaBox.reference.orphan":["Referenz fehlt — erneut auswählen oder zurücksetzen"],"metaBox.reference.searchPlaceholder":[["kind"]," suchen…"],"metaBox.reference.selectChange":["Ändern"],"metaBox.reference.selectIdle":["Auswählen"],"metaBox.reference.untitled":["Untitled"],"metaBox.repeater.addAnother":["Weiteres hinzufügen"],"metaBox.repeater.addFirst":["Zeile hinzufügen"],"metaBox.repeater.countSuffixBoth":[" / min ",["min"]," / max ",["max"]],"metaBox.repeater.countSuffixMax":[" / max ",["max"]],"metaBox.repeater.countSuffixMin":[" / min ",["min"]],"metaBox.repeater.empty":["Keine Zeilen"],"notFound.description":["Die gesuchte Seite existiert nicht oder die Ressource ist nicht registriert. URL prüfen und erneut versuchen."],"notFound.title":["Nicht gefunden"],"oauth.error.accountDisabled":["Dieses Konto ist deaktiviert."],"oauth.error.codeExchangeFailed":["Anbieter konnte nicht erreicht werden. Bitte erneut versuchen."],"oauth.error.domainNotAllowed":["Ihre E-Mail-Domain ist nicht auf der Whitelist. Bitten Sie einen Administrator, sie hinzuzufügen."],"oauth.error.emailMissing":["Der Anbieter hat keine E-Mail-Adresse zurückgegeben."],"oauth.error.emailUnverified":["Der Anbieter hat Ihre E-Mail noch nicht bestätigt. Bestätigen Sie sie dort und versuchen Sie es erneut."],"oauth.error.fallback":["Anmeldung fehlgeschlagen. Bitte erneut versuchen."],"oauth.error.linkBroken":["Dieses Konto ist nicht erreichbar. Wenden Sie sich an einen Administrator, um es erneut zu verknüpfen."],"oauth.error.profileFetchFailed":["Ihr Profil konnte nicht gelesen werden. Bitte erneut versuchen."],"oauth.error.providerNotConfigured":["Dieser Anbieter ist nicht konfiguriert."],"oauth.error.registrationClosed":["OAuth-Registrierung ist nicht verfügbar, bis ein Administrator die Einrichtung abgeschlossen hat."],"oauth.error.stateExpired":["Anmeldung abgelaufen. Bitte erneut versuchen."],"oauth.error.stateInvalid":["Anmeldung abgelaufen oder ungültig. Bitte erneut versuchen."],"palette.command.profile":["Edit profile"],"palette.command.settings":["Settings"],"palette.description":["Search to navigate the admin."],"palette.empty":["No results found."],"palette.group.commands":["Commands"],"palette.group.navigation":["Navigation"],"palette.group.recent":["Recent"],"palette.hint.close":["Close"],"palette.hint.navigate":["Navigate"],"palette.hint.select":["Select"],"palette.loading":["Searching…"],"palette.placeholder":["Search…"],"palette.title":["Command palette"],"passkey.error.challengeMismatch":["Der Passkey wurde für eine andere Einladung erstellt. Bitte neu laden und erneut versuchen."],"passkey.error.challengeNotBoundToUser":["Anmeldeversuch ist abgelaufen. Bitte erneut versuchen."],"passkey.error.challengeNotFound":["Anmeldeversuch ist abgelaufen. Bitte erneut versuchen."],"passkey.error.counterReplay":["Ihr Passkey scheint auf einem anderen Gerät verwendet worden zu sein. Bitte erneut registrieren."],"passkey.error.credentialAlreadyRegistered":["Dieser Passkey ist bereits auf dieser Website registriert."],"passkey.error.credentialLimitReached":["Sie haben das Passkey-Limit für dieses Konto erreicht."],"passkey.error.credentialNotFound":["Dieser Passkey ist auf dieser Website nicht registriert. Versuchen Sie einen anderen."],"passkey.error.credentialStorageCorrupt":["Ihre gespeicherten Passkey-Daten sind beschädigt. Bitte einen neuen registrieren."],"passkey.error.emailMismatch":["Diese E-Mail stimmt nicht mit Ihrem angemeldeten Konto überein."],"passkey.error.invalidClientData":["Ihr Gerät hat eine unerwartete Antwort zurückgegeben. Bitte erneut versuchen."],"passkey.error.invalidInput":["Mit dem Formular ist etwas schiefgelaufen. Bitte neu laden und erneut versuchen."],"passkey.error.invalidOrigin":["Dieser Passkey ist auf dieser Website nicht verwendbar."],"passkey.error.invalidResponse":["Ihr Gerät hat eine unerwartete Antwort zurückgegeben. Bitte erneut versuchen."],"passkey.error.invalidRpId":["Dieser Passkey ist auf dieser Website nicht verwendbar."],"passkey.error.invalidSignature":["Die Signatur Ihres Geräts konnte nicht verifiziert werden. Bitte erneut versuchen."],"passkey.error.invalidToken":["Dieser Einladungslink ist nicht mehr gültig. Bitten Sie Ihren Administrator, einen neuen zu senden."],"passkey.error.networkError":["Server konnte nicht erreicht werden. Verbindung prüfen und erneut versuchen."],"passkey.error.noAuthenticator":["Auf diesem Gerät ist kein Passkey verfügbar. Versuchen Sie sich auf dem Gerät anzumelden, auf dem Sie ihn registriert haben."],"passkey.error.registrationClosed":["Registrierung auf dieser Website ist nicht geöffnet."],"passkey.error.tokenExpired":["Dieser Einladungslink ist abgelaufen. Bitten Sie Ihren Administrator, einen neuen zu senden."],"passkey.error.unknown":["Etwas ist schiefgelaufen. Bitte erneut versuchen."],"passkey.error.unsupportedAlgorithm":["Der Signatur-Algorithmus Ihres Geräts wird nicht unterstützt."],"passkey.error.unsupportedAttestationFormat":["Das Antwortformat Ihres Geräts wird nicht unterstützt."],"passkey.error.userCancelled":["Anmeldung abgebrochen."],"passkey.error.userNotFound":["Für diese E-Mail wurde kein Konto gefunden."],"passkey.error.userPresenceMissing":["Ihr Gerät hat Ihre Anwesenheit nicht bestätigt. Bitte erneut versuchen."],"patternsSection.heading":["Muster"],"patternsSection.uncategorized":["Nicht kategorisiert"],"plugin.errorBoundary.iconAria":["Plugin-Symbol konnte nicht gerendert werden"],"plugin.errorBoundary.inlineStub":[["label"]," ",["kind"]," fehlgeschlagen"],"plugin.errorBoundary.pageBody":[["label"]," hat beim Rendern einen Fehler verursacht. Der Rest der Administration ist nicht betroffen."],"plugin.errorBoundary.pageTitle":["Plugin-Seite konnte nicht gerendert werden"],"plugin.errorBoundary.unknownPlugin":["dieses Plugin"],"plugin.errorBoundary.widgetBody":[["label"]," konnte nicht gerendert werden."],"pluginPage.loading.aria":[["label"]," wird geladen"],"pluginPage.notLoaded.body":["Das Admin-Manifest deklariert eine Seite unter <code>",["path"],"</code>, aber für sie wurde keine React-Komponente registriert."],"pluginPage.notLoaded.title":["Plugin nicht geladen"],"profile.language.aria":["Sprache"],"profile.language.description":["Ihre Admin-Oberfläche wird in dieser Sprache angezeigt. Die Seite wird nach dem Wechsel neu geladen, damit die neuen Übersetzungen überall angewendet werden."],"profile.language.error":["Sprache konnte nicht gewechselt werden. Bitte erneut versuchen."],"profile.language.title":["Sprache"],"profile.passkeys.added":["Hinzugefügt ",["date"]],"profile.passkeys.delete.button":["Löschen"],"profile.passkeys.delete.cancel":["Abbrechen"],"profile.passkeys.delete.confirm":["Passkey löschen"],"profile.passkeys.delete.description":["Das Gerät, das \\"",["name"],"\\" registriert hat, kann sich nicht mehr anmelden. Sie können es später erneut registrieren."],"profile.passkeys.delete.fallback":["Passkey konnte nicht gelöscht werden. Bitte erneut versuchen."],"profile.passkeys.delete.pending":["Wird gelöscht…"],"profile.passkeys.delete.title":["Diesen Passkey löschen?"],"profile.passkeys.description":["Geräte, die sich in diesem Konto anmelden können. Fügen Sie einen neuen hinzu, bevor Sie einen alten löschen — mindestens ein Passkey muss erhalten bleiben."],"profile.passkeys.empty":["Keine Passkeys registriert. Fügen Sie einen hinzu, um die Anmeldung zu aktivieren."],"profile.passkeys.enroll.alreadyRegistered":["Dieser Passkey ist bereits in diesem Konto registriert."],"profile.passkeys.enroll.cancelled":["Abgebrochen. Tippen Sie auf «Passkey hinzufügen», wenn Sie bereit sind."],"profile.passkeys.enroll.emailMismatch":["Registrierung fehlgeschlagen — erneut anmelden und nochmals versuchen."],"profile.passkeys.enroll.fallback":["Passkey konnte nicht registriert werden. Bitte erneut versuchen."],"profile.passkeys.enroll.idle":["Passkey hinzufügen"],"profile.passkeys.enroll.networkError":["Netzwerkfehler. Verbindung prüfen und erneut versuchen."],"profile.passkeys.enroll.noAuthenticator":["Dieses Gerät unterstützt keine Passkeys."],"profile.passkeys.enroll.pending":["Wird hinzugefügt…"],"profile.passkeys.lastCredential":["Sie können Ihren letzten Passkey nicht löschen. Fügen Sie zuerst einen weiteren hinzu."],"profile.passkeys.lastUsed":["Zuletzt verwendet ",["date"]],"profile.passkeys.loadFailed":["Ihre Passkeys konnten nicht geladen werden. Aktualisieren und erneut versuchen."],"profile.passkeys.loading":["Wird geladen…"],"profile.passkeys.notFound":["Dieser Passkey existiert nicht mehr. Liste aktualisieren."],"profile.passkeys.rename.button":["Umbenennen"],"profile.passkeys.rename.cancel":["Abbrechen"],"profile.passkeys.rename.fallback":["Passkey konnte nicht umbenannt werden. Bitte erneut versuchen."],"profile.passkeys.rename.label":["Passkey umbenennen"],"profile.passkeys.rename.nameEmpty":["Name darf nicht leer sein."],"profile.passkeys.rename.pending":["Wird gespeichert…"],"profile.passkeys.rename.save":["Speichern"],"profile.passkeys.synced":["Synchronisiert"],"profile.passkeys.title":["Passkeys"],"profile.passkeys.transport.hybrid":["Geräteübergreifend"],"profile.passkeys.transport.internal":["Dieses Gerät"],"profile.passkeys.transport.securityKey":["Sicherheitsschlüssel"],"profile.passkeys.unnamed":["Unbenannter Passkey"],"profile.sessions.description":["Geräte, die in diesem Konto angemeldet sind. Widerrufen Sie alle, die Sie nicht erkennen, oder melden Sie sich überall ab, außer in diesem Browser, wenn Sie ein Leck vermuten."],"profile.sessions.device.browserOnOs":[["browser"]," auf ",["os"]],"profile.sessions.empty":["Keine von plumix verwalteten Sitzungen. Ihre Anmeldung wird von einem externen Identitätsanbieter verarbeitet."],"profile.sessions.loadFailed":["Ihre Sitzungen konnten nicht geladen werden. Aktualisieren und erneut versuchen."],"profile.sessions.loading":["Wird geladen…"],"profile.sessions.revoke.button":["Beenden"],"profile.sessions.revoke.cancel":["Abbrechen"],"profile.sessions.revoke.confirm":["Gerät abmelden"],"profile.sessions.revoke.current":["Sie können die Sitzung, die Sie gerade verwenden, nicht beenden."],"profile.sessions.revoke.description":[["device"]," hat sich ",["when"]," angemeldet. Das Gerät muss sich beim nächsten Mal erneut anmelden."],"profile.sessions.revoke.descriptionWithIp":[["device"]," hat sich ",["when"]," von ",["ip"]," angemeldet. Das Gerät muss sich beim nächsten Mal erneut anmelden."],"profile.sessions.revoke.fallback":["Sitzung konnte nicht beendet werden. Bitte erneut versuchen."],"profile.sessions.revoke.notFound":["Diese Sitzung existiert nicht mehr. Liste aktualisieren."],"profile.sessions.revoke.pending":["Abmeldung läuft…"],"profile.sessions.revoke.title":["Dieses Gerät abmelden?"],"profile.sessions.revokeAll.count":[["revoked","plural",{"0":["Keine anderen Sitzungen zum Abmelden."],"one":["#"," andere Sitzung abgemeldet."],"other":["#"," andere Sitzungen abgemeldet."]}]],"profile.sessions.revokeAll.fallback":["Sitzungen konnten nicht beendet werden. Bitte erneut versuchen."],"profile.sessions.revokeAll.idle":["Andere Geräte abmelden"],"profile.sessions.revokeAll.pending":["Abmeldung läuft…"],"profile.sessions.signedIn":["Angemeldet ",["when"]],"profile.sessions.thisDevice":["Dieses Gerät"],"profile.sessions.title":["Aktive Sitzungen"],"profile.sessions.unknownDevice":["Unbekanntes Gerät"],"settings.empty.description":["Der Kern liefert absichtlich keine Einstellungen — Plugins (oder Ihre eigene plumix.config) deklarieren Seiten + Gruppen über <0>ctx.registerSettingsPage</0> und <1>ctx.registerSettingsGroup</1>. Registrierte Seiten erscheinen hier mit einer Karte pro Seite."],"settings.empty.title":["Noch keine Einstellungen registriert"],"settings.page.empty.description":["Diese Einstellungsseite verweist noch nicht auf registrierte Gruppen. Plugins erstellen Seiten mit dem registerSettingsPage-Helfer:"],"settings.page.empty.title":["Keine Gruppen auf dieser Seite"],"settings.page.loadFailed":["Diese Einstellungen konnten nicht geladen werden. Bitte erneut versuchen."],"settings.page.loading":["Einstellungen werden geladen"],"settings.page.notFound.title":["Nicht gefunden"],"settings.page.saveFailed":["Einstellungen konnten nicht gespeichert werden."],"settings.page.saved":["Gespeichert."],"settings.page.submit.idle":["Änderungen speichern"],"settings.page.submit.pending":["Wird gespeichert…"],"settings.pageSummary":[["count","plural",{"one":["#"," Gruppe"],"other":["#"," Gruppen"]}]],"settings.title":["Einstellungen"],"slashMenu.empty":["Keine Treffer"],"slashMenu.searchAria":["Blöcke und Muster suchen"],"slashMenu.uncategorized":["Sonstige"],"starterModal.description":["Wählen Sie ein Start-Layout oder beginnen Sie mit einer leeren Leinwand."],"starterModal.startBlank":["Leer beginnen"],"starterModal.title":["Mit einem Muster beginnen"],"termForm.cancel":["Abbrechen"],"termForm.description":["Beschreibung"],"termForm.name":["Name"],"termForm.parent":["Übergeordnet"],"termForm.parent.rootOption":["— Stamm —"],"termForm.slug":["Slug"],"termForm.slug.format":["Slug darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten."],"termForm.submitting":["Wird gespeichert…"],"terms.create.backLink":["Back to ",["pluralLower"]],"terms.create.description.flat":["Inhalte gruppieren, indem ein neuer Begriff hinzugefügt wird."],"terms.create.description.hierarchical":["Wählen Sie einen übergeordneten Begriff, um diesen zu verschachteln, oder lassen Sie das Feld leer für einen Begriff auf Stammebene."],"terms.create.error.createFallback":["Begriff konnte nicht erstellt werden. Bitte erneut versuchen."],"terms.create.error.emptySlug":["Aus diesem Namen konnte kein Slug abgeleitet werden — bitte manuell eingeben."],"terms.create.heading":["New ",["singularLower"]],"terms.create.submit":["Create ",["singularLower"]],"terms.edit.backLink":["Back to ",["pluralLower"]],"terms.edit.delete.button":["Begriff löschen"],"terms.edit.delete.cancel":["Abbrechen"],"terms.edit.delete.cardDescription":["Entfernt diesen Begriff und löst die Zuweisung von allen Beiträgen, die ihn verwenden. Untergeordnete werden auf Stammebene gehoben (deren Beiträge behalten ihre anderen Begriffszuweisungen)."],"terms.edit.delete.cardTitle":["Begriff löschen"],"terms.edit.delete.confirm":["Endgültig löschen"],"terms.edit.delete.deleting":["Wird gelöscht…"],"terms.edit.delete.dialogDescription":["Beitragszuweisungen zu diesem Begriff werden entfernt. Hat der Begriff Untergeordnete, werden sie automatisch auf Stammebene gehoben."],"terms.edit.delete.dialogTitle":[["termName"]," löschen?"],"terms.edit.descendantsHint":[" — Untergeordnete können nicht als übergeordnet ausgewählt werden."],"terms.edit.error.deleteFallback":["Begriff konnte nicht gelöscht werden. Bitte erneut versuchen."],"terms.edit.error.saveFallback":["Änderungen konnten nicht gespeichert werden. Bitte erneut versuchen."],"terms.edit.heading":["Edit ",["singularLower"]],"terms.edit.loadingAria":["Begriff wird geladen"],"terms.edit.notFound.message":["Dieser Begriff konnte nicht geladen werden. Möglicherweise wurde er gelöscht."],"terms.edit.notFound.title":["Nicht gefunden"],"terms.edit.submit":["Änderungen speichern"],"terms.error.parentMismatch":["Der ausgewählte übergeordnete gehört zu einer anderen Taxonomie."],"terms.error.parentSelfOrCycle":["Ein Begriff kann nicht sein eigener Vorfahr sein — wählen Sie einen anderen übergeordneten."],"terms.error.slugTaken":["Ein Begriff mit diesem Slug existiert bereits in dieser Taxonomie."],"terms.list.column.description":["Beschreibung"],"terms.list.column.name":["Name"],"terms.list.empty.cta":["New ",["singularLower"]],"terms.list.empty.description":["Erstellen Sie einen, um ihn hier zu sehen."],"terms.list.empty.title":["No ",["singularLower"]," yet"],"terms.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"terms.list.loadingLabel":["Loading ",["pluralLower"]],"terms.list.newButton":["New ",["singularLower"]],"terms.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"tokenSwatch.none":["Keiner"],"type.generic.addNew":["Neu hinzufügen"],"type.generic.addNewItem":["Hinzufügen"],"type.generic.allItems":["Alle"],"type.generic.editItem":["Bearbeiten"],"type.generic.filterItemsList":["Liste filtern"],"type.generic.itemPublished":["Veröffentlicht"],"type.generic.itemPublishedPrivately":["Privat veröffentlicht"],"type.generic.itemRevertedToDraft":["Auf Entwurf zurückgesetzt"],"type.generic.itemScheduled":["Geplant"],"type.generic.itemTrashed":["In den Papierkorb verschoben"],"type.generic.itemUpdated":["Aktualisiert"],"type.generic.itemsList":["Liste"],"type.generic.itemsListNavigation":["Listennavigation"],"type.generic.loadErrorItems":["Konnte nicht geladen werden. Erneut versuchen."],"type.generic.loadingItems":["Wird geladen…"],"type.generic.moveToTrash":["In den Papierkorb verschieben?"],"type.generic.newItem":["Neu"],"type.generic.noMatch":["Keine Treffer"],"type.generic.notFound":["Noch nichts"],"type.generic.notFoundInTrash":["Papierkorb ist leer"],"type.generic.parentItem":["Übergeordnet"],"type.generic.parentItemColon":["Übergeordnet:"],"type.generic.plural":["Einträge"],"type.generic.searchItems":["Suchen…"],"type.generic.singular":["Eintrag"],"type.generic.taxonomy.addOrRemoveItems":["Hinzufügen oder entfernen"],"type.generic.taxonomy.backToItems":["← Zurück"],"type.generic.taxonomy.filterByItem":["Filter"],"type.generic.taxonomy.newItemName":["Neuer Name"],"type.generic.taxonomy.noTerms":["—"],"type.generic.taxonomy.plural":["Begriffe"],"type.generic.taxonomy.separateItemsWithCommas":["Mit Kommas trennen"],"type.generic.taxonomy.singular":["Begriff"],"type.generic.taxonomy.updateItem":["Aktualisieren"],"type.generic.untitledItem":["Ohne Titel"],"type.generic.viewItem":["Ansehen"],"type.generic.viewItems":["Ansehen"],"userEdit.backToList":["Zurück zu den Benutzern"],"userEdit.cancel":["Abbrechen"],"userEdit.delete.button":["Benutzer löschen"],"userEdit.delete.confirm.description":["Wenn dieser Benutzer Beiträge verfasst hat, weist der nächste Schritt sie neu zu. Lassen Sie «Beiträge unverändert lassen» stehen, wenn keine vorhanden sind."],"userEdit.delete.confirm.idle":["Endgültig löschen"],"userEdit.delete.confirm.pending":["Wird gelöscht…"],"userEdit.delete.confirm.title":["Löschen bestätigen: ",["email"]],"userEdit.delete.description":["Endgültig. Beiträge bleiben erhalten, aber Sie wählen, wer die Urheberschaft erbt."],"userEdit.delete.reassign.keepAsIs":["Beiträge unverändert lassen (keine zur Neuzuweisung)"],"userEdit.delete.reassign.label":["Beiträge neu zuweisen an"],"userEdit.delete.title":["Benutzer löschen"],"userEdit.description.other":["Aktualisieren Sie die Details dieses Kontos. Rollenänderungen machen bestehende Sitzungen sofort ungültig."],"userEdit.description.self":["Aktualisieren Sie Ihren angezeigten Namen. Rolle und Kontostatus werden von Administratoren verwaltet."],"userEdit.email.cancelPending.idle":["Abbrechen"],"userEdit.email.cancelPending.pending":["Wird abgebrochen…"],"userEdit.email.changeButton":["E-Mail ändern"],"userEdit.email.confirmationSent":["Bestätigung an ",["email"]," gesendet. Die Änderung tritt in Kraft, sobald der Link angeklickt wurde."],"userEdit.email.dialog.cancel":["Abbrechen"],"userEdit.email.dialog.currentLabel":["Aktuelle E-Mail"],"userEdit.email.dialog.description":["Wir senden einen Bestätigungslink an die neue Adresse. Die Änderung tritt nach dem Klick auf den Link in Kraft. Sitzungen dieses Kontos werden zu diesem Zeitpunkt abgemeldet — die erneute Anmeldung verwendet die neue E-Mail."],"userEdit.email.dialog.newLabel":["Neue E-Mail"],"userEdit.email.dialog.submit.idle":["Bestätigung senden"],"userEdit.email.dialog.submit.pending":["Wird gesendet…"],"userEdit.email.dialog.title":["E-Mail-Adresse ändern"],"userEdit.email.error.accountDisabled":["Dieses Konto ist deaktiviert."],"userEdit.email.error.mailerNotConfigured":["Eine E-Mail-Änderung erfordert einen serverseitig konfigurierten Magic-Link-Mailer. Übergeben Sie \`auth.magicLink\` und \`mailer:\` an \`plumix({...})\` zum Aktivieren."],"userEdit.email.error.requestFallback":["Änderung konnte nicht angefordert werden. Bitte erneut versuchen."],"userEdit.email.error.taken":["Diese E-Mail wird bereits in einem anderen Konto verwendet."],"userEdit.email.invalid":["Gültige E-Mail-Adresse eingeben."],"userEdit.email.label":["E-Mail"],"userEdit.email.pending":["Ausstehende Änderung zu <code>",["newEmail"],"</code> — läuft ",["expiresAt"]," ab"],"userEdit.email.placeholder":["new@example.com"],"userEdit.error.deleteFallback":["Benutzer konnte nicht gelöscht werden. Bitte erneut versuchen."],"userEdit.error.emailTaken":["Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."],"userEdit.error.hasEntries":["Dieser Benutzer hat Beiträge verfasst. Wählen Sie oben jemanden aus, dem sie neu zugewiesen werden sollen."],"userEdit.error.lastAdmin.delete":["Der letzte Administrator kann nicht gelöscht werden. Befördern Sie zuerst jemand anderen."],"userEdit.error.lastAdmin.status":["Der letzte Administrator kann nicht deaktiviert werden. Befördern Sie zuerst jemand anderen."],"userEdit.error.lastAdmin.update":["Das ist nicht möglich — dies ist der letzte Administrator. Befördern Sie zuerst jemand anderen."],"userEdit.error.reassignToSelf":["Eine Neuzuweisung an den zu löschenden Benutzer ist nicht möglich."],"userEdit.error.slugTaken":["That author slug is already taken. Choose a different one."],"userEdit.error.statusFallback":["Kontostatus konnte nicht geändert werden. Bitte erneut versuchen."],"userEdit.error.updateFallback":["Änderungen konnten nicht gespeichert werden. Bitte erneut versuchen."],"userEdit.loadFailed":["Dieser Benutzer konnte nicht geladen werden. Möglicherweise wurde er gelöscht."],"userEdit.loading.aria":["Benutzer wird geladen"],"userEdit.name.label":["Name"],"userEdit.notFound.title":["Nicht gefunden"],"userEdit.role.label":["Rolle"],"userEdit.role.selfReadonly":["Nur ein anderer Administrator kann Ihre Rolle ändern."],"userEdit.slug.description":["Used in this author's archive URL under /authors/. Changing it breaks existing links to the old address."],"userEdit.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"userEdit.slug.label":["Author slug"],"userEdit.status.description.active":["Eine Deaktivierung meldet den Benutzer sofort ab und blockiert zukünftige Anmeldungen. Veröffentlichte Beiträge bleiben erhalten."],"userEdit.status.description.disabled":["Deaktivierte Konten können sich nicht anmelden. Eine Reaktivierung stellt den Zugriff wieder her; der Passkey bleibt registriert."],"userEdit.status.title":["Kontostatus"],"userEdit.status.toggle.disable":["Benutzer deaktivieren"],"userEdit.status.toggle.disabling":["Wird deaktiviert…"],"userEdit.status.toggle.enable":["Benutzer reaktivieren"],"userEdit.status.toggle.enabling":["Wird aktiviert…"],"userEdit.submit.idle":["Änderungen speichern"],"userEdit.submit.pending":["Wird gespeichert…"],"userEdit.title.other":[["email"]," bearbeiten"],"userEdit.title.self":["Ihr Profil"],"userInvite.backToList":["Zurück zu den Benutzern"],"userInvite.cancel":["Abbrechen"],"userInvite.copy.aria":["Einladungslink kopieren"],"userInvite.copy.copied":["Kopiert"],"userInvite.copy.idle":["Kopieren"],"userInvite.description":["Sie registrieren einen Passkey beim ersten Öffnen des Einladungslinks. Kein Passwort erforderlich."],"userInvite.email.invalid":["Gültige E-Mail-Adresse eingeben"],"userInvite.email.label":["E-Mail"],"userInvite.error.emailTaken":["Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."],"userInvite.error.fallback":["Einladung konnte nicht gesendet werden. Bitte erneut versuchen."],"userInvite.name.label":["Name"],"userInvite.role.label":["Rolle"],"userInvite.submit.idle":["Einladung senden"],"userInvite.submit.pending":["Wird eingeladen…"],"userInvite.success.another":["Weiteren einladen"],"userInvite.success.backToList":["Zurück zu den Benutzern"],"userInvite.success.description":["Teilen Sie den untenstehenden Link mit ",["email"],". Sie registrieren einen Passkey beim ersten Öffnen. Der Link läuft in 7 Tagen ab."],"userInvite.success.link.label":["Einladungslink"],"userInvite.success.title":["Einladung bereit"],"userInvite.title":["Benutzer einladen"],"userRole.admin":["Administrator"],"userRole.author":["Autor"],"userRole.contributor":["Mitwirkender"],"userRole.editor":["Redakteur"],"userRole.long.admin":["Administrator — volle Kontrolle"],"userRole.long.author":["Autor — eigene Beiträge veröffentlichen"],"userRole.long.contributor":["Mitwirkender — Entwürfe, keine Veröffentlichung"],"userRole.long.editor":["Redakteur — alle Beiträge veröffentlichen + bearbeiten"],"userRole.long.subscriber":["Abonnent — nur lesen"],"userRole.subscriber":["Abonnent"],"users.list.column.created":["Erstellt"],"users.list.column.lastSignIn":["Letzte Anmeldung"],"users.list.column.role":["Rolle"],"users.list.column.status":["Status"],"users.list.column.user":["Benutzer"],"users.list.empty.description":["Filter zurücksetzen oder jemanden Neues einladen."],"users.list.empty.invite":["Benutzer einladen"],"users.list.empty.title":["Keine Benutzer passen zu Ihrem Filter"],"users.list.invite":["Hinzufügen"],"users.list.loadFailed":["Benutzer konnten nicht geladen werden. Bitte erneut versuchen."],"users.list.loading":["Benutzer werden geladen"],"users.list.roleFilter.all":["Alle Rollen"],"users.list.roleFilter.aria":["Nach Rolle filtern"],"users.list.row.active":["Aktiv"],"users.list.row.disabled":["Deaktiviert"],"users.list.row.lastSignIn.never":["Nie"],"users.list.row.noName":["(kein Name)"],"users.list.row.you":["Sie"],"users.list.searchPlaceholder":["Nach E-Mail suchen…"],"users.list.title":["Benutzer"],"validate.email.invalid":["Gültige E-Mail-Adresse eingeben."],"validate.email.maxLength":["E-Mail ist zu lang."],"validate.email.required":["E-Mail-Adresse eingeben."],"validate.id.format":["id muss eine positive Ganzzahl sein"],"validate.name.maxLength":["Name ist zu lang."]}`);export{e as messages};
|
|
1
|
+
var e=JSON.parse(`{"admin.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"allowedDomains.add.defaultRole.label":["Standardrolle"],"allowedDomains.add.description":["Verwenden Sie die nackte Domain — kein Protokoll, kein Pfad."],"allowedDomains.add.domain.invalid":["Gültigen Hostnamen eingeben (z. B. example.com)."],"allowedDomains.add.domain.label":["Domain"],"allowedDomains.add.placeholder":["example.com"],"allowedDomains.add.submit.idle":["Hinzufügen"],"allowedDomains.add.submit.pending":["Wird hinzugefügt…"],"allowedDomains.add.title":["Domain hinzufügen"],"allowedDomains.description":["E-Mail-Domains, die für die OAuth-Registrierung erlaubt sind. Neue OAuth-Konten werden mit der hier festgelegten Rolle erstellt. Deaktivierte Zeilen lehnen die Registrierung ab, behalten aber ihre Rollenzuordnung."],"allowedDomains.error.domainExists":["Diese Domain ist bereits konfiguriert."],"allowedDomains.error.fallback":["Domain konnte nicht gespeichert werden. Bitte erneut versuchen."],"allowedDomains.list.empty":["Keine Domains konfiguriert. OAuth-Registrierung ist geschlossen, bis mindestens eine aktivierte Domain hinzugefügt wurde."],"allowedDomains.list.loading":["Wird geladen…"],"allowedDomains.list.title":["Konfigurierte Domains"],"allowedDomains.row.deleteAria":[["domain"]," löschen"],"allowedDomains.row.deleteCancel":["Abbrechen"],"allowedDomains.row.deleteConfirm":["Löschen bestätigen"],"allowedDomains.row.disabled":["Deaktiviert"],"allowedDomains.row.enabled":["Aktiviert"],"allowedDomains.title":["Erlaubte Domains"],"apiTokens.col.actions":["Aktionen"],"apiTokens.col.expires":["Läuft ab"],"apiTokens.col.lastUsed":["Zuletzt verwendet"],"apiTokens.col.name":["Name"],"apiTokens.col.prefix":["Präfix"],"apiTokens.col.scopes":["Berechtigungen"],"apiTokens.create.capabilities":["Berechtigungen"],"apiTokens.create.capabilities.help":["Eine Berechtigung pro Zeile. Das Token kann die Rechte Ihrer Rolle niemals überschreiten — dies ist eine zusätzliche Einschränkung."],"apiTokens.create.capabilities.placeholder":["entry:post:read\\nentry:post:edit_own"],"apiTokens.create.expires":["Läuft ab"],"apiTokens.create.name":["Name"],"apiTokens.create.namePlaceholder":["github-actions / claude-code / mcp-prod"],"apiTokens.create.nameRequired":["Name ist erforderlich."],"apiTokens.create.nameTooLong":["Name muss ≤ 64 Zeichen lang sein."],"apiTokens.create.permissions":["Berechtigungen"],"apiTokens.create.scope.inherit":["Alle Ihre Berechtigungen erben"],"apiTokens.create.scope.restrict":["Auf bestimmte Berechtigungen beschränken"],"apiTokens.create.submit.idle":["Token erstellen"],"apiTokens.create.submit.pending":["Wird erstellt…"],"apiTokens.description.admin":["Von diesem Benutzer erstellte Tokens. Sie können jedes davon widerrufen — das Erstellen erfordert die authentifizierte Browser-Sitzung des Besitzers."],"apiTokens.description.self":["Persönliche Zugriffstokens für CLIs, MCP-Server, CI-Bots oder andere Nicht-Browser-Clients. Das vollständige Geheimnis wird einmalig zum Zeitpunkt der Erstellung angezeigt."],"apiTokens.empty.description.admin":["Dieser Benutzer hat keine API-Tokens erstellt."],"apiTokens.empty.description.self":["Erstellen Sie oben eines für Ihre CLI / Ihren MCP-Server / Ihren CI-Bot."],"apiTokens.empty.title":["Noch keine Tokens"],"apiTokens.expiry.30":["30 Tage"],"apiTokens.expiry.7":["7 Tage"],"apiTokens.expiry.90":["90 Tage"],"apiTokens.expiry.never":["Nie"],"apiTokens.loading":["Tokens werden geladen…"],"apiTokens.mint.fallback":["Token konnte nicht erstellt werden. Bitte erneut versuchen."],"apiTokens.never":["Nie"],"apiTokens.revoke.button":["Widerrufen"],"apiTokens.revoke.cancel":["Abbrechen"],"apiTokens.revoke.confirm":["Widerrufen"],"apiTokens.revoke.description":["Das Token funktioniert sofort nicht mehr. Jeder Client, der es verwendet, erhält bei der nächsten Anfrage 401."],"apiTokens.revoke.fallback":["Widerruf fehlgeschlagen. Bitte erneut versuchen."],"apiTokens.revoke.pending":["Wird widerrufen…"],"apiTokens.revoke.title":["\\"",["name"],"\\" widerrufen?"],"apiTokens.scope.empty":["Keine Rechte"],"apiTokens.scope.inheritRole":["Rolle erben"],"apiTokens.secret.copyAria":["Token kopieren"],"apiTokens.secret.description":["Kopieren Sie das Geheimnis jetzt. Wir zeigen es nicht erneut an — wenn Sie es verlieren, müssen Sie es widerrufen und neu erstellen."],"apiTokens.secret.done":["Fertig"],"apiTokens.secret.title":["Token \\"",["name"],"\\" erstellt"],"apiTokens.title":["API-Tokens"],"auth.acceptInvite.description":["Richten Sie einen Passkey ein, um die Kontoerstellung abzuschließen. Ihr Browser oder Gerät führt Sie durch die Eingabeaufforderung."],"auth.acceptInvite.name":["Name"],"auth.acceptInvite.submit.idle":["Passkey erstellen"],"auth.acceptInvite.submit.pending":["Wird eingerichtet…"],"auth.acceptInvite.title":["Einladung annehmen"],"auth.bootstrap.description":["Richten Sie Ihre Website ein — diese E-Mail wird das Administrator-Konto."],"auth.bootstrap.email":["E-Mail"],"auth.bootstrap.name":["Name"],"auth.bootstrap.submit.idle":["Konto mit Passkey erstellen"],"auth.bootstrap.submit.pending":["Konto wird erstellt…"],"auth.bootstrap.title":["Administrator-Konto erstellen"],"auth.device.approve.confirmTitle":["\\"",["userCode"],"\\" bestätigen"],"auth.device.approve.description":["Ein neues API-Token wird für Ihr Konto erstellt und an die CLI übergeben. Geben Sie ihm einen Namen, damit Sie es später in Ihrem Profil finden, und beschränken Sie optional, was es tun darf."],"auth.device.approve.error.alreadyApproved":["Dieser Code wurde bereits in einem anderen Tab genehmigt."],"auth.device.approve.error.alreadyDenied":["Dieser Code wurde bereits abgelehnt."],"auth.device.approve.error.expired":["Dieser Code ist abgelaufen, bevor Sie fertig werden konnten — starten Sie Ihre CLI neu."],"auth.device.approve.error.fallback":["Anfrage konnte nicht abgeschlossen werden. Bitte erneut versuchen."],"auth.device.approve.idle":["Genehmigen"],"auth.device.approve.pending":["Wird genehmigt…"],"auth.device.approved":["Genehmigt. Ihre CLI sollte das Token innerhalb weniger Sekunden erhalten — Sie können diesen Tab schließen."],"auth.device.cancel":["Abbrechen"],"auth.device.denied":["Abgelehnt. Die CLI erhält eine access_denied-Antwort und stoppt die Abfragen."],"auth.device.deny.idle":["Ablehnen"],"auth.device.deny.pending":["Wird abgelehnt…"],"auth.device.description":["Eine CLI fordert ein API-Token für Ihr Konto an. Bestätigen Sie, dass der von Ihrer CLI angezeigte Code mit dem untenstehenden übereinstimmt, bevor Sie zustimmen."],"auth.device.lookup.description":["Die CLI zeigt einen 8-stelligen, durch einen Bindestrich getrennten Code — «ABCD-EFGH». Nur Buchstaben und Ziffern, keine Nullen oder Einsen."],"auth.device.lookup.error.alreadyApproved":["Dieser Code wurde bereits genehmigt. Starten Sie Ihre CLI neu, falls sie das Token nicht erhalten hat."],"auth.device.lookup.error.alreadyDenied":["Dieser Code wurde bereits abgelehnt."],"auth.device.lookup.error.expired":["Dieser Code ist abgelaufen. Starten Sie Ihre CLI neu, um einen neuen zu erhalten."],"auth.device.lookup.error.fallback":["Dieser Code konnte nicht gefunden werden. Bitte erneut versuchen."],"auth.device.lookup.error.notFound":["Code nicht gefunden. Prüfen Sie, ob er mit dem von Ihrer CLI ausgegebenen übereinstimmt."],"auth.device.lookup.submit.idle":["Weiter"],"auth.device.lookup.submit.pending":["Wird geprüft…"],"auth.device.lookup.title":["Code aus Ihrer CLI eingeben"],"auth.device.lookup.userCode.label":["Benutzer-Code"],"auth.device.scopeMode.inherit":["Alle meine Berechtigungen erben"],"auth.device.scopeMode.label":["Berechtigungen"],"auth.device.scopeMode.restrict":["Auf bestimmte Berechtigungen beschränken"],"auth.device.scopes.label":["Berechtigungen"],"auth.device.scopes.placeholder":["entry:post:read\\nentry:post:edit_own"],"auth.device.title":["CLI-Zugriff autorisieren"],"auth.device.tokenName.default":["CLI"],"auth.device.tokenName.label":["Token-Name"],"auth.device.tokenName.placeholder":["claude-code / github-actions / mcp-prod"],"auth.device.tokenName.required":["Name ist erforderlich."],"auth.device.tokenName.tooLong":["Name muss ≤ 64 Zeichen lang sein."],"auth.device.userCode.placeholder":["ABCD-EFGH"],"blockActions.copyJson":["JSON kopieren"],"blockActions.delete":["Löschen"],"blockActions.duplicate":["Duplizieren"],"blockActions.empty":["Wählen Sie einen Block, um Aktionen anzuzeigen."],"blockActions.transformTo":["Umwandeln in"],"blockScopePicker.cancel":["Abbrechen"],"blockScopePicker.description":["Wählen Sie ein Layout zum Einfügen oder brechen Sie ab, um mit einem leeren ",["blockTitle"]," zu beginnen."],"blockScopePicker.title":["Layout für ",["blockTitle"]," auswählen"],"breadcrumb.addNew":["Hinzufügen"],"breadcrumb.admin":["Administration"],"breadcrumb.create":["Erstellen"],"breadcrumb.createTerm":["Create ",["singular"]],"breadcrumb.dashboard":["Dashboard"],"breadcrumb.edit":["Bearbeiten"],"breadcrumb.editTerm":["Edit ",["singular"]],"breadcrumb.editUser":["Benutzer bearbeiten"],"breadcrumb.entries":["Beiträge"],"breadcrumb.profile":["Profil"],"breadcrumb.settings":["Einstellungen"],"breadcrumb.terms":["Begriffe"],"breadcrumb.users":["Benutzer"],"core.adminNav.content":["Beiträge"],"core.adminNav.item.allowedDomains":["Erlaubte Domains"],"core.adminNav.item.dashboard":["Dashboard"],"core.adminNav.item.mailer":["Mailer"],"core.adminNav.item.settings":["Einstellungen"],"core.adminNav.item.users":["Benutzer"],"core.adminNav.keyword.accounts":["accounts"],"core.adminNav.keyword.configuration":["configuration"],"core.adminNav.keyword.domains":["domains"],"core.adminNav.keyword.email":["email"],"core.adminNav.keyword.home":["home"],"core.adminNav.keyword.options":["options"],"core.adminNav.keyword.overview":["overview"],"core.adminNav.keyword.people":["people"],"core.adminNav.keyword.preferences":["preferences"],"core.adminNav.keyword.signups":["signups"],"core.adminNav.keyword.smtp":["smtp"],"core.adminNav.keyword.team":["team"],"core.adminNav.management":["Verwaltung"],"core.adminNav.overview":["Übersicht"],"core.adminNav.termTaxonomies":["Taxonomien"],"core.settings.general.description":["Grundlegende Website-Identität und Metadaten."],"core.settings.general.label":["Allgemein"],"core.settings.site.default_og_image":["Default social image URL"],"core.settings.site.description":["Öffentlicher Name, Slogan und Social-Media-Links."],"core.settings.site.github":["GitHub-URL"],"core.settings.site.label":["Website-Identität"],"core.settings.site.mastodon":["Mastodon-URL"],"core.settings.site.public":["Allow search engines to index this site"],"core.settings.site.tagline":["Slogan"],"core.settings.site.title":["Website-Titel"],"core.settings.site.twitter":["X-(Twitter-)URL"],"dashboard.count.draft":[["count","plural",{"one":["#"," Entwurf"],"other":["#"," Entwürfe"]}]],"dashboard.count.published":[["count","plural",{"one":["#"," veröffentlicht"],"other":["#"," veröffentlicht"]}]],"dashboard.empty.description":["Fügen Sie ein Plugin hinzu, das einen Beitragstyp registriert (z. B. <0>@plumix/plugin-blog</0>), um ihn hier zu sehen."],"dashboard.empty.title":["Noch keine Inhaltstypen"],"dashboard.recent.empty":["Noch nichts."],"dashboard.recent.title":["Letzte Aktivität"],"dashboard.tagline":["Woran möchten Sie heute arbeiten?"],"dashboard.tile.browse":["Browse ",["labelLower"]],"dashboard.tile.browse.generic":["Durchsuchen"],"dashboard.tile.description":["Write, edit, and publish ",["labelLower"],"."],"dashboard.tile.description.generic":["Schreiben, bearbeiten und veröffentlichen."],"dashboard.welcome":["Willkommen, ",["greeting"]],"dataTable.emptyState":["Keine Ergebnisse."],"dataTable.loading":["Wird geladen"],"editor.autosave.error":["Speichern fehlgeschlagen"],"editor.autosave.saved":["Gespeichert"],"editor.autosave.saving":["Wird gespeichert..."],"editor.coAuthorIndicator.activeAriaLabel":["Aktive Co-Autoren"],"editor.coAuthorIndicator.presenceAriaLabel":[["display"]," · zuletzt gesehen ",["lastSeen"]],"editor.copyPattern.untitled":["Untitled"],"editor.device.desktop":["Desktop"],"editor.device.mobile":["Mobil"],"editor.device.tablet":["Tablet"],"editor.document.excerpt":["Excerpt"],"editor.document.parent":["Parent"],"editor.document.parent.none":["(no parent)"],"editor.document.slug":["Slug"],"editor.document.template":["Template"],"editor.document.template.default":["(theme default)"],"editor.document.title":["Title"],"editor.entry.create.failed":["Something went wrong while creating a draft. Try again."],"editor.entry.create.failedTitle":["Couldn't create the entry"],"editor.entry.create.pending":["Creating new ",["singular"],"…"],"editor.entry.create.pending.generic":["Wird erstellt…"],"editor.entry.create.retry":["Try again"],"editor.entry.create.untitled":["Ohne Titel"],"editor.entry.edit.headline":["Edit ",["singular"]],"editor.entry.edit.headline.generic":["Edit"],"editor.entry.edit.loadFailed":["Dieser Eintrag konnte nicht geladen werden."],"editor.entry.edit.loadFailedTitle":["Dieser Eintrag konnte nicht geladen werden"],"editor.entry.edit.loading":["Beitrag wird geladen…"],"editor.entry.edit.restore.conflict":["Ein anderer Bearbeiter hat diesen Eintrag geändert. Neu laden und erneut versuchen."],"editor.entry.edit.saveFailed":["Speichern fehlgeschlagen."],"editor.entry.edit.stale.loading":["Wird geladen…"],"editor.entry.edit.toast.discardFailed":["Entwurf konnte nicht verworfen werden — bitte erneut versuchen."],"editor.entry.edit.toast.draftDiscarded":["Entwurf verworfen."],"editor.entry.edit.toast.publishFailed":["Veröffentlichen fehlgeschlagen — bitte erneut versuchen."],"editor.entry.edit.toast.published":["Veröffentlicht."],"editor.headingAudit.empty":["Keine Probleme mit der Überschriftenstruktur erkannt."],"editor.headingAudit.emptyHeading":["Leere Überschrift. Text hinzufügen oder Block entfernen."],"editor.headingAudit.multipleH1":["Mehrere <h1> auf der Seite (",["count"]," gefunden). Behalten Sie nur eine Überschrift der obersten Ebene."],"editor.headingAudit.skippedLevel":["Überschrift springt von h",["from"]," zu h",["to"],". Fügen Sie ein h",["between"]," dazwischen ein."],"editor.headingAudit.warningPrefix":["Warnung:"],"editor.layout.canvas.copyAsPatternSource":["Als Mustervorlage kopieren"],"editor.layout.canvas.pickStarter":["Vorlage auswählen…"],"editor.layout.canvas.zoomIn":["Hineinzoomen"],"editor.layout.canvas.zoomOut":["Herauszoomen"],"editor.layout.characterCount":[["characters","plural",{"one":["#"," Zeichen"],"other":["#"," Zeichen"]}]],"editor.layout.copy.copied":["Copied to clipboard"],"editor.layout.copy.failed":["Couldn't copy to clipboard"],"editor.layout.copyAsPattern.untitledFallback":["Ohne Titel"],"editor.layout.draft.discard":["Verwerfen"],"editor.layout.draft.discarding":["Wird verworfen…"],"editor.layout.draft.publish":["Veröffentlichen"],"editor.layout.draft.publishing":["Wird veröffentlicht…"],"editor.layout.draft.save":["Entwurf speichern"],"editor.layout.draft.saving":["Wird gespeichert…"],"editor.layout.draftBanner.body":["Klicken Sie auf «Veröffentlichen», um sie live zu schalten, oder auf «Verwerfen», um zurückzusetzen."],"editor.layout.draftBanner.title":["Sie haben nicht veröffentlichte Entwurfsänderungen."],"editor.layout.header.backToList":["Zurück zur Liste"],"editor.layout.header.titlePlaceholder":["Ohne Titel"],"editor.layout.mobile.blocksSheetDescription":["Einfügbare Blöcke, Gliederung und Überschriften-Audit für diesen Beitrag."],"editor.layout.mobile.blocksSheetTitle":["Blöcke"],"editor.layout.mobile.blocksTrigger":["Blöcke"],"editor.layout.mobile.inspectorSheetDescription":["Block-Aktionen, Felder und Stil-Steuerungen für den ausgewählten Block."],"editor.layout.mobile.inspectorSheetTitle":["Inspektor"],"editor.layout.mobile.inspectorTrigger":["Inspektor"],"editor.layout.publish":["Veröffentlichen"],"editor.layout.slashMenu.description":["Suchen Sie Blöcke und Muster nach Titel oder Stichwort und drücken Sie Eingabe zum Einfügen."],"editor.layout.slashMenu.title":["Block oder Muster einfügen"],"editor.layout.tab.audit":["Prüfung"],"editor.layout.tab.block":["Block"],"editor.layout.tab.blocks":["Blöcke"],"editor.layout.tab.document":["Document"],"editor.layout.tab.outline":["Gliederung"],"editor.layout.tab.style":["Stil"],"editor.layout.titleAriaLabel":["Beitragstitel"],"editor.layout.wordCount":[["words","plural",{"one":["#"," Wort"],"other":["#"," Wörter"]}]],"editor.loading":["Opening the editor…"],"editor.patternRef.detach":["Lösen"],"editor.patternRef.openSource":["Quelle öffnen"],"editor.patternRef.unresolved":["Muster nicht registriert: <code>",["slug"],"</code>"],"editor.plainForm.publish":["Veröffentlichen"],"editor.plainForm.save":["Speichern"],"editor.plainForm.status.error":["Speichern fehlgeschlagen"],"editor.plainForm.status.saved":["Gespeichert"],"editor.plainForm.status.saving":["Wird gespeichert..."],"editor.plainForm.titleAriaLabel":["Beitragstitel"],"editor.plainForm.titlePlaceholder":["Ohne Titel"],"editor.preview.more":["More preview options"],"editor.preview.open":["Preview"],"editor.preview.tooltip":["Open a preview in a new tab"],"editor.previewFailed":["Couldn't open this entry in the editor."],"editor.previewFailedTitle":["Couldn't open the editor"],"editor.previewLink.copied":["Vorschaulink in die Zwischenablage kopiert"],"editor.previewLink.copy":["Vorschaulink kopieren"],"editor.previewLink.failed":["Vorschaulink konnte nicht erstellt werden"],"editor.revision.conflict":["This entry changed since the preview loaded — reload and retry."],"editor.revisions.diff.empty":["Keine Änderungen."],"editor.revisions.diff.field.excerpt":["Auszug"],"editor.revisions.diff.field.slug":["Slug"],"editor.revisions.diff.field.title":["Titel"],"editor.revisions.diff.tab.json":["Rohes JSON"],"editor.revisions.diff.tab.visual":["Visuell"],"editor.revisions.diffDialog.description":["Nebeneinander: diese Revision (links) vs. der aktuelle Eintrag (rechts)."],"editor.revisions.diffDialog.pane.current":["Aktuell"],"editor.revisions.diffDialog.pane.error":["Snapshot konnte nicht geladen werden."],"editor.revisions.diffDialog.pane.thisRevision":["Diese Revision"],"editor.revisions.diffDialog.title":["Revisions-JSON-Diff"],"editor.revisions.preview.backToLive":["← Zurück zur aktuellen Version"],"editor.revisions.preview.restore":["Diese Revision wiederherstellen"],"editor.revisions.preview.restoring":["Wird wiederhergestellt…"],"editor.revisions.preview.subtitle":[["when"]," von ",["author"]],"editor.revisions.preview.title":["Vorschau der Revision"],"editor.revisions.sheet.autosavesEmpty":["Automatische Speicherungen erscheinen hier, sobald Entwürfe-von-veröffentlicht verfügbar sind."],"editor.revisions.sheet.commentCancel":["Abbrechen"],"editor.revisions.sheet.commentPlaceholder":["Diese Revision beschreiben…"],"editor.revisions.sheet.commentSave":["Speichern"],"editor.revisions.sheet.commentSaving":["…"],"editor.revisions.sheet.description":["Jede Speicherung erstellt eine neue Revision. Neueste zuerst."],"editor.revisions.sheet.diffAriaLabel":["JSON-Diff ansehen"],"editor.revisions.sheet.empty":["Noch keine Revisionen."],"editor.revisions.sheet.error":["Revisionen konnten nicht geladen werden."],"editor.revisions.sheet.loadMore":["Mehr laden"],"editor.revisions.sheet.loadingAria":["Revisionen werden geladen"],"editor.revisions.sheet.loadingMore":["Wird geladen…"],"editor.revisions.sheet.tab.all":["Alle"],"editor.revisions.sheet.tab.autosaves":["Automatisches Speichern"],"editor.revisions.sheet.tab.publishes":["Veröffentlichungen"],"editor.revisions.sheet.title":["Revisionen"],"editor.revisions.sheet.trigger":["Revisionen"],"editor.revisions.sheet.unknownAuthor":["Unbekannt"],"editor.stale.loading":["Loading…"],"editor.staleDraft.compare":["Vergleichen"],"editor.staleDraft.description":["Jemand anderes hat Änderungen an diesem Eintrag veröffentlicht, während Sie ausstehende Änderungen hatten. Wählen Sie aus, welche Version beibehalten werden soll, bevor Sie fortfahren."],"editor.staleDraft.discarding":["Wird verworfen…"],"editor.staleDraft.hideComparison":["Vergleich ausblenden"],"editor.staleDraft.liveNow":["Aktuelle Version"],"editor.staleDraft.title":["Ihr Entwurf ist veraltet"],"editor.staleDraft.useMine":["Meine verwenden"],"editor.staleDraft.useTheirs":["Ihre verwenden"],"editor.staleDraft.yourDraft":["Ihr Entwurf"],"editor.styleTab.activeBucket":["Bearbeiten für: ",["device"]],"editor.styleTab.empty":["Wählen Sie einen Block zum Stylen aus."],"editor.styleTab.section.background":["Hintergrund"],"editor.styleTab.section.fontSize":["Schriftgröße"],"editor.styleTab.section.padding":["Innenabstand"],"editor.styleTab.section.textColor":["Textfarbe"],"editor.styleTab.select.none":["Keiner"],"editor.toast.autosaveFailed":["Couldn't save your changes — they may contain invalid content."],"editor.toast.discardFailed":["Couldn't discard the draft — try again."],"editor.toast.discarded":["Draft discarded."],"editor.toast.publishFailed":["Couldn't publish — try again."],"editor.toast.published":["Published."],"emailChange.error.accountDisabled":["Das Konto, zu dem diese Bestätigung gehört, ist deaktiviert."],"emailChange.error.emailTaken":["Jemand anderes hat diese E-Mail zwischen Anfrage und Klick beansprucht. Fordern Sie eine neue Änderung auf eine andere Adresse an."],"emailChange.error.fallback":["E-Mail-Änderung konnte nicht bestätigt werden. Bitte erneut versuchen."],"emailChange.error.missingToken":["Diesem Bestätigungslink fehlt das Token. Fordern Sie eine neue E-Mail-Änderung an."],"emailChange.error.tokenExpired":["Dieser Bestätigungslink ist abgelaufen. Fordern Sie eine neue E-Mail-Änderung an."],"emailChange.error.tokenInvalid":["Dieser Bestätigungslink ist nicht gültig. Möglicherweise wurde er bereits verwendet."],"emailChange.error.userNotFound":["Das Konto, zu dem diese Bestätigung gehört, wurde entfernt."],"entries.list.authorFilter.all":["Alle Autoren"],"entries.list.authorFilter.mine":["Meine"],"entries.list.bulk.cancel":["Abbrechen"],"entries.list.bulk.confirm":["Bestätigen"],"entries.list.bulk.delete":["Endgültig löschen"],"entries.list.bulk.deleteBody":["Dies löscht die ausgewählten Einträge und ihre Revisionen endgültig. Das kann nicht rückgängig gemacht werden."],"entries.list.bulk.deleteTitle":[["count","plural",{"one":["#"," Eintrag endgültig löschen?"],"other":["#"," Einträge endgültig löschen?"]}]],"entries.list.bulk.restore":["Wiederherstellen"],"entries.list.bulk.selected":[["count","plural",{"one":["#"," Eintrag ausgewählt"],"other":["#"," Einträge ausgewählt"]}]],"entries.list.bulk.toastDeleted":[["count","plural",{"one":["#"," Eintrag gelöscht."],"other":["#"," Einträge gelöscht."]}]],"entries.list.bulk.toastFailed":["Das hat nicht geklappt — bitte erneut versuchen."],"entries.list.bulk.toastRestored":[["count","plural",{"one":["#"," Eintrag wiederhergestellt."],"other":["#"," Einträge wiederhergestellt."]}]],"entries.list.bulk.toastTrashed":[["count","plural",{"one":["#"," Eintrag in den Papierkorb verschoben."],"other":["#"," Einträge in den Papierkorb verschoben."]}]],"entries.list.bulk.trash":["In den Papierkorb"],"entries.list.bulk.trashTitle":[["count","plural",{"one":["#"," Eintrag in den Papierkorb verschieben?"],"other":["#"," Einträge in den Papierkorb verschieben?"]}]],"entries.list.column.status":["Status"],"entries.list.column.title":["Titel"],"entries.list.column.updated":["Aktualisiert"],"entries.list.deleteDialog.cancel":["Abbrechen"],"entries.list.deleteDialog.confirm":["Endgültig löschen"],"entries.list.deleteDialog.deleting":["Wird gelöscht…"],"entries.list.deleteDialog.description":["Der Eintrag und seine Revisionen werden endgültig gelöscht. Das kann nicht rückgängig gemacht werden."],"entries.list.deleteDialog.title":["Endgültig löschen?"],"entries.list.empty.cta":["New ",["singularLower"]],"entries.list.empty.description":["Erstellen Sie einen, um ihn hier zu sehen."],"entries.list.empty.title":["No ",["pluralLower"]," yet"],"entries.list.filterAuthorAria":["Nach Autor filtern"],"entries.list.filterStatusAria":["Nach Status filtern"],"entries.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"entries.list.loadingLabel":["Loading ",["pluralLower"]],"entries.list.newButton":["New ",["singularLower"]],"entries.list.noTitle":["(kein Titel)"],"entries.list.row.deletePermanently":["Endgültig löschen"],"entries.list.row.duplicate":["Duplizieren"],"entries.list.row.duplicating":["Wird dupliziert…"],"entries.list.row.edit":["Bearbeiten"],"entries.list.row.restore":["Wiederherstellen"],"entries.list.row.restoring":["Wird wiederhergestellt…"],"entries.list.row.trash":["In den Papierkorb"],"entries.list.row.trashing":["Wird in den Papierkorb verschoben…"],"entries.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"entries.list.selectAllAria":["Alle Einträge auf dieser Seite auswählen"],"entries.list.selectRowAria":["Eintrag auswählen"],"entries.list.sortAria":["Nach ",["label"]," sortieren (",["direction"],")"],"entries.list.statusFilter.all":["Alle"],"entries.list.statusFilter.draft":["Entwurf"],"entries.list.statusFilter.published":["Veröffentlicht"],"entries.list.statusFilter.scheduled":["Geplant"],"entries.list.statusFilter.trash":["Papierkorb"],"entries.list.taxonomyFilter.all":["All ",["pluralLower"]],"entries.list.taxonomyFilter.empty":["No ",["pluralLower"]," match."],"entries.list.taxonomyFilter.search":["Search ",["pluralLower"],"…"],"entries.list.toast.deleted":["Endgültig gelöscht."],"entries.list.toast.duplicated":["Als Entwurf dupliziert."],"entries.list.toast.failed":["Das hat nicht geklappt — bitte erneut versuchen."],"entries.list.toast.restored":["In Entwürfe wiederhergestellt."],"entries.list.toast.trashed":["In den Papierkorb verschoben."],"entries.list.trashDialog.cancel":["Abbrechen"],"entries.list.trashDialog.confirm":["In den Papierkorb verschieben"],"entries.list.trashDialog.description":["Sie können ihn später aus der Papierkorb-Ansicht wiederherstellen."],"entries.list.trashDialog.moving":["Wird verschoben…"],"entries.list.trashDialog.title":["Move ",["singularLower"]," to trash?"],"errorBoundary.hideError":["Fehler ausblenden"],"errorBoundary.showError":["Fehler anzeigen"],"errorBoundary.title":["Etwas ist schiefgelaufen"],"fieldTypes.boolean.no":["Nein"],"fieldTypes.boolean.yes":["Ja"],"form.multiSelect.empty":["Keine Treffer."],"form.multiSelect.placeholder":["Auswählen…"],"form.multiSelect.search":["Suchen…"],"form.multiSelect.selectedCount":[["count"]," ausgewählt"],"listPagination.next.aria":["Zur nächsten Seite"],"listPagination.next.label":["Weiter"],"listPagination.page":["Seite ",["page"]],"listPagination.prev.aria":["Zur vorherigen Seite"],"listPagination.prev.label":["Zurück"],"login.description":["Verwenden Sie einen Passkey, holen Sie sich einen einmaligen E-Mail-Link oder fahren Sie mit einem Anbieter fort."],"login.email.invalid":["Gültige E-Mail-Adresse eingeben."],"login.email.label":["E-Mail"],"login.emailChange.success":["E-Mail bestätigt. Mit der neuen Adresse anmelden."],"login.locale.aria":["Sprache"],"login.magicLink.back":["Zurück"],"login.magicLink.emailRequired":["Zuerst Ihre E-Mail oben eingeben."],"login.magicLink.pending":["Wird gesendet…"],"login.magicLink.sent.description":["Wenn ein Konto für diese E-Mail existiert, haben wir einen Anmelde-Link gesendet. Der Link läuft in 15 Minuten ab."],"login.magicLink.sent.title":["E-Mail prüfen"],"login.magicLink.submit":["Link per E-Mail senden"],"login.oauth.continueWith":["Weiter mit ",["label"]],"login.oauth.separator":["oder"],"login.passkey.pending":["Anmeldung läuft…"],"login.passkey.submit":["Mit Passkey anmelden"],"login.title":["Anmelden"],"magicLink.error.accountDisabled":["Dieses Konto ist deaktiviert."],"magicLink.error.domainNotAllowed":["Ihre E-Mail-Domain ist nicht mehr auf der Whitelist. Bitten Sie einen Administrator, sie hinzuzufügen."],"magicLink.error.fallback":["Anmeldung fehlgeschlagen. Bitte erneut versuchen."],"magicLink.error.missingToken":["Diesem Anmeldelink fehlt das Token. Fordern Sie einen neuen an und versuchen Sie es erneut."],"magicLink.error.registrationClosed":["Selbstregistrierung ist nicht verfügbar, bis ein Administrator die Einrichtung abgeschlossen hat."],"magicLink.error.tokenExpired":["Dieser Anmeldelink ist abgelaufen. Fordern Sie einen neuen an."],"magicLink.error.tokenInvalid":["Dieser Anmeldelink ist nicht gültig. Möglicherweise wurde er bereits verwendet. Fordern Sie einen neuen an."],"magicLinkRequest.error.invalidInput":["Gültige E-Mail-Adresse eingeben."],"magicLinkRequest.error.network":["Link konnte nicht gesendet werden. Bitte erneut versuchen."],"magicLinkRequest.error.notConfigured":["Magic-Link-Anmeldung ist auf dieser Website nicht konfiguriert."],"mailer.description":["Testet, dass der konfigurierte ausgehende E-Mail-Transport tatsächlich zustellt. Verwendet von Magic-Link-Anmeldung, Einladungs-E-Mails und jedem Plugin, das den gemeinsamen Mailer nutzt."],"mailer.test.description":["Sendet eine einmalige Nachricht über denselben Transport, den Magic-Link verwendet. Fehler erscheinen hier wortwörtlich — im Gegensatz zum Magic-Link-Anfrage-Flow, der Mailer-Fehler absichtlich verschluckt, damit die Antwortform nicht verrät, ob eine E-Mail registriert ist."],"mailer.test.error.fallback":["Testnachricht konnte nicht gesendet werden. Bitte erneut versuchen."],"mailer.test.error.notConfigured":["Kein Mailer-Adapter konfiguriert. Übergeben Sie einen \`mailer:\` an \`plumix({...})\` (z. B. consoleMailer() für die Entwicklung oder Ihren Resend-/Postmark-/SES-Wrapper)."],"mailer.test.error.sendFailed":["Der Mailer-Adapter hat beim Senden einen Fehler ausgelöst. Prüfen Sie die Worker-Protokolle auf den zugrundeliegenden Fehler."],"mailer.test.feedback.ok":["Testnachricht an ",["to"]," gesendet. Wenn sie nicht innerhalb einer Minute ankommt, prüfen Sie die Protokolle Ihres Transport-Adapters."],"mailer.test.recipient.invalid":["Gültige E-Mail-Adresse eingeben."],"mailer.test.recipient.label":["Empfänger"],"mailer.test.recipient.placeholder":["ops@example.com"],"mailer.test.submit.idle":["Test senden"],"mailer.test.submit.pending":["Wird gesendet…"],"mailer.test.title":["Testnachricht senden"],"mailer.title":["Mailer"],"menu.profile":["Profil"],"menu.settings":["Einstellungen"],"menu.signOut":["Abmelden"],"menu.signOut.pending":["Abmeldung läuft…"],"metaBox.field.json.invalid":["Ungültiges JSON"],"metaBox.link.dialogDescription":["Beitrag zum Verlinken suchen und auswählen"],"metaBox.link.loading":["Wird geladen…"],"metaBox.link.newTab":["In neuem Tab öffnen"],"metaBox.link.noMatches":["Keine Treffer"],"metaBox.link.pick":["Beitrag auswählen"],"metaBox.link.searchPlaceholder":["Beiträge suchen…"],"metaBox.link.text":["Linktext"],"metaBox.link.url":["URL"],"metaBox.multiReference.addMore":["Hinzufügen"],"metaBox.multiReference.dialogDescription":[["kind"],"-Einträge suchen und auswählen"],"metaBox.multiReference.emptyValue":["Nichts ausgewählt"],"metaBox.multiReference.loading":["Wird geladen…"],"metaBox.multiReference.noMatches":["Keine Treffer"],"metaBox.multiReference.orphan":["Referenz fehlt — entfernen oder erneut auswählen"],"metaBox.multiReference.resolveError":["Ausgewählte Elemente konnten nicht geladen werden — Aktualisieren zum erneuten Versuchen."],"metaBox.multiReference.searchPlaceholder":[["kind"]," suchen…"],"metaBox.multiReference.selectIdle":["Auswählen"],"metaBox.pluginField.crashed":["Dieses Feld konnte nicht gerendert werden. Details in der Browser-Konsole."],"metaBox.reference.clear":["Zurücksetzen"],"metaBox.reference.dialogDescription":[["kind"]," suchen und auswählen"],"metaBox.reference.emptyValue":["Nichts ausgewählt"],"metaBox.reference.loading":["Wird geladen…"],"metaBox.reference.noMatches":["Keine Treffer"],"metaBox.reference.orphan":["Referenz fehlt — erneut auswählen oder zurücksetzen"],"metaBox.reference.searchPlaceholder":[["kind"]," suchen…"],"metaBox.reference.selectChange":["Ändern"],"metaBox.reference.selectIdle":["Auswählen"],"metaBox.reference.untitled":["Untitled"],"metaBox.repeater.addAnother":["Weiteres hinzufügen"],"metaBox.repeater.addFirst":["Zeile hinzufügen"],"metaBox.repeater.countSuffixBoth":[" / min ",["min"]," / max ",["max"]],"metaBox.repeater.countSuffixMax":[" / max ",["max"]],"metaBox.repeater.countSuffixMin":[" / min ",["min"]],"metaBox.repeater.done":["Done"],"metaBox.repeater.editRow":["Edit row ",["n"]],"metaBox.repeater.editRow.button":["Edit row ",["n"]],"metaBox.repeater.empty":["Keine Zeilen"],"metaBox.repeater.rowError":["This row has an error"],"metaBox.repeater.rowSummaryEmpty":["Row ",["n"]],"metaField.invalid":["Invalid value."],"metaField.invalidEmail":["Enter a valid email address."],"metaField.invalidOption":["Select a valid option."],"metaField.invalidUrl":["Enter a valid URL."],"metaField.max":["Must be at most ",["max"],"."],"metaField.maxItems":["Select at most ",["max"],"."],"metaField.maxLength":["Must be at most ",["max"]," characters."],"metaField.maxRows":["Use at most ",["max"]," row(s)."],"metaField.maxTemporal":["Must be on or before ",["max"],"."],"metaField.min":["Must be at least ",["min"],"."],"metaField.minRows":["Add at least ",["min"]," row(s)."],"metaField.minTemporal":["Must be on or after ",["min"],"."],"metaField.required":["This field is required."],"notFound.description":["Die gesuchte Seite existiert nicht oder die Ressource ist nicht registriert. URL prüfen und erneut versuchen."],"notFound.title":["Nicht gefunden"],"oauth.error.accountDisabled":["Dieses Konto ist deaktiviert."],"oauth.error.codeExchangeFailed":["Anbieter konnte nicht erreicht werden. Bitte erneut versuchen."],"oauth.error.domainNotAllowed":["Ihre E-Mail-Domain ist nicht auf der Whitelist. Bitten Sie einen Administrator, sie hinzuzufügen."],"oauth.error.emailMissing":["Der Anbieter hat keine E-Mail-Adresse zurückgegeben."],"oauth.error.emailUnverified":["Der Anbieter hat Ihre E-Mail noch nicht bestätigt. Bestätigen Sie sie dort und versuchen Sie es erneut."],"oauth.error.fallback":["Anmeldung fehlgeschlagen. Bitte erneut versuchen."],"oauth.error.linkBroken":["Dieses Konto ist nicht erreichbar. Wenden Sie sich an einen Administrator, um es erneut zu verknüpfen."],"oauth.error.profileFetchFailed":["Ihr Profil konnte nicht gelesen werden. Bitte erneut versuchen."],"oauth.error.providerNotConfigured":["Dieser Anbieter ist nicht konfiguriert."],"oauth.error.registrationClosed":["OAuth-Registrierung ist nicht verfügbar, bis ein Administrator die Einrichtung abgeschlossen hat."],"oauth.error.stateExpired":["Anmeldung abgelaufen. Bitte erneut versuchen."],"oauth.error.stateInvalid":["Anmeldung abgelaufen oder ungültig. Bitte erneut versuchen."],"palette.command.profile":["Edit profile"],"palette.command.settings":["Settings"],"palette.description":["Search to navigate the admin."],"palette.empty":["No results found."],"palette.group.commands":["Commands"],"palette.group.navigation":["Navigation"],"palette.group.recent":["Recent"],"palette.hint.close":["Close"],"palette.hint.navigate":["Navigate"],"palette.hint.select":["Select"],"palette.loading":["Searching…"],"palette.placeholder":["Search…"],"palette.title":["Command palette"],"passkey.error.challengeMismatch":["Der Passkey wurde für eine andere Einladung erstellt. Bitte neu laden und erneut versuchen."],"passkey.error.challengeNotBoundToUser":["Anmeldeversuch ist abgelaufen. Bitte erneut versuchen."],"passkey.error.challengeNotFound":["Anmeldeversuch ist abgelaufen. Bitte erneut versuchen."],"passkey.error.counterReplay":["Ihr Passkey scheint auf einem anderen Gerät verwendet worden zu sein. Bitte erneut registrieren."],"passkey.error.credentialAlreadyRegistered":["Dieser Passkey ist bereits auf dieser Website registriert."],"passkey.error.credentialLimitReached":["Sie haben das Passkey-Limit für dieses Konto erreicht."],"passkey.error.credentialNotFound":["Dieser Passkey ist auf dieser Website nicht registriert. Versuchen Sie einen anderen."],"passkey.error.credentialStorageCorrupt":["Ihre gespeicherten Passkey-Daten sind beschädigt. Bitte einen neuen registrieren."],"passkey.error.emailMismatch":["Diese E-Mail stimmt nicht mit Ihrem angemeldeten Konto überein."],"passkey.error.invalidClientData":["Ihr Gerät hat eine unerwartete Antwort zurückgegeben. Bitte erneut versuchen."],"passkey.error.invalidInput":["Mit dem Formular ist etwas schiefgelaufen. Bitte neu laden und erneut versuchen."],"passkey.error.invalidOrigin":["Dieser Passkey ist auf dieser Website nicht verwendbar."],"passkey.error.invalidResponse":["Ihr Gerät hat eine unerwartete Antwort zurückgegeben. Bitte erneut versuchen."],"passkey.error.invalidRpId":["Dieser Passkey ist auf dieser Website nicht verwendbar."],"passkey.error.invalidSignature":["Die Signatur Ihres Geräts konnte nicht verifiziert werden. Bitte erneut versuchen."],"passkey.error.invalidToken":["Dieser Einladungslink ist nicht mehr gültig. Bitten Sie Ihren Administrator, einen neuen zu senden."],"passkey.error.networkError":["Server konnte nicht erreicht werden. Verbindung prüfen und erneut versuchen."],"passkey.error.noAuthenticator":["Auf diesem Gerät ist kein Passkey verfügbar. Versuchen Sie sich auf dem Gerät anzumelden, auf dem Sie ihn registriert haben."],"passkey.error.registrationClosed":["Registrierung auf dieser Website ist nicht geöffnet."],"passkey.error.tokenExpired":["Dieser Einladungslink ist abgelaufen. Bitten Sie Ihren Administrator, einen neuen zu senden."],"passkey.error.unknown":["Etwas ist schiefgelaufen. Bitte erneut versuchen."],"passkey.error.unsupportedAlgorithm":["Der Signatur-Algorithmus Ihres Geräts wird nicht unterstützt."],"passkey.error.unsupportedAttestationFormat":["Das Antwortformat Ihres Geräts wird nicht unterstützt."],"passkey.error.userCancelled":["Anmeldung abgebrochen."],"passkey.error.userNotFound":["Für diese E-Mail wurde kein Konto gefunden."],"passkey.error.userPresenceMissing":["Ihr Gerät hat Ihre Anwesenheit nicht bestätigt. Bitte erneut versuchen."],"patternsSection.heading":["Muster"],"patternsSection.uncategorized":["Nicht kategorisiert"],"plugin.errorBoundary.iconAria":["Plugin-Symbol konnte nicht gerendert werden"],"plugin.errorBoundary.inlineStub":[["label"]," ",["kind"]," fehlgeschlagen"],"plugin.errorBoundary.pageBody":[["label"]," hat beim Rendern einen Fehler verursacht. Der Rest der Administration ist nicht betroffen."],"plugin.errorBoundary.pageTitle":["Plugin-Seite konnte nicht gerendert werden"],"plugin.errorBoundary.unknownPlugin":["dieses Plugin"],"plugin.errorBoundary.widgetBody":[["label"]," konnte nicht gerendert werden."],"pluginPage.loading.aria":[["label"]," wird geladen"],"pluginPage.notLoaded.body":["Das Admin-Manifest deklariert eine Seite unter <code>",["path"],"</code>, aber für sie wurde keine React-Komponente registriert."],"pluginPage.notLoaded.title":["Plugin nicht geladen"],"profile.language.aria":["Sprache"],"profile.language.description":["Ihre Admin-Oberfläche wird in dieser Sprache angezeigt. Die Seite wird nach dem Wechsel neu geladen, damit die neuen Übersetzungen überall angewendet werden."],"profile.language.error":["Sprache konnte nicht gewechselt werden. Bitte erneut versuchen."],"profile.language.title":["Sprache"],"profile.passkeys.added":["Hinzugefügt ",["date"]],"profile.passkeys.delete.button":["Löschen"],"profile.passkeys.delete.cancel":["Abbrechen"],"profile.passkeys.delete.confirm":["Passkey löschen"],"profile.passkeys.delete.description":["Das Gerät, das \\"",["name"],"\\" registriert hat, kann sich nicht mehr anmelden. Sie können es später erneut registrieren."],"profile.passkeys.delete.fallback":["Passkey konnte nicht gelöscht werden. Bitte erneut versuchen."],"profile.passkeys.delete.pending":["Wird gelöscht…"],"profile.passkeys.delete.title":["Diesen Passkey löschen?"],"profile.passkeys.description":["Geräte, die sich in diesem Konto anmelden können. Fügen Sie einen neuen hinzu, bevor Sie einen alten löschen — mindestens ein Passkey muss erhalten bleiben."],"profile.passkeys.empty":["Keine Passkeys registriert. Fügen Sie einen hinzu, um die Anmeldung zu aktivieren."],"profile.passkeys.enroll.alreadyRegistered":["Dieser Passkey ist bereits in diesem Konto registriert."],"profile.passkeys.enroll.cancelled":["Abgebrochen. Tippen Sie auf «Passkey hinzufügen», wenn Sie bereit sind."],"profile.passkeys.enroll.emailMismatch":["Registrierung fehlgeschlagen — erneut anmelden und nochmals versuchen."],"profile.passkeys.enroll.fallback":["Passkey konnte nicht registriert werden. Bitte erneut versuchen."],"profile.passkeys.enroll.idle":["Passkey hinzufügen"],"profile.passkeys.enroll.networkError":["Netzwerkfehler. Verbindung prüfen und erneut versuchen."],"profile.passkeys.enroll.noAuthenticator":["Dieses Gerät unterstützt keine Passkeys."],"profile.passkeys.enroll.pending":["Wird hinzugefügt…"],"profile.passkeys.lastCredential":["Sie können Ihren letzten Passkey nicht löschen. Fügen Sie zuerst einen weiteren hinzu."],"profile.passkeys.lastUsed":["Zuletzt verwendet ",["date"]],"profile.passkeys.loadFailed":["Ihre Passkeys konnten nicht geladen werden. Aktualisieren und erneut versuchen."],"profile.passkeys.loading":["Wird geladen…"],"profile.passkeys.notFound":["Dieser Passkey existiert nicht mehr. Liste aktualisieren."],"profile.passkeys.rename.button":["Umbenennen"],"profile.passkeys.rename.cancel":["Abbrechen"],"profile.passkeys.rename.fallback":["Passkey konnte nicht umbenannt werden. Bitte erneut versuchen."],"profile.passkeys.rename.label":["Passkey umbenennen"],"profile.passkeys.rename.nameEmpty":["Name darf nicht leer sein."],"profile.passkeys.rename.pending":["Wird gespeichert…"],"profile.passkeys.rename.save":["Speichern"],"profile.passkeys.synced":["Synchronisiert"],"profile.passkeys.title":["Passkeys"],"profile.passkeys.transport.hybrid":["Geräteübergreifend"],"profile.passkeys.transport.internal":["Dieses Gerät"],"profile.passkeys.transport.securityKey":["Sicherheitsschlüssel"],"profile.passkeys.unnamed":["Unbenannter Passkey"],"profile.sessions.description":["Geräte, die in diesem Konto angemeldet sind. Widerrufen Sie alle, die Sie nicht erkennen, oder melden Sie sich überall ab, außer in diesem Browser, wenn Sie ein Leck vermuten."],"profile.sessions.device.browserOnOs":[["browser"]," auf ",["os"]],"profile.sessions.empty":["Keine von plumix verwalteten Sitzungen. Ihre Anmeldung wird von einem externen Identitätsanbieter verarbeitet."],"profile.sessions.loadFailed":["Ihre Sitzungen konnten nicht geladen werden. Aktualisieren und erneut versuchen."],"profile.sessions.loading":["Wird geladen…"],"profile.sessions.revoke.button":["Beenden"],"profile.sessions.revoke.cancel":["Abbrechen"],"profile.sessions.revoke.confirm":["Gerät abmelden"],"profile.sessions.revoke.current":["Sie können die Sitzung, die Sie gerade verwenden, nicht beenden."],"profile.sessions.revoke.description":[["device"]," hat sich ",["when"]," angemeldet. Das Gerät muss sich beim nächsten Mal erneut anmelden."],"profile.sessions.revoke.descriptionWithIp":[["device"]," hat sich ",["when"]," von ",["ip"]," angemeldet. Das Gerät muss sich beim nächsten Mal erneut anmelden."],"profile.sessions.revoke.fallback":["Sitzung konnte nicht beendet werden. Bitte erneut versuchen."],"profile.sessions.revoke.notFound":["Diese Sitzung existiert nicht mehr. Liste aktualisieren."],"profile.sessions.revoke.pending":["Abmeldung läuft…"],"profile.sessions.revoke.title":["Dieses Gerät abmelden?"],"profile.sessions.revokeAll.count":[["revoked","plural",{"0":["Keine anderen Sitzungen zum Abmelden."],"one":["#"," andere Sitzung abgemeldet."],"other":["#"," andere Sitzungen abgemeldet."]}]],"profile.sessions.revokeAll.fallback":["Sitzungen konnten nicht beendet werden. Bitte erneut versuchen."],"profile.sessions.revokeAll.idle":["Andere Geräte abmelden"],"profile.sessions.revokeAll.pending":["Abmeldung läuft…"],"profile.sessions.signedIn":["Angemeldet ",["when"]],"profile.sessions.thisDevice":["Dieses Gerät"],"profile.sessions.title":["Aktive Sitzungen"],"profile.sessions.unknownDevice":["Unbekanntes Gerät"],"settings.empty.description":["Der Kern liefert absichtlich keine Einstellungen — Plugins (oder Ihre eigene plumix.config) deklarieren Seiten + Gruppen über <0>ctx.registerSettingsPage</0> und <1>ctx.registerSettingsGroup</1>. Registrierte Seiten erscheinen hier mit einer Karte pro Seite."],"settings.empty.title":["Noch keine Einstellungen registriert"],"settings.page.empty.description":["Diese Einstellungsseite verweist noch nicht auf registrierte Gruppen. Plugins erstellen Seiten mit dem registerSettingsPage-Helfer:"],"settings.page.empty.title":["Keine Gruppen auf dieser Seite"],"settings.page.loadFailed":["Diese Einstellungen konnten nicht geladen werden. Bitte erneut versuchen."],"settings.page.loading":["Einstellungen werden geladen"],"settings.page.notFound.title":["Nicht gefunden"],"settings.page.saveFailed":["Einstellungen konnten nicht gespeichert werden."],"settings.page.saved":["Gespeichert."],"settings.page.submit.idle":["Änderungen speichern"],"settings.page.submit.pending":["Wird gespeichert…"],"settings.pageSummary":[["count","plural",{"one":["#"," Gruppe"],"other":["#"," Gruppen"]}]],"settings.title":["Einstellungen"],"slashMenu.empty":["Keine Treffer"],"slashMenu.searchAria":["Blöcke und Muster suchen"],"slashMenu.uncategorized":["Sonstige"],"starterModal.description":["Wählen Sie ein Start-Layout oder beginnen Sie mit einer leeren Leinwand."],"starterModal.startBlank":["Leer beginnen"],"starterModal.title":["Mit einem Muster beginnen"],"termForm.cancel":["Abbrechen"],"termForm.description":["Beschreibung"],"termForm.name":["Name"],"termForm.parent":["Übergeordnet"],"termForm.parent.rootOption":["— Stamm —"],"termForm.slug":["Slug"],"termForm.slug.format":["Slug darf nur Kleinbuchstaben, Ziffern und Bindestriche enthalten."],"termForm.submitting":["Wird gespeichert…"],"terms.create.backLink":["Back to ",["pluralLower"]],"terms.create.description.flat":["Inhalte gruppieren, indem ein neuer Begriff hinzugefügt wird."],"terms.create.description.hierarchical":["Wählen Sie einen übergeordneten Begriff, um diesen zu verschachteln, oder lassen Sie das Feld leer für einen Begriff auf Stammebene."],"terms.create.error.createFallback":["Begriff konnte nicht erstellt werden. Bitte erneut versuchen."],"terms.create.error.emptySlug":["Aus diesem Namen konnte kein Slug abgeleitet werden — bitte manuell eingeben."],"terms.create.heading":["New ",["singularLower"]],"terms.create.submit":["Create ",["singularLower"]],"terms.edit.backLink":["Back to ",["pluralLower"]],"terms.edit.delete.button":["Begriff löschen"],"terms.edit.delete.cancel":["Abbrechen"],"terms.edit.delete.cardDescription":["Entfernt diesen Begriff und löst die Zuweisung von allen Beiträgen, die ihn verwenden. Untergeordnete werden auf Stammebene gehoben (deren Beiträge behalten ihre anderen Begriffszuweisungen)."],"terms.edit.delete.cardTitle":["Begriff löschen"],"terms.edit.delete.confirm":["Endgültig löschen"],"terms.edit.delete.deleting":["Wird gelöscht…"],"terms.edit.delete.dialogDescription":["Beitragszuweisungen zu diesem Begriff werden entfernt. Hat der Begriff Untergeordnete, werden sie automatisch auf Stammebene gehoben."],"terms.edit.delete.dialogTitle":[["termName"]," löschen?"],"terms.edit.descendantsHint":[" — Untergeordnete können nicht als übergeordnet ausgewählt werden."],"terms.edit.error.deleteFallback":["Begriff konnte nicht gelöscht werden. Bitte erneut versuchen."],"terms.edit.error.saveFallback":["Änderungen konnten nicht gespeichert werden. Bitte erneut versuchen."],"terms.edit.heading":["Edit ",["singularLower"]],"terms.edit.loadingAria":["Begriff wird geladen"],"terms.edit.notFound.message":["Dieser Begriff konnte nicht geladen werden. Möglicherweise wurde er gelöscht."],"terms.edit.notFound.title":["Nicht gefunden"],"terms.edit.submit":["Änderungen speichern"],"terms.error.parentMismatch":["Der ausgewählte übergeordnete gehört zu einer anderen Taxonomie."],"terms.error.parentSelfOrCycle":["Ein Begriff kann nicht sein eigener Vorfahr sein — wählen Sie einen anderen übergeordneten."],"terms.error.slugTaken":["Ein Begriff mit diesem Slug existiert bereits in dieser Taxonomie."],"terms.list.column.description":["Beschreibung"],"terms.list.column.name":["Name"],"terms.list.empty.cta":["New ",["singularLower"]],"terms.list.empty.description":["Erstellen Sie einen, um ihn hier zu sehen."],"terms.list.empty.title":["No ",["singularLower"]," yet"],"terms.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"terms.list.loadingLabel":["Loading ",["pluralLower"]],"terms.list.newButton":["New ",["singularLower"]],"terms.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"tokenSwatch.none":["Keiner"],"type.generic.addNew":["Neu hinzufügen"],"type.generic.addNewItem":["Hinzufügen"],"type.generic.allItems":["Alle"],"type.generic.editItem":["Bearbeiten"],"type.generic.filterItemsList":["Liste filtern"],"type.generic.itemPublished":["Veröffentlicht"],"type.generic.itemPublishedPrivately":["Privat veröffentlicht"],"type.generic.itemRevertedToDraft":["Auf Entwurf zurückgesetzt"],"type.generic.itemScheduled":["Geplant"],"type.generic.itemTrashed":["In den Papierkorb verschoben"],"type.generic.itemUpdated":["Aktualisiert"],"type.generic.itemsList":["Liste"],"type.generic.itemsListNavigation":["Listennavigation"],"type.generic.loadErrorItems":["Konnte nicht geladen werden. Erneut versuchen."],"type.generic.loadingItems":["Wird geladen…"],"type.generic.moveToTrash":["In den Papierkorb verschieben?"],"type.generic.newItem":["Neu"],"type.generic.noMatch":["Keine Treffer"],"type.generic.notFound":["Noch nichts"],"type.generic.notFoundInTrash":["Papierkorb ist leer"],"type.generic.parentItem":["Übergeordnet"],"type.generic.parentItemColon":["Übergeordnet:"],"type.generic.plural":["Einträge"],"type.generic.searchItems":["Suchen…"],"type.generic.singular":["Eintrag"],"type.generic.taxonomy.addOrRemoveItems":["Hinzufügen oder entfernen"],"type.generic.taxonomy.backToItems":["← Zurück"],"type.generic.taxonomy.filterByItem":["Filter"],"type.generic.taxonomy.newItemName":["Neuer Name"],"type.generic.taxonomy.noTerms":["—"],"type.generic.taxonomy.plural":["Begriffe"],"type.generic.taxonomy.separateItemsWithCommas":["Mit Kommas trennen"],"type.generic.taxonomy.singular":["Begriff"],"type.generic.taxonomy.updateItem":["Aktualisieren"],"type.generic.untitledItem":["Ohne Titel"],"type.generic.viewItem":["Ansehen"],"type.generic.viewItems":["Ansehen"],"userEdit.backToList":["Zurück zu den Benutzern"],"userEdit.cancel":["Abbrechen"],"userEdit.delete.button":["Benutzer löschen"],"userEdit.delete.confirm.description":["Wenn dieser Benutzer Beiträge verfasst hat, weist der nächste Schritt sie neu zu. Lassen Sie «Beiträge unverändert lassen» stehen, wenn keine vorhanden sind."],"userEdit.delete.confirm.idle":["Endgültig löschen"],"userEdit.delete.confirm.pending":["Wird gelöscht…"],"userEdit.delete.confirm.title":["Löschen bestätigen: ",["email"]],"userEdit.delete.description":["Endgültig. Beiträge bleiben erhalten, aber Sie wählen, wer die Urheberschaft erbt."],"userEdit.delete.reassign.keepAsIs":["Beiträge unverändert lassen (keine zur Neuzuweisung)"],"userEdit.delete.reassign.label":["Beiträge neu zuweisen an"],"userEdit.delete.title":["Benutzer löschen"],"userEdit.description.other":["Aktualisieren Sie die Details dieses Kontos. Rollenänderungen machen bestehende Sitzungen sofort ungültig."],"userEdit.description.self":["Aktualisieren Sie Ihren angezeigten Namen. Rolle und Kontostatus werden von Administratoren verwaltet."],"userEdit.email.cancelPending.idle":["Abbrechen"],"userEdit.email.cancelPending.pending":["Wird abgebrochen…"],"userEdit.email.changeButton":["E-Mail ändern"],"userEdit.email.confirmationSent":["Bestätigung an ",["email"]," gesendet. Die Änderung tritt in Kraft, sobald der Link angeklickt wurde."],"userEdit.email.dialog.cancel":["Abbrechen"],"userEdit.email.dialog.currentLabel":["Aktuelle E-Mail"],"userEdit.email.dialog.description":["Wir senden einen Bestätigungslink an die neue Adresse. Die Änderung tritt nach dem Klick auf den Link in Kraft. Sitzungen dieses Kontos werden zu diesem Zeitpunkt abgemeldet — die erneute Anmeldung verwendet die neue E-Mail."],"userEdit.email.dialog.newLabel":["Neue E-Mail"],"userEdit.email.dialog.submit.idle":["Bestätigung senden"],"userEdit.email.dialog.submit.pending":["Wird gesendet…"],"userEdit.email.dialog.title":["E-Mail-Adresse ändern"],"userEdit.email.error.accountDisabled":["Dieses Konto ist deaktiviert."],"userEdit.email.error.mailerNotConfigured":["Eine E-Mail-Änderung erfordert einen serverseitig konfigurierten Magic-Link-Mailer. Übergeben Sie \`auth.magicLink\` und \`mailer:\` an \`plumix({...})\` zum Aktivieren."],"userEdit.email.error.requestFallback":["Änderung konnte nicht angefordert werden. Bitte erneut versuchen."],"userEdit.email.error.taken":["Diese E-Mail wird bereits in einem anderen Konto verwendet."],"userEdit.email.invalid":["Gültige E-Mail-Adresse eingeben."],"userEdit.email.label":["E-Mail"],"userEdit.email.pending":["Ausstehende Änderung zu <code>",["newEmail"],"</code> — läuft ",["expiresAt"]," ab"],"userEdit.email.placeholder":["new@example.com"],"userEdit.error.deleteFallback":["Benutzer konnte nicht gelöscht werden. Bitte erneut versuchen."],"userEdit.error.emailTaken":["Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."],"userEdit.error.hasEntries":["Dieser Benutzer hat Beiträge verfasst. Wählen Sie oben jemanden aus, dem sie neu zugewiesen werden sollen."],"userEdit.error.lastAdmin.delete":["Der letzte Administrator kann nicht gelöscht werden. Befördern Sie zuerst jemand anderen."],"userEdit.error.lastAdmin.status":["Der letzte Administrator kann nicht deaktiviert werden. Befördern Sie zuerst jemand anderen."],"userEdit.error.lastAdmin.update":["Das ist nicht möglich — dies ist der letzte Administrator. Befördern Sie zuerst jemand anderen."],"userEdit.error.reassignToSelf":["Eine Neuzuweisung an den zu löschenden Benutzer ist nicht möglich."],"userEdit.error.slugTaken":["That author slug is already taken. Choose a different one."],"userEdit.error.statusFallback":["Kontostatus konnte nicht geändert werden. Bitte erneut versuchen."],"userEdit.error.updateFallback":["Änderungen konnten nicht gespeichert werden. Bitte erneut versuchen."],"userEdit.loadFailed":["Dieser Benutzer konnte nicht geladen werden. Möglicherweise wurde er gelöscht."],"userEdit.loading.aria":["Benutzer wird geladen"],"userEdit.name.label":["Name"],"userEdit.notFound.title":["Nicht gefunden"],"userEdit.role.label":["Rolle"],"userEdit.role.selfReadonly":["Nur ein anderer Administrator kann Ihre Rolle ändern."],"userEdit.slug.description":["Used in this author's archive URL under /authors/. Changing it breaks existing links to the old address."],"userEdit.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"userEdit.slug.label":["Author slug"],"userEdit.status.description.active":["Eine Deaktivierung meldet den Benutzer sofort ab und blockiert zukünftige Anmeldungen. Veröffentlichte Beiträge bleiben erhalten."],"userEdit.status.description.disabled":["Deaktivierte Konten können sich nicht anmelden. Eine Reaktivierung stellt den Zugriff wieder her; der Passkey bleibt registriert."],"userEdit.status.title":["Kontostatus"],"userEdit.status.toggle.disable":["Benutzer deaktivieren"],"userEdit.status.toggle.disabling":["Wird deaktiviert…"],"userEdit.status.toggle.enable":["Benutzer reaktivieren"],"userEdit.status.toggle.enabling":["Wird aktiviert…"],"userEdit.submit.idle":["Änderungen speichern"],"userEdit.submit.pending":["Wird gespeichert…"],"userEdit.title.other":[["email"]," bearbeiten"],"userEdit.title.self":["Ihr Profil"],"userInvite.backToList":["Zurück zu den Benutzern"],"userInvite.cancel":["Abbrechen"],"userInvite.copy.aria":["Einladungslink kopieren"],"userInvite.copy.copied":["Kopiert"],"userInvite.copy.idle":["Kopieren"],"userInvite.description":["Sie registrieren einen Passkey beim ersten Öffnen des Einladungslinks. Kein Passwort erforderlich."],"userInvite.email.invalid":["Gültige E-Mail-Adresse eingeben"],"userInvite.email.label":["E-Mail"],"userInvite.error.emailTaken":["Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."],"userInvite.error.fallback":["Einladung konnte nicht gesendet werden. Bitte erneut versuchen."],"userInvite.name.label":["Name"],"userInvite.role.label":["Rolle"],"userInvite.submit.idle":["Einladung senden"],"userInvite.submit.pending":["Wird eingeladen…"],"userInvite.success.another":["Weiteren einladen"],"userInvite.success.backToList":["Zurück zu den Benutzern"],"userInvite.success.description":["Teilen Sie den untenstehenden Link mit ",["email"],". Sie registrieren einen Passkey beim ersten Öffnen. Der Link läuft in 7 Tagen ab."],"userInvite.success.link.label":["Einladungslink"],"userInvite.success.title":["Einladung bereit"],"userInvite.title":["Benutzer einladen"],"userRole.admin":["Administrator"],"userRole.author":["Autor"],"userRole.contributor":["Mitwirkender"],"userRole.editor":["Redakteur"],"userRole.long.admin":["Administrator — volle Kontrolle"],"userRole.long.author":["Autor — eigene Beiträge veröffentlichen"],"userRole.long.contributor":["Mitwirkender — Entwürfe, keine Veröffentlichung"],"userRole.long.editor":["Redakteur — alle Beiträge veröffentlichen + bearbeiten"],"userRole.long.subscriber":["Abonnent — nur lesen"],"userRole.subscriber":["Abonnent"],"users.list.column.created":["Erstellt"],"users.list.column.lastSignIn":["Letzte Anmeldung"],"users.list.column.role":["Rolle"],"users.list.column.status":["Status"],"users.list.column.user":["Benutzer"],"users.list.empty.description":["Filter zurücksetzen oder jemanden Neues einladen."],"users.list.empty.invite":["Benutzer einladen"],"users.list.empty.title":["Keine Benutzer passen zu Ihrem Filter"],"users.list.invite":["Hinzufügen"],"users.list.loadFailed":["Benutzer konnten nicht geladen werden. Bitte erneut versuchen."],"users.list.loading":["Benutzer werden geladen"],"users.list.roleFilter.all":["Alle Rollen"],"users.list.roleFilter.aria":["Nach Rolle filtern"],"users.list.row.active":["Aktiv"],"users.list.row.disabled":["Deaktiviert"],"users.list.row.lastSignIn.never":["Nie"],"users.list.row.noName":["(kein Name)"],"users.list.row.you":["Sie"],"users.list.searchPlaceholder":["Nach E-Mail suchen…"],"users.list.title":["Benutzer"],"validate.email.invalid":["Gültige E-Mail-Adresse eingeben."],"validate.email.maxLength":["E-Mail ist zu lang."],"validate.email.required":["E-Mail-Adresse eingeben."],"validate.id.format":["id muss eine positive Ganzzahl sein"],"validate.name.maxLength":["Name ist zu lang."]}`);export{e as messages};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{n as r}from"./dist-BL2bKHuR.js";import{t as i}from"./orpc-CmtRGLtZ.js";import{t as a}from"./useMutation-vgMtqBOX.js";import{t as o}from"./button-DG1Ca1S5.js";import{n as s,r as c,t as l}from"./textarea-iIsBg5jH.js";import{t as u}from"./use-label-CykSHq9A.js";import{D as d,d as f,h as p,l as m,v as h,w as g,y as _}from"./dist-ClOzYsk5.js";import{n as v}from"./vmessage-CRX68a8a.js";import{a as y,i as b,n as x,r as S,t as C}from"./card-L2-kK5VK.js";import{t as w}from"./device-Ae_X8x7B.js";import{t as T}from"./input-xYuLUQID.js";import{a as E,c as D,f as O,i as k,n as A,o as j,p as M,s as N,t as P}from"./form-B_PPIck3.js";import{n as F,t as I}from"./alert-cwX3fWUu.js";import{t as L}from"./valibot-DO4fmSyX.js";import{n as R,t as z}from"./orpc-errors-DWk96ZMY.js";import{t as B}from"./scopes-C_7AiPdH.js";var V=e(n()),H=e(t()),U={userCodePlaceholder:{id:`auth.device.userCode.placeholder`},tokenNamePlaceholder:{id:`auth.device.tokenName.placeholder`},scopesPlaceholder:{id:`auth.device.scopes.placeholder`},defaultTokenName:{id:`auth.device.tokenName.default`},errLookupNotFound:{id:`auth.device.lookup.error.notFound`},errLookupExpired:{id:`auth.device.lookup.error.expired`},errLookupAlreadyApproved:{id:`auth.device.lookup.error.alreadyApproved`},errLookupAlreadyDenied:{id:`auth.device.lookup.error.alreadyDenied`},errLookupFallback:{id:`auth.device.lookup.error.fallback`},errApproveExpired:{id:`auth.device.approve.error.expired`},errApproveAlreadyApproved:{id:`auth.device.approve.error.alreadyApproved`},errApproveAlreadyDenied:{id:`auth.device.approve.error.alreadyDenied`},errApproveFallback:{id:`auth.device.approve.error.fallback`}},W=`access_denied`,G=p({userCode:_(g(),d(),m(32))}),K=p({tokenName:_(g(),d(),f(1,v({id:`auth.device.tokenName.required`})),m(64,v({id:`auth.device.tokenName.tooLong`}))),scopeMode:h([`inherit`,`restrict`]),scopesText:_(g(),m(4096))});function q(){let e=w.useSearch(),[t,n]=(0,V.useState)(()=>e.user_code?{kind:`approve`,userCode:e.user_code}:{kind:`lookup`}),[a,o]=(0,V.useState)(null);return(0,V.useEffect)(()=>{t.kind===`approve`&&i.auth.deviceFlow.lookup.call({userCode:t.userCode}).catch(e=>{o(X(e)),n({kind:`lookup`})})},[]),(0,H.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-4`,children:[(0,H.jsxs)(`header`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(`h1`,{className:`text-2xl font-semibold`,"data-testid":`auth-device-heading`,children:(0,H.jsx)(r,{id:`auth.device.title`,message:`Authorize CLI access`})}),(0,H.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:(0,H.jsx)(r,{id:`auth.device.description`,message:`A CLI is requesting an API token for your account. Confirm the code your CLI is showing matches the one below before approving.`})})]}),t.kind===`lookup`?(0,H.jsx)(J,{initialError:a,onValid:e=>{o(null),n({kind:`approve`,userCode:e})}}):null,t.kind===`approve`?(0,H.jsx)(Y,{userCode:t.userCode,onApproved:()=>n({kind:`approved`}),onDenied:()=>n({kind:`denied`}),onCancel:()=>n({kind:`lookup`})}):null,t.kind===`approved`?(0,H.jsx)(I,{"data-testid":`auth-device-approved-alert`,children:(0,H.jsx)(F,{children:(0,H.jsx)(r,{id:`auth.device.approved`,message:`Approved. Your CLI should pick up the token within a few seconds — you can close this tab.`})})}):null,t.kind===`denied`?(0,H.jsx)(I,{variant:`destructive`,"data-testid":`auth-device-denied-alert`,children:(0,H.jsx)(F,{children:(0,H.jsx)(r,{id:`auth.device.denied`,message:`Denied. The CLI will get a(n) <0>{accessDenied}</0> response and stop polling.`,values:{accessDenied:W},components:{0:(0,H.jsx)(`code`,{className:`font-mono text-xs`})},comment:`accessDenied: the literal OAuth error code string (e.g. 'access_denied') — do not translate`})})}):null]})}function J({initialError:e,onValid:t}){let n=u(),[s,c]=(0,V.useState)(e),l=O({resolver:L(G),defaultValues:{userCode:``},mode:`onSubmit`}),d=a({mutationFn:e=>i.auth.deviceFlow.lookup.call({userCode:e}),onMutate:()=>c(null),onSuccess:(e,n)=>t(n),onError:e=>{c(X(e))}});return(0,H.jsxs)(C,{children:[(0,H.jsxs)(b,{children:[(0,H.jsx)(y,{children:(0,H.jsx)(r,{id:`auth.device.lookup.title`,message:`Enter the code from your CLI`})}),(0,H.jsx)(S,{children:(0,H.jsx)(r,{id:`auth.device.lookup.description`,message:`The CLI shows an 8-character code split with a dash — "ABCD-EFGH". Letters and digits only, no zeros or ones.`})})]}),(0,H.jsx)(x,{children:(0,H.jsx)(P,{...l,children:(0,H.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:l.handleSubmit(e=>{d.mutate(e.userCode)}),children:[(0,H.jsx)(k,{control:l.control,name:`userCode`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(j,{children:(0,H.jsx)(r,{id:`auth.device.lookup.userCode.label`,message:`User code`})}),(0,H.jsx)(A,{children:(0,H.jsx)(T,{autoFocus:!0,autoComplete:`off`,placeholder:n(U.userCodePlaceholder),disabled:d.isPending,"data-testid":`auth-device-usercode-input`,...e})}),(0,H.jsx)(N,{})]})}),s?(0,H.jsx)(I,{variant:`destructive`,"data-testid":`auth-device-lookup-error`,children:(0,H.jsx)(F,{children:n(s)})}):null,(0,H.jsx)(`div`,{className:`flex justify-end`,children:(0,H.jsx)(o,{type:`submit`,disabled:d.isPending,"data-testid":`auth-device-lookup-submit`,children:d.isPending?(0,H.jsx)(r,{id:`auth.device.lookup.submit.pending`,message:`Checking…`}):(0,H.jsx)(r,{id:`auth.device.lookup.submit.idle`,message:`Continue`})})})]})})})]})}function Y({userCode:e,onApproved:t,onDenied:n,onCancel:d}){let f=u(),[p,m]=(0,V.useState)(null),h=O({resolver:L(K),defaultValues:{tokenName:f(U.defaultTokenName),scopeMode:`inherit`,scopesText:``},mode:`onBlur`}),g=M({control:h.control,name:`scopeMode`}),_=a({mutationFn:t=>i.auth.deviceFlow.approve.call({userCode:e,tokenName:t.tokenName,scopes:t.scopes===null?null:[...t.scopes]}),onMutate:()=>m(null),onSuccess:()=>t(),onError:e=>{m(Z(e))}}),v=a({mutationFn:()=>i.auth.deviceFlow.deny.call({userCode:e}),onMutate:()=>m(null),onSuccess:()=>n(),onError:e=>{m(Z(e))}}),w=_.isPending||v.isPending;return(0,H.jsxs)(C,{children:[(0,H.jsxs)(b,{children:[(0,H.jsx)(y,{children:(0,H.jsx)(r,{id:`auth.device.approve.confirmTitle`,message:`Confirm "{userCode}"`,values:{userCode:e},comment:`userCode: the short device-flow code the CLI displayed (e.g. 'WDJB-MJHT'); pass through verbatim`})}),(0,H.jsx)(S,{children:(0,H.jsx)(r,{id:`auth.device.approve.description`,message:`A new API token will be minted for your account and handed to the CLI. Name it so you can find it later under your profile, and optionally restrict what it can do.`})})]}),(0,H.jsx)(x,{children:(0,H.jsx)(P,{...h,children:(0,H.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:h.handleSubmit(e=>{let t=e.scopeMode===`inherit`?null:B(e.scopesText);_.mutate({tokenName:e.tokenName,scopes:t})}),children:[(0,H.jsx)(k,{control:h.control,name:`tokenName`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(j,{children:(0,H.jsx)(r,{id:`auth.device.tokenName.label`,message:`Token name`})}),(0,H.jsx)(A,{children:(0,H.jsx)(T,{placeholder:f(U.tokenNamePlaceholder),disabled:w,"data-testid":`auth-device-tokenname-input`,...e})}),(0,H.jsx)(N,{})]})}),(0,H.jsx)(k,{control:h.control,name:`scopeMode`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(j,{id:`auth-device-scope-label`,children:(0,H.jsx)(r,{id:`auth.device.scopeMode.label`,message:`Permissions`})}),(0,H.jsx)(A,{children:(0,H.jsxs)(s,{name:e.name,value:e.value,onValueChange:e.onChange,disabled:w,"aria-labelledby":`auth-device-scope-label`,className:`gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(c,{value:`inherit`,id:`auth-device-scope-inherit`,"data-testid":`auth-device-scope-inherit-radio`}),(0,H.jsx)(D,{htmlFor:`auth-device-scope-inherit`,className:`font-normal`,children:(0,H.jsx)(r,{id:`auth.device.scopeMode.inherit`,message:`Inherit all my permissions`})})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(c,{value:`restrict`,id:`auth-device-scope-restrict`,"data-testid":`auth-device-scope-restrict-radio`}),(0,H.jsx)(D,{htmlFor:`auth-device-scope-restrict`,className:`font-normal`,children:(0,H.jsx)(r,{id:`auth.device.scopeMode.restrict`,message:`Restrict to specific capabilities`})})]})]})}),(0,H.jsx)(N,{})]})}),g===`restrict`?(0,H.jsx)(k,{control:h.control,name:`scopesText`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(j,{children:(0,H.jsx)(r,{id:`auth.device.scopes.label`,message:`Capabilities`})}),(0,H.jsx)(A,{children:(0,H.jsx)(l,{rows:4,placeholder:f(U.scopesPlaceholder),disabled:w,"data-testid":`auth-device-scopes-textarea`,className:`font-mono`,...e})}),(0,H.jsx)(N,{})]})}):null,p?(0,H.jsx)(I,{variant:`destructive`,"data-testid":`auth-device-error`,children:(0,H.jsx)(F,{children:f(p)})}):null,(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(o,{type:`button`,variant:`ghost`,disabled:w,onClick:d,"data-testid":`auth-device-cancel-button`,children:(0,H.jsx)(r,{id:`auth.device.cancel`,message:`Cancel`})}),(0,H.jsx)(o,{type:`button`,variant:`outline`,disabled:w,onClick:()=>v.mutate(),"data-testid":`auth-device-deny-button`,children:v.isPending?(0,H.jsx)(r,{id:`auth.device.deny.pending`,message:`Denying…`}):(0,H.jsx)(r,{id:`auth.device.deny.idle`,message:`Deny`})}),(0,H.jsx)(o,{type:`submit`,disabled:w,"data-testid":`auth-device-approve-button`,children:_.isPending?(0,H.jsx)(r,{id:`auth.device.approve.pending`,message:`Approving…`}):(0,H.jsx)(r,{id:`auth.device.approve.idle`,message:`Approve`})})]})]})})})]})}function X(e){let t=z(e);if(t===`NOT_FOUND`)return U.errLookupNotFound;if(t===`CONFLICT`){let t=R(e);if(t===`expired`)return U.errLookupExpired;if(t===`already_approved`)return U.errLookupAlreadyApproved;if(t===`already_denied`)return U.errLookupAlreadyDenied}return U.errLookupFallback}function Z(e){if(z(e)===`CONFLICT`){let t=R(e);if(t===`expired`)return U.errApproveExpired;if(t===`already_approved`)return U.errApproveAlreadyApproved;if(t===`already_denied`)return U.errApproveAlreadyDenied}return U.errApproveFallback}export{q as component};
|
|
1
|
+
import{i as e,t}from"./jsx-runtime-DUAcabCT.js";import{t as n}from"./react-DbyrFoBd.js";import{n as r}from"./dist-BL2bKHuR.js";import{t as i}from"./orpc-CmtRGLtZ.js";import{t as a}from"./useMutation-vgMtqBOX.js";import{t as o}from"./button-DG1Ca1S5.js";import{n as s,r as c,t as l}from"./textarea-iIsBg5jH.js";import{t as u}from"./use-label-CykSHq9A.js";import{D as d,d as f,h as p,l as m,v as h,w as g,y as _}from"./dist-ClOzYsk5.js";import{n as v}from"./vmessage-CRX68a8a.js";import{a as y,i as b,n as x,r as S,t as C}from"./card-L2-kK5VK.js";import{t as w}from"./device-vY_uxsCV.js";import{t as T}from"./input-xYuLUQID.js";import{a as E,c as D,f as O,h as k,i as A,n as j,o as M,s as N,t as P}from"./form-CY307HEl.js";import{n as F,t as I}from"./alert-cwX3fWUu.js";import{t as L}from"./valibot-CHirPb_E.js";import{n as R,t as z}from"./orpc-errors-DWk96ZMY.js";import{t as B}from"./scopes-C_7AiPdH.js";var V=e(n()),H=e(t()),U={userCodePlaceholder:{id:`auth.device.userCode.placeholder`},tokenNamePlaceholder:{id:`auth.device.tokenName.placeholder`},scopesPlaceholder:{id:`auth.device.scopes.placeholder`},defaultTokenName:{id:`auth.device.tokenName.default`},errLookupNotFound:{id:`auth.device.lookup.error.notFound`},errLookupExpired:{id:`auth.device.lookup.error.expired`},errLookupAlreadyApproved:{id:`auth.device.lookup.error.alreadyApproved`},errLookupAlreadyDenied:{id:`auth.device.lookup.error.alreadyDenied`},errLookupFallback:{id:`auth.device.lookup.error.fallback`},errApproveExpired:{id:`auth.device.approve.error.expired`},errApproveAlreadyApproved:{id:`auth.device.approve.error.alreadyApproved`},errApproveAlreadyDenied:{id:`auth.device.approve.error.alreadyDenied`},errApproveFallback:{id:`auth.device.approve.error.fallback`}},W=`access_denied`,G=p({userCode:_(g(),d(),m(32))}),K=p({tokenName:_(g(),d(),f(1,v({id:`auth.device.tokenName.required`})),m(64,v({id:`auth.device.tokenName.tooLong`}))),scopeMode:h([`inherit`,`restrict`]),scopesText:_(g(),m(4096))});function q(){let e=w.useSearch(),[t,n]=(0,V.useState)(()=>e.user_code?{kind:`approve`,userCode:e.user_code}:{kind:`lookup`}),[a,o]=(0,V.useState)(null);return(0,V.useEffect)(()=>{t.kind===`approve`&&i.auth.deviceFlow.lookup.call({userCode:t.userCode}).catch(e=>{o(X(e)),n({kind:`lookup`})})},[]),(0,H.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-4`,children:[(0,H.jsxs)(`header`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(`h1`,{className:`text-2xl font-semibold`,"data-testid":`auth-device-heading`,children:(0,H.jsx)(r,{id:`auth.device.title`,message:`Authorize CLI access`})}),(0,H.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:(0,H.jsx)(r,{id:`auth.device.description`,message:`A CLI is requesting an API token for your account. Confirm the code your CLI is showing matches the one below before approving.`})})]}),t.kind===`lookup`?(0,H.jsx)(J,{initialError:a,onValid:e=>{o(null),n({kind:`approve`,userCode:e})}}):null,t.kind===`approve`?(0,H.jsx)(Y,{userCode:t.userCode,onApproved:()=>n({kind:`approved`}),onDenied:()=>n({kind:`denied`}),onCancel:()=>n({kind:`lookup`})}):null,t.kind===`approved`?(0,H.jsx)(I,{"data-testid":`auth-device-approved-alert`,children:(0,H.jsx)(F,{children:(0,H.jsx)(r,{id:`auth.device.approved`,message:`Approved. Your CLI should pick up the token within a few seconds — you can close this tab.`})})}):null,t.kind===`denied`?(0,H.jsx)(I,{variant:`destructive`,"data-testid":`auth-device-denied-alert`,children:(0,H.jsx)(F,{children:(0,H.jsx)(r,{id:`auth.device.denied`,message:`Denied. The CLI will get a(n) <0>{accessDenied}</0> response and stop polling.`,values:{accessDenied:W},components:{0:(0,H.jsx)(`code`,{className:`font-mono text-xs`})},comment:`accessDenied: the literal OAuth error code string (e.g. 'access_denied') — do not translate`})})}):null]})}function J({initialError:e,onValid:t}){let n=u(),[s,c]=(0,V.useState)(e),l=O({resolver:L(G),defaultValues:{userCode:``},mode:`onSubmit`}),d=a({mutationFn:e=>i.auth.deviceFlow.lookup.call({userCode:e}),onMutate:()=>c(null),onSuccess:(e,n)=>t(n),onError:e=>{c(X(e))}});return(0,H.jsxs)(C,{children:[(0,H.jsxs)(b,{children:[(0,H.jsx)(y,{children:(0,H.jsx)(r,{id:`auth.device.lookup.title`,message:`Enter the code from your CLI`})}),(0,H.jsx)(S,{children:(0,H.jsx)(r,{id:`auth.device.lookup.description`,message:`The CLI shows an 8-character code split with a dash — "ABCD-EFGH". Letters and digits only, no zeros or ones.`})})]}),(0,H.jsx)(x,{children:(0,H.jsx)(P,{...l,children:(0,H.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:l.handleSubmit(e=>{d.mutate(e.userCode)}),children:[(0,H.jsx)(A,{control:l.control,name:`userCode`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(M,{children:(0,H.jsx)(r,{id:`auth.device.lookup.userCode.label`,message:`User code`})}),(0,H.jsx)(j,{children:(0,H.jsx)(T,{autoFocus:!0,autoComplete:`off`,placeholder:n(U.userCodePlaceholder),disabled:d.isPending,"data-testid":`auth-device-usercode-input`,...e})}),(0,H.jsx)(N,{})]})}),s?(0,H.jsx)(I,{variant:`destructive`,"data-testid":`auth-device-lookup-error`,children:(0,H.jsx)(F,{children:n(s)})}):null,(0,H.jsx)(`div`,{className:`flex justify-end`,children:(0,H.jsx)(o,{type:`submit`,disabled:d.isPending,"data-testid":`auth-device-lookup-submit`,children:d.isPending?(0,H.jsx)(r,{id:`auth.device.lookup.submit.pending`,message:`Checking…`}):(0,H.jsx)(r,{id:`auth.device.lookup.submit.idle`,message:`Continue`})})})]})})})]})}function Y({userCode:e,onApproved:t,onDenied:n,onCancel:d}){let f=u(),[p,m]=(0,V.useState)(null),h=O({resolver:L(K),defaultValues:{tokenName:f(U.defaultTokenName),scopeMode:`inherit`,scopesText:``},mode:`onBlur`}),g=k({control:h.control,name:`scopeMode`}),_=a({mutationFn:t=>i.auth.deviceFlow.approve.call({userCode:e,tokenName:t.tokenName,scopes:t.scopes===null?null:[...t.scopes]}),onMutate:()=>m(null),onSuccess:()=>t(),onError:e=>{m(Z(e))}}),v=a({mutationFn:()=>i.auth.deviceFlow.deny.call({userCode:e}),onMutate:()=>m(null),onSuccess:()=>n(),onError:e=>{m(Z(e))}}),w=_.isPending||v.isPending;return(0,H.jsxs)(C,{children:[(0,H.jsxs)(b,{children:[(0,H.jsx)(y,{children:(0,H.jsx)(r,{id:`auth.device.approve.confirmTitle`,message:`Confirm "{userCode}"`,values:{userCode:e},comment:`userCode: the short device-flow code the CLI displayed (e.g. 'WDJB-MJHT'); pass through verbatim`})}),(0,H.jsx)(S,{children:(0,H.jsx)(r,{id:`auth.device.approve.description`,message:`A new API token will be minted for your account and handed to the CLI. Name it so you can find it later under your profile, and optionally restrict what it can do.`})})]}),(0,H.jsx)(x,{children:(0,H.jsx)(P,{...h,children:(0,H.jsxs)(`form`,{className:`flex flex-col gap-4`,onSubmit:h.handleSubmit(e=>{let t=e.scopeMode===`inherit`?null:B(e.scopesText);_.mutate({tokenName:e.tokenName,scopes:t})}),children:[(0,H.jsx)(A,{control:h.control,name:`tokenName`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(M,{children:(0,H.jsx)(r,{id:`auth.device.tokenName.label`,message:`Token name`})}),(0,H.jsx)(j,{children:(0,H.jsx)(T,{placeholder:f(U.tokenNamePlaceholder),disabled:w,"data-testid":`auth-device-tokenname-input`,...e})}),(0,H.jsx)(N,{})]})}),(0,H.jsx)(A,{control:h.control,name:`scopeMode`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(M,{id:`auth-device-scope-label`,children:(0,H.jsx)(r,{id:`auth.device.scopeMode.label`,message:`Permissions`})}),(0,H.jsx)(j,{children:(0,H.jsxs)(s,{name:e.name,value:e.value,onValueChange:e.onChange,disabled:w,"aria-labelledby":`auth-device-scope-label`,className:`gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(c,{value:`inherit`,id:`auth-device-scope-inherit`,"data-testid":`auth-device-scope-inherit-radio`}),(0,H.jsx)(D,{htmlFor:`auth-device-scope-inherit`,className:`font-normal`,children:(0,H.jsx)(r,{id:`auth.device.scopeMode.inherit`,message:`Inherit all my permissions`})})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(c,{value:`restrict`,id:`auth-device-scope-restrict`,"data-testid":`auth-device-scope-restrict-radio`}),(0,H.jsx)(D,{htmlFor:`auth-device-scope-restrict`,className:`font-normal`,children:(0,H.jsx)(r,{id:`auth.device.scopeMode.restrict`,message:`Restrict to specific capabilities`})})]})]})}),(0,H.jsx)(N,{})]})}),g===`restrict`?(0,H.jsx)(A,{control:h.control,name:`scopesText`,render:({field:e})=>(0,H.jsxs)(E,{children:[(0,H.jsx)(M,{children:(0,H.jsx)(r,{id:`auth.device.scopes.label`,message:`Capabilities`})}),(0,H.jsx)(j,{children:(0,H.jsx)(l,{rows:4,placeholder:f(U.scopesPlaceholder),disabled:w,"data-testid":`auth-device-scopes-textarea`,className:`font-mono`,...e})}),(0,H.jsx)(N,{})]})}):null,p?(0,H.jsx)(I,{variant:`destructive`,"data-testid":`auth-device-error`,children:(0,H.jsx)(F,{children:f(p)})}):null,(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(o,{type:`button`,variant:`ghost`,disabled:w,onClick:d,"data-testid":`auth-device-cancel-button`,children:(0,H.jsx)(r,{id:`auth.device.cancel`,message:`Cancel`})}),(0,H.jsx)(o,{type:`button`,variant:`outline`,disabled:w,onClick:()=>v.mutate(),"data-testid":`auth-device-deny-button`,children:v.isPending?(0,H.jsx)(r,{id:`auth.device.deny.pending`,message:`Denying…`}):(0,H.jsx)(r,{id:`auth.device.deny.idle`,message:`Deny`})}),(0,H.jsx)(o,{type:`submit`,disabled:w,"data-testid":`auth-device-approve-button`,children:_.isPending?(0,H.jsx)(r,{id:`auth.device.approve.pending`,message:`Approving…`}):(0,H.jsx)(r,{id:`auth.device.approve.idle`,message:`Approve`})})]})]})})})]})}function X(e){let t=z(e);if(t===`NOT_FOUND`)return U.errLookupNotFound;if(t===`CONFLICT`){let t=R(e);if(t===`expired`)return U.errLookupExpired;if(t===`already_approved`)return U.errLookupAlreadyApproved;if(t===`already_denied`)return U.errLookupAlreadyDenied}return U.errLookupFallback}function Z(e){if(z(e)===`CONFLICT`){let t=R(e);if(t===`expired`)return U.errApproveExpired;if(t===`already_approved`)return U.errApproveAlreadyApproved;if(t===`already_denied`)return U.errApproveAlreadyDenied}return U.errApproveFallback}export{q as component};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./device-
|
|
2
|
-
import{T as e,a as t,t as n}from"./lazyRouteComponent-CQbKoKTD.js";import{D as r,g as i,h as a,l as o,w as s,y as c}from"./dist-ClOzYsk5.js";var l=()=>e(()=>import(`./device-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./device-CxnTgMZ6.js","./jsx-runtime-DUAcabCT.js","./react-DbyrFoBd.js","./dist-BL2bKHuR.js","./orpc-CmtRGLtZ.js","./useMutation-vgMtqBOX.js","./button-DG1Ca1S5.js","./dist-Dgy1ZZMQ.js","./utils-DKOQrNEG.js","./dist-B66OmIyr.js","./textarea-iIsBg5jH.js","./dist-hUh7dFZi.js","./dist-C4yHjFuP.js","./react-dom-i-Mcm3wj.js","./dist-vYFq1OyT.js","./dist-BP9v0gZx.js","./dist-DWZq3eNY.js","./createLucideIcon-C0O-yxZG.js","./use-label-CykSHq9A.js","./dist-ClOzYsk5.js","./vmessage-CRX68a8a.js","./card-L2-kK5VK.js","./input-xYuLUQID.js","./form-CY307HEl.js","./alert-cwX3fWUu.js","./valibot-CHirPb_E.js","./orpc-errors-DWk96ZMY.js","./scopes-C_7AiPdH.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{T as e,a as t,t as n}from"./lazyRouteComponent-CQbKoKTD.js";import{D as r,g as i,h as a,l as o,w as s,y as c}from"./dist-ClOzYsk5.js";var l=()=>e(()=>import(`./device-CxnTgMZ6.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url),u=a({user_code:i(c(s(),r(),o(32)))}),d=t(`/_authenticated/auth/device`)({validateSearch:u,component:n(l,`component`)});export{d as t};
|