@shapio/cms 0.5.7 → 0.5.8
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/admin/assets/{AssetTile-H0hABhB2.js → AssetTile-BrMzsUZD.js} +2 -2
- package/dist/admin/assets/{AssetTile-H0hABhB2.js.map → AssetTile-BrMzsUZD.js.map} +1 -1
- package/dist/admin/assets/{AssistError-1s3PuY0X.js → AssistError-Cs-r9Ssc.js} +2 -2
- package/dist/admin/assets/{AssistError-1s3PuY0X.js.map → AssistError-Cs-r9Ssc.js.map} +1 -1
- package/dist/admin/assets/{BlockMenuItems-a8zXdfcF.js → BlockMenuItems-DsccXMc_.js} +2 -2
- package/dist/admin/assets/{BlockMenuItems-a8zXdfcF.js.map → BlockMenuItems-DsccXMc_.js.map} +1 -1
- package/dist/admin/assets/{Builder-60jO_nbS.js → Builder-DW-GJA_q.js} +2 -2
- package/dist/admin/assets/{Builder-60jO_nbS.js.map → Builder-DW-GJA_q.js.map} +1 -1
- package/dist/admin/assets/{CodeEditor-BLbJZE9v.js → CodeEditor-CBCR73Wd.js} +2 -2
- package/dist/admin/assets/{CodeEditor-BLbJZE9v.js.map → CodeEditor-CBCR73Wd.js.map} +1 -1
- package/dist/admin/assets/{CopyButton-BOtR_h1H.js → CopyButton-CxFsBHfF.js} +2 -2
- package/dist/admin/assets/{CopyButton-BOtR_h1H.js.map → CopyButton-CxFsBHfF.js.map} +1 -1
- package/dist/admin/assets/{CursorPager-DwLW13ov.js → CursorPager-BW2U3v6l.js} +2 -2
- package/dist/admin/assets/{CursorPager-DwLW13ov.js.map → CursorPager-BW2U3v6l.js.map} +1 -1
- package/dist/admin/assets/{FocalPoint-n-a_AXKN.js → FocalPoint-CpZTve1E.js} +2 -2
- package/dist/admin/assets/{FocalPoint-n-a_AXKN.js.map → FocalPoint-CpZTve1E.js.map} +1 -1
- package/dist/admin/assets/{Form-D_4fhOy0.js → Form-lNrRHc0I.js} +2 -2
- package/dist/admin/assets/{Form-D_4fhOy0.js.map → Form-lNrRHc0I.js.map} +1 -1
- package/dist/admin/assets/{FormCheckboxGroup-1fYisXrr.js → FormCheckboxGroup-DeeaYnzB.js} +2 -2
- package/dist/admin/assets/{FormCheckboxGroup-1fYisXrr.js.map → FormCheckboxGroup-DeeaYnzB.js.map} +1 -1
- package/dist/admin/assets/{FormRadioGroup-B0VZyb1t.js → FormRadioGroup-Cfx5pvzU.js} +2 -2
- package/dist/admin/assets/{FormRadioGroup-B0VZyb1t.js.map → FormRadioGroup-Cfx5pvzU.js.map} +1 -1
- package/dist/admin/assets/{FormSelectField-Br8bkwRF.js → FormSelectField-BzE9Lq9i.js} +2 -2
- package/dist/admin/assets/{FormSelectField-Br8bkwRF.js.map → FormSelectField-BzE9Lq9i.js.map} +1 -1
- package/dist/admin/assets/{FormSwitchField-d8G-YCSX.js → FormSwitchField-BLOh7qei.js} +2 -2
- package/dist/admin/assets/{FormSwitchField-d8G-YCSX.js.map → FormSwitchField-BLOh7qei.js.map} +1 -1
- package/dist/admin/assets/{FormTextareaField-BSKNeTPW.js → FormTextareaField-CO115n_u.js} +2 -2
- package/dist/admin/assets/{FormTextareaField-BSKNeTPW.js.map → FormTextareaField-CO115n_u.js.map} +1 -1
- package/dist/admin/assets/{HintedLabel-CiTDE112.js → HintedLabel-DzHnEdIK.js} +2 -2
- package/dist/admin/assets/{HintedLabel-CiTDE112.js.map → HintedLabel-DzHnEdIK.js.map} +1 -1
- package/dist/admin/assets/{InfoHint-B3XcXtiN.js → InfoHint-CSEtcHjL.js} +2 -2
- package/dist/admin/assets/{InfoHint-B3XcXtiN.js.map → InfoHint-CSEtcHjL.js.map} +1 -1
- package/dist/admin/assets/{InlineConfirm-BfsNH5S_.js → InlineConfirm-yW-iUKFC.js} +2 -2
- package/dist/admin/assets/{InlineConfirm-BfsNH5S_.js.map → InlineConfirm-yW-iUKFC.js.map} +1 -1
- package/dist/admin/assets/{InsertMenuItem-BGwDW_Lu.js → InsertMenuItem-CCr9e0qY.js} +2 -2
- package/dist/admin/assets/{InsertMenuItem-BGwDW_Lu.js.map → InsertMenuItem-CCr9e0qY.js.map} +1 -1
- package/dist/admin/assets/{Match-Dc8bXsKo.js → Match-CcD9KxHH.js} +2 -2
- package/dist/admin/assets/{Match-Dc8bXsKo.js.map → Match-CcD9KxHH.js.map} +1 -1
- package/dist/admin/assets/{NoAccess-CKEKPmqD.js → NoAccess-C8RLPN0I.js} +2 -2
- package/dist/admin/assets/{NoAccess-CKEKPmqD.js.map → NoAccess-C8RLPN0I.js.map} +1 -1
- package/dist/admin/assets/{QueryView-KFtwko9F.js → QueryView-xMP_uJ_t.js} +2 -2
- package/dist/admin/assets/{QueryView-KFtwko9F.js.map → QueryView-xMP_uJ_t.js.map} +1 -1
- package/dist/admin/assets/{RadioTile-CzfxWgHx.js → RadioTile-DQFmni5A.js} +2 -2
- package/dist/admin/assets/{RadioTile-CzfxWgHx.js.map → RadioTile-DQFmni5A.js.map} +1 -1
- package/dist/admin/assets/{RichTextField-BsBoOAP-.js → RichTextField-CVHRIbnu.js} +2 -2
- package/dist/admin/assets/{RichTextField-BsBoOAP-.js.map → RichTextField-CVHRIbnu.js.map} +1 -1
- package/dist/admin/assets/{RowTitle-Cn5mAU58.js → RowTitle-Bqt6evG9.js} +2 -2
- package/dist/admin/assets/{RowTitle-Cn5mAU58.js.map → RowTitle-Bqt6evG9.js.map} +1 -1
- package/dist/admin/assets/{SecretReveal-BCOJAisI.js → SecretReveal-Bm6nYg5J.js} +2 -2
- package/dist/admin/assets/{SecretReveal-BCOJAisI.js.map → SecretReveal-Bm6nYg5J.js.map} +1 -1
- package/dist/admin/assets/{SharedGlyph-CA8tb7UH.js → SharedGlyph-cUmTh0_C.js} +2 -2
- package/dist/admin/assets/{SharedGlyph-CA8tb7UH.js.map → SharedGlyph-cUmTh0_C.js.map} +1 -1
- package/dist/admin/assets/{StepList-sriwGP1e.js → StepList-BXGYD9eJ.js} +2 -2
- package/dist/admin/assets/{StepList-sriwGP1e.js.map → StepList-BXGYD9eJ.js.map} +1 -1
- package/dist/admin/assets/Structure-D8csgrIt.js +2 -0
- package/dist/admin/assets/{Structure-B2HZ9UZu.js.map → Structure-D8csgrIt.js.map} +1 -1
- package/dist/admin/assets/{SuggestAltButton-CqDLAuoa.js → SuggestAltButton-CvIoirnz.js} +2 -2
- package/dist/admin/assets/{SuggestAltButton-CqDLAuoa.js.map → SuggestAltButton-CvIoirnz.js.map} +1 -1
- package/dist/admin/assets/{Thumbnail-mFfESZiW.js → Thumbnail-DNj5TRBI.js} +2 -2
- package/dist/admin/assets/{Thumbnail-mFfESZiW.js.map → Thumbnail-DNj5TRBI.js.map} +1 -1
- package/dist/admin/assets/{UnsavedChangesGuard-C8cDQGEA.js → UnsavedChangesGuard-CUiuMklN.js} +2 -2
- package/dist/admin/assets/{UnsavedChangesGuard-C8cDQGEA.js.map → UnsavedChangesGuard-CUiuMklN.js.map} +1 -1
- package/dist/admin/assets/{UserAvatar-BItYDTyH.js → UserAvatar-p-jV-LoD.js} +2 -2
- package/dist/admin/assets/{UserAvatar-BItYDTyH.js.map → UserAvatar-p-jV-LoD.js.map} +1 -1
- package/dist/admin/assets/{badge-DNQwGXBl.js → badge-CqKF1pwz.js} +2 -2
- package/dist/admin/assets/{badge-DNQwGXBl.js.map → badge-CqKF1pwz.js.map} +1 -1
- package/dist/admin/assets/{changeSets-EMTUJT0M.js → changeSets-8EburmT0.js} +2 -2
- package/dist/admin/assets/{changeSets-EMTUJT0M.js.map → changeSets-8EburmT0.js.map} +1 -1
- package/dist/admin/assets/{constants-miV4q1ur.js → constants-a_15vqOh.js} +2 -2
- package/dist/admin/assets/{constants-miV4q1ur.js.map → constants-a_15vqOh.js.map} +1 -1
- package/dist/admin/assets/{content-CgZS_S7P.js → content-CAjkbZEY.js} +3 -3
- package/dist/admin/assets/content-CAjkbZEY.js.map +1 -0
- package/dist/admin/assets/{contentTypes-CQsHL657.js → contentTypes-84uc0bjR.js} +2 -2
- package/dist/admin/assets/{contentTypes-CQsHL657.js.map → contentTypes-84uc0bjR.js.map} +1 -1
- package/dist/admin/assets/{develop-9ZeAjSIw.js → develop-BOqvnlgt.js} +2 -2
- package/dist/admin/assets/{develop-9ZeAjSIw.js.map → develop-BOqvnlgt.js.map} +1 -1
- package/dist/admin/assets/{dropdown-menu-0dyAtBEd.js → dropdown-menu-_xfaEp5C.js} +2 -2
- package/dist/admin/assets/{dropdown-menu-0dyAtBEd.js.map → dropdown-menu-_xfaEp5C.js.map} +1 -1
- package/dist/admin/assets/{es2015-BJge4oQL.js → es2015-BHmI7wjK.js} +2 -2
- package/dist/admin/assets/es2015-BHmI7wjK.js.map +1 -0
- package/dist/admin/assets/{field-C6NmRYUN.js → field-COOzRptX.js} +2 -2
- package/dist/admin/assets/{field-C6NmRYUN.js.map → field-COOzRptX.js.map} +1 -1
- package/dist/admin/assets/{fileRoute-Bm90K4UY.js → fileRoute-s7mCMYUJ.js} +2 -2
- package/dist/admin/assets/{fileRoute-Bm90K4UY.js.map → fileRoute-s7mCMYUJ.js.map} +1 -1
- package/dist/admin/assets/{followPlural-DEr2kxEc.js → followPlural-Cm7v_Udv.js} +2 -2
- package/dist/admin/assets/{followPlural-DEr2kxEc.js.map → followPlural-Cm7v_Udv.js.map} +1 -1
- package/dist/admin/assets/{inbox-B8XZ8L6s.js → inbox-DGO2D8fa.js} +2 -2
- package/dist/admin/assets/{inbox-B8XZ8L6s.js.map → inbox-DGO2D8fa.js.map} +1 -1
- package/dist/admin/assets/{index-DoJsnLI1.js → index-BIIU9ZI6.js} +4 -4
- package/dist/admin/assets/{index-DoJsnLI1.js.map → index-BIIU9ZI6.js.map} +1 -1
- package/dist/admin/assets/{labels-B2HIVxXg.js → labels-DQckbLGW.js} +2 -2
- package/dist/admin/assets/{labels-B2HIVxXg.js.map → labels-DQckbLGW.js.map} +1 -1
- package/dist/admin/assets/{media-CtbfNgc-.js → media-CURizGns.js} +2 -2
- package/dist/admin/assets/{media-CtbfNgc-.js.map → media-CURizGns.js.map} +1 -1
- package/dist/admin/assets/{network--5X46kWN.js → network-BixABr0o.js} +2 -2
- package/dist/admin/assets/{network--5X46kWN.js.map → network-BixABr0o.js.map} +1 -1
- package/dist/admin/assets/{publishing-DdmWXRaM.js → publishing-Dke9bSKp.js} +2 -2
- package/dist/admin/assets/{publishing-DdmWXRaM.js.map → publishing-Dke9bSKp.js.map} +1 -1
- package/dist/admin/assets/{radio-group-BoN9R_3K.js → radio-group-4ok5evXq.js} +2 -2
- package/dist/admin/assets/{radio-group-BoN9R_3K.js.map → radio-group-4ok5evXq.js.map} +1 -1
- package/dist/admin/assets/{searchSchemas-DNjfDxmj.js → searchSchemas-CSScloG8.js} +2 -2
- package/dist/admin/assets/{searchSchemas-DNjfDxmj.js.map → searchSchemas-CSScloG8.js.map} +1 -1
- package/dist/admin/assets/{sections-BfxPwK0u.js → sections-DqBzSKMP.js} +2 -2
- package/dist/admin/assets/{sections-BfxPwK0u.js.map → sections-DqBzSKMP.js.map} +1 -1
- package/dist/admin/assets/{select-Bp8kO5Ko.js → select-C0USI-Ox.js} +2 -2
- package/dist/admin/assets/{select-Bp8kO5Ko.js.map → select-C0USI-Ox.js.map} +1 -1
- package/dist/admin/assets/{settings-TEbLvC-v.js → settings-B60vHpZd.js} +2 -2
- package/dist/admin/assets/{settings-TEbLvC-v.js.map → settings-B60vHpZd.js.map} +1 -1
- package/dist/admin/assets/{shapes-WrYO9Spf.js → shapes-B5twqZcp.js} +4 -4
- package/dist/admin/assets/{shapes-WrYO9Spf.js.map → shapes-B5twqZcp.js.map} +1 -1
- package/dist/admin/assets/{skeleton-vXOCdnJv.js → skeleton-B5MP72Kw.js} +2 -2
- package/dist/admin/assets/{skeleton-vXOCdnJv.js.map → skeleton-B5MP72Kw.js.map} +1 -1
- package/dist/admin/assets/{switch-B1xClhNG.js → switch-Dp6WYNam.js} +2 -2
- package/dist/admin/assets/{switch-B1xClhNG.js.map → switch-Dp6WYNam.js.map} +1 -1
- package/dist/admin/assets/{tooltip-CS_8cJu2.js → tooltip-BGP1DVBt.js} +2 -2
- package/dist/admin/assets/{tooltip-CS_8cJu2.js.map → tooltip-BGP1DVBt.js.map} +1 -1
- package/dist/admin/assets/{useDiscardGuard-CMMJgkI2.js → useDiscardGuard-BskWSlbT.js} +2 -2
- package/dist/admin/assets/{useDiscardGuard-CMMJgkI2.js.map → useDiscardGuard-BskWSlbT.js.map} +1 -1
- package/dist/admin/assets/{useMediaPickerDialog-xvQ8cofO.js → useMediaPickerDialog-CU-ekPqX.js} +2 -2
- package/dist/admin/assets/{useMediaPickerDialog-xvQ8cofO.js.map → useMediaPickerDialog-CU-ekPqX.js.map} +1 -1
- package/dist/admin/assets/{useMediaUploader-BVNTeSAU.js → useMediaUploader-CBcq1ICg.js} +2 -2
- package/dist/admin/assets/{useMediaUploader-BVNTeSAU.js.map → useMediaUploader-CBcq1ICg.js.map} +1 -1
- package/dist/admin/assets/{useResolvedScheme-CScQpr-P.js → useResolvedScheme-C8vcQVko.js} +2 -2
- package/dist/admin/assets/{useResolvedScheme-CScQpr-P.js.map → useResolvedScheme-C8vcQVko.js.map} +1 -1
- package/dist/admin/assets/{zod-hUh5nXnX.js → zod-Cry7YvLY.js} +2 -2
- package/dist/admin/assets/{zod-hUh5nXnX.js.map → zod-Cry7YvLY.js.map} +1 -1
- package/dist/admin/index.html +25 -25
- package/dist/cli.js +1 -1
- package/dist/{cliMain-D08HeAd_.js → cliMain-papyXJDd.js} +2 -2
- package/dist/{cliMain-D08HeAd_.js.map → cliMain-papyXJDd.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{worker-jspgh10V.js → worker-B-sC-eY2.js} +2 -2
- package/dist/{worker-jspgh10V.js.map → worker-B-sC-eY2.js.map} +1 -1
- package/package.json +5 -5
- package/dist/admin/assets/Structure-B2HZ9UZu.js +0 -2
- package/dist/admin/assets/content-CgZS_S7P.js.map +0 -1
- package/dist/admin/assets/es2015-BJge4oQL.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{Ht as r,K as i,Pt as a,Vt as o,bn as s,ct as c,ut as l,zt as u}from"./src-ndgTSYLX.js";import{i as d}from"./media-BCnVhaDH.js";import{_ as ee,g as f,h as p,i as m,o as h,u as g}from"./auth-CQO4MBUj.js";import{O as te,_,a as v,i as y,n as b,o as ne,t as re}from"./badge-DNQwGXBl.js";import{n as ie}from"./Match-Dc8bXsKo.js";import{n as x,t as ae}from"./createLucideIcon-CLmh7Go-.js";import{i as S,n as C,r as oe,t as w}from"./RowTitle-Cn5mAU58.js";import{t as T}from"./fileRoute-Bm90K4UY.js";import{t as se}from"./UnsavedChangesGuard-C8cDQGEA.js";import{c as ce,i as le,n as ue,o as de}from"./seo-CceGYTIX.js";import{E,t as fe,w as pe}from"./InfoHint-B3XcXtiN.js";import{T as D,x as me}from"./es2015-BJge4oQL.js";import{i as he,n as ge,r as _e,t as ve}from"./AssetTile-H0hABhB2.js";import{i as O,n as ye,r as be}from"./skeleton-vXOCdnJv.js";import{a as xe,i as Se,n as Ce,r as we,t as Te}from"./select-Bp8kO5Ko.js";import{a as k,r as Ee,t as A}from"./InlineConfirm-BfsNH5S_.js";import{_ as De,a as j,c as Oe,s as ke,t as Ae}from"./field-C6NmRYUN.js";import{t as je}from"./ellipsis-F91991on.js";import{c as Me,l as Ne}from"./Thumbnail-mFfESZiW.js";import{t as Pe}from"./globe-DFr3Gd2w.js";import{t as Fe}from"./key-round-D36CePnN.js";import{a as M,p as Ie,r as Le,t as Re}from"./dropdown-menu-0dyAtBEd.js";import{c as ze,i as Be,n as Ve,t as He}from"./sections-BfxPwK0u.js";import{t as Ue}from"./plus-BoDtdLCo.js";import{t as We}from"./radio-group-BoN9R_3K.js";import{a as Ge,c as Ke,f as qe,n as N,o as P,r as Je,s as Ye,t as F,u as I}from"./zod-hUh5nXnX.js";import{n as Xe,t as L}from"./settle-CFU6YpQ0.js";import{_ as Ze,a as R,g as z,i as B,l as Qe,n as V,o as H,r as U,s as W,t as G,u as $e,v as K}from"./table-zG68ipQc.js";import{t as et}from"./HintedLabel-CiTDE112.js";import{t as q}from"./QueryView-KFtwko9F.js";import{t as tt}from"./FormRadioGroup-B0VZyb1t.js";import{t as nt}from"./useNetworkPermission-Cts98h9d.js";import{a as rt,i as it,n as at,r as ot,t as st}from"./locales-Bg3htKo8.js";import{n as ct,t as lt}from"./useMediaPickerDialog-xvQ8cofO.js";import{a as ut,l as dt,m as ft,p as pt,r as mt,t as ht}from"./AssistError-1s3PuY0X.js";import{t as gt}from"./textarea-BBjqMF-Y.js";import{t as J}from"./Panel-Bcl09TtM.js";import{t as _t}from"./ExternalLink-BITMgS1K.js";import{t as vt}from"./NoAccess-CKEKPmqD.js";import{t as yt}from"./RadioTile-CzfxWgHx.js";import{t as bt}from"./FormTextareaField-BSKNeTPW.js";import{n as xt,r as St,t as Ct}from"./SubNavLink-CiCaVV8U.js";import{n as wt,t as Tt}from"./FormSelectField-Br8bkwRF.js";import{n as Et,r as Dt,t as Ot}from"./tokens-ixHjAkDK.js";import{i as kt,o as At,s as jt,t as Mt}from"./SecretReveal-BCOJAisI.js";import{t as Nt}from"./useConfirmTarget-9JmfiY2X.js";var Pt={name:`star`,size:24,node:[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]};Pt.node;var Ft=ae(Pt),Y=e(n(),1),It=()=>{let{t:e}=x(),t=g().data?.globalPermissions??[];return(0,Y.jsx)(xt,{label:e(`settings.sections`),children:He.map(n=>{let r=n.sections.filter(e=>!e.permission||t.includes(e.permission));return r.length===0?null:(0,Y.jsx)(St,{label:e(`settings.${n.key}`),children:r.map(t=>{let n=t.icon;return(0,Y.jsxs)(Ct,{to:t.to,children:[(0,Y.jsx)(n,{"aria-hidden":`true`}),e(`settings.${t.key}`)]},t.key)})},n.key)})})},Lt=()=>(0,Y.jsx)(v,{children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row lg:items-start lg:gap-8`,children:[(0,Y.jsx)(It,{}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Y.jsx)(ie,{})})]})}),X=e(t(),1),Rt=[`never`,`30`,`90`,`365`],zt=864e5,Bt=(e,t=new Date)=>e===`never`?null:new Date(t.getTime()+Number(e)*zt).toISOString(),Vt=z({name:P(),roleId:K().min(1,`validation.selectRole`),expiry:Qe(Rt),scope:Qe([`site`,`network`])}),Z={name:``,roleId:``,expiry:`90`,scope:`site`},Ht=(e,t,n)=>{let r=Et(),i=I({resolver:F(Vt),defaultValues:Z}),{reset:a}=i;return(0,X.useEffect)(()=>{e&&a(Z)},[e,a]),{form:i,onSubmit:i.handleSubmit(async({name:e,roleId:i,expiry:o,scope:s})=>{let c=s===`network`&&n(i),l=await L(r.mutateAsync({name:e,roleId:i,expiresAt:Bt(o),network:c}));l.ok&&(a(Z),t(l.value))}),createToken:r}},Ut=({open:e,onOpenChange:t,onCreated:n,onCloseAutoFocus:r})=>{let{t:i}=x(),a=jt(),{data:o}=g(),s=o?.networkPermissions.includes(`users.manage`)??!1,c=e=>s&&a.data?.find(t=>t.id===e)?.kind===`admin`,{form:l,onSubmit:u,createToken:d}=Ht(e,n,c),ee=qe({control:l.control,name:`roleId`}),f=[{value:`site`,label:i(`apiTokens.scopeSite`,{name:o?.site.name??``}),description:i(`apiTokens.scopeSiteDescription`)},{value:`network`,label:i(`apiTokens.scopeNetwork`),description:i(`apiTokens.scopeNetworkDescription`)}],p=(a.data??[]).map(e=>({value:e.id,label:e.name})),m=Rt.map(e=>({value:e,label:e===`never`?i(`apiTokens.expiryNever`):i(`apiTokens.expiryDays`,{count:Number(e)})}));return(0,Y.jsxs)(wt,{open:e,onOpenChange:t,size:`md`,...r?{onCloseAutoFocus:r}:{},title:i(`apiTokens.createTitle`),dirty:l.formState.isDirty,pending:d.isPending,submitLabel:i(`common.create`),pendingLabel:i(`common.saving`),onSubmit:e=>void u(e),children:[(0,Y.jsx)(N,{control:l.control,name:`name`,label:i(`apiTokens.name`),autoComplete:`off`}),(0,Y.jsx)(Tt,{control:l.control,name:`roleId`,label:i(`apiTokens.role`),options:p}),c(ee)?(0,Y.jsx)(tt,{control:l.control,name:`scope`,legend:i(`apiTokens.scope`),options:f}):null,(0,Y.jsx)(Tt,{control:l.control,name:`expiry`,label:i(`apiTokens.expiry`),options:m}),(0,Y.jsx)(k,{error:d.error??a.error})]})},Wt=({token:e})=>{let{t}=x();return e.revokedAt?(0,Y.jsx)(b,{tone:`muted`,label:t(`apiTokens.revokedBadge`)}):e.creatorDisabled?(0,Y.jsx)(b,{tone:`warning`,label:t(`apiTokens.pausedBadge`)}):(0,Y.jsx)(b,{tone:`success`,label:t(`apiTokens.active`)})},Gt=({tokens:e,roleNames:t,draftRoleIds:n,siteName:r,onRevoke:i})=>{let{t:a}=x();return(0,Y.jsx)(W,{children:(0,Y.jsxs)(G,{children:[(0,Y.jsx)(R,{children:(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{children:a(`apiTokens.name`)}),(0,Y.jsx)(B,{children:a(`apiTokens.prefix`)}),(0,Y.jsx)(B,{children:a(`apiTokens.role`)}),(0,Y.jsx)(B,{children:a(`apiTokens.appliesTo`)}),(0,Y.jsx)(B,{children:a(`apiTokens.status`)}),(0,Y.jsx)(B,{children:a(`apiTokens.lastUsed`)}),(0,Y.jsx)(B,{children:a(`apiTokens.expires`)}),(0,Y.jsx)(B,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:a(`common.actions`)})})]})}),(0,Y.jsx)(V,{children:e.map(e=>(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:(0,Y.jsx)(w,{children:e.name})}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:`${e.tokenPrefix}…`}),(0,Y.jsx)(U,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[t.get(e.roleId)??a(`common.unknown`),n.has(e.roleId)?(0,Y.jsx)(b,{tone:`warning`,size:`sm`,label:a(`apiTokens.draftsChip`)}):null]})}),(0,Y.jsx)(U,{children:e.siteId===null?a(`sites.everySite`):r}),(0,Y.jsx)(U,{children:(0,Y.jsx)(Wt,{token:e})}),(0,Y.jsx)(U,{title:C(e.lastUsedAt)||void 0,children:e.lastUsedAt?S(e.lastUsedAt):a(`common.never`)}),(0,Y.jsx)(U,{children:e.expiresAt?C(e.expiresAt):a(`common.never`)}),(0,Y.jsx)(U,{className:`text-right`,children:e.revokedAt?null:(0,Y.jsx)(A,{tone:`danger`,title:a(`apiTokens.revokeTitle`,{name:e.name}),description:a(`apiTokens.revokeDescription`),confirmLabel:a(`common.revoke`),onConfirm:()=>i(e),trigger:(0,Y.jsx)(O,{variant:`outline`,size:`sm`,"aria-label":`${a(`common.revoke`)}: ${e.name}`,children:a(`common.revoke`)})})})]},e.id))})]})})},Kt=()=>{let{t:e}=x(),t=Ot(),{names:n}=At(),{draftRoleIds:r}=kt(),i=g().data?.site.name??``,a=Dt(),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(void 0),u=async t=>{await a.mutateAsync(t.id),E.success(e(`apiTokens.revoked`))},d=(0,Y.jsxs)(O,{onClick:()=>s(!0),children:[(0,Y.jsx)(Ue,{"aria-hidden":`true`}),e(`apiTokens.create`)]});return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`apiTokens.title`),actions:d}),c?(0,Y.jsx)(Mt,{title:e(`apiTokens.secretTitle`),description:e(`apiTokens.secretDescription`),label:e(`apiTokens.secretLabel`),secret:c,dismissLabel:e(`apiTokens.secretDone`),onDismiss:()=>l(void 0)}):null,(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(ne,{icon:Fe,title:e(`apiTokens.empty`),description:e(`apiTokens.emptyDescription`),action:d}),children:e=>(0,Y.jsx)(Gt,{tokens:e,roleNames:n,draftRoleIds:r,siteName:i,onRevoke:u})}),(0,Y.jsx)(Ut,{open:o,onOpenChange:s,onCreated:e=>{l(e.token),s(!1)},onCloseAutoFocus:e=>c!==void 0&&e.preventDefault()})]})},qt=()=>{let{t:e}=x();return h(`tokens.manage`)?(0,Y.jsx)(Kt,{}):(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`apiTokens.title`)}),(0,Y.jsx)(vt,{})]})},Jt=()=>{let{t:e}=x(),{looks:t,selectedLook:n,selectLook:r}=Ve();return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`appearance.title`)}),(0,Y.jsx)(J,{title:e(`appearance.theme`),description:e(`appearance.storedHere`),children:(0,Y.jsx)(We,{"aria-label":e(`appearance.theme`),value:n,onValueChange:r,className:`sm:grid-cols-2 xl:grid-cols-3`,children:t.map(e=>(0,Y.jsx)(yt,{value:e.value,label:e.name,description:e.description,media:(0,Y.jsx)(Be,{themeKey:e.themeKey,variant:e.variant,size:`lg`})},e.value))})})]})},Yt=()=>{let{t:e}=x(),t=(0,X.useId)(),[n,r]=(0,X.useState)(``),[i,a]=(0,X.useState)(``),o=dt(),s=n.trim()!==``&&i.trim()!==``;return(0,Y.jsx)(J,{title:e(`assist.settings.tryIt`),titleAs:`h2`,children:(0,Y.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e.preventDefault(),s&&o.mutate({text:n.trim(),instruction:i.trim()})},children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(be,{htmlFor:`${t}-text`,children:e(`assist.settings.tryText`)}),(0,Y.jsx)(gt,{id:`${t}-text`,value:n,rows:3,maxLength:ft,onChange:e=>r(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(be,{htmlFor:`${t}-instruction`,children:e(`assist.rewrite.instruction`)}),(0,Y.jsx)(ye,{id:`${t}-instruction`,value:i,maxLength:500,placeholder:e(`assist.rewrite.instructionPlaceholder`),onChange:e=>a(e.target.value)})]}),(0,Y.jsx)(ht,{error:o.error}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:(0,Y.jsx)(mt,{type:`submit`,variant:`default`,size:`default`,pending:o.isPending,pendingLabel:e(`assist.working`),disabled:!s,children:e(`assist.rewrite.run`)})}),(0,Y.jsx)(`div`,{"aria-live":`polite`,children:o.data?(0,Y.jsxs)(`figure`,{className:`space-y-1 rounded-lg border bg-muted/40 p-3`,children:[(0,Y.jsx)(`figcaption`,{className:`text-meta text-muted-foreground`,children:e(`assist.rewrite.proposal`,{model:o.data.model})}),(0,Y.jsx)(`p`,{className:`text-sm whitespace-pre-wrap`,children:o.data.text})]}):null})]})})},Xt=({usage:e})=>{let{t}=x(),n=[{key:`runs`,label:t(`assist.settings.runs`),value:e.runs},{key:`input`,label:t(`assist.settings.inputTokens`),value:e.inputTokens},{key:`output`,label:t(`assist.settings.outputTokens`),value:e.outputTokens}];return(0,Y.jsx)(J,{title:t(`assist.settings.usage`,{month:oe(e.month)}),titleAs:`h2`,children:(0,Y.jsx)(`dl`,{className:`grid gap-4 sm:grid-cols-3`,children:n.map(e=>(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`dt`,{className:`text-meta text-muted-foreground`,children:e.label}),(0,Y.jsx)(`dd`,{className:`text-2xl font-semibold tabular-nums`,children:e.value.toLocaleString()})]},e.key))})})},Zt=()=>{let{t:e}=x(),t=ut();return(0,Y.jsxs)(v,{width:`narrow`,children:[(0,Y.jsx)(y,{title:e(`settings.assist`)}),(0,Y.jsx)(q,{query:t,loadingRows:3,children:t=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(J,{title:e(`assist.settings.status`),titleAs:`h2`,actions:(0,Y.jsx)(b,{tone:t.enabled?`success`:`muted`,label:t.enabled?e(`assist.settings.on`):e(`assist.settings.off`)}),children:[t.enabled?(0,Y.jsxs)(`dl`,{className:`space-y-2 text-sm`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`assist.settings.provider`)}),(0,Y.jsx)(`dd`,{className:`font-mono`,children:t.provider})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`assist.settings.model`)}),(0,Y.jsx)(`dd`,{className:`min-w-0 font-mono break-all`,children:t.model})]})]}):(0,Y.jsx)(`p`,{className:`text-sm`,children:e(`assist.settings.offDescription`)}),(0,Y.jsx)(`p`,{className:`mt-4 text-meta`,children:(0,Y.jsx)(_t,{href:pt,children:e(`assist.settings.guide`)})})]}),t.enabled&&t.usage?(0,Y.jsx)(Xt,{usage:t.usage}):null,t.enabled?(0,Y.jsx)(Yt,{}):null]})})]})},Qt=e=>{let t=e.details?.plan?.impact,n=e=>typeof e==`number`?e:0;return{affectedHeads:n(t?.affectedHeads),deletedEntries:n(t?.deletedEntries)}},$t=e=>E.success(D.t(`locales.deleted`,{label:e.label})),en=()=>{let e=at(),[t,n]=(0,X.useState)(void 0),[r,i]=(0,X.useState)(!1);return{attempt:async t=>{try{await e.mutateAsync({code:t.code,acknowledged:!1})}catch(r){if(!f(r,`SCHEMA_CHANGE_NOT_ACKNOWLEDGED`))throw r;e.reset(),n({locale:t,...Qt(r)}),i(!0);return}$t(t)},withContent:t,open:r,onOpenChange:i,confirm:()=>{t&&e.mutate({code:t.locale.code,acknowledged:!0},{onSuccess:()=>{$t(t.locale),i(!1)}})},pending:e.isPending,error:e.error}},tn=`locale-fallbacks-legend`,nn=({control:e,locales:t,code:n})=>{let{t:r}=x(),{field:i,fieldState:a}=Ke({control:e,name:`fallbacks`}),[o,s]=(0,X.useState)(``),c=i.value,l=e=>t.find(t=>t.code===e)?.label??e,u=t.filter(e=>e.code!==n&&!c.includes(e.code)),d=(e,t)=>{let n=[...c],[r]=n.splice(e,1);n.splice(t,0,r),i.onChange(n)};return(0,Y.jsxs)(Oe,{className:`gap-3`,"aria-labelledby":tn,children:[(0,Y.jsxs)(ke,{variant:`label`,className:`mb-0 flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{id:tn,children:r(`locales.fallbacks`)}),(0,Y.jsx)(fe,{about:r(`locales.fallbacks`),children:r(`locales.fallbacksHint`)})]}),c.length>0?(0,Y.jsx)(`ol`,{className:`space-y-1`,children:c.map((e,t)=>(0,Y.jsxs)(`li`,{className:`flex items-center gap-2 rounded-lg border py-1 pr-1 pl-3 text-sm`,children:[(0,Y.jsxs)(`span`,{className:`w-5 text-muted-foreground`,children:[t+1,`.`]}),(0,Y.jsxs)(`span`,{className:`flex-1`,children:[l(e),` `,(0,Y.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e})]}),(0,Y.jsx)(O,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.moveUp`,{locale:l(e)}),disabled:t===0,onClick:()=>d(t,t-1),children:(0,Y.jsx)(_e,{"aria-hidden":`true`})}),(0,Y.jsx)(O,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.moveDown`,{locale:l(e)}),disabled:t===c.length-1,onClick:()=>d(t,t+1),children:(0,Y.jsx)(he,{"aria-hidden":`true`})}),(0,Y.jsx)(O,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.removeFallback`,{locale:l(e)}),onClick:()=>i.onChange(c.filter(t=>t!==e)),children:(0,Y.jsx)(te,{"aria-hidden":`true`})})]},e))}):(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`locales.noFallbacks`)}),u.length>0&&c.length<10?(0,Y.jsxs)(Te,{value:o,onValueChange:e=>{i.onChange([...c,e]),s(``)},children:[(0,Y.jsx)(Se,{className:`w-full sm:w-64`,"aria-label":r(`locales.addFallback`),children:(0,Y.jsx)(xe,{placeholder:r(`locales.addFallback`)})}),(0,Y.jsx)(Ce,{children:u.map(e=>(0,Y.jsxs)(we,{value:e.code,children:[e.label,` (`,e.code,`)`]},e.code))})]}):null,(0,Y.jsx)(Je,{message:a.error?.message})]})},rn=35,an=e=>z({code:K().trim().min(1,`validation.required`).superRefine((t,n)=>{e.includes(t.toLowerCase())?n.addIssue({code:`custom`,message:`validation.localeExists`}):(t.length>rn||!i.test(t))&&n.addIssue({code:`custom`,message:`validation.localeCode`})}),label:P(),fallbacks:$e(K())}),on=e=>({code:e?.code??``,label:e?.label??``,fallbacks:e?.fallbacks??[]}),sn=(e,t,n,r)=>{let i=st(),a=rt(),o=(0,X.useMemo)(()=>t?[]:n.map(e=>e.code.toLowerCase()),[t,n]),s=I({resolver:F(an(o)),defaultValues:on(t)}),{reset:c}=s;(0,X.useEffect)(()=>{e&&(c(on(t)),i.reset(),a.reset())},[e,t,c]);let l=s.handleSubmit(async({code:e,label:n,fallbacks:o})=>{(await L(t?a.mutateAsync({code:t.code,input:{label:n,fallbacks:o}}):i.mutateAsync({code:e,label:n,fallbacks:o}))).ok&&(E.success(D.t(t?`locales.saved`:`locales.created`,{label:n})),r())}),u=t?a:i;return{form:s,onSubmit:l,pending:u.isPending,error:u.error}},cn=({open:e,onOpenChange:t,locale:n,locales:r})=>{let{t:i}=x(),{form:a,onSubmit:o,pending:s,error:c}=sn(e,n,r,()=>t(!1)),l=a.watch(`code`);return(0,Y.jsxs)(wt,{open:e,onOpenChange:t,size:`md`,title:n?i(`locales.editTitle`,{label:n.label}):i(`locales.addTitle`),dirty:a.formState.isDirty,pending:s,submitLabel:i(n?`common.saveChanges`:`locales.add`),pendingLabel:i(`common.saving`),onSubmit:e=>void o(e),children:[(0,Y.jsx)(N,{control:a.control,name:`code`,label:i(`locales.code`),hint:i(`locales.codeHint`),autoComplete:`off`,spellCheck:!1,className:`font-mono`,disabled:n!==void 0}),(0,Y.jsx)(N,{control:a.control,name:`label`,label:i(`locales.label`),autoComplete:`off`}),(0,Y.jsx)(nn,{control:a.control,locales:r,code:l}),(0,Y.jsx)(k,{error:c})]})},ln=({locale:e,chain:t,canManage:n,onEdit:r,onMakeDefault:i,onDelete:a})=>{let{t:o}=x(),[s,c]=(0,X.useState)(!1);return(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(w,{children:e.label}),e.isDefault?(0,Y.jsx)(re,{variant:`secondary`,children:o(`locales.default`)}):null]})}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:e.code}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:t.length>0?t.join(` → `):o(`common.none`)}),(0,Y.jsx)(U,{className:`text-right`,children:n?(0,Y.jsxs)(Re,{children:[(0,Y.jsx)(A,{tone:`danger`,open:s,onOpenChange:c,title:o(`locales.deleteTitle`,{label:e.label}),description:o(`locales.deleteDescription`),confirmLabel:o(`common.delete`),pendingLabel:o(`locales.deleting`),onConfirm:()=>a(e),children:(0,Y.jsx)(Ie,{asChild:!0,children:(0,Y.jsx)(O,{variant:`ghost`,size:`icon-sm`,"aria-label":`${o(`common.actions`)}: ${e.label}`,children:(0,Y.jsx)(je,{"aria-hidden":`true`})})})}),(0,Y.jsxs)(Le,{align:`end`,onCloseAutoFocus:e=>s&&e.preventDefault(),children:[(0,Y.jsxs)(M,{onSelect:()=>r(e),children:[(0,Y.jsx)(Ne,{"aria-hidden":`true`}),o(`common.edit`)]}),e.isDefault?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(M,{onSelect:()=>i(e),children:[(0,Y.jsx)(Ft,{"aria-hidden":`true`}),o(`locales.makeDefault`)]}),(0,Y.jsxs)(M,{variant:`destructive`,onSelect:()=>c(!0),children:[(0,Y.jsx)(De,{"aria-hidden":`true`}),o(`common.delete`)]})]})]})]}):null})]})},un=({locales:e,canManage:t,onEdit:n,onMakeDefault:r,onDelete:i})=>{let{t:a}=x(),o=e.find(e=>e.isDefault);return(0,Y.jsx)(W,{children:(0,Y.jsxs)(G,{children:[(0,Y.jsx)(R,{children:(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{children:a(`locales.label`)}),(0,Y.jsx)(B,{children:a(`locales.code`)}),(0,Y.jsx)(B,{children:a(`locales.fallbacks`)}),(0,Y.jsx)(B,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:a(`common.actions`)})})]})}),(0,Y.jsx)(V,{children:e.map(e=>(0,Y.jsx)(ln,{locale:e,chain:[...e.fallbacks,...o&&!e.isDefault&&!e.fallbacks.includes(o.code)?[o.code]:[]],canManage:t,onEdit:n,onMakeDefault:r,onDelete:i},e.code))})]})})},dn=()=>{let{t:e}=x(),t=ot(),n=nt(`schema.create`),r=it(),i=Nt(),a=en(),[o,s]=(0,X.useState)({open:!1,locale:void 0}),c=t.data?.find(e=>e.isDefault),l=a.withContent;return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`locales.title`),actions:n?(0,Y.jsxs)(O,{onClick:()=>s({open:!0,locale:void 0}),children:[(0,Y.jsx)(Ue,{"aria-hidden":`true`}),e(`locales.add`)]}):null}),(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(ne,{icon:Pe,title:e(`locales.empty`)}),children:e=>(0,Y.jsx)(un,{locales:e,canManage:n,onEdit:e=>s({open:!0,locale:e}),onMakeDefault:e=>{r.reset(),i.ask(e)},onDelete:a.attempt})}),(0,Y.jsx)(cn,{open:o.open,onOpenChange:e=>s(t=>({...t,open:e})),locale:o.locale,locales:t.data??[]}),(0,Y.jsx)(Ee,{open:i.open,onOpenChange:i.onOpenChange,title:e(`locales.defaultTitle`,{label:i.target?.label??``}),description:e(`locales.defaultDescription`,{label:i.target?.label??``,current:c?.label??``}),acknowledgement:e(`locales.defaultAcknowledge`),confirmLabel:e(`locales.makeDefault`),destructive:!0,pending:r.isPending,pendingLabel:e(`common.saving`),error:r.error,onConfirm:()=>{let t=i.target;t&&r.mutate(t.code,{onSuccess:()=>{E.success(e(`locales.defaultChanged`,{label:t.label})),i.close()}})}}),(0,Y.jsx)(Ee,{open:a.open,onOpenChange:a.onOpenChange,title:e(`locales.deleteTitle`,{label:l?.locale.label??``}),description:[e(`locales.deleteContent`,{count:l?.affectedHeads??0,label:l?.locale.label??``}),l?.deletedEntries?e(`locales.deleteEntries`,{count:l.deletedEntries,label:l.locale.label}):``].filter(Boolean).join(` `),acknowledgement:e(`locales.deleteAcknowledge`,{count:l?.affectedHeads??0}),confirmLabel:e(`common.delete`),destructive:!0,pending:a.pending,pendingLabel:e(`locales.deleting`),error:a.error,onConfirm:a.confirm})]})},fn=z({name:P()}),pn=()=>{let{data:e}=g(),t=p(),n=I({resolver:F(fn),defaultValues:{name:e?.user.name??``}}),{reset:r,formState:i}=n,a=e?.user.name;return(0,X.useEffect)(()=>{!i.isDirty&&a!==void 0&&r({name:a})},[a,r,i.isDirty]),{form:n,onSubmit:n.handleSubmit(async e=>{let n=await L(t.mutateAsync(e));n.ok&&(r({name:n.value.name}),E.success(D.t(`profile.detailsSaved`)))}),updateProfile:t,email:e?.user.email??``}},mn=`profile-email`,hn=`profile-email-hint`,gn=({onDirtyChange:e})=>{let{t}=x(),{form:n,onSubmit:r,updateProfile:i,email:a}=pn(),{isDirty:o}=n.formState;return(0,X.useEffect)(()=>e(o),[o,e]),(0,Y.jsx)(J,{title:t(`profile.detailsTitle`),children:(0,Y.jsx)(`form`,{noValidate:!0,onSubmit:e=>void r(e),className:`max-w-md`,children:(0,Y.jsxs)(j,{children:[(0,Y.jsx)(N,{control:n.control,name:`name`,label:t(`auth.name`),autoComplete:`name`}),(0,Y.jsxs)(Ae,{children:[(0,Y.jsx)(et,{htmlFor:mn,label:t(`auth.email`),hint:t(`profile.emailHint`),hintId:hn}),(0,Y.jsx)(ye,{id:mn,value:a,readOnly:!0,"aria-describedby":hn})]}),(0,Y.jsx)(k,{error:i.error}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(_,{pending:i.isPending,pendingLabel:t(`common.saving`),disabled:!o,children:t(`common.saveChanges`)})})]})})})},_n=Ye({currentPassword:K().min(1,`validation.required`),password:Ge()}),vn={currentPassword:``,password:``,confirmPassword:``},yn=()=>{let e=m(),t=I({resolver:F(_n),defaultValues:vn});return{form:t,onSubmit:t.handleSubmit(async({currentPassword:n,password:r})=>{(await L(e.mutateAsync({currentPassword:n,newPassword:r}))).ok&&(t.reset(vn),E.success(D.t(`profile.passwordChanged`)))}),changePassword:e}},bn=({onDirtyChange:e})=>{let{t}=x(),{form:n,onSubmit:r,changePassword:i}=yn(),{isDirty:a}=n.formState;return(0,X.useEffect)(()=>e(a),[a,e]),(0,Y.jsx)(J,{title:t(`profile.passwordTitle`),description:t(`profile.passwordDescription`),children:(0,Y.jsx)(`form`,{noValidate:!0,onSubmit:e=>void r(e),className:`max-w-md`,children:(0,Y.jsxs)(j,{children:[(0,Y.jsx)(N,{control:n.control,name:`currentPassword`,label:t(`profile.currentPassword`),type:`password`,autoComplete:`current-password`}),(0,Y.jsx)(N,{control:n.control,name:`password`,label:t(`auth.newPassword`),description:t(`auth.passwordHint`),type:`password`,autoComplete:`new-password`}),(0,Y.jsx)(N,{control:n.control,name:`confirmPassword`,label:t(`auth.confirmPassword`),type:`password`,autoComplete:`new-password`}),(0,Y.jsx)(k,{error:i.error}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(_,{pending:i.isPending,pendingLabel:t(`common.saving`),children:t(`profile.changePassword`)})})]})})})},xn=()=>{let{t:e}=x(),[t,n]=(0,X.useState)(!1),[r,i]=(0,X.useState)(!1),a=(0,X.useCallback)(e=>n(e),[]),o=(0,X.useCallback)(e=>i(e),[]);return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`profile.title`)}),(0,Y.jsx)(gn,{onDirtyChange:a}),(0,Y.jsx)(bn,{onDirtyChange:o}),(0,Y.jsx)(se,{when:t||r})]})},Q=`seo-default-image`,Sn=`${Q}-hint`,Cn=`${Q}-error`,wn=({control:e,imagePrivate:t})=>{let{t:n}=x(),{field:r,fieldState:i}=Ke({control:e,name:`imageId`}),a=t?n(`seo.settings.imagePrivate`):i.error?.message,{canWrite:o}=Me(),s=lt(),c=async()=>{let e=(await s.pickMedia({multiple:!1,allowedKinds:[`image`]}))?.[0];e&&r.onChange(e.id)};return(0,Y.jsxs)(Ae,{"data-invalid":a?!0:void 0,children:[(0,Y.jsx)(et,{htmlFor:Q,label:n(`seo.settings.image`),hint:n(`seo.settings.imageHint`),hintId:Sn}),r.value?(0,Y.jsx)(`ul`,{children:(0,Y.jsx)(ve,{assetId:r.value,inputId:Q,index:0,count:1,editable:!0,canEditAlt:o,onRemove:()=>r.onChange(null)})}):null,(0,Y.jsx)(`div`,{children:(0,Y.jsxs)(O,{id:Q,type:`button`,variant:`outline`,size:`sm`,"aria-describedby":Xe(Sn,a?Cn:void 0),onClick:()=>void c(),children:[(0,Y.jsx)(ge,{"aria-hidden":`true`}),r.value?n(`seo.settings.changeImage`):n(`seo.settings.chooseImage`)]})}),(0,Y.jsx)(Je,{id:a?Cn:void 0,message:a}),s.dialog]})},Tn=200,En=1e3,$=e=>K().trim().max(e,`validation.tooLong`),Dn=z({siteName:$(Tn),titleTemplate:$(Tn).refine(e=>e===``||ce(e),`validation.titleTemplate`),description:$(En)}),On=z({locales:Ze(K(),Dn),imageId:K().nullable(),twitterHandle:K().trim().refine(e=>e===``||u.test(e),`validation.twitterHandle`)}),kn={siteName:``,titleTemplate:``,description:``},An=(e,t)=>{let n=[...new Set([...t.map(e=>e.code),...Object.keys(e.locales)])];return{locales:Object.fromEntries(n.map(t=>[t,{...kn,...e.locales[t]}])),imageId:e.imageId,twitterHandle:e.twitterHandle??``}},jn=e=>{let t={};for(let[n,r]of Object.entries(e.locales)){let e=Object.fromEntries(Object.entries(r).map(([e,t])=>[e,t.trim()]).filter(([,e])=>e!==``));Object.keys(e).length>0&&(t[n]=e)}let n=e.twitterHandle.trim();return{locales:t,imageId:e.imageId,twitterHandle:n===``?null:n}},Mn=e=>Object.keys(e.locales??{})[0],Nn=`SEO_IMAGE_INVALID`,Pn=(e,t)=>{let n=s(),r=de(),i=t.find(e=>e.isDefault)?.code??t[0]?.code??``,[a,o]=(0,X.useState)(i),[c,l]=(0,X.useState)(e.version),u=I({resolver:F(On),defaultValues:An(e.seo,t)}),p=qe({control:u.control,name:`imageId`}),m=d(p??void 0),h=p!==null&&m.data?.visibility===`private`,{clearErrors:g}=u;(0,X.useEffect)(()=>g(`imageId`),[p,g]);let te=async()=>{try{let e=await n.fetchQuery({...ue,staleTime:0});u.reset(An(e.seo,t)),l(e.version)}catch(e){pe(e,`reloading the SEO settings`)}};return{form:u,locale:a,setLocale:o,imagePrivate:h,pending:r.isPending,onSubmit:u.handleSubmit(async e=>{if(!h)try{let n=await r.mutateAsync({expectedVersion:c,seo:jn(e)});u.reset(An(n.seo,t)),l(n.version),E.success(D.t(`seo.settings.saved`))}catch(e){if(ee(e)){E.error(D.t(`seo.settings.conflict`),{action:{label:D.t(`seo.settings.reload`),onClick:()=>void te()}});return}if(f(e,Nn)){u.setError(`imageId`,{message:me(e)},{shouldFocus:!1});return}E.error(me(e))}},e=>{let t=Mn(e);t!==void 0&&o(t)})}},Fn=({control:e,locales:t,locale:n,onLocaleChange:r})=>{let{t:i}=x();return(0,Y.jsx)(J,{title:i(`seo.settings.textsTitle`),titleAs:`h2`,actions:t.length>1?(0,Y.jsx)(ct,{locales:t,value:n,onChange:r,size:`sm`}):null,children:(0,Y.jsxs)(j,{className:`max-w-xl`,children:[(0,Y.jsx)(N,{control:e,name:`locales.${n}.siteName`,label:i(`seo.settings.siteName`),hint:i(`seo.settings.siteNameHint`)}),(0,Y.jsx)(N,{control:e,name:`locales.${n}.titleTemplate`,label:i(`seo.settings.titleTemplate`),hint:i(`seo.settings.titleTemplateHint`),placeholder:i(`seo.settings.titleTemplatePlaceholder`)}),(0,Y.jsx)(bt,{control:e,name:`locales.${n}.description`,label:i(`seo.settings.description`),hint:i(`seo.settings.descriptionHint`),rows:3})]},n)})},In=({siteSeo:e,locales:t})=>{let{t:n}=x(),{form:r,locale:i,setLocale:a,imagePrivate:o,pending:s,onSubmit:c}=Pn(e,t),{isDirty:l}=r.formState;return(0,Y.jsxs)(`form`,{noValidate:!0,onSubmit:e=>void c(e),className:`space-y-6`,children:[(0,Y.jsx)(se,{when:l}),(0,Y.jsx)(Fn,{control:r.control,locales:t,locale:i,onLocaleChange:a}),(0,Y.jsx)(J,{title:n(`seo.settings.socialTitle`),titleAs:`h2`,children:(0,Y.jsxs)(j,{className:`max-w-xl`,children:[(0,Y.jsx)(wn,{control:r.control,imagePrivate:o}),(0,Y.jsx)(N,{control:r.control,name:`twitterHandle`,label:n(`seo.settings.twitterHandle`),hint:n(`seo.settings.twitterHandleHint`),placeholder:n(`seo.settings.twitterHandlePlaceholder`),autoComplete:`off`})]})}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(_,{pending:s,pendingLabel:n(`common.saving`),disabled:!l||o,children:n(`common.saveChanges`)})})]})},Ln=()=>{let{t:e}=x(),t=le(),n=ot();return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`seo.settings.title`)}),(0,Y.jsx)(q,{query:t,loadingRows:4,children:e=>(0,Y.jsx)(q,{query:n,loadingRows:4,children:t=>(0,Y.jsx)(In,{siteSeo:e,locales:t})})})]})},Rn=()=>r({queryKey:a.sessions,queryFn:()=>l.sessions.list(),meta:{silent:!0}}),zn=()=>{let e=s();return o({mutationKey:[`sessions`,`revoke`],mutationFn:e=>c(()=>l.sessions.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:a.sessions})})},Bn=[[/Edg\//,`Edge`],[/OPR\//,`Opera`],[/Firefox\//,`Firefox`],[/Chrome\//,`Chrome`],[/Safari\//,`Safari`]],Vn=[[/iPhone|iPad/,`iOS`],[/Android/,`Android`],[/Mac OS X|Macintosh/,`macOS`],[/Windows/,`Windows`],[/Linux/,`Linux`]],Hn=(e,t)=>t.find(([t])=>t.test(e))?.[1],Un=e=>{if(!e)return;let t=Hn(e,Bn),n=Hn(e,Vn);return t&&n?`${t} · ${n}`:t??n},Wn=({sessions:e,onRevoke:t})=>{let{t:n}=x();return(0,Y.jsx)(W,{children:(0,Y.jsxs)(G,{children:[(0,Y.jsx)(R,{children:(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{children:n(`sessions.device`)}),(0,Y.jsx)(B,{children:n(`sessions.ipAddress`)}),(0,Y.jsx)(B,{children:n(`sessions.signedIn`)}),(0,Y.jsx)(B,{children:n(`sessions.lastActive`)}),(0,Y.jsx)(B,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:n(`common.actions`)})})]})}),(0,Y.jsx)(V,{children:e.map(e=>(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(w,{children:Un(e.userAgent)??n(`sessions.unknownDevice`)}),e.current?(0,Y.jsx)(re,{variant:`secondary`,children:n(`sessions.current`)}):null]})}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:e.ip??n(`common.unknown`)}),(0,Y.jsx)(U,{title:C(e.createdAt),children:S(e.createdAt)}),(0,Y.jsx)(U,{title:C(e.lastSeenAt),children:S(e.lastSeenAt)}),(0,Y.jsx)(U,{className:`text-right`,children:e.current?null:(0,Y.jsx)(A,{tone:`danger`,title:n(`sessions.revokeTitle`),description:n(`sessions.revokeDescription`),confirmLabel:n(`common.revoke`),onConfirm:()=>t(e),trigger:(0,Y.jsx)(O,{variant:`outline`,size:`sm`,children:n(`common.revoke`)})})})]},e.id))})]})})},Gn={settings:T(`/app/settings`)({component:Lt}),profile:T(`/app/settings/profile`)({component:xn}),sessions:T(`/app/settings/sessions`)({component:()=>{let{t:e}=x(),t=Rn(),n=zn(),r=async t=>{await n.mutateAsync(t.id),E.success(e(`sessions.revoked`))};return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`sessions.title`)}),(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(ne,{icon:ze,title:e(`sessions.empty`)}),children:e=>(0,Y.jsx)(Wn,{sessions:e,onRevoke:r})})]})}}),theme:T(`/app/settings/theme`)({component:Jt}),locales:T(`/app/settings/locales`)({component:dn}),seo:T(`/app/settings/seo`)({component:Ln}),assist:T(`/app/settings/assist`)({component:Zt}),apiTokens:T(`/app/settings/api-tokens`)({component:qt})};export{Gn as settingsLazyRoutes};
|
|
2
|
-
//# sourceMappingURL=settings-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{Ht as r,K as i,Pt as a,Vt as o,bn as s,ct as c,ut as l,zt as u}from"./src-ndgTSYLX.js";import{i as d}from"./media-BCnVhaDH.js";import{_ as ee,g as f,h as p,i as m,o as h,u as g}from"./auth-CQO4MBUj.js";import{O as te,_,a as v,i as y,n as b,o as ne,t as re}from"./badge-CqKF1pwz.js";import{n as ie}from"./Match-CcD9KxHH.js";import{n as x,t as ae}from"./createLucideIcon-CLmh7Go-.js";import{i as S,n as C,r as oe,t as w}from"./RowTitle-Bqt6evG9.js";import{t as T}from"./fileRoute-s7mCMYUJ.js";import{t as se}from"./UnsavedChangesGuard-CUiuMklN.js";import{c as ce,i as le,n as ue,o as de}from"./seo-CceGYTIX.js";import{E,t as fe,w as pe}from"./InfoHint-CSEtcHjL.js";import{T as D,x as me}from"./es2015-BHmI7wjK.js";import{i as he,n as ge,r as _e,t as ve}from"./AssetTile-BrMzsUZD.js";import{i as O,n as ye,r as be}from"./skeleton-B5MP72Kw.js";import{a as xe,i as Se,n as Ce,r as we,t as Te}from"./select-C0USI-Ox.js";import{a as k,r as Ee,t as A}from"./InlineConfirm-yW-iUKFC.js";import{_ as De,a as j,c as Oe,s as ke,t as Ae}from"./field-COOzRptX.js";import{t as je}from"./ellipsis-F91991on.js";import{c as Me,l as Ne}from"./Thumbnail-DNj5TRBI.js";import{t as Pe}from"./globe-DFr3Gd2w.js";import{t as Fe}from"./key-round-D36CePnN.js";import{a as M,p as Ie,r as Le,t as Re}from"./dropdown-menu-_xfaEp5C.js";import{c as ze,i as Be,n as Ve,t as He}from"./sections-DqBzSKMP.js";import{t as Ue}from"./plus-BoDtdLCo.js";import{t as We}from"./radio-group-4ok5evXq.js";import{a as Ge,c as Ke,f as qe,n as N,o as P,r as Je,s as Ye,t as F,u as I}from"./zod-Cry7YvLY.js";import{n as Xe,t as L}from"./settle-CFU6YpQ0.js";import{_ as Ze,a as R,g as z,i as B,l as Qe,n as V,o as H,r as U,s as W,t as G,u as $e,v as K}from"./table-zG68ipQc.js";import{t as et}from"./HintedLabel-DzHnEdIK.js";import{t as q}from"./QueryView-xMP_uJ_t.js";import{t as tt}from"./FormRadioGroup-Cfx5pvzU.js";import{t as nt}from"./useNetworkPermission-Cts98h9d.js";import{a as rt,i as it,n as at,r as ot,t as st}from"./locales-Bg3htKo8.js";import{n as ct,t as lt}from"./useMediaPickerDialog-CU-ekPqX.js";import{a as ut,l as dt,m as ft,p as pt,r as mt,t as ht}from"./AssistError-Cs-r9Ssc.js";import{t as gt}from"./textarea-BBjqMF-Y.js";import{t as J}from"./Panel-Bcl09TtM.js";import{t as _t}from"./ExternalLink-BITMgS1K.js";import{t as vt}from"./NoAccess-C8RLPN0I.js";import{t as yt}from"./RadioTile-DQFmni5A.js";import{t as bt}from"./FormTextareaField-CO115n_u.js";import{n as xt,r as St,t as Ct}from"./SubNavLink-CiCaVV8U.js";import{n as wt,t as Tt}from"./FormSelectField-BzE9Lq9i.js";import{n as Et,r as Dt,t as Ot}from"./tokens-ixHjAkDK.js";import{i as kt,o as At,s as jt,t as Mt}from"./SecretReveal-Bm6nYg5J.js";import{t as Nt}from"./useConfirmTarget-9JmfiY2X.js";var Pt={name:`star`,size:24,node:[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]};Pt.node;var Ft=ae(Pt),Y=e(n(),1),It=()=>{let{t:e}=x(),t=g().data?.globalPermissions??[];return(0,Y.jsx)(xt,{label:e(`settings.sections`),children:He.map(n=>{let r=n.sections.filter(e=>!e.permission||t.includes(e.permission));return r.length===0?null:(0,Y.jsx)(St,{label:e(`settings.${n.key}`),children:r.map(t=>{let n=t.icon;return(0,Y.jsxs)(Ct,{to:t.to,children:[(0,Y.jsx)(n,{"aria-hidden":`true`}),e(`settings.${t.key}`)]},t.key)})},n.key)})})},Lt=()=>(0,Y.jsx)(v,{children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row lg:items-start lg:gap-8`,children:[(0,Y.jsx)(It,{}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Y.jsx)(ie,{})})]})}),X=e(t(),1),Rt=[`never`,`30`,`90`,`365`],zt=864e5,Bt=(e,t=new Date)=>e===`never`?null:new Date(t.getTime()+Number(e)*zt).toISOString(),Vt=z({name:P(),roleId:K().min(1,`validation.selectRole`),expiry:Qe(Rt),scope:Qe([`site`,`network`])}),Z={name:``,roleId:``,expiry:`90`,scope:`site`},Ht=(e,t,n)=>{let r=Et(),i=I({resolver:F(Vt),defaultValues:Z}),{reset:a}=i;return(0,X.useEffect)(()=>{e&&a(Z)},[e,a]),{form:i,onSubmit:i.handleSubmit(async({name:e,roleId:i,expiry:o,scope:s})=>{let c=s===`network`&&n(i),l=await L(r.mutateAsync({name:e,roleId:i,expiresAt:Bt(o),network:c}));l.ok&&(a(Z),t(l.value))}),createToken:r}},Ut=({open:e,onOpenChange:t,onCreated:n,onCloseAutoFocus:r})=>{let{t:i}=x(),a=jt(),{data:o}=g(),s=o?.networkPermissions.includes(`users.manage`)??!1,c=e=>s&&a.data?.find(t=>t.id===e)?.kind===`admin`,{form:l,onSubmit:u,createToken:d}=Ht(e,n,c),ee=qe({control:l.control,name:`roleId`}),f=[{value:`site`,label:i(`apiTokens.scopeSite`,{name:o?.site.name??``}),description:i(`apiTokens.scopeSiteDescription`)},{value:`network`,label:i(`apiTokens.scopeNetwork`),description:i(`apiTokens.scopeNetworkDescription`)}],p=(a.data??[]).map(e=>({value:e.id,label:e.name})),m=Rt.map(e=>({value:e,label:e===`never`?i(`apiTokens.expiryNever`):i(`apiTokens.expiryDays`,{count:Number(e)})}));return(0,Y.jsxs)(wt,{open:e,onOpenChange:t,size:`md`,...r?{onCloseAutoFocus:r}:{},title:i(`apiTokens.createTitle`),dirty:l.formState.isDirty,pending:d.isPending,submitLabel:i(`common.create`),pendingLabel:i(`common.saving`),onSubmit:e=>void u(e),children:[(0,Y.jsx)(N,{control:l.control,name:`name`,label:i(`apiTokens.name`),autoComplete:`off`}),(0,Y.jsx)(Tt,{control:l.control,name:`roleId`,label:i(`apiTokens.role`),options:p}),c(ee)?(0,Y.jsx)(tt,{control:l.control,name:`scope`,legend:i(`apiTokens.scope`),options:f}):null,(0,Y.jsx)(Tt,{control:l.control,name:`expiry`,label:i(`apiTokens.expiry`),options:m}),(0,Y.jsx)(k,{error:d.error??a.error})]})},Wt=({token:e})=>{let{t}=x();return e.revokedAt?(0,Y.jsx)(b,{tone:`muted`,label:t(`apiTokens.revokedBadge`)}):e.creatorDisabled?(0,Y.jsx)(b,{tone:`warning`,label:t(`apiTokens.pausedBadge`)}):(0,Y.jsx)(b,{tone:`success`,label:t(`apiTokens.active`)})},Gt=({tokens:e,roleNames:t,draftRoleIds:n,siteName:r,onRevoke:i})=>{let{t:a}=x();return(0,Y.jsx)(W,{children:(0,Y.jsxs)(G,{children:[(0,Y.jsx)(R,{children:(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{children:a(`apiTokens.name`)}),(0,Y.jsx)(B,{children:a(`apiTokens.prefix`)}),(0,Y.jsx)(B,{children:a(`apiTokens.role`)}),(0,Y.jsx)(B,{children:a(`apiTokens.appliesTo`)}),(0,Y.jsx)(B,{children:a(`apiTokens.status`)}),(0,Y.jsx)(B,{children:a(`apiTokens.lastUsed`)}),(0,Y.jsx)(B,{children:a(`apiTokens.expires`)}),(0,Y.jsx)(B,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:a(`common.actions`)})})]})}),(0,Y.jsx)(V,{children:e.map(e=>(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:(0,Y.jsx)(w,{children:e.name})}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:`${e.tokenPrefix}…`}),(0,Y.jsx)(U,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[t.get(e.roleId)??a(`common.unknown`),n.has(e.roleId)?(0,Y.jsx)(b,{tone:`warning`,size:`sm`,label:a(`apiTokens.draftsChip`)}):null]})}),(0,Y.jsx)(U,{children:e.siteId===null?a(`sites.everySite`):r}),(0,Y.jsx)(U,{children:(0,Y.jsx)(Wt,{token:e})}),(0,Y.jsx)(U,{title:C(e.lastUsedAt)||void 0,children:e.lastUsedAt?S(e.lastUsedAt):a(`common.never`)}),(0,Y.jsx)(U,{children:e.expiresAt?C(e.expiresAt):a(`common.never`)}),(0,Y.jsx)(U,{className:`text-right`,children:e.revokedAt?null:(0,Y.jsx)(A,{tone:`danger`,title:a(`apiTokens.revokeTitle`,{name:e.name}),description:a(`apiTokens.revokeDescription`),confirmLabel:a(`common.revoke`),onConfirm:()=>i(e),trigger:(0,Y.jsx)(O,{variant:`outline`,size:`sm`,"aria-label":`${a(`common.revoke`)}: ${e.name}`,children:a(`common.revoke`)})})})]},e.id))})]})})},Kt=()=>{let{t:e}=x(),t=Ot(),{names:n}=At(),{draftRoleIds:r}=kt(),i=g().data?.site.name??``,a=Dt(),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(void 0),u=async t=>{await a.mutateAsync(t.id),E.success(e(`apiTokens.revoked`))},d=(0,Y.jsxs)(O,{onClick:()=>s(!0),children:[(0,Y.jsx)(Ue,{"aria-hidden":`true`}),e(`apiTokens.create`)]});return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`apiTokens.title`),actions:d}),c?(0,Y.jsx)(Mt,{title:e(`apiTokens.secretTitle`),description:e(`apiTokens.secretDescription`),label:e(`apiTokens.secretLabel`),secret:c,dismissLabel:e(`apiTokens.secretDone`),onDismiss:()=>l(void 0)}):null,(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(ne,{icon:Fe,title:e(`apiTokens.empty`),description:e(`apiTokens.emptyDescription`),action:d}),children:e=>(0,Y.jsx)(Gt,{tokens:e,roleNames:n,draftRoleIds:r,siteName:i,onRevoke:u})}),(0,Y.jsx)(Ut,{open:o,onOpenChange:s,onCreated:e=>{l(e.token),s(!1)},onCloseAutoFocus:e=>c!==void 0&&e.preventDefault()})]})},qt=()=>{let{t:e}=x();return h(`tokens.manage`)?(0,Y.jsx)(Kt,{}):(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`apiTokens.title`)}),(0,Y.jsx)(vt,{})]})},Jt=()=>{let{t:e}=x(),{looks:t,selectedLook:n,selectLook:r}=Ve();return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`appearance.title`)}),(0,Y.jsx)(J,{title:e(`appearance.theme`),description:e(`appearance.storedHere`),children:(0,Y.jsx)(We,{"aria-label":e(`appearance.theme`),value:n,onValueChange:r,className:`sm:grid-cols-2 xl:grid-cols-3`,children:t.map(e=>(0,Y.jsx)(yt,{value:e.value,label:e.name,description:e.description,media:(0,Y.jsx)(Be,{themeKey:e.themeKey,variant:e.variant,size:`lg`})},e.value))})})]})},Yt=()=>{let{t:e}=x(),t=(0,X.useId)(),[n,r]=(0,X.useState)(``),[i,a]=(0,X.useState)(``),o=dt(),s=n.trim()!==``&&i.trim()!==``;return(0,Y.jsx)(J,{title:e(`assist.settings.tryIt`),titleAs:`h2`,children:(0,Y.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e.preventDefault(),s&&o.mutate({text:n.trim(),instruction:i.trim()})},children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(be,{htmlFor:`${t}-text`,children:e(`assist.settings.tryText`)}),(0,Y.jsx)(gt,{id:`${t}-text`,value:n,rows:3,maxLength:ft,onChange:e=>r(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(be,{htmlFor:`${t}-instruction`,children:e(`assist.rewrite.instruction`)}),(0,Y.jsx)(ye,{id:`${t}-instruction`,value:i,maxLength:500,placeholder:e(`assist.rewrite.instructionPlaceholder`),onChange:e=>a(e.target.value)})]}),(0,Y.jsx)(ht,{error:o.error}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:(0,Y.jsx)(mt,{type:`submit`,variant:`default`,size:`default`,pending:o.isPending,pendingLabel:e(`assist.working`),disabled:!s,children:e(`assist.rewrite.run`)})}),(0,Y.jsx)(`div`,{"aria-live":`polite`,children:o.data?(0,Y.jsxs)(`figure`,{className:`space-y-1 rounded-lg border bg-muted/40 p-3`,children:[(0,Y.jsx)(`figcaption`,{className:`text-meta text-muted-foreground`,children:e(`assist.rewrite.proposal`,{model:o.data.model})}),(0,Y.jsx)(`p`,{className:`text-sm whitespace-pre-wrap`,children:o.data.text})]}):null})]})})},Xt=({usage:e})=>{let{t}=x(),n=[{key:`runs`,label:t(`assist.settings.runs`),value:e.runs},{key:`input`,label:t(`assist.settings.inputTokens`),value:e.inputTokens},{key:`output`,label:t(`assist.settings.outputTokens`),value:e.outputTokens}];return(0,Y.jsx)(J,{title:t(`assist.settings.usage`,{month:oe(e.month)}),titleAs:`h2`,children:(0,Y.jsx)(`dl`,{className:`grid gap-4 sm:grid-cols-3`,children:n.map(e=>(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`dt`,{className:`text-meta text-muted-foreground`,children:e.label}),(0,Y.jsx)(`dd`,{className:`text-2xl font-semibold tabular-nums`,children:e.value.toLocaleString()})]},e.key))})})},Zt=()=>{let{t:e}=x(),t=ut();return(0,Y.jsxs)(v,{width:`narrow`,children:[(0,Y.jsx)(y,{title:e(`settings.assist`)}),(0,Y.jsx)(q,{query:t,loadingRows:3,children:t=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(J,{title:e(`assist.settings.status`),titleAs:`h2`,actions:(0,Y.jsx)(b,{tone:t.enabled?`success`:`muted`,label:t.enabled?e(`assist.settings.on`):e(`assist.settings.off`)}),children:[t.enabled?(0,Y.jsxs)(`dl`,{className:`space-y-2 text-sm`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`assist.settings.provider`)}),(0,Y.jsx)(`dd`,{className:`font-mono`,children:t.provider})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`assist.settings.model`)}),(0,Y.jsx)(`dd`,{className:`min-w-0 font-mono break-all`,children:t.model})]})]}):(0,Y.jsx)(`p`,{className:`text-sm`,children:e(`assist.settings.offDescription`)}),(0,Y.jsx)(`p`,{className:`mt-4 text-meta`,children:(0,Y.jsx)(_t,{href:pt,children:e(`assist.settings.guide`)})})]}),t.enabled&&t.usage?(0,Y.jsx)(Xt,{usage:t.usage}):null,t.enabled?(0,Y.jsx)(Yt,{}):null]})})]})},Qt=e=>{let t=e.details?.plan?.impact,n=e=>typeof e==`number`?e:0;return{affectedHeads:n(t?.affectedHeads),deletedEntries:n(t?.deletedEntries)}},$t=e=>E.success(D.t(`locales.deleted`,{label:e.label})),en=()=>{let e=at(),[t,n]=(0,X.useState)(void 0),[r,i]=(0,X.useState)(!1);return{attempt:async t=>{try{await e.mutateAsync({code:t.code,acknowledged:!1})}catch(r){if(!f(r,`SCHEMA_CHANGE_NOT_ACKNOWLEDGED`))throw r;e.reset(),n({locale:t,...Qt(r)}),i(!0);return}$t(t)},withContent:t,open:r,onOpenChange:i,confirm:()=>{t&&e.mutate({code:t.locale.code,acknowledged:!0},{onSuccess:()=>{$t(t.locale),i(!1)}})},pending:e.isPending,error:e.error}},tn=`locale-fallbacks-legend`,nn=({control:e,locales:t,code:n})=>{let{t:r}=x(),{field:i,fieldState:a}=Ke({control:e,name:`fallbacks`}),[o,s]=(0,X.useState)(``),c=i.value,l=e=>t.find(t=>t.code===e)?.label??e,u=t.filter(e=>e.code!==n&&!c.includes(e.code)),d=(e,t)=>{let n=[...c],[r]=n.splice(e,1);n.splice(t,0,r),i.onChange(n)};return(0,Y.jsxs)(Oe,{className:`gap-3`,"aria-labelledby":tn,children:[(0,Y.jsxs)(ke,{variant:`label`,className:`mb-0 flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{id:tn,children:r(`locales.fallbacks`)}),(0,Y.jsx)(fe,{about:r(`locales.fallbacks`),children:r(`locales.fallbacksHint`)})]}),c.length>0?(0,Y.jsx)(`ol`,{className:`space-y-1`,children:c.map((e,t)=>(0,Y.jsxs)(`li`,{className:`flex items-center gap-2 rounded-lg border py-1 pr-1 pl-3 text-sm`,children:[(0,Y.jsxs)(`span`,{className:`w-5 text-muted-foreground`,children:[t+1,`.`]}),(0,Y.jsxs)(`span`,{className:`flex-1`,children:[l(e),` `,(0,Y.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e})]}),(0,Y.jsx)(O,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.moveUp`,{locale:l(e)}),disabled:t===0,onClick:()=>d(t,t-1),children:(0,Y.jsx)(_e,{"aria-hidden":`true`})}),(0,Y.jsx)(O,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.moveDown`,{locale:l(e)}),disabled:t===c.length-1,onClick:()=>d(t,t+1),children:(0,Y.jsx)(he,{"aria-hidden":`true`})}),(0,Y.jsx)(O,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.removeFallback`,{locale:l(e)}),onClick:()=>i.onChange(c.filter(t=>t!==e)),children:(0,Y.jsx)(te,{"aria-hidden":`true`})})]},e))}):(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`locales.noFallbacks`)}),u.length>0&&c.length<10?(0,Y.jsxs)(Te,{value:o,onValueChange:e=>{i.onChange([...c,e]),s(``)},children:[(0,Y.jsx)(Se,{className:`w-full sm:w-64`,"aria-label":r(`locales.addFallback`),children:(0,Y.jsx)(xe,{placeholder:r(`locales.addFallback`)})}),(0,Y.jsx)(Ce,{children:u.map(e=>(0,Y.jsxs)(we,{value:e.code,children:[e.label,` (`,e.code,`)`]},e.code))})]}):null,(0,Y.jsx)(Je,{message:a.error?.message})]})},rn=35,an=e=>z({code:K().trim().min(1,`validation.required`).superRefine((t,n)=>{e.includes(t.toLowerCase())?n.addIssue({code:`custom`,message:`validation.localeExists`}):(t.length>rn||!i.test(t))&&n.addIssue({code:`custom`,message:`validation.localeCode`})}),label:P(),fallbacks:$e(K())}),on=e=>({code:e?.code??``,label:e?.label??``,fallbacks:e?.fallbacks??[]}),sn=(e,t,n,r)=>{let i=st(),a=rt(),o=(0,X.useMemo)(()=>t?[]:n.map(e=>e.code.toLowerCase()),[t,n]),s=I({resolver:F(an(o)),defaultValues:on(t)}),{reset:c}=s;(0,X.useEffect)(()=>{e&&(c(on(t)),i.reset(),a.reset())},[e,t,c]);let l=s.handleSubmit(async({code:e,label:n,fallbacks:o})=>{(await L(t?a.mutateAsync({code:t.code,input:{label:n,fallbacks:o}}):i.mutateAsync({code:e,label:n,fallbacks:o}))).ok&&(E.success(D.t(t?`locales.saved`:`locales.created`,{label:n})),r())}),u=t?a:i;return{form:s,onSubmit:l,pending:u.isPending,error:u.error}},cn=({open:e,onOpenChange:t,locale:n,locales:r})=>{let{t:i}=x(),{form:a,onSubmit:o,pending:s,error:c}=sn(e,n,r,()=>t(!1)),l=a.watch(`code`);return(0,Y.jsxs)(wt,{open:e,onOpenChange:t,size:`md`,title:n?i(`locales.editTitle`,{label:n.label}):i(`locales.addTitle`),dirty:a.formState.isDirty,pending:s,submitLabel:i(n?`common.saveChanges`:`locales.add`),pendingLabel:i(`common.saving`),onSubmit:e=>void o(e),children:[(0,Y.jsx)(N,{control:a.control,name:`code`,label:i(`locales.code`),hint:i(`locales.codeHint`),autoComplete:`off`,spellCheck:!1,className:`font-mono`,disabled:n!==void 0}),(0,Y.jsx)(N,{control:a.control,name:`label`,label:i(`locales.label`),autoComplete:`off`}),(0,Y.jsx)(nn,{control:a.control,locales:r,code:l}),(0,Y.jsx)(k,{error:c})]})},ln=({locale:e,chain:t,canManage:n,onEdit:r,onMakeDefault:i,onDelete:a})=>{let{t:o}=x(),[s,c]=(0,X.useState)(!1);return(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(w,{children:e.label}),e.isDefault?(0,Y.jsx)(re,{variant:`secondary`,children:o(`locales.default`)}):null]})}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:e.code}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:t.length>0?t.join(` → `):o(`common.none`)}),(0,Y.jsx)(U,{className:`text-right`,children:n?(0,Y.jsxs)(Re,{children:[(0,Y.jsx)(A,{tone:`danger`,open:s,onOpenChange:c,title:o(`locales.deleteTitle`,{label:e.label}),description:o(`locales.deleteDescription`),confirmLabel:o(`common.delete`),pendingLabel:o(`locales.deleting`),onConfirm:()=>a(e),children:(0,Y.jsx)(Ie,{asChild:!0,children:(0,Y.jsx)(O,{variant:`ghost`,size:`icon-sm`,"aria-label":`${o(`common.actions`)}: ${e.label}`,children:(0,Y.jsx)(je,{"aria-hidden":`true`})})})}),(0,Y.jsxs)(Le,{align:`end`,onCloseAutoFocus:e=>s&&e.preventDefault(),children:[(0,Y.jsxs)(M,{onSelect:()=>r(e),children:[(0,Y.jsx)(Ne,{"aria-hidden":`true`}),o(`common.edit`)]}),e.isDefault?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(M,{onSelect:()=>i(e),children:[(0,Y.jsx)(Ft,{"aria-hidden":`true`}),o(`locales.makeDefault`)]}),(0,Y.jsxs)(M,{variant:`destructive`,onSelect:()=>c(!0),children:[(0,Y.jsx)(De,{"aria-hidden":`true`}),o(`common.delete`)]})]})]})]}):null})]})},un=({locales:e,canManage:t,onEdit:n,onMakeDefault:r,onDelete:i})=>{let{t:a}=x(),o=e.find(e=>e.isDefault);return(0,Y.jsx)(W,{children:(0,Y.jsxs)(G,{children:[(0,Y.jsx)(R,{children:(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{children:a(`locales.label`)}),(0,Y.jsx)(B,{children:a(`locales.code`)}),(0,Y.jsx)(B,{children:a(`locales.fallbacks`)}),(0,Y.jsx)(B,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:a(`common.actions`)})})]})}),(0,Y.jsx)(V,{children:e.map(e=>(0,Y.jsx)(ln,{locale:e,chain:[...e.fallbacks,...o&&!e.isDefault&&!e.fallbacks.includes(o.code)?[o.code]:[]],canManage:t,onEdit:n,onMakeDefault:r,onDelete:i},e.code))})]})})},dn=()=>{let{t:e}=x(),t=ot(),n=nt(`schema.create`),r=it(),i=Nt(),a=en(),[o,s]=(0,X.useState)({open:!1,locale:void 0}),c=t.data?.find(e=>e.isDefault),l=a.withContent;return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`locales.title`),actions:n?(0,Y.jsxs)(O,{onClick:()=>s({open:!0,locale:void 0}),children:[(0,Y.jsx)(Ue,{"aria-hidden":`true`}),e(`locales.add`)]}):null}),(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(ne,{icon:Pe,title:e(`locales.empty`)}),children:e=>(0,Y.jsx)(un,{locales:e,canManage:n,onEdit:e=>s({open:!0,locale:e}),onMakeDefault:e=>{r.reset(),i.ask(e)},onDelete:a.attempt})}),(0,Y.jsx)(cn,{open:o.open,onOpenChange:e=>s(t=>({...t,open:e})),locale:o.locale,locales:t.data??[]}),(0,Y.jsx)(Ee,{open:i.open,onOpenChange:i.onOpenChange,title:e(`locales.defaultTitle`,{label:i.target?.label??``}),description:e(`locales.defaultDescription`,{label:i.target?.label??``,current:c?.label??``}),acknowledgement:e(`locales.defaultAcknowledge`),confirmLabel:e(`locales.makeDefault`),destructive:!0,pending:r.isPending,pendingLabel:e(`common.saving`),error:r.error,onConfirm:()=>{let t=i.target;t&&r.mutate(t.code,{onSuccess:()=>{E.success(e(`locales.defaultChanged`,{label:t.label})),i.close()}})}}),(0,Y.jsx)(Ee,{open:a.open,onOpenChange:a.onOpenChange,title:e(`locales.deleteTitle`,{label:l?.locale.label??``}),description:[e(`locales.deleteContent`,{count:l?.affectedHeads??0,label:l?.locale.label??``}),l?.deletedEntries?e(`locales.deleteEntries`,{count:l.deletedEntries,label:l.locale.label}):``].filter(Boolean).join(` `),acknowledgement:e(`locales.deleteAcknowledge`,{count:l?.affectedHeads??0}),confirmLabel:e(`common.delete`),destructive:!0,pending:a.pending,pendingLabel:e(`locales.deleting`),error:a.error,onConfirm:a.confirm})]})},fn=z({name:P()}),pn=()=>{let{data:e}=g(),t=p(),n=I({resolver:F(fn),defaultValues:{name:e?.user.name??``}}),{reset:r,formState:i}=n,a=e?.user.name;return(0,X.useEffect)(()=>{!i.isDirty&&a!==void 0&&r({name:a})},[a,r,i.isDirty]),{form:n,onSubmit:n.handleSubmit(async e=>{let n=await L(t.mutateAsync(e));n.ok&&(r({name:n.value.name}),E.success(D.t(`profile.detailsSaved`)))}),updateProfile:t,email:e?.user.email??``}},mn=`profile-email`,hn=`profile-email-hint`,gn=({onDirtyChange:e})=>{let{t}=x(),{form:n,onSubmit:r,updateProfile:i,email:a}=pn(),{isDirty:o}=n.formState;return(0,X.useEffect)(()=>e(o),[o,e]),(0,Y.jsx)(J,{title:t(`profile.detailsTitle`),children:(0,Y.jsx)(`form`,{noValidate:!0,onSubmit:e=>void r(e),className:`max-w-md`,children:(0,Y.jsxs)(j,{children:[(0,Y.jsx)(N,{control:n.control,name:`name`,label:t(`auth.name`),autoComplete:`name`}),(0,Y.jsxs)(Ae,{children:[(0,Y.jsx)(et,{htmlFor:mn,label:t(`auth.email`),hint:t(`profile.emailHint`),hintId:hn}),(0,Y.jsx)(ye,{id:mn,value:a,readOnly:!0,"aria-describedby":hn})]}),(0,Y.jsx)(k,{error:i.error}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(_,{pending:i.isPending,pendingLabel:t(`common.saving`),disabled:!o,children:t(`common.saveChanges`)})})]})})})},_n=Ye({currentPassword:K().min(1,`validation.required`),password:Ge()}),vn={currentPassword:``,password:``,confirmPassword:``},yn=()=>{let e=m(),t=I({resolver:F(_n),defaultValues:vn});return{form:t,onSubmit:t.handleSubmit(async({currentPassword:n,password:r})=>{(await L(e.mutateAsync({currentPassword:n,newPassword:r}))).ok&&(t.reset(vn),E.success(D.t(`profile.passwordChanged`)))}),changePassword:e}},bn=({onDirtyChange:e})=>{let{t}=x(),{form:n,onSubmit:r,changePassword:i}=yn(),{isDirty:a}=n.formState;return(0,X.useEffect)(()=>e(a),[a,e]),(0,Y.jsx)(J,{title:t(`profile.passwordTitle`),description:t(`profile.passwordDescription`),children:(0,Y.jsx)(`form`,{noValidate:!0,onSubmit:e=>void r(e),className:`max-w-md`,children:(0,Y.jsxs)(j,{children:[(0,Y.jsx)(N,{control:n.control,name:`currentPassword`,label:t(`profile.currentPassword`),type:`password`,autoComplete:`current-password`}),(0,Y.jsx)(N,{control:n.control,name:`password`,label:t(`auth.newPassword`),description:t(`auth.passwordHint`),type:`password`,autoComplete:`new-password`}),(0,Y.jsx)(N,{control:n.control,name:`confirmPassword`,label:t(`auth.confirmPassword`),type:`password`,autoComplete:`new-password`}),(0,Y.jsx)(k,{error:i.error}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(_,{pending:i.isPending,pendingLabel:t(`common.saving`),children:t(`profile.changePassword`)})})]})})})},xn=()=>{let{t:e}=x(),[t,n]=(0,X.useState)(!1),[r,i]=(0,X.useState)(!1),a=(0,X.useCallback)(e=>n(e),[]),o=(0,X.useCallback)(e=>i(e),[]);return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`profile.title`)}),(0,Y.jsx)(gn,{onDirtyChange:a}),(0,Y.jsx)(bn,{onDirtyChange:o}),(0,Y.jsx)(se,{when:t||r})]})},Q=`seo-default-image`,Sn=`${Q}-hint`,Cn=`${Q}-error`,wn=({control:e,imagePrivate:t})=>{let{t:n}=x(),{field:r,fieldState:i}=Ke({control:e,name:`imageId`}),a=t?n(`seo.settings.imagePrivate`):i.error?.message,{canWrite:o}=Me(),s=lt(),c=async()=>{let e=(await s.pickMedia({multiple:!1,allowedKinds:[`image`]}))?.[0];e&&r.onChange(e.id)};return(0,Y.jsxs)(Ae,{"data-invalid":a?!0:void 0,children:[(0,Y.jsx)(et,{htmlFor:Q,label:n(`seo.settings.image`),hint:n(`seo.settings.imageHint`),hintId:Sn}),r.value?(0,Y.jsx)(`ul`,{children:(0,Y.jsx)(ve,{assetId:r.value,inputId:Q,index:0,count:1,editable:!0,canEditAlt:o,onRemove:()=>r.onChange(null)})}):null,(0,Y.jsx)(`div`,{children:(0,Y.jsxs)(O,{id:Q,type:`button`,variant:`outline`,size:`sm`,"aria-describedby":Xe(Sn,a?Cn:void 0),onClick:()=>void c(),children:[(0,Y.jsx)(ge,{"aria-hidden":`true`}),r.value?n(`seo.settings.changeImage`):n(`seo.settings.chooseImage`)]})}),(0,Y.jsx)(Je,{id:a?Cn:void 0,message:a}),s.dialog]})},Tn=200,En=1e3,$=e=>K().trim().max(e,`validation.tooLong`),Dn=z({siteName:$(Tn),titleTemplate:$(Tn).refine(e=>e===``||ce(e),`validation.titleTemplate`),description:$(En)}),On=z({locales:Ze(K(),Dn),imageId:K().nullable(),twitterHandle:K().trim().refine(e=>e===``||u.test(e),`validation.twitterHandle`)}),kn={siteName:``,titleTemplate:``,description:``},An=(e,t)=>{let n=[...new Set([...t.map(e=>e.code),...Object.keys(e.locales)])];return{locales:Object.fromEntries(n.map(t=>[t,{...kn,...e.locales[t]}])),imageId:e.imageId,twitterHandle:e.twitterHandle??``}},jn=e=>{let t={};for(let[n,r]of Object.entries(e.locales)){let e=Object.fromEntries(Object.entries(r).map(([e,t])=>[e,t.trim()]).filter(([,e])=>e!==``));Object.keys(e).length>0&&(t[n]=e)}let n=e.twitterHandle.trim();return{locales:t,imageId:e.imageId,twitterHandle:n===``?null:n}},Mn=e=>Object.keys(e.locales??{})[0],Nn=`SEO_IMAGE_INVALID`,Pn=(e,t)=>{let n=s(),r=de(),i=t.find(e=>e.isDefault)?.code??t[0]?.code??``,[a,o]=(0,X.useState)(i),[c,l]=(0,X.useState)(e.version),u=I({resolver:F(On),defaultValues:An(e.seo,t)}),p=qe({control:u.control,name:`imageId`}),m=d(p??void 0),h=p!==null&&m.data?.visibility===`private`,{clearErrors:g}=u;(0,X.useEffect)(()=>g(`imageId`),[p,g]);let te=async()=>{try{let e=await n.fetchQuery({...ue,staleTime:0});u.reset(An(e.seo,t)),l(e.version)}catch(e){pe(e,`reloading the SEO settings`)}};return{form:u,locale:a,setLocale:o,imagePrivate:h,pending:r.isPending,onSubmit:u.handleSubmit(async e=>{if(!h)try{let n=await r.mutateAsync({expectedVersion:c,seo:jn(e)});u.reset(An(n.seo,t)),l(n.version),E.success(D.t(`seo.settings.saved`))}catch(e){if(ee(e)){E.error(D.t(`seo.settings.conflict`),{action:{label:D.t(`seo.settings.reload`),onClick:()=>void te()}});return}if(f(e,Nn)){u.setError(`imageId`,{message:me(e)},{shouldFocus:!1});return}E.error(me(e))}},e=>{let t=Mn(e);t!==void 0&&o(t)})}},Fn=({control:e,locales:t,locale:n,onLocaleChange:r})=>{let{t:i}=x();return(0,Y.jsx)(J,{title:i(`seo.settings.textsTitle`),titleAs:`h2`,actions:t.length>1?(0,Y.jsx)(ct,{locales:t,value:n,onChange:r,size:`sm`}):null,children:(0,Y.jsxs)(j,{className:`max-w-xl`,children:[(0,Y.jsx)(N,{control:e,name:`locales.${n}.siteName`,label:i(`seo.settings.siteName`),hint:i(`seo.settings.siteNameHint`)}),(0,Y.jsx)(N,{control:e,name:`locales.${n}.titleTemplate`,label:i(`seo.settings.titleTemplate`),hint:i(`seo.settings.titleTemplateHint`),placeholder:i(`seo.settings.titleTemplatePlaceholder`)}),(0,Y.jsx)(bt,{control:e,name:`locales.${n}.description`,label:i(`seo.settings.description`),hint:i(`seo.settings.descriptionHint`),rows:3})]},n)})},In=({siteSeo:e,locales:t})=>{let{t:n}=x(),{form:r,locale:i,setLocale:a,imagePrivate:o,pending:s,onSubmit:c}=Pn(e,t),{isDirty:l}=r.formState;return(0,Y.jsxs)(`form`,{noValidate:!0,onSubmit:e=>void c(e),className:`space-y-6`,children:[(0,Y.jsx)(se,{when:l}),(0,Y.jsx)(Fn,{control:r.control,locales:t,locale:i,onLocaleChange:a}),(0,Y.jsx)(J,{title:n(`seo.settings.socialTitle`),titleAs:`h2`,children:(0,Y.jsxs)(j,{className:`max-w-xl`,children:[(0,Y.jsx)(wn,{control:r.control,imagePrivate:o}),(0,Y.jsx)(N,{control:r.control,name:`twitterHandle`,label:n(`seo.settings.twitterHandle`),hint:n(`seo.settings.twitterHandleHint`),placeholder:n(`seo.settings.twitterHandlePlaceholder`),autoComplete:`off`})]})}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(_,{pending:s,pendingLabel:n(`common.saving`),disabled:!l||o,children:n(`common.saveChanges`)})})]})},Ln=()=>{let{t:e}=x(),t=le(),n=ot();return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`seo.settings.title`)}),(0,Y.jsx)(q,{query:t,loadingRows:4,children:e=>(0,Y.jsx)(q,{query:n,loadingRows:4,children:t=>(0,Y.jsx)(In,{siteSeo:e,locales:t})})})]})},Rn=()=>r({queryKey:a.sessions,queryFn:()=>l.sessions.list(),meta:{silent:!0}}),zn=()=>{let e=s();return o({mutationKey:[`sessions`,`revoke`],mutationFn:e=>c(()=>l.sessions.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:a.sessions})})},Bn=[[/Edg\//,`Edge`],[/OPR\//,`Opera`],[/Firefox\//,`Firefox`],[/Chrome\//,`Chrome`],[/Safari\//,`Safari`]],Vn=[[/iPhone|iPad/,`iOS`],[/Android/,`Android`],[/Mac OS X|Macintosh/,`macOS`],[/Windows/,`Windows`],[/Linux/,`Linux`]],Hn=(e,t)=>t.find(([t])=>t.test(e))?.[1],Un=e=>{if(!e)return;let t=Hn(e,Bn),n=Hn(e,Vn);return t&&n?`${t} · ${n}`:t??n},Wn=({sessions:e,onRevoke:t})=>{let{t:n}=x();return(0,Y.jsx)(W,{children:(0,Y.jsxs)(G,{children:[(0,Y.jsx)(R,{children:(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{children:n(`sessions.device`)}),(0,Y.jsx)(B,{children:n(`sessions.ipAddress`)}),(0,Y.jsx)(B,{children:n(`sessions.signedIn`)}),(0,Y.jsx)(B,{children:n(`sessions.lastActive`)}),(0,Y.jsx)(B,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:n(`common.actions`)})})]})}),(0,Y.jsx)(V,{children:e.map(e=>(0,Y.jsxs)(H,{children:[(0,Y.jsx)(U,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(w,{children:Un(e.userAgent)??n(`sessions.unknownDevice`)}),e.current?(0,Y.jsx)(re,{variant:`secondary`,children:n(`sessions.current`)}):null]})}),(0,Y.jsx)(U,{className:`font-mono text-xs`,children:e.ip??n(`common.unknown`)}),(0,Y.jsx)(U,{title:C(e.createdAt),children:S(e.createdAt)}),(0,Y.jsx)(U,{title:C(e.lastSeenAt),children:S(e.lastSeenAt)}),(0,Y.jsx)(U,{className:`text-right`,children:e.current?null:(0,Y.jsx)(A,{tone:`danger`,title:n(`sessions.revokeTitle`),description:n(`sessions.revokeDescription`),confirmLabel:n(`common.revoke`),onConfirm:()=>t(e),trigger:(0,Y.jsx)(O,{variant:`outline`,size:`sm`,children:n(`common.revoke`)})})})]},e.id))})]})})},Gn={settings:T(`/app/settings`)({component:Lt}),profile:T(`/app/settings/profile`)({component:xn}),sessions:T(`/app/settings/sessions`)({component:()=>{let{t:e}=x(),t=Rn(),n=zn(),r=async t=>{await n.mutateAsync(t.id),E.success(e(`sessions.revoked`))};return(0,Y.jsxs)(v,{width:`full`,children:[(0,Y.jsx)(y,{title:e(`sessions.title`)}),(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(ne,{icon:ze,title:e(`sessions.empty`)}),children:e=>(0,Y.jsx)(Wn,{sessions:e,onRevoke:r})})]})}}),theme:T(`/app/settings/theme`)({component:Jt}),locales:T(`/app/settings/locales`)({component:dn}),seo:T(`/app/settings/seo`)({component:Ln}),assist:T(`/app/settings/assist`)({component:Zt}),apiTokens:T(`/app/settings/api-tokens`)({component:qt})};export{Gn as settingsLazyRoutes};
|
|
2
|
+
//# sourceMappingURL=settings-B60vHpZd.js.map
|