@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
|
@@ -0,0 +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,u as a}from"./orpc-CmtRGLtZ.js";import{t as o}from"./useQuery-QAYxQfCx.js";import{t as s}from"./useMutation-vgMtqBOX.js";import{t as c}from"./useSuspenseQuery-9GLTSYHf.js";import{o as l,t as u}from"./link-CI3qhqYu.js";import{n as d,t as f}from"./button-DG1Ca1S5.js";import{t as p}from"./arrow-left-CWzmtp8T.js";import{B as m,F as h,I as g,L as _,P as v,R as y,V as b,z as x}from"./utils-RSNxndzY.js";import{t as S}from"./use-label-CykSHq9A.js";import{S as C,m as w}from"./manifest-2YUNz_ML.js";import{t as T}from"./caps-SYhabp1B.js";import{n as E}from"./type-labels-DEpt0nSb.js";import{a as D,i as O,n as k,r as A,t as j}from"./card-L2-kK5VK.js";import{t as M}from"./-constants-GNK7OFwu.js";import{t as N}from"./edit-DE8yiDG7.js";import{t as P}from"./edit-Cc5hxhM7.js";import{n as F,t as I}from"./alert-cwX3fWUu.js";import{i as L,n as R}from"./tree-BUpunTXw.js";import{n as z}from"./meta-field-errors-Za3ulViR.js";import{n as B,t as V}from"./-errors-RB-rEi-I.js";var H=e(n()),U=e(t());function W(){let{id:e}=P.useParams(),{user:t,taxonomy:n}=P.useRouteContext(),r=T(t.capabilities,`term:${n.name}:edit`),a=T(t.capabilities,`term:${n.name}:delete`),s=n.isHierarchical===!0,{data:l}=c(i.term.get.queryOptions({input:{id:e}})),u=o({...i.term.list.queryOptions({input:{taxonomy:n.name,limit:200}}),enabled:s}).data??[],d=s?new Set([l.id,...R(u,l.id)]):new Set;return(0,U.jsx)(G,{taxonomy:n,term:l,isHierarchical:s,parentOptions:s?L(u,d):[],canEdit:r,canDelete:a},l.id)}function G({taxonomy:e,term:t,isHierarchical:n,parentOptions:r,canEdit:o,canDelete:c}){let d=l(),f=a(),m=S(),h=V(),[g,_]=(0,H.useState)(null),[v,y]=(0,H.useState)(null),{user:b}=P.useRouteContext(),x=w(e.name,b.capabilities),T=s({mutationFn:e=>i.term.update.call({id:t.id,name:e.name,slug:e.slug.length>0?e.slug:void 0,description:e.description.length>0?e.description:null,parentId:e.parentId,meta:x.length>0?e.meta:void 0}),onMutate:()=>{_(null),y(null)},onSuccess:async()=>{await Promise.all([f.invalidateQueries({queryKey:i.term.get.queryOptions({input:{id:t.id}}).queryKey}),f.invalidateQueries({queryKey:i.term.list.key({input:{taxonomy:e.name}})})])},onError:e=>{let t=z(e);if(t){y(t);return}_(h(e,m(N.saveFallback)))}});return(0,U.jsxs)(`div`,{className:`mx-auto flex w-full max-w-xl flex-col gap-4`,children:[(0,U.jsxs)(u,{to:`/terms/$name`,params:{name:e.name},search:M,className:`text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-sm`,"data-testid":`term-edit-back-link`,children:[(0,U.jsx)(p,{className:`size-4 rtl:rotate-180`}),m(E(e,`allItems`))]}),(0,U.jsxs)(j,{children:[(0,U.jsxs)(O,{children:[(0,U.jsx)(D,{children:(0,U.jsx)(`h1`,{"data-testid":`term-edit-heading`,children:m(E(e,`editItem`))})}),(0,U.jsxs)(A,{children:[t.name,n?m(N.descendantsHint):``]})]}),(0,U.jsx)(k,{children:(0,U.jsx)(B,{initialValues:{name:t.name,slug:t.slug,description:t.description??``,parentId:t.parentId,meta:C(x,t.meta)},isHierarchical:n,parentOptions:r,isSubmitting:T.isPending||!o,serverError:g,serverFieldErrors:v,submitLabel:m(N.submit),metaBoxes:x,onSubmit:e=>{T.mutate(e)},onCancel:()=>{d({to:`/terms/$name`,params:{name:e.name},search:M})}})})]}),c?(0,U.jsx)(K,{taxonomyName:e.name,termId:t.id,termName:t.name}):null]})}function K({taxonomyName:e,termId:t,termName:n}){let o=l(),c=a(),u=S(),p=V(),[C,w]=(0,H.useState)(!1),[T,E]=(0,H.useState)(null),P=s({mutationFn:()=>i.term.delete.call({id:t}),onMutate:()=>{E(null)},onSuccess:async()=>{await c.invalidateQueries({queryKey:i.term.list.key({input:{taxonomy:e}})}),o({to:`/terms/$name`,params:{name:e},search:M})},onError:e=>{E(p(e,u(N.deleteFallback)))}});return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(j,{className:`border-destructive/50`,children:[(0,U.jsxs)(O,{children:[(0,U.jsx)(D,{className:`text-destructive`,children:(0,U.jsx)(r,{id:`terms.edit.delete.cardTitle`,message:`Delete term`})}),(0,U.jsx)(A,{children:(0,U.jsx)(r,{id:`terms.edit.delete.cardDescription`,message:`Removes this term and unassigns it from any entries that use it. Descendants are promoted to root level (their entries keep their other term assignments).`})})]}),(0,U.jsx)(k,{children:(0,U.jsx)(f,{variant:`destructive`,onClick:()=>{w(!0)},"data-testid":`term-edit-delete-button`,children:(0,U.jsx)(r,{id:`terms.edit.delete.button`,message:`Delete term`})})})]}),(0,U.jsx)(v,{open:C,onOpenChange:e=>{e||(w(!1),E(null))},children:(0,U.jsxs)(_,{children:[(0,U.jsxs)(m,{children:[(0,U.jsx)(b,{children:(0,U.jsx)(r,{id:`terms.edit.delete.dialogTitle`,message:`Delete {termName}?`,values:{termName:(0,U.jsx)(`bdi`,{children:n})},comment:`termName: the taxonomy term being deleted`})}),(0,U.jsx)(y,{children:(0,U.jsx)(r,{id:`terms.edit.delete.dialogDescription`,message:`Entry assignments to this term are removed. If the term has children, they become root-level automatically.`})})]}),T?(0,U.jsx)(I,{variant:`destructive`,"data-testid":`term-delete-error`,children:(0,U.jsx)(F,{children:T})}):null,(0,U.jsxs)(x,{children:[(0,U.jsx)(g,{disabled:P.isPending,children:(0,U.jsx)(r,{id:`terms.edit.delete.cancel`,message:`Cancel`})}),(0,U.jsx)(h,{"data-testid":`term-delete-confirm-button`,disabled:P.isPending,className:d({variant:`destructive`}),onClick:e=>{e.preventDefault(),P.mutate()},children:P.isPending?(0,U.jsx)(r,{id:`terms.edit.delete.deleting`,message:`Deleting…`}):(0,U.jsx)(r,{id:`terms.edit.delete.confirm`,message:`Delete forever`})})]})]})})]})}export{W as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=JSON.parse(`{"admin.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"allowedDomains.add.defaultRole.label":["Default role"],"allowedDomains.add.description":["Use the bare domain — no protocol, no path."],"allowedDomains.add.domain.invalid":["Enter a valid hostname (e.g. example.com)."],"allowedDomains.add.domain.label":["Domain"],"allowedDomains.add.placeholder":["example.com"],"allowedDomains.add.submit.idle":["Add"],"allowedDomains.add.submit.pending":["Adding…"],"allowedDomains.add.title":["Add domain"],"allowedDomains.description":["Email domains permitted to sign up via OAuth. New OAuth accounts are created with the role set here. Disabled rows reject signup but preserve their role mapping."],"allowedDomains.error.domainExists":["That domain is already configured."],"allowedDomains.error.fallback":["Couldn't save the domain. Try again."],"allowedDomains.list.empty":["No domains configured. OAuth signup is closed until at least one enabled domain is added."],"allowedDomains.list.loading":["Loading…"],"allowedDomains.list.title":["Configured domains"],"allowedDomains.row.deleteAria":["Delete ",["domain"]],"allowedDomains.row.deleteCancel":["Cancel"],"allowedDomains.row.deleteConfirm":["Confirm delete"],"allowedDomains.row.disabled":["Disabled"],"allowedDomains.row.enabled":["Enabled"],"allowedDomains.title":["Allowed domains"],"apiTokens.col.actions":["Actions"],"apiTokens.col.expires":["Expires"],"apiTokens.col.lastUsed":["Last used"],"apiTokens.col.name":["Name"],"apiTokens.col.prefix":["Prefix"],"apiTokens.col.scopes":["Scopes"],"apiTokens.create.capabilities":["Capabilities"],"apiTokens.create.capabilities.help":["One capability per line. The token can never exceed the caps your role grants — this is an additional narrowing."],"apiTokens.create.capabilities.placeholder":["entry:post:read\\nentry:post:edit_own"],"apiTokens.create.expires":["Expires"],"apiTokens.create.name":["Name"],"apiTokens.create.namePlaceholder":["github-actions / claude-code / mcp-prod"],"apiTokens.create.nameRequired":["Name is required."],"apiTokens.create.nameTooLong":["Name must be ≤ 64 characters."],"apiTokens.create.permissions":["Permissions"],"apiTokens.create.scope.inherit":["Inherit all your permissions"],"apiTokens.create.scope.restrict":["Restrict to specific capabilities"],"apiTokens.create.submit.idle":["Mint token"],"apiTokens.create.submit.pending":["Minting…"],"apiTokens.description.admin":["Tokens minted by this user. You can revoke any of them — minting requires the owner's authenticated browser session."],"apiTokens.description.self":["Personal access tokens for CLIs, MCP servers, CI bots, or any other non-browser client. The full secret is shown once at mint time."],"apiTokens.empty.description.admin":["This user hasn't minted any API tokens."],"apiTokens.empty.description.self":["Mint one above for your CLI / MCP server / CI bot."],"apiTokens.empty.title":["No tokens yet"],"apiTokens.expiry.30":["30 days"],"apiTokens.expiry.7":["7 days"],"apiTokens.expiry.90":["90 days"],"apiTokens.expiry.never":["Never"],"apiTokens.loading":["Loading tokens…"],"apiTokens.mint.fallback":["Couldn't mint token. Try again."],"apiTokens.never":["Never"],"apiTokens.revoke.button":["Revoke"],"apiTokens.revoke.cancel":["Cancel"],"apiTokens.revoke.confirm":["Revoke"],"apiTokens.revoke.description":["The token stops working immediately. Any client using it will start getting 401s on the next request."],"apiTokens.revoke.fallback":["Couldn't revoke. Try again."],"apiTokens.revoke.pending":["Revoking…"],"apiTokens.revoke.title":["Revoke \\"",["name"],"\\"?"],"apiTokens.scope.empty":["No caps"],"apiTokens.scope.inheritRole":["Inherit role"],"apiTokens.secret.copyAria":["Copy token"],"apiTokens.secret.description":["Copy the secret now. We won't show it again — losing it means revoking and re-minting."],"apiTokens.secret.done":["Done"],"apiTokens.secret.title":["Token \\"",["name"],"\\" minted"],"apiTokens.title":["API tokens"],"auth.acceptInvite.description":["Set up a passkey to finish creating your account. Your browser or device will guide you through the prompt."],"auth.acceptInvite.name":["Name"],"auth.acceptInvite.submit.idle":["Create passkey"],"auth.acceptInvite.submit.pending":["Setting up…"],"auth.acceptInvite.title":["Accept your invite"],"auth.bootstrap.description":["Set up your site — this email becomes the admin account."],"auth.bootstrap.email":["Email"],"auth.bootstrap.name":["Name"],"auth.bootstrap.submit.idle":["Create account with passkey"],"auth.bootstrap.submit.pending":["Creating account…"],"auth.bootstrap.title":["Create admin account"],"auth.device.approve.confirmTitle":["Confirm \\"",["userCode"],"\\""],"auth.device.approve.description":["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."],"auth.device.approve.error.alreadyApproved":["This code was already approved on another tab."],"auth.device.approve.error.alreadyDenied":["This code was already denied."],"auth.device.approve.error.expired":["This code expired before you could finish — re-run your CLI."],"auth.device.approve.error.fallback":["Couldn't complete the request. Try again."],"auth.device.approve.idle":["Approve"],"auth.device.approve.pending":["Approving…"],"auth.device.approved":["Approved. Your CLI should pick up the token within a few seconds — you can close this tab."],"auth.device.cancel":["Cancel"],"auth.device.denied":["Denied. The CLI will get an access_denied response and stop polling."],"auth.device.deny.idle":["Deny"],"auth.device.deny.pending":["Denying…"],"auth.device.description":["A CLI is requesting an API token for your account. Confirm the code your CLI is showing matches the one below before approving."],"auth.device.lookup.description":["The CLI shows an 8-character code split with a dash — \\"ABCD-EFGH\\". Letters and digits only, no zeros or ones."],"auth.device.lookup.error.alreadyApproved":["This code has already been approved. Re-run your CLI if it didn't pick the token up."],"auth.device.lookup.error.alreadyDenied":["This code has already been denied."],"auth.device.lookup.error.expired":["This code has expired. Re-run your CLI to get a new one."],"auth.device.lookup.error.fallback":["Couldn't look up that code. Try again."],"auth.device.lookup.error.notFound":["Code not found. Check it matches what your CLI printed."],"auth.device.lookup.submit.idle":["Continue"],"auth.device.lookup.submit.pending":["Checking…"],"auth.device.lookup.title":["Enter the code from your CLI"],"auth.device.lookup.userCode.label":["User code"],"auth.device.scopeMode.inherit":["Inherit all my permissions"],"auth.device.scopeMode.label":["Permissions"],"auth.device.scopeMode.restrict":["Restrict to specific capabilities"],"auth.device.scopes.label":["Capabilities"],"auth.device.scopes.placeholder":["entry:post:read\\nentry:post:edit_own"],"auth.device.title":["Authorize CLI access"],"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 is required."],"auth.device.tokenName.tooLong":["Name must be ≤ 64 characters."],"auth.device.userCode.placeholder":["ABCD-EFGH"],"blockActions.copyJson":["Copy JSON"],"blockActions.delete":["Delete"],"blockActions.duplicate":["Duplicate"],"blockActions.empty":["Select a block to see actions."],"blockActions.transformTo":["Transform to"],"blockScopePicker.cancel":["Cancel"],"blockScopePicker.description":["Pick a layout to insert, or cancel to start from a blank ",["blockTitle"],"."],"blockScopePicker.title":["Choose a ",["blockTitle"]," layout"],"breadcrumb.addNew":["Add new"],"breadcrumb.admin":["Admin"],"breadcrumb.create":["Create"],"breadcrumb.createTerm":["Create ",["singular"]],"breadcrumb.dashboard":["Dashboard"],"breadcrumb.edit":["Edit"],"breadcrumb.editTerm":["Edit ",["singular"]],"breadcrumb.editUser":["Edit user"],"breadcrumb.entries":["Entries"],"breadcrumb.profile":["Profile"],"breadcrumb.settings":["Settings"],"breadcrumb.terms":["Terms"],"breadcrumb.users":["Users"],"core.adminNav.content":["Entries"],"core.adminNav.item.allowedDomains":["Allowed domains"],"core.adminNav.item.dashboard":["Dashboard"],"core.adminNav.item.mailer":["Mailer"],"core.adminNav.item.settings":["Settings"],"core.adminNav.item.users":["Users"],"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":["Management"],"core.adminNav.overview":["Overview"],"core.adminNav.termTaxonomies":["Taxonomies"],"core.settings.general.description":["Core site identity and metadata."],"core.settings.general.label":["General"],"core.settings.site.default_og_image":["Default social image URL"],"core.settings.site.description":["Public-facing name, tagline, and social links."],"core.settings.site.github":["GitHub URL"],"core.settings.site.label":["Site identity"],"core.settings.site.mastodon":["Mastodon URL"],"core.settings.site.public":["Allow search engines to index this site"],"core.settings.site.tagline":["Tagline"],"core.settings.site.title":["Site title"],"core.settings.site.twitter":["X (Twitter) URL"],"dashboard.count.draft":[["count","plural",{"one":["#"," draft"],"other":["#"," drafts"]}]],"dashboard.count.published":[["count","plural",{"one":["#"," published"],"other":["#"," published"]}]],"dashboard.empty.description":["Add a plugin that registers a post type (e.g. <0>@plumix/plugin-blog</0>) to see it here."],"dashboard.empty.title":["No content types yet"],"dashboard.recent.empty":["Nothing yet."],"dashboard.recent.title":["Recent activity"],"dashboard.tagline":["What would you like to work on today?"],"dashboard.tile.browse":["Browse ",["labelLower"]],"dashboard.tile.browse.generic":["Browse"],"dashboard.tile.description":["Write, edit, and publish ",["labelLower"],"."],"dashboard.tile.description.generic":["Write, edit, and publish."],"dashboard.welcome":["Welcome, ",["greeting"]],"dataTable.emptyState":["No results."],"dataTable.loading":["Loading"],"editor.autosave.error":["Failed to save"],"editor.autosave.saved":["Saved"],"editor.autosave.saving":["Saving..."],"editor.coAuthorIndicator.activeAriaLabel":["Active co-authors"],"editor.coAuthorIndicator.presenceAriaLabel":[["display"]," · last seen ",["lastSeen"]],"editor.copyPattern.untitled":["Untitled"],"editor.device.desktop":["Desktop"],"editor.device.mobile":["Mobile"],"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":["Creating…"],"editor.entry.create.retry":["Try again"],"editor.entry.create.untitled":["Untitled"],"editor.entry.edit.headline":["Edit ",["singular"]],"editor.entry.edit.headline.generic":["Edit"],"editor.entry.edit.loadFailed":["Couldn't load this entry."],"editor.entry.edit.loadFailedTitle":["Couldn't load this entry"],"editor.entry.edit.loading":["Loading entry…"],"editor.entry.edit.restore.conflict":["Another editor changed this entry. Reload and try again."],"editor.entry.edit.saveFailed":["Couldn't save."],"editor.entry.edit.stale.loading":["Loading…"],"editor.entry.edit.toast.discardFailed":["Couldn't discard the draft — try again."],"editor.entry.edit.toast.draftDiscarded":["Draft discarded."],"editor.entry.edit.toast.publishFailed":["Couldn't publish — try again."],"editor.entry.edit.toast.published":["Published."],"editor.headingAudit.empty":["No heading-structure issues detected."],"editor.headingAudit.emptyHeading":["Empty heading. Add text or remove the block."],"editor.headingAudit.multipleH1":["Multiple <h1> on the page (",["count"]," found). Keep only one top-level heading."],"editor.headingAudit.skippedLevel":["Heading jumps from h",["from"]," to h",["to"],". Insert an h",["between"]," between them."],"editor.headingAudit.warningPrefix":["Warning:"],"editor.layout.canvas.copyAsPatternSource":["Copy as pattern source"],"editor.layout.canvas.pickStarter":["Pick a starter…"],"editor.layout.canvas.zoomIn":["Zoom in"],"editor.layout.canvas.zoomOut":["Zoom out"],"editor.layout.characterCount":[["characters","plural",{"one":["#"," character"],"other":["#"," characters"]}]],"editor.layout.copy.copied":["Copied to clipboard"],"editor.layout.copy.failed":["Couldn't copy to clipboard"],"editor.layout.copyAsPattern.untitledFallback":["Untitled"],"editor.layout.draft.discard":["Discard"],"editor.layout.draft.discarding":["Discarding…"],"editor.layout.draft.publish":["Publish"],"editor.layout.draft.publishing":["Publishing…"],"editor.layout.draft.save":["Save Draft"],"editor.layout.draft.saving":["Saving…"],"editor.layout.draftBanner.body":["Click Publish to push them live, or Discard to revert."],"editor.layout.draftBanner.title":["You have unpublished draft changes."],"editor.layout.header.backToList":["Back to list"],"editor.layout.header.titlePlaceholder":["Untitled"],"editor.layout.mobile.blocksSheetDescription":["Insertable blocks, outline, and the heading audit for this entry."],"editor.layout.mobile.blocksSheetTitle":["Blocks"],"editor.layout.mobile.blocksTrigger":["Blocks"],"editor.layout.mobile.inspectorSheetDescription":["Block actions, fields, and style controls for the selected block."],"editor.layout.mobile.inspectorSheetTitle":["Inspector"],"editor.layout.mobile.inspectorTrigger":["Inspector"],"editor.layout.publish":["Publish"],"editor.layout.slashMenu.description":["Search blocks and patterns by title or keyword and press Enter to insert."],"editor.layout.slashMenu.title":["Insert block or pattern"],"editor.layout.tab.audit":["Audit"],"editor.layout.tab.block":["Block"],"editor.layout.tab.blocks":["Blocks"],"editor.layout.tab.document":["Document"],"editor.layout.tab.outline":["Outline"],"editor.layout.tab.style":["Style"],"editor.layout.titleAriaLabel":["Entry title"],"editor.layout.wordCount":[["words","plural",{"one":["#"," word"],"other":["#"," words"]}]],"editor.loading":["Opening the editor…"],"editor.patternRef.detach":["Detach"],"editor.patternRef.openSource":["Open source"],"editor.patternRef.unresolved":["Pattern not registered: <code>",["slug"],"</code>"],"editor.plainForm.publish":["Publish"],"editor.plainForm.save":["Save"],"editor.plainForm.status.error":["Failed to save"],"editor.plainForm.status.saved":["Saved"],"editor.plainForm.status.saving":["Saving..."],"editor.plainForm.titleAriaLabel":["Entry title"],"editor.plainForm.titlePlaceholder":["Untitled"],"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":["Preview link copied to clipboard"],"editor.previewLink.copy":["Copy preview link"],"editor.previewLink.failed":["Couldn't create a preview link"],"editor.revision.conflict":["This entry changed since the preview loaded — reload and retry."],"editor.revisions.diff.empty":["No changes."],"editor.revisions.diff.field.excerpt":["Excerpt"],"editor.revisions.diff.field.slug":["Slug"],"editor.revisions.diff.field.title":["Title"],"editor.revisions.diff.tab.json":["Raw JSON"],"editor.revisions.diff.tab.visual":["Visual"],"editor.revisions.diffDialog.description":["Side-by-side: this revision (left) vs. the current entry (right)."],"editor.revisions.diffDialog.pane.current":["Current"],"editor.revisions.diffDialog.pane.error":["Failed to load snapshot."],"editor.revisions.diffDialog.pane.thisRevision":["This revision"],"editor.revisions.diffDialog.title":["Revision JSON diff"],"editor.revisions.preview.backToLive":["← Back to live"],"editor.revisions.preview.restore":["Restore this revision"],"editor.revisions.preview.restoring":["Restoring…"],"editor.revisions.preview.subtitle":["from ",["when"]," by ",["author"]],"editor.revisions.preview.title":["Previewing revision"],"editor.revisions.sheet.autosavesEmpty":["Autosaves will appear here once drafts-of-published lands."],"editor.revisions.sheet.commentCancel":["Cancel"],"editor.revisions.sheet.commentPlaceholder":["Describe this revision…"],"editor.revisions.sheet.commentSave":["Save"],"editor.revisions.sheet.commentSaving":["…"],"editor.revisions.sheet.description":["Every save creates a new revision. Newest first."],"editor.revisions.sheet.diffAriaLabel":["View JSON diff"],"editor.revisions.sheet.empty":["No revisions yet."],"editor.revisions.sheet.error":["Failed to load revisions."],"editor.revisions.sheet.loadMore":["Load more"],"editor.revisions.sheet.loadingAria":["Loading revisions"],"editor.revisions.sheet.loadingMore":["Loading…"],"editor.revisions.sheet.tab.all":["All"],"editor.revisions.sheet.tab.autosaves":["Autosaves"],"editor.revisions.sheet.tab.publishes":["Publishes"],"editor.revisions.sheet.title":["Revisions"],"editor.revisions.sheet.trigger":["Revisions"],"editor.revisions.sheet.unknownAuthor":["Unknown"],"editor.stale.loading":["Loading…"],"editor.staleDraft.compare":["Compare"],"editor.staleDraft.description":["Someone else published changes to this entry while you had pending edits. Pick which version to keep before continuing."],"editor.staleDraft.discarding":["Discarding…"],"editor.staleDraft.hideComparison":["Hide comparison"],"editor.staleDraft.liveNow":["Live now"],"editor.staleDraft.title":["Your draft is out of date"],"editor.staleDraft.useMine":["Use mine"],"editor.staleDraft.useTheirs":["Use theirs"],"editor.staleDraft.yourDraft":["Your draft"],"editor.styleTab.activeBucket":["Editing for: ",["device"]],"editor.styleTab.empty":["Select a block to style."],"editor.styleTab.section.background":["Background"],"editor.styleTab.section.fontSize":["Font size"],"editor.styleTab.section.padding":["Padding"],"editor.styleTab.section.textColor":["Text color"],"editor.styleTab.select.none":["None"],"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":["The account this confirmation belongs to is disabled."],"emailChange.error.emailTaken":["Someone else claimed that email between the request and your click. Request a new change to a different address."],"emailChange.error.fallback":["Couldn't confirm the email change. Try again."],"emailChange.error.missingToken":["That confirmation link is missing its token. Request a new email change."],"emailChange.error.tokenExpired":["That confirmation link expired. Request a new email change."],"emailChange.error.tokenInvalid":["That confirmation link isn't valid. It may have already been used."],"emailChange.error.userNotFound":["The account this confirmation belongs to has been removed."],"entries.list.authorFilter.all":["All authors"],"entries.list.authorFilter.mine":["Mine"],"entries.list.bulk.cancel":["Cancel"],"entries.list.bulk.confirm":["Confirm"],"entries.list.bulk.delete":["Delete permanently"],"entries.list.bulk.deleteBody":["This permanently deletes the selected entries and their revisions. It cannot be undone."],"entries.list.bulk.deleteTitle":[["count","plural",{"one":["Delete ","#"," entry permanently?"],"other":["Delete ","#"," entries permanently?"]}]],"entries.list.bulk.restore":["Restore"],"entries.list.bulk.selected":[["count","plural",{"one":["#"," entry selected"],"other":["#"," entries selected"]}]],"entries.list.bulk.toastDeleted":[["count","plural",{"one":["Deleted ","#"," entry."],"other":["Deleted ","#"," entries."]}]],"entries.list.bulk.toastFailed":["That didn't work — try again."],"entries.list.bulk.toastRestored":[["count","plural",{"one":["Restored ","#"," entry."],"other":["Restored ","#"," entries."]}]],"entries.list.bulk.toastTrashed":[["count","plural",{"one":["Moved ","#"," entry to trash."],"other":["Moved ","#"," entries to trash."]}]],"entries.list.bulk.trash":["Move to trash"],"entries.list.bulk.trashTitle":[["count","plural",{"one":["Move ","#"," entry to trash?"],"other":["Move ","#"," entries to trash?"]}]],"entries.list.column.status":["Status"],"entries.list.column.title":["Title"],"entries.list.column.updated":["Updated"],"entries.list.deleteDialog.cancel":["Cancel"],"entries.list.deleteDialog.confirm":["Delete permanently"],"entries.list.deleteDialog.deleting":["Deleting…"],"entries.list.deleteDialog.description":["This permanently deletes the entry and its revisions. It cannot be undone."],"entries.list.deleteDialog.title":["Delete permanently?"],"entries.list.empty.cta":["New ",["singularLower"]],"entries.list.empty.description":["Create one to see it here."],"entries.list.empty.title":["No ",["pluralLower"]," yet"],"entries.list.filterAuthorAria":["Filter by author"],"entries.list.filterStatusAria":["Filter by status"],"entries.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"entries.list.loadingLabel":["Loading ",["pluralLower"]],"entries.list.newButton":["New ",["singularLower"]],"entries.list.noTitle":["(no title)"],"entries.list.row.deletePermanently":["Delete permanently"],"entries.list.row.duplicate":["Duplicate"],"entries.list.row.duplicating":["Duplicating…"],"entries.list.row.edit":["Edit"],"entries.list.row.restore":["Restore"],"entries.list.row.restoring":["Restoring…"],"entries.list.row.trash":["Trash"],"entries.list.row.trashing":["Trashing…"],"entries.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"entries.list.selectAllAria":["Select all entries on this page"],"entries.list.selectRowAria":["Select entry"],"entries.list.sortAria":["Sort by ",["label"]," (",["direction"],")"],"entries.list.statusFilter.all":["All"],"entries.list.statusFilter.draft":["Draft"],"entries.list.statusFilter.published":["Published"],"entries.list.statusFilter.scheduled":["Scheduled"],"entries.list.statusFilter.trash":["Trash"],"entries.list.taxonomyFilter.all":["All ",["pluralLower"]],"entries.list.taxonomyFilter.empty":["No ",["pluralLower"]," match."],"entries.list.taxonomyFilter.search":["Search ",["pluralLower"],"…"],"entries.list.toast.deleted":["Permanently deleted."],"entries.list.toast.duplicated":["Duplicated as a draft."],"entries.list.toast.failed":["That didn't work — try again."],"entries.list.toast.restored":["Restored to drafts."],"entries.list.toast.trashed":["Moved to trash."],"entries.list.trashDialog.cancel":["Cancel"],"entries.list.trashDialog.confirm":["Move to trash"],"entries.list.trashDialog.description":["You can restore it from the Trash view later."],"entries.list.trashDialog.moving":["Moving…"],"entries.list.trashDialog.title":["Move ",["singularLower"]," to trash?"],"errorBoundary.hideError":["Hide error"],"errorBoundary.showError":["Show error"],"errorBoundary.title":["Something went wrong"],"fieldTypes.boolean.no":["No"],"fieldTypes.boolean.yes":["Yes"],"form.multiSelect.empty":["No matches."],"form.multiSelect.placeholder":["Select…"],"form.multiSelect.search":["Search…"],"form.multiSelect.selectedCount":[["count"]," selected"],"listPagination.next.aria":["Go to next page"],"listPagination.next.label":["Next"],"listPagination.page":["Page ",["page"]],"listPagination.prev.aria":["Go to previous page"],"listPagination.prev.label":["Previous"],"login.description":["Use a passkey, get a one-time email link, or continue with a provider."],"login.email.invalid":["Enter a valid email address."],"login.email.label":["Email"],"login.emailChange.success":["Email confirmed. Sign in with the new address."],"login.locale.aria":["Language"],"login.magicLink.back":["Back"],"login.magicLink.emailRequired":["Enter your email above first."],"login.magicLink.pending":["Sending…"],"login.magicLink.sent.description":["If an account exists for this email, we sent a sign-in link. The link expires in 15 minutes."],"login.magicLink.sent.title":["Check your email"],"login.magicLink.submit":["Email me a link"],"login.oauth.continueWith":["Continue with ",["label"]],"login.oauth.separator":["or"],"login.passkey.pending":["Signing in…"],"login.passkey.submit":["Sign in with passkey"],"login.title":["Sign in"],"magicLink.error.accountDisabled":["That account is disabled."],"magicLink.error.domainNotAllowed":["Your email domain isn't on the allowlist anymore. Ask an administrator to add it."],"magicLink.error.fallback":["Couldn't sign in. Try again."],"magicLink.error.missingToken":["That sign-in link is missing its token. Request a new one and try again."],"magicLink.error.registrationClosed":["Self-signup is unavailable until an administrator has finished setup."],"magicLink.error.tokenExpired":["That sign-in link expired. Request a new one."],"magicLink.error.tokenInvalid":["That sign-in link isn't valid. It may have already been used. Request a new one."],"magicLinkRequest.error.invalidInput":["Enter a valid email address."],"magicLinkRequest.error.network":["Couldn't send the link. Try again."],"magicLinkRequest.error.notConfigured":["Magic-link sign-in isn't configured on this site."],"mailer.description":["Test that the configured outbound-email transport actually delivers. Used by magic-link sign-in, invite emails, and any plugin that opts into the shared mailer."],"mailer.test.description":["Sends a one-off message via the same transport magic-link uses. Failures surface here verbatim — distinct from the magic-link request flow, which intentionally swallows mailer errors so the response shape can't leak whether an email is registered."],"mailer.test.error.fallback":["Couldn't send the test message. Try again."],"mailer.test.error.notConfigured":["No mailer adapter is configured. Pass a \`mailer:\` to \`plumix({...})\` (e.g. consoleMailer() for dev, or your Resend/Postmark/SES wrapper)."],"mailer.test.error.sendFailed":["The mailer adapter threw an error during send. Check the worker logs for the underlying error."],"mailer.test.feedback.ok":["Test message sent to ",["to"],". If it doesn't arrive within a minute, check your transport adapter's logs."],"mailer.test.recipient.invalid":["Enter a valid email address."],"mailer.test.recipient.label":["Recipient"],"mailer.test.recipient.placeholder":["ops@example.com"],"mailer.test.submit.idle":["Send test"],"mailer.test.submit.pending":["Sending…"],"mailer.test.title":["Send a test message"],"mailer.title":["Mailer"],"menu.profile":["Profile"],"menu.settings":["Settings"],"menu.signOut":["Sign out"],"menu.signOut.pending":["Signing out…"],"metaBox.field.json.invalid":["Invalid JSON"],"metaBox.multiReference.addMore":["Add"],"metaBox.multiReference.dialogDescription":["Search and pick ",["kind"]," entries"],"metaBox.multiReference.emptyValue":["None selected"],"metaBox.multiReference.loading":["Loading…"],"metaBox.multiReference.noMatches":["No matches"],"metaBox.multiReference.orphan":["Reference missing — remove or re-pick"],"metaBox.multiReference.resolveError":["Couldn’t load selected items — refresh to retry."],"metaBox.multiReference.searchPlaceholder":["Search ",["kind"],"…"],"metaBox.multiReference.selectIdle":["Select"],"metaBox.pluginField.crashed":["This field couldn’t render. Check the browser console for details."],"metaBox.reference.clear":["Clear"],"metaBox.reference.dialogDescription":["Search and pick a ",["kind"]],"metaBox.reference.emptyValue":["None selected"],"metaBox.reference.loading":["Loading…"],"metaBox.reference.noMatches":["No matches"],"metaBox.reference.orphan":["Reference missing — re-pick or clear"],"metaBox.reference.searchPlaceholder":["Search ",["kind"],"…"],"metaBox.reference.selectChange":["Change"],"metaBox.reference.selectIdle":["Select"],"metaBox.reference.untitled":["Untitled"],"metaBox.repeater.addAnother":["Add another"],"metaBox.repeater.addFirst":["Add row"],"metaBox.repeater.countSuffixBoth":[" / min ",["min"]," / max ",["max"]],"metaBox.repeater.countSuffixMax":[" / max ",["max"]],"metaBox.repeater.countSuffixMin":[" / min ",["min"]],"metaBox.repeater.empty":["No rows"],"notFound.description":["The page you're looking for doesn't exist or the resource isn't registered. Check the URL and try again."],"notFound.title":["Not found"],"oauth.error.accountDisabled":["That account is disabled."],"oauth.error.codeExchangeFailed":["Couldn't reach the provider. Try again."],"oauth.error.domainNotAllowed":["Your email domain isn't on the allowlist. Ask an administrator to add it."],"oauth.error.emailMissing":["The provider didn't return an email address."],"oauth.error.emailUnverified":["The provider hasn't verified your email yet. Verify it there, then try again."],"oauth.error.fallback":["Couldn't sign in. Try again."],"oauth.error.linkBroken":["That account can't be reached. Contact an administrator to re-link it."],"oauth.error.profileFetchFailed":["Couldn't read your profile. Try again."],"oauth.error.providerNotConfigured":["That provider isn't configured."],"oauth.error.registrationClosed":["OAuth signup is unavailable until an admin has finished setup."],"oauth.error.stateExpired":["Sign-in expired. Try again."],"oauth.error.stateInvalid":["Sign-in expired or invalid. Try again."],"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":["The passkey was created for a different invite. Please reload and try again."],"passkey.error.challengeNotBoundToUser":["That sign-in attempt timed out. Please try again."],"passkey.error.challengeNotFound":["That sign-in attempt timed out. Please try again."],"passkey.error.counterReplay":["Your passkey appears to have been used on another device. Please re-register."],"passkey.error.credentialAlreadyRegistered":["That passkey is already registered on this site."],"passkey.error.credentialLimitReached":["You've reached the limit of passkeys for this account."],"passkey.error.credentialNotFound":["That passkey isn't registered on this site. Try a different one."],"passkey.error.credentialStorageCorrupt":["Your saved passkey data is corrupt. Please register a new one."],"passkey.error.emailMismatch":["That email doesn't match your signed-in account."],"passkey.error.invalidClientData":["Your device returned an unexpected response. Please try again."],"passkey.error.invalidInput":["Something went wrong with the form. Please reload and try again."],"passkey.error.invalidOrigin":["This passkey isn't usable on this site."],"passkey.error.invalidResponse":["Your device returned an unexpected response. Please try again."],"passkey.error.invalidRpId":["This passkey isn't usable on this site."],"passkey.error.invalidSignature":["Your device's signature didn't verify. Please try again."],"passkey.error.invalidToken":["This invite link is no longer valid. Ask your admin to send a new one."],"passkey.error.networkError":["Couldn't reach the server. Check your connection and try again."],"passkey.error.noAuthenticator":["No passkey is available on this device. Try signing in on the device where you registered."],"passkey.error.registrationClosed":["Sign-up is not open on this site."],"passkey.error.tokenExpired":["This invite link has expired. Ask your admin to send a new one."],"passkey.error.unknown":["Something went wrong. Please try again."],"passkey.error.unsupportedAlgorithm":["Your device's signing algorithm isn't supported."],"passkey.error.unsupportedAttestationFormat":["Your device's response format isn't supported."],"passkey.error.userCancelled":["Sign-in was cancelled."],"passkey.error.userNotFound":["No account found for that email."],"passkey.error.userPresenceMissing":["Your device didn't confirm your presence. Please try again."],"patternsSection.heading":["Patterns"],"patternsSection.uncategorized":["Uncategorized"],"plugin.errorBoundary.iconAria":["Plugin icon failed to render"],"plugin.errorBoundary.inlineStub":[["label"]," ",["kind"]," failed"],"plugin.errorBoundary.pageBody":[["label"]," threw an error while rendering. The rest of the admin is unaffected."],"plugin.errorBoundary.pageTitle":["Plugin page failed to render"],"plugin.errorBoundary.unknownPlugin":["this plugin"],"plugin.errorBoundary.widgetBody":[["label"]," failed to render."],"pluginPage.loading.aria":["Loading ",["label"]],"pluginPage.notLoaded.body":["The admin manifest declares a page at <code>",["path"],"</code> but no React component has been registered for it."],"pluginPage.notLoaded.title":["Plugin not loaded"],"profile.language.aria":["Language"],"profile.language.description":["Your admin chrome renders in this language. The page reloads after you switch so the new translations apply everywhere."],"profile.language.error":["Couldn't switch language. Please try again."],"profile.language.title":["Language"],"profile.passkeys.added":["Added ",["date"]],"profile.passkeys.delete.button":["Delete"],"profile.passkeys.delete.cancel":["Cancel"],"profile.passkeys.delete.confirm":["Delete passkey"],"profile.passkeys.delete.description":["The device that registered \\"",["name"],"\\" will no longer be able to sign in. You can re-enrol it later."],"profile.passkeys.delete.fallback":["Couldn't delete the passkey. Try again."],"profile.passkeys.delete.pending":["Deleting…"],"profile.passkeys.delete.title":["Delete this passkey?"],"profile.passkeys.description":["Devices that can sign in to this account. Add a new one before deleting an old one — at least one passkey must remain."],"profile.passkeys.empty":["No passkeys registered. Add one to enable sign-in."],"profile.passkeys.enroll.alreadyRegistered":["That passkey is already registered on this account."],"profile.passkeys.enroll.cancelled":["Cancelled. Tap Add passkey when you're ready."],"profile.passkeys.enroll.emailMismatch":["Couldn't enrol — re-sign-in and try again."],"profile.passkeys.enroll.fallback":["Couldn't enrol the passkey. Try again."],"profile.passkeys.enroll.idle":["Add passkey"],"profile.passkeys.enroll.networkError":["Network error. Check your connection and try again."],"profile.passkeys.enroll.noAuthenticator":["This device doesn't support passkeys."],"profile.passkeys.enroll.pending":["Adding…"],"profile.passkeys.lastCredential":["You can't delete your last passkey. Add another one first."],"profile.passkeys.lastUsed":["Last used ",["date"]],"profile.passkeys.loadFailed":["Couldn't load your passkeys. Refresh and try again."],"profile.passkeys.loading":["Loading…"],"profile.passkeys.notFound":["This passkey no longer exists. Refresh the list."],"profile.passkeys.rename.button":["Rename"],"profile.passkeys.rename.cancel":["Cancel"],"profile.passkeys.rename.fallback":["Couldn't rename the passkey. Try again."],"profile.passkeys.rename.label":["Rename passkey"],"profile.passkeys.rename.nameEmpty":["Name can't be empty."],"profile.passkeys.rename.pending":["Saving…"],"profile.passkeys.rename.save":["Save"],"profile.passkeys.synced":["Synced"],"profile.passkeys.title":["Passkeys"],"profile.passkeys.transport.hybrid":["Cross-device"],"profile.passkeys.transport.internal":["This device"],"profile.passkeys.transport.securityKey":["Security key"],"profile.passkeys.unnamed":["Unnamed passkey"],"profile.sessions.description":["Devices signed in to this account. Revoke any you don't recognise, or sign out everywhere except this browser if you suspect a leak."],"profile.sessions.device.browserOnOs":[["browser"]," on ",["os"]],"profile.sessions.empty":["No plumix-managed sessions. Your sign-in is handled by an external identity provider."],"profile.sessions.loadFailed":["Couldn't load your sessions. Refresh and try again."],"profile.sessions.loading":["Loading…"],"profile.sessions.revoke.button":["Revoke"],"profile.sessions.revoke.cancel":["Cancel"],"profile.sessions.revoke.confirm":["Sign out device"],"profile.sessions.revoke.current":["You can't revoke the session you're using right now."],"profile.sessions.revoke.description":[["device"]," signed in ",["when"],". The device will need to sign in again next time."],"profile.sessions.revoke.descriptionWithIp":[["device"]," signed in ",["when"]," from ",["ip"],". The device will need to sign in again next time."],"profile.sessions.revoke.fallback":["Couldn't revoke the session. Try again."],"profile.sessions.revoke.notFound":["This session no longer exists. Refresh the list."],"profile.sessions.revoke.pending":["Signing out…"],"profile.sessions.revoke.title":["Sign out this device?"],"profile.sessions.revokeAll.count":[["revoked","plural",{"0":["No other sessions to sign out."],"one":["Signed out ","#"," other session."],"other":["Signed out ","#"," other sessions."]}]],"profile.sessions.revokeAll.fallback":["Couldn't revoke sessions. Try again."],"profile.sessions.revokeAll.idle":["Sign out other devices"],"profile.sessions.revokeAll.pending":["Signing out…"],"profile.sessions.signedIn":["Signed in ",["when"]],"profile.sessions.thisDevice":["This device"],"profile.sessions.title":["Active sessions"],"profile.sessions.unknownDevice":["Unknown device"],"settings.empty.description":["Core ships no settings by design — plugins (or your own plumix.config) declare pages + groups via <0>ctx.registerSettingsPage</0> and <1>ctx.registerSettingsGroup</1>. Registered pages appear here with one card per page."],"settings.empty.title":["No settings registered yet"],"settings.page.empty.description":["This settings page doesn't reference any registered groups yet. Plugins compose pages with the registerSettingsPage helper:"],"settings.page.empty.title":["No groups on this page"],"settings.page.loadFailed":["Couldn't load these settings. Try again."],"settings.page.loading":["Loading settings"],"settings.page.notFound.title":["Not found"],"settings.page.saveFailed":["Couldn't save settings."],"settings.page.saved":["Saved."],"settings.page.submit.idle":["Save changes"],"settings.page.submit.pending":["Saving…"],"settings.pageSummary":[["count","plural",{"one":["#"," group"],"other":["#"," groups"]}]],"settings.title":["Settings"],"slashMenu.empty":["No matches"],"slashMenu.searchAria":["Search blocks and patterns"],"slashMenu.uncategorized":["Other"],"starterModal.description":["Pick a starting layout, or begin from a blank canvas."],"starterModal.startBlank":["Start from blank"],"starterModal.title":["Start from a pattern"],"termForm.cancel":["Cancel"],"termForm.description":["Description"],"termForm.name":["Name"],"termForm.parent":["Parent"],"termForm.parent.rootOption":["— root —"],"termForm.slug":["Slug"],"termForm.slug.format":["Slug may only contain lowercase letters, digits, and hyphens."],"termForm.submitting":["Saving…"],"terms.create.backLink":["Back to ",["pluralLower"]],"terms.create.description.flat":["Group content by adding a new term."],"terms.create.description.hierarchical":["Pick a parent to nest this term, or leave empty for a root-level term."],"terms.create.error.createFallback":["Couldn't create the term. Try again."],"terms.create.error.emptySlug":["Couldn't derive a slug from that name — please type one manually."],"terms.create.heading":["New ",["singularLower"]],"terms.create.submit":["Create ",["singularLower"]],"terms.edit.backLink":["Back to ",["pluralLower"]],"terms.edit.delete.button":["Delete term"],"terms.edit.delete.cancel":["Cancel"],"terms.edit.delete.cardDescription":["Removes this term and unassigns it from any entries that use it. Descendants are promoted to root level (their entries keep their other term assignments)."],"terms.edit.delete.cardTitle":["Delete term"],"terms.edit.delete.confirm":["Delete forever"],"terms.edit.delete.deleting":["Deleting…"],"terms.edit.delete.dialogDescription":["Entry assignments to this term are removed. If the term has children, they become root-level automatically."],"terms.edit.delete.dialogTitle":["Delete ",["termName"],"?"],"terms.edit.descendantsHint":[" — descendants can't be picked as parent."],"terms.edit.error.deleteFallback":["Couldn't delete the term. Try again."],"terms.edit.error.saveFallback":["Couldn't save the changes. Try again."],"terms.edit.heading":["Edit ",["singularLower"]],"terms.edit.loadingAria":["Loading term"],"terms.edit.notFound.message":["Couldn't load that term. It may have been deleted."],"terms.edit.notFound.title":["Not found"],"terms.edit.submit":["Save changes"],"terms.error.parentMismatch":["The selected parent belongs to a different taxonomy."],"terms.error.parentSelfOrCycle":["A term can't be its own ancestor — pick a different parent."],"terms.error.slugTaken":["A term with that slug already exists in this taxonomy."],"terms.list.column.description":["Description"],"terms.list.column.name":["Name"],"terms.list.empty.cta":["New ",["singularLower"]],"terms.list.empty.description":["Create one to see it here."],"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":["None"],"type.generic.addNew":["Add New"],"type.generic.addNewItem":["Add"],"type.generic.allItems":["All"],"type.generic.editItem":["Edit"],"type.generic.filterItemsList":["Filter list"],"type.generic.itemPublished":["Published"],"type.generic.itemPublishedPrivately":["Published privately"],"type.generic.itemRevertedToDraft":["Reverted to draft"],"type.generic.itemScheduled":["Scheduled"],"type.generic.itemTrashed":["Moved to trash"],"type.generic.itemUpdated":["Updated"],"type.generic.itemsList":["List"],"type.generic.itemsListNavigation":["List navigation"],"type.generic.loadErrorItems":["Couldn’t load. Try again."],"type.generic.loadingItems":["Loading…"],"type.generic.moveToTrash":["Move to trash?"],"type.generic.newItem":["New"],"type.generic.noMatch":["No matches"],"type.generic.notFound":["Nothing yet"],"type.generic.notFoundInTrash":["Trash is empty"],"type.generic.parentItem":["Parent"],"type.generic.parentItemColon":["Parent:"],"type.generic.plural":["Items"],"type.generic.searchItems":["Search…"],"type.generic.singular":["Item"],"type.generic.taxonomy.addOrRemoveItems":["Add or remove"],"type.generic.taxonomy.backToItems":["← Back"],"type.generic.taxonomy.filterByItem":["Filter"],"type.generic.taxonomy.newItemName":["New name"],"type.generic.taxonomy.noTerms":["—"],"type.generic.taxonomy.plural":["Terms"],"type.generic.taxonomy.separateItemsWithCommas":["Separate with commas"],"type.generic.taxonomy.singular":["Term"],"type.generic.taxonomy.updateItem":["Update"],"type.generic.untitledItem":["Untitled"],"type.generic.viewItem":["View"],"type.generic.viewItems":["View"],"userEdit.backToList":["Back to users"],"userEdit.cancel":["Cancel"],"userEdit.delete.button":["Delete user"],"userEdit.delete.confirm.description":["If this user authored any entries, the next step reassigns them. Leave \\"Keep entries as-is\\" if they have none."],"userEdit.delete.confirm.idle":["Delete forever"],"userEdit.delete.confirm.pending":["Deleting…"],"userEdit.delete.confirm.title":["Confirm delete: ",["email"]],"userEdit.delete.description":["Permanent. Their entries stay, but you'll choose who inherits authorship."],"userEdit.delete.reassign.keepAsIs":["Keep entries as-is (none to reassign)"],"userEdit.delete.reassign.label":["Reassign entries to"],"userEdit.delete.title":["Delete user"],"userEdit.description.other":["Update this account's details. Role changes invalidate existing sessions immediately."],"userEdit.description.self":["Update your display name. Role and account state are managed by administrators."],"userEdit.email.cancelPending.idle":["Cancel"],"userEdit.email.cancelPending.pending":["Cancelling…"],"userEdit.email.changeButton":["Change email"],"userEdit.email.confirmationSent":["Confirmation sent to ",["email"],". The change takes effect once they click the link."],"userEdit.email.dialog.cancel":["Cancel"],"userEdit.email.dialog.currentLabel":["Current email"],"userEdit.email.dialog.description":["We'll send a confirmation link to the new address. The change takes effect after the link is clicked. Sessions on this account are signed out at that point — re-sign-in uses the new email."],"userEdit.email.dialog.newLabel":["New email"],"userEdit.email.dialog.submit.idle":["Send confirmation"],"userEdit.email.dialog.submit.pending":["Sending…"],"userEdit.email.dialog.title":["Change email"],"userEdit.email.error.accountDisabled":["This account is disabled."],"userEdit.email.error.mailerNotConfigured":["Email change requires a magic-link mailer to be configured server-side. Pass \`auth.magicLink\` and \`mailer:\` to \`plumix({...})\` to enable."],"userEdit.email.error.requestFallback":["Couldn't request the change. Try again."],"userEdit.email.error.taken":["That email is already in use on another account."],"userEdit.email.invalid":["Enter a valid email address."],"userEdit.email.label":["Email"],"userEdit.email.pending":["Pending change to <code>",["newEmail"],"</code> — expires ",["expiresAt"]],"userEdit.email.placeholder":["new@example.com"],"userEdit.error.deleteFallback":["Couldn't delete the user. Try again."],"userEdit.error.emailTaken":["A user with that email already exists."],"userEdit.error.hasEntries":["This user has authored entries. Pick someone to reassign them to above."],"userEdit.error.lastAdmin.delete":["Can't delete the last administrator. Promote someone else first."],"userEdit.error.lastAdmin.status":["Can't disable the last administrator. Promote someone else first."],"userEdit.error.lastAdmin.update":["Can't do that — this is the last administrator. Promote someone else first."],"userEdit.error.reassignToSelf":["Can't reassign to the user being deleted."],"userEdit.error.slugTaken":["That author slug is already taken. Choose a different one."],"userEdit.error.statusFallback":["Couldn't change the account status. Try again."],"userEdit.error.updateFallback":["Couldn't save the changes. Try again."],"userEdit.loadFailed":["Couldn't load that user. They may have been deleted."],"userEdit.loading.aria":["Loading user"],"userEdit.name.label":["Name"],"userEdit.notFound.title":["Not found"],"userEdit.role.label":["Role"],"userEdit.role.selfReadonly":["Only another administrator can change your role."],"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":["Disabling signs the user out immediately and blocks future sign-ins. Their entries stay published."],"userEdit.status.description.disabled":["Disabled accounts can't sign in. Re-enabling restores access; their passkey is still registered."],"userEdit.status.title":["Account status"],"userEdit.status.toggle.disable":["Disable user"],"userEdit.status.toggle.disabling":["Disabling…"],"userEdit.status.toggle.enable":["Re-enable user"],"userEdit.status.toggle.enabling":["Enabling…"],"userEdit.submit.idle":["Save changes"],"userEdit.submit.pending":["Saving…"],"userEdit.title.other":["Edit ",["email"]],"userEdit.title.self":["Your profile"],"userInvite.backToList":["Back to users"],"userInvite.cancel":["Cancel"],"userInvite.copy.aria":["Copy invite link"],"userInvite.copy.copied":["Copied"],"userInvite.copy.idle":["Copy"],"userInvite.description":["They'll enrol a passkey the first time they open the invite link. No password required."],"userInvite.email.invalid":["Enter a valid email address"],"userInvite.email.label":["Email"],"userInvite.error.emailTaken":["A user with that email already exists."],"userInvite.error.fallback":["Couldn't send invite. Try again."],"userInvite.name.label":["Name"],"userInvite.role.label":["Role"],"userInvite.submit.idle":["Send invite"],"userInvite.submit.pending":["Inviting…"],"userInvite.success.another":["Invite another"],"userInvite.success.backToList":["Back to users"],"userInvite.success.description":["Share the link below with ",["email"],". They'll enrol a passkey the first time they open it. Link expires in 7 days."],"userInvite.success.link.label":["Invite link"],"userInvite.success.title":["Invite ready"],"userInvite.title":["Invite user"],"userRole.admin":["Administrator"],"userRole.author":["Author"],"userRole.contributor":["Contributor"],"userRole.editor":["Editor"],"userRole.long.admin":["Administrator — full control"],"userRole.long.author":["Author — publish own entries"],"userRole.long.contributor":["Contributor — draft, no publish"],"userRole.long.editor":["Editor — publish + edit any post"],"userRole.long.subscriber":["Subscriber — read only"],"userRole.subscriber":["Subscriber"],"users.list.column.created":["Created"],"users.list.column.lastSignIn":["Last sign-in"],"users.list.column.role":["Role"],"users.list.column.status":["Status"],"users.list.column.user":["User"],"users.list.empty.description":["Clear the filter, or invite someone new to join."],"users.list.empty.invite":["Invite user"],"users.list.empty.title":["No users match your filter"],"users.list.invite":["Add new"],"users.list.loadFailed":["Couldn't load users. Try again."],"users.list.loading":["Loading users"],"users.list.roleFilter.all":["All roles"],"users.list.roleFilter.aria":["Filter by role"],"users.list.row.active":["Active"],"users.list.row.disabled":["Disabled"],"users.list.row.lastSignIn.never":["Never"],"users.list.row.noName":["(no name)"],"users.list.row.you":["You"],"users.list.searchPlaceholder":["Search by email…"],"users.list.title":["Users"],"validate.email.invalid":["Enter a valid email address."],"validate.email.maxLength":["Email is too long."],"validate.email.required":["Enter an email address."],"validate.id.format":["id must be a positive decimal integer"],"validate.name.maxLength":["Name is too long."]}`);export{e as messages};
|
|
1
|
+
var e=JSON.parse(`{"admin.slug.format":["Slug must be lowercase letters, numbers, and dashes."],"allowedDomains.add.defaultRole.label":["Default role"],"allowedDomains.add.description":["Use the bare domain — no protocol, no path."],"allowedDomains.add.domain.invalid":["Enter a valid hostname (e.g. example.com)."],"allowedDomains.add.domain.label":["Domain"],"allowedDomains.add.placeholder":["example.com"],"allowedDomains.add.submit.idle":["Add"],"allowedDomains.add.submit.pending":["Adding…"],"allowedDomains.add.title":["Add domain"],"allowedDomains.description":["Email domains permitted to sign up via OAuth. New OAuth accounts are created with the role set here. Disabled rows reject signup but preserve their role mapping."],"allowedDomains.error.domainExists":["That domain is already configured."],"allowedDomains.error.fallback":["Couldn't save the domain. Try again."],"allowedDomains.list.empty":["No domains configured. OAuth signup is closed until at least one enabled domain is added."],"allowedDomains.list.loading":["Loading…"],"allowedDomains.list.title":["Configured domains"],"allowedDomains.row.deleteAria":["Delete ",["domain"]],"allowedDomains.row.deleteCancel":["Cancel"],"allowedDomains.row.deleteConfirm":["Confirm delete"],"allowedDomains.row.disabled":["Disabled"],"allowedDomains.row.enabled":["Enabled"],"allowedDomains.title":["Allowed domains"],"apiTokens.col.actions":["Actions"],"apiTokens.col.expires":["Expires"],"apiTokens.col.lastUsed":["Last used"],"apiTokens.col.name":["Name"],"apiTokens.col.prefix":["Prefix"],"apiTokens.col.scopes":["Scopes"],"apiTokens.create.capabilities":["Capabilities"],"apiTokens.create.capabilities.help":["One capability per line. The token can never exceed the caps your role grants — this is an additional narrowing."],"apiTokens.create.capabilities.placeholder":["entry:post:read\\nentry:post:edit_own"],"apiTokens.create.expires":["Expires"],"apiTokens.create.name":["Name"],"apiTokens.create.namePlaceholder":["github-actions / claude-code / mcp-prod"],"apiTokens.create.nameRequired":["Name is required."],"apiTokens.create.nameTooLong":["Name must be ≤ 64 characters."],"apiTokens.create.permissions":["Permissions"],"apiTokens.create.scope.inherit":["Inherit all your permissions"],"apiTokens.create.scope.restrict":["Restrict to specific capabilities"],"apiTokens.create.submit.idle":["Mint token"],"apiTokens.create.submit.pending":["Minting…"],"apiTokens.description.admin":["Tokens minted by this user. You can revoke any of them — minting requires the owner's authenticated browser session."],"apiTokens.description.self":["Personal access tokens for CLIs, MCP servers, CI bots, or any other non-browser client. The full secret is shown once at mint time."],"apiTokens.empty.description.admin":["This user hasn't minted any API tokens."],"apiTokens.empty.description.self":["Mint one above for your CLI / MCP server / CI bot."],"apiTokens.empty.title":["No tokens yet"],"apiTokens.expiry.30":["30 days"],"apiTokens.expiry.7":["7 days"],"apiTokens.expiry.90":["90 days"],"apiTokens.expiry.never":["Never"],"apiTokens.loading":["Loading tokens…"],"apiTokens.mint.fallback":["Couldn't mint token. Try again."],"apiTokens.never":["Never"],"apiTokens.revoke.button":["Revoke"],"apiTokens.revoke.cancel":["Cancel"],"apiTokens.revoke.confirm":["Revoke"],"apiTokens.revoke.description":["The token stops working immediately. Any client using it will start getting 401s on the next request."],"apiTokens.revoke.fallback":["Couldn't revoke. Try again."],"apiTokens.revoke.pending":["Revoking…"],"apiTokens.revoke.title":["Revoke \\"",["name"],"\\"?"],"apiTokens.scope.empty":["No caps"],"apiTokens.scope.inheritRole":["Inherit role"],"apiTokens.secret.copyAria":["Copy token"],"apiTokens.secret.description":["Copy the secret now. We won't show it again — losing it means revoking and re-minting."],"apiTokens.secret.done":["Done"],"apiTokens.secret.title":["Token \\"",["name"],"\\" minted"],"apiTokens.title":["API tokens"],"auth.acceptInvite.description":["Set up a passkey to finish creating your account. Your browser or device will guide you through the prompt."],"auth.acceptInvite.name":["Name"],"auth.acceptInvite.submit.idle":["Create passkey"],"auth.acceptInvite.submit.pending":["Setting up…"],"auth.acceptInvite.title":["Accept your invite"],"auth.bootstrap.description":["Set up your site — this email becomes the admin account."],"auth.bootstrap.email":["Email"],"auth.bootstrap.name":["Name"],"auth.bootstrap.submit.idle":["Create account with passkey"],"auth.bootstrap.submit.pending":["Creating account…"],"auth.bootstrap.title":["Create admin account"],"auth.device.approve.confirmTitle":["Confirm \\"",["userCode"],"\\""],"auth.device.approve.description":["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."],"auth.device.approve.error.alreadyApproved":["This code was already approved on another tab."],"auth.device.approve.error.alreadyDenied":["This code was already denied."],"auth.device.approve.error.expired":["This code expired before you could finish — re-run your CLI."],"auth.device.approve.error.fallback":["Couldn't complete the request. Try again."],"auth.device.approve.idle":["Approve"],"auth.device.approve.pending":["Approving…"],"auth.device.approved":["Approved. Your CLI should pick up the token within a few seconds — you can close this tab."],"auth.device.cancel":["Cancel"],"auth.device.denied":["Denied. The CLI will get an access_denied response and stop polling."],"auth.device.deny.idle":["Deny"],"auth.device.deny.pending":["Denying…"],"auth.device.description":["A CLI is requesting an API token for your account. Confirm the code your CLI is showing matches the one below before approving."],"auth.device.lookup.description":["The CLI shows an 8-character code split with a dash — \\"ABCD-EFGH\\". Letters and digits only, no zeros or ones."],"auth.device.lookup.error.alreadyApproved":["This code has already been approved. Re-run your CLI if it didn't pick the token up."],"auth.device.lookup.error.alreadyDenied":["This code has already been denied."],"auth.device.lookup.error.expired":["This code has expired. Re-run your CLI to get a new one."],"auth.device.lookup.error.fallback":["Couldn't look up that code. Try again."],"auth.device.lookup.error.notFound":["Code not found. Check it matches what your CLI printed."],"auth.device.lookup.submit.idle":["Continue"],"auth.device.lookup.submit.pending":["Checking…"],"auth.device.lookup.title":["Enter the code from your CLI"],"auth.device.lookup.userCode.label":["User code"],"auth.device.scopeMode.inherit":["Inherit all my permissions"],"auth.device.scopeMode.label":["Permissions"],"auth.device.scopeMode.restrict":["Restrict to specific capabilities"],"auth.device.scopes.label":["Capabilities"],"auth.device.scopes.placeholder":["entry:post:read\\nentry:post:edit_own"],"auth.device.title":["Authorize CLI access"],"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 is required."],"auth.device.tokenName.tooLong":["Name must be ≤ 64 characters."],"auth.device.userCode.placeholder":["ABCD-EFGH"],"blockActions.copyJson":["Copy JSON"],"blockActions.delete":["Delete"],"blockActions.duplicate":["Duplicate"],"blockActions.empty":["Select a block to see actions."],"blockActions.transformTo":["Transform to"],"blockScopePicker.cancel":["Cancel"],"blockScopePicker.description":["Pick a layout to insert, or cancel to start from a blank ",["blockTitle"],"."],"blockScopePicker.title":["Choose a ",["blockTitle"]," layout"],"breadcrumb.addNew":["Add new"],"breadcrumb.admin":["Admin"],"breadcrumb.create":["Create"],"breadcrumb.createTerm":["Create ",["singular"]],"breadcrumb.dashboard":["Dashboard"],"breadcrumb.edit":["Edit"],"breadcrumb.editTerm":["Edit ",["singular"]],"breadcrumb.editUser":["Edit user"],"breadcrumb.entries":["Entries"],"breadcrumb.profile":["Profile"],"breadcrumb.settings":["Settings"],"breadcrumb.terms":["Terms"],"breadcrumb.users":["Users"],"core.adminNav.content":["Entries"],"core.adminNav.item.allowedDomains":["Allowed domains"],"core.adminNav.item.dashboard":["Dashboard"],"core.adminNav.item.mailer":["Mailer"],"core.adminNav.item.settings":["Settings"],"core.adminNav.item.users":["Users"],"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":["Management"],"core.adminNav.overview":["Overview"],"core.adminNav.termTaxonomies":["Taxonomies"],"core.settings.general.description":["Core site identity and metadata."],"core.settings.general.label":["General"],"core.settings.site.default_og_image":["Default social image URL"],"core.settings.site.description":["Public-facing name, tagline, and social links."],"core.settings.site.github":["GitHub URL"],"core.settings.site.label":["Site identity"],"core.settings.site.mastodon":["Mastodon URL"],"core.settings.site.public":["Allow search engines to index this site"],"core.settings.site.tagline":["Tagline"],"core.settings.site.title":["Site title"],"core.settings.site.twitter":["X (Twitter) URL"],"dashboard.count.draft":[["count","plural",{"one":["#"," draft"],"other":["#"," drafts"]}]],"dashboard.count.published":[["count","plural",{"one":["#"," published"],"other":["#"," published"]}]],"dashboard.empty.description":["Add a plugin that registers a post type (e.g. <0>@plumix/plugin-blog</0>) to see it here."],"dashboard.empty.title":["No content types yet"],"dashboard.recent.empty":["Nothing yet."],"dashboard.recent.title":["Recent activity"],"dashboard.tagline":["What would you like to work on today?"],"dashboard.tile.browse":["Browse ",["labelLower"]],"dashboard.tile.browse.generic":["Browse"],"dashboard.tile.description":["Write, edit, and publish ",["labelLower"],"."],"dashboard.tile.description.generic":["Write, edit, and publish."],"dashboard.welcome":["Welcome, ",["greeting"]],"dataTable.emptyState":["No results."],"dataTable.loading":["Loading"],"editor.autosave.error":["Failed to save"],"editor.autosave.saved":["Saved"],"editor.autosave.saving":["Saving..."],"editor.coAuthorIndicator.activeAriaLabel":["Active co-authors"],"editor.coAuthorIndicator.presenceAriaLabel":[["display"]," · last seen ",["lastSeen"]],"editor.copyPattern.untitled":["Untitled"],"editor.device.desktop":["Desktop"],"editor.device.mobile":["Mobile"],"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":["Creating…"],"editor.entry.create.retry":["Try again"],"editor.entry.create.untitled":["Untitled"],"editor.entry.edit.headline":["Edit ",["singular"]],"editor.entry.edit.headline.generic":["Edit"],"editor.entry.edit.loadFailed":["Couldn't load this entry."],"editor.entry.edit.loadFailedTitle":["Couldn't load this entry"],"editor.entry.edit.loading":["Loading entry…"],"editor.entry.edit.restore.conflict":["Another editor changed this entry. Reload and try again."],"editor.entry.edit.saveFailed":["Couldn't save."],"editor.entry.edit.stale.loading":["Loading…"],"editor.entry.edit.toast.discardFailed":["Couldn't discard the draft — try again."],"editor.entry.edit.toast.draftDiscarded":["Draft discarded."],"editor.entry.edit.toast.publishFailed":["Couldn't publish — try again."],"editor.entry.edit.toast.published":["Published."],"editor.headingAudit.empty":["No heading-structure issues detected."],"editor.headingAudit.emptyHeading":["Empty heading. Add text or remove the block."],"editor.headingAudit.multipleH1":["Multiple <h1> on the page (",["count"]," found). Keep only one top-level heading."],"editor.headingAudit.skippedLevel":["Heading jumps from h",["from"]," to h",["to"],". Insert an h",["between"]," between them."],"editor.headingAudit.warningPrefix":["Warning:"],"editor.layout.canvas.copyAsPatternSource":["Copy as pattern source"],"editor.layout.canvas.pickStarter":["Pick a starter…"],"editor.layout.canvas.zoomIn":["Zoom in"],"editor.layout.canvas.zoomOut":["Zoom out"],"editor.layout.characterCount":[["characters","plural",{"one":["#"," character"],"other":["#"," characters"]}]],"editor.layout.copy.copied":["Copied to clipboard"],"editor.layout.copy.failed":["Couldn't copy to clipboard"],"editor.layout.copyAsPattern.untitledFallback":["Untitled"],"editor.layout.draft.discard":["Discard"],"editor.layout.draft.discarding":["Discarding…"],"editor.layout.draft.publish":["Publish"],"editor.layout.draft.publishing":["Publishing…"],"editor.layout.draft.save":["Save Draft"],"editor.layout.draft.saving":["Saving…"],"editor.layout.draftBanner.body":["Click Publish to push them live, or Discard to revert."],"editor.layout.draftBanner.title":["You have unpublished draft changes."],"editor.layout.header.backToList":["Back to list"],"editor.layout.header.titlePlaceholder":["Untitled"],"editor.layout.mobile.blocksSheetDescription":["Insertable blocks, outline, and the heading audit for this entry."],"editor.layout.mobile.blocksSheetTitle":["Blocks"],"editor.layout.mobile.blocksTrigger":["Blocks"],"editor.layout.mobile.inspectorSheetDescription":["Block actions, fields, and style controls for the selected block."],"editor.layout.mobile.inspectorSheetTitle":["Inspector"],"editor.layout.mobile.inspectorTrigger":["Inspector"],"editor.layout.publish":["Publish"],"editor.layout.slashMenu.description":["Search blocks and patterns by title or keyword and press Enter to insert."],"editor.layout.slashMenu.title":["Insert block or pattern"],"editor.layout.tab.audit":["Audit"],"editor.layout.tab.block":["Block"],"editor.layout.tab.blocks":["Blocks"],"editor.layout.tab.document":["Document"],"editor.layout.tab.outline":["Outline"],"editor.layout.tab.style":["Style"],"editor.layout.titleAriaLabel":["Entry title"],"editor.layout.wordCount":[["words","plural",{"one":["#"," word"],"other":["#"," words"]}]],"editor.loading":["Opening the editor…"],"editor.patternRef.detach":["Detach"],"editor.patternRef.openSource":["Open source"],"editor.patternRef.unresolved":["Pattern not registered: <code>",["slug"],"</code>"],"editor.plainForm.publish":["Publish"],"editor.plainForm.save":["Save"],"editor.plainForm.status.error":["Failed to save"],"editor.plainForm.status.saved":["Saved"],"editor.plainForm.status.saving":["Saving..."],"editor.plainForm.titleAriaLabel":["Entry title"],"editor.plainForm.titlePlaceholder":["Untitled"],"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":["Preview link copied to clipboard"],"editor.previewLink.copy":["Copy preview link"],"editor.previewLink.failed":["Couldn't create a preview link"],"editor.revision.conflict":["This entry changed since the preview loaded — reload and retry."],"editor.revisions.diff.empty":["No changes."],"editor.revisions.diff.field.excerpt":["Excerpt"],"editor.revisions.diff.field.slug":["Slug"],"editor.revisions.diff.field.title":["Title"],"editor.revisions.diff.tab.json":["Raw JSON"],"editor.revisions.diff.tab.visual":["Visual"],"editor.revisions.diffDialog.description":["Side-by-side: this revision (left) vs. the current entry (right)."],"editor.revisions.diffDialog.pane.current":["Current"],"editor.revisions.diffDialog.pane.error":["Failed to load snapshot."],"editor.revisions.diffDialog.pane.thisRevision":["This revision"],"editor.revisions.diffDialog.title":["Revision JSON diff"],"editor.revisions.preview.backToLive":["← Back to live"],"editor.revisions.preview.restore":["Restore this revision"],"editor.revisions.preview.restoring":["Restoring…"],"editor.revisions.preview.subtitle":["from ",["when"]," by ",["author"]],"editor.revisions.preview.title":["Previewing revision"],"editor.revisions.sheet.autosavesEmpty":["Autosaves will appear here once drafts-of-published lands."],"editor.revisions.sheet.commentCancel":["Cancel"],"editor.revisions.sheet.commentPlaceholder":["Describe this revision…"],"editor.revisions.sheet.commentSave":["Save"],"editor.revisions.sheet.commentSaving":["…"],"editor.revisions.sheet.description":["Every save creates a new revision. Newest first."],"editor.revisions.sheet.diffAriaLabel":["View JSON diff"],"editor.revisions.sheet.empty":["No revisions yet."],"editor.revisions.sheet.error":["Failed to load revisions."],"editor.revisions.sheet.loadMore":["Load more"],"editor.revisions.sheet.loadingAria":["Loading revisions"],"editor.revisions.sheet.loadingMore":["Loading…"],"editor.revisions.sheet.tab.all":["All"],"editor.revisions.sheet.tab.autosaves":["Autosaves"],"editor.revisions.sheet.tab.publishes":["Publishes"],"editor.revisions.sheet.title":["Revisions"],"editor.revisions.sheet.trigger":["Revisions"],"editor.revisions.sheet.unknownAuthor":["Unknown"],"editor.stale.loading":["Loading…"],"editor.staleDraft.compare":["Compare"],"editor.staleDraft.description":["Someone else published changes to this entry while you had pending edits. Pick which version to keep before continuing."],"editor.staleDraft.discarding":["Discarding…"],"editor.staleDraft.hideComparison":["Hide comparison"],"editor.staleDraft.liveNow":["Live now"],"editor.staleDraft.title":["Your draft is out of date"],"editor.staleDraft.useMine":["Use mine"],"editor.staleDraft.useTheirs":["Use theirs"],"editor.staleDraft.yourDraft":["Your draft"],"editor.styleTab.activeBucket":["Editing for: ",["device"]],"editor.styleTab.empty":["Select a block to style."],"editor.styleTab.section.background":["Background"],"editor.styleTab.section.fontSize":["Font size"],"editor.styleTab.section.padding":["Padding"],"editor.styleTab.section.textColor":["Text color"],"editor.styleTab.select.none":["None"],"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":["The account this confirmation belongs to is disabled."],"emailChange.error.emailTaken":["Someone else claimed that email between the request and your click. Request a new change to a different address."],"emailChange.error.fallback":["Couldn't confirm the email change. Try again."],"emailChange.error.missingToken":["That confirmation link is missing its token. Request a new email change."],"emailChange.error.tokenExpired":["That confirmation link expired. Request a new email change."],"emailChange.error.tokenInvalid":["That confirmation link isn't valid. It may have already been used."],"emailChange.error.userNotFound":["The account this confirmation belongs to has been removed."],"entries.list.authorFilter.all":["All authors"],"entries.list.authorFilter.mine":["Mine"],"entries.list.bulk.cancel":["Cancel"],"entries.list.bulk.confirm":["Confirm"],"entries.list.bulk.delete":["Delete permanently"],"entries.list.bulk.deleteBody":["This permanently deletes the selected entries and their revisions. It cannot be undone."],"entries.list.bulk.deleteTitle":[["count","plural",{"one":["Delete ","#"," entry permanently?"],"other":["Delete ","#"," entries permanently?"]}]],"entries.list.bulk.restore":["Restore"],"entries.list.bulk.selected":[["count","plural",{"one":["#"," entry selected"],"other":["#"," entries selected"]}]],"entries.list.bulk.toastDeleted":[["count","plural",{"one":["Deleted ","#"," entry."],"other":["Deleted ","#"," entries."]}]],"entries.list.bulk.toastFailed":["That didn't work — try again."],"entries.list.bulk.toastRestored":[["count","plural",{"one":["Restored ","#"," entry."],"other":["Restored ","#"," entries."]}]],"entries.list.bulk.toastTrashed":[["count","plural",{"one":["Moved ","#"," entry to trash."],"other":["Moved ","#"," entries to trash."]}]],"entries.list.bulk.trash":["Move to trash"],"entries.list.bulk.trashTitle":[["count","plural",{"one":["Move ","#"," entry to trash?"],"other":["Move ","#"," entries to trash?"]}]],"entries.list.column.status":["Status"],"entries.list.column.title":["Title"],"entries.list.column.updated":["Updated"],"entries.list.deleteDialog.cancel":["Cancel"],"entries.list.deleteDialog.confirm":["Delete permanently"],"entries.list.deleteDialog.deleting":["Deleting…"],"entries.list.deleteDialog.description":["This permanently deletes the entry and its revisions. It cannot be undone."],"entries.list.deleteDialog.title":["Delete permanently?"],"entries.list.empty.cta":["New ",["singularLower"]],"entries.list.empty.description":["Create one to see it here."],"entries.list.empty.title":["No ",["pluralLower"]," yet"],"entries.list.filterAuthorAria":["Filter by author"],"entries.list.filterStatusAria":["Filter by status"],"entries.list.loadError":["Couldn't load ",["pluralLower"],". Try again."],"entries.list.loadingLabel":["Loading ",["pluralLower"]],"entries.list.newButton":["New ",["singularLower"]],"entries.list.noTitle":["(no title)"],"entries.list.row.deletePermanently":["Delete permanently"],"entries.list.row.duplicate":["Duplicate"],"entries.list.row.duplicating":["Duplicating…"],"entries.list.row.edit":["Edit"],"entries.list.row.restore":["Restore"],"entries.list.row.restoring":["Restoring…"],"entries.list.row.trash":["Trash"],"entries.list.row.trashing":["Trashing…"],"entries.list.searchPlaceholder":["Search ",["pluralLower"],"…"],"entries.list.selectAllAria":["Select all entries on this page"],"entries.list.selectRowAria":["Select entry"],"entries.list.sortAria":["Sort by ",["label"]," (",["direction"],")"],"entries.list.statusFilter.all":["All"],"entries.list.statusFilter.draft":["Draft"],"entries.list.statusFilter.published":["Published"],"entries.list.statusFilter.scheduled":["Scheduled"],"entries.list.statusFilter.trash":["Trash"],"entries.list.taxonomyFilter.all":["All ",["pluralLower"]],"entries.list.taxonomyFilter.empty":["No ",["pluralLower"]," match."],"entries.list.taxonomyFilter.search":["Search ",["pluralLower"],"…"],"entries.list.toast.deleted":["Permanently deleted."],"entries.list.toast.duplicated":["Duplicated as a draft."],"entries.list.toast.failed":["That didn't work — try again."],"entries.list.toast.restored":["Restored to drafts."],"entries.list.toast.trashed":["Moved to trash."],"entries.list.trashDialog.cancel":["Cancel"],"entries.list.trashDialog.confirm":["Move to trash"],"entries.list.trashDialog.description":["You can restore it from the Trash view later."],"entries.list.trashDialog.moving":["Moving…"],"entries.list.trashDialog.title":["Move ",["singularLower"]," to trash?"],"errorBoundary.hideError":["Hide error"],"errorBoundary.showError":["Show error"],"errorBoundary.title":["Something went wrong"],"fieldTypes.boolean.no":["No"],"fieldTypes.boolean.yes":["Yes"],"form.multiSelect.empty":["No matches."],"form.multiSelect.placeholder":["Select…"],"form.multiSelect.search":["Search…"],"form.multiSelect.selectedCount":[["count"]," selected"],"listPagination.next.aria":["Go to next page"],"listPagination.next.label":["Next"],"listPagination.page":["Page ",["page"]],"listPagination.prev.aria":["Go to previous page"],"listPagination.prev.label":["Previous"],"login.description":["Use a passkey, get a one-time email link, or continue with a provider."],"login.email.invalid":["Enter a valid email address."],"login.email.label":["Email"],"login.emailChange.success":["Email confirmed. Sign in with the new address."],"login.locale.aria":["Language"],"login.magicLink.back":["Back"],"login.magicLink.emailRequired":["Enter your email above first."],"login.magicLink.pending":["Sending…"],"login.magicLink.sent.description":["If an account exists for this email, we sent a sign-in link. The link expires in 15 minutes."],"login.magicLink.sent.title":["Check your email"],"login.magicLink.submit":["Email me a link"],"login.oauth.continueWith":["Continue with ",["label"]],"login.oauth.separator":["or"],"login.passkey.pending":["Signing in…"],"login.passkey.submit":["Sign in with passkey"],"login.title":["Sign in"],"magicLink.error.accountDisabled":["That account is disabled."],"magicLink.error.domainNotAllowed":["Your email domain isn't on the allowlist anymore. Ask an administrator to add it."],"magicLink.error.fallback":["Couldn't sign in. Try again."],"magicLink.error.missingToken":["That sign-in link is missing its token. Request a new one and try again."],"magicLink.error.registrationClosed":["Self-signup is unavailable until an administrator has finished setup."],"magicLink.error.tokenExpired":["That sign-in link expired. Request a new one."],"magicLink.error.tokenInvalid":["That sign-in link isn't valid. It may have already been used. Request a new one."],"magicLinkRequest.error.invalidInput":["Enter a valid email address."],"magicLinkRequest.error.network":["Couldn't send the link. Try again."],"magicLinkRequest.error.notConfigured":["Magic-link sign-in isn't configured on this site."],"mailer.description":["Test that the configured outbound-email transport actually delivers. Used by magic-link sign-in, invite emails, and any plugin that opts into the shared mailer."],"mailer.test.description":["Sends a one-off message via the same transport magic-link uses. Failures surface here verbatim — distinct from the magic-link request flow, which intentionally swallows mailer errors so the response shape can't leak whether an email is registered."],"mailer.test.error.fallback":["Couldn't send the test message. Try again."],"mailer.test.error.notConfigured":["No mailer adapter is configured. Pass a \`mailer:\` to \`plumix({...})\` (e.g. consoleMailer() for dev, or your Resend/Postmark/SES wrapper)."],"mailer.test.error.sendFailed":["The mailer adapter threw an error during send. Check the worker logs for the underlying error."],"mailer.test.feedback.ok":["Test message sent to ",["to"],". If it doesn't arrive within a minute, check your transport adapter's logs."],"mailer.test.recipient.invalid":["Enter a valid email address."],"mailer.test.recipient.label":["Recipient"],"mailer.test.recipient.placeholder":["ops@example.com"],"mailer.test.submit.idle":["Send test"],"mailer.test.submit.pending":["Sending…"],"mailer.test.title":["Send a test message"],"mailer.title":["Mailer"],"menu.profile":["Profile"],"menu.settings":["Settings"],"menu.signOut":["Sign out"],"menu.signOut.pending":["Signing out…"],"metaBox.field.json.invalid":["Invalid JSON"],"metaBox.link.dialogDescription":["Search and pick an entry to link to"],"metaBox.link.loading":["Loading…"],"metaBox.link.newTab":["Open in new tab"],"metaBox.link.noMatches":["No matches"],"metaBox.link.pick":["Pick entry"],"metaBox.link.searchPlaceholder":["Search entries…"],"metaBox.link.text":["Link text"],"metaBox.link.url":["URL"],"metaBox.multiReference.addMore":["Add"],"metaBox.multiReference.dialogDescription":["Search and pick ",["kind"]," entries"],"metaBox.multiReference.emptyValue":["None selected"],"metaBox.multiReference.loading":["Loading…"],"metaBox.multiReference.noMatches":["No matches"],"metaBox.multiReference.orphan":["Reference missing — remove or re-pick"],"metaBox.multiReference.resolveError":["Couldn’t load selected items — refresh to retry."],"metaBox.multiReference.searchPlaceholder":["Search ",["kind"],"…"],"metaBox.multiReference.selectIdle":["Select"],"metaBox.pluginField.crashed":["This field couldn’t render. Check the browser console for details."],"metaBox.reference.clear":["Clear"],"metaBox.reference.dialogDescription":["Search and pick a ",["kind"]],"metaBox.reference.emptyValue":["None selected"],"metaBox.reference.loading":["Loading…"],"metaBox.reference.noMatches":["No matches"],"metaBox.reference.orphan":["Reference missing — re-pick or clear"],"metaBox.reference.searchPlaceholder":["Search ",["kind"],"…"],"metaBox.reference.selectChange":["Change"],"metaBox.reference.selectIdle":["Select"],"metaBox.reference.untitled":["Untitled"],"metaBox.repeater.addAnother":["Add another"],"metaBox.repeater.addFirst":["Add row"],"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":["No rows"],"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":["The page you're looking for doesn't exist or the resource isn't registered. Check the URL and try again."],"notFound.title":["Not found"],"oauth.error.accountDisabled":["That account is disabled."],"oauth.error.codeExchangeFailed":["Couldn't reach the provider. Try again."],"oauth.error.domainNotAllowed":["Your email domain isn't on the allowlist. Ask an administrator to add it."],"oauth.error.emailMissing":["The provider didn't return an email address."],"oauth.error.emailUnverified":["The provider hasn't verified your email yet. Verify it there, then try again."],"oauth.error.fallback":["Couldn't sign in. Try again."],"oauth.error.linkBroken":["That account can't be reached. Contact an administrator to re-link it."],"oauth.error.profileFetchFailed":["Couldn't read your profile. Try again."],"oauth.error.providerNotConfigured":["That provider isn't configured."],"oauth.error.registrationClosed":["OAuth signup is unavailable until an admin has finished setup."],"oauth.error.stateExpired":["Sign-in expired. Try again."],"oauth.error.stateInvalid":["Sign-in expired or invalid. Try again."],"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":["The passkey was created for a different invite. Please reload and try again."],"passkey.error.challengeNotBoundToUser":["That sign-in attempt timed out. Please try again."],"passkey.error.challengeNotFound":["That sign-in attempt timed out. Please try again."],"passkey.error.counterReplay":["Your passkey appears to have been used on another device. Please re-register."],"passkey.error.credentialAlreadyRegistered":["That passkey is already registered on this site."],"passkey.error.credentialLimitReached":["You've reached the limit of passkeys for this account."],"passkey.error.credentialNotFound":["That passkey isn't registered on this site. Try a different one."],"passkey.error.credentialStorageCorrupt":["Your saved passkey data is corrupt. Please register a new one."],"passkey.error.emailMismatch":["That email doesn't match your signed-in account."],"passkey.error.invalidClientData":["Your device returned an unexpected response. Please try again."],"passkey.error.invalidInput":["Something went wrong with the form. Please reload and try again."],"passkey.error.invalidOrigin":["This passkey isn't usable on this site."],"passkey.error.invalidResponse":["Your device returned an unexpected response. Please try again."],"passkey.error.invalidRpId":["This passkey isn't usable on this site."],"passkey.error.invalidSignature":["Your device's signature didn't verify. Please try again."],"passkey.error.invalidToken":["This invite link is no longer valid. Ask your admin to send a new one."],"passkey.error.networkError":["Couldn't reach the server. Check your connection and try again."],"passkey.error.noAuthenticator":["No passkey is available on this device. Try signing in on the device where you registered."],"passkey.error.registrationClosed":["Sign-up is not open on this site."],"passkey.error.tokenExpired":["This invite link has expired. Ask your admin to send a new one."],"passkey.error.unknown":["Something went wrong. Please try again."],"passkey.error.unsupportedAlgorithm":["Your device's signing algorithm isn't supported."],"passkey.error.unsupportedAttestationFormat":["Your device's response format isn't supported."],"passkey.error.userCancelled":["Sign-in was cancelled."],"passkey.error.userNotFound":["No account found for that email."],"passkey.error.userPresenceMissing":["Your device didn't confirm your presence. Please try again."],"patternsSection.heading":["Patterns"],"patternsSection.uncategorized":["Uncategorized"],"plugin.errorBoundary.iconAria":["Plugin icon failed to render"],"plugin.errorBoundary.inlineStub":[["label"]," ",["kind"]," failed"],"plugin.errorBoundary.pageBody":[["label"]," threw an error while rendering. The rest of the admin is unaffected."],"plugin.errorBoundary.pageTitle":["Plugin page failed to render"],"plugin.errorBoundary.unknownPlugin":["this plugin"],"plugin.errorBoundary.widgetBody":[["label"]," failed to render."],"pluginPage.loading.aria":["Loading ",["label"]],"pluginPage.notLoaded.body":["The admin manifest declares a page at <code>",["path"],"</code> but no React component has been registered for it."],"pluginPage.notLoaded.title":["Plugin not loaded"],"profile.language.aria":["Language"],"profile.language.description":["Your admin chrome renders in this language. The page reloads after you switch so the new translations apply everywhere."],"profile.language.error":["Couldn't switch language. Please try again."],"profile.language.title":["Language"],"profile.passkeys.added":["Added ",["date"]],"profile.passkeys.delete.button":["Delete"],"profile.passkeys.delete.cancel":["Cancel"],"profile.passkeys.delete.confirm":["Delete passkey"],"profile.passkeys.delete.description":["The device that registered \\"",["name"],"\\" will no longer be able to sign in. You can re-enrol it later."],"profile.passkeys.delete.fallback":["Couldn't delete the passkey. Try again."],"profile.passkeys.delete.pending":["Deleting…"],"profile.passkeys.delete.title":["Delete this passkey?"],"profile.passkeys.description":["Devices that can sign in to this account. Add a new one before deleting an old one — at least one passkey must remain."],"profile.passkeys.empty":["No passkeys registered. Add one to enable sign-in."],"profile.passkeys.enroll.alreadyRegistered":["That passkey is already registered on this account."],"profile.passkeys.enroll.cancelled":["Cancelled. Tap Add passkey when you're ready."],"profile.passkeys.enroll.emailMismatch":["Couldn't enrol — re-sign-in and try again."],"profile.passkeys.enroll.fallback":["Couldn't enrol the passkey. Try again."],"profile.passkeys.enroll.idle":["Add passkey"],"profile.passkeys.enroll.networkError":["Network error. Check your connection and try again."],"profile.passkeys.enroll.noAuthenticator":["This device doesn't support passkeys."],"profile.passkeys.enroll.pending":["Adding…"],"profile.passkeys.lastCredential":["You can't delete your last passkey. Add another one first."],"profile.passkeys.lastUsed":["Last used ",["date"]],"profile.passkeys.loadFailed":["Couldn't load your passkeys. Refresh and try again."],"profile.passkeys.loading":["Loading…"],"profile.passkeys.notFound":["This passkey no longer exists. Refresh the list."],"profile.passkeys.rename.button":["Rename"],"profile.passkeys.rename.cancel":["Cancel"],"profile.passkeys.rename.fallback":["Couldn't rename the passkey. Try again."],"profile.passkeys.rename.label":["Rename passkey"],"profile.passkeys.rename.nameEmpty":["Name can't be empty."],"profile.passkeys.rename.pending":["Saving…"],"profile.passkeys.rename.save":["Save"],"profile.passkeys.synced":["Synced"],"profile.passkeys.title":["Passkeys"],"profile.passkeys.transport.hybrid":["Cross-device"],"profile.passkeys.transport.internal":["This device"],"profile.passkeys.transport.securityKey":["Security key"],"profile.passkeys.unnamed":["Unnamed passkey"],"profile.sessions.description":["Devices signed in to this account. Revoke any you don't recognise, or sign out everywhere except this browser if you suspect a leak."],"profile.sessions.device.browserOnOs":[["browser"]," on ",["os"]],"profile.sessions.empty":["No plumix-managed sessions. Your sign-in is handled by an external identity provider."],"profile.sessions.loadFailed":["Couldn't load your sessions. Refresh and try again."],"profile.sessions.loading":["Loading…"],"profile.sessions.revoke.button":["Revoke"],"profile.sessions.revoke.cancel":["Cancel"],"profile.sessions.revoke.confirm":["Sign out device"],"profile.sessions.revoke.current":["You can't revoke the session you're using right now."],"profile.sessions.revoke.description":[["device"]," signed in ",["when"],". The device will need to sign in again next time."],"profile.sessions.revoke.descriptionWithIp":[["device"]," signed in ",["when"]," from ",["ip"],". The device will need to sign in again next time."],"profile.sessions.revoke.fallback":["Couldn't revoke the session. Try again."],"profile.sessions.revoke.notFound":["This session no longer exists. Refresh the list."],"profile.sessions.revoke.pending":["Signing out…"],"profile.sessions.revoke.title":["Sign out this device?"],"profile.sessions.revokeAll.count":[["revoked","plural",{"0":["No other sessions to sign out."],"one":["Signed out ","#"," other session."],"other":["Signed out ","#"," other sessions."]}]],"profile.sessions.revokeAll.fallback":["Couldn't revoke sessions. Try again."],"profile.sessions.revokeAll.idle":["Sign out other devices"],"profile.sessions.revokeAll.pending":["Signing out…"],"profile.sessions.signedIn":["Signed in ",["when"]],"profile.sessions.thisDevice":["This device"],"profile.sessions.title":["Active sessions"],"profile.sessions.unknownDevice":["Unknown device"],"settings.empty.description":["Core ships no settings by design — plugins (or your own plumix.config) declare pages + groups via <0>ctx.registerSettingsPage</0> and <1>ctx.registerSettingsGroup</1>. Registered pages appear here with one card per page."],"settings.empty.title":["No settings registered yet"],"settings.page.empty.description":["This settings page doesn't reference any registered groups yet. Plugins compose pages with the registerSettingsPage helper:"],"settings.page.empty.title":["No groups on this page"],"settings.page.loadFailed":["Couldn't load these settings. Try again."],"settings.page.loading":["Loading settings"],"settings.page.notFound.title":["Not found"],"settings.page.saveFailed":["Couldn't save settings."],"settings.page.saved":["Saved."],"settings.page.submit.idle":["Save changes"],"settings.page.submit.pending":["Saving…"],"settings.pageSummary":[["count","plural",{"one":["#"," group"],"other":["#"," groups"]}]],"settings.title":["Settings"],"slashMenu.empty":["No matches"],"slashMenu.searchAria":["Search blocks and patterns"],"slashMenu.uncategorized":["Other"],"starterModal.description":["Pick a starting layout, or begin from a blank canvas."],"starterModal.startBlank":["Start from blank"],"starterModal.title":["Start from a pattern"],"termForm.cancel":["Cancel"],"termForm.description":["Description"],"termForm.name":["Name"],"termForm.parent":["Parent"],"termForm.parent.rootOption":["— root —"],"termForm.slug":["Slug"],"termForm.slug.format":["Slug may only contain lowercase letters, digits, and hyphens."],"termForm.submitting":["Saving…"],"terms.create.backLink":["Back to ",["pluralLower"]],"terms.create.description.flat":["Group content by adding a new term."],"terms.create.description.hierarchical":["Pick a parent to nest this term, or leave empty for a root-level term."],"terms.create.error.createFallback":["Couldn't create the term. Try again."],"terms.create.error.emptySlug":["Couldn't derive a slug from that name — please type one manually."],"terms.create.heading":["New ",["singularLower"]],"terms.create.submit":["Create ",["singularLower"]],"terms.edit.backLink":["Back to ",["pluralLower"]],"terms.edit.delete.button":["Delete term"],"terms.edit.delete.cancel":["Cancel"],"terms.edit.delete.cardDescription":["Removes this term and unassigns it from any entries that use it. Descendants are promoted to root level (their entries keep their other term assignments)."],"terms.edit.delete.cardTitle":["Delete term"],"terms.edit.delete.confirm":["Delete forever"],"terms.edit.delete.deleting":["Deleting…"],"terms.edit.delete.dialogDescription":["Entry assignments to this term are removed. If the term has children, they become root-level automatically."],"terms.edit.delete.dialogTitle":["Delete ",["termName"],"?"],"terms.edit.descendantsHint":[" — descendants can't be picked as parent."],"terms.edit.error.deleteFallback":["Couldn't delete the term. Try again."],"terms.edit.error.saveFallback":["Couldn't save the changes. Try again."],"terms.edit.heading":["Edit ",["singularLower"]],"terms.edit.loadingAria":["Loading term"],"terms.edit.notFound.message":["Couldn't load that term. It may have been deleted."],"terms.edit.notFound.title":["Not found"],"terms.edit.submit":["Save changes"],"terms.error.parentMismatch":["The selected parent belongs to a different taxonomy."],"terms.error.parentSelfOrCycle":["A term can't be its own ancestor — pick a different parent."],"terms.error.slugTaken":["A term with that slug already exists in this taxonomy."],"terms.list.column.description":["Description"],"terms.list.column.name":["Name"],"terms.list.empty.cta":["New ",["singularLower"]],"terms.list.empty.description":["Create one to see it here."],"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":["None"],"type.generic.addNew":["Add New"],"type.generic.addNewItem":["Add"],"type.generic.allItems":["All"],"type.generic.editItem":["Edit"],"type.generic.filterItemsList":["Filter list"],"type.generic.itemPublished":["Published"],"type.generic.itemPublishedPrivately":["Published privately"],"type.generic.itemRevertedToDraft":["Reverted to draft"],"type.generic.itemScheduled":["Scheduled"],"type.generic.itemTrashed":["Moved to trash"],"type.generic.itemUpdated":["Updated"],"type.generic.itemsList":["List"],"type.generic.itemsListNavigation":["List navigation"],"type.generic.loadErrorItems":["Couldn’t load. Try again."],"type.generic.loadingItems":["Loading…"],"type.generic.moveToTrash":["Move to trash?"],"type.generic.newItem":["New"],"type.generic.noMatch":["No matches"],"type.generic.notFound":["Nothing yet"],"type.generic.notFoundInTrash":["Trash is empty"],"type.generic.parentItem":["Parent"],"type.generic.parentItemColon":["Parent:"],"type.generic.plural":["Items"],"type.generic.searchItems":["Search…"],"type.generic.singular":["Item"],"type.generic.taxonomy.addOrRemoveItems":["Add or remove"],"type.generic.taxonomy.backToItems":["← Back"],"type.generic.taxonomy.filterByItem":["Filter"],"type.generic.taxonomy.newItemName":["New name"],"type.generic.taxonomy.noTerms":["—"],"type.generic.taxonomy.plural":["Terms"],"type.generic.taxonomy.separateItemsWithCommas":["Separate with commas"],"type.generic.taxonomy.singular":["Term"],"type.generic.taxonomy.updateItem":["Update"],"type.generic.untitledItem":["Untitled"],"type.generic.viewItem":["View"],"type.generic.viewItems":["View"],"userEdit.backToList":["Back to users"],"userEdit.cancel":["Cancel"],"userEdit.delete.button":["Delete user"],"userEdit.delete.confirm.description":["If this user authored any entries, the next step reassigns them. Leave \\"Keep entries as-is\\" if they have none."],"userEdit.delete.confirm.idle":["Delete forever"],"userEdit.delete.confirm.pending":["Deleting…"],"userEdit.delete.confirm.title":["Confirm delete: ",["email"]],"userEdit.delete.description":["Permanent. Their entries stay, but you'll choose who inherits authorship."],"userEdit.delete.reassign.keepAsIs":["Keep entries as-is (none to reassign)"],"userEdit.delete.reassign.label":["Reassign entries to"],"userEdit.delete.title":["Delete user"],"userEdit.description.other":["Update this account's details. Role changes invalidate existing sessions immediately."],"userEdit.description.self":["Update your display name. Role and account state are managed by administrators."],"userEdit.email.cancelPending.idle":["Cancel"],"userEdit.email.cancelPending.pending":["Cancelling…"],"userEdit.email.changeButton":["Change email"],"userEdit.email.confirmationSent":["Confirmation sent to ",["email"],". The change takes effect once they click the link."],"userEdit.email.dialog.cancel":["Cancel"],"userEdit.email.dialog.currentLabel":["Current email"],"userEdit.email.dialog.description":["We'll send a confirmation link to the new address. The change takes effect after the link is clicked. Sessions on this account are signed out at that point — re-sign-in uses the new email."],"userEdit.email.dialog.newLabel":["New email"],"userEdit.email.dialog.submit.idle":["Send confirmation"],"userEdit.email.dialog.submit.pending":["Sending…"],"userEdit.email.dialog.title":["Change email"],"userEdit.email.error.accountDisabled":["This account is disabled."],"userEdit.email.error.mailerNotConfigured":["Email change requires a magic-link mailer to be configured server-side. Pass \`auth.magicLink\` and \`mailer:\` to \`plumix({...})\` to enable."],"userEdit.email.error.requestFallback":["Couldn't request the change. Try again."],"userEdit.email.error.taken":["That email is already in use on another account."],"userEdit.email.invalid":["Enter a valid email address."],"userEdit.email.label":["Email"],"userEdit.email.pending":["Pending change to <code>",["newEmail"],"</code> — expires ",["expiresAt"]],"userEdit.email.placeholder":["new@example.com"],"userEdit.error.deleteFallback":["Couldn't delete the user. Try again."],"userEdit.error.emailTaken":["A user with that email already exists."],"userEdit.error.hasEntries":["This user has authored entries. Pick someone to reassign them to above."],"userEdit.error.lastAdmin.delete":["Can't delete the last administrator. Promote someone else first."],"userEdit.error.lastAdmin.status":["Can't disable the last administrator. Promote someone else first."],"userEdit.error.lastAdmin.update":["Can't do that — this is the last administrator. Promote someone else first."],"userEdit.error.reassignToSelf":["Can't reassign to the user being deleted."],"userEdit.error.slugTaken":["That author slug is already taken. Choose a different one."],"userEdit.error.statusFallback":["Couldn't change the account status. Try again."],"userEdit.error.updateFallback":["Couldn't save the changes. Try again."],"userEdit.loadFailed":["Couldn't load that user. They may have been deleted."],"userEdit.loading.aria":["Loading user"],"userEdit.name.label":["Name"],"userEdit.notFound.title":["Not found"],"userEdit.role.label":["Role"],"userEdit.role.selfReadonly":["Only another administrator can change your role."],"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":["Disabling signs the user out immediately and blocks future sign-ins. Their entries stay published."],"userEdit.status.description.disabled":["Disabled accounts can't sign in. Re-enabling restores access; their passkey is still registered."],"userEdit.status.title":["Account status"],"userEdit.status.toggle.disable":["Disable user"],"userEdit.status.toggle.disabling":["Disabling…"],"userEdit.status.toggle.enable":["Re-enable user"],"userEdit.status.toggle.enabling":["Enabling…"],"userEdit.submit.idle":["Save changes"],"userEdit.submit.pending":["Saving…"],"userEdit.title.other":["Edit ",["email"]],"userEdit.title.self":["Your profile"],"userInvite.backToList":["Back to users"],"userInvite.cancel":["Cancel"],"userInvite.copy.aria":["Copy invite link"],"userInvite.copy.copied":["Copied"],"userInvite.copy.idle":["Copy"],"userInvite.description":["They'll enrol a passkey the first time they open the invite link. No password required."],"userInvite.email.invalid":["Enter a valid email address"],"userInvite.email.label":["Email"],"userInvite.error.emailTaken":["A user with that email already exists."],"userInvite.error.fallback":["Couldn't send invite. Try again."],"userInvite.name.label":["Name"],"userInvite.role.label":["Role"],"userInvite.submit.idle":["Send invite"],"userInvite.submit.pending":["Inviting…"],"userInvite.success.another":["Invite another"],"userInvite.success.backToList":["Back to users"],"userInvite.success.description":["Share the link below with ",["email"],". They'll enrol a passkey the first time they open it. Link expires in 7 days."],"userInvite.success.link.label":["Invite link"],"userInvite.success.title":["Invite ready"],"userInvite.title":["Invite user"],"userRole.admin":["Administrator"],"userRole.author":["Author"],"userRole.contributor":["Contributor"],"userRole.editor":["Editor"],"userRole.long.admin":["Administrator — full control"],"userRole.long.author":["Author — publish own entries"],"userRole.long.contributor":["Contributor — draft, no publish"],"userRole.long.editor":["Editor — publish + edit any post"],"userRole.long.subscriber":["Subscriber — read only"],"userRole.subscriber":["Subscriber"],"users.list.column.created":["Created"],"users.list.column.lastSignIn":["Last sign-in"],"users.list.column.role":["Role"],"users.list.column.status":["Status"],"users.list.column.user":["User"],"users.list.empty.description":["Clear the filter, or invite someone new to join."],"users.list.empty.invite":["Invite user"],"users.list.empty.title":["No users match your filter"],"users.list.invite":["Add new"],"users.list.loadFailed":["Couldn't load users. Try again."],"users.list.loading":["Loading users"],"users.list.roleFilter.all":["All roles"],"users.list.roleFilter.aria":["Filter by role"],"users.list.row.active":["Active"],"users.list.row.disabled":["Disabled"],"users.list.row.lastSignIn.never":["Never"],"users.list.row.noName":["(no name)"],"users.list.row.you":["You"],"users.list.searchPlaceholder":["Search by email…"],"users.list.title":["Users"],"validate.email.invalid":["Enter a valid email address."],"validate.email.maxLength":["Email is too long."],"validate.email.required":["Enter an email address."],"validate.id.format":["id must be a positive decimal integer"],"validate.name.maxLength":["Name is too long."]}`);export{e as messages};
|
|
@@ -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"./dist-Dgy1ZZMQ.js";import{t as i}from"./utils-DKOQrNEG.js";var a=e(t(),1),o=e(n(),1),s=e=>e.type===`checkbox`,c=e=>e instanceof Date,l=e=>e==null,u=e=>typeof e==`object`,d=e=>!l(e)&&!Array.isArray(e)&&u(e)&&!c(e),f=e=>d(e)&&e.target?s(e.target)?e.target.checked:e.target.value:e,p=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),m=e=>{let t=e.constructor&&e.constructor.prototype;return d(t)&&t.hasOwnProperty(`isPrototypeOf`)},h=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function g(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(h&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(d(e)&&m(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=g(e[t]));return r}var _={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},v={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},y={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},b=`root`,x=[`__proto__`,`constructor`,`prototype`],S=/^\w*$/,C=e=>S.test(e),w=e=>e===void 0,T=/[.[\]'"]/,E=e=>e.split(T).filter(Boolean),D=(e,t,n)=>{if(!t||!d(e))return n;let r=C(t)?[t]:E(t);if(r.some(e=>x.includes(e)))return n;let i=r.reduce((e,t)=>l(e)?void 0:e[t],e);return w(i)||i===e?w(e[t])?n:e[t]:i},O=e=>typeof e==`boolean`,k=e=>typeof e==`function`,A=(e,t,n)=>{let r=-1,i=C(t)?[t]:E(t),a=i.length,o=a-1;for(;++r<a;){let t=i[r],a=n;if(r!==o){let n=e[t];a=d(n)||Array.isArray(n)?n:isNaN(+i[r+1])?{}:[]}if(x.includes(t))return;e[t]=a,e=e[t]}},j=o.createContext(null);j.displayName=`HookFormControlContext`;var M=()=>o.useContext(j),N=(e,t,n,r=!0)=>{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==v.all&&(t._proxyFormState[i]=!r||v.all),n&&(n[i]=!0),e[i]}});return i},P=h?o.useLayoutEffect:o.useEffect;function F(e){let t=M(),{control:n=t,disabled:r,name:i,exact:a}=e||{},[s,c]=o.useState(()=>({...n._formState,defaultValues:n._defaultValues})),l=o.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return P(()=>n._subscribe({name:i,formState:l.current,exact:a,callback:e=>{!r&&c({...n._formState,...e,defaultValues:n._defaultValues})}}),[i,r,a]),o.useEffect(()=>{l.current.isValid&&n._setValid(!0)},[n]),o.useMemo(()=>N(s,n,l.current,!1),[s,n])}var I=e=>typeof e==`string`,ee=(e,t,n,r,i)=>I(e)?(r&&t.watch.add(e),D(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),D(n,e))):(r&&(t.watchAll=!0),n),L=e=>l(e)||!u(e),te=(e,t)=>t.length===0&&!Array.isArray(e)&&!m(e);function R(e,t,n=new WeakMap){if(e===t)return!0;if(L(e)||L(t))return Object.is(e,t);if(c(e)&&c(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(te(e,r)||te(t,i))return Object.is(e,t);if(!r.length&&Array.isArray(e)!==Array.isArray(t))return!1;let a=n.get(e);if(a&&a.has(t))return!0;if(a)a.add(t);else{let r=new WeakSet;r.add(t),n.set(e,r)}for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(c(r)&&c(e)||(d(r)||Array.isArray(r))&&(d(e)||Array.isArray(e))?!R(r,e,n):!Object.is(r,e))return!1}}return!0}function z(e){let t=M(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:s,compute:c}=e||{},l=o.useRef(i),u=o.useRef(c),d=o.useRef(void 0),f=o.useRef(n),p=o.useRef(r);u.current=c;let[m,h]=o.useState(()=>{let e=n._getWatch(r,l.current);return u.current?u.current(e):e}),g=o.useCallback(e=>{let t=ee(r,n._names,e||n._formValues,!1,l.current);return u.current?u.current(t):t},[n._formValues,n._names,r]),_=o.useCallback(e=>{if(!a){let t=ee(r,n._names,e||n._formValues,!1,l.current);if(u.current){let e=u.current(t);R(e,d.current)||(h(e),d.current=e)}else h(t)}},[n._formValues,n._names,a,r]);P(()=>((f.current!==n||!R(p.current,r))&&(f.current=n,p.current=r,_()),n._subscribe({name:r,formState:{values:!0},exact:s,callback:e=>{_(e.values)}})),[n,s,r,_]),o.useEffect(()=>n._removeUnmounted());let v=f.current!==n,y=p.current,b=o.useMemo(()=>{if(a)return null;let e=!v&&!R(y,r);return v||e?g():null},[a,v,r,y,g]);return b===null?m:b}function B(e){let t=M(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:s,exact:c=!0}=e,l=p(i._names.array,n),u=z({control:i,name:n,defaultValue:o.useMemo(()=>D(i._formValues,n,D(i._defaultValues,n,s)),[i,n,s]),exact:c}),d=F({control:i,name:n,exact:c}),m=o.useRef(e),h=o.useRef(null),v=o.useRef(i.register(n,{...e.rules,value:u,...O(e.disabled)?{disabled:e.disabled}:{}}));m.current=e;let y=o.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!D(d.errors,n)},isDirty:{enumerable:!0,get:()=>!!D(d.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!D(d.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!D(d.validatingFields,n)},error:{enumerable:!0,get:()=>D(d.errors,n)}}),[d,n]),b=o.useCallback(e=>{let t=f(e);return D(i._fields,n)||(v.current=i.register(n,{...m.current.rules,value:t})),v.current.onChange({target:{value:f(e),name:n},type:_.CHANGE})},[n,i]),x=o.useCallback(()=>v.current.onBlur({target:{value:D(i._formValues,n),name:n},type:_.BLUR}),[n,i._formValues]),S=o.useCallback(e=>{e&&(h.current={focus:()=>k(e.focus)&&e.focus(),select:()=>k(e.select)&&e.select(),setCustomValidity:t=>k(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>k(e.reportValidity)&&e.reportValidity()});let t=D(i._fields,n);t&&t._f&&e&&(t._f.ref=h.current)},[i._fields,n]),C=o.useMemo(()=>({name:n,value:u,...O(r)||d.disabled?{disabled:d.disabled||r}:{},onChange:b,onBlur:x,ref:S}),[n,r,d.disabled,b,x,S,u]);return o.useEffect(()=>{let e=i._options.shouldUnregister||a;i.register(n,{...m.current.rules,...O(m.current.disabled)?{disabled:m.current.disabled}:{}});let t=(e,t)=>{let n=D(i._fields,e);n&&n._f&&(n._f.mount=t)};if(t(n,!0),e){let e=g(D(a?i._defaultValues:i._options.values||i._defaultValues,n,D(i._options.defaultValues,n,m.current.defaultValue)));A(i._defaultValues,n,e),w(D(i._formValues,n))&&A(i._formValues,n,e)}if(!l&&i.register(n),h.current){let e=D(i._fields,n);e&&e._f&&(e._f.ref=h.current)}return()=>{(l?e&&!i._state.action:e)?i.unregister(n):t(n,!1)}},[n,i,l,a]),o.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),o.useMemo(()=>({field:C,formState:d,fieldState:y}),[C,d,y])}var ne=e=>e.render(B(e)),re=e=>{let t={};for(let n of Object.keys(e))if(u(e[n])&&e[n]!==null&&!c(e[n])){let r=re(e[n]);for(let e of Object.keys(r))t[`${n}.${e}`]=r[e]}else t[n]=e[n];return t},ie=o.createContext(null);ie.displayName=`HookFormContext`;var ae=()=>o.useContext(ie),oe=({children:e,watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:s,setValues:c,trigger:l,formState:u,resetField:d,reset:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v})=>{let y=o.useMemo(()=>({watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:s,setValues:c,trigger:l,formState:u,resetField:d,reset:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v}),[a,h,u,r,n,p,g,f,d,i,_,s,c,v,l,m,t]);return o.createElement(ie.Provider,{value:y},o.createElement(j.Provider,{value:y.control},e))},se=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},ce=e=>Array.isArray(e)?e.filter(Boolean):[],le=e=>Array.isArray(e)?e:[e],ue=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function de(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&d(i)&&a){let e=de(i,a);d(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var V=e=>d(e)&&!Object.keys(e).length,fe=e=>e.type===`file`,pe=e=>{if(!h)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},me=e=>e.type===`select-multiple`,H=e=>e.type===`radio`,he=e=>H(e)||s(e),ge=e=>pe(e)&&e.isConnected;function _e(e,t){let n=t.slice(0,-1).length,r=0;for(;r<n;){if(l(e)){e=void 0;break}e=e[t[r]],r++}return e}function ve(e){for(let t in e)if(e.hasOwnProperty(t)&&!w(e[t]))return!1;return!0}function U(e,t){if(I(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;let n=Array.isArray(t)?t:C(t)?[t]:E(t);if(n.some(e=>x.includes(String(e))))return e;let r=n.length===1?e:_e(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(d(r)&&V(r)||Array.isArray(r)&&ve(r))&&U(e,n.slice(0,-1)),e}var W=e=>{for(let t in e)if(k(e[t]))return!0;return!1};function ye(e){return Array.isArray(e)||d(e)&&!W(e)}function G(e,t={}){for(let n in e){let r=e[n];ye(r)?(t[n]=Array.isArray(r)?[]:{},G(r,t[n])):w(r)||(t[n]=!0)}return t}function K(e){if(e!==!1){if(e===!0)return!0;if(Array.isArray(e)){let t=e.map(e=>K(e));return t.some(e=>e!==void 0)?t:void 0}if(d(e)){let t={};for(let n in e){let r=K(e[n]);w(r)||(t[n]=r)}return Object.keys(t).length?t:void 0}}}function q(e,t,n){n||=G(t);for(let r in e){let i=e[r];if(ye(i))w(t)||L(n[r])?n[r]=G(i,Array.isArray(i)?[]:{}):q(i,l(t)?{}:t[r],n[r]);else{let e=t[r];n[r]=!R(i,e)}}return K(n)||{}}var be={value:!1,isValid:!1},J={value:!0,isValid:!0},xe=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!w(e[0].attributes.value)?w(e[0].value)||e[0].value===``?J:{value:e[0].value,isValid:!0}:J:be}return be},Se=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>w(e)?e:t?e===``?NaN:e&&+e:n&&I(e)?new Date(e):r?r(e):e,Ce={isValid:!1,value:null},we=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Ce):Ce;function Te(e){let t=e.ref;return fe(t)?t.files:H(t)?we(e.refs).value:me(t)?[...t.selectedOptions].map(({value:e})=>e):s(t)?xe(e.refs).value:Se(w(t.value)?e.ref.value:t.value,e)}var Ee=(e,t,n,r)=>{let i={};for(let n of e){let e=D(t,n);e&&A(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},Y=e=>e instanceof RegExp,De=e=>w(e)?e:Y(e)?e.source:d(e)?Y(e.value)?e.value.source:e.value:e,Oe=e=>({isOnSubmit:!e||e===v.onSubmit,isOnBlur:e===v.onBlur,isOnChange:e===v.onChange,isOnAll:e===v.all,isOnTouch:e===v.onTouched}),ke=`AsyncFunction`,Ae=e=>{if(!e||!e.validate)return!1;if(k(e.validate))return e.validate.constructor.name===ke;if(d(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===ke)return!0}return!1},je=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),Me=(e,t,n)=>{if(n)return!1;if(t.watchAll||t.watch.has(e))return!0;for(let n of t.watch)if(e.startsWith(n)&&e.charAt(n.length)===`.`)return!0;return!1},Ne=(e,t,n,r)=>{for(let i of n||Object.keys(e)){let n=D(e,i);if(n){let{_f:e,...a}=n;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(Ne(a,t))break}else if(d(a)&&Ne(a,t))break}}};function Pe(e,t,n){let r=D(e,n);if(r||C(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=D(t,r),o=D(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var Fe=(e,t,n,r)=>{n(e);let{name:i,...a}=e,o=Object.keys(a);return!o.length||r&&o.length>=Object.keys(t).length||o.find(e=>t[e]===(!r||v.all))},Ie=(e,t,n)=>!e||!t||e===t||le(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),Le=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:(n?r.isOnChange:i.isOnChange)?e:!0,Re=(e,t)=>!ce(D(e,t)).length&&U(e,t),ze=(e,t,n)=>{let r=D(e,n),i=Array.isArray(r)?r:[];return A(i,b,t[n]),A(e,n,i),e};function X(e,t,n=`validate`){if(I(e)||Array.isArray(e)&&e.every(I)||O(e)&&!e)return{type:n,message:I(e)?e:``,ref:t}}var Z=e=>d(e)&&!Y(e)?e:{value:e,message:``},Be=async(e,t,n,r,i,a)=>{let{ref:o,refs:c,required:u,maxLength:f,minLength:p,min:m,max:h,pattern:g,validate:_,name:v,valueAsNumber:b,mount:x}=e._f,S=D(n,v);if(!x||t.has(v))return{};let C=c?c[0]:o,T=e=>{if(i&&C.reportValidity){let t=O(e)?``:e||``;c?c.forEach(e=>e.setCustomValidity(t)):C.setCustomValidity(t),C.reportValidity()}},E={},A=H(o),j=s(o),M=A||j,N=(b||fe(o))&&w(o.value)&&w(S)||pe(o)&&o.value===``||S===``||Array.isArray(S)&&!S.length,P=se.bind(null,v,r,E),F=(e,t,n,r=y.maxLength,i=y.minLength)=>{let a=e?t:n;E[v]={type:e?r:i,message:a,ref:o,...P(e?r:i,a)}};if(a?!Array.isArray(S)||!S.length:u&&(!M&&(N||l(S))||O(S)&&!S||j&&!xe(c).isValid||A&&!we(c).isValid)){let{value:e,message:t}=I(u)?{value:!!u,message:u}:Z(u);if(e&&(E[v]={type:y.required,message:t,ref:C,...P(y.required,t)},!r))return T(t),E}if(!N&&(!l(m)||!l(h))){let e,t,n=Z(h),i=Z(m);if(!l(S)&&!isNaN(S)){let r=o.valueAsNumber||S&&+S;l(n.value)||(e=r>n.value),l(i.value)||(t=r<i.value)}else{let r=o.valueAsDate||new Date(S),a=e=>new Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;I(n.value)&&S&&(e=s?a(S)>a(n.value):c?S>n.value:r>new Date(n.value)),I(i.value)&&S&&(t=s?a(S)<a(i.value):c?S<i.value:r<new Date(i.value))}if((e||t)&&(F(!!e,n.message,i.message,y.max,y.min),!r))return T(E[v].message),E}if((f||p)&&!N&&(I(S)||a&&Array.isArray(S))){let e=Z(f),t=Z(p),n=!l(e.value)&&S.length>+e.value,i=!l(t.value)&&S.length<+t.value;if((n||i)&&(F(n,e.message,t.message),!r))return T(E[v].message),E}if(g&&!N&&I(S)){let{value:e,message:t}=Z(g);if(Y(e)&&!S.match(e)&&(E[v]={type:y.pattern,message:t,ref:o,...P(y.pattern,t)},!r))return T(t),E}if(_){if(k(_)){let e=X(await _(S,n),C);if(e&&(E[v]={...e,...P(y.validate,e.message)},!r))return T(e.message),E}else if(d(_)){let e={};for(let t in _){if(!V(e)&&!r)break;let i=X(await _[t](S,n),C,t);i&&(e={...i,...P(t,i.message)},T(i.message),r&&(E[v]=e))}if(!V(e)&&(E[v]={ref:C,...e},!r))return E}}return T(!0),E},Ve={mode:v.onSubmit,reValidateMode:v.onChange,shouldFocusError:!0},He=`form`,Ue={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function We(e={}){let t={...Ve,...e},n={...g(Ue),isLoading:k(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(d(t.defaultValues)||d(t.values))&&g(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:g(i),o={action:!1,mount:!1,watch:!1,keepIsValid:!1},u={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},m,x=0,S=0,T=Oe(t.mode),j=Oe(t.reValidateMode),M={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},N={...M},P={...N},F={array:ue(),state:ue()},L=t.criteriaMode===v.all,te=e=>t=>{clearTimeout(x),x=setTimeout(e,t)},z=async e=>{if(!o.keepIsValid&&!t.disabled&&(N.isValid||P.isValid||e)){let e;t.resolver?(e=V((await W()).errors),B()):e=await K({fields:r,onlyCheckValid:!0,eventType:_.VALID}),e!==n.isValid&&F.state.next({isValid:e})}},B=(e,r)=>{!t.disabled&&(N.isValidating||N.validatingFields||P.isValidating||P.validatingFields)&&((e||Array.from(u.mount)).forEach(e=>{e&&(r?A(n.validatingFields,e,r):U(n.validatingFields,e))}),F.state.next({validatingFields:n.validatingFields,isValidating:!V(n.validatingFields)}))},ne=()=>{n.dirtyFields=q(i,a)},ie=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,u&&Array.isArray(D(r,e))){let t=s(D(r,e),c.argA,c.argB);l&&A(r,e,t)}if(u&&Array.isArray(D(n.errors,e))){let t=s(D(n.errors,e),c.argA,c.argB);l&&A(n.errors,e,t),Re(n.errors,e)}if((N.touchedFields||P.touchedFields)&&u&&Array.isArray(D(n.touchedFields,e))){let t=s(D(n.touchedFields,e),c.argA,c.argB);l&&A(n.touchedFields,e,t)}(N.dirtyFields||P.dirtyFields)&&ne(),F.state.next({name:e,isDirty:J(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else A(a,e,i)},ae=(e,t)=>{A(n.errors,e,t),n.errors={...n.errors},F.state.next({errors:n.errors})},oe=e=>{n.errors=e,F.state.next({errors:n.errors,isValid:!1})},se=e=>{let t=C(e)?[e]:E(e),n=a,r=i;for(let e=0;e<t.length-1;e++){let i=t[e];if(n=l(n)?n:n[i],r=l(r)?r:r[i],n===null&&r!==null)return!0}return!1},H=(t,s,c,l)=>{let d=D(r,t);if(d){if(se(t))return;let r=w(D(a,t)),f=D(a,t,w(c)?D(i,t):c);w(f)||l&&l.defaultChecked||s?A(a,t,s?f:Te(d._f)):we(t,f),o.mount&&!o.action&&(z(),r&&n.isDirty&&(N.isDirty||P.isDirty)&&(J()||(n.isDirty=!1,F.state.next({...n}))),e.shouldUnregister&&r&&!w(D(a,t))&&Me(t,u)&&(o.watch=!0))}},_e=(e,r,o,s,c)=>{let l=!1,u=!1,d={name:e};if(!t.disabled){if(!o||s){let t=R(D(i,e),r);(N.isDirty||P.isDirty)&&(u=n.isDirty,n.isDirty=d.isDirty=!t||J(),l=u!==d.isDirty),u=!!D(n.dirtyFields,e),t===n.isDirty?t?U(n.dirtyFields,e):A(n.dirtyFields,e,!0):n.dirtyFields=q(i,a),d.dirtyFields=n.dirtyFields,l||=(N.dirtyFields||P.dirtyFields)&&u!==!t}if(o){let t=D(n.touchedFields,e);t||(A(n.touchedFields,e,o),d.touchedFields=n.touchedFields,l||=(N.touchedFields||P.touchedFields)&&t!==o)}l&&c&&F.state.next(d)}return l?d:{}},ve=(e,r,i,a)=>{let o=D(n.errors,e),s=(N.isValid||P.isValid)&&O(r)&&n.isValid!==r;if(t.delayError&&i?(m=te(()=>ae(e,i)),m(t.delayError)):(clearTimeout(x),m=null,i?A(n.errors,e,i):U(n.errors,e),n.errors={...n.errors}),(i?!R(o,i):o)||!V(a)||s){let t={...a,...s&&O(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},F.state.next(t)}},W=async e=>(B(e,!0),await t.resolver(a,t.context,Ee(e||u.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),ye=async e=>{let{errors:t}=await W(e);if(B(e),e){for(let r of e){let e=D(t,r);e?u.array.has(r)&&d(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?ze(n.errors,{[r]:e},r):A(n.errors,r,e):U(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},G=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(d(i))for(let e in i){let t=i[e];t&&$(`${He}.${e}`,{message:I(t.message)?t.message:``,type:t.type||y.validate})}else I(i)||!i?$(He,{message:i||``,type:y.validate}):Je(He);return i}return!0},K=async({fields:r,onlyCheckValid:i,name:o,eventType:s,context:c={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(c.runRootValidation=!0,!await G({name:o,eventType:s})&&(c.valid=!1,i)))return c.valid;for(let o in r){let l=r[o];if(l){let{_f:r,...d}=l;if(r){let o=u.array.has(r.name),s=l._f&&Ae(l._f),d=N.validatingFields||N.isValidating||P.validatingFields||P.isValidating;s&&d&&B([r.name],!0);let f=await Be(l,u.disabled,a,L,t.shouldUseNativeValidation&&!i,o);if(s&&d&&B([r.name]),f[r.name]&&(c.valid=!1,i)||(!i&&(D(f,r.name)?o?ze(n.errors,f,r.name):A(n.errors,r.name,f[r.name]):U(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!V(d)&&await K({context:c,onlyCheckValid:i,fields:d,name:o,eventType:s})}}return c.valid},be=()=>{for(let e of u.unMount){let t=D(r,e);t&&(t._f.refs?t._f.refs.every(e=>!ge(e)):!ge(t._f.ref))&&Qe(e)}u.unMount=new Set},J=(e,n)=>!t.disabled&&(e&&n&&A(a,e,n),!R(o.mount?a:i,i)),xe=(e,t,n)=>ee(e,u,{...o.mount?a:w(t)?i:I(e)?{[e]:t}:t},n,t),Ce=e=>ce(D(o.mount?a:i,e,t.shouldUnregister?D(i,e,[]):[])),we=(e,t,n={},i=!1,o=!1)=>{let c=D(r,e),u=t;if(c){let n=c._f;n&&(!n.disabled&&A(a,e,Se(t,n)),u=pe(n.ref)&&l(t)?``:t,me(n.ref)?[...n.ref.options].forEach(e=>e.selected=u.includes(e.value)):n.refs?s(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(Array.isArray(u)?e.checked=!!u.find(t=>t===e.value):e.checked=u===e.value||!!u)}):n.refs.forEach(e=>e.checked=e.value===u):fe(n.ref)?n.ref.value=``:(n.ref.value=u,!n.ref.type&&!o&&F.state.next({name:e,values:i?a:g(a)})))}(n.shouldDirty||n.shouldTouch)&&_e(e,u,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&Q(e)},Y=(e,t,n,i=!1,a=!1)=>{for(let o in t){if(!t.hasOwnProperty(o))return;let s=t[o],l=e+`.`+o,f=D(r,l);(u.array.has(e)||d(s)||f&&!f._f)&&!c(s)?Y(l,s,n,i,a):we(l,s,n,i,a)}},ke=(e,t,i,s,c=!1)=>{let d=D(r,e),f=u.array.has(e),p=s?t:g(t),m=R(D(a,e),p);if(m||A(a,e,p),f)F.array.next({name:e,values:s?a:g(a)}),(N.isDirty||N.dirtyFields||P.isDirty||P.dirtyFields)&&i.shouldDirty&&(ne(),c||F.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:J(e,p)}));else{let t=Array.isArray(p)&&!p.length||V(p);!d||d._f||l(p)||t?we(e,p,i,s,c):Y(e,p,i,s,c)}if(!m&&!c){let t=Me(e,u),r=s?a:g(a);F.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},X=(e,t,n={})=>ke(e,t,n,!1),Z=(e,t={})=>{let r=k(e)?e(a):e;if(!R(a,r)){a={...a,...r};let e=re(r);for(let n of u.mount)n in e&&ke(n,e[n],t,!0,!0);F.state.next({...n,name:void 0,type:void 0,...S?{values:a}:{}}),t.shouldValidate&&z()}},We=async i=>{o.mount=!0;let s=i.target,l=s.name,d=!0,p=D(r,l),h=e=>{d=Number.isNaN(e)||c(e)&&isNaN(e.getTime())||R(e,D(a,l,e))};if(p){let o,c,v=s.type?Te(p._f):f(i),y=i.type===_.BLUR||i.type===_.FOCUS_OUT,b=!je(p._f)&&!e.validate&&!t.resolver&&!D(n.errors,l)&&!p._f.deps,x=b||Le(y,D(n.touchedFields,l),n.isSubmitted,j,T),C=Me(l,u,y);A(a,l,v),y?(!s||!s.readOnly)&&(p._f.onBlur&&p._f.onBlur(i),m&&m(0)):p._f.onChange&&p._f.onChange(i);let w=_e(l,v,y),E=!V(w)||C;if(!y&&F.state.next({name:l,type:i.type,...S?{values:g(a)}:{}}),x)return(!b||!n.isValid)&&(N.isValid||P.isValid)&&(t.mode===`onBlur`?y&&z():y||z()),E&&F.state.next({name:l,...C?{}:w});if(!t.resolver&&e.validate&&await G({name:l,eventType:i.type}),!y&&C&&F.state.next({...n}),t.resolver){let{errors:e}=await W([l]);if(B([l]),h(v),!d){!V(w)&&F.state.next(w);return}let t=Pe(n.errors,r,l),i=Pe(e,r,t.name||l);o=i.error,l=i.name,c=V(e)}else B([l],!0),o=(await Be(p,u.disabled,a,L,t.shouldUseNativeValidation))[l],B([l]),h(v),d&&(o?c=!1:(N.isValid||P.isValid)&&(c=await K({fields:r,onlyCheckValid:!0,name:l,eventType:i.type})));d&&(p._f.deps&&(!Array.isArray(p._f.deps)||p._f.deps.length>0)&&Q(p._f.deps),ve(l,c,o,w))}},Ge=(e,t)=>{if(D(n.errors,t)&&e.focus)return e.focus(),1},Q=async(e,i={})=>{let a,o,s=le(e);if(t.resolver){let t=await ye(w(e)?e:s);a=V(t),o=e?!s.some(e=>D(t,e)):a}else e?(o=(await Promise.all(s.map(async e=>{let t=D(r,e);return await K({fields:t&&t._f?{[e]:t}:t,eventType:_.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&z()):o=a=await K({fields:r,name:e,eventType:_.TRIGGER});return F.state.next({...!I(e)||(N.isValid||P.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&Ne(r,Ge,e?s:u.mount),o},Ke=(e,t)=>{let r={...o.mount?a:i};return t&&(r=de(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),w(e)?r:I(e)?D(r,e):e.map(e=>D(r,e))},qe=(e,t)=>({invalid:!!D((t||n).errors,e),isDirty:!!D((t||n).dirtyFields,e),error:D((t||n).errors,e),isValidating:!!D(n.validatingFields,e),isTouched:!!D((t||n).touchedFields,e)}),Je=e=>{let t=e?le(e):void 0;t?.forEach(e=>U(n.errors,e)),t?t.forEach(e=>{F.state.next({name:e,errors:n.errors})}):F.state.next({errors:{}})},$=(e,t,i)=>{let a=(D(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=D(n.errors,e)||{};A(n.errors,e,{...l,...t,ref:a}),F.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},Ye=(e,t)=>{if(k(e)){S++;let{unsubscribe:n}=F.state.subscribe({next:n=>`values`in n&&e(n.values||xe(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,S--,n())}}}return xe(e,t,!0)},Xe=e=>{let t=!!e.formState?.values;t&&S++;let{unsubscribe:r}=F.state.subscribe({next:t=>{if(Ie(e.name,t.name,e.exact)&&Fe(t,e.formState||N,ct,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}});if(!t)return r;let o=!1;return()=>{o||(o=!0,S--,r())}},Ze=e=>(o.mount=!0,P={...P,...e.formState},Xe({...e,formState:{...M,...e.formState}})),Qe=(e,o={})=>{for(let s of e?le(e):u.mount)u.mount.delete(s),u.array.delete(s),o.keepValue||(U(r,s),U(a,s)),!o.keepError&&U(n.errors,s),!o.keepDirty&&U(n.dirtyFields,s),!o.keepTouched&&U(n.touchedFields,s),!o.keepIsValidating&&U(n.validatingFields,s),!t.shouldUnregister&&!o.keepDefaultValue&&U(i,s);F.state.next({values:g(a)}),F.state.next({...n,...o.keepDirty?{isDirty:J()}:{}}),!o.keepIsValid&&z()},$e=({disabled:e,name:t})=>{if(O(e)&&o.mount||e||u.disabled.has(t)){let n=u.disabled.has(t)!==!!e;e?u.disabled.add(t):u.disabled.delete(t),n&&o.mount&&!o.action&&z()}},et=(e,n={})=>{let a=D(r,e),s=O(n.disabled)||O(t.disabled),c=!u.registerName.has(e)&&a&&a._f&&!a._f.mount;return A(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),u.mount.add(e),a&&!c?$e({disabled:O(n.disabled)?n.disabled:t.disabled,name:e}):H(e,!0,n.value),{...s?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:De(n.min),max:De(n.max),minLength:De(n.minLength),maxLength:De(n.maxLength),pattern:De(n.pattern)}:{},name:e,onChange:We,onBlur:We,ref:s=>{if(s){u.registerName.add(e),et(e,n),u.registerName.delete(e),a=D(r,e);let t=w(s.value)&&s.querySelectorAll&&s.querySelectorAll(`input,select,textarea`)[0]||s,o=he(t),c=a._f.refs||[];if(o?c.find(e=>e===t):t===a._f.ref)return;A(r,e,{_f:{...a._f,...o?{refs:[...c.filter(ge),t,...Array.isArray(D(i,e))?[{}]:[]],ref:{type:t.type,name:e}}:{ref:t}}}),H(e,!1,void 0,t)}else a=D(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(p(u.array,e)&&o.action)&&u.unMount.add(e)}}},tt=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&Ne(r,Ge,u.mount),nt=e=>{O(e)&&(F.state.next({disabled:e}),Ne(r,(t,n)=>{let i=D(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},rt=(e,i)=>async o=>{let s;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let c=g(a);if(F.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await W();B(),n.errors=e,c=g(t)}else await K({fields:r,eventType:_.SUBMIT});if(u.disabled.size)for(let e of u.disabled)U(c,e);if(U(n.errors,b),V(n.errors)){F.state.next({errors:{}});try{await e(c,o)}catch(e){s=e}}else i&&await i({...n.errors},o),tt(),setTimeout(tt);if(F.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:V(n.errors)&&!s,submitCount:n.submitCount+1,errors:n.errors}),s)throw s},it=(e,t={})=>{D(r,e)&&(w(t.defaultValue)?X(e,g(D(i,e))):(X(e,t.defaultValue),A(i,e,g(t.defaultValue))),t.keepTouched||U(n.touchedFields,e),t.keepDirty||(U(n.dirtyFields,e),n.isDirty=t.defaultValue?J(e,g(D(i,e))):J()),t.keepError||(U(n.errors,e),N.isValid&&z()),F.state.next({...n}))},at=(e,s={})=>{let c=e?g(e):i,l=g(c),d=V(e),f=l;if(s.keepDefaultValues||(i=c),!s.keepValues){if(s.keepDirtyValues){let e=new Set([...u.mount,...Object.keys(q(i,a))]);for(let t of Array.from(e)){let e=D(n.dirtyFields,t),r=D(a,t),i=D(f,t);e&&!w(r)?A(f,t,r):!e&&!w(i)&&X(t,i)}}else{if(h&&w(e))for(let e of u.mount){let t=D(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(pe(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(s.keepFieldsRef)for(let e of u.mount)X(e,D(f,e));else r={}}if(t.shouldUnregister){if(a=s.keepDefaultValues?g(i):{},s.keepFieldsRef)for(let e of u.mount)A(a,e,D(f,e))}else a=g(f);F.array.next({values:{...f}}),F.state.next({name:void 0,type:void 0,values:{...f}})}u={mount:s.keepDirtyValues?u.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!N.isValid||!!s.keepIsValid||!!s.keepDirtyValues||!t.shouldUnregister&&!V(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!s.keepIsValid,o.action=!1,s.keepErrors||(n.errors={}),F.state.next({submitCount:s.keepSubmitCount?n.submitCount:0,isDirty:d?!1:s.keepDirty?n.isDirty:s.keepValues?J():!!(s.keepDefaultValues&&!R(e,i)),isSubmitted:s.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:s.keepDirtyValues?s.keepDefaultValues&&a?q(i,a):n.dirtyFields:s.keepDefaultValues&&e?q(i,e):s.keepDirty?n.dirtyFields:{},touchedFields:s.keepTouched?n.touchedFields:{},errors:s.keepErrors?n.errors:{},isSubmitSuccessful:s.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},ot=(e,n)=>at(k(e)?e(a):e,{...t.resetOptions,...n}),st=(e,t={})=>{let n=D(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&k(e.select)&&e.select()})}},ct=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}},lt={control:{register:et,unregister:Qe,getFieldState:qe,handleSubmit:rt,setError:$,_subscribe:Xe,_runSchema:W,_updateIsValidating:B,_focusError:tt,_getWatch:xe,_getDirty:J,_setValid:z,_setFieldArray:ie,_setDisabledField:$e,_setErrors:oe,_getFieldArray:Ce,_reset:at,_resetDefaultValues:()=>k(t.defaultValues)&&t.defaultValues().then(e=>{ot(e,t.resetOptions),F.state.next({isLoading:!1})}),_removeUnmounted:be,_disableForm:nt,_subjects:F,_proxyFormState:N,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return u},set _names(e){u=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e},T=Oe(t.mode),j=Oe(t.reValidateMode)}},subscribe:Ze,trigger:Q,register:et,handleSubmit:rt,watch:Ye,setValue:X,setValues:Z,getValues:Ke,reset:ot,resetField:it,resetDefaultValues:(e,t={})=>{if(i=g(e),!t.keepDirty){let e=q(i,a);n.dirtyFields=e,n.isDirty=!V(e)}t.keepIsValid||z(),F.state.next({...n,defaultValues:i})},clearErrors:Je,unregister:Qe,setError:$,setFocus:st,getFieldState:qe};return{...lt,formControl:lt}}function Ge(e={}){let t=o.useRef(void 0),n=o.useRef(void 0),r=o.useRef(e.formControl),[i,a]=o.useState(()=>({...g(Ue),isLoading:k(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:k(e.defaultValues)?void 0:e.defaultValues}));if(!t.current||e.formControl&&r.current!==e.formControl)if(r.current=e.formControl,e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!k(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=We(e);t.current={...r,formState:i}}let s=t.current.control;return s._options=e,P(()=>{let e=s._subscribe({formState:s._proxyFormState,callback:()=>a({...s._formState,defaultValues:s._defaultValues}),reRenderRoot:!0});return a(e=>({...e,isReady:!0})),s._formState.isReady=!0,e},[s]),o.useEffect(()=>s._disableForm(e.disabled),[s,e.disabled]),o.useEffect(()=>{e.mode&&(s._options.mode=e.mode),e.reValidateMode&&(s._options.reValidateMode=e.reValidateMode)},[s,e.mode,e.reValidateMode]),o.useEffect(()=>{e.errors&&(s._setErrors(e.errors),s._focusError())},[s,e.errors]),o.useEffect(()=>{e.shouldUnregister&&s._subjects.state.next({values:s._getWatch()})},[s,e.shouldUnregister]),o.useEffect(()=>{if(s._proxyFormState.isDirty){let e=s._getDirty();e!==i.isDirty&&s._subjects.state.next({isDirty:e})}},[s,i.isDirty]),o.useEffect(()=>{e.values&&!R(e.values,n.current)?(s._reset(e.values,{keepFieldsRef:!0,...s._options.resetOptions}),s._options.resetOptions?.keepIsValid||s._setValid(),n.current=e.values,a(e=>({...e}))):s._resetDefaultValues()},[s,e.values]),o.useEffect(()=>{s._state.mount||(s._setValid(),s._state.mount=!0),s._state.watch&&(s._state.watch=!1,s._subjects.state.next({...s._formState})),s._removeUnmounted()}),t.current.formState=o.useMemo(()=>N(i,s),[s,i]),t.current}function Q({className:e,...t}){return(0,a.jsx)(`label`,{"data-slot":`label`,className:i(`text-sm leading-none font-medium select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}var Ke=oe,qe=o.createContext({}),Je=({...e})=>(0,a.jsx)(qe.Provider,{value:{name:e.name},children:(0,a.jsx)(ne,{...e})}),$=()=>{let e=o.useContext(qe),t=o.useContext(Ye),{getFieldState:n}=ae(),r=F({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}},Ye=o.createContext({});function Xe({className:e,...t}){let n=o.useId();return(0,a.jsx)(Ye.Provider,{value:{id:n},children:(0,a.jsx)(`div`,{"data-slot":`form-item`,className:i(`grid gap-2`,e),...t})})}function Ze({className:e,...t}){let{error:n,formItemId:r}=$();return(0,a.jsx)(Q,{"data-slot":`form-label`,"data-error":!!n,className:i(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Qe({...e}){let{error:t,formItemId:n,formDescriptionId:i,formMessageId:o}=$();return(0,a.jsx)(r,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${i} ${o}`:`${i}`,"aria-invalid":!!t,...e})}function $e({className:e,...t}){let{formDescriptionId:n}=$();return(0,a.jsx)(`p`,{"data-slot":`form-description`,id:n,className:i(`text-muted-foreground text-sm`,e),...t})}function et({className:e,...t}){let{error:n,formMessageId:r}=$(),o=n?String(n?.message??``):t.children;return o?(0,a.jsx)(`p`,{"data-slot":`form-message`,id:r,className:i(`text-destructive text-sm`,e),...t,children:o}):null}export{Xe as a,Q as c,A as d,Ge as f,z as h,Je as i,se as l,F as m,Qe as n,Ze as o,ae as p,$e as r,et as s,Ke as t,D as u};
|