// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later // @source: https://gitlab.com/soapbox-pub/ditto/-/tree/f0a3877c import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{A as t,Ft as n,_t as r,a as i,gt as a,lt as o,qi as s,r as c}from"./lucide-icons-BdRF0moN.js";import{t as l}from"./jsx-runtime-By8HlURe.js";import{t as u}from"./useAppContext-Ughdk2-Z.js";import{r as d}from"./useEncryptedSettings-DPGHcvzd.js";import{i as f,o as p,r as m}from"./react-intl-eZirkCBg.js";import{s as h,t as g}from"./useCurrentUser-C6OJJlWo.js";import{t as _}from"./utils-BFSTDHdM.js";import{t as v}from"./button-Cs26nq0r.js";import{t as y}from"./useNostrPublish-CrMjnYm4.js";import{t as b}from"./appRelays-Clm5NPIe.js";import{t as x}from"./appBlossom-CsMDSd4h.js";import{n as S,r as C,t as w}from"./avatar--oX_CTF4.js";import{n as T,r as E}from"./chunk-62JRHF6Z-yJW_vgm4.js";import{t as D}from"./input-CM5Fnyvy.js";import{i as O,r as k,t as A}from"./popover-Dw5E1auH.js";import{i as j,n as M,t as N}from"./tooltip-Ba63GpbC.js";import{t as P}from"./badge-eEdLlpTp.js";import{t as F}from"./useRelayInfo-CT_UT7Yl.js";import{t as I}from"./label-BBIj2Nkw.js";import{t as L}from"./switch-B6lxwP1L.js";import{pt as R,w as z}from"./index-CYEZWNq6.js";import{t as B}from"./HelpTip-BJyejkTU.js";import{t as V}from"./PageHeader-CMi4aeE4.js";var H=e(s(),1),U=l();function W(e){try{let t=new URL(e);return t.protocol===`wss:`?t.pathname===`/`?t.host:t.host+t.pathname:t.href}catch{return e}}function G({url:e}){let t=p(),{data:n}=F(e),i=n?.name?.trim()||W(e),a=n?.description?.trim(),s=!!(n?.limitation?.payment_required??n?.payment_required),l=!!(n?.limitation?.auth_required??n?.auth_required),u=(n?.supported_nips??[]).filter(e=>e===42||e===50),d=(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-sm font-medium leading-tight`,title:i,children:i}),(0,U.jsx)(`p`,{className:`truncate text-[11px] text-muted-foreground`,title:e,children:e}),(s||l||u.length>0)&&(0,U.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-1`,children:[u.includes(50)&&(0,U.jsx)(P,{variant:`outline`,className:`text-[10px]`,children:`NIP-50`}),u.includes(42)&&(0,U.jsx)(P,{variant:`outline`,className:`text-[10px]`,children:`NIP-42`}),l&&(0,U.jsxs)(P,{variant:`secondary`,className:`gap-1 text-[10px]`,children:[(0,U.jsx)(o,{className:`size-2.5`}),(0,U.jsx)(m,{id:`settings.network.auth`,defaultMessage:`Auth`})]}),s&&(0,U.jsxs)(P,{variant:`secondary`,className:`gap-1 text-[10px]`,children:[(0,U.jsx)(c,{className:`size-2.5`}),(0,U.jsx)(m,{id:`settings.network.paid`,defaultMessage:`Paid`})]})]})]});return(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3`,children:[(0,U.jsxs)(w,{className:`size-8 shrink-0 border border-border/70`,children:[(0,U.jsx)(C,{src:n?.icon,alt:t.formatMessage({id:`settings.network.relayIcon`,defaultMessage:`{name} icon`},{name:i})}),(0,U.jsx)(S,{children:(0,U.jsx)(r,{className:`size-4 text-muted-foreground`})})]}),a?(0,U.jsxs)(N,{children:[(0,U.jsx)(j,{asChild:!0,children:(0,U.jsx)(`div`,{className:`min-w-0 flex-1`,children:d})}),(0,U.jsx)(M,{className:`max-w-72 text-xs leading-relaxed`,children:a})]}):d]})}function K(){let e=p(),{config:t,updateConfig:r}=u(),{user:o}=g(),{mutate:s}=y(),{updateSettings:c}=d(),{toast:l}=h(),[f,x]=(0,H.useState)(t.relayMetadata.relays),[S,C]=(0,H.useState)(``);(0,H.useEffect)(()=>{x(t.relayMetadata.relays)},[t.relayMetadata.relays]);let w=e=>{e=e.trim();try{return new URL(e).toString()}catch{try{return new URL(`wss://${e}`).toString()}catch{return e}}},E=e=>{let t=e.trim();if(!t)return!1;let n=w(t);try{return new URL(n),!0}catch{return!1}},j=async t=>{r(e=>({...e,useAppRelays:t})),o&&c.mutate({useAppRelays:t}),l({title:t?e.formatMessage({id:`settings.network.appRelaysEnabled`,defaultMessage:`App relays enabled`}):e.formatMessage({id:`settings.network.appRelaysDisabled`,defaultMessage:`App relays disabled`}),description:t?e.formatMessage({id:`settings.network.appRelaysEnabledDescription`,defaultMessage:`App relays will be used alongside your personal relays.`}):e.formatMessage({id:`settings.network.appRelaysDisabledDescription`,defaultMessage:`Only your personal relays will be used.`})})},M=async t=>{r(e=>({...e,useUserRelays:t})),o&&c.mutate({useUserRelays:t}),l({title:t?e.formatMessage({id:`settings.network.userRelaysEnabled`,defaultMessage:`Your relays enabled`}):e.formatMessage({id:`settings.network.userRelaysDisabled`,defaultMessage:`Your relays disabled`}),description:t?e.formatMessage({id:`settings.network.userRelaysEnabledDescription`,defaultMessage:`Your personal relays will be used alongside app relays when enabled.`}):e.formatMessage({id:`settings.network.userRelaysDisabledDescription`,defaultMessage:`Your personal relays will not be used. Only app relays will be queried.`})})},N=()=>{if(!E(S)){l({title:e.formatMessage({id:`settings.network.invalidRelayUrl`,defaultMessage:`Invalid relay URL`}),description:e.formatMessage({id:`settings.network.invalidRelayUrlDescription`,defaultMessage:`Please enter a valid relay URL (e.g., wss://relay.example.com)`}),variant:`destructive`});return}let t=w(S);if(f.some(e=>e.url===t)){l({title:e.formatMessage({id:`settings.network.relayExists`,defaultMessage:`Relay already exists`}),description:e.formatMessage({id:`settings.network.relayExistsDescription`,defaultMessage:`This relay is already in your list.`}),variant:`destructive`});return}let n=[...f,{url:t,read:!0,write:!0}];x(n),C(``),z(n)},P=e=>{let t=f.filter(t=>t.url!==e);x(t),z(t)},F=e=>{let t=f.map(t=>t.url===e?{...t,read:!t.read}:t);x(t),z(t)},R=e=>{let t=f.map(t=>t.url===e?{...t,write:!t.write}:t);x(t),z(t)},z=e=>{let t=Math.floor(Date.now()/1e3);r(n=>({...n,relayMetadata:{relays:e,updatedAt:t}})),o&&V(e)},V=t=>{let n=t.map(e=>e.read&&e.write?[`r`,e.url]:e.read?[`r`,e.url,`read`]:e.write?[`r`,e.url,`write`]:null).filter(e=>e!==null);s({kind:10002,content:``,tags:n},{onSuccess:()=>{l({title:e.formatMessage({id:`settings.network.relayListPublished`,defaultMessage:`Relay list published`}),description:e.formatMessage({id:`settings.network.relayListPublishedDescription`,defaultMessage:`Your relay list has been published to Nostr.`})})},onError:t=>{console.error(`Failed to publish relay list:`,t),l({title:e.formatMessage({id:`settings.network.relayListPublishFailed`,defaultMessage:`Failed to publish relay list`}),description:e.formatMessage({id:`settings.network.relayListPublishFailedDescription`,defaultMessage:`There was an error publishing your relay list to Nostr.`}),variant:`destructive`})}})};return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`pt-4 pb-4`,children:[(0,U.jsxs)(`div`,{className:`px-3 space-y-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(`h3`,{className:`text-sm font-medium`,children:(0,U.jsx)(m,{id:`settings.network.appRelays`,defaultMessage:`App Relays`})}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(I,{htmlFor:`use-app-relays`,className:`text-xs text-muted-foreground cursor-pointer`,children:t.useAppRelays?(0,U.jsx)(m,{id:`settings.network.enabled`,defaultMessage:`Enabled`}):(0,U.jsx)(m,{id:`settings.network.disabled`,defaultMessage:`Disabled`})}),(0,U.jsx)(L,{id:`use-app-relays`,checked:t.useAppRelays,onCheckedChange:j,className:`scale-90`})]})]}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:(0,U.jsx)(m,{id:`settings.network.appRelaysDescription`,defaultMessage:`Default relays for reliable connectivity. Used alongside your personal relays when enabled.`})})]}),(0,U.jsx)(`div`,{className:_(`mt-3 space-y-1 transition-opacity`,!t.useAppRelays&&`opacity-40`),children:b.relays.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 py-2.5 px-3 hover:bg-muted/20 transition-colors`,children:[(0,U.jsx)(T,{to:`/r/${encodeURIComponent(e.url)}`,className:`min-w-0 flex-1`,children:(0,U.jsx)(G,{url:e.url})}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px]`,children:[e.read&&(0,U.jsx)(`span`,{className:`px-1.5 py-0.5 rounded bg-green-500/10 text-green-600 dark:text-green-400 font-medium`,children:(0,U.jsx)(m,{id:`settings.network.read`,defaultMessage:`Read`})}),e.write&&(0,U.jsx)(`span`,{className:`px-1.5 py-0.5 rounded bg-blue-500/10 text-blue-600 dark:text-blue-400 font-medium`,children:(0,U.jsx)(m,{id:`settings.network.write`,defaultMessage:`Write`})})]})]},e.url))})]}),(0,U.jsxs)(`div`,{className:`pb-4 pt-4`,children:[(0,U.jsxs)(`div`,{className:`px-3 space-y-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-medium flex items-center gap-1.5`,children:[(0,U.jsx)(m,{id:`settings.network.yourRelays`,defaultMessage:`Your Relays`}),` `,(0,U.jsx)(B,{faqId:`what-are-relays`,iconSize:`size-3.5`})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(I,{htmlFor:`use-user-relays`,className:`text-xs text-muted-foreground cursor-pointer`,children:t.useUserRelays?(0,U.jsx)(m,{id:`settings.network.enabled`,defaultMessage:`Enabled`}):(0,U.jsx)(m,{id:`settings.network.disabled`,defaultMessage:`Disabled`})}),(0,U.jsx)(L,{id:`use-user-relays`,checked:t.useUserRelays,onCheckedChange:M,className:`scale-90`})]})]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[(0,U.jsx)(m,{id:`settings.network.yourRelaysDescription`,defaultMessage:`Your personal relay list. Disabled by default — enable to include your relays in queries and publishes.`}),` `,o?(0,U.jsx)(m,{id:`settings.network.yourRelaysSynced`,defaultMessage:`Your list is still synced to Nostr when logged in.`}):(0,U.jsx)(m,{id:`settings.network.yourRelaysLogin`,defaultMessage:`Log in to sync your list to Nostr.`})]})]}),(0,U.jsx)(`div`,{className:_(`mt-3 transition-opacity`,!t.useUserRelays&&`opacity-40`),children:f.length===0?(0,U.jsx)(`div`,{className:`text-xs text-muted-foreground py-8 text-center`,children:t.useAppRelays?(0,U.jsx)(m,{id:`settings.network.noRelaysWithAppRelays`,defaultMessage:`No personal relays configured. Add relays below or keep App Relays enabled above.`}):(0,U.jsx)(m,{id:`settings.network.noRelays`,defaultMessage:`No personal relays configured. Add relays below.`})}):(0,U.jsx)(`div`,{className:`space-y-1`,children:f.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 py-2.5 px-3 hover:bg-muted/20 transition-colors`,children:[(0,U.jsx)(T,{to:`/r/${encodeURIComponent(e.url)}`,className:`min-w-0 flex-1`,children:(0,U.jsx)(G,{url:e.url})}),(0,U.jsxs)(A,{children:[(0,U.jsx)(O,{asChild:!0,children:(0,U.jsx)(v,{variant:`ghost`,size:`icon`,className:`size-7 text-muted-foreground hover:text-foreground shrink-0`,children:(0,U.jsx)(a,{className:`h-3.5 w-3.5`})})}),(0,U.jsx)(k,{className:`w-40`,align:`end`,children:(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(I,{htmlFor:`read-${e.url}`,className:`text-xs cursor-pointer`,children:(0,U.jsx)(m,{id:`settings.network.read`,defaultMessage:`Read`})}),(0,U.jsx)(L,{id:`read-${e.url}`,checked:e.read,onCheckedChange:()=>F(e.url),className:`data-[state=checked]:bg-green-500 scale-75`})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(I,{htmlFor:`write-${e.url}`,className:`text-xs cursor-pointer`,children:(0,U.jsx)(m,{id:`settings.network.write`,defaultMessage:`Write`})}),(0,U.jsx)(L,{id:`write-${e.url}`,checked:e.write,onCheckedChange:()=>R(e.url),className:`data-[state=checked]:bg-blue-500 scale-75`})]})]})})]}),(0,U.jsx)(v,{variant:`ghost`,size:`icon`,onClick:()=>P(e.url),className:`size-7 text-muted-foreground hover:text-destructive hover:bg-transparent shrink-0`,children:(0,U.jsx)(i,{className:`h-3.5 w-3.5`})})]},e.url))})}),(0,U.jsxs)(`div`,{className:`px-3 mt-3`,children:[(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(I,{htmlFor:`new-relay-url`,className:`sr-only`,children:(0,U.jsx)(m,{id:`settings.network.relayUrl`,defaultMessage:`Relay URL`})}),(0,U.jsx)(D,{id:`new-relay-url`,placeholder:`wss://relay.example.com`,value:S,onChange:e=>C(e.target.value),onKeyDown:e=>{e.key===`Enter`&&N()},className:`h-9 text-base md:text-sm`})]}),(0,U.jsxs)(v,{onClick:N,disabled:!S.trim(),variant:`outline`,size:`sm`,className:`h-9 shrink-0 text-xs`,children:[(0,U.jsx)(n,{className:`h-3.5 w-3.5 mr-1.5`}),(0,U.jsx)(m,{id:`common.add`,defaultMessage:`Add`})]})]}),!o&&(0,U.jsx)(`p`,{className:`text-[10px] text-muted-foreground mt-2`,children:(0,U.jsx)(m,{id:`settings.network.loginToSync`,defaultMessage:`Log in to sync your relay list with Nostr`})})]})]})]})}function q(){let e=p(),{config:r,updateConfig:a}=u(),{user:o}=g(),{mutate:s}=y(),{toast:c}=h(),[l,d]=(0,H.useState)(r.blossomServerMetadata.servers),[f,b]=(0,H.useState)(``);(0,H.useEffect)(()=>{d(r.blossomServerMetadata.servers)},[r.blossomServerMetadata.servers]);let S=e=>{e=e.trim();try{return new URL(e).toString()}catch{try{return new URL(`https://${e}`).toString()}catch{return e}}},C=e=>{let t=e.trim();if(!t)return!1;let n=S(t);try{let e=new URL(n);return e.protocol===`https:`||e.protocol===`http:`}catch{return!1}},w=t=>{a(e=>({...e,useAppBlossomServers:t})),c({title:t?e.formatMessage({id:`settings.network.appBlossomEnabled`,defaultMessage:`App Blossom servers enabled`}):e.formatMessage({id:`settings.network.appBlossomDisabled`,defaultMessage:`App Blossom servers disabled`}),description:t?e.formatMessage({id:`settings.network.appBlossomEnabledDescription`,defaultMessage:`App Blossom servers will be used alongside your personal servers.`}):e.formatMessage({id:`settings.network.appBlossomDisabledDescription`,defaultMessage:`Only your personal Blossom servers will be used.`})})},T=()=>{if(!C(f)){c({title:e.formatMessage({id:`settings.network.invalidServerUrl`,defaultMessage:`Invalid server URL`}),description:e.formatMessage({id:`settings.network.invalidServerUrlDescription`,defaultMessage:`Please enter a valid HTTPS URL (e.g., https://blossom.example.com/)`}),variant:`destructive`});return}let t=S(f);if(l.some(e=>e===t)){c({title:e.formatMessage({id:`settings.network.serverAlreadyAdded`,defaultMessage:`Server already added`}),variant:`destructive`});return}let n=[...l,t];d(n),b(``),O(n)},E=e=>{let t=l.filter(t=>t!==e);d(t),O(t)},O=e=>{let t=Math.floor(Date.now()/1e3);a(n=>({...n,blossomServerMetadata:{servers:e,updatedAt:t}})),o&&k(e)},k=t=>{let n=t.map(e=>[`server`,e]);s({kind:10063,content:``,tags:n},{onSuccess:()=>{c({title:e.formatMessage({id:`settings.network.blossomListPublished`,defaultMessage:`Blossom server list published`}),description:e.formatMessage({id:`settings.network.blossomListPublishedDescription`,defaultMessage:`Your Blossom server list has been published to Nostr.`})})},onError:t=>{console.error(`Failed to publish Blossom server list:`,t),c({title:e.formatMessage({id:`settings.network.blossomListPublishFailed`,defaultMessage:`Failed to publish Blossom server list`}),description:e.formatMessage({id:`settings.network.blossomListPublishFailedDescription`,defaultMessage:`There was an error publishing your server list to Nostr.`}),variant:`destructive`})}})},A=e=>{try{let t=new URL(e);return t.host+(t.pathname===`/`?``:t.pathname)}catch{return e}};return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`pt-4 pb-4`,children:[(0,U.jsxs)(`div`,{className:`px-3 space-y-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(`h3`,{className:`text-sm font-medium`,children:(0,U.jsx)(m,{id:`settings.network.appBlossomServers`,defaultMessage:`App Blossom Servers`})}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(I,{htmlFor:`use-app-blossom-servers`,className:`text-xs text-muted-foreground cursor-pointer`,children:r.useAppBlossomServers?(0,U.jsx)(m,{id:`settings.network.enabled`,defaultMessage:`Enabled`}):(0,U.jsx)(m,{id:`settings.network.disabled`,defaultMessage:`Disabled`})}),(0,U.jsx)(L,{id:`use-app-blossom-servers`,checked:r.useAppBlossomServers,onCheckedChange:w,className:`scale-90`})]})]}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:(0,U.jsx)(m,{id:`settings.network.appBlossomDescription`,defaultMessage:`Default file upload servers for reliable media hosting. Used alongside your personal servers when enabled.`})})]}),(0,U.jsx)(`div`,{className:_(`mt-3 space-y-1 transition-opacity`,!r.useAppBlossomServers&&`opacity-40`),children:x.servers.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 py-2.5 px-3 hover:bg-muted/20 transition-colors`,children:[(0,U.jsx)(t,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,U.jsx)(`span`,{className:`font-mono text-xs flex-1 truncate`,title:e,children:A(e)})]},e))})]}),(0,U.jsxs)(`div`,{className:`pb-4 pt-4`,children:[(0,U.jsxs)(`div`,{className:`px-3 space-y-3`,children:[(0,U.jsx)(`h3`,{className:`text-sm font-medium`,children:(0,U.jsx)(m,{id:`settings.network.yourBlossomServers`,defaultMessage:`Your Blossom Servers`})}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:(0,U.jsx)(m,{id:`settings.network.yourBlossomDescription`,defaultMessage:`Your personal Blossom server list (BUD-03). Synced to Nostr as kind 10063 when logged in.`})})]}),(0,U.jsx)(`div`,{className:`mt-3`,children:l.length===0?(0,U.jsx)(`div`,{className:`text-xs text-muted-foreground py-8 text-center`,children:(0,U.jsx)(m,{id:`settings.network.noBlossomServers`,defaultMessage:`No personal Blossom servers configured. Add a server below or enable App Blossom Servers above.`})}):(0,U.jsx)(`div`,{className:`space-y-1`,children:l.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 py-2.5 px-3 hover:bg-muted/20 transition-colors`,children:[(0,U.jsx)(t,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,U.jsx)(`span`,{className:`font-mono text-xs flex-1 truncate`,title:e,children:A(e)}),(0,U.jsx)(v,{variant:`ghost`,size:`icon`,onClick:()=>E(e),className:`size-7 text-muted-foreground hover:text-destructive hover:bg-transparent shrink-0`,children:(0,U.jsx)(i,{className:`h-3.5 w-3.5`})})]},e))})}),(0,U.jsxs)(`div`,{className:`px-3 mt-3`,children:[(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(I,{htmlFor:`new-blossom-url`,className:`sr-only`,children:(0,U.jsx)(m,{id:`settings.network.blossomServerUrl`,defaultMessage:`Blossom Server URL`})}),(0,U.jsx)(D,{id:`new-blossom-url`,value:f,onChange:e=>b(e.target.value),onKeyDown:e=>{e.key===`Enter`&&T()},placeholder:`https://blossom.example.com/`,className:`h-9 text-base md:text-sm font-mono`})]}),(0,U.jsxs)(v,{onClick:T,disabled:!f.trim(),variant:`outline`,size:`sm`,className:`h-9 shrink-0 text-xs`,children:[(0,U.jsx)(n,{className:`h-3.5 w-3.5 mr-1.5`}),(0,U.jsx)(m,{id:`common.add`,defaultMessage:`Add`})]})]}),!o&&(0,U.jsx)(`p`,{className:`text-[10px] text-muted-foreground mt-2`,children:(0,U.jsx)(m,{id:`settings.network.loginToSyncBlossom`,defaultMessage:`Log in to sync your Blossom server list with Nostr`})})]})]})]})}var J=[{value:`compressed`,label:f({id:`settings.network.imageQuality.compressed`,defaultMessage:`Compressed`})},{value:`original`,label:f({id:`settings.network.imageQuality.original`,defaultMessage:`Original`})}];function Y(){let e=p(),{user:t}=g(),{config:n,updateConfig:r}=u();return z({title:`${e.formatMessage({id:`settings.sections.network.label`,defaultMessage:`Network`})} | ${e.formatMessage({id:`settings.title`,defaultMessage:`Settings`})} | ${n.appName}`,description:e.formatMessage({id:`settings.network.metaDescription`,defaultMessage:`Manage relays and file upload servers`})}),t?(0,U.jsxs)(`main`,{className:``,children:[(0,U.jsx)(V,{backTo:`/settings`,alwaysShowBack:!0,titleContent:(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`h1`,{className:`text-xl font-bold flex items-center gap-1.5`,children:[(0,U.jsx)(m,{id:`settings.sections.network.label`,defaultMessage:`Network`}),` `,(0,U.jsx)(B,{faqId:`what-is-nostr`})]}),(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:(0,U.jsx)(m,{id:`settings.network.pageDescription`,defaultMessage:`Relays are servers that store and distribute content across the Nostr network. Blossom servers handle file uploads.`})})]})}),(0,U.jsxs)(`div`,{className:`p-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-4 px-3 pt-2 pb-4`,children:[(0,U.jsx)(R,{src:`/relay-intro.png`}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`h2`,{className:`text-sm font-semibold`,children:(0,U.jsx)(m,{id:`settings.network.networkConnections`,defaultMessage:`Network Connections`})}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 leading-relaxed`,children:(0,U.jsx)(m,{id:`settings.network.networkConnectionsDescription`,defaultMessage:`Manage your relay connections. Relays are servers that store and distribute Nostr events across the network.`})})]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`relative px-3 py-3.5`,children:[(0,U.jsxs)(`h2`,{className:`text-base font-semibold flex items-center gap-1.5`,children:[(0,U.jsx)(m,{id:`settings.network.relays`,defaultMessage:`Relays`}),` `,(0,U.jsx)(B,{faqId:`what-are-relays`})]}),(0,U.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-1 bg-primary rounded-full`})]}),(0,U.jsx)(`div`,{className:`pt-2 pb-4`,children:(0,U.jsx)(K,{})})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`relative px-3 py-3.5`,children:[(0,U.jsxs)(`h2`,{className:`text-base font-semibold flex items-center gap-1.5`,children:[(0,U.jsx)(m,{id:`settings.network.blossomServers`,defaultMessage:`Blossom Servers`}),` `,(0,U.jsx)(B,{faqId:`what-are-blossom`})]}),(0,U.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-1 bg-primary rounded-full`})]}),(0,U.jsx)(`div`,{className:`pt-2 pb-4`,children:(0,U.jsx)(q,{})})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`relative px-3 py-3.5`,children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold`,children:(0,U.jsx)(m,{id:`settings.network.imageUploads`,defaultMessage:`Image Uploads`})}),(0,U.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-1 bg-primary rounded-full`})]}),(0,U.jsxs)(`div`,{className:`pt-4 pb-4 px-3 space-y-3`,children:[(0,U.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,U.jsx)(I,{className:`text-sm font-medium`,children:(0,U.jsx)(m,{id:`settings.network.uploadQuality`,defaultMessage:`Upload quality`})}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:(0,U.jsx)(m,{id:`settings.network.uploadQualityDescription`,defaultMessage:`Compressed resizes large images and picks the smallest format. Original uploads images exactly as-is.`})})]}),(0,U.jsx)(`div`,{className:`inline-flex items-center gap-0.5 p-1 bg-muted/50 rounded-lg`,children:J.map(({value:e,label:t})=>(0,U.jsx)(`button`,{onClick:()=>r(t=>({...t,imageQuality:e})),className:_(`px-4 py-1.5 text-sm font-medium rounded-md transition-all`,n.imageQuality===e?`bg-background text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:(0,U.jsx)(m,{...t})},e))})]})]})]})]}):(0,U.jsx)(E,{to:`/settings`,replace:!0})}export{Y as NetworkSettingsPage}; // @license-end