diff --git a/build/main.css b/build/main.css index 3536d91..8b7efe0 100644 --- a/build/main.css +++ b/build/main.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--leading-tight:1.25;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.sr-only{clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.m-0{margin:0!important}.mx-auto{margin-inline:auto!important}.ms-1\.5{margin-inline-start:calc(var(--spacing) * 1.5)!important}.ms-auto{margin-inline-start:auto!important}.mt-\[1px\]{margin-top:1px!important}.mt-auto{margin-top:auto!important}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)!important}.block{display:block!important}.contents{display:contents!important}.flex{display:flex!important}.grid{display:grid!important}.hidden{display:none!important}.inline-block{display:inline-block!important}.inline-flex{display:inline-flex!important}.h-2{height:calc(var(--spacing) * 2)!important}.h-5{height:calc(var(--spacing) * 5)!important}.h-7{height:calc(var(--spacing) * 7)!important}.h-8{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)!important}.h-10{height:calc(var(--spacing) * 10)!important}.h-\[22px\]{height:22px!important}.h-\[34px\]{height:34px!important}.h-\[38px\]{height:38px!important}.h-\[150px\]{height:150px!important}.h-\[180px\]{height:180px!important}.h-\[260px\]{height:260px!important}.min-h-7{min-height:calc(var(--spacing) * 7)!important}.min-h-16{min-height:calc(var(--spacing) * 16)!important}.w-2{width:calc(var(--spacing) * 2)!important}.w-8{width:calc(var(--spacing) * 8)!important}.w-9{width:calc(var(--spacing) * 9)!important}.w-\[12\%\]{width:12%!important}.w-\[15\%\]{width:15%!important}.w-\[18\%\]{width:18%!important}.w-\[22px\]{width:22px!important}.w-\[96px\]{width:96px!important}.w-full{width:100%!important}.max-w-\[72ch\]{max-width:72ch!important}.max-w-\[80ch\]{max-width:80ch!important}.max-w-\[180px\]{max-width:180px!important}.max-w-\[440px\]{max-width:440px!important}.max-w-\[1260px\]{max-width:1260px!important}.max-w-full{max-width:100%!important}.min-w-0{min-width:0!important}.min-w-\[130px\]{min-width:130px!important}.flex-1{flex:1!important}.flex-\[1_0_auto\]{flex:1 0 auto!important}.flex-\[1_1_420px\]{flex:420px!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.table-fixed{table-layout:fixed!important}.border-collapse{border-collapse:collapse!important}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.animate-pulse{animation:var(--animate-pulse)!important}.cursor-pointer{cursor:pointer!important}.resize{resize:both!important}.list-none{list-style-type:none!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.grid-cols-\[150px_minmax\(0\,1fr\)\]{grid-template-columns:150px minmax(0,1fr)!important}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto!important}.grid-cols-\[minmax\(0\,3fr\)_minmax\(0\,2fr\)\]{grid-template-columns:minmax(0,3fr) minmax(0,2fr)!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.content-start{align-content:flex-start!important}.items-baseline{align-items:baseline!important}.items-center{align-items:center!important}.items-start{align-items:flex-start!important}.justify-between{justify-content:space-between!important}.justify-center{justify-content:center!important}.gap-0\.5{gap:calc(var(--spacing) * .5)!important}.gap-1{gap:var(--spacing)!important}.gap-1\.5{gap:calc(var(--spacing) * 1.5)!important}.gap-2{gap:calc(var(--spacing) * 2)!important}.gap-2\.5{gap:calc(var(--spacing) * 2.5)!important}.gap-3{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)!important}.gap-5{gap:calc(var(--spacing) * 5)!important}.gap-7{gap:calc(var(--spacing) * 7)!important}.gap-8{gap:calc(var(--spacing) * 8)!important}.gap-\[5px\]{gap:5px!important}.gap-\[6px\]{gap:6px!important}.gap-\[7px\]{gap:7px!important}.gap-\[14px\]{gap:14px!important}.gap-\[22px\]{gap:22px!important}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)!important}.gap-x-3{column-gap:calc(var(--spacing) * 3)!important}.gap-x-5{column-gap:calc(var(--spacing) * 5)!important}.gap-x-6{column-gap:calc(var(--spacing) * 6)!important}.gap-y-1{row-gap:var(--spacing)!important}.gap-y-2{row-gap:calc(var(--spacing) * 2)!important}.gap-y-3{row-gap:calc(var(--spacing) * 3)!important}.self-stretch{align-self:stretch!important}.truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.rounded-\[9px\]{border-radius:9px!important}.rounded-full{border-radius:2147483647px!important}.rounded-lg{border-radius:8px!important}.rounded-md{border-radius:7px!important}.rounded-sm{border-radius:5px!important}.rounded-xl{border-radius:12px!important}.rounded-b-xl{border-bottom-right-radius:12px!important;border-bottom-left-radius:12px!important}.border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-s{border-inline-start-style:var(--tw-border-style)!important;border-inline-start-width:1px!important}.border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-b-2{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:2px!important}.border-band-edge{border-color:var(--bandEdge)!important}.border-border{border-color:var(--border)!important}.border-brand{border-color:var(--accent)!important}.border-critical,.border-critical\/40{border-color:var(--critical)!important}@supports (color:color-mix(in lab, red, red)){.border-critical\/40{border-color:color-mix(in oklab, var(--critical) 40%, transparent)!important}}.border-critical\/50{border-color:var(--critical)!important}@supports (color:color-mix(in lab, red, red)){.border-critical\/50{border-color:color-mix(in oklab, var(--critical) 50%, transparent)!important}}.border-grid{border-color:var(--grid)!important}.border-input{border-color:var(--input)!important}.border-primary{border-color:var(--primary)!important}.border-transparent{border-color:#0000!important}.bg-band{background-color:var(--band)!important}.bg-brand{background-color:var(--accent)!important}.bg-critical{background-color:var(--critical)!important}.bg-good{background-color:var(--good)!important}.bg-ink{background-color:var(--ink)!important}.bg-mute{background-color:var(--muted)!important}.bg-primary{background-color:var(--primary)!important}.bg-surface{background-color:var(--surface)!important}.bg-surface2{background-color:var(--surface2)!important}.bg-surface3{background-color:var(--surface3)!important}.bg-transparent{background-color:#0000!important}.bg-warn{background-color:var(--warn)!important}.p-0{padding:0!important}.px-0{padding-inline:0!important}.px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-5{padding-inline:calc(var(--spacing) * 5)!important}.px-6{padding-inline:calc(var(--spacing) * 6)!important}.px-10{padding-inline:calc(var(--spacing) * 10)!important}.px-\[7px\]{padding-inline:7px!important}.px-\[10px\]{padding-inline:10px!important}.px-\[12px\]{padding-inline:12px!important}.px-\[14px\]{padding-inline:14px!important}.px-\[18px\]{padding-inline:18px!important}.px-\[22px\]{padding-inline:22px!important}.py-2{padding-block:calc(var(--spacing) * 2)!important}.py-3{padding-block:calc(var(--spacing) * 3)!important}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)!important}.py-4{padding-block:calc(var(--spacing) * 4)!important}.py-7{padding-block:calc(var(--spacing) * 7)!important}.py-9{padding-block:calc(var(--spacing) * 9)!important}.py-\[2px\]{padding-block:2px!important}.py-\[11px\]{padding-block:11px!important}.py-\[18px\]{padding-block:18px!important}.ps-7{padding-inline-start:calc(var(--spacing) * 7)!important}.ps-\[7px\]{padding-inline-start:7px!important}.pe-2{padding-inline-end:calc(var(--spacing) * 2)!important}.pt-1{padding-top:var(--spacing)!important}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)!important}.pt-2{padding-top:calc(var(--spacing) * 2)!important}.pt-3{padding-top:calc(var(--spacing) * 3)!important}.pt-4{padding-top:calc(var(--spacing) * 4)!important}.pt-\[2px\]{padding-top:2px!important}.pt-\[18px\]{padding-top:18px!important}.pt-\[22px\]{padding-top:22px!important}.pt-\[30px\]{padding-top:30px!important}.pb-1{padding-bottom:var(--spacing)!important}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)!important}.pb-10{padding-bottom:calc(var(--spacing) * 10)!important}.pb-\[18px\]{padding-bottom:18px!important}.pb-\[22px\]{padding-bottom:22px!important}.text-center{text-align:center!important}.text-end{text-align:end!important}.text-start{text-align:start!important}.align-middle{vertical-align:middle!important}.text-2xl{font-size:26px!important;line-height:var(--tw-leading,var(--text-2xl--line-height))!important}.text-\[11px\]{font-size:11px!important}.text-\[12\.5px\]{font-size:12.5px!important}.text-\[12px\]{font-size:12px!important}.text-\[13px\]{font-size:13px!important}.text-\[15px\]{font-size:15px!important}.text-\[26px\]{font-size:26px!important}.leading-none{--tw-leading:1!important;line-height:1!important}.leading-tight{--tw-leading:var(--leading-tight)!important;line-height:var(--leading-tight)!important}.font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important}.tracking-\[-0\.01em\]{--tw-tracking:-.01em!important;letter-spacing:-.01em!important}.tracking-\[-0\.02em\]{--tw-tracking:-.02em!important;letter-spacing:-.02em!important}.tracking-\[\.08em\]{--tw-tracking:.08em!important;letter-spacing:.08em!important}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere!important}.text-ellipsis{text-overflow:ellipsis!important}.whitespace-nowrap{white-space:nowrap!important}.text-band-ink{color:var(--bandInk)!important}.text-band-muted{color:var(--bandMuted)!important}.text-brand-ink{color:var(--accentInk)!important}.text-critical{color:var(--critical)!important}.text-good-ink{color:var(--goodInk)!important}.text-ink{color:var(--ink)!important}.text-ink2{color:var(--ink2)!important}.text-mute{color:var(--muted)!important}.text-page{color:var(--page)!important}.text-primary-foreground{color:var(--primary-foreground)!important}.text-warn{color:var(--warn)!important}.text-white{color:var(--color-white)!important}.uppercase{text-transform:uppercase!important}.tabular-nums{--tw-numeric-spacing:tabular-nums!important;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)!important}.opacity-75{opacity:.75!important}.opacity-85{opacity:.85!important}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.transition-\[background-color\,border-color\,color\,opacity\]{transition-property:background-color,border-color,color,opacity!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-transform{transition-property:transform,translate,scale,rotate!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.duration-100{--tw-duration:.1s!important;transition-duration:.1s!important}.outline-none{--tw-outline-style:none!important;outline-style:none!important}.group-last\:border-b-0:is(:where(.group):last-child *){border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg!important}.placeholder\:text-mute::placeholder{color:var(--muted)!important}.last\:border-b-0:last-child,.last-of-type\:border-b-0:last-of-type{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.empty\:hidden:empty{display:none!important}@media (hover:hover){.hover\:border-critical:hover{border-color:var(--critical)!important}.hover\:border-line:hover{border-color:var(--line)!important}.hover\:bg-band-edge:hover{background-color:var(--bandEdge)!important}.hover\:bg-critical:hover{background-color:var(--critical)!important}.hover\:bg-surface2:hover{background-color:var(--surface2)!important}.hover\:bg-surface3:hover{background-color:var(--surface3)!important}.hover\:text-band-muted:hover{color:var(--bandMuted)!important}.hover\:text-ink:hover{color:var(--ink)!important}.hover\:text-white:hover{color:var(--color-white)!important}.hover\:underline:hover{text-decoration-line:underline!important}.hover\:underline-offset-4:hover{text-underline-offset:4px!important}.hover\:opacity-85:hover{opacity:.85!important}.hover\:opacity-100:hover{opacity:1!important}}.focus\:border-brand:focus{border-color:var(--accent)!important}.disabled\:pointer-events-none:disabled{pointer-events:none!important}.disabled\:opacity-55:disabled{opacity:.55!important}@media not all and (width>=960px){.max-\[960px\]\:col-start-1{grid-column-start:1!important}.max-\[960px\]\:col-start-2{grid-column-start:2!important}.max-\[960px\]\:row-span-2{grid-row:span 2/span 2!important}.max-\[960px\]\:row-start-1{grid-row-start:1!important}.max-\[960px\]\:mt-1{margin-top:var(--spacing)!important}.max-\[960px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.max-\[960px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.max-\[960px\]\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto!important}.max-\[960px\]\:gap-5{gap:calc(var(--spacing) * 5)!important}.max-\[960px\]\:border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.max-\[960px\]\:px-6{padding-inline:calc(var(--spacing) * 6)!important}.max-\[960px\]\:ps-0{padding-inline-start:0!important}}@media not all and (width>=782px){.max-\[782px\]\:col-auto{grid-column:auto!important}.max-\[782px\]\:row-auto{grid-row:auto!important}.max-\[782px\]\:hidden{display:none!important}.max-\[782px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.max-\[782px\]\:gap-3{gap:calc(var(--spacing) * 3)!important}.max-\[782px\]\:px-4{padding-inline:calc(var(--spacing) * 4)!important}}@media not all and (width>=600px){.max-\[600px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none!important}.\[\&_svg\]\:h-5 svg{height:calc(var(--spacing) * 5)!important}.\[\&_svg\]\:w-5 svg{width:calc(var(--spacing) * 5)!important}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0!important}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none!important}.\[\&\>svg\]\:block>svg{display:block!important}.\[\&\>svg\]\:h-7>svg{height:calc(var(--spacing) * 7)!important}.\[\&\>svg\]\:h-\[26px\]>svg{height:26px!important}.\[\&\>svg\]\:h-auto>svg{height:auto!important}.\[\&\>svg\]\:w-28>svg{width:calc(var(--spacing) * 28)!important}.\[\&\>svg\]\:w-\[128px\]>svg{width:128px!important}.\[\&\>svg\]\:w-\[138px\]>svg{width:138px!important}@media (hover:hover){.hover\:\[\&\>td\]\:bg-surface2:hover>td{background-color:var(--surface2)!important}}}#monoranks-admin,.mr-scope,body.monoranks-screen{--page:#f5f6f8;--surface:#fff;--surface2:#f1f3f6;--surface3:#e9ecf1;--ink:#14181f;--ink2:#4c5563;--muted:#8a929e;--grid:#e6e9ee;--line:#cbd2db;--border:#e3e7ec;--accent:#2a6fdb;--accentInk:#1d5bbf;--accentSoft:#e8f0fc;--good:#0ca30c;--goodInk:#0a7a0a;--warn:#e6a100;--critical:#d03b3b;--grayTrack:#e6e9ee;--primaryBtn:#14181f;--primaryBtnInk:#fff;--band:#14181f;--bandInk:#f3f4f6;--bandMuted:#b8bec8;--bandEdge:#2c313a;--tintGood:#0ca30c12;--tintGoodEdge:#0ca30c59;--tintWarn:#e6a1001a;--tintWarnEdge:#e6a10066;--tintBad:#d03b3b12;--tintBadEdge:#d03b3b59;--background:var(--page);--foreground:var(--ink);--card:var(--surface);--card-foreground:var(--ink);--popover:var(--surface);--popover-foreground:var(--ink);--primary:var(--primaryBtn);--primary-foreground:var(--primaryBtnInk);--secondary:var(--surface2);--secondary-foreground:var(--ink);--muted-token:var(--surface2);--muted-foreground:var(--muted);--accent-token:var(--surface2);--accent-foreground:var(--ink);--destructive:var(--critical);--input:var(--line);--ring:var(--accent);--radius:.5rem}#monoranks-admin[data-theme=dark]{--page:#0f1115;--surface:#171a20;--surface2:#1e2229;--surface3:#262b33;--ink:#f3f4f6;--ink2:#b8bec8;--muted:#7d8590;--grid:#262b33;--line:#3a404a;--border:#262b33;--accent:#3987e5;--accentInk:#86b6ef;--accentSoft:#1a2a44;--good:#0ca30c;--goodInk:#3ccf3c;--warn:#fab219;--critical:#e05656;--grayTrack:#2c313a;--primaryBtn:#f3f4f6;--primaryBtnInk:#14181f;--band:#0b0d11;--bandEdge:#262b33;--tintGood:#3ccf3c1f;--tintGoodEdge:#3ccf3c61;--tintWarn:#fab21924;--tintWarnEdge:#fab2196b;--tintBad:#e056561f;--tintBadEdge:#e0565661;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body.monoranks-screen #wpbody-content{padding-bottom:0}body.monoranks-screen #wpfooter{display:none}body.monoranks-screen #wpwrap{min-height:0}body.monoranks-screen #wpwrap,body.monoranks-screen #wpcontent,body.monoranks-screen #wpbody,body.monoranks-screen #wpbody-content{background:var(--page)}body.monoranks-screen #wpbody-content{min-height:max(calc(100vh - var(--wp-admin--admin-bar--height,32px)), var(--mr-fill,0px));flex-direction:column;display:flex}body.monoranks-screen #wpbody-content>.wrap{flex-direction:column;flex:1 0 auto;min-height:0;margin:0;padding:0;display:flex}body.monoranks-screen #wpbody-content>:is(.notice,.update-nag,.updated,.error,#message){display:none}#monoranks-admin :is(.notice,.update-nag,.updated,.error,#message){border:1px solid var(--border);background:var(--surface);width:100%;color:var(--ink);box-shadow:none;border-radius:12px;margin:0;padding:12px 16px;font-size:13px;line-height:1.45;display:block}#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:1180px;margin:0 auto 4px}#monoranks-admin div.notice-success{background-image:linear-gradient(var(--tintGood), var(--tintGood))!important;border-color:var(--tintGoodEdge)!important}#monoranks-admin div.notice-error{background-image:linear-gradient(var(--tintBad), var(--tintBad))!important;border-color:var(--tintBadEdge)!important}#monoranks-admin div.notice-warning,#monoranks-admin div.update-nag{background-image:linear-gradient(var(--tintWarn), var(--tintWarn))!important;border-color:var(--tintWarnEdge)!important}@media (width<=1340px){#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:calc(100% - 80px)}}@media (width<=960px){#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:calc(100% - 48px)}}@media (width<=782px){#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:calc(100% - 32px)}}body.monoranks-screen #wpbody-content>.update-nag{display:block}#monoranks-admin{background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;flex-direction:column;flex:1 0 auto;margin-inline:-20px 0;font-size:13px;line-height:1.45;display:flex}@media (width<=782px){#monoranks-admin{margin-inline:-10px 0}body.monoranks-screen #wpbody-content>:is(.notice,.update-nag,.updated,.error,#message){margin-inline:10px}}#monoranks-admin a{color:var(--accentInk);text-decoration:none}#monoranks-admin a:hover{color:var(--ink);text-decoration:none}#monoranks-admin code{background:var(--surface2);color:var(--ink);text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;direction:ltr;unicode-bidi:isolate;border-radius:4px;max-width:100%;padding:1px 5px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;display:inline-block;overflow:hidden}#monoranks-admin bdi{unicode-bidi:isolate}#monoranks-admin h1,#monoranks-admin h2,#monoranks-admin h3,#monoranks-admin p{color:inherit;margin:0;padding:0}#monoranks-admin :focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:none}#monoranks-admin input[type=password],#monoranks-admin input[type=url]{box-shadow:none;min-height:0;margin:0;line-height:normal}#monoranks-admin .notice p{margin:0;padding:0;font-size:13px}.mr-score{color:var(--muted);vertical-align:middle;align-items:center;gap:6px;display:inline-flex}.mr-score .mr-ring{line-height:0;display:inline-block;position:relative}.mr-score .mr-ring>span{font-variant-numeric:tabular-nums;color:var(--ink);justify-content:center;align-items:center;font-weight:600;line-height:1;display:flex;position:absolute;inset:0}.mr-score.mr-none .mr-ring>span{color:var(--muted)}.mr-score.mr-sm .mr-ring{width:30px;height:30px}.mr-score.mr-sm .mr-ring>span{font-size:11px}.mr-score.mr-lg .mr-ring{width:64px;height:64px}.mr-score.mr-lg .mr-ring>span{font-size:20px}.mr-score .mr-lbl{color:var(--muted);font-size:11px;font-weight:500}.mr-score.mr-good{color:var(--good)}.mr-score.mr-warn{color:var(--warn)}.mr-score.mr-critical{color:var(--critical)}.mr-score.mr-none{color:var(--line)}#monoranks-admin .spin{border:1.5px solid;border-right-color:#0000;border-radius:50%;flex:none;width:12px;height:12px;animation:.7s linear infinite mr-spin;display:inline-block}#monoranks-admin [data-size=sm] .spin,#monoranks-admin .h-7 .spin{width:10px;height:10px}@keyframes mr-spin{to{transform:rotate(360deg)}}[dir=rtl] #monoranks-admin .mr-flip{transform:scaleX(-1)}@media (prefers-reduced-motion:reduce){#monoranks-admin *{transition:none!important}#monoranks-admin .spin{animation-duration:1.6s}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}} +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--leading-tight:1.25;--leading-snug:1.375;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none!important}.invisible{visibility:hidden!important}.visible{visibility:visible!important}.sr-only{clip-path:inset(50%)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.absolute{position:absolute!important}.relative{position:relative!important}.start-0{inset-inline-start:calc(var(--spacing) * 0)!important}.end-0{inset-inline-end:calc(var(--spacing) * 0)!important}.bottom-\[calc\(100\%\+6px\)\]{bottom:calc(100% + 6px)!important}.left-1\/2{left:50%!important}.z-50{z-index:50!important}.m-0{margin:0!important}.mx-auto{margin-inline:auto!important}.ms-1\.5{margin-inline-start:calc(var(--spacing) * 1.5)!important}.ms-auto{margin-inline-start:auto!important}.mt-\[1px\]{margin-top:1px!important}.mt-auto{margin-top:auto!important}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)!important}.block{display:block!important}.contents{display:contents!important}.flex{display:flex!important}.grid{display:grid!important}.hidden{display:none!important}.inline-block{display:inline-block!important}.inline-flex{display:inline-flex!important}.h-2{height:calc(var(--spacing) * 2)!important}.h-4{height:calc(var(--spacing) * 4)!important}.h-5{height:calc(var(--spacing) * 5)!important}.h-7{height:calc(var(--spacing) * 7)!important}.h-8{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)!important}.h-10{height:calc(var(--spacing) * 10)!important}.h-\[22px\]{height:22px!important}.h-\[34px\]{height:34px!important}.h-\[38px\]{height:38px!important}.h-\[150px\]{height:150px!important}.h-\[180px\]{height:180px!important}.h-\[260px\]{height:260px!important}.min-h-7{min-height:calc(var(--spacing) * 7)!important}.min-h-16{min-height:calc(var(--spacing) * 16)!important}.w-2{width:calc(var(--spacing) * 2)!important}.w-4{width:calc(var(--spacing) * 4)!important}.w-8{width:calc(var(--spacing) * 8)!important}.w-9{width:calc(var(--spacing) * 9)!important}.w-\[12\%\]{width:12%!important}.w-\[15\%\]{width:15%!important}.w-\[18\%\]{width:18%!important}.w-\[22px\]{width:22px!important}.w-\[96px\]{width:96px!important}.w-full{width:100%!important}.w-max{width:max-content!important}.max-w-\[72ch\]{max-width:72ch!important}.max-w-\[180px\]{max-width:180px!important}.max-w-\[260px\]{max-width:260px!important}.max-w-\[440px\]{max-width:440px!important}.max-w-\[1260px\]{max-width:1260px!important}.max-w-full{max-width:100%!important}.min-w-0{min-width:0!important}.min-w-\[130px\]{min-width:130px!important}.flex-1{flex:1!important}.flex-\[1_0_auto\]{flex:1 0 auto!important}.flex-\[1_1_420px\]{flex:420px!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.table-fixed{table-layout:fixed!important}.border-collapse{border-collapse:collapse!important}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)!important;translate:var(--tw-translate-x) var(--tw-translate-y)!important}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)!important}.animate-pulse{animation:var(--animate-pulse)!important}.cursor-pointer{cursor:pointer!important}.resize{resize:both!important}.list-none{list-style-type:none!important}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.grid-cols-\[150px_minmax\(0\,1fr\)\]{grid-template-columns:150px minmax(0,1fr)!important}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto!important}.grid-cols-\[minmax\(0\,3fr\)_minmax\(0\,2fr\)\]{grid-template-columns:minmax(0,3fr) minmax(0,2fr)!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.content-start{align-content:flex-start!important}.items-baseline{align-items:baseline!important}.items-center{align-items:center!important}.items-start{align-items:flex-start!important}.justify-between{justify-content:space-between!important}.justify-center{justify-content:center!important}.gap-0\.5{gap:calc(var(--spacing) * .5)!important}.gap-1{gap:var(--spacing)!important}.gap-1\.5{gap:calc(var(--spacing) * 1.5)!important}.gap-2{gap:calc(var(--spacing) * 2)!important}.gap-2\.5{gap:calc(var(--spacing) * 2.5)!important}.gap-3{gap:calc(var(--spacing) * 3)!important}.gap-4{gap:calc(var(--spacing) * 4)!important}.gap-5{gap:calc(var(--spacing) * 5)!important}.gap-7{gap:calc(var(--spacing) * 7)!important}.gap-8{gap:calc(var(--spacing) * 8)!important}.gap-\[5px\]{gap:5px!important}.gap-\[6px\]{gap:6px!important}.gap-\[7px\]{gap:7px!important}.gap-\[14px\]{gap:14px!important}.gap-\[22px\]{gap:22px!important}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)!important}.gap-x-3{column-gap:calc(var(--spacing) * 3)!important}.gap-x-5{column-gap:calc(var(--spacing) * 5)!important}.gap-x-6{column-gap:calc(var(--spacing) * 6)!important}.gap-y-1{row-gap:var(--spacing)!important}.gap-y-2{row-gap:calc(var(--spacing) * 2)!important}.gap-y-3{row-gap:calc(var(--spacing) * 3)!important}.self-stretch{align-self:stretch!important}.truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.rounded-\[9px\]{border-radius:9px!important}.rounded-full{border-radius:2147483647px!important}.rounded-lg{border-radius:8px!important}.rounded-md{border-radius:7px!important}.rounded-sm{border-radius:5px!important}.rounded-xl{border-radius:12px!important}.rounded-b-xl{border-bottom-right-radius:12px!important;border-bottom-left-radius:12px!important}.border{border-style:var(--tw-border-style)!important;border-width:1px!important}.border-s{border-inline-start-style:var(--tw-border-style)!important;border-inline-start-width:1px!important}.border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-b-2{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:2px!important}.border-band-edge{border-color:var(--bandEdge)!important}.border-border{border-color:var(--border)!important}.border-brand{border-color:var(--accent)!important}.border-critical,.border-critical\/40{border-color:var(--critical)!important}@supports (color:color-mix(in lab, red, red)){.border-critical\/40{border-color:color-mix(in oklab, var(--critical) 40%, transparent)!important}}.border-critical\/50{border-color:var(--critical)!important}@supports (color:color-mix(in lab, red, red)){.border-critical\/50{border-color:color-mix(in oklab, var(--critical) 50%, transparent)!important}}.border-grid{border-color:var(--grid)!important}.border-input{border-color:var(--input)!important}.border-primary{border-color:var(--primary)!important}.border-transparent{border-color:#0000!important}.bg-band{background-color:var(--band)!important}.bg-brand{background-color:var(--accent)!important}.bg-critical{background-color:var(--critical)!important}.bg-good{background-color:var(--good)!important}.bg-ink{background-color:var(--ink)!important}.bg-mute{background-color:var(--muted)!important}.bg-primary{background-color:var(--primary)!important}.bg-surface{background-color:var(--surface)!important}.bg-surface2{background-color:var(--surface2)!important}.bg-surface3{background-color:var(--surface3)!important}.bg-transparent{background-color:#0000!important}.bg-warn{background-color:var(--warn)!important}.p-0{padding:0!important}.px-0{padding-inline:0!important}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)!important}.px-3{padding-inline:calc(var(--spacing) * 3)!important}.px-5{padding-inline:calc(var(--spacing) * 5)!important}.px-6{padding-inline:calc(var(--spacing) * 6)!important}.px-10{padding-inline:calc(var(--spacing) * 10)!important}.px-\[7px\]{padding-inline:7px!important}.px-\[10px\]{padding-inline:10px!important}.px-\[12px\]{padding-inline:12px!important}.px-\[14px\]{padding-inline:14px!important}.px-\[18px\]{padding-inline:18px!important}.px-\[22px\]{padding-inline:22px!important}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)!important}.py-2{padding-block:calc(var(--spacing) * 2)!important}.py-3{padding-block:calc(var(--spacing) * 3)!important}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)!important}.py-4{padding-block:calc(var(--spacing) * 4)!important}.py-7{padding-block:calc(var(--spacing) * 7)!important}.py-9{padding-block:calc(var(--spacing) * 9)!important}.py-\[2px\]{padding-block:2px!important}.py-\[11px\]{padding-block:11px!important}.py-\[18px\]{padding-block:18px!important}.ps-7{padding-inline-start:calc(var(--spacing) * 7)!important}.ps-\[7px\]{padding-inline-start:7px!important}.pe-2{padding-inline-end:calc(var(--spacing) * 2)!important}.pt-1{padding-top:var(--spacing)!important}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)!important}.pt-2{padding-top:calc(var(--spacing) * 2)!important}.pt-3{padding-top:calc(var(--spacing) * 3)!important}.pt-4{padding-top:calc(var(--spacing) * 4)!important}.pt-\[2px\]{padding-top:2px!important}.pt-\[18px\]{padding-top:18px!important}.pt-\[22px\]{padding-top:22px!important}.pt-\[30px\]{padding-top:30px!important}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)!important}.pb-10{padding-bottom:calc(var(--spacing) * 10)!important}.pb-\[18px\]{padding-bottom:18px!important}.pb-\[22px\]{padding-bottom:22px!important}.text-center{text-align:center!important}.text-end{text-align:end!important}.text-start{text-align:start!important}.align-middle{vertical-align:middle!important}.text-2xl{font-size:26px!important;line-height:var(--tw-leading,var(--text-2xl--line-height))!important}.text-\[11px\]{font-size:11px!important}.text-\[12\.5px\]{font-size:12.5px!important}.text-\[12px\]{font-size:12px!important}.text-\[13px\]{font-size:13px!important}.text-\[15px\]{font-size:15px!important}.text-\[26px\]{font-size:26px!important}.leading-none{--tw-leading:1!important;line-height:1!important}.leading-snug{--tw-leading:var(--leading-snug)!important;line-height:var(--leading-snug)!important}.leading-tight{--tw-leading:var(--leading-tight)!important;line-height:var(--leading-tight)!important}.font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-semibold{--tw-font-weight:var(--font-weight-semibold)!important;font-weight:var(--font-weight-semibold)!important}.tracking-\[-0\.01em\]{--tw-tracking:-.01em!important;letter-spacing:-.01em!important}.tracking-\[-0\.02em\]{--tw-tracking:-.02em!important;letter-spacing:-.02em!important}.tracking-\[\.08em\]{--tw-tracking:.08em!important;letter-spacing:.08em!important}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere!important}.text-ellipsis{text-overflow:ellipsis!important}.whitespace-nowrap{white-space:nowrap!important}.text-band-ink{color:var(--bandInk)!important}.text-band-muted{color:var(--bandMuted)!important}.text-brand-ink{color:var(--accentInk)!important}.text-critical{color:var(--critical)!important}.text-good-ink{color:var(--goodInk)!important}.text-ink{color:var(--ink)!important}.text-ink2{color:var(--ink2)!important}.text-mute{color:var(--muted)!important}.text-page{color:var(--page)!important}.text-primary-foreground{color:var(--primary-foreground)!important}.text-warn{color:var(--warn)!important}.text-white{color:var(--color-white)!important}.uppercase{text-transform:uppercase!important}.tabular-nums{--tw-numeric-spacing:tabular-nums!important;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)!important}.opacity-0{opacity:0!important}.opacity-75{opacity:.75!important}.opacity-85{opacity:.85!important}.opacity-100{opacity:1!important}.shadow-md{--tw-shadow:none!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.transition-\[background-color\,border-color\,color\,opacity\]{transition-property:background-color,border-color,color,opacity!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-transform{transition-property:transform,translate,scale,rotate!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.duration-100{--tw-duration:.1s!important;transition-duration:.1s!important}.outline-none{--tw-outline-style:none!important;outline-style:none!important}.group-last\:border-b-0:is(:where(.group):last-child *){border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg!important}.placeholder\:text-mute::placeholder{color:var(--muted)!important}.last\:border-b-0:last-child,.last-of-type\:border-b-0:last-of-type{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.empty\:hidden:empty{display:none!important}@media (hover:hover){.hover\:border-critical:hover{border-color:var(--critical)!important}.hover\:border-line:hover{border-color:var(--line)!important}.hover\:bg-band-edge:hover{background-color:var(--bandEdge)!important}.hover\:bg-critical:hover{background-color:var(--critical)!important}.hover\:bg-surface2:hover{background-color:var(--surface2)!important}.hover\:bg-surface3:hover{background-color:var(--surface3)!important}.hover\:text-band-muted:hover{color:var(--bandMuted)!important}.hover\:text-ink:hover{color:var(--ink)!important}.hover\:text-white:hover{color:var(--color-white)!important}.hover\:underline:hover{text-decoration-line:underline!important}.hover\:underline-offset-4:hover{text-underline-offset:4px!important}.hover\:opacity-85:hover{opacity:.85!important}.hover\:opacity-100:hover{opacity:1!important}}.focus\:border-brand:focus{border-color:var(--accent)!important}.focus-visible\:text-ink:focus-visible{color:var(--ink)!important}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style)!important;outline-width:2px!important}.focus-visible\:outline-brand:focus-visible{outline-color:var(--accent)!important}.disabled\:pointer-events-none:disabled{pointer-events:none!important}.disabled\:opacity-55:disabled{opacity:.55!important}@media not all and (width>=960px){.max-\[960px\]\:col-start-1{grid-column-start:1!important}.max-\[960px\]\:col-start-2{grid-column-start:2!important}.max-\[960px\]\:row-span-2{grid-row:span 2/span 2!important}.max-\[960px\]\:row-start-1{grid-row-start:1!important}.max-\[960px\]\:mt-1{margin-top:var(--spacing)!important}.max-\[960px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.max-\[960px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.max-\[960px\]\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto!important}.max-\[960px\]\:gap-5{gap:calc(var(--spacing) * 5)!important}.max-\[960px\]\:border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.max-\[960px\]\:px-6{padding-inline:calc(var(--spacing) * 6)!important}.max-\[960px\]\:ps-0{padding-inline-start:0!important}}@media not all and (width>=782px){.max-\[782px\]\:col-auto{grid-column:auto!important}.max-\[782px\]\:row-auto{grid-row:auto!important}.max-\[782px\]\:hidden{display:none!important}.max-\[782px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.max-\[782px\]\:gap-3{gap:calc(var(--spacing) * 3)!important}.max-\[782px\]\:px-4{padding-inline:calc(var(--spacing) * 4)!important}}@media not all and (width>=600px){.max-\[600px\]\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none!important}.\[\&_svg\]\:h-5 svg{height:calc(var(--spacing) * 5)!important}.\[\&_svg\]\:w-5 svg{width:calc(var(--spacing) * 5)!important}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0!important}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none!important}.\[\&\>svg\]\:block>svg{display:block!important}.\[\&\>svg\]\:h-7>svg{height:calc(var(--spacing) * 7)!important}.\[\&\>svg\]\:h-\[26px\]>svg{height:26px!important}.\[\&\>svg\]\:h-auto>svg{height:auto!important}.\[\&\>svg\]\:w-28>svg{width:calc(var(--spacing) * 28)!important}.\[\&\>svg\]\:w-\[128px\]>svg{width:128px!important}.\[\&\>svg\]\:w-\[138px\]>svg{width:138px!important}@media (hover:hover){.hover\:\[\&\>td\]\:bg-surface2:hover>td{background-color:var(--surface2)!important}}}#monoranks-admin,.mr-scope,body.monoranks-screen{--page:#f5f6f8;--surface:#fff;--surface2:#f1f3f6;--surface3:#e9ecf1;--ink:#14181f;--ink2:#4c5563;--muted:#8a929e;--grid:#e6e9ee;--line:#cbd2db;--border:#e3e7ec;--accent:#2a6fdb;--accentInk:#1d5bbf;--accentSoft:#e8f0fc;--good:#0ca30c;--goodInk:#0a7a0a;--warn:#e6a100;--critical:#d03b3b;--grayTrack:#e6e9ee;--primaryBtn:#14181f;--primaryBtnInk:#fff;--band:#14181f;--bandInk:#f3f4f6;--bandMuted:#b8bec8;--bandEdge:#2c313a;--tintGood:#0ca30c12;--tintGoodEdge:#0ca30c59;--tintWarn:#e6a1001a;--tintWarnEdge:#e6a10066;--tintBad:#d03b3b12;--tintBadEdge:#d03b3b59;--background:var(--page);--foreground:var(--ink);--card:var(--surface);--card-foreground:var(--ink);--popover:var(--surface);--popover-foreground:var(--ink);--primary:var(--primaryBtn);--primary-foreground:var(--primaryBtnInk);--secondary:var(--surface2);--secondary-foreground:var(--ink);--muted-token:var(--surface2);--muted-foreground:var(--muted);--accent-token:var(--surface2);--accent-foreground:var(--ink);--destructive:var(--critical);--input:var(--line);--ring:var(--accent);--radius:.5rem}#monoranks-admin[data-theme=dark]{--page:#0f1115;--surface:#171a20;--surface2:#1e2229;--surface3:#262b33;--ink:#f3f4f6;--ink2:#b8bec8;--muted:#7d8590;--grid:#262b33;--line:#3a404a;--border:#262b33;--accent:#3987e5;--accentInk:#86b6ef;--accentSoft:#1a2a44;--good:#0ca30c;--goodInk:#3ccf3c;--warn:#fab219;--critical:#e05656;--grayTrack:#2c313a;--primaryBtn:#f3f4f6;--primaryBtnInk:#14181f;--band:#0b0d11;--bandEdge:#262b33;--tintGood:#3ccf3c1f;--tintGoodEdge:#3ccf3c61;--tintWarn:#fab21924;--tintWarnEdge:#fab2196b;--tintBad:#e056561f;--tintBadEdge:#e0565661;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body.monoranks-screen #wpbody-content{padding-bottom:0}body.monoranks-screen #wpfooter{display:none}body.monoranks-screen #wpwrap{min-height:0}body.monoranks-screen #wpwrap,body.monoranks-screen #wpcontent,body.monoranks-screen #wpbody,body.monoranks-screen #wpbody-content{background:var(--page)}body.monoranks-screen #wpbody-content{min-height:max(calc(100vh - var(--wp-admin--admin-bar--height,32px)), var(--mr-fill,0px));flex-direction:column;display:flex}body.monoranks-screen #wpbody-content>.wrap{flex-direction:column;flex:1 0 auto;min-height:0;margin:0;padding:0;display:flex}body.monoranks-screen #wpbody-content>:is(.notice,.update-nag,.updated,.error,#message){display:none}#monoranks-admin :is(.notice,.update-nag,.updated,.error,#message){border:1px solid var(--border);background:var(--surface);width:100%;color:var(--ink);box-shadow:none;border-radius:12px;margin:0;padding:12px 16px;font-size:13px;line-height:1.45;display:block}#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:1180px;margin:0 auto 4px}#monoranks-admin div.notice-success{background-image:linear-gradient(var(--tintGood), var(--tintGood))!important;border-color:var(--tintGoodEdge)!important}#monoranks-admin div.notice-error{background-image:linear-gradient(var(--tintBad), var(--tintBad))!important;border-color:var(--tintBadEdge)!important}#monoranks-admin div.notice-warning,#monoranks-admin div.update-nag{background-image:linear-gradient(var(--tintWarn), var(--tintWarn))!important;border-color:var(--tintWarnEdge)!important}@media (width<=1340px){#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:calc(100% - 80px)}}@media (width<=960px){#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:calc(100% - 48px)}}@media (width<=782px){#monoranks-admin>:is(.notice,.updated,.error,#message){max-width:calc(100% - 32px)}}body.monoranks-screen #wpbody-content>.update-nag{display:block}#monoranks-admin{background:var(--page);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;flex-direction:column;flex:1 0 auto;margin-inline:-20px 0;font-size:13px;line-height:1.45;display:flex}@media (width<=782px){#monoranks-admin{margin-inline:-10px 0}body.monoranks-screen #wpbody-content>:is(.notice,.update-nag,.updated,.error,#message){margin-inline:10px}}#monoranks-admin a{color:var(--accentInk);text-decoration:none}#monoranks-admin a:hover{color:var(--ink);text-decoration:none}#monoranks-admin code{background:var(--surface2);color:var(--ink);text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;direction:ltr;unicode-bidi:isolate;border-radius:4px;max-width:100%;padding:1px 5px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;display:inline-block;overflow:hidden}#monoranks-admin bdi{unicode-bidi:isolate}#monoranks-admin h1,#monoranks-admin h2,#monoranks-admin h3,#monoranks-admin p{color:inherit;margin:0;padding:0}#monoranks-admin :focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:none}#monoranks-admin input[type=password],#monoranks-admin input[type=url]{box-shadow:none;min-height:0;margin:0;line-height:normal}#monoranks-admin .notice p{margin:0;padding:0;font-size:13px}.mr-score{color:var(--muted);vertical-align:middle;align-items:center;gap:6px;display:inline-flex}.mr-score .mr-ring{line-height:0;display:inline-block;position:relative}.mr-score .mr-ring>span{font-variant-numeric:tabular-nums;color:var(--ink);justify-content:center;align-items:center;font-weight:600;line-height:1;display:flex;position:absolute;inset:0}.mr-score.mr-none .mr-ring>span{color:var(--muted)}.mr-score.mr-sm .mr-ring{width:30px;height:30px}.mr-score.mr-sm .mr-ring>span{font-size:11px}.mr-score.mr-lg .mr-ring{width:64px;height:64px}.mr-score.mr-lg .mr-ring>span{font-size:20px}.mr-score .mr-lbl{color:var(--muted);font-size:11px;font-weight:500}.mr-score.mr-good{color:var(--good)}.mr-score.mr-warn{color:var(--warn)}.mr-score.mr-critical{color:var(--critical)}.mr-score.mr-none{color:var(--line)}#monoranks-admin .spin{border:1.5px solid;border-right-color:#0000;border-radius:50%;flex:none;width:12px;height:12px;animation:.7s linear infinite mr-spin;display:inline-block}#monoranks-admin [data-size=sm] .spin,#monoranks-admin .h-7 .spin{width:10px;height:10px}@keyframes mr-spin{to{transform:rotate(360deg)}}[dir=rtl] #monoranks-admin .mr-flip{transform:scaleX(-1)}@media (prefers-reduced-motion:reduce){#monoranks-admin *{transition:none!important}#monoranks-admin .spin{animation-duration:1.6s}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes pulse{50%{opacity:.5}} diff --git a/build/main.js b/build/main.js index e3f6741..67fc65f 100644 --- a/build/main.js +++ b/build/main.js @@ -5,5 +5,5 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r= `);for(i=r=0;ri||c[r]!==l[i]){var u=` `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ve=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Be(n):``}function Ue(e,t){switch(e.tag){case 26:case 27:case 5:return Be(e.type);case 16:return Be(`Lazy`);case 13:return e.child!==t&&t!==null?Be(`Suspense Fallback`):Be(`Suspense`);case 19:return Be(`SuspenseList`);case 0:case 15:return He(e.type,!1);case 11:return He(e.type.render,!1);case 1:return He(e.type,!0);case 31:return Be(`Activity`);case 30:return Be(`ViewTransition`);default:return``}}function We(e){try{var t=``,n=null;do t+=Ue(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` -`+e.stack}}var Ge=Object.prototype.hasOwnProperty,Ke=t.unstable_scheduleCallback,qe=t.unstable_cancelCallback,Je=t.unstable_shouldYield,Ye=t.unstable_requestPaint,Xe=t.unstable_now,Ze=t.unstable_getCurrentPriorityLevel,Qe=t.unstable_ImmediatePriority,$e=t.unstable_UserBlockingPriority,et=t.unstable_NormalPriority,tt=t.unstable_LowPriority,nt=t.unstable_IdlePriority,rt=t.log,it=t.unstable_setDisableYieldValue,at=null,ot=null;function st(e){if(typeof rt==`function`&&it(e),ot&&typeof ot.setStrictMode==`function`)try{ot.setStrictMode(at,e)}catch{}}var ct=Math.clz32?Math.clz32:dt,lt=Math.log,ut=Math.LN2;function dt(e){return e>>>=0,e===0?32:31-(lt(e)/ut|0)|0}var ft=256,pt=262144,mt=4194304;function ht(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function gt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=ht(n))):i=ht(o):i=ht(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ht(n))):i=ht(o)):i=ht(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function _t(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function vt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function St(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function k(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=pr),gr=` `,_r=!1;function vr(e,t){switch(e){case`keyup`:return dr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function yr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var br=!1;function xr(e,t){switch(e){case`compositionend`:return yr(t);case`keypress`:return t.which===32?(_r=!0,gr):null;case`textInput`:return e=t.data,e===gr&&_r?null:e;default:return null}}function Sr(e,t){if(br)return e===`compositionend`||!fr&&vr(e,t)?(e=Fn(),Pn=Nn=Mn=null,br=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Xr=kn&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),$r&&Ur($r,r)||($r=r,r=Jf(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-ct(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),B&&$i(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),B&&$i(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return B&&$i(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),B&&$i(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===w&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case ae:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===w){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),co(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===me&&to(l)===r.type){n(e,r.sibling),c=a(r,o.props),co(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===w?(c=Ri(o.props.children,e.mode,c,o.key),co(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),co(c,o),c.return=e,e=c)}return s(e);case oe:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case me:return o=to(o),_(e,r,o,c)}if(we(o))return h(e,r,o,c);if(xe(o)){if(l=xe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,so(o),c);if(o.$$typeof===ue)return _(e,r,Ea(e,o),c);lo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{oo=0;var i=_(e,t,n,r);return ao=null,i}catch(t){if(t===Ya||t===Za)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var fo=uo(!0),po=uo(!1),mo=!1;function ho(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function go(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function _o(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function vo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function yo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,wt(e,n)}}function bo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xo=!1;function So(){if(xo){var e=Ba;if(e!==null)throw e}}function Co(e,t,n,r){xo=!1;var i=e.updateQueue;mo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===za&&(xo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=C({},d,f);break a;case 2:mo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function wo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function To(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=E.T,s={};s.types=o===null?null:o.types,E.T=s,dc(e,!1,t,n);try{var c=i(),l=E.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?uc(e,t,Ua(c,r),jd(e)):uc(e,t,r,jd(e))}catch(n){uc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{D.p=a,o!==null&&s.types!==null&&(o.types=s.types),E.T=o}}function ec(){}function tc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=nc(e).queue;$s(e,a,t,Te,n===null?ec:function(){return rc(e),n(r)})}function nc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Te,baseState:Te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:Te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rc(e){var t=nc(e);t.next===null&&(t=e.alternate.memoizedState),uc(e,t.next.queue,{},jd())}function ic(){return Ta(sh)}function ac(){return ss().memoizedState}function oc(){return ss().memoizedState}function sc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=_o(n);var r=vo(t,e,n);r!==null&&(Pd(r,t,n),yo(r,t,n)),t={cache:Ma()},e.payload=t;return}t=t.return}}function cc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fc(e)?pc(t,n):(n=Di(e,t,n,r),n!==null&&(Pd(n,e,r),mc(n,t,r)))}function lc(e,t,n){uc(e,t,n,jd())}function uc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fc(e))pc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),q===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Pd(n,e,r),mc(n,t,r),!0}return!1}function dc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},fc(e)){if(t)throw Error(i(479))}else t=Di(e,n,r,2),t!==null&&Pd(t,e,2)}function fc(e){var t=e.alternate;return e===V||t!==null&&t===V}function pc(e,t){Go=Wo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function mc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,wt(e,n)}}var hc={readContext:Ta,use:us,useCallback:Zo,useContext:Zo,useEffect:Zo,useImperativeHandle:Zo,useLayoutEffect:Zo,useInsertionEffect:Zo,useMemo:Zo,useReducer:Zo,useRef:Zo,useState:Zo,useDebugValue:Zo,useDeferredValue:Zo,useTransition:Zo,useSyncExternalStore:Zo,useId:Zo,useHostTransitionStatus:Zo,useFormState:Zo,useActionState:Zo,useOptimistic:Zo,useMemoCache:Zo,useCacheRefresh:Zo,useEffectEvent:Zo},gc={readContext:Ta,use:us,useCallback:function(e,t){return os().memoizedState=[e,t===void 0?null:t],e},useContext:Ta,useEffect:Bs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Rs(4194308,4,Ks.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Rs(4194308,4,e,t)},useInsertionEffect:function(e,t){Rs(4,2,e,t)},useMemo:function(e,t){var n=os();t=t===void 0?null:t;var r=e();if(Ko){st(!0);try{e()}finally{st(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=os();if(n!==void 0){var i=n(t);if(Ko){st(!0);try{n(t)}finally{st(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=cc.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=os();return e={current:e},t.memoizedState=e},useState:function(e){e=Ss(e);var t=e.queue,n=lc.bind(null,V,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Js,useDeferredValue:function(e,t){return Zs(os(),e,t)},useTransition:function(){var e=Ss(!1);return e=$s.bind(null,V,e.queue,!0,!1),os().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=V,a=os();if(B){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||_s(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Bs(ys.bind(null,r,o,e),[e]),r.flags|=2048,Is(9,{destroy:void 0},vs.bind(null,r,o,n,t),null),n},useId:function(){var e=os(),t=q.identifierPrefix;if(B){var n=Qi,r=Zi;n=(r&~(1<<32-ct(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=qo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[jt]=t,o[Mt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&ml(t)}}return U(t),t.subtreeFlags&=-33554433,hl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&ml(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Me.current,da(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ia,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[jt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||ca(t,!0)}else e=lp(e).createTextNode(r),e[jt]=t,t.stateNode=e}return U(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=da(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[jt]=t}else fa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;U(t),e=!1}else n=pa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Lo(t),t):(Lo(t),null);if(t.flags&128)throw Error(i(558))}return U(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=da(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[jt]=t}else fa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;U(t),a=!1}else a=pa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Lo(t),t):(Lo(t),null)}return Lo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),_l(t,t.updateQueue),U(t),null);case 4:return Fe(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,U(t),null;case 10:return ya(t.type),U(t),null;case 19:if(Bo(t),r=t.memoizedState,r===null)return U(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)vl(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Vo(e),o!==null){for(t.flags|=128,vl(r,!1),e=o.updateQueue,t.updateQueue=e,_l(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return zo(t,Ro.current&1|2),B&&$i(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Xe()>gd&&(t.flags|=128,a=!0,vl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Vo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,_l(t,e),vl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!B)return U(t),null}else 2*Xe()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,a=!0,vl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Xe(),e.sibling=null,o=Ro.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||B?zo(t,o):(n=o,O(jo,t),O(Ro,n),Mo===null&&(Mo=t)),B&&$i(t,r.treeForkCount),e}return U(t),null;case 22:case 23:return Lo(t),Ao(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(U(t),t.subtreeFlags&6&&(t.flags|=8192)):U(t),n=t.updateQueue,n!==null&&_l(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ke(Ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ya(ja),U(t),null;case 25:return null;case 30:return t.flags|=33554432,U(t),null}throw Error(i(156,t.tag))}function bl(e,t){switch(na(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ya(ja),Fe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Le(t),null;case 31:if(t.memoizedState!==null){if(Lo(t),t.alternate===null)throw Error(i(340));fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Lo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Bo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Fe(),null;case 10:return ya(t.type),null;case 22:case 23:return Lo(t),Ao(),e!==null&&ke(Ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ya(ja),null;case 25:return null;default:return null}}function xl(e,t){switch(na(t),t.tag){case 3:ya(ja),Fe();break;case 26:case 27:case 5:Le(t);break;case 4:Fe();break;case 31:t.memoizedState!==null&&Lo(t);break;case 13:Lo(t);break;case 19:Bo(t);break;case 10:ya(t.type);break;case 22:case 23:Lo(t),Ao(),e!==null&&ke(Ga);break;case 24:ya(ja)}}function Sl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Cl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function wl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{To(t,n)}catch(t){Z(e,e.return,t)}}}function Tl(e,t,n){n.props=Cc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function El(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Dl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Ol(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[jt]=e,Ut(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,E.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,K&6)throw Error(i(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),ot&&typeof ot.onPostCommitFiberRoot==`function`)try{ot.onPostCommitFiberRoot(at,o)}catch{}return!0}finally{D.p=a,E.T=r,uf(e,t)}}function pf(e,t,n){t=Ui(n,t),t=kc(e.stateNode,t,2),e=vo(e,t,2),e!==null&&(St(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Ui(n,e),n=Ac(2),r=vo(t,n,2),r!==null&&(jc(n,r,t,e),St(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>Xe()-md?K&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=bt()),e=Oi(e,t),e!==null&&(St(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Ke(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ct(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=gt(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||_t(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Xe(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=F(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Ut(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+F(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+F(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+F(n.imageSizes)+`"]`)):i+=`[href="`+F(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=C({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Rt]=!0,o.onload=o.onerror=function(){Wt(o)}),Ut(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+F(r)+`"][href="`+F(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=C({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Ut(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Ht(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=C({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Ut(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Ht(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=C({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Ut(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Ht(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=C({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Ut(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Me.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Ht(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=Ht(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Ht(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+F(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return C({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Rt]){r.loading=1;return}}else t=e.createElement(`link`),t[Rt]=!0,t.onload=t.onerror=Wt.bind(null,t),np(t,`link`,n),Ut(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+F(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+F(n.href)+`"]`);if(r)return t.instance=r,Ut(r),r;var a=C({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Ut(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,Ut(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),Ut(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,Ut(a),a):(r=n,(a=vm.get(o))&&(r=C({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Ut(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Ut(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Ut(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()}))(),_=c(u(),1);function v(){(0,_.useEffect)(()=>{let e=document.getElementById(`adminmenuwrap`),t=document.getElementById(`wpbody-content`);if(!e||!t)return;let n=()=>t.style.setProperty(`--mr-fill`,Math.ceil(e.getBoundingClientRect().height)+`px`);n();let r=new ResizeObserver(n);return r.observe(e),window.addEventListener(`resize`,n),()=>{r.disconnect(),window.removeEventListener(`resize`,n),t.style.removeProperty(`--mr-fill`)}},[])}function y(){let e=window.monoranksAdmin;if(!e)throw Error(`monoranksAdmin settings missing`);return e}var b={overview:`monoranks`,settings:`monoranks-settings`};function ee(){return new URLSearchParams(window.location.search).get(`page`)===b.settings?`settings`:`overview`}function te(){let[e,t]=(0,_.useState)(ee),n=(0,_.useRef)(()=>void 0);(0,_.useEffect)(()=>{let e=()=>t(ee());window.addEventListener(`popstate`,e);let r=e=>{let t=e.target.closest(`#toplevel_page_monoranks a[href*="page=monoranks"]`);if(!t||e.metaKey||e.ctrlKey||e.shiftKey||e.button!==0)return;let r=new URL(t.href,window.location.href).searchParams.get(`page`),i=r===b.settings?`settings`:r===b.overview?`overview`:null;i&&(e.preventDefault(),n.current(i))};return document.addEventListener(`click`,r),()=>{window.removeEventListener(`popstate`,e),document.removeEventListener(`click`,r)}},[]),(0,_.useEffect)(()=>{ne(e),document.title=document.title.replace(/^[^‹]*‹/,(y().titles[e]||`MonoRanks`)+` ‹`)},[e]);let r=n=>{if(n===e)return;let r=n===`settings`?y().urls.settings:y().urls.overview;window.history.pushState({monoranks:n},``,r),t(n),window.scrollTo({top:0})};return n.current=r,[e,r]}function ne(e){let t=document.getElementById(`toplevel_page_monoranks`);t&&t.querySelectorAll(`.wp-submenu a`).forEach(t=>{let n=new URL(t.href,window.location.href).searchParams.get(`page`)===b[e];t.classList.toggle(`current`,n),t.parentElement?.classList.toggle(`current`,n),n?t.setAttribute(`aria-current`,`page`):t.removeAttribute(`aria-current`)})}var{__:x,_n:S,_x:re,sprintf:C,isRTL:ie}=window.wp.i18n,ae=window.wp.apiFetch,oe=`/monoranks/v1/admin`,w={overview:()=>ae({path:`${oe}/overview`}),settings:()=>ae({path:`${oe}/settings`}),grow:()=>ae({path:`${oe}/grow`}),apply:e=>ae({path:`${oe}/apply`,method:`POST`,data:{fix:e}}),undo:(e,t)=>ae({path:`${oe}/undo`,method:`POST`,data:{entry:e.index,at:e.at,screen:t}}),sync:e=>ae({path:`${oe}/sync`,method:`POST`,data:{screen:e}}),connect:(e,t)=>ae({path:`${oe}/connect`,method:`POST`,data:{key:e,api_base:t}}),disconnect:()=>ae({path:`${oe}/disconnect`,method:`POST`}),deleteEverything:()=>ae({path:`${oe}/delete`,method:`POST`})};function se(e,t){let n=e?.message;return typeof n==`string`&&n?n:t}var ce=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function le(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:ce(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var ue=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},T=e=>{let t=ue(e);return t.charAt(0).toUpperCase()+t.slice(1)},de=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),fe={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function pe(e){return e!=null}function me(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??fe.width,a=e.size??e.height??fe.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?de(...c):de(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??fe[`stroke-width`])*Number(e.size??e.width??fe.width)/Number(t.size??t.width??fe.width):t.strokeWidth??fe[`stroke-width`];return[`svg`,{...Object.entries(fe).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&pe(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&pe(t.width)&&{[r(`width`)]:t.width},...`height`in t&&pe(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function he(e,t={}){return me(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var ge=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},_e=(0,_.createContext)({}),ve=()=>(0,_.useContext)(_e),ye=(0,_.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:v=`currentColor`,className:y=``}=ve()??{},b=!!c||ge(d),[ee,te,ne=[]]=he(u,{color:e??v,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:de(y,s),hasA11yProp:b,attributes:d});return(0,_.createElement)(ee,{ref:f,...te},[...ne.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function be(e,t=[],n=[]){let r=typeof e==`string`?le(e,t,n):e,i=(0,_.forwardRef)(({className:e,...t},n)=>(0,_.createElement)(ye,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=T(r.name)),i}var xe={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};xe.node;var Se=be(xe),Ce={name:`arrow-up-right`,size:24,node:[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]};Ce.node;var we=be(Ce),E={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};E.node;var D=be(E),Te={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};Te.node;var Ee=be(Te),De={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};De.node;var Oe=be(De),ke={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};ke.node;var O=be(ke),Ae={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};Ae.node;var je=be(Ae);function Me(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),Ie=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Le=`-`,Re=[],ze=`arbitrary..`,Be=e=>{let t=Ue(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return He(e);let n=e.split(Le);return Ve(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?Pe(i,t):t:i||Re}return n[e]||Re}}},Ve=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=Ve(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(Le):e.slice(t).join(Le),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?ze+r:void 0})(),Ue=e=>{let{theme:t,classGroups:n}=e;return We(n,t)},We=(e,t)=>{let n=Ie();for(let r in e){let i=e[r];Ge(i,n,r,t)}return n},Ge=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){qe(e,t,n);return}if(typeof e==`function`){Je(e,t,n,r);return}Ye(e,t,n,r)},qe=(e,t,n)=>{let r=e===``?t:Xe(t,e);r.classGroupId=n},Je=(e,t,n,r)=>{if(Ze(e)){Ge(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Fe(n,e))},Ye=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(Le),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,Qe=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},$e=`!`,et=`:`,tt=[],nt=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),rt=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return nt(t,l,c,u)};if(t){let e=t+et,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):nt(tt,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},it=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},at=e=>({cache:Qe(e.cacheSize),parseClassName:rt(e),sortModifiers:it(e),postfixLookupClassGroupIds:ot(e),...Be(e)}),ot=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(st),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+$e:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},lt=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=at(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=ct(e,n);return i(e,a),a};return a=o,(...e)=>a(lt(...e))},ft=[],pt=e=>{let t=t=>t[e]||ft;return t.isThemeGetter=!0,t.themeKey=e,t},mt=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ht=/^\((?:(\w[\w-]*):)?(.+)\)$/i,gt=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,_t=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,vt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,yt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,bt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,xt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,St=e=>gt.test(e),k=e=>!!e&&!Number.isNaN(Number(e)),Ct=e=>!!e&&Number.isInteger(Number(e)),wt=e=>e.endsWith(`%`)&&k(e.slice(0,-1)),Tt=e=>_t.test(e),Et=()=>!0,Dt=e=>vt.test(e)&&!yt.test(e),Ot=()=>!1,kt=e=>bt.test(e),At=e=>xt.test(e),jt=e=>!A(e)&&!j(e),Mt=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Nt=e=>Jt(e,Qt,Ot),A=e=>mt.test(e),Pt=e=>Jt(e,M,Dt),Ft=e=>Jt(e,$t,k),It=e=>Jt(e,tn,Et),Lt=e=>Jt(e,en,Ot),Rt=e=>Jt(e,Xt,Ot),zt=e=>Jt(e,Zt,At),Bt=e=>Jt(e,nn,kt),j=e=>ht.test(e),Vt=e=>Yt(e,M),Ht=e=>Yt(e,en),Ut=e=>Yt(e,Xt),Wt=e=>Yt(e,Qt),Gt=e=>Yt(e,Zt),Kt=e=>Yt(e,nn,!0),qt=e=>Yt(e,tn,!0),Jt=(e,t,n)=>{let r=mt.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Yt=(e,t,n=!1)=>{let r=ht.exec(e);return r?r[1]?t(r[1]):n:!1},Xt=e=>e===`position`||e===`percentage`,Zt=e=>e===`image`||e===`url`,Qt=e=>e===`length`||e===`size`||e===`bg-size`,M=e=>e===`length`,$t=e=>e===`number`,en=e=>e===`family-name`,tn=e=>e===`number`||e===`weight`,nn=e=>e===`shadow`,rn=dt(()=>{let e=pt(`color`),t=pt(`font`),n=pt(`text`),r=pt(`font-weight`),i=pt(`tracking`),a=pt(`leading`),o=pt(`breakpoint`),s=pt(`container`),c=pt(`spacing`),l=pt(`radius`),u=pt(`shadow`),d=pt(`inset-shadow`),f=pt(`text-shadow`),p=pt(`drop-shadow`),m=pt(`blur`),h=pt(`perspective`),g=pt(`aspect`),_=pt(`ease`),v=pt(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],ee=()=>[...b(),j,A],te=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ne=()=>[`auto`,`contain`,`none`],x=()=>[j,A,c],S=()=>[St,`full`,`auto`,...x()],re=()=>[Ct,`none`,`subgrid`,j,A],C=()=>[`auto`,{span:[`full`,Ct,j,A]},Ct,j,A],ie=()=>[Ct,`auto`,j,A],ae=()=>[`auto`,`min`,`max`,`fr`,j,A],oe=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],w=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],se=()=>[`auto`,...x()],ce=()=>[St,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...x()],le=()=>[s,St,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...x()],ue=()=>[St,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...x()],T=()=>[e,j,A],de=()=>[...b(),Ut,Rt,{position:[j,A]}],fe=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],pe=()=>[`auto`,`cover`,`contain`,Wt,Nt,{size:[j,A]}],me=()=>[wt,Vt,Pt],he=()=>[``,`none`,`full`,l,j,A],ge=()=>[``,k,Vt,Pt],_e=()=>[`solid`,`dashed`,`dotted`,`double`],ve=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],ye=()=>[k,wt,Ut,Rt],be=()=>[``,`none`,m,j,A],xe=()=>[`none`,k,j,A],Se=()=>[`none`,k,j,A],Ce=()=>[k,j,A],we=()=>[St,`full`,...x()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Tt],breakpoint:[Tt],color:[Et],container:[Tt],"drop-shadow":[Tt],ease:[`in`,`out`,`in-out`],font:[jt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Tt],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Tt],shadow:[Tt],spacing:[`px`,k],text:[Tt],"text-shadow":[Tt],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,St,A,j,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,j,A]}],"container-named":[Mt],columns:[{columns:[k,`auto`,A,j,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:ee()}],overflow:[{overflow:te()}],"overflow-x":[{"overflow-x":te()}],"overflow-y":[{"overflow-y":te()}],overscroll:[{overscroll:ne()}],"overscroll-x":[{"overscroll-x":ne()}],"overscroll-y":[{"overscroll-y":ne()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:S()}],"inset-x":[{"inset-x":S()}],"inset-y":[{"inset-y":S()}],start:[{"inset-s":S(),start:S()}],end:[{"inset-e":S(),end:S()}],"inset-bs":[{"inset-bs":S()}],"inset-be":[{"inset-be":S()}],top:[{top:S()}],right:[{right:S()}],bottom:[{bottom:S()}],left:[{left:S()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[Ct,`auto`,j,A]}],basis:[{basis:[St,`full`,`auto`,s,...x()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[k,St,`auto`,`initial`,`none`,A]}],grow:[{grow:[``,k,j,A]}],shrink:[{shrink:[``,k,j,A]}],order:[{order:[Ct,`first`,`last`,`none`,j,A]}],"grid-cols":[{"grid-cols":re()}],"col-start-end":[{col:C()}],"col-start":[{"col-start":ie()}],"col-end":[{"col-end":ie()}],"grid-rows":[{"grid-rows":re()}],"row-start-end":[{row:C()}],"row-start":[{"row-start":ie()}],"row-end":[{"row-end":ie()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ae()}],"auto-rows":[{"auto-rows":ae()}],gap:[{gap:x()}],"gap-x":[{"gap-x":x()}],"gap-y":[{"gap-y":x()}],"justify-content":[{justify:[...oe(),`normal`]}],"justify-items":[{"justify-items":[...w(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...w()]}],"align-content":[{content:[`normal`,...oe()]}],"align-items":[{items:[...w(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...w(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...w(),`baseline`]}],"place-self":[{"place-self":[`auto`,...w()]}],p:[{p:x()}],px:[{px:x()}],py:[{py:x()}],ps:[{ps:x()}],pe:[{pe:x()}],pbs:[{pbs:x()}],pbe:[{pbe:x()}],pt:[{pt:x()}],pr:[{pr:x()}],pb:[{pb:x()}],pl:[{pl:x()}],m:[{m:se()}],mx:[{mx:se()}],my:[{my:se()}],ms:[{ms:se()}],me:[{me:se()}],mbs:[{mbs:se()}],mbe:[{mbe:se()}],mt:[{mt:se()}],mr:[{mr:se()}],mb:[{mb:se()}],ml:[{ml:se()}],"space-x":[{"space-x":x()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":x()}],"space-y-reverse":[`space-y-reverse`],size:[{size:ce()}],"inline-size":[{inline:[`auto`,...le()]}],"min-inline-size":[{"min-inline":[`auto`,...le()]}],"max-inline-size":[{"max-inline":[`none`,...le()]}],"block-size":[{block:[`auto`,...ue()]}],"min-block-size":[{"min-block":[`auto`,...ue()]}],"max-block-size":[{"max-block":[`none`,...ue()]}],w:[{w:[s,`screen`,...ce()]}],"min-w":[{"min-w":[s,`screen`,`none`,...ce()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...ce()]}],h:[{h:[`screen`,`lh`,...ce()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...ce()]}],"max-h":[{"max-h":[`screen`,`lh`,`none`,...ce()]}],"font-size":[{text:[`base`,n,Vt,Pt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,qt,It]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,wt,A]}],"font-family":[{font:[Ht,Lt,t]}],"font-features":[{"font-features":[A]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,j,A]}],"line-clamp":[{"line-clamp":[k,`none`,j,Ft]}],leading:[{leading:[`none`,a,...x()]}],"list-image":[{"list-image":[`none`,j,A]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,j,A]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:T()}],"text-color":[{text:T()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[..._e(),`wavy`]}],"text-decoration-thickness":[{decoration:[k,`from-font`,`auto`,j,Pt]}],"text-decoration-color":[{decoration:T()}],"underline-offset":[{"underline-offset":[k,`auto`,j,A]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:x()}],"tab-size":[{tab:[Ct,j,A]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,j,A]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,j,A]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:de()}],"bg-repeat":[{bg:fe()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Ct,j,A],radial:[``,j,A],conic:[``,Ct,j,A]},Gt,zt]}],"bg-color":[{bg:T()}],"gradient-from-pos":[{from:me()}],"gradient-via-pos":[{via:me()}],"gradient-to-pos":[{to:me()}],"gradient-from":[{from:T()}],"gradient-via":[{via:T()}],"gradient-to":[{to:T()}],rounded:[{rounded:he()}],"rounded-s":[{"rounded-s":he()}],"rounded-e":[{"rounded-e":he()}],"rounded-t":[{"rounded-t":he()}],"rounded-r":[{"rounded-r":he()}],"rounded-b":[{"rounded-b":he()}],"rounded-l":[{"rounded-l":he()}],"rounded-ss":[{"rounded-ss":he()}],"rounded-se":[{"rounded-se":he()}],"rounded-ee":[{"rounded-ee":he()}],"rounded-es":[{"rounded-es":he()}],"rounded-tl":[{"rounded-tl":he()}],"rounded-tr":[{"rounded-tr":he()}],"rounded-br":[{"rounded-br":he()}],"rounded-bl":[{"rounded-bl":he()}],"border-w":[{border:ge()}],"border-w-x":[{"border-x":ge()}],"border-w-y":[{"border-y":ge()}],"border-w-s":[{"border-s":ge()}],"border-w-e":[{"border-e":ge()}],"border-w-bs":[{"border-bs":ge()}],"border-w-be":[{"border-be":ge()}],"border-w-t":[{"border-t":ge()}],"border-w-r":[{"border-r":ge()}],"border-w-b":[{"border-b":ge()}],"border-w-l":[{"border-l":ge()}],"divide-x":[{"divide-x":ge()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":ge()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[..._e(),`hidden`,`none`]}],"divide-style":[{divide:[..._e(),`hidden`,`none`]}],"border-color":[{border:T()}],"border-color-x":[{"border-x":T()}],"border-color-y":[{"border-y":T()}],"border-color-s":[{"border-s":T()}],"border-color-e":[{"border-e":T()}],"border-color-bs":[{"border-bs":T()}],"border-color-be":[{"border-be":T()}],"border-color-t":[{"border-t":T()}],"border-color-r":[{"border-r":T()}],"border-color-b":[{"border-b":T()}],"border-color-l":[{"border-l":T()}],"divide-color":[{divide:T()}],"outline-style":[{outline:[..._e(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[k,j,A]}],"outline-w":[{outline:[``,k,Vt,Pt]}],"outline-color":[{outline:T()}],shadow:[{shadow:[``,`inner`,`none`,u,Kt,Bt]}],"shadow-color":[{shadow:T()}],"inset-shadow":[{"inset-shadow":[`none`,d,Kt,Bt]}],"inset-shadow-color":[{"inset-shadow":T()}],"ring-w":[{ring:ge()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:T()}],"ring-offset-w":[{"ring-offset":[k,Pt]}],"ring-offset-color":[{"ring-offset":T()}],"inset-ring-w":[{"inset-ring":ge()}],"inset-ring-color":[{"inset-ring":T()}],"text-shadow":[{"text-shadow":[`none`,f,Kt,Bt]}],"text-shadow-color":[{"text-shadow":T()}],opacity:[{opacity:[k,j,A]}],"mix-blend":[{"mix-blend":[...ve(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":ve()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[k]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":T()}],"mask-image-linear-to-color":[{"mask-linear-to":T()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":T()}],"mask-image-t-to-color":[{"mask-t-to":T()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":T()}],"mask-image-r-to-color":[{"mask-r-to":T()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":T()}],"mask-image-b-to-color":[{"mask-b-to":T()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":T()}],"mask-image-l-to-color":[{"mask-l-to":T()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":T()}],"mask-image-x-to-color":[{"mask-x-to":T()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":T()}],"mask-image-y-to-color":[{"mask-y-to":T()}],"mask-image-radial":[{"mask-radial":[j,A]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":T()}],"mask-image-radial-to-color":[{"mask-radial-to":T()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[k]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":T()}],"mask-image-conic-to-color":[{"mask-conic-to":T()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:de()}],"mask-repeat":[{mask:fe()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,j,A]}],filter:[{filter:[``,`none`,j,A]}],blur:[{blur:be()}],brightness:[{brightness:[k,j,A]}],contrast:[{contrast:[k,j,A]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Kt,Bt]}],"drop-shadow-color":[{"drop-shadow":T()}],grayscale:[{grayscale:[``,k,j,A]}],"hue-rotate":[{"hue-rotate":[k,j,A]}],invert:[{invert:[``,k,j,A]}],saturate:[{saturate:[k,j,A]}],sepia:[{sepia:[``,k,j,A]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,j,A]}],"backdrop-blur":[{"backdrop-blur":be()}],"backdrop-brightness":[{"backdrop-brightness":[k,j,A]}],"backdrop-contrast":[{"backdrop-contrast":[k,j,A]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,k,j,A]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[k,j,A]}],"backdrop-invert":[{"backdrop-invert":[``,k,j,A]}],"backdrop-opacity":[{"backdrop-opacity":[k,j,A]}],"backdrop-saturate":[{"backdrop-saturate":[k,j,A]}],"backdrop-sepia":[{"backdrop-sepia":[``,k,j,A]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":x()}],"border-spacing-x":[{"border-spacing-x":x()}],"border-spacing-y":[{"border-spacing-y":x()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,j,A]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[k,`initial`,j,A]}],ease:[{ease:[`linear`,`initial`,_,j,A]}],delay:[{delay:[k,j,A]}],animate:[{animate:[`none`,v,j,A]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,j,A]}],"perspective-origin":[{"perspective-origin":ee()}],rotate:[{rotate:xe()}],"rotate-x":[{"rotate-x":xe()}],"rotate-y":[{"rotate-y":xe()}],"rotate-z":[{"rotate-z":xe()}],scale:[{scale:Se()}],"scale-x":[{"scale-x":Se()}],"scale-y":[{"scale-y":Se()}],"scale-z":[{"scale-z":Se()}],"scale-3d":[`scale-3d`],skew:[{skew:Ce()}],"skew-x":[{"skew-x":Ce()}],"skew-y":[{"skew-y":Ce()}],transform:[{transform:[j,A,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:ee()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:we()}],"translate-x":[{"translate-x":we()}],"translate-y":[{"translate-y":we()}],"translate-z":[{"translate-z":we()}],"translate-none":[`translate-none`],zoom:[{zoom:[Ct,j,A]}],accent:[{accent:T()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:T()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,j,A]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":T()}],"scrollbar-track-color":[{"scrollbar-track":T()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":x()}],"scroll-mx":[{"scroll-mx":x()}],"scroll-my":[{"scroll-my":x()}],"scroll-ms":[{"scroll-ms":x()}],"scroll-me":[{"scroll-me":x()}],"scroll-mbs":[{"scroll-mbs":x()}],"scroll-mbe":[{"scroll-mbe":x()}],"scroll-mt":[{"scroll-mt":x()}],"scroll-mr":[{"scroll-mr":x()}],"scroll-mb":[{"scroll-mb":x()}],"scroll-ml":[{"scroll-ml":x()}],"scroll-p":[{"scroll-p":x()}],"scroll-px":[{"scroll-px":x()}],"scroll-py":[{"scroll-py":x()}],"scroll-ps":[{"scroll-ps":x()}],"scroll-pe":[{"scroll-pe":x()}],"scroll-pbs":[{"scroll-pbs":x()}],"scroll-pbe":[{"scroll-pbe":x()}],"scroll-pt":[{"scroll-pt":x()}],"scroll-pr":[{"scroll-pr":x()}],"scroll-pb":[{"scroll-pb":x()}],"scroll-pl":[{"scroll-pl":x()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,j,A]}],fill:[{fill:[`none`,...T()]}],"stroke-w":[{stroke:[k,Vt,Pt,Ft]}],stroke:[{stroke:[`none`,...T()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`start`,`end`,`right`,`left`],"inset-y":[`inset-bs`,`inset-be`,`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`ps`,`pe`,`pr`,`pl`],py:[`pbs`,`pbe`,`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`ms`,`me`,`mr`,`ml`],my:[`mbs`,`mbe`,`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-s`,`border-w-e`,`border-w-r`,`border-w-l`],"border-w-y":[`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-s`,`border-color-e`,`border-color-r`,`border-color-l`],"border-color-y":[`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-ms`,`scroll-me`,`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-ps`,`scroll-pe`,`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function N(...e){return rn(Ne(e))}var an=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),P=o(((e,t)=>{t.exports=an()}))(),on=`.notice, .update-nag, .updated, .error, #message`;function sn({className:e}){let t=(0,_.useRef)(null);return(0,_.useEffect)(()=>{let e=document.getElementById(`wpbody-content`),n=t.current;if(!e||!n)return;let r=()=>{e.querySelectorAll(`:scope > *`).forEach(e=>{e.id!==`monoranks-admin`&&e.matches(on)&&n.appendChild(e)})};r();let i=new MutationObserver(r);return i.observe(e,{childList:!0}),()=>i.disconnect()},[]),(0,P.jsx)(`div`,{ref:t,className:N(`empty:hidden`,e)})}function F(e,t,n=`plugin-admin`){try{let r=new URL(e);return r.host===new URL(y().apiBase).host?e:(r.searchParams.set(`utm_source`,`wordpress-plugin`),r.searchParams.set(`utm_medium`,`admin`),r.searchParams.set(`utm_campaign`,n),r.searchParams.set(`utm_content`,t),r.toString())}catch{return e}}function cn({which:e,className:t}){return(0,P.jsx)(`span`,{className:N(`inline-flex [&>svg]:block`,t),dangerouslySetInnerHTML:{__html:y().logos[e]}})}var ln=`mx-auto w-full max-w-[1260px] px-10 max-[960px]:px-6 max-[782px]:px-4`;function un({section:e,go:t,title:n,description:r,actions:i,children:a}){let o=y(),s=[{id:`overview`,label:x(`Overview`,`monoranks`),href:o.urls.overview},{id:`settings`,label:x(`Settings`,`monoranks`),href:o.urls.settings}];return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`header`,{className:`bg-band text-band-ink`,children:(0,P.jsxs)(`div`,{className:N(ln,`flex min-h-16 items-center gap-7 max-[782px]:gap-3`),children:[(0,P.jsx)(`a`,{href:o.urls.overview,onClick:e=>{e.preventDefault(),t(`overview`)},className:`inline-flex items-center text-band-ink hover:text-white`,children:(0,P.jsx)(cn,{which:`wordmark`,className:`[&>svg]:h-7 [&>svg]:w-[138px]`})}),(0,P.jsx)(`nav`,{className:`flex self-stretch gap-[22px] max-[782px]:gap-3`,"aria-label":x(`MonoRanks sections`,`monoranks`),children:s.map(n=>(0,P.jsx)(`a`,{href:n.href,onClick:e=>{e.preventDefault(),t(n.id)},"aria-current":e===n.id?`page`:void 0,className:N(`inline-flex items-center border-b-2 pt-[2px] text-[13px] font-medium`,e===n.id?`border-brand text-band-ink`:`border-transparent text-band-muted hover:text-white`),children:n.label},n.id))}),(0,P.jsxs)(`div`,{className:`ms-auto flex items-center gap-1.5`,children:[(0,P.jsx)(`a`,{href:F(o.urls.docs,`header-help`,e),target:`_blank`,rel:`noopener`,className:`inline-flex h-8 items-center gap-1.5 rounded-md px-3 text-[12.5px] font-medium text-band-muted hover:bg-band-edge hover:text-white`,children:x(`Help`,`monoranks`)}),(0,P.jsxs)(`a`,{href:F(o.urls.app,`header-open`,e),target:`_blank`,rel:`noopener`,className:`inline-flex h-8 items-center gap-1.5 rounded-md border border-band-edge px-3 text-[12.5px] font-medium text-band-ink hover:bg-band-edge hover:text-white max-[782px]:hidden`,children:[x(`Open MonoRanks`,`monoranks`),(0,P.jsx)(we,{size:14,className:`mr-flip`})]})]})]})}),(0,P.jsxs)(`div`,{className:N(ln,`flex flex-wrap items-start justify-between gap-x-6 gap-y-3 pb-1.5 pt-[30px]`),children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-[1_1_420px] flex-col gap-1.5`,children:[(0,P.jsx)(`h1`,{className:`text-[26px] font-semibold tracking-[-0.02em] leading-tight text-ink`,children:n}),r&&(0,P.jsx)(`p`,{className:`max-w-[72ch] text-ink2`,children:r})]}),i&&(0,P.jsx)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1`,children:i})]}),(0,P.jsx)(`div`,{className:`wp-header-end`}),(0,P.jsx)(sn,{className:N(ln,`flex flex-col gap-2.5 pt-3`)}),(0,P.jsx)(`main`,{className:N(ln,`flex flex-[1_0_auto] flex-col gap-5 pb-10 pt-[22px]`),children:a}),(0,P.jsx)(dn,{section:e,go:t})]})}function dn({section:e,go:t}){let n=y();return(0,P.jsxs)(`footer`,{className:`mt-auto bg-band text-band-ink`,children:[(0,P.jsxs)(`div`,{className:N(ln,`grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto] items-center gap-8 py-7 max-[960px]:grid-cols-[minmax(0,1fr)_auto] max-[960px]:gap-5 max-[782px]:grid-cols-1`),children:[(0,P.jsxs)(`div`,{className:`inline-flex items-center gap-2.5`,children:[(0,P.jsx)(cn,{which:`wordmark`,className:`[&>svg]:h-[26px] [&>svg]:w-[128px]`}),(0,P.jsxs)(`span`,{className:`rounded-md border border-band-edge px-[7px] py-[2px] text-[11px] font-medium text-band-muted`,children:[`v`,n.version]})]}),(0,P.jsxs)(`div`,{className:`min-w-0 border-s border-band-edge ps-7 max-[960px]:col-start-1 max-[960px]:border-0 max-[960px]:ps-0`,children:[(0,P.jsx)(`span`,{className:`mb-1.5 block text-[11px] uppercase tracking-[.08em] text-band-muted`,children:x(`Your data`,`monoranks`)}),(0,P.jsxs)(`a`,{href:n.urls.settings,onClick:e=>{e.preventDefault(),t(`settings`)},className:`inline-flex items-center gap-[7px] text-[13px] text-band-ink hover:text-white hover:underline hover:underline-offset-4`,children:[x(`What is sent and what can change`,`monoranks`),(0,P.jsx)(we,{size:14,className:`mr-flip`})]})]}),(0,P.jsxs)(`a`,{href:F(n.urls.docs,`footer-help`,e),target:`_blank`,rel:`noopener`,className:`block rounded-[9px] border border-band-edge px-[18px] py-3 text-start text-band-ink hover:bg-band-edge hover:text-white max-[960px]:col-start-2 max-[960px]:row-span-2 max-[960px]:row-start-1 max-[782px]:col-auto max-[782px]:row-auto`,children:[(0,P.jsx)(`span`,{className:`mb-1.5 block text-[11px] text-band-muted`,children:x(`Need a hand?`,`monoranks`)}),(0,P.jsxs)(`strong`,{className:`flex items-center justify-between gap-5 text-[13px] font-medium`,children:[x(`Help and resources`,`monoranks`),(0,P.jsx)(Se,{size:14,className:`mr-flip`})]})]})]}),(0,P.jsx)(`div`,{className:N(ln),children:(0,P.jsxs)(`div`,{className:`flex items-center justify-center gap-3 border-t border-band-edge pb-[18px] pt-4 text-[11px] text-band-muted`,children:[(0,P.jsx)(`span`,{children:x(`A product by`,`monoranks`)}),(0,P.jsx)(`a`,{href:F(`https://veronalabs.com/`,`footer-publisher`,e),target:`_blank`,rel:`noopener`,"aria-label":`VeronaLabs`,className:`inline-flex min-h-7 items-center text-band-muted opacity-75 hover:opacity-100 hover:text-band-muted`,children:(0,P.jsx)(cn,{which:`veronalabs`,className:`[&>svg]:h-auto [&>svg]:w-28`})})]})})]})}function fn({notice:e}){if(!e)return null;let t={success:`text-good-ink`,error:`text-critical`,warning:`text-warn`}[e.type],n={success:Oe,error:Ee,warning:O}[e.type];return(0,P.jsxs)(`div`,{className:N(`notice`,`notice-${e.type}`,`flex items-start gap-2.5`),role:`status`,children:[(0,P.jsx)(n,{size:16,className:N(`mt-[1px] shrink-0`,t),"aria-hidden":`true`}),(0,P.jsx)(`p`,{className:`text-ink`,children:e.text})]})}function pn({rows:e}){return(0,P.jsx)(`div`,{className:`grid grid-cols-[150px_minmax(0,1fr)] gap-x-3 gap-y-2 text-[12px] max-[960px]:grid-cols-1`,children:e.map(([e,t],n)=>(0,P.jsxs)(`div`,{className:`contents`,children:[(0,P.jsx)(`div`,{className:`text-mute max-[960px]:mt-1`,children:e}),(0,P.jsx)(`div`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:t})]},n))})}function mn({title:e,text:t}){return(0,P.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-6 py-9 text-center text-ink2`,children:[(0,P.jsx)(`span`,{className:`text-[13px] font-semibold text-ink`,children:e}),(0,P.jsx)(`span`,{className:`text-[12px]`,children:t})]})}function I(e){if(e==null)return`—`;try{return new Intl.NumberFormat(y().locale,{maximumFractionDigits:0}).format(e)}catch{return String(e)}}function hn(e,t=``){return(e>0?`+`:e<0?`−`:``)+I(Math.abs(e))+t}function gn(e){return e==null?`none`:e>=80?`good`:e>=60?`warn`:`critical`}function _n({score:e,size:t=`sm`,label:n}){let r=t===`lg`?64:30,i=t===`lg`?5:3,a=(r-i)/2,o=2*Math.PI*a,s=r/2,c=e===null?x(`Not scored yet`,`monoranks`):C(x(`%s of 100`,`monoranks`),I(e));return(0,P.jsxs)(`span`,{className:N(`mr-score`,`mr-${t}`,`mr-${gn(e)}`),title:(n?`${n}: `:``)+c,children:[(0,P.jsxs)(`span`,{className:`mr-ring`,children:[(0,P.jsx)(`svg`,{width:r,height:r,viewBox:`0 0 ${r} ${r}`,"aria-hidden":`true`,children:e===null?(0,P.jsx)(`circle`,{cx:s,cy:s,r:a,fill:`none`,stroke:`currentColor`,strokeWidth:i,strokeDasharray:`3 4`}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`circle`,{cx:s,cy:s,r:a,fill:`none`,stroke:`var(--grayTrack)`,strokeWidth:i}),(0,P.jsx)(`circle`,{cx:s,cy:s,r:a,fill:`none`,stroke:`currentColor`,strokeWidth:i,strokeLinecap:`round`,strokeDasharray:`${o*e/100} ${o}`,transform:`rotate(-90 ${s} ${s})`})]})}),(0,P.jsx)(`span`,{children:e===null?`—`:I(e)})]}),n&&(0,P.jsx)(`span`,{className:`mr-lbl`,children:n})]})}function vn({n:e,unit:t=``,period:n=`week`}){if(e==null)return null;let r=e>0?`text-good-ink`:e<0?`text-critical`:`text-mute`,i=`⁨`+hn(e,t)+`⁩`,a=C(x(n===`previous28`?`%s vs previous 28 days`:`%s this week`,`monoranks`),i);return(0,P.jsx)(`span`,{className:N(`text-[12px] font-medium`,r),children:a})}function yn({series:e}){if(e.length<2)return null;let t=Math.max(1,...e),n=e.map((n,r)=>[Math.round(200*r/(e.length-1)*10)/10,Math.round((34-30*n/t)*10)/10]),r=`M`+n.map(e=>e.join(` `)).join(` L`),i=n[n.length-1];return(0,P.jsxs)(`svg`,{className:`block h-[38px] w-full`,viewBox:`0 0 200 38`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:[(0,P.jsx)(`path`,{d:`${r} L200 38 L0 38 Z`,fill:`var(--accentSoft)`}),(0,P.jsx)(`path`,{d:r,fill:`none`,stroke:`var(--accent)`,strokeWidth:`1.5`}),(0,P.jsx)(`circle`,{cx:i[0],cy:i[1],r:`2.5`,fill:`var(--accent)`})]})}var bn=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,xn=Ne,Sn=(e,t)=>n=>{if(t?.variants==null)return xn(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=bn(t)||bn(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return xn(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Cn=Sn(`inline-flex shrink-0 items-center whitespace-nowrap font-medium`,{variants:{variant:{badge:`h-5 gap-[5px] rounded-sm bg-surface2 px-[7px] text-[11px] text-ink2`,warn:`h-5 gap-[5px] rounded-sm bg-surface2 px-[7px] text-[11px] text-warn`,pill:`h-[22px] gap-[6px] rounded-full bg-surface2 ps-[7px] pe-2 text-[12px] text-ink`}},defaultVariants:{variant:`badge`}});function L({className:e,variant:t,...n}){return(0,P.jsx)(`span`,{"data-slot":`badge`,className:N(Cn({variant:t}),e),...n})}function wn({tone:e=`muted`}){let t={good:`bg-good`,warn:`bg-warn`,critical:`bg-critical`,muted:`bg-mute`}[e];return(0,P.jsx)(`span`,{className:N(`inline-block h-2 w-2 shrink-0 rounded-full`,t)})}var Tn=Object.defineProperty,En=(e,t)=>Tn(e,`name`,{value:t,configurable:!0});function Dn(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}En(Dn,`setRef`);function On(...e){return t=>{let n=!1,r=e.map(e=>{let r=Dn(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;tAn(e,`name`,{value:t,configurable:!0});function Mn(e){let t=_.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,s=[];Vn(r)&&typeof Gn==`function`&&(r=Gn(r._payload)),_.Children.forEach(r,e=>{if(zn(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;Vn(n)&&typeof Gn==`function`&&(n=Gn(n._payload)),a=In(t,n),s.push(a?.props?.children)}else s.push(e)}),a?a=_.cloneElement(a,void 0,s):!o&&_.Children.count(r)===1&&_.isValidElement(r)&&(a=r);let c=a?Rn(a):void 0,l=kn(n,c);if(!a){if(r||r===0)throw Error(o?Wn(e):Un(e));return r}let u=Ln(i,a.props??{});return a.type!==_.Fragment&&(u.ref=n?l:c),_.cloneElement(a,u)});return t.displayName=`${e}.Slot`,t}jn(Mn,`createSlot`);var Nn=Mn(`Slot`),Pn=Symbol.for(`radix.slottable`);function Fn(e){let t=jn(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=Pn,t}jn(Fn,`createSlottable`);var In=jn((e,t)=>{if(`child`in e.props){let t=e.props.child;return _.isValidElement(t)?_.cloneElement(t,void 0,e.props.children(t.props.children)):null}return _.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function Ln(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}jn(Ln,`mergeProps`);function Rn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}jn(Rn,`getElementRef`);function zn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Pn}jn(zn,`isSlottable`);var Bn=Symbol.for(`react.lazy`);function Vn(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Bn&&`_payload`in e&&Hn(e._payload)}jn(Vn,`isLazyComponent`);function Hn(e){return typeof e==`object`&&!!e&&`then`in e}jn(Hn,`isPromiseLike`);var Un=jn(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),Wn=jn(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),Gn=_.use,Kn=Sn(`inline-flex items-center justify-center gap-[7px] whitespace-nowrap rounded-md border text-[13px] font-medium leading-none transition-[background-color,border-color,color,opacity] duration-100 disabled:pointer-events-none disabled:opacity-55 [&_svg]:pointer-events-none [&_svg]:shrink-0 cursor-pointer`,{variants:{variant:{default:`border-border bg-surface text-ink hover:bg-surface2 hover:border-line`,primary:`border-primary bg-primary text-primary-foreground hover:opacity-85`,accent:`border-brand bg-brand text-white hover:opacity-85`,ghost:`border-transparent bg-transparent text-ink2 hover:bg-surface3 hover:text-ink`,danger:`border-critical/50 bg-surface text-critical hover:border-critical hover:bg-critical hover:text-white`,dangerSolid:`border-critical bg-critical text-white hover:opacity-85`},size:{default:`h-[34px] px-3`,sm:`h-7 px-[10px] text-[12px]`,icon:`h-8 w-8 px-0`}},defaultVariants:{variant:`default`,size:`default`}});function R({className:e,variant:t,size:n,asChild:r=!1,children:i,...a}){let o=a[`aria-busy`]===!0||a[`aria-busy`]===`true`,s=N(Kn({variant:t,size:n,className:e}),o&&`pointer-events-none opacity-85`);return r?(0,P.jsx)(Nn,{"data-slot":`button`,className:s,...a,children:i}):(0,P.jsxs)(`button`,{"data-slot":`button`,className:s,...a,children:[o&&(0,P.jsx)(`span`,{className:`spin`,"aria-hidden":`true`}),i]})}function qn({rows:e,onUndo:t,busy:n}){if(!e.length)return(0,P.jsx)(mn,{title:x(`No changes yet`,`monoranks`),text:x(`Fixes you approve in MonoRanks show up here, each with Undo.`,`monoranks`)});let r=`whitespace-nowrap border-b border-border px-[12px] py-[11px] text-start text-[12px] font-medium text-mute`,i=`border-b border-grid px-[12px] py-3 align-middle text-[12px] group-last:border-b-0`,a=`overflow-hidden text-ellipsis whitespace-nowrap text-start`;return(0,P.jsx)(`div`,{className:`rounded-b-xl`,children:(0,P.jsxs)(`table`,{className:`w-full table-fixed border-collapse`,children:[(0,P.jsxs)(`colgroup`,{children:[(0,P.jsx)(`col`,{className:`w-[15%] min-w-[130px]`}),(0,P.jsx)(`col`,{className:`w-[12%]`}),(0,P.jsx)(`col`,{className:`w-[12%]`}),(0,P.jsx)(`col`,{className:`w-[18%]`}),(0,P.jsx)(`col`,{}),(0,P.jsx)(`col`,{}),(0,P.jsx)(`col`,{className:`w-[96px]`})]}),(0,P.jsx)(`thead`,{children:(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`th`,{className:r,children:x(`When`,`monoranks`)}),(0,P.jsx)(`th`,{className:r,children:x(`Who`,`monoranks`)}),(0,P.jsx)(`th`,{className:r,children:x(`Field`,`monoranks`)}),(0,P.jsx)(`th`,{className:r,children:x(`Where`,`monoranks`)}),(0,P.jsx)(`th`,{className:r,children:x(`Before`,`monoranks`)}),(0,P.jsx)(`th`,{className:r,children:x(`After`,`monoranks`)}),(0,P.jsx)(`th`,{className:r})]})}),(0,P.jsx)(`tbody`,{children:e.map(e=>(0,P.jsxs)(`tr`,{className:`group hover:[&>td]:bg-surface2`,children:[(0,P.jsx)(`td`,{className:`${i} tabular-nums`,children:(0,P.jsx)(`div`,{className:a,title:e.when,children:e.when})}),(0,P.jsx)(`td`,{className:i,children:(0,P.jsx)(`div`,{className:a,title:e.actor,children:e.actor})}),(0,P.jsx)(`td`,{className:i,children:(0,P.jsx)(L,{className:`max-w-full overflow-hidden text-ellipsis whitespace-nowrap`,title:e.fieldLabel,children:e.fieldLabel})}),(0,P.jsx)(`td`,{className:i,children:(0,P.jsx)(`div`,{className:a,dir:`auto`,title:e.where,children:e.where})}),(0,P.jsx)(`td`,{className:`${i} text-mute`,children:(0,P.jsx)(`div`,{className:a,dir:`auto`,title:e.previous,children:e.previous||`—`})}),(0,P.jsx)(`td`,{className:i,children:(0,P.jsx)(`div`,{className:a,dir:`auto`,title:e.value,children:e.value||`—`})}),(0,P.jsx)(`td`,{className:`${i} text-end`,children:(0,P.jsxs)(R,{variant:`ghost`,size:`sm`,disabled:n!==null,"aria-busy":n===e.index,onClick:()=>t(e),children:[n!==e.index&&(0,P.jsx)(je,{size:13,className:`mr-flip`}),x(`Undo`,`monoranks`)]})})]},e.index))})]})})}function Jn({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`card`,className:N(`min-w-0 rounded-xl border border-border bg-surface`,e),...t})}function Yn({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`card-header`,className:N(`flex flex-wrap items-center justify-between gap-3 px-[22px] pt-[18px]`,e),...t})}function Xn({className:e,...t}){return(0,P.jsx)(`h2`,{"data-slot":`card-title`,className:N(`inline-flex items-center gap-2 text-[15px] font-semibold text-ink`,e),...t})}function Zn({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`card-body`,className:N(`px-[22px] pb-[22px] pt-4`,e),...t})}var Qn={target:`_blank`,rel:`noopener`};function $n(){let[e,t]=(0,_.useState)(null),[n,r]=(0,_.useState)(!1);if((0,_.useEffect)(()=>{w.grow().then(t).catch(()=>r(!0))},[]),n)return null;if(!e)return(0,P.jsx)(`section`,{"aria-label":x(`What to do next`,`monoranks`),"aria-busy":`true`,className:`grid grid-cols-2 gap-5 max-[960px]:grid-cols-1`,children:[0,1,2,3].map(e=>(0,P.jsx)(Jn,{className:`h-[180px] animate-pulse bg-surface2`},e))});if(!e.connected)return null;let i=e.scope_url??``;return(0,P.jsxs)(`section`,{"aria-labelledby":`mr-grow-title`,className:`flex flex-col gap-3`,children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[(0,P.jsx)(`h2`,{id:`mr-grow-title`,className:`text-[15px] font-semibold text-ink`,children:x(`What to do next`,`monoranks`)}),e.fetched&&(0,P.jsx)(`span`,{className:`text-[11px] text-mute`,children:C(x(`Updated %s`,`monoranks`),e.fetched)})]}),(0,P.jsxs)(`div`,{className:`grid grid-cols-2 items-start gap-5 max-[960px]:grid-cols-1`,children:[(0,P.jsx)(nr,{d:e.outreach,scope:i}),(0,P.jsx)(rr,{d:e.backlinks,scope:i}),(0,P.jsx)(ir,{d:e.competitors,scope:i}),(0,P.jsx)(ar,{d:e.keywords,scope:i})]}),(0,P.jsx)(or,{d:e.report})]})}function er({state:e,scope:t,empty:n}){let r=n;return e===`no_access`?r=(0,P.jsxs)(P.Fragment,{children:[x(`The MonoRanks key of this site cannot read this yet. Allow it under Integrations in MonoRanks, or connect again.`,`monoranks`),` `,t&&(0,P.jsx)(`a`,{className:`font-medium text-brand-ink hover:underline`,href:F(t,`grow-scope`),...Qn,children:x(`Open Integrations`,`monoranks`)})]}):e===`off`?r=x(`Not available in your MonoRanks yet.`,`monoranks`):e===`error`?r=x(`MonoRanks could not be reached. The plugin tries again within the hour.`,`monoranks`):e===`pending`&&(r=x(`Still loading. Reload this screen in a minute.`,`monoranks`)),(0,P.jsx)(`p`,{className:`m-0 text-[12px] text-ink2`,children:r})}function tr({title:e,badge:t,link:n,linkText:r,children:i}){return(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsxs)(Xn,{children:[e,t]}),n&&(0,P.jsx)(R,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,P.jsxs)(`a`,{href:F(n,`grow-card`),...Qn,children:[r,(0,P.jsxs)(`span`,{className:`sr-only`,children:[` `,x(`(opens in a new tab)`,`monoranks`)]})]})})]}),(0,P.jsx)(Zn,{className:`flex flex-col gap-3 pt-3`,children:i})]})}function nr({d:e,scope:t}){let n=e?.state===`ok`?e:null;return(0,P.jsx)(tr,{title:x(`Outreach`,`monoranks`),badge:n&&n.to_contact>0?(0,P.jsx)(L,{children:C(S(`%s to contact`,`%s to contact`,n.to_contact,`monoranks`),I(n.to_contact))}):void 0,link:n?.link||e?.link,linkText:x(`All targets`,`monoranks`),children:n?(0,P.jsxs)(P.Fragment,{children:[n.top.length>0?(0,P.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-2.5 p-0`,children:n.top.map(e=>(0,P.jsxs)(`li`,{className:`grid gap-0.5`,children:[(0,P.jsxs)(`a`,{className:`truncate text-[13px] font-semibold text-ink hover:underline`,href:e.url,...Qn,children:[(0,P.jsx)(`bdi`,{children:e.title}),(0,P.jsxs)(`span`,{className:`sr-only`,children:[` `,x(`(opens in a new tab)`,`monoranks`)]})]}),(0,P.jsxs)(`span`,{className:`text-[12px] text-ink2`,children:[e.why,e.domain&&(0,P.jsxs)(P.Fragment,{children:[` · `,(0,P.jsx)(`bdi`,{className:`text-mute`,children:e.domain})]})]})]},e.url))}):(0,P.jsx)(er,{state:`empty`,scope:t,empty:x(`Every target is contacted. MonoRanks looks for new ones each week.`,`monoranks`)}),(0,P.jsx)(`p`,{className:`m-0 text-[11px] text-mute`,children:x(`Sites worth asking for a link or a mention. MonoRanks never sends email; you reach out and set the status there.`,`monoranks`)})]}):(0,P.jsx)(er,{state:e?.state??`pending`,scope:t,empty:x(`No outreach targets yet. MonoRanks looks for pages worth a link each week.`,`monoranks`)})})}function rr({d:e,scope:t}){let n=e?.state===`ok`?e:null;return(0,P.jsx)(tr,{title:x(`Backlinks`,`monoranks`),link:n?.link||e?.link,linkText:x(`All backlinks`,`monoranks`),children:n?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-5 gap-y-1`,children:[(0,P.jsxs)(`span`,{className:`text-2xl font-semibold leading-none tabular-nums text-good-ink`,children:[`+`,I(n.new)]}),(0,P.jsxs)(`span`,{className:`text-2xl font-semibold leading-none tabular-nums text-critical`,children:[`−`,I(n.lost)]}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`websites linking to you, won and lost in 28 days`,`monoranks`)})]}),(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,P.jsx)(L,{variant:`pill`,children:C(S(`%s website links to you`,`%s websites link to you`,n.domains,`monoranks`),I(n.domains))}),n.review>0&&(0,P.jsx)(L,{variant:`pill`,children:C(S(`%s to review for spam`,`%s to review for spam`,n.review,`monoranks`),I(n.review))})]}),n.top.length>0&&(0,P.jsxs)(`div`,{className:`grid gap-1`,children:[(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Newest strong links`,`monoranks`)}),(0,P.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-3 gap-y-1 p-0 text-[12px]`,children:n.top.map(e=>(0,P.jsxs)(`li`,{children:[(0,P.jsx)(`bdi`,{children:e.domain}),e.rank!==null&&(0,P.jsxs)(`span`,{className:`text-mute`,children:[` · `,C(x(`strength %s`,`monoranks`),I(e.rank))]})]},e.domain))})]})]}):(0,P.jsx)(er,{state:e?.state??`pending`,scope:t,empty:x(`No backlink data yet. MonoRanks refreshes it weekly.`,`monoranks`)})})}function ir({d:e,scope:t}){let n=e?.state===`ok`?e:null;return(0,P.jsx)(tr,{title:x(`Competitors`,`monoranks`),badge:n&&n.gaps?(0,P.jsx)(L,{children:C(S(`%s keyword gap`,`%s keyword gaps`,n.gaps,`monoranks`),I(n.gaps))}):void 0,link:n?.link||e?.link,linkText:x(`All competitors`,`monoranks`),children:n?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-2 p-0`,children:n.top.map(e=>(0,P.jsxs)(`li`,{className:`grid gap-0.5`,children:[(0,P.jsxs)(`span`,{className:`text-[13px] font-semibold`,children:[(0,P.jsx)(`bdi`,{children:e.domain}),!e.picked&&(0,P.jsx)(`span`,{className:`ms-1.5 text-[11px] font-normal text-mute`,children:x(`suggested`,`monoranks`)})]}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:e.reason||C(S(`%1$s shared keyword, %2$s where they rank higher`,`%1$s shared keywords, %2$s where they rank higher`,e.shared,`monoranks`),I(e.shared),I(e.above_us))})]},e.domain))}),n.keywords.length>0&&(0,P.jsxs)(`div`,{className:`grid gap-1`,children:[(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`They rank for these, you do not`,`monoranks`)}),(0,P.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-1.5 p-0`,children:n.keywords.map(e=>(0,P.jsx)(`li`,{children:(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(`bdi`,{children:e.keyword}),e.volume!==null&&(0,P.jsx)(`span`,{className:`tabular-nums text-ink2`,children:C(x(`%s/mo`,`monoranks`),I(e.volume))})]})},e.keyword))})]})]}):(0,P.jsx)(er,{state:e?.state??`pending`,scope:t,empty:x(`No competitors yet. Pick some in MonoRanks to see the keywords they win.`,`monoranks`)})})}function ar({d:e,scope:t}){let n=e?.state===`ok`?e:null,r=({k:e,up:t})=>(0,P.jsxs)(`li`,{className:`flex items-baseline justify-between gap-3 text-[12px]`,children:[(0,P.jsx)(`bdi`,{className:`min-w-0 truncate`,children:e.keyword}),(0,P.jsxs)(`span`,{className:`shrink-0 tabular-nums ${t?`text-good-ink`:`text-critical`}`,children:[(0,P.jsxs)(`span`,{className:`sr-only`,children:[x(t?`up`:`down`,`monoranks`),` `]}),C(x(`%1$s → %2$s`,`monoranks`),I(e.from),I(e.to))]})]});return(0,P.jsx)(tr,{title:x(`Keyword movers this week`,`monoranks`),link:n?.link||e?.link,linkText:x(`All keywords`,`monoranks`),children:n?n.up.length||n.down.length?(0,P.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 max-[600px]:grid-cols-1`,children:[(0,P.jsxs)(`div`,{className:`grid content-start gap-1`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Up`,`monoranks`)}),n.up.length?(0,P.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:n.up.map(e=>(0,P.jsx)(r,{k:e,up:!0},e.keyword))}):(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:`—`})]}),(0,P.jsxs)(`div`,{className:`grid content-start gap-1`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Down`,`monoranks`)}),n.down.length?(0,P.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:n.down.map(e=>(0,P.jsx)(r,{k:e,up:!1},e.keyword))}):(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:`—`})]})]}):(0,P.jsx)(`p`,{className:`m-0 text-[12px] text-ink2`,children:C(S(`Your %s tracked keyword held its place this week.`,`Your %s tracked keywords held their places this week.`,n.tracked,`monoranks`),I(n.tracked))}):(0,P.jsx)(er,{state:e?.state??`pending`,scope:t,empty:x(`No tracked keywords yet. Track some in MonoRanks to see them move here.`,`monoranks`)})})}function or({d:e}){if(!e||e.state!==`ok`&&e.state!==`empty`)return null;let t=e.state===`ok`?e.emails??[]:[],n=e.state===`ok`?e.reports??[]:[];return(0,P.jsx)(Jn,{className:`grid gap-3 px-5 py-3.5`,children:e.state===`empty`?(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,P.jsx)(`span`,{className:`text-[13px] text-ink2`,children:x(`No reports yet. Create a website report, a client report or a weekly email in MonoRanks to share progress.`,`monoranks`)}),e.all_link&&(0,P.jsx)(R,{size:`sm`,variant:`ghost`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(e.all_link,`reports`),...Qn,children:x(`Open reports`,`monoranks`)})})]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,P.jsx)(`b`,{className:`text-[13px] font-semibold`,children:x(`Reports`,`monoranks`)}),e.all_link&&(0,P.jsx)(R,{size:`sm`,variant:`ghost`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(e.all_link,`reports`),...Qn,children:x(`Open reports`,`monoranks`)})})]}),(0,P.jsxs)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:[t.map((e,t)=>(0,P.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 border-b border-grid py-2 last:border-b-0`,children:[(0,P.jsxs)(`span`,{className:`text-[13px]`,children:[(0,P.jsx)(`b`,{className:`font-semibold`,children:(0,P.jsx)(`bdi`,{children:e.name})}),` `,(0,P.jsxs)(`span`,{className:`text-mute`,children:[`· `,x(`Weekly email`,`monoranks`)]})]}),(0,P.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[12px] text-ink2`,children:[e.enabled&&e.next_label?(0,P.jsx)(`span`,{children:C(x(`Next send %s`,`monoranks`),e.next_label)}):null,(0,P.jsx)(`span`,{children:C(S(`%s recipient`,`%s recipients`,e.recipients,`monoranks`),I(e.recipients))}),(0,P.jsx)(L,{children:e.enabled?x(`On`,`monoranks`):x(`Off`,`monoranks`)})]})]},`e${t}`)),n.map((e,t)=>(0,P.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 border-b border-grid py-2 last:border-b-0`,children:[(0,P.jsxs)(`span`,{className:`text-[13px]`,children:[(0,P.jsx)(`b`,{className:`font-semibold`,children:(0,P.jsx)(`bdi`,{children:e.scope||e.title})}),` `,(0,P.jsxs)(`span`,{className:`text-mute`,children:[`· `,e.client?x(`Client report`,`monoranks`):x(`Report`,`monoranks`),e.when?` · ${e.when}`:``]})]}),e.link&&(0,P.jsx)(R,{size:`sm`,asChild:!0,children:(0,P.jsxs)(`a`,{href:F(e.link,`latest-report`),...Qn,children:[x(`Open report`,`monoranks`),(0,P.jsxs)(`span`,{className:`sr-only`,children:[` `,x(`(opens in a new tab)`,`monoranks`)]})]})})]},`r${t}`))]})]})})}var sr=`whitespace-nowrap border-b border-border px-[10px] py-[11px] text-start text-[12px] font-medium text-mute`,cr=`border-b border-grid px-[10px] py-3 align-middle group-last:border-b-0`;function lr(e,t){let n=e.replace(/<[^>]+>/g,``).trim();return n.length>t?n.slice(0,t-1)+`…`:n}function ur(e){try{let t=new URL(e);return t.pathname+t.search}catch{return e}}function dr({fix:e,labels:t}){let n=e.title||(e.field===`redirect`?e.from:x(`Site`,`monoranks`)),r=e.before?lr(e.before,90):null;return(0,P.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,P.jsx)(L,{children:t[e.field]??e.field}),(0,P.jsx)(`span`,{className:`min-w-0 truncate text-[12px] text-ink2`,children:e.field===`redirect`||e.field===`ai_bots`||e.field===`llms_txt`?(0,P.jsx)(`b`,{className:`font-semibold text-ink`,children:(0,P.jsx)(`bdi`,{children:n})}):(0,P.jsx)(`bdi`,{children:C(x(`on %s`,`monoranks`),n)})})]}),e.field===`alt`&&e.image&&(0,P.jsx)(`span`,{className:`truncate text-[11px] text-mute`,children:(0,P.jsx)(`bdi`,{children:C(x(`Image: %s`,`monoranks`),e.image)})}),e.field===`content`?(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Adds one answer-first paragraph at the top. Review the before/after in MonoRanks first.`,`monoranks`)}):(0,P.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-1.5 text-[12px]`,children:[(0,P.jsx)(`span`,{className:`text-mute`,children:r?(0,P.jsx)(`s`,{children:(0,P.jsx)(`bdi`,{children:r})}):x(`(empty)`,`monoranks`)}),(0,P.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),(0,P.jsx)(`span`,{className:`sr-only`,children:x(`changes to`,`monoranks`)}),(0,P.jsx)(`b`,{className:`font-semibold`,children:(0,P.jsx)(`bdi`,{children:lr(e.after,120)})})]}),e.note&&(0,P.jsx)(`span`,{className:`text-[11px] text-mute`,children:(0,P.jsx)(`bdi`,{children:e.note})})]})}function fr({go:e}){let t=y(),[n,r]=(0,_.useState)(null),[i,a]=(0,_.useState)(null),[o,s]=(0,_.useState)(t.notice),[c,l]=(0,_.useState)(null),[u,d]=(0,_.useState)(null);(0,_.useEffect)(()=>{w.overview().then(r).catch(e=>a(se(e,x(`Could not load the overview.`,`monoranks`))))},[]);async function f(e,t){l(e);try{let e=await t();s(e.notice),r(e.data),window.scrollTo({top:0})}catch(e){s({type:`error`,text:se(e,x(`Something went wrong. Try again.`,`monoranks`))})}finally{l(null),d(null)}}let p=n?.overview??null,m=typeof p?.to_review?.needs_value==`number`?p.to_review.needs_value:null,h=p?.to_review&&(p.to_review.total>0||(m??0)>0)&&p.to_review.review_url?p.to_review:null,g=n?p?(0,P.jsxs)(P.Fragment,{children:[x(`Weekly SEO, AEO and GEO audit of`,`monoranks`),` `,(0,P.jsx)(`code`,{children:n.host}),n.audited&&(0,P.jsxs)(P.Fragment,{children:[` · `,C(x(`last audit %s`,`monoranks`),n.audited)]}),p.pages_total>0&&(0,P.jsxs)(P.Fragment,{children:[` · `,C(x(`%1$s of %2$s published pages scored`,`monoranks`),I(p.pages_scored),I(p.pages_total))]})]}):x(`Weekly SEO, AEO and GEO audits, with the fixes you approve written into WordPress.`,`monoranks`):`\xA0`,v=n?.connected?(0,P.jsx)(R,{variant:`primary`,disabled:c!==null,"aria-busy":c===`sync`,onClick:()=>f(`sync`,()=>w.sync(`overview`)),children:x(`Sync content now`,`monoranks`)}):null;return(0,P.jsxs)(un,{section:`overview`,go:e,title:x(`Overview`,`monoranks`),description:g,actions:v,children:[(0,P.jsx)(fn,{notice:o}),i&&(0,P.jsx)(fn,{notice:{type:`error`,text:i}}),!n&&!i&&(0,P.jsx)(pr,{}),n&&(!n.connected||n.revoked)&&(0,P.jsx)(mr,{revoked:n.revoked,go:e}),n&&n.connected&&!n.revoked&&!p&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(gr,{data:n}),(0,P.jsx)($n,{})]}),n&&p&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-4 gap-[14px] max-[960px]:grid-cols-2 max-[600px]:grid-cols-1`,children:[(0,P.jsxs)(Jn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Health score`,`monoranks`)}),(0,P.jsx)(vn,{n:p.deltas.health})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-[14px]`,children:[(0,P.jsx)(_n,{score:p.health,size:`lg`}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Technical, on-page, links, speed`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[11px] text-mute`,children:C(S(`Site average, %s page`,`Site average, %s pages`,p.pages_scored,`monoranks`),I(p.pages_scored))})]})]})]}),(0,P.jsxs)(Jn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`AEO score`,`monoranks`)}),(0,P.jsx)(vn,{n:p.deltas.aeo})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-[14px]`,children:[(0,P.jsx)(_n,{score:p.aeo,size:`lg`}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Answer-first, structure, entities`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[11px] text-mute`,children:x(`How well AI answers can use your pages`,`monoranks`)})]})]})]}),(0,P.jsxs)(Jn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Search clicks, 28 days`,`monoranks`)}),p.traffic&&(0,P.jsx)(vn,{n:p.traffic.delta_pct,unit:`%`,period:`previous28`})]}),p.traffic?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`div`,{className:`text-2xl font-semibold leading-none tabular-nums tracking-[-0.01em]`,children:I(p.traffic.clicks_28d)}),(0,P.jsx)(yn,{series:p.traffic.series}),(0,P.jsx)(`span`,{className:`text-[11px] text-mute`,children:x(`From Google Search Console, through MonoRanks`,`monoranks`)})]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`div`,{className:`text-2xl font-semibold text-mute`,children:`—`}),(0,P.jsx)(`span`,{className:`text-[11px] text-mute`,children:x(`Connect Google Search Console in MonoRanks to see clicks here.`,`monoranks`)})]})]}),(0,P.jsxs)(Jn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Fixes`,`monoranks`)}),p.fixes.ready>0&&(0,P.jsx)(L,{children:C(x(`%s ready`,`monoranks`),I(p.fixes.ready))})]}),(0,P.jsxs)(`div`,{className:`text-2xl font-semibold leading-none tabular-nums tracking-[-0.01em]`,children:[I(p.fixes.applied_30d),` `,(0,P.jsx)(`span`,{className:`text-[12px] font-normal text-ink2`,children:x(`applied in 30 days`,`monoranks`)})]}),h&&h.total>0&&(0,P.jsxs)(`a`,{className:`text-[12px] font-medium text-brand-ink hover:underline`,href:F(h.review_url,`fixes-card`),target:`_blank`,rel:`noopener`,children:[C(x(`%s waiting for your approval in MonoRanks`,`monoranks`),I(h.total)),` →`]}),(0,P.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(wn,{tone:p.ai.bots_rules?`good`:`muted`}),p.ai.bots_rules?x(`AI crawler rules on`,`monoranks`):x(`No AI crawler rules`,`monoranks`)]}),(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(wn,{tone:p.ai.llms_txt?`good`:`muted`}),p.ai.llms_txt?x(`llms.txt published`,`monoranks`):x(`No llms.txt`,`monoranks`)]})]})]})]}),!n.revoked&&(0,P.jsx)($n,{}),(0,P.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,3fr)_minmax(0,2fr)] items-start gap-5 max-[960px]:grid-cols-1`,children:[(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsx)(Xn,{children:x(`Pages needing attention`,`monoranks`)}),(0,P.jsx)(R,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(n.app_url,`all-pages`),target:`_blank`,rel:`noopener`,children:x(`All pages in MonoRanks`,`monoranks`)})})]}),p.attention.length?(0,P.jsx)(`div`,{className:`overflow-x-auto rounded-b-xl pt-2`,children:(0,P.jsxs)(`table`,{className:`w-full border-collapse`,children:[(0,P.jsx)(`thead`,{children:(0,P.jsxs)(`tr`,{children:[(0,P.jsx)(`th`,{className:sr,children:x(`Page`,`monoranks`)}),(0,P.jsx)(`th`,{className:sr,children:x(`Health`,`monoranks`)}),(0,P.jsx)(`th`,{className:sr,children:x(`AEO`,`monoranks`)}),(0,P.jsx)(`th`,{className:sr,children:x(`Biggest issue`,`monoranks`)}),(0,P.jsx)(`th`,{className:sr})]})}),(0,P.jsx)(`tbody`,{children:p.attention.map(e=>(0,P.jsxs)(`tr`,{className:`group hover:[&>td]:bg-surface2`,children:[(0,P.jsx)(`td`,{className:cr,children:(0,P.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,P.jsx)(`b`,{className:`font-semibold`,children:e.title||e.url}),e.url&&(0,P.jsx)(`code`,{className:`max-w-[180px] text-[11px]`,children:ur(e.url)})]})}),(0,P.jsx)(`td`,{className:cr,children:(0,P.jsx)(_n,{score:e.health})}),(0,P.jsx)(`td`,{className:cr,children:(0,P.jsx)(_n,{score:e.aeo})}),(0,P.jsx)(`td`,{className:`${cr} text-[12px]`,children:e.issue}),(0,P.jsx)(`td`,{className:`${cr} text-end`,children:e.page_url&&(0,P.jsx)(R,{size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(e.page_url,`fix-page`),target:`_blank`,rel:`noopener`,children:x(`Fix in MonoRanks`,`monoranks`)})})})]},e.post_id+e.url))})]})}):(0,P.jsx)(mn,{title:x(`Nothing needs attention`,`monoranks`),text:x(`Every scored page is above 60. The next audit may change that.`,`monoranks`)})]}),(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsxs)(Xn,{children:[x(`Ready to apply`,`monoranks`),p.ready.length>0&&(0,P.jsx)(L,{children:I(p.ready.length)})]}),p.ready.length>1&&(0,P.jsx)(R,{variant:`primary`,size:`sm`,disabled:c!==null,"aria-busy":c===`all`,onClick:()=>f(`all`,()=>w.apply(`all`)),children:x(`Apply all`,`monoranks`)})]}),(0,P.jsxs)(Zn,{className:`flex flex-col pt-1.5`,children:[p.ready.length===0&&h&&(0,P.jsxs)(`div`,{className:`flex flex-col gap-3 py-2`,children:[(0,P.jsxs)(`div`,{className:`grid gap-1`,children:[m===null?(0,P.jsx)(`b`,{className:`text-[13px] font-semibold`,children:C(x(`%s fixes are ready for your approval`,`monoranks`),I(h.total))}):(0,P.jsx)(`b`,{className:`text-[13px] font-semibold`,children:[h.total>0&&C(S(`%s ready to apply`,`%s ready to apply`,h.total,`monoranks`),I(h.total)),m>0&&C(S(`%s needs a value in MonoRanks`,`%s need a value in MonoRanks`,m,`monoranks`),I(m))].filter(Boolean).join(` · `)}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(m!==null&&m>0?`Type a value or draft one with AI in MonoRanks, approve it, and it is written here, with undo.`:`Approve them in MonoRanks and they are written here, with undo.`,`monoranks`)})]}),(0,P.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Object.entries(h.by_field).sort((e,t)=>t[1]-e[1]).map(([e,t])=>(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(`bdi`,{children:n.labels[e]??e}),(0,P.jsx)(`span`,{className:`tabular-nums text-ink2`,children:I(t)})]},e))}),(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{variant:`primary`,size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(h.review_url,`review-fixes`),target:`_blank`,rel:`noopener`,children:x(`Review in MonoRanks`,`monoranks`)})})})]}),p.ready.length===0&&!h&&(0,P.jsx)(mn,{title:x(`No fixes waiting`,`monoranks`),text:x(`Fixes you approve in MonoRanks appear here, ready to write into WordPress.`,`monoranks`)}),p.ready.map(e=>(0,P.jsxs)(`div`,{className:`flex items-start gap-3 border-b border-grid py-3 last-of-type:border-b-0`,children:[(0,P.jsx)(dr,{fix:e,labels:n.labels}),e.field===`content`&&e.page_url?(0,P.jsx)(R,{size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(e.page_url,`review-fix`),target:`_blank`,rel:`noopener`,children:x(`Review`,`monoranks`)})}):(0,P.jsx)(R,{size:`sm`,disabled:c!==null,"aria-busy":c===e.id,onClick:()=>f(e.id,()=>w.apply(e.id)),children:x(`Apply`,`monoranks`)})]},e.id)),p.ready.length>0&&(0,P.jsx)(`div`,{className:`pt-3 text-[11px] text-mute`,children:x(`Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days.`,`monoranks`)})]})]}),(p.needs_review??[]).length>0&&(0,P.jsxs)(Jn,{children:[(0,P.jsx)(Yn,{children:(0,P.jsxs)(Xn,{children:[x(`Needs review in MonoRanks`,`monoranks`),(0,P.jsx)(L,{children:I(p.needs_review.length)})]})}),(0,P.jsxs)(Zn,{className:`flex flex-col pt-1.5`,children:[(0,P.jsx)(`p`,{className:`m-0 pb-1 text-[12px] text-ink2`,children:x(`These changed in WordPress after they were reviewed, so they are not applied from here. Review them again in MonoRanks.`,`monoranks`)}),p.needs_review.map(e=>(0,P.jsxs)(`div`,{className:`flex items-start gap-3 border-b border-grid py-3 last-of-type:border-b-0`,children:[(0,P.jsx)(dr,{fix:e,labels:n.labels}),(0,P.jsx)(R,{size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(e.page_url||p.site_url,`review-fix`),target:`_blank`,rel:`noopener`,children:x(`Review in MonoRanks`,`monoranks`)})})]},e.id))]})]})]}),(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsx)(Xn,{children:x(`Recent changes`,`monoranks`)}),(0,P.jsx)(R,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:t.urls.settings,onClick:t=>{t.preventDefault(),e(`settings`)},children:x(`All changes`,`monoranks`)})})]}),(0,P.jsx)(`div`,{className:`pt-2`,children:(0,P.jsx)(qn,{rows:n.log,busy:u,onUndo:e=>{d(e.index),f(`undo`,()=>w.undo(e,`overview`))}})})]})]})]})}function pr(){return(0,P.jsx)(`div`,{className:`grid grid-cols-4 gap-[14px] max-[960px]:grid-cols-2 max-[600px]:grid-cols-1`,children:[0,1,2,3].map(e=>(0,P.jsx)(Jn,{className:`h-[150px] animate-pulse bg-surface2`},e))})}function mr({revoked:e,go:t}){let n=y();return(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsx)(Xn,{children:x(e?`Connect MonoRanks again`:`Connect MonoRanks`,`monoranks`)}),(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(wn,{tone:e?`critical`:`muted`}),x(e?`Key revoked`:`Not connected`,`monoranks`)]})]}),(0,P.jsxs)(Zn,{className:`flex flex-col gap-4`,children:[(0,P.jsxs)(hr,{n:1,children:[(0,P.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Connect to MonoRanks`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Sign in and approve. Takes a minute.`,`monoranks`)}),(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{variant:`primary`,size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(n.urls.connect,`connect-step`),target:`_blank`,rel:`noopener`,children:x(`Connect`,`monoranks`)})})})]}),(0,P.jsxs)(hr,{n:2,later:!0,children:[(0,P.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Or paste a connector key`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Use this when your host blocks Application Passwords.`,`monoranks`)}),(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:n.urls.settings,onClick:e=>{e.preventDefault(),t(`settings`)},children:x(`Open settings`,`monoranks`)})})})]}),(0,P.jsxs)(hr,{n:3,later:!0,children:[(0,P.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`See scores here and in your Posts list`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`After the first audit this page shows the site's health and AEO scores, pages needing attention and the fixes you approved; every post and page gets its scores in the list.`,`monoranks`)})]})]})]})}function hr({n:e,later:t,children:n}){return(0,P.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,P.jsx)(`span`,{className:`flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded-full text-[12px] font-semibold ${t?`bg-surface3 text-ink2`:`bg-ink text-page`}`,children:e}),(0,P.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:n})]})}function gr({data:e}){let t=e.status,n=x(t===`unsupported`?`This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow.`:t===`error`?`MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen.`:`MonoRanks has not scored this site yet. Scores appear here and in the Posts list after the first weekly audit.`,`monoranks`);return(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsx)(Xn,{children:x(`Waiting for the first audit`,`monoranks`)}),(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(wn,{tone:`good`}),x(`Connected`,`monoranks`)]})]}),(0,P.jsxs)(Zn,{className:`flex flex-col gap-4`,children:[(0,P.jsx)(pn,{rows:[[x(`Content`,`monoranks`),e.last_sent?C(x(`%1$s published items sent %2$s`,`monoranks`),I(e.items),e.last_sent):x(`Not sent yet. Use "Sync content now" above.`,`monoranks`)],[x(`Audit results`,`monoranks`),(0,P.jsxs)(P.Fragment,{children:[n,e.fetched&&(0,P.jsxs)(`span`,{className:`text-mute`,children:[` · `,C(x(`checked %s`,`monoranks`),e.fetched)]})]})]]}),(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(e.app_url,`open-audit`),target:`_blank`,rel:`noopener`,children:x(`Open the audit in MonoRanks`,`monoranks`)})})})]})]})}function _r({className:e,type:t,...n}){return(0,P.jsx)(`input`,{type:t,"data-slot":`input`,className:N(`flex h-10 w-full max-w-[440px] rounded-lg border border-input bg-surface px-[14px] text-[13px] text-ink outline-none placeholder:text-mute focus:border-brand disabled:opacity-55`,e),...n})}function vr({go:e}){let t=y(),[n,r]=(0,_.useState)(null),[i,a]=(0,_.useState)(null),[o,s]=(0,_.useState)(t.notice),[c,l]=(0,_.useState)(null),[u,d]=(0,_.useState)(null),[f,p]=(0,_.useState)(!1),[m,h]=(0,_.useState)(!1);(0,_.useEffect)(()=>{w.settings().then(e=>{r(e),p(e.revoked)}).catch(e=>a(se(e,x(`Could not load the settings.`,`monoranks`))))},[]);let[g,v]=(0,_.useState)(null);(0,_.useEffect)(()=>{if(g===null||n?.connected)return;let e=!1,t=()=>{if(!(e||document.visibilityState!==`visible`)){if(Date.now()-g>6e5){v(null);return}w.settings().then(t=>{!e&&t.connected&&(r(t),p(!1),v(null))}).catch(()=>{})}},i=window.setInterval(t,4e3);return document.addEventListener(`visibilitychange`,t),()=>{e=!0,window.clearInterval(i),document.removeEventListener(`visibilitychange`,t)}},[g,n?.connected]);async function b(e,t){l(e);try{let e=await t();s(e.notice),r(e.data),window.scrollTo({top:0})}catch(e){s({type:`error`,text:se(e,x(`Something went wrong. Try again.`,`monoranks`))})}finally{l(null),d(null)}}let ee=!!n?.connected,te=!!n?.revoked;return(0,P.jsxs)(un,{section:`settings`,go:e,title:x(`Settings`,`monoranks`),description:x(`Connection, what is sent, and every change written into this site.`,`monoranks`),children:[(0,P.jsx)(fn,{notice:o}),i&&(0,P.jsx)(fn,{notice:{type:`error`,text:i}}),!n&&!i&&(0,P.jsx)(Jn,{className:`h-[260px] animate-pulse bg-surface2`}),n&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`span`,{className:`inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-[9px] bg-surface2 [&_svg]:h-5 [&_svg]:w-5`,"aria-hidden":`true`,children:(0,P.jsx)(cn,{which:`mark`})}),(0,P.jsx)(Xn,{children:x(`Connection`,`monoranks`)})]}),(0,P.jsxs)(L,{variant:`pill`,children:[(0,P.jsx)(wn,{tone:te?`critical`:ee?`good`:`muted`}),x(te?`Key revoked`:ee?`Connected`:`Not connected`,`monoranks`)]})]}),(0,P.jsx)(Zn,{className:`flex flex-col gap-4`,children:ee?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(pn,{rows:[[x(`Status`,`monoranks`),x(te?`MonoRanks no longer accepts this key. Connect again from MonoRanks or paste a new key below.`:`Sending published content to MonoRanks. Nothing else leaves this site.`,`monoranks`)],[x(`Connector key`,`monoranks`),(0,P.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(`code`,{children:n.key_hint}),(0,P.jsx)(`span`,{className:`text-mute`,children:n.key_via})]})],[x(`Last sync`,`monoranks`),(0,P.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(`span`,{className:`tabular-nums`,children:n.last_sent}),n.sending&&(0,P.jsx)(L,{children:C(x(`sending, batch %1$s of %2$s`,`monoranks`),I(n.sending.page),I(Math.max(1,n.sending.pages)))}),n.items>0&&(0,P.jsx)(L,{children:C(S(`%s published item`,`%s published items`,n.items,`monoranks`),I(n.items))}),n.last_error&&(0,P.jsx)(L,{variant:`warn`,children:n.last_error})]})],...n.next_audit?[[x(`Next audit`,`monoranks`),n.next_audit]]:[],[x(`Fixes written with`,`monoranks`),(0,P.jsxs)(P.Fragment,{children:[x(`The "MonoRanks" Application Password`,`monoranks`),` · `,(0,P.jsx)(`a`,{href:n.profile_url,children:x(`revoke it in your profile`,`monoranks`)}),` `,x(`to stop writes`,`monoranks`)]})],[x(`Works with`,`monoranks`),n.seo_plugin&&!n.seo_supported?(0,P.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(L,{variant:`warn`,children:C(x(`%s detected`,`monoranks`),n.seo_plugin)}),(0,P.jsx)(`span`,{className:`text-mute`,children:C(x(`MonoRanks cannot write titles, descriptions, canonicals or noindex into %s yet, so those fixes are refused`,`monoranks`),n.seo_plugin)})]}):n.seo_plugin?(0,P.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(L,{children:C(x(`%s detected`,`monoranks`),n.seo_plugin)}),(0,P.jsx)(`span`,{className:`text-mute`,children:C(x(`titles and descriptions go into the fields %s reads`,`monoranks`),n.seo_plugin)})]}):(0,P.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(L,{children:x(`No SEO plugin`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-mute`,children:x(`MonoRanks prints the approved title, description, canonical and noindex tags itself`,`monoranks`)})]})]]}),(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(R,{variant:`primary`,disabled:c!==null,"aria-busy":c===`sync`,onClick:()=>b(`sync`,()=>w.sync(`settings`)),children:x(`Send content now`,`monoranks`)}),(0,P.jsx)(R,{disabled:c!==null,"aria-busy":c===`disconnect`,onClick:()=>b(`disconnect`,()=>w.disconnect()),children:x(`Disconnect`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Disconnect stops sending. Fixes already applied stay.`,`monoranks`)})]})]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(hr,{n:1,children:[(0,P.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Connect to MonoRanks`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Sign in and approve. Takes a minute.`,`monoranks`)}),(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{variant:`primary`,size:`sm`,asChild:!0,children:(0,P.jsx)(`a`,{href:F(n.connect_url,`connect-step`,`settings`),target:`_blank`,rel:`noopener`,onClick:()=>v(Date.now()),children:x(`Connect`,`monoranks`)})})})]}),(0,P.jsxs)(hr,{n:2,later:!0,children:[(0,P.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Or paste a connector key`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Use this when your host blocks Application Passwords.`,`monoranks`)}),(0,P.jsx)(yr,{data:n,busy:c,onSubmit:(e,t)=>b(`connect`,()=>w.connect(e,t))})]})]})})]}),ee&&(0,P.jsx)(Jn,{children:(0,P.jsxs)(`details`,{open:f,onToggle:e=>p(e.currentTarget.open),className:`group`,children:[(0,P.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 px-[22px] py-4 font-medium text-ink2 hover:text-ink [&::-webkit-details-marker]:hidden`,children:[(0,P.jsx)(D,{size:14,className:`mr-flip transition-transform group-open:rotate-90`}),x(`Use a different key`,`monoranks`)]}),(0,P.jsx)(`div`,{className:`border-t border-grid px-[22px] pb-[22px] pt-4`,children:(0,P.jsxs)(`div`,{className:`flex flex-col gap-[14px]`,children:[(0,P.jsx)(`div`,{className:`rounded-lg bg-surface2 px-[14px] py-3 text-[12px] text-ink2`,children:x(`In MonoRanks: Settings → API and MCP → New credential with the content:write scope, ticked for this website. Paste it here. With a key alone MonoRanks receives your content; to apply fixes, also use Connect to WordPress in MonoRanks.`,`monoranks`)}),(0,P.jsx)(yr,{data:n,busy:c,onSubmit:(e,t)=>b(`connect`,()=>w.connect(e,t))})]})})]})}),(0,P.jsxs)(Jn,{children:[(0,P.jsx)(Yn,{children:(0,P.jsx)(Xn,{children:x(`What is sent`,`monoranks`)})}),(0,P.jsx)(Zn,{children:(0,P.jsx)(pn,{rows:[[x(`Sent`,`monoranks`),x(`Published titles, a 40-word excerpt, dates, authors, categories, tags, SEO fields, image alt text and plugin status.`,`monoranks`)],[x(`Read back`,`monoranks`),x(`This website's audit results: scores, issues and the fixes you approved, shown here and in the Posts list.`,`monoranks`)],[x(`Never sent`,`monoranks`),x(`Drafts, private posts, comments, emails, passwords, plugin or theme settings.`,`monoranks`)],[x(`Can change`,`monoranks`),x(`SEO title, meta description, canonical, noindex, image alt text, redirects, one opening paragraph, AI crawler rules, llms.txt. Only after you approve each one.`,`monoranks`)]]})})]}),(0,P.jsxs)(Jn,{children:[(0,P.jsxs)(Yn,{children:[(0,P.jsx)(Xn,{children:x(`Recent changes`,`monoranks`)}),(0,P.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Last 50 · undo for 30 days`,`monoranks`)})]}),(0,P.jsx)(`div`,{className:`pt-2`,children:(0,P.jsx)(qn,{rows:n.log,busy:u,onUndo:e=>{d(e.index),b(`undo`,()=>w.undo(e,`settings`))}})})]}),!ee&&n.has_data&&(0,P.jsxs)(Jn,{className:`border-critical/40`,children:[(0,P.jsx)(Yn,{children:(0,P.jsx)(Xn,{className:`text-critical`,children:x(`Danger zone`,`monoranks`)})}),(0,P.jsxs)(Zn,{className:`flex flex-col gap-3`,children:[(0,P.jsx)(`p`,{className:`text-[12px] text-ink2 max-w-[80ch]`,children:x(`This site is not connected to MonoRanks. You can erase everything the plugin stored here: the connection, the scores on your posts and pages, the redirects and AI access files it was asked to write, and the change log. Pages themselves are not touched — a fix that was written stays written, so undo those first if you want them back.`,`monoranks`)}),m?(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,P.jsx)(`span`,{className:`text-[12px] font-medium text-critical`,children:x(`This cannot be undone. Delete everything?`,`monoranks`)}),(0,P.jsx)(R,{variant:`dangerSolid`,disabled:c!==null,"aria-busy":c===`delete`,onClick:()=>{h(!1),b(`delete`,()=>w.deleteEverything())},children:x(`Yes, delete all data`,`monoranks`)}),(0,P.jsx)(R,{variant:`ghost`,disabled:c!==null,onClick:()=>h(!1),children:x(`Cancel`,`monoranks`)})]}):(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{variant:`danger`,onClick:()=>h(!0),children:x(`Delete all MonoRanks data`,`monoranks`)})})]})]})]})]})}function yr({data:e,busy:t,onSubmit:n}){let[r,i]=(0,_.useState)(``),[a,o]=(0,_.useState)(e.api_base);function s(t){t.preventDefault(),n(r,e.show_address?a:void 0)}return(0,P.jsxs)(`form`,{onSubmit:s,className:`flex flex-col gap-3 pt-1.5`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,P.jsx)(`label`,{htmlFor:`monoranks-key`,className:`text-[12px] font-medium text-ink2`,children:x(`Connector key`,`monoranks`)}),(0,P.jsx)(_r,{id:`monoranks-key`,name:`key`,type:`password`,autoComplete:`off`,placeholder:`mr_ws_… or mr_site_…`,required:!0,value:r,onChange:e=>i(e.target.value)})]}),e.show_address&&(0,P.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,P.jsx)(`label`,{htmlFor:`monoranks-address`,className:`text-[12px] font-medium text-ink2`,children:x(`MonoRanks address (development sites only)`,`monoranks`)}),(0,P.jsx)(_r,{id:`monoranks-address`,name:`api_base`,type:`url`,value:a,onChange:e=>o(e.target.value)})]}),(0,P.jsx)(`div`,{children:(0,P.jsx)(R,{variant:`primary`,type:`submit`,disabled:t!==null,"aria-busy":t===`connect`,children:x(`Connect`,`monoranks`)})})]})}function br(){let[e,t]=te();return v(),e===`settings`?(0,P.jsx)(vr,{go:t}):(0,P.jsx)(fr,{go:t})}var xr=document.getElementById(`monoranks-admin`);xr&&(0,g.createRoot)(xr).render((0,P.jsx)(_.StrictMode,{children:(0,P.jsx)(br,{})})); \ No newline at end of file +`+e.stack}}var Ge=Object.prototype.hasOwnProperty,Ke=t.unstable_scheduleCallback,qe=t.unstable_cancelCallback,Je=t.unstable_shouldYield,Ye=t.unstable_requestPaint,Xe=t.unstable_now,Ze=t.unstable_getCurrentPriorityLevel,Qe=t.unstable_ImmediatePriority,$e=t.unstable_UserBlockingPriority,et=t.unstable_NormalPriority,tt=t.unstable_LowPriority,nt=t.unstable_IdlePriority,rt=t.log,it=t.unstable_setDisableYieldValue,at=null,ot=null;function st(e){if(typeof rt==`function`&&it(e),ot&&typeof ot.setStrictMode==`function`)try{ot.setStrictMode(at,e)}catch{}}var ct=Math.clz32?Math.clz32:dt,lt=Math.log,ut=Math.LN2;function dt(e){return e>>>=0,e===0?32:31-(lt(e)/ut|0)|0}var ft=256,pt=262144,mt=4194304;function k(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ht(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=k(n))):i=k(o):i=k(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=k(n))):i=k(o)):i=k(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function gt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function _t(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function xt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function St(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=pr),gr=` `,_r=!1;function vr(e,t){switch(e){case`keyup`:return dr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function yr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var br=!1;function xr(e,t){switch(e){case`compositionend`:return yr(t);case`keypress`:return t.which===32?(_r=!0,gr):null;case`textInput`:return e=t.data,e===gr&&_r?null:e;default:return null}}function Sr(e,t){if(br)return e===`compositionend`||!fr&&vr(e,t)?(e=Fn(),Pn=Nn=Mn=null,br=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Xr=kn&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),$r&&Ur($r,r)||($r=r,r=Jf(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-ct(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),B&&$i(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),B&&$i(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return B&&$i(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),B&&$i(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===w&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case ae:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===w){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),co(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===me&&to(l)===r.type){n(e,r.sibling),c=a(r,o.props),co(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===w?(c=Ri(o.props.children,e.mode,c,o.key),co(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),co(c,o),c.return=e,e=c)}return s(e);case oe:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case me:return o=to(o),_(e,r,o,c)}if(we(o))return h(e,r,o,c);if(xe(o)){if(l=xe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,so(o),c);if(o.$$typeof===ue)return _(e,r,Ea(e,o),c);lo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{oo=0;var i=_(e,t,n,r);return ao=null,i}catch(t){if(t===Ya||t===Za)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var fo=uo(!0),po=uo(!1),mo=!1;function ho(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function go(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function _o(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function vo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function yo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,A(e,n)}}function bo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xo=!1;function So(){if(xo){var e=Ba;if(e!==null)throw e}}function Co(e,t,n,r){xo=!1;var i=e.updateQueue;mo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===za&&(xo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=C({},d,f);break a;case 2:mo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function wo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function To(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=E.T,s={};s.types=o===null?null:o.types,E.T=s,dc(e,!1,t,n);try{var c=i(),l=E.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?uc(e,t,Ua(c,r),jd(e)):uc(e,t,r,jd(e))}catch(n){uc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{D.p=a,o!==null&&s.types!==null&&(o.types=s.types),E.T=o}}function ec(){}function tc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=nc(e).queue;$s(e,a,t,Te,n===null?ec:function(){return rc(e),n(r)})}function nc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Te,baseState:Te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:Te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rc(e){var t=nc(e);t.next===null&&(t=e.alternate.memoizedState),uc(e,t.next.queue,{},jd())}function ic(){return Ta(sh)}function ac(){return ss().memoizedState}function oc(){return ss().memoizedState}function sc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=_o(n);var r=vo(t,e,n);r!==null&&(Pd(r,t,n),yo(r,t,n)),t={cache:Ma()},e.payload=t;return}t=t.return}}function cc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fc(e)?pc(t,n):(n=Di(e,t,n,r),n!==null&&(Pd(n,e,r),mc(n,t,r)))}function lc(e,t,n){uc(e,t,n,jd())}function uc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fc(e))pc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),q===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Pd(n,e,r),mc(n,t,r),!0}return!1}function dc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},fc(e)){if(t)throw Error(i(479))}else t=Di(e,n,r,2),t!==null&&Pd(t,e,2)}function fc(e){var t=e.alternate;return e===V||t!==null&&t===V}function pc(e,t){Go=Wo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function mc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,A(e,n)}}var hc={readContext:Ta,use:us,useCallback:Zo,useContext:Zo,useEffect:Zo,useImperativeHandle:Zo,useLayoutEffect:Zo,useInsertionEffect:Zo,useMemo:Zo,useReducer:Zo,useRef:Zo,useState:Zo,useDebugValue:Zo,useDeferredValue:Zo,useTransition:Zo,useSyncExternalStore:Zo,useId:Zo,useHostTransitionStatus:Zo,useFormState:Zo,useActionState:Zo,useOptimistic:Zo,useMemoCache:Zo,useCacheRefresh:Zo,useEffectEvent:Zo},gc={readContext:Ta,use:us,useCallback:function(e,t){return os().memoizedState=[e,t===void 0?null:t],e},useContext:Ta,useEffect:Bs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Rs(4194308,4,Ks.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Rs(4194308,4,e,t)},useInsertionEffect:function(e,t){Rs(4,2,e,t)},useMemo:function(e,t){var n=os();t=t===void 0?null:t;var r=e();if(Ko){st(!0);try{e()}finally{st(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=os();if(n!==void 0){var i=n(t);if(Ko){st(!0);try{n(t)}finally{st(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=cc.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=os();return e={current:e},t.memoizedState=e},useState:function(e){e=Ss(e);var t=e.queue,n=lc.bind(null,V,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Js,useDeferredValue:function(e,t){return Zs(os(),e,t)},useTransition:function(){var e=Ss(!1);return e=$s.bind(null,V,e.queue,!0,!1),os().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=V,a=os();if(B){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),q===null)throw Error(i(349));Y&127||_s(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Bs(ys.bind(null,r,o,e),[e]),r.flags|=2048,Is(9,{destroy:void 0},vs.bind(null,r,o,n,t),null),n},useId:function(){var e=os(),t=q.identifierPrefix;if(B){var n=Qi,r=Zi;n=(r&~(1<<32-ct(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=qo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[At]=t,o[jt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&ml(t)}}return U(t),t.subtreeFlags&=-33554433,hl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&ml(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Me.current,da(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ia,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[At]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||ca(t,!0)}else e=lp(e).createTextNode(r),e[At]=t,t.stateNode=e}return U(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=da(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[At]=t}else fa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;U(t),e=!1}else n=pa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Lo(t),t):(Lo(t),null);if(t.flags&128)throw Error(i(558))}return U(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=da(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[At]=t}else fa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;U(t),a=!1}else a=pa(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Lo(t),t):(Lo(t),null)}return Lo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),_l(t,t.updateQueue),U(t),null);case 4:return Fe(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,U(t),null;case 10:return ya(t.type),U(t),null;case 19:if(Bo(t),r=t.memoizedState,r===null)return U(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)vl(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Vo(e),o!==null){for(t.flags|=128,vl(r,!1),e=o.updateQueue,t.updateQueue=e,_l(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return zo(t,Ro.current&1|2),B&&$i(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Xe()>gd&&(t.flags|=128,a=!0,vl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Vo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,_l(t,e),vl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!B)return U(t),null}else 2*Xe()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,a=!0,vl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Xe(),e.sibling=null,o=Ro.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||B?zo(t,o):(n=o,O(jo,t),O(Ro,n),Mo===null&&(Mo=t)),B&&$i(t,r.treeForkCount),e}return U(t),null;case 22:case 23:return Lo(t),Ao(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(U(t),t.subtreeFlags&6&&(t.flags|=8192)):U(t),n=t.updateQueue,n!==null&&_l(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ke(Ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ya(ja),U(t),null;case 25:return null;case 30:return t.flags|=33554432,U(t),null}throw Error(i(156,t.tag))}function bl(e,t){switch(na(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ya(ja),Fe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Le(t),null;case 31:if(t.memoizedState!==null){if(Lo(t),t.alternate===null)throw Error(i(340));fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Lo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));fa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Bo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Fe(),null;case 10:return ya(t.type),null;case 22:case 23:return Lo(t),Ao(),e!==null&&ke(Ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ya(ja),null;case 25:return null;default:return null}}function xl(e,t){switch(na(t),t.tag){case 3:ya(ja),Fe();break;case 26:case 27:case 5:Le(t);break;case 4:Fe();break;case 31:t.memoizedState!==null&&Lo(t);break;case 13:Lo(t);break;case 19:Bo(t);break;case 10:ya(t.type);break;case 22:case 23:Lo(t),Ao(),e!==null&&ke(Ga);break;case 24:ya(ja)}}function Sl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Cl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function wl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{To(t,n)}catch(t){Z(e,e.return,t)}}}function Tl(e,t,n){n.props=Cc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function El(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);h(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Dl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Ol(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[At]=e,Ht(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,E.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,K&6)throw Error(i(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),ot&&typeof ot.onPostCommitFiberRoot==`function`)try{ot.onPostCommitFiberRoot(at,o)}catch{}return!0}finally{D.p=a,E.T=r,uf(e,t)}}function pf(e,t,n){t=Ui(n,t),t=kc(e.stateNode,t,2),e=vo(e,t,2),e!==null&&(xt(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Ui(n,e),n=Ac(2),r=vo(t,n,2),r!==null&&(jc(n,r,t,e),xt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>Xe()-md?K&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=yt()),e=Oi(e,t),e!==null&&(xt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Ke(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ct(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=ht(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||gt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Xe(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=sn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Ht(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+sn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+sn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+sn(n.imageSizes)+`"]`)):i+=`[href="`+sn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=C({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Lt]=!0,o.onload=o.onerror=function(){Ut(o)}),Ht(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+sn(r)+`"][href="`+sn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=C({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Ht(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=M(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=C({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Ht(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=M(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=C({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Ht(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=M(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=C({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Ht(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var a=(a=Me.current)?bm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=M(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=M(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=M(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Pm(e){return`href="`+sn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return C({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Lt]){r.loading=1;return}}else t=e.createElement(`link`),t[Lt]=!0,t.onload=t.onerror=Ut.bind(null,t),np(t,`link`,n),Ht(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+sn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+sn(n.href)+`"]`);if(r)return t.instance=r,Ht(r),r;var a=C({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Ht(r),np(r,`style`,a),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Pm(n.href);var o=e.querySelector(Fm(a));if(o)return t.state.loading|=4,t.instance=o,Ht(o),o;r=Im(n),(a=vm.get(a))&&Hm(r,a),o=(e.ownerDocument||e).createElement(`link`),Ht(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(a=e.querySelector(zm(o)))?(t.instance=a,Ht(a),a):(r=n,(a=vm.get(o))&&(r=C({},n),Um(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Ht(a),np(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Ht(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Ht(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()}))(),_=c(u(),1);function v(){(0,_.useEffect)(()=>{let e=document.getElementById(`adminmenuwrap`),t=document.getElementById(`wpbody-content`);if(!e||!t)return;let n=()=>t.style.setProperty(`--mr-fill`,Math.ceil(e.getBoundingClientRect().height)+`px`);n();let r=new ResizeObserver(n);return r.observe(e),window.addEventListener(`resize`,n),()=>{r.disconnect(),window.removeEventListener(`resize`,n),t.style.removeProperty(`--mr-fill`)}},[])}function y(){let e=window.monoranksAdmin;if(!e)throw Error(`monoranksAdmin settings missing`);return e}var b={overview:`monoranks`,settings:`monoranks-settings`};function ee(){return new URLSearchParams(window.location.search).get(`page`)===b.settings?`settings`:`overview`}function te(){let[e,t]=(0,_.useState)(ee),n=(0,_.useRef)(()=>void 0);(0,_.useEffect)(()=>{let e=()=>t(ee());window.addEventListener(`popstate`,e);let r=e=>{let t=e.target.closest(`#toplevel_page_monoranks a[href*="page=monoranks"]`);if(!t||e.metaKey||e.ctrlKey||e.shiftKey||e.button!==0)return;let r=new URL(t.href,window.location.href).searchParams.get(`page`),i=r===b.settings?`settings`:r===b.overview?`overview`:null;i&&(e.preventDefault(),n.current(i))};return document.addEventListener(`click`,r),()=>{window.removeEventListener(`popstate`,e),document.removeEventListener(`click`,r)}},[]),(0,_.useEffect)(()=>{ne(e),document.title=document.title.replace(/^[^‹]*‹/,(y().titles[e]||`MonoRanks`)+` ‹`)},[e]);let r=n=>{if(n===e)return;let r=n===`settings`?y().urls.settings:y().urls.overview;window.history.pushState({monoranks:n},``,r),t(n),window.scrollTo({top:0})};return n.current=r,[e,r]}function ne(e){let t=document.getElementById(`toplevel_page_monoranks`);t&&t.querySelectorAll(`.wp-submenu a`).forEach(t=>{let n=new URL(t.href,window.location.href).searchParams.get(`page`)===b[e];t.classList.toggle(`current`,n),t.parentElement?.classList.toggle(`current`,n),n?t.setAttribute(`aria-current`,`page`):t.removeAttribute(`aria-current`)})}var{__:x,_n:S,_x:re,sprintf:C,isRTL:ie}=window.wp.i18n,ae=window.wp.apiFetch,oe=`/monoranks/v1/admin`,w={overview:()=>ae({path:`${oe}/overview`}),settings:()=>ae({path:`${oe}/settings`}),grow:()=>ae({path:`${oe}/grow`}),apply:e=>ae({path:`${oe}/apply`,method:`POST`,data:{fix:e}}),undo:(e,t)=>ae({path:`${oe}/undo`,method:`POST`,data:{entry:e.index,at:e.at,screen:t}}),sync:e=>ae({path:`${oe}/sync`,method:`POST`,data:{screen:e}}),connect:(e,t)=>ae({path:`${oe}/connect`,method:`POST`,data:{key:e,api_base:t}}),disconnect:()=>ae({path:`${oe}/disconnect`,method:`POST`}),deleteEverything:()=>ae({path:`${oe}/delete`,method:`POST`})};function se(e,t){let n=e?.message;return typeof n==`string`&&n?n:t}var ce=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function le(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:ce(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var ue=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},T=e=>{let t=ue(e);return t.charAt(0).toUpperCase()+t.slice(1)},de=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),fe={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function pe(e){return e!=null}function me(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??fe.width,a=e.size??e.height??fe.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?de(...c):de(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??fe[`stroke-width`])*Number(e.size??e.width??fe.width)/Number(t.size??t.width??fe.width):t.strokeWidth??fe[`stroke-width`];return[`svg`,{...Object.entries(fe).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&pe(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&pe(t.width)&&{[r(`width`)]:t.width},...`height`in t&&pe(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function he(e,t={}){return me(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var ge=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},_e=(0,_.createContext)({}),ve=()=>(0,_.useContext)(_e),ye=(0,_.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:v=`currentColor`,className:y=``}=ve()??{},b=!!c||ge(d),[ee,te,ne=[]]=he(u,{color:e??v,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:de(y,s),hasA11yProp:b,attributes:d});return(0,_.createElement)(ee,{ref:f,...te},[...ne.map(([e,t])=>(0,_.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function be(e,t=[],n=[]){let r=typeof e==`string`?le(e,t,n):e,i=(0,_.forwardRef)(({className:e,...t},n)=>(0,_.createElement)(ye,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=T(r.name)),i}var xe={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};xe.node;var Se=be(xe),Ce={name:`arrow-up-right`,size:24,node:[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]};Ce.node;var we=be(Ce),E={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};E.node;var D=be(E),Te={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};Te.node;var Ee=be(Te),De={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};De.node;var Oe=be(De),ke={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};ke.node;var O=be(ke),Ae={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Ae.node;var je=be(Ae),Me={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};Me.node;var Ne=be(Me);function Pe(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),Re=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),ze=`-`,Be=[],Ve=`arbitrary..`,He=e=>{let t=Ge(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return We(e);let n=e.split(ze);return Ue(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?Ie(i,t):t:i||Be}return n[e]||Be}}},Ue=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=Ue(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(ze):e.slice(t).join(ze),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?Ve+r:void 0})(),Ge=e=>{let{theme:t,classGroups:n}=e;return Ke(n,t)},Ke=(e,t)=>{let n=Re();for(let r in e){let i=e[r];qe(i,n,r,t)}return n},qe=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){Ye(e,t,n);return}if(typeof e==`function`){Xe(e,t,n,r);return}Ze(e,t,n,r)},Ye=(e,t,n)=>{let r=e===``?t:Qe(t,e);r.classGroupId=n},Xe=(e,t,n,r)=>{if($e(e)){qe(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Le(n,e))},Ze=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(ze),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,et=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},tt=`!`,nt=`:`,rt=[],it=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),at=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return it(t,l,c,u)};if(t){let e=t+nt,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):it(rt,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},ot=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},st=e=>({cache:et(e.cacheSize),parseClassName:at(e),sortModifiers:ot(e),postfixLookupClassGroupIds:ct(e),...He(e)}),ct=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(lt),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+tt:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},dt=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=st(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=ut(e,n);return i(e,a),a};return a=o,(...e)=>a(dt(...e))},mt=[],k=e=>{let t=t=>t[e]||mt;return t.isThemeGetter=!0,t.themeKey=e,t},ht=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,gt=/^\((?:(\w[\w-]*):)?(.+)\)$/i,_t=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,vt=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,yt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,bt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,xt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,St=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ct=e=>_t.test(e),A=e=>!!e&&!Number.isNaN(Number(e)),wt=e=>!!e&&Number.isInteger(Number(e)),Tt=e=>e.endsWith(`%`)&&A(e.slice(0,-1)),Et=e=>vt.test(e),Dt=()=>!0,Ot=e=>yt.test(e)&&!bt.test(e),kt=()=>!1,At=e=>xt.test(e),jt=e=>St.test(e),Mt=e=>!j(e)&&!M(e),Nt=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Pt=e=>Yt(e,Qt,kt),j=e=>ht.test(e),Ft=e=>Yt(e,$t,Ot),It=e=>Yt(e,en,A),Lt=e=>Yt(e,nn,Dt),Rt=e=>Yt(e,tn,kt),zt=e=>Yt(e,Zt,kt),Bt=e=>Yt(e,N,jt),Vt=e=>Yt(e,rn,At),M=e=>gt.test(e),Ht=e=>Xt(e,$t),Ut=e=>Xt(e,tn),Wt=e=>Xt(e,Zt),Gt=e=>Xt(e,Qt),Kt=e=>Xt(e,N),qt=e=>Xt(e,rn,!0),Jt=e=>Xt(e,nn,!0),Yt=(e,t,n)=>{let r=ht.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Xt=(e,t,n=!1)=>{let r=gt.exec(e);return r?r[1]?t(r[1]):n:!1},Zt=e=>e===`position`||e===`percentage`,N=e=>e===`image`||e===`url`,Qt=e=>e===`length`||e===`size`||e===`bg-size`,$t=e=>e===`length`,en=e=>e===`number`,tn=e=>e===`family-name`,nn=e=>e===`number`||e===`weight`,rn=e=>e===`shadow`,an=pt(()=>{let e=k(`color`),t=k(`font`),n=k(`text`),r=k(`font-weight`),i=k(`tracking`),a=k(`leading`),o=k(`breakpoint`),s=k(`container`),c=k(`spacing`),l=k(`radius`),u=k(`shadow`),d=k(`inset-shadow`),f=k(`text-shadow`),p=k(`drop-shadow`),m=k(`blur`),h=k(`perspective`),g=k(`aspect`),_=k(`ease`),v=k(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],ee=()=>[...b(),M,j],te=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],ne=()=>[`auto`,`contain`,`none`],x=()=>[M,j,c],S=()=>[Ct,`full`,`auto`,...x()],re=()=>[wt,`none`,`subgrid`,M,j],C=()=>[`auto`,{span:[`full`,wt,M,j]},wt,M,j],ie=()=>[wt,`auto`,M,j],ae=()=>[`auto`,`min`,`max`,`fr`,M,j],oe=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],w=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],se=()=>[`auto`,...x()],ce=()=>[Ct,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...x()],le=()=>[s,Ct,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...x()],ue=()=>[Ct,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...x()],T=()=>[e,M,j],de=()=>[...b(),Wt,zt,{position:[M,j]}],fe=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],pe=()=>[`auto`,`cover`,`contain`,Gt,Pt,{size:[M,j]}],me=()=>[Tt,Ht,Ft],he=()=>[``,`none`,`full`,l,M,j],ge=()=>[``,A,Ht,Ft],_e=()=>[`solid`,`dashed`,`dotted`,`double`],ve=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],ye=()=>[A,Tt,Wt,zt],be=()=>[``,`none`,m,M,j],xe=()=>[`none`,A,M,j],Se=()=>[`none`,A,M,j],Ce=()=>[A,M,j],we=()=>[Ct,`full`,...x()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Et],breakpoint:[Et],color:[Dt],container:[Et],"drop-shadow":[Et],ease:[`in`,`out`,`in-out`],font:[Mt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Et],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Et],shadow:[Et],spacing:[`px`,A],text:[Et],"text-shadow":[Et],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,Ct,j,M,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,M,j]}],"container-named":[Nt],columns:[{columns:[A,`auto`,j,M,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:ee()}],overflow:[{overflow:te()}],"overflow-x":[{"overflow-x":te()}],"overflow-y":[{"overflow-y":te()}],overscroll:[{overscroll:ne()}],"overscroll-x":[{"overscroll-x":ne()}],"overscroll-y":[{"overscroll-y":ne()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:S()}],"inset-x":[{"inset-x":S()}],"inset-y":[{"inset-y":S()}],start:[{"inset-s":S(),start:S()}],end:[{"inset-e":S(),end:S()}],"inset-bs":[{"inset-bs":S()}],"inset-be":[{"inset-be":S()}],top:[{top:S()}],right:[{right:S()}],bottom:[{bottom:S()}],left:[{left:S()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[wt,`auto`,M,j]}],basis:[{basis:[Ct,`full`,`auto`,s,...x()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[A,Ct,`auto`,`initial`,`none`,j]}],grow:[{grow:[``,A,M,j]}],shrink:[{shrink:[``,A,M,j]}],order:[{order:[wt,`first`,`last`,`none`,M,j]}],"grid-cols":[{"grid-cols":re()}],"col-start-end":[{col:C()}],"col-start":[{"col-start":ie()}],"col-end":[{"col-end":ie()}],"grid-rows":[{"grid-rows":re()}],"row-start-end":[{row:C()}],"row-start":[{"row-start":ie()}],"row-end":[{"row-end":ie()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ae()}],"auto-rows":[{"auto-rows":ae()}],gap:[{gap:x()}],"gap-x":[{"gap-x":x()}],"gap-y":[{"gap-y":x()}],"justify-content":[{justify:[...oe(),`normal`]}],"justify-items":[{"justify-items":[...w(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...w()]}],"align-content":[{content:[`normal`,...oe()]}],"align-items":[{items:[...w(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...w(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":oe()}],"place-items":[{"place-items":[...w(),`baseline`]}],"place-self":[{"place-self":[`auto`,...w()]}],p:[{p:x()}],px:[{px:x()}],py:[{py:x()}],ps:[{ps:x()}],pe:[{pe:x()}],pbs:[{pbs:x()}],pbe:[{pbe:x()}],pt:[{pt:x()}],pr:[{pr:x()}],pb:[{pb:x()}],pl:[{pl:x()}],m:[{m:se()}],mx:[{mx:se()}],my:[{my:se()}],ms:[{ms:se()}],me:[{me:se()}],mbs:[{mbs:se()}],mbe:[{mbe:se()}],mt:[{mt:se()}],mr:[{mr:se()}],mb:[{mb:se()}],ml:[{ml:se()}],"space-x":[{"space-x":x()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":x()}],"space-y-reverse":[`space-y-reverse`],size:[{size:ce()}],"inline-size":[{inline:[`auto`,...le()]}],"min-inline-size":[{"min-inline":[`auto`,...le()]}],"max-inline-size":[{"max-inline":[`none`,...le()]}],"block-size":[{block:[`auto`,...ue()]}],"min-block-size":[{"min-block":[`auto`,...ue()]}],"max-block-size":[{"max-block":[`none`,...ue()]}],w:[{w:[s,`screen`,...ce()]}],"min-w":[{"min-w":[s,`screen`,`none`,...ce()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...ce()]}],h:[{h:[`screen`,`lh`,...ce()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...ce()]}],"max-h":[{"max-h":[`screen`,`lh`,`none`,...ce()]}],"font-size":[{text:[`base`,n,Ht,Ft]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Jt,Lt]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Tt,j]}],"font-family":[{font:[Ut,Rt,t]}],"font-features":[{"font-features":[j]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,M,j]}],"line-clamp":[{"line-clamp":[A,`none`,M,It]}],leading:[{leading:[`none`,a,...x()]}],"list-image":[{"list-image":[`none`,M,j]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,M,j]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:T()}],"text-color":[{text:T()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[..._e(),`wavy`]}],"text-decoration-thickness":[{decoration:[A,`from-font`,`auto`,M,Ft]}],"text-decoration-color":[{decoration:T()}],"underline-offset":[{"underline-offset":[A,`auto`,M,j]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:x()}],"tab-size":[{tab:[wt,M,j]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,M,j]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,M,j]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:de()}],"bg-repeat":[{bg:fe()}],"bg-size":[{bg:pe()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},wt,M,j],radial:[``,M,j],conic:[``,wt,M,j]},Kt,Bt]}],"bg-color":[{bg:T()}],"gradient-from-pos":[{from:me()}],"gradient-via-pos":[{via:me()}],"gradient-to-pos":[{to:me()}],"gradient-from":[{from:T()}],"gradient-via":[{via:T()}],"gradient-to":[{to:T()}],rounded:[{rounded:he()}],"rounded-s":[{"rounded-s":he()}],"rounded-e":[{"rounded-e":he()}],"rounded-t":[{"rounded-t":he()}],"rounded-r":[{"rounded-r":he()}],"rounded-b":[{"rounded-b":he()}],"rounded-l":[{"rounded-l":he()}],"rounded-ss":[{"rounded-ss":he()}],"rounded-se":[{"rounded-se":he()}],"rounded-ee":[{"rounded-ee":he()}],"rounded-es":[{"rounded-es":he()}],"rounded-tl":[{"rounded-tl":he()}],"rounded-tr":[{"rounded-tr":he()}],"rounded-br":[{"rounded-br":he()}],"rounded-bl":[{"rounded-bl":he()}],"border-w":[{border:ge()}],"border-w-x":[{"border-x":ge()}],"border-w-y":[{"border-y":ge()}],"border-w-s":[{"border-s":ge()}],"border-w-e":[{"border-e":ge()}],"border-w-bs":[{"border-bs":ge()}],"border-w-be":[{"border-be":ge()}],"border-w-t":[{"border-t":ge()}],"border-w-r":[{"border-r":ge()}],"border-w-b":[{"border-b":ge()}],"border-w-l":[{"border-l":ge()}],"divide-x":[{"divide-x":ge()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":ge()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[..._e(),`hidden`,`none`]}],"divide-style":[{divide:[..._e(),`hidden`,`none`]}],"border-color":[{border:T()}],"border-color-x":[{"border-x":T()}],"border-color-y":[{"border-y":T()}],"border-color-s":[{"border-s":T()}],"border-color-e":[{"border-e":T()}],"border-color-bs":[{"border-bs":T()}],"border-color-be":[{"border-be":T()}],"border-color-t":[{"border-t":T()}],"border-color-r":[{"border-r":T()}],"border-color-b":[{"border-b":T()}],"border-color-l":[{"border-l":T()}],"divide-color":[{divide:T()}],"outline-style":[{outline:[..._e(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[A,M,j]}],"outline-w":[{outline:[``,A,Ht,Ft]}],"outline-color":[{outline:T()}],shadow:[{shadow:[``,`inner`,`none`,u,qt,Vt]}],"shadow-color":[{shadow:T()}],"inset-shadow":[{"inset-shadow":[`none`,d,qt,Vt]}],"inset-shadow-color":[{"inset-shadow":T()}],"ring-w":[{ring:ge()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:T()}],"ring-offset-w":[{"ring-offset":[A,Ft]}],"ring-offset-color":[{"ring-offset":T()}],"inset-ring-w":[{"inset-ring":ge()}],"inset-ring-color":[{"inset-ring":T()}],"text-shadow":[{"text-shadow":[`none`,f,qt,Vt]}],"text-shadow-color":[{"text-shadow":T()}],opacity:[{opacity:[A,M,j]}],"mix-blend":[{"mix-blend":[...ve(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":ve()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[A]}],"mask-image-linear-from-pos":[{"mask-linear-from":ye()}],"mask-image-linear-to-pos":[{"mask-linear-to":ye()}],"mask-image-linear-from-color":[{"mask-linear-from":T()}],"mask-image-linear-to-color":[{"mask-linear-to":T()}],"mask-image-t-from-pos":[{"mask-t-from":ye()}],"mask-image-t-to-pos":[{"mask-t-to":ye()}],"mask-image-t-from-color":[{"mask-t-from":T()}],"mask-image-t-to-color":[{"mask-t-to":T()}],"mask-image-r-from-pos":[{"mask-r-from":ye()}],"mask-image-r-to-pos":[{"mask-r-to":ye()}],"mask-image-r-from-color":[{"mask-r-from":T()}],"mask-image-r-to-color":[{"mask-r-to":T()}],"mask-image-b-from-pos":[{"mask-b-from":ye()}],"mask-image-b-to-pos":[{"mask-b-to":ye()}],"mask-image-b-from-color":[{"mask-b-from":T()}],"mask-image-b-to-color":[{"mask-b-to":T()}],"mask-image-l-from-pos":[{"mask-l-from":ye()}],"mask-image-l-to-pos":[{"mask-l-to":ye()}],"mask-image-l-from-color":[{"mask-l-from":T()}],"mask-image-l-to-color":[{"mask-l-to":T()}],"mask-image-x-from-pos":[{"mask-x-from":ye()}],"mask-image-x-to-pos":[{"mask-x-to":ye()}],"mask-image-x-from-color":[{"mask-x-from":T()}],"mask-image-x-to-color":[{"mask-x-to":T()}],"mask-image-y-from-pos":[{"mask-y-from":ye()}],"mask-image-y-to-pos":[{"mask-y-to":ye()}],"mask-image-y-from-color":[{"mask-y-from":T()}],"mask-image-y-to-color":[{"mask-y-to":T()}],"mask-image-radial":[{"mask-radial":[M,j]}],"mask-image-radial-from-pos":[{"mask-radial-from":ye()}],"mask-image-radial-to-pos":[{"mask-radial-to":ye()}],"mask-image-radial-from-color":[{"mask-radial-from":T()}],"mask-image-radial-to-color":[{"mask-radial-to":T()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[A]}],"mask-image-conic-from-pos":[{"mask-conic-from":ye()}],"mask-image-conic-to-pos":[{"mask-conic-to":ye()}],"mask-image-conic-from-color":[{"mask-conic-from":T()}],"mask-image-conic-to-color":[{"mask-conic-to":T()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:de()}],"mask-repeat":[{mask:fe()}],"mask-size":[{mask:pe()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,M,j]}],filter:[{filter:[``,`none`,M,j]}],blur:[{blur:be()}],brightness:[{brightness:[A,M,j]}],contrast:[{contrast:[A,M,j]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,qt,Vt]}],"drop-shadow-color":[{"drop-shadow":T()}],grayscale:[{grayscale:[``,A,M,j]}],"hue-rotate":[{"hue-rotate":[A,M,j]}],invert:[{invert:[``,A,M,j]}],saturate:[{saturate:[A,M,j]}],sepia:[{sepia:[``,A,M,j]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,M,j]}],"backdrop-blur":[{"backdrop-blur":be()}],"backdrop-brightness":[{"backdrop-brightness":[A,M,j]}],"backdrop-contrast":[{"backdrop-contrast":[A,M,j]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,A,M,j]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[A,M,j]}],"backdrop-invert":[{"backdrop-invert":[``,A,M,j]}],"backdrop-opacity":[{"backdrop-opacity":[A,M,j]}],"backdrop-saturate":[{"backdrop-saturate":[A,M,j]}],"backdrop-sepia":[{"backdrop-sepia":[``,A,M,j]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":x()}],"border-spacing-x":[{"border-spacing-x":x()}],"border-spacing-y":[{"border-spacing-y":x()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,M,j]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[A,`initial`,M,j]}],ease:[{ease:[`linear`,`initial`,_,M,j]}],delay:[{delay:[A,M,j]}],animate:[{animate:[`none`,v,M,j]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,M,j]}],"perspective-origin":[{"perspective-origin":ee()}],rotate:[{rotate:xe()}],"rotate-x":[{"rotate-x":xe()}],"rotate-y":[{"rotate-y":xe()}],"rotate-z":[{"rotate-z":xe()}],scale:[{scale:Se()}],"scale-x":[{"scale-x":Se()}],"scale-y":[{"scale-y":Se()}],"scale-z":[{"scale-z":Se()}],"scale-3d":[`scale-3d`],skew:[{skew:Ce()}],"skew-x":[{"skew-x":Ce()}],"skew-y":[{"skew-y":Ce()}],transform:[{transform:[M,j,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:ee()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:we()}],"translate-x":[{"translate-x":we()}],"translate-y":[{"translate-y":we()}],"translate-z":[{"translate-z":we()}],"translate-none":[`translate-none`],zoom:[{zoom:[wt,M,j]}],accent:[{accent:T()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:T()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,M,j]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":T()}],"scrollbar-track-color":[{"scrollbar-track":T()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":x()}],"scroll-mx":[{"scroll-mx":x()}],"scroll-my":[{"scroll-my":x()}],"scroll-ms":[{"scroll-ms":x()}],"scroll-me":[{"scroll-me":x()}],"scroll-mbs":[{"scroll-mbs":x()}],"scroll-mbe":[{"scroll-mbe":x()}],"scroll-mt":[{"scroll-mt":x()}],"scroll-mr":[{"scroll-mr":x()}],"scroll-mb":[{"scroll-mb":x()}],"scroll-ml":[{"scroll-ml":x()}],"scroll-p":[{"scroll-p":x()}],"scroll-px":[{"scroll-px":x()}],"scroll-py":[{"scroll-py":x()}],"scroll-ps":[{"scroll-ps":x()}],"scroll-pe":[{"scroll-pe":x()}],"scroll-pbs":[{"scroll-pbs":x()}],"scroll-pbe":[{"scroll-pbe":x()}],"scroll-pt":[{"scroll-pt":x()}],"scroll-pr":[{"scroll-pr":x()}],"scroll-pb":[{"scroll-pb":x()}],"scroll-pl":[{"scroll-pl":x()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,M,j]}],fill:[{fill:[`none`,...T()]}],"stroke-w":[{stroke:[A,Ht,Ft,It]}],stroke:[{stroke:[`none`,...T()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`start`,`end`,`right`,`left`],"inset-y":[`inset-bs`,`inset-be`,`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`ps`,`pe`,`pr`,`pl`],py:[`pbs`,`pbe`,`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`ms`,`me`,`mr`,`ml`],my:[`mbs`,`mbe`,`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-s`,`border-w-e`,`border-w-r`,`border-w-l`],"border-w-y":[`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-s`,`border-color-e`,`border-color-r`,`border-color-l`],"border-color-y":[`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-ms`,`scroll-me`,`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-ps`,`scroll-pe`,`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function P(...e){return an(Fe(e))}var on=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),F=o(((e,t)=>{t.exports=on()}))(),sn=`.notice, .update-nag, .updated, .error, #message`;function cn({className:e}){let t=(0,_.useRef)(null);return(0,_.useEffect)(()=>{let e=document.getElementById(`wpbody-content`),n=t.current;if(!e||!n)return;let r=()=>{e.querySelectorAll(`:scope > *`).forEach(e=>{e.id!==`monoranks-admin`&&e.matches(sn)&&n.appendChild(e)})};r();let i=new MutationObserver(r);return i.observe(e,{childList:!0}),()=>i.disconnect()},[]),(0,F.jsx)(`div`,{ref:t,className:P(`empty:hidden`,e)})}function ln(e,t,n=`plugin-admin`){try{let r=new URL(e);return r.host===new URL(y().apiBase).host?e:(r.searchParams.set(`utm_source`,`wordpress-plugin`),r.searchParams.set(`utm_medium`,`admin`),r.searchParams.set(`utm_campaign`,n),r.searchParams.set(`utm_content`,t),r.toString())}catch{return e}}function un({which:e,className:t}){return(0,F.jsx)(`span`,{className:P(`inline-flex [&>svg]:block`,t),dangerouslySetInnerHTML:{__html:y().logos[e]}})}var dn=`mx-auto w-full max-w-[1260px] px-10 max-[960px]:px-6 max-[782px]:px-4`;function fn({section:e,go:t,title:n,description:r,actions:i,children:a}){let o=y(),s=[{id:`overview`,label:x(`Overview`,`monoranks`),href:o.urls.overview},{id:`settings`,label:x(`Settings`,`monoranks`),href:o.urls.settings}];return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`header`,{className:`bg-band text-band-ink`,children:(0,F.jsxs)(`div`,{className:P(dn,`flex min-h-16 items-center gap-7 max-[782px]:gap-3`),children:[(0,F.jsx)(`a`,{href:o.urls.overview,onClick:e=>{e.preventDefault(),t(`overview`)},className:`inline-flex items-center text-band-ink hover:text-white`,children:(0,F.jsx)(un,{which:`wordmark`,className:`[&>svg]:h-7 [&>svg]:w-[138px]`})}),(0,F.jsx)(`nav`,{className:`flex self-stretch gap-[22px] max-[782px]:gap-3`,"aria-label":x(`MonoRanks sections`,`monoranks`),children:s.map(n=>(0,F.jsx)(`a`,{href:n.href,onClick:e=>{e.preventDefault(),t(n.id)},"aria-current":e===n.id?`page`:void 0,className:P(`inline-flex items-center border-b-2 pt-[2px] text-[13px] font-medium`,e===n.id?`border-brand text-band-ink`:`border-transparent text-band-muted hover:text-white`),children:n.label},n.id))}),(0,F.jsxs)(`div`,{className:`ms-auto flex items-center gap-1.5`,children:[(0,F.jsx)(`a`,{href:ln(o.urls.docs,`header-help`,e),target:`_blank`,rel:`noopener`,className:`inline-flex h-8 items-center gap-1.5 rounded-md px-3 text-[12.5px] font-medium text-band-muted hover:bg-band-edge hover:text-white`,children:x(`Help`,`monoranks`)}),(0,F.jsxs)(`a`,{href:ln(o.urls.app,`header-open`,e),target:`_blank`,rel:`noopener`,className:`inline-flex h-8 items-center gap-1.5 rounded-md border border-band-edge px-3 text-[12.5px] font-medium text-band-ink hover:bg-band-edge hover:text-white max-[782px]:hidden`,children:[x(`Open MonoRanks`,`monoranks`),(0,F.jsx)(we,{size:14,className:`mr-flip`})]})]})]})}),(0,F.jsxs)(`div`,{className:P(dn,`flex flex-wrap items-start justify-between gap-x-6 gap-y-3 pb-1.5 pt-[30px]`),children:[(0,F.jsxs)(`div`,{className:`flex min-w-0 flex-[1_1_420px] flex-col gap-1.5`,children:[(0,F.jsx)(`h1`,{className:`text-[26px] font-semibold tracking-[-0.02em] leading-tight text-ink`,children:n}),r&&(0,F.jsx)(`p`,{className:`max-w-[72ch] text-ink2`,children:r})]}),i&&(0,F.jsx)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1`,children:i})]}),(0,F.jsx)(`div`,{className:`wp-header-end`}),(0,F.jsx)(cn,{className:P(dn,`flex flex-col gap-2.5 pt-3`)}),(0,F.jsx)(`main`,{className:P(dn,`flex flex-[1_0_auto] flex-col gap-5 pb-10 pt-[22px]`),children:a}),(0,F.jsx)(pn,{section:e,go:t})]})}function pn({section:e,go:t}){let n=y();return(0,F.jsxs)(`footer`,{className:`mt-auto bg-band text-band-ink`,children:[(0,F.jsxs)(`div`,{className:P(dn,`grid grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto] items-center gap-8 py-7 max-[960px]:grid-cols-[minmax(0,1fr)_auto] max-[960px]:gap-5 max-[782px]:grid-cols-1`),children:[(0,F.jsxs)(`div`,{className:`inline-flex items-center gap-2.5`,children:[(0,F.jsx)(un,{which:`wordmark`,className:`[&>svg]:h-[26px] [&>svg]:w-[128px]`}),(0,F.jsxs)(`span`,{className:`rounded-md border border-band-edge px-[7px] py-[2px] text-[11px] font-medium text-band-muted`,children:[`v`,n.version]})]}),(0,F.jsxs)(`div`,{className:`min-w-0 border-s border-band-edge ps-7 max-[960px]:col-start-1 max-[960px]:border-0 max-[960px]:ps-0`,children:[(0,F.jsx)(`span`,{className:`mb-1.5 block text-[11px] uppercase tracking-[.08em] text-band-muted`,children:x(`Your data`,`monoranks`)}),(0,F.jsxs)(`a`,{href:n.urls.settings,onClick:e=>{e.preventDefault(),t(`settings`)},className:`inline-flex items-center gap-[7px] text-[13px] text-band-ink hover:text-white hover:underline hover:underline-offset-4`,children:[x(`What is sent and what can change`,`monoranks`),(0,F.jsx)(we,{size:14,className:`mr-flip`})]})]}),(0,F.jsxs)(`a`,{href:ln(n.urls.docs,`footer-help`,e),target:`_blank`,rel:`noopener`,className:`block rounded-[9px] border border-band-edge px-[18px] py-3 text-start text-band-ink hover:bg-band-edge hover:text-white max-[960px]:col-start-2 max-[960px]:row-span-2 max-[960px]:row-start-1 max-[782px]:col-auto max-[782px]:row-auto`,children:[(0,F.jsx)(`span`,{className:`mb-1.5 block text-[11px] text-band-muted`,children:x(`Need a hand?`,`monoranks`)}),(0,F.jsxs)(`strong`,{className:`flex items-center justify-between gap-5 text-[13px] font-medium`,children:[x(`Help and resources`,`monoranks`),(0,F.jsx)(Se,{size:14,className:`mr-flip`})]})]})]}),(0,F.jsx)(`div`,{className:P(dn),children:(0,F.jsxs)(`div`,{className:`flex items-center justify-center gap-3 border-t border-band-edge pb-[18px] pt-4 text-[11px] text-band-muted`,children:[(0,F.jsx)(`span`,{children:x(`A product by`,`monoranks`)}),(0,F.jsx)(`a`,{href:ln(`https://veronalabs.com/`,`footer-publisher`,e),target:`_blank`,rel:`noopener`,"aria-label":`VeronaLabs`,className:`inline-flex min-h-7 items-center text-band-muted opacity-75 hover:opacity-100 hover:text-band-muted`,children:(0,F.jsx)(un,{which:`veronalabs`,className:`[&>svg]:h-auto [&>svg]:w-28`})})]})})]})}function mn({notice:e}){if(!e)return null;let t={success:`text-good-ink`,error:`text-critical`,warning:`text-warn`}[e.type],n={success:Oe,error:Ee,warning:je}[e.type];return(0,F.jsxs)(`div`,{className:P(`notice`,`notice-${e.type}`,`flex items-start gap-2.5`),role:`status`,children:[(0,F.jsx)(n,{size:16,className:P(`mt-[1px] shrink-0`,t),"aria-hidden":`true`}),(0,F.jsx)(`p`,{className:`text-ink`,children:e.text})]})}function hn({rows:e}){return(0,F.jsx)(`div`,{className:`grid grid-cols-[150px_minmax(0,1fr)] gap-x-3 gap-y-2 text-[12px] max-[960px]:grid-cols-1`,children:e.map(([e,t],n)=>(0,F.jsxs)(`div`,{className:`contents`,children:[(0,F.jsx)(`div`,{className:`text-mute max-[960px]:mt-1`,children:e}),(0,F.jsx)(`div`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:t})]},n))})}function gn({title:e,text:t}){return(0,F.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-6 py-9 text-center text-ink2`,children:[(0,F.jsx)(`span`,{className:`text-[13px] font-semibold text-ink`,children:e}),(0,F.jsx)(`span`,{className:`text-[12px]`,children:t})]})}function I(e){if(e==null)return`—`;try{return new Intl.NumberFormat(y().locale,{maximumFractionDigits:0}).format(e)}catch{return String(e)}}function _n(e,t=``){return(e>0?`+`:e<0?`−`:``)+I(Math.abs(e))+t}function vn(e){return e==null?`none`:e>=80?`good`:e>=60?`warn`:`critical`}function yn({score:e,size:t=`sm`,label:n}){let r=t===`lg`?64:30,i=t===`lg`?5:3,a=(r-i)/2,o=2*Math.PI*a,s=r/2,c=e===null?x(`Not scored yet`,`monoranks`):C(x(`%s of 100`,`monoranks`),I(e));return(0,F.jsxs)(`span`,{className:P(`mr-score`,`mr-${t}`,`mr-${vn(e)}`),title:(n?`${n}: `:``)+c,children:[(0,F.jsxs)(`span`,{className:`mr-ring`,children:[(0,F.jsx)(`svg`,{width:r,height:r,viewBox:`0 0 ${r} ${r}`,"aria-hidden":`true`,children:e===null?(0,F.jsx)(`circle`,{cx:s,cy:s,r:a,fill:`none`,stroke:`currentColor`,strokeWidth:i,strokeDasharray:`3 4`}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`circle`,{cx:s,cy:s,r:a,fill:`none`,stroke:`var(--grayTrack)`,strokeWidth:i}),(0,F.jsx)(`circle`,{cx:s,cy:s,r:a,fill:`none`,stroke:`currentColor`,strokeWidth:i,strokeLinecap:`round`,strokeDasharray:`${o*e/100} ${o}`,transform:`rotate(-90 ${s} ${s})`})]})}),(0,F.jsx)(`span`,{children:e===null?`—`:I(e)})]}),n&&(0,F.jsx)(`span`,{className:`mr-lbl`,children:n})]})}function bn({n:e,unit:t=``,period:n=`week`}){if(e==null)return null;let r=e>0?`text-good-ink`:e<0?`text-critical`:`text-mute`,i=`⁨`+_n(e,t)+`⁩`,a=C(x(n===`previous28`?`%s vs previous 28 days`:`%s this week`,`monoranks`),i);return(0,F.jsx)(`span`,{className:P(`text-[12px] font-medium`,r),children:a})}function xn({series:e}){if(e.length<2)return null;let t=Math.max(1,...e),n=e.map((n,r)=>[Math.round(200*r/(e.length-1)*10)/10,Math.round((34-30*n/t)*10)/10]),r=`M`+n.map(e=>e.join(` `)).join(` L`),i=n[n.length-1];return(0,F.jsxs)(`svg`,{className:`block h-[38px] w-full`,viewBox:`0 0 200 38`,preserveAspectRatio:`none`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`${r} L200 38 L0 38 Z`,fill:`var(--accentSoft)`}),(0,F.jsx)(`path`,{d:r,fill:`none`,stroke:`var(--accent)`,strokeWidth:`1.5`}),(0,F.jsx)(`circle`,{cx:i[0],cy:i[1],r:`2.5`,fill:`var(--accent)`})]})}var Sn=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,Cn=Fe,wn=(e,t)=>n=>{if(t?.variants==null)return Cn(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Sn(t)||Sn(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return Cn(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Tn=wn(`inline-flex shrink-0 items-center whitespace-nowrap font-medium`,{variants:{variant:{badge:`h-5 gap-[5px] rounded-sm bg-surface2 px-[7px] text-[11px] text-ink2`,warn:`h-5 gap-[5px] rounded-sm bg-surface2 px-[7px] text-[11px] text-warn`,pill:`h-[22px] gap-[6px] rounded-full bg-surface2 ps-[7px] pe-2 text-[12px] text-ink`}},defaultVariants:{variant:`badge`}});function L({className:e,variant:t,...n}){return(0,F.jsx)(`span`,{"data-slot":`badge`,className:P(Tn({variant:t}),e),...n})}function En({tone:e=`muted`}){let t={good:`bg-good`,warn:`bg-warn`,critical:`bg-critical`,muted:`bg-mute`}[e];return(0,F.jsx)(`span`,{className:P(`inline-block h-2 w-2 shrink-0 rounded-full`,t)})}var Dn=Object.defineProperty,On=(e,t)=>Dn(e,`name`,{value:t,configurable:!0});function kn(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}On(kn,`setRef`);function An(...e){return t=>{let n=!1,r=e.map(e=>{let r=kn(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;tMn(e,`name`,{value:t,configurable:!0});function Pn(e){let t=_.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,s=[];Un(r)&&typeof qn==`function`&&(r=qn(r._payload)),_.Children.forEach(r,e=>{if(Vn(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;Un(n)&&typeof qn==`function`&&(n=qn(n._payload)),a=Rn(t,n),s.push(a?.props?.children)}else s.push(e)}),a?a=_.cloneElement(a,void 0,s):!o&&_.Children.count(r)===1&&_.isValidElement(r)&&(a=r);let c=a?Bn(a):void 0,l=jn(n,c);if(!a){if(r||r===0)throw Error(o?Kn(e):Gn(e));return r}let u=zn(i,a.props??{});return a.type!==_.Fragment&&(u.ref=n?l:c),_.cloneElement(a,u)});return t.displayName=`${e}.Slot`,t}Nn(Pn,`createSlot`);var Fn=Pn(`Slot`),In=Symbol.for(`radix.slottable`);function Ln(e){let t=Nn(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=In,t}Nn(Ln,`createSlottable`);var Rn=Nn((e,t)=>{if(`child`in e.props){let t=e.props.child;return _.isValidElement(t)?_.cloneElement(t,void 0,e.props.children(t.props.children)):null}return _.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function zn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}Nn(zn,`mergeProps`);function Bn(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}Nn(Bn,`getElementRef`);function Vn(e){return _.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===In}Nn(Vn,`isSlottable`);var Hn=Symbol.for(`react.lazy`);function Un(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Hn&&`_payload`in e&&Wn(e._payload)}Nn(Un,`isLazyComponent`);function Wn(e){return typeof e==`object`&&!!e&&`then`in e}Nn(Wn,`isPromiseLike`);var Gn=Nn(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),Kn=Nn(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),qn=_.use,Jn=wn(`inline-flex items-center justify-center gap-[7px] whitespace-nowrap rounded-md border text-[13px] font-medium leading-none transition-[background-color,border-color,color,opacity] duration-100 disabled:pointer-events-none disabled:opacity-55 [&_svg]:pointer-events-none [&_svg]:shrink-0 cursor-pointer`,{variants:{variant:{default:`border-border bg-surface text-ink hover:bg-surface2 hover:border-line`,primary:`border-primary bg-primary text-primary-foreground hover:opacity-85`,accent:`border-brand bg-brand text-white hover:opacity-85`,ghost:`border-transparent bg-transparent text-ink2 hover:bg-surface3 hover:text-ink`,danger:`border-critical/50 bg-surface text-critical hover:border-critical hover:bg-critical hover:text-white`,dangerSolid:`border-critical bg-critical text-white hover:opacity-85`},size:{default:`h-[34px] px-3`,sm:`h-7 px-[10px] text-[12px]`,icon:`h-8 w-8 px-0`}},defaultVariants:{variant:`default`,size:`default`}});function R({className:e,variant:t,size:n,asChild:r=!1,children:i,...a}){let o=a[`aria-busy`]===!0||a[`aria-busy`]===`true`,s=P(Jn({variant:t,size:n,className:e}),o&&`pointer-events-none opacity-85`);return r?(0,F.jsx)(Fn,{"data-slot":`button`,className:s,...a,children:i}):(0,F.jsxs)(`button`,{"data-slot":`button`,className:s,...a,children:[o&&(0,F.jsx)(`span`,{className:`spin`,"aria-hidden":`true`}),i]})}function Yn({rows:e,onUndo:t,busy:n}){if(!e.length)return(0,F.jsx)(gn,{title:x(`No changes yet`,`monoranks`),text:x(`Fixes you approve in MonoRanks show up here, each with Undo.`,`monoranks`)});let r=`whitespace-nowrap border-b border-border px-[12px] py-[11px] text-start text-[12px] font-medium text-mute`,i=`border-b border-grid px-[12px] py-3 align-middle text-[12px] group-last:border-b-0`,a=`overflow-hidden text-ellipsis whitespace-nowrap text-start`;return(0,F.jsx)(`div`,{className:`rounded-b-xl`,children:(0,F.jsxs)(`table`,{className:`w-full table-fixed border-collapse`,children:[(0,F.jsxs)(`colgroup`,{children:[(0,F.jsx)(`col`,{className:`w-[15%] min-w-[130px]`}),(0,F.jsx)(`col`,{className:`w-[12%]`}),(0,F.jsx)(`col`,{className:`w-[12%]`}),(0,F.jsx)(`col`,{className:`w-[18%]`}),(0,F.jsx)(`col`,{}),(0,F.jsx)(`col`,{}),(0,F.jsx)(`col`,{className:`w-[96px]`})]}),(0,F.jsx)(`thead`,{children:(0,F.jsxs)(`tr`,{children:[(0,F.jsx)(`th`,{className:r,children:x(`When`,`monoranks`)}),(0,F.jsx)(`th`,{className:r,children:x(`Who`,`monoranks`)}),(0,F.jsx)(`th`,{className:r,children:x(`Field`,`monoranks`)}),(0,F.jsx)(`th`,{className:r,children:x(`Where`,`monoranks`)}),(0,F.jsx)(`th`,{className:r,children:x(`Before`,`monoranks`)}),(0,F.jsx)(`th`,{className:r,children:x(`After`,`monoranks`)}),(0,F.jsx)(`th`,{className:r})]})}),(0,F.jsx)(`tbody`,{children:e.map(e=>(0,F.jsxs)(`tr`,{className:`group hover:[&>td]:bg-surface2`,children:[(0,F.jsx)(`td`,{className:`${i} tabular-nums`,children:(0,F.jsx)(`div`,{className:a,title:e.when,children:e.when})}),(0,F.jsx)(`td`,{className:i,children:(0,F.jsx)(`div`,{className:a,title:e.actor,children:e.actor})}),(0,F.jsx)(`td`,{className:i,children:(0,F.jsx)(L,{className:`max-w-full overflow-hidden text-ellipsis whitespace-nowrap`,title:e.fieldLabel,children:e.fieldLabel})}),(0,F.jsx)(`td`,{className:i,children:(0,F.jsx)(`div`,{className:a,dir:`auto`,title:e.where,children:e.where})}),(0,F.jsx)(`td`,{className:`${i} text-mute`,children:(0,F.jsx)(`div`,{className:a,dir:`auto`,title:e.previous,children:e.previous||`—`})}),(0,F.jsx)(`td`,{className:i,children:(0,F.jsx)(`div`,{className:a,dir:`auto`,title:e.value,children:e.value||`—`})}),(0,F.jsx)(`td`,{className:`${i} text-end`,children:(0,F.jsxs)(R,{variant:`ghost`,size:`sm`,disabled:n!==null,"aria-busy":n===e.index,onClick:()=>t(e),children:[n!==e.index&&(0,F.jsx)(Ne,{size:13,className:`mr-flip`}),x(`Undo`,`monoranks`)]})})]},e.index))})]})})}function Xn({className:e,...t}){return(0,F.jsx)(`div`,{"data-slot":`card`,className:P(`min-w-0 rounded-xl border border-border bg-surface`,e),...t})}function Zn({className:e,...t}){return(0,F.jsx)(`div`,{"data-slot":`card-header`,className:P(`flex flex-wrap items-center justify-between gap-3 px-[22px] pt-[18px]`,e),...t})}function Qn({className:e,...t}){return(0,F.jsx)(`h2`,{"data-slot":`card-title`,className:P(`inline-flex items-center gap-2 text-[15px] font-semibold text-ink`,e),...t})}function $n({className:e,...t}){return(0,F.jsx)(`div`,{"data-slot":`card-body`,className:P(`px-[22px] pb-[22px] pt-4`,e),...t})}function er({text:e,children:t,className:n,align:r=`center`}){let i=_.useId(),[a,o]=_.useState(!1),s=()=>o(!0),c=()=>o(!1),l=t?_.cloneElement(t,{"aria-describedby":i,tabIndex:t.props.tabIndex??0}):(0,F.jsx)(`button`,{type:`button`,"aria-describedby":i,"aria-label":x(`More info`,`monoranks`),className:`inline-flex h-4 w-4 items-center justify-center rounded-full text-mute hover:text-ink focus-visible:text-ink focus-visible:outline-2 focus-visible:outline-brand`,children:(0,F.jsx)(O,{size:13,"aria-hidden":`true`})});return(0,F.jsxs)(`span`,{className:P(`relative inline-flex items-center`,n),onMouseEnter:s,onMouseLeave:c,onFocus:s,onBlur:c,onKeyDown:e=>{e.key===`Escape`&&c()},children:[l,(0,F.jsx)(`span`,{id:i,role:`tooltip`,className:P(`pointer-events-none absolute bottom-[calc(100%+6px)] z-50 w-max max-w-[260px] rounded-md bg-ink px-2.5 py-1.5 text-start text-[12px] font-normal leading-snug text-page shadow-md`,{center:`left-1/2 -translate-x-1/2`,start:`start-0`,end:`end-0`}[r],a?`visible opacity-100`:`invisible opacity-0`),children:e})]})}var tr={target:`_blank`,rel:`noopener`};function nr(){let[e,t]=(0,_.useState)(null),[n,r]=(0,_.useState)(!1);if((0,_.useEffect)(()=>{w.grow().then(t).catch(()=>r(!0))},[]),n)return null;if(!e)return(0,F.jsx)(`section`,{"aria-label":x(`What to do next`,`monoranks`),"aria-busy":`true`,className:`grid grid-cols-2 gap-5 max-[960px]:grid-cols-1`,children:[0,1,2,3].map(e=>(0,F.jsx)(Xn,{className:`h-[180px] animate-pulse bg-surface2`},e))});if(!e.connected)return null;let i=e.scope_url??``;return(0,F.jsxs)(`section`,{"aria-labelledby":`mr-grow-title`,className:`flex flex-col gap-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[(0,F.jsx)(`h2`,{id:`mr-grow-title`,className:`text-[15px] font-semibold text-ink`,children:x(`What to do next`,`monoranks`)}),e.fetched&&(0,F.jsx)(`span`,{className:`text-[11px] text-mute`,children:C(x(`Updated %s`,`monoranks`),e.fetched)})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-2 items-start gap-5 max-[960px]:grid-cols-1`,children:[(0,F.jsx)(ar,{d:e.outreach,scope:i}),(0,F.jsx)(or,{d:e.backlinks,scope:i}),(0,F.jsx)(sr,{d:e.competitors,scope:i}),(0,F.jsx)(cr,{d:e.keywords,scope:i})]}),(0,F.jsx)(lr,{d:e.report})]})}function rr({state:e,scope:t,empty:n}){let r=n;return e===`no_access`?r=(0,F.jsxs)(F.Fragment,{children:[x(`The MonoRanks key of this site cannot read this yet. Allow it under Integrations in MonoRanks, or connect again.`,`monoranks`),` `,t&&(0,F.jsx)(`a`,{className:`font-medium text-brand-ink hover:underline`,href:ln(t,`grow-scope`),...tr,children:x(`Open Integrations`,`monoranks`)})]}):e===`off`?r=x(`Not available in your MonoRanks yet.`,`monoranks`):e===`error`?r=x(`MonoRanks could not be reached. The plugin tries again within the hour.`,`monoranks`):e===`pending`&&(r=x(`Still loading. Reload this screen in a minute.`,`monoranks`)),(0,F.jsx)(`p`,{className:`m-0 text-[12px] text-ink2`,children:r})}function ir({title:e,badge:t,link:n,linkText:r,children:i}){return(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsxs)(Qn,{children:[e,t]}),n&&(0,F.jsx)(R,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,F.jsxs)(`a`,{href:ln(n,`grow-card`),...tr,children:[r,(0,F.jsxs)(`span`,{className:`sr-only`,children:[` `,x(`(opens in a new tab)`,`monoranks`)]})]})})]}),(0,F.jsx)($n,{className:`flex flex-col gap-3 pt-3`,children:i})]})}function ar({d:e,scope:t}){let n=e?.state===`ok`?e:null;return(0,F.jsx)(ir,{title:x(`Outreach`,`monoranks`),badge:n&&n.to_contact>0?(0,F.jsx)(L,{children:C(S(`%s to contact`,`%s to contact`,n.to_contact,`monoranks`),I(n.to_contact))}):void 0,link:n?.link||e?.link,linkText:x(`All targets`,`monoranks`),children:n?(0,F.jsxs)(F.Fragment,{children:[n.top.length>0?(0,F.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-2.5 p-0`,children:n.top.map(e=>(0,F.jsxs)(`li`,{className:`grid gap-0.5`,children:[(0,F.jsxs)(`a`,{className:`truncate text-[13px] font-semibold text-ink hover:underline`,href:e.url,...tr,children:[(0,F.jsx)(`bdi`,{children:e.title}),(0,F.jsxs)(`span`,{className:`sr-only`,children:[` `,x(`(opens in a new tab)`,`monoranks`)]})]}),(0,F.jsxs)(`span`,{className:`text-[12px] text-ink2`,children:[e.why,e.domain&&(0,F.jsxs)(F.Fragment,{children:[` · `,(0,F.jsx)(`bdi`,{className:`text-mute`,children:e.domain})]})]})]},e.url))}):(0,F.jsx)(rr,{state:`empty`,scope:t,empty:x(`Every target is contacted. MonoRanks looks for new ones each week.`,`monoranks`)}),(0,F.jsx)(`p`,{className:`m-0 text-[11px] text-mute`,children:x(`Sites worth asking for a link or a mention. MonoRanks never sends email; you reach out and set the status there.`,`monoranks`)})]}):(0,F.jsx)(rr,{state:e?.state??`pending`,scope:t,empty:x(`No outreach targets yet. MonoRanks looks for pages worth a link each week.`,`monoranks`)})})}function or({d:e,scope:t}){let n=e?.state===`ok`?e:null;return(0,F.jsx)(ir,{title:x(`Backlinks`,`monoranks`),link:n?.link||e?.link,linkText:x(`All backlinks`,`monoranks`),children:n?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-5 gap-y-1`,children:[(0,F.jsxs)(`span`,{className:`text-2xl font-semibold leading-none tabular-nums text-good-ink`,children:[`+`,I(n.new)]}),(0,F.jsxs)(`span`,{className:`text-2xl font-semibold leading-none tabular-nums text-critical`,children:[`−`,I(n.lost)]}),(0,F.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`websites linking to you, won and lost in 28 days`,`monoranks`)})]}),(0,F.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,F.jsx)(L,{variant:`pill`,children:C(S(`%s website links to you`,`%s websites link to you`,n.domains,`monoranks`),I(n.domains))}),n.review>0&&(0,F.jsx)(L,{variant:`pill`,children:C(S(`%s to review for spam`,`%s to review for spam`,n.review,`monoranks`),I(n.review))})]}),n.top.length>0&&(0,F.jsxs)(`div`,{className:`grid gap-1`,children:[(0,F.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Newest strong links`,`monoranks`)}),(0,F.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-3 gap-y-1 p-0 text-[12px]`,children:n.top.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`bdi`,{children:e.domain}),e.rank!==null&&(0,F.jsxs)(`span`,{className:`text-mute`,children:[` · `,C(x(`strength %s`,`monoranks`),I(e.rank))]})]},e.domain))})]})]}):(0,F.jsx)(rr,{state:e?.state??`pending`,scope:t,empty:x(`No backlink data yet. MonoRanks refreshes it weekly.`,`monoranks`)})})}function sr({d:e,scope:t}){let n=e?.state===`ok`?e:null;return(0,F.jsx)(ir,{title:x(`Competitors`,`monoranks`),badge:n&&n.gaps?(0,F.jsx)(L,{children:C(S(`%s keyword gap`,`%s keyword gaps`,n.gaps,`monoranks`),I(n.gaps))}):void 0,link:n?.link||e?.link,linkText:x(`All competitors`,`monoranks`),children:n?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-2 p-0`,children:n.top.map(e=>(0,F.jsxs)(`li`,{className:`grid gap-0.5`,children:[(0,F.jsxs)(`span`,{className:`text-[13px] font-semibold`,children:[(0,F.jsx)(`bdi`,{children:e.domain}),!e.picked&&(0,F.jsx)(`span`,{className:`ms-1.5 text-[11px] font-normal text-mute`,children:x(`suggested`,`monoranks`)})]}),(0,F.jsx)(`span`,{className:`text-[12px] text-ink2`,children:e.reason||C(S(`%1$s shared keyword, %2$s where they rank higher`,`%1$s shared keywords, %2$s where they rank higher`,e.shared,`monoranks`),I(e.shared),I(e.above_us))})]},e.domain))}),n.keywords.length>0&&(0,F.jsxs)(`div`,{className:`grid gap-1`,children:[(0,F.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`They rank for these, you do not`,`monoranks`)}),(0,F.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-1.5 p-0`,children:n.keywords.map(e=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(`bdi`,{children:e.keyword}),e.volume!==null&&(0,F.jsx)(`span`,{className:`tabular-nums text-ink2`,children:C(x(`%s/mo`,`monoranks`),I(e.volume))})]})},e.keyword))})]})]}):(0,F.jsx)(rr,{state:e?.state??`pending`,scope:t,empty:x(`No competitors yet. Pick some in MonoRanks to see the keywords they win.`,`monoranks`)})})}function cr({d:e,scope:t}){let n=e?.state===`ok`?e:null,r=({k:e,up:t})=>(0,F.jsxs)(`li`,{className:`flex items-baseline justify-between gap-3 text-[12px]`,children:[(0,F.jsx)(`bdi`,{className:`min-w-0 truncate`,children:e.keyword}),(0,F.jsxs)(`span`,{className:`shrink-0 tabular-nums ${t?`text-good-ink`:`text-critical`}`,children:[(0,F.jsxs)(`span`,{className:`sr-only`,children:[x(t?`up`:`down`,`monoranks`),` `]}),C(x(`%1$s → %2$s`,`monoranks`),I(e.from),I(e.to))]})]});return(0,F.jsx)(ir,{title:x(`Keyword movers this week`,`monoranks`),link:n?.link||e?.link,linkText:x(`All keywords`,`monoranks`),children:n?n.up.length||n.down.length?(0,F.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 max-[600px]:grid-cols-1`,children:[(0,F.jsxs)(`div`,{className:`grid content-start gap-1`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Up`,`monoranks`)}),n.up.length?(0,F.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:n.up.map(e=>(0,F.jsx)(r,{k:e,up:!0},e.keyword))}):(0,F.jsx)(`span`,{className:`text-[12px] text-mute`,children:`—`})]}),(0,F.jsxs)(`div`,{className:`grid content-start gap-1`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Down`,`monoranks`)}),n.down.length?(0,F.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:n.down.map(e=>(0,F.jsx)(r,{k:e,up:!1},e.keyword))}):(0,F.jsx)(`span`,{className:`text-[12px] text-mute`,children:`—`})]})]}):(0,F.jsx)(`p`,{className:`m-0 text-[12px] text-ink2`,children:C(S(`Your %s tracked keyword held its place this week.`,`Your %s tracked keywords held their places this week.`,n.tracked,`monoranks`),I(n.tracked))}):(0,F.jsx)(rr,{state:e?.state??`pending`,scope:t,empty:x(`No tracked keywords yet. Track some in MonoRanks to see them move here.`,`monoranks`)})})}function lr({d:e}){if(!e||e.state!==`ok`&&e.state!==`empty`)return null;let t=e.state===`ok`?e.emails??[]:[],n=e.state===`ok`?e.reports??[]:[];return(0,F.jsx)(Xn,{className:`grid gap-3 px-5 py-3.5`,children:e.state===`empty`?(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,F.jsx)(`span`,{className:`text-[13px] text-ink2`,children:x(`No reports yet. Create a website report, a client report or a weekly email in MonoRanks to share progress.`,`monoranks`)}),e.all_link&&(0,F.jsx)(R,{size:`sm`,variant:`ghost`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(e.all_link,`reports`),...tr,children:x(`Open reports`,`monoranks`)})})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,F.jsx)(`b`,{className:`text-[13px] font-semibold`,children:x(`Reports`,`monoranks`)}),e.all_link&&(0,F.jsx)(R,{size:`sm`,variant:`ghost`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(e.all_link,`reports`),...tr,children:x(`Open reports`,`monoranks`)})})]}),(0,F.jsxs)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:[t.map((e,t)=>(0,F.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 border-b border-grid py-2 last:border-b-0`,children:[(0,F.jsxs)(`span`,{className:`text-[13px]`,children:[(0,F.jsx)(`b`,{className:`font-semibold`,children:(0,F.jsx)(`bdi`,{children:e.name})}),` `,(0,F.jsxs)(`span`,{className:`text-mute`,children:[`· `,x(`Weekly email`,`monoranks`)]})]}),(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[12px] text-ink2`,children:[e.enabled&&e.next_label?(0,F.jsx)(`span`,{children:C(x(`Next send %s`,`monoranks`),e.next_label)}):null,(0,F.jsx)(`span`,{children:C(S(`%s recipient`,`%s recipients`,e.recipients,`monoranks`),I(e.recipients))}),(0,F.jsx)(L,{children:e.enabled?x(`On`,`monoranks`):x(`Off`,`monoranks`)})]})]},`e${t}`)),n.map((e,t)=>(0,F.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-x-3 gap-y-1 border-b border-grid py-2 last:border-b-0`,children:[(0,F.jsxs)(`span`,{className:`text-[13px]`,children:[(0,F.jsx)(`b`,{className:`font-semibold`,children:(0,F.jsx)(`bdi`,{children:e.scope||e.title})}),` `,(0,F.jsxs)(`span`,{className:`text-mute`,children:[`· `,e.client?x(`Client report`,`monoranks`):x(`Report`,`monoranks`),e.when?` · ${e.when}`:``]})]}),e.link&&(0,F.jsx)(R,{size:`sm`,asChild:!0,children:(0,F.jsxs)(`a`,{href:ln(e.link,`latest-report`),...tr,children:[x(`Open report`,`monoranks`),(0,F.jsxs)(`span`,{className:`sr-only`,children:[` `,x(`(opens in a new tab)`,`monoranks`)]})]})})]},`r${t}`))]})]})})}var ur=`whitespace-nowrap border-b border-border px-[10px] py-[11px] text-start text-[12px] font-medium text-mute`,dr=`border-b border-grid px-[10px] py-3 align-middle group-last:border-b-0`;function fr(e,t){let n=e.replace(/<[^>]+>/g,``).trim();return n.length>t?n.slice(0,t-1)+`…`:n}function pr(e){try{let t=new URL(e);return t.pathname+t.search}catch{return e}}function mr({fix:e,labels:t}){let n=e.title||(e.field===`redirect`?e.from:x(`Site`,`monoranks`)),r=e.before?fr(e.before,90):null;return(0,F.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,F.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,F.jsx)(L,{children:t[e.field]??e.field}),(0,F.jsx)(`span`,{className:`min-w-0 truncate text-[12px] text-ink2`,children:e.field===`redirect`||e.field===`ai_bots`||e.field===`llms_txt`?(0,F.jsx)(`b`,{className:`font-semibold text-ink`,children:(0,F.jsx)(`bdi`,{children:n})}):(0,F.jsx)(`bdi`,{children:C(x(`on %s`,`monoranks`),n)})})]}),e.field===`alt`&&e.image&&(0,F.jsx)(`span`,{className:`truncate text-[11px] text-mute`,children:(0,F.jsx)(`bdi`,{children:C(x(`Image: %s`,`monoranks`),e.image)})}),e.field===`content`?(0,F.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Adds one answer-first paragraph at the top. Review the before/after in MonoRanks first.`,`monoranks`)}):(0,F.jsxs)(`span`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-1.5 text-[12px]`,children:[(0,F.jsx)(`span`,{className:`text-mute`,children:r?(0,F.jsx)(`s`,{children:(0,F.jsx)(`bdi`,{children:r})}):x(`(empty)`,`monoranks`)}),(0,F.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),(0,F.jsx)(`span`,{className:`sr-only`,children:x(`changes to`,`monoranks`)}),(0,F.jsx)(`b`,{className:`font-semibold`,children:(0,F.jsx)(`bdi`,{children:fr(e.after,120)})})]}),e.note&&(0,F.jsx)(`span`,{className:`text-[11px] text-mute`,children:(0,F.jsx)(`bdi`,{children:e.note})})]})}function hr({go:e}){let t=y(),[n,r]=(0,_.useState)(null),[i,a]=(0,_.useState)(null),[o,s]=(0,_.useState)(t.notice),[c,l]=(0,_.useState)(null),[u,d]=(0,_.useState)(null);(0,_.useEffect)(()=>{w.overview().then(r).catch(e=>a(se(e,x(`Could not load the overview.`,`monoranks`))))},[]);async function f(e,t){l(e);try{let e=await t();s(e.notice),r(e.data),window.scrollTo({top:0})}catch(e){s({type:`error`,text:se(e,x(`Something went wrong. Try again.`,`monoranks`))})}finally{l(null),d(null)}}let p=n?.overview??null,m=typeof p?.to_review?.needs_value==`number`?p.to_review.needs_value:null,h=p?.to_review&&(p.to_review.total>0||(m??0)>0)&&p.to_review.review_url?p.to_review:null,g=n?p?(0,F.jsxs)(F.Fragment,{children:[x(`Weekly SEO, AEO and GEO audit of`,`monoranks`),` `,(0,F.jsx)(`code`,{children:n.host}),n.audited&&(0,F.jsxs)(F.Fragment,{children:[` · `,C(x(`last audit %s`,`monoranks`),n.audited)]}),p.pages_total>0&&(0,F.jsxs)(F.Fragment,{children:[` · `,C(x(`%1$s of %2$s published pages scored`,`monoranks`),I(p.pages_scored),I(p.pages_total))]})]}):void 0:`\xA0`,v=n?.connected?(0,F.jsx)(R,{variant:`primary`,disabled:c!==null,"aria-busy":c===`sync`,onClick:()=>f(`sync`,()=>w.sync(`overview`)),children:x(`Sync content now`,`monoranks`)}):null;return(0,F.jsxs)(fn,{section:`overview`,go:e,title:x(`Overview`,`monoranks`),description:g,actions:v,children:[(0,F.jsx)(mn,{notice:o}),i&&(0,F.jsx)(mn,{notice:{type:`error`,text:i}}),!n&&!i&&(0,F.jsx)(gr,{}),n&&(!n.connected||n.revoked)&&(0,F.jsx)(_r,{revoked:n.revoked,go:e}),n&&n.connected&&!n.revoked&&!p&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(yr,{data:n}),(0,F.jsx)(nr,{})]}),n&&p&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-4 gap-[14px] max-[960px]:grid-cols-2 max-[600px]:grid-cols-1`,children:[(0,F.jsxs)(Xn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Health score`,`monoranks`)}),(0,F.jsx)(bn,{n:p.deltas.health})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-[14px]`,children:[(0,F.jsx)(yn,{score:p.health,size:`lg`}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,F.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Technical, on-page, links, speed`,`monoranks`)}),(0,F.jsx)(`span`,{className:`text-[11px] text-mute`,children:C(S(`Site average, %s page`,`Site average, %s pages`,p.pages_scored,`monoranks`),I(p.pages_scored))})]})]})]}),(0,F.jsxs)(Xn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`AEO score`,`monoranks`)}),(0,F.jsx)(bn,{n:p.deltas.aeo})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-[14px]`,children:[(0,F.jsx)(yn,{score:p.aeo,size:`lg`}),(0,F.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,F.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Answer-first, structure, entities`,`monoranks`)}),(0,F.jsx)(`span`,{className:`text-[11px] text-mute`,children:x(`How well AI answers can use your pages`,`monoranks`)})]})]})]}),(0,F.jsxs)(Xn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Search clicks, 28 days`,`monoranks`)}),p.traffic&&(0,F.jsx)(bn,{n:p.traffic.delta_pct,unit:`%`,period:`previous28`})]}),p.traffic?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`div`,{className:`text-2xl font-semibold leading-none tabular-nums tracking-[-0.01em]`,children:I(p.traffic.clicks_28d)}),(0,F.jsx)(xn,{series:p.traffic.series}),(0,F.jsx)(`span`,{className:`text-[11px] text-mute`,children:x(`From Google Search Console, through MonoRanks`,`monoranks`)})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`div`,{className:`text-2xl font-semibold text-mute`,children:`—`}),(0,F.jsx)(`span`,{className:`text-[11px] text-mute`,children:x(`Connect Google Search Console in MonoRanks to see clicks here.`,`monoranks`)})]})]}),(0,F.jsxs)(Xn,{className:`flex flex-col gap-2.5 px-5 py-[18px]`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-ink2`,children:x(`Fixes`,`monoranks`)}),p.fixes.ready>0&&(0,F.jsx)(L,{children:C(x(`%s ready`,`monoranks`),I(p.fixes.ready))})]}),(0,F.jsxs)(`div`,{className:`text-2xl font-semibold leading-none tabular-nums tracking-[-0.01em]`,children:[I(p.fixes.applied_30d),` `,(0,F.jsx)(`span`,{className:`text-[12px] font-normal text-ink2`,children:x(`applied in 30 days`,`monoranks`)})]}),h&&h.total>0&&(0,F.jsxs)(`a`,{className:`text-[12px] font-medium text-brand-ink hover:underline`,href:ln(h.review_url,`fixes-card`),target:`_blank`,rel:`noopener`,children:[C(x(`%s waiting for your approval in MonoRanks`,`monoranks`),I(h.total)),` →`]}),(0,F.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(En,{tone:p.ai.bots_rules?`good`:`muted`}),p.ai.bots_rules?x(`AI crawler rules on`,`monoranks`):x(`No AI crawler rules`,`monoranks`)]}),(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(En,{tone:p.ai.llms_txt?`good`:`muted`}),p.ai.llms_txt?x(`llms.txt published`,`monoranks`):x(`No llms.txt`,`monoranks`)]})]})]})]}),!n.revoked&&(0,F.jsx)(nr,{}),(0,F.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,3fr)_minmax(0,2fr)] items-start gap-5 max-[960px]:grid-cols-1`,children:[(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsx)(Qn,{children:x(`Pages needing attention`,`monoranks`)}),(0,F.jsx)(R,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(n.app_url,`all-pages`),target:`_blank`,rel:`noopener`,children:x(`All pages in MonoRanks`,`monoranks`)})})]}),p.attention.length?(0,F.jsx)(`div`,{className:`overflow-x-auto rounded-b-xl pt-2`,children:(0,F.jsxs)(`table`,{className:`w-full border-collapse`,children:[(0,F.jsx)(`thead`,{children:(0,F.jsxs)(`tr`,{children:[(0,F.jsx)(`th`,{className:ur,children:x(`Page`,`monoranks`)}),(0,F.jsx)(`th`,{className:ur,children:x(`Health`,`monoranks`)}),(0,F.jsx)(`th`,{className:ur,children:x(`AEO`,`monoranks`)}),(0,F.jsx)(`th`,{className:ur,children:x(`Biggest issue`,`monoranks`)}),(0,F.jsx)(`th`,{className:ur})]})}),(0,F.jsx)(`tbody`,{children:p.attention.map(e=>(0,F.jsxs)(`tr`,{className:`group hover:[&>td]:bg-surface2`,children:[(0,F.jsx)(`td`,{className:dr,children:(0,F.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,F.jsx)(`b`,{className:`font-semibold`,children:e.title||e.url}),e.url&&(0,F.jsx)(`code`,{className:`max-w-[180px] text-[11px]`,children:pr(e.url)})]})}),(0,F.jsx)(`td`,{className:dr,children:(0,F.jsx)(yn,{score:e.health})}),(0,F.jsx)(`td`,{className:dr,children:(0,F.jsx)(yn,{score:e.aeo})}),(0,F.jsx)(`td`,{className:`${dr} text-[12px]`,children:e.issue}),(0,F.jsx)(`td`,{className:`${dr} text-end`,children:e.page_url&&(0,F.jsx)(R,{size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(e.page_url,`fix-page`),target:`_blank`,rel:`noopener`,children:x(`Fix in MonoRanks`,`monoranks`)})})})]},e.post_id+e.url))})]})}):(0,F.jsx)(gn,{title:x(`Nothing needs attention`,`monoranks`),text:x(`Every scored page is above 60. The next audit may change that.`,`monoranks`)})]}),(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsxs)(Qn,{children:[x(`Ready to apply`,`monoranks`),p.ready.length>0&&(0,F.jsx)(L,{children:I(p.ready.length)}),p.ready.length>0&&(0,F.jsx)(er,{text:x(`Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days.`,`monoranks`)})]}),p.ready.length>1&&(0,F.jsx)(R,{variant:`primary`,size:`sm`,disabled:c!==null,"aria-busy":c===`all`,onClick:()=>f(`all`,()=>w.apply(`all`)),children:x(`Apply all`,`monoranks`)})]}),(0,F.jsxs)($n,{className:`flex flex-col pt-1.5`,children:[p.ready.length===0&&h&&(0,F.jsxs)(`div`,{className:`flex flex-col gap-3 py-2`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[m===null?(0,F.jsx)(`b`,{className:`text-[13px] font-semibold`,children:C(x(`%s fixes are ready for your approval`,`monoranks`),I(h.total))}):(0,F.jsx)(`b`,{className:`text-[13px] font-semibold`,children:[h.total>0&&C(S(`%s ready to apply`,`%s ready to apply`,h.total,`monoranks`),I(h.total)),m>0&&C(S(`%s needs a value in MonoRanks`,`%s need a value in MonoRanks`,m,`monoranks`),I(m))].filter(Boolean).join(` · `)}),(0,F.jsx)(er,{text:x(m!==null&&m>0?`Type a value or draft one with AI in MonoRanks, approve it, and it is written here, with undo.`:`Approve them in MonoRanks and they are written here, with undo.`,`monoranks`)})]}),(0,F.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Object.entries(h.by_field).sort((e,t)=>t[1]-e[1]).map(([e,t])=>(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(`bdi`,{children:n.labels[e]??e}),(0,F.jsx)(`span`,{className:`tabular-nums text-ink2`,children:I(t)})]},e))}),(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{variant:`primary`,size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(h.review_url,`review-fixes`),target:`_blank`,rel:`noopener`,children:x(`Review in MonoRanks`,`monoranks`)})})})]}),p.ready.length===0&&!h&&(0,F.jsx)(gn,{title:x(`No fixes waiting`,`monoranks`),text:x(`Fixes you approve in MonoRanks appear here, ready to write into WordPress.`,`monoranks`)}),p.ready.map(e=>(0,F.jsxs)(`div`,{className:`flex items-start gap-3 border-b border-grid py-3 last-of-type:border-b-0`,children:[(0,F.jsx)(mr,{fix:e,labels:n.labels}),e.field===`content`&&e.page_url?(0,F.jsx)(R,{size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(e.page_url,`review-fix`),target:`_blank`,rel:`noopener`,children:x(`Review`,`monoranks`)})}):(0,F.jsx)(R,{size:`sm`,disabled:c!==null,"aria-busy":c===e.id,onClick:()=>f(e.id,()=>w.apply(e.id)),children:x(`Apply`,`monoranks`)})]},e.id))]})]}),(p.needs_review??[]).length>0&&(0,F.jsxs)(Xn,{children:[(0,F.jsx)(Zn,{children:(0,F.jsxs)(Qn,{children:[x(`Needs review in MonoRanks`,`monoranks`),(0,F.jsx)(L,{children:I(p.needs_review.length)}),(0,F.jsx)(er,{text:x(`These changed in WordPress after they were reviewed, so they are not applied from here. Review them again in MonoRanks.`,`monoranks`)})]})}),(0,F.jsx)($n,{className:`flex flex-col pt-1.5`,children:p.needs_review.map(e=>(0,F.jsxs)(`div`,{className:`flex items-start gap-3 border-b border-grid py-3 last-of-type:border-b-0`,children:[(0,F.jsx)(mr,{fix:e,labels:n.labels}),(0,F.jsx)(R,{size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(e.page_url||p.site_url,`review-fix`),target:`_blank`,rel:`noopener`,children:x(`Review in MonoRanks`,`monoranks`)})})]},e.id))})]})]}),(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsx)(Qn,{children:x(`Recent changes`,`monoranks`)}),(0,F.jsx)(R,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:t.urls.settings,onClick:t=>{t.preventDefault(),e(`settings`)},children:x(`All changes`,`monoranks`)})})]}),(0,F.jsx)(`div`,{className:`pt-2`,children:(0,F.jsx)(Yn,{rows:n.log,busy:u,onUndo:e=>{d(e.index),f(`undo`,()=>w.undo(e,`overview`))}})})]})]})]})}function gr(){return(0,F.jsx)(`div`,{className:`grid grid-cols-4 gap-[14px] max-[960px]:grid-cols-2 max-[600px]:grid-cols-1`,children:[0,1,2,3].map(e=>(0,F.jsx)(Xn,{className:`h-[150px] animate-pulse bg-surface2`},e))})}function _r({revoked:e,go:t}){let n=y();return(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsx)(Qn,{children:x(e?`Connect MonoRanks again`:`Connect MonoRanks`,`monoranks`)}),(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(En,{tone:e?`critical`:`muted`}),x(e?`Key revoked`:`Not connected`,`monoranks`)]})]}),(0,F.jsxs)($n,{className:`flex flex-col gap-4`,children:[(0,F.jsxs)(vr,{n:1,children:[(0,F.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Connect to MonoRanks`,`monoranks`)}),(0,F.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Sign in and approve. Takes a minute.`,`monoranks`)}),(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{variant:`primary`,size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(n.urls.connect,`connect-step`),target:`_blank`,rel:`noopener`,children:x(`Connect`,`monoranks`)})})})]}),(0,F.jsxs)(vr,{n:2,later:!0,children:[(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,F.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Or paste a connector key`,`monoranks`)}),(0,F.jsx)(er,{text:x(`Use this when your host blocks Application Passwords.`,`monoranks`)})]}),(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:n.urls.settings,onClick:e=>{e.preventDefault(),t(`settings`)},children:x(`Open settings`,`monoranks`)})})})]}),(0,F.jsx)(vr,{n:3,later:!0,children:(0,F.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`See scores here and in your Posts list`,`monoranks`)})})]})]})}function vr({n:e,later:t,children:n}){return(0,F.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,F.jsx)(`span`,{className:`flex h-[22px] w-[22px] shrink-0 items-center justify-center rounded-full text-[12px] font-semibold ${t?`bg-surface3 text-ink2`:`bg-ink text-page`}`,children:e}),(0,F.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:n})]})}function yr({data:e}){let t=e.status,[n,r]=t===`unsupported`?[x(`Not shared yet`,`monoranks`),x(`This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow.`,`monoranks`)]:t===`error`?[x(`MonoRanks not reached`,`monoranks`),x(`MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen.`,`monoranks`)]:[x(`Not scored yet`,`monoranks`),x(`MonoRanks has not scored this site yet. Scores appear here and in the Posts list after the first weekly audit.`,`monoranks`)];return(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsx)(Qn,{children:x(`Waiting for the first audit`,`monoranks`)}),(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(En,{tone:`good`}),x(`Connected`,`monoranks`)]})]}),(0,F.jsxs)($n,{className:`flex flex-col gap-4`,children:[(0,F.jsx)(hn,{rows:[[x(`Content`,`monoranks`),e.last_sent?C(x(`%1$s published items sent %2$s`,`monoranks`),I(e.items),e.last_sent):x(`Not sent yet. Use "Sync content now" above.`,`monoranks`)],[x(`Audit results`,`monoranks`),(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[n,(0,F.jsx)(er,{text:e.fetched?(0,F.jsxs)(F.Fragment,{children:[r,` · `,C(x(`checked %s`,`monoranks`),e.fetched)]}):r})]})]]}),(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(e.app_url,`open-audit`),target:`_blank`,rel:`noopener`,children:x(`Open the audit in MonoRanks`,`monoranks`)})})})]})]})}function br({className:e,type:t,...n}){return(0,F.jsx)(`input`,{type:t,"data-slot":`input`,className:P(`flex h-10 w-full max-w-[440px] rounded-lg border border-input bg-surface px-[14px] text-[13px] text-ink outline-none placeholder:text-mute focus:border-brand disabled:opacity-55`,e),...n})}function xr({go:e}){let t=y(),[n,r]=(0,_.useState)(null),[i,a]=(0,_.useState)(null),[o,s]=(0,_.useState)(t.notice),[c,l]=(0,_.useState)(null),[u,d]=(0,_.useState)(null),[f,p]=(0,_.useState)(!1),[m,h]=(0,_.useState)(!1);(0,_.useEffect)(()=>{w.settings().then(e=>{r(e),p(e.revoked)}).catch(e=>a(se(e,x(`Could not load the settings.`,`monoranks`))))},[]);let[g,v]=(0,_.useState)(null);(0,_.useEffect)(()=>{if(g===null||n?.connected)return;let e=!1,t=()=>{if(!(e||document.visibilityState!==`visible`)){if(Date.now()-g>6e5){v(null);return}w.settings().then(t=>{!e&&t.connected&&(r(t),p(!1),v(null))}).catch(()=>{})}},i=window.setInterval(t,4e3);return document.addEventListener(`visibilitychange`,t),()=>{e=!0,window.clearInterval(i),document.removeEventListener(`visibilitychange`,t)}},[g,n?.connected]);async function b(e,t){l(e);try{let e=await t();s(e.notice),r(e.data),window.scrollTo({top:0})}catch(e){s({type:`error`,text:se(e,x(`Something went wrong. Try again.`,`monoranks`))})}finally{l(null),d(null)}}let ee=!!n?.connected,te=!!n?.revoked;return(0,F.jsxs)(fn,{section:`settings`,go:e,title:x(`Settings`,`monoranks`),children:[(0,F.jsx)(mn,{notice:o}),i&&(0,F.jsx)(mn,{notice:{type:`error`,text:i}}),!n&&!i&&(0,F.jsx)(Xn,{className:`h-[260px] animate-pulse bg-surface2`}),n&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,F.jsx)(`span`,{className:`inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-[9px] bg-surface2 [&_svg]:h-5 [&_svg]:w-5`,"aria-hidden":`true`,children:(0,F.jsx)(un,{which:`mark`})}),(0,F.jsx)(Qn,{children:x(`Connection`,`monoranks`)})]}),ee?(0,F.jsx)(er,{align:`end`,text:x(te?`MonoRanks no longer accepts this key. Connect again from MonoRanks or paste a new key below.`:`Sending published content to MonoRanks. Nothing else leaves this site.`,`monoranks`),children:(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(En,{tone:te?`critical`:`good`}),x(te?`Key revoked`:`Connected`,`monoranks`)]})}):(0,F.jsxs)(L,{variant:`pill`,children:[(0,F.jsx)(En,{tone:`muted`}),x(`Not connected`,`monoranks`)]})]}),(0,F.jsx)($n,{className:`flex flex-col gap-4`,children:ee?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(hn,{rows:[[x(`Connector key`,`monoranks`),(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`code`,{children:n.key_hint}),(0,F.jsx)(er,{text:n.key_via})]})],[x(`Last sync`,`monoranks`),(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[n.last_sent_date?(0,F.jsx)(er,{text:n.last_sent_date,children:(0,F.jsx)(`span`,{className:`tabular-nums`,children:n.last_sent_short})}):(0,F.jsx)(`span`,{className:`tabular-nums`,children:n.last_sent_short}),n.sending&&(0,F.jsx)(L,{children:C(x(`sending, batch %1$s of %2$s`,`monoranks`),I(n.sending.page),I(Math.max(1,n.sending.pages)))}),n.items>0&&(0,F.jsx)(L,{children:C(S(`%s published item`,`%s published items`,n.items,`monoranks`),I(n.items))}),n.last_error&&(0,F.jsx)(L,{variant:`warn`,children:n.last_error})]})],...n.next_audit?[[x(`Next audit`,`monoranks`),n.next_audit]]:[],[x(`Fixes written with`,`monoranks`),(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[x(`App password`,`monoranks`),(0,F.jsx)(er,{text:x(`Fixes are written with the "MonoRanks" Application Password. Revoke it in your profile to stop writes.`,`monoranks`)}),(0,F.jsx)(`a`,{href:n.profile_url,children:x(`Revoke`,`monoranks`)})]})],[x(`Works with`,`monoranks`),n.seo_plugin&&!n.seo_supported?(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(L,{variant:`warn`,children:C(x(`%s detected`,`monoranks`),n.seo_plugin)}),(0,F.jsx)(er,{text:C(x(`MonoRanks cannot write titles, descriptions, canonicals or noindex into %s yet, so those fixes are refused`,`monoranks`),n.seo_plugin)})]}):n.seo_plugin?(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(L,{children:C(x(`%s detected`,`monoranks`),n.seo_plugin)}),(0,F.jsx)(er,{text:C(x(`titles and descriptions go into the fields %s reads`,`monoranks`),n.seo_plugin)})]}):(0,F.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(L,{children:x(`No SEO plugin`,`monoranks`)}),(0,F.jsx)(er,{text:x(`MonoRanks prints the approved title, description, canonical and noindex tags itself`,`monoranks`)})]})]]}),(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(R,{variant:`primary`,disabled:c!==null,"aria-busy":c===`sync`,onClick:()=>b(`sync`,()=>w.sync(`settings`)),children:x(`Send content now`,`monoranks`)}),(0,F.jsx)(er,{text:x(`Disconnect stops sending. Fixes already applied stay.`,`monoranks`),children:(0,F.jsx)(R,{disabled:c!==null,"aria-busy":c===`disconnect`,onClick:()=>b(`disconnect`,()=>w.disconnect()),children:x(`Disconnect`,`monoranks`)})})]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(vr,{n:1,children:[(0,F.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Connect to MonoRanks`,`monoranks`)}),(0,F.jsx)(`span`,{className:`text-[12px] text-ink2`,children:x(`Sign in and approve. Takes a minute.`,`monoranks`)}),(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{variant:`primary`,size:`sm`,asChild:!0,children:(0,F.jsx)(`a`,{href:ln(n.connect_url,`connect-step`,`settings`),target:`_blank`,rel:`noopener`,onClick:()=>v(Date.now()),children:x(`Connect`,`monoranks`)})})})]}),(0,F.jsxs)(vr,{n:2,later:!0,children:[(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,F.jsx)(`b`,{className:`text-[13px] font-semibold text-ink`,children:x(`Or paste a connector key`,`monoranks`)}),(0,F.jsx)(er,{text:x(`Use this when your host blocks Application Passwords.`,`monoranks`)})]}),(0,F.jsx)(Sr,{data:n,busy:c,onSubmit:(e,t)=>b(`connect`,()=>w.connect(e,t))})]})]})})]}),ee&&(0,F.jsx)(Xn,{children:(0,F.jsxs)(`details`,{open:f,onToggle:e=>p(e.currentTarget.open),className:`group`,children:[(0,F.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 px-[22px] py-4 font-medium text-ink2 hover:text-ink [&::-webkit-details-marker]:hidden`,children:[(0,F.jsx)(D,{size:14,className:`mr-flip transition-transform group-open:rotate-90`}),x(`Use a different key`,`monoranks`)]}),(0,F.jsx)(`div`,{className:`border-t border-grid px-[22px] pb-[22px] pt-4`,children:(0,F.jsx)(Sr,{data:n,busy:c,hint:x(`In MonoRanks: Settings → API and MCP → New credential, content:write, this website.`,`monoranks`),onSubmit:(e,t)=>b(`connect`,()=>w.connect(e,t))})})]})}),(0,F.jsx)(Xn,{children:(0,F.jsxs)(`details`,{className:`group`,children:[(0,F.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 px-[22px] py-4 font-medium text-ink2 hover:text-ink [&::-webkit-details-marker]:hidden`,children:[(0,F.jsx)(D,{size:14,className:`mr-flip transition-transform group-open:rotate-90`}),x(`What is sent`,`monoranks`)]}),(0,F.jsx)(`div`,{className:`border-t border-grid px-[22px] pb-[22px] pt-4`,children:(0,F.jsx)(hn,{rows:[[x(`Sent`,`monoranks`),x(`Published titles, a 40-word excerpt, dates, authors, categories, tags, SEO fields, image alt text and plugin status.`,`monoranks`)],[x(`Read back`,`monoranks`),x(`This website's audit results: scores, issues and the fixes you approved, shown here and in the Posts list.`,`monoranks`)],[x(`Never sent`,`monoranks`),x(`Drafts, private posts, comments, emails, passwords, plugin or theme settings.`,`monoranks`)],[x(`Can change`,`monoranks`),x(`SEO title, meta description, canonical, noindex, image alt text, redirects, one opening paragraph, AI crawler rules, llms.txt. Only after you approve each one.`,`monoranks`)]]})})]})}),(0,F.jsxs)(Xn,{children:[(0,F.jsxs)(Zn,{children:[(0,F.jsx)(Qn,{children:x(`Recent changes`,`monoranks`)}),(0,F.jsx)(`span`,{className:`text-[12px] text-mute`,children:x(`Last 50 · undo for 30 days`,`monoranks`)})]}),(0,F.jsx)(`div`,{className:`pt-2`,children:(0,F.jsx)(Yn,{rows:n.log,busy:u,onUndo:e=>{d(e.index),b(`undo`,()=>w.undo(e,`settings`))}})})]}),!ee&&n.has_data&&(0,F.jsxs)(Xn,{className:`border-critical/40`,children:[(0,F.jsx)(Zn,{children:(0,F.jsxs)(Qn,{className:`text-critical`,children:[x(`Danger zone`,`monoranks`),(0,F.jsx)(er,{text:x(`Erases the connection, scores, redirects, AI files and change log. Written fixes stay.`,`monoranks`)})]})}),(0,F.jsx)($n,{className:`flex flex-col gap-3`,children:m?(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`text-[12px] font-medium text-critical`,children:x(`This cannot be undone. Delete everything?`,`monoranks`)}),(0,F.jsx)(R,{variant:`dangerSolid`,disabled:c!==null,"aria-busy":c===`delete`,onClick:()=>{h(!1),b(`delete`,()=>w.deleteEverything())},children:x(`Yes, delete all data`,`monoranks`)}),(0,F.jsx)(R,{variant:`ghost`,disabled:c!==null,onClick:()=>h(!1),children:x(`Cancel`,`monoranks`)})]}):(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{variant:`danger`,onClick:()=>h(!0),children:x(`Delete all MonoRanks data`,`monoranks`)})})})]})]})]})}function Sr({data:e,busy:t,hint:n,onSubmit:r}){let[i,a]=(0,_.useState)(``),[o,s]=(0,_.useState)(e.api_base);function c(t){t.preventDefault(),r(i,e.show_address?o:void 0)}return(0,F.jsxs)(`form`,{onSubmit:c,className:`flex flex-col gap-3 pt-1.5`,children:[(0,F.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,F.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,F.jsx)(`label`,{htmlFor:`monoranks-key`,className:`text-[12px] font-medium text-ink2`,children:x(`Connector key`,`monoranks`)}),n&&(0,F.jsx)(er,{align:`start`,text:n})]}),(0,F.jsx)(br,{id:`monoranks-key`,name:`key`,type:`password`,autoComplete:`off`,placeholder:`mr_ws_… or mr_site_…`,required:!0,value:i,onChange:e=>a(e.target.value)})]}),e.show_address&&(0,F.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,F.jsx)(`label`,{htmlFor:`monoranks-address`,className:`text-[12px] font-medium text-ink2`,children:x(`MonoRanks address (development sites only)`,`monoranks`)}),(0,F.jsx)(br,{id:`monoranks-address`,name:`api_base`,type:`url`,value:o,onChange:e=>s(e.target.value)})]}),(0,F.jsx)(`div`,{children:(0,F.jsx)(R,{variant:`primary`,type:`submit`,disabled:t!==null,"aria-busy":t===`connect`,children:x(`Connect`,`monoranks`)})})]})}function Cr(){let[e,t]=te();return v(),e===`settings`?(0,F.jsx)(xr,{go:t}):(0,F.jsx)(hr,{go:t})}var wr=document.getElementById(`monoranks-admin`);wr&&(0,g.createRoot)(wr).render((0,F.jsx)(_.StrictMode,{children:(0,F.jsx)(Cr,{})})); \ No newline at end of file diff --git a/languages/monoranks-fa_IR-admin.json b/languages/monoranks-fa_IR-admin.json index c90324b..2c6443f 100644 --- a/languages/monoranks-fa_IR-admin.json +++ b/languages/monoranks-fa_IR-admin.json @@ -1,5 +1,5 @@ { - "translation-revision-date": "2026-10-14T11:51:45+00:00", + "translation-revision-date": "2026-10-17T10:10:18+00:00", "generator": "WP-CLI/2.12.0", "source": "resources/admin", "domain": "messages", @@ -49,9 +49,6 @@ "%s this week": [ "%s این هفته" ], - "Status": [ - "وضعیت" - ], "Next audit": [ "ممیزی بعدی" ], @@ -91,9 +88,6 @@ "Could not load the settings.": [ "بارگذاری تنظیمات ممکن نشد." ], - "Connection, what is sent, and every change written into this site.": [ - "اتصال، آنچه فرستاده می‌شود، و هر تغییری که در این سایت نوشته شده است." - ], "Connection": [ "اتصال" ], @@ -119,14 +113,14 @@ "Fixes written with": [ "اصلاح‌ها نوشته می‌شوند با" ], - "The \"MonoRanks\" Application Password": [ - "گذرواژهٔ برنامهٔ «MonoRanks»" + "App password": [ + "گذرواژهٔ برنامه" ], - "revoke it in your profile": [ - "آن را در نمایهٔ خود باطل کنید" + "Fixes are written with the \"MonoRanks\" Application Password. Revoke it in your profile to stop writes.": [ + "اصلاح‌ها با گذرواژهٔ برنامهٔ «MonoRanks» نوشته می‌شوند. برای توقف نوشتن، آن را در نمایه‌تان لغو کنید." ], - "to stop writes": [ - "تا نوشتن متوقف شود" + "Revoke": [ + "لغو" ], "Works with": [ "سازگار با" @@ -135,7 +129,7 @@ "%s شناسایی شد" ], "MonoRanks cannot write titles, descriptions, canonicals or noindex into %s yet, so those fixes are refused": [ - "" + "مونورنکس هنوز نمی‌تواند عنوان، توضیحات، canonical یا noindex را در %s بنویسد، پس این اصلاح‌ها رد می‌شوند" ], "titles and descriptions go into the fields %s reads": [ "عنوان‌ها و توضیح‌ها در فیلدهایی نوشته می‌شوند که %s می‌خواند" @@ -149,17 +143,17 @@ "Send content now": [ "ارسال محتوا" ], - "Disconnect": [ - "قطع اتصال" - ], "Disconnect stops sending. Fixes already applied stay.": [ "قطع اتصال ارسال را متوقف می‌کند. اصلاح‌های اعمال‌شده می‌مانند." ], + "Disconnect": [ + "قطع اتصال" + ], "Use a different key": [ "استفاده از کلید دیگر" ], - "In MonoRanks: Settings → API and MCP → New credential with the content:write scope, ticked for this website. Paste it here. With a key alone MonoRanks receives your content; to apply fixes, also use Connect to WordPress in MonoRanks.": [ - "در مونورنکس: تنظیمات ← API و MCP ← اعتبارنامهٔ جدید با دسترسی content:write، تیک‌خورده برای این وب‌سایت. آن را اینجا وارد کنید. با کلید به‌تنهایی مونورنکس محتوای شما را دریافت می‌کند؛ برای اعمال اصلاح‌ها، «اتصال به وردپرس» را هم در مونورنکس انجام دهید." + "In MonoRanks: Settings → API and MCP → New credential, content:write, this website.": [ + "در مونورنکس: تنظیمات ← API و MCP ← اعتبارنامهٔ جدید، content:write، همین وب‌سایت." ], "What is sent": [ "چه چیزی فرستاده می‌شود" @@ -194,8 +188,8 @@ "Danger zone": [ "منطقهٔ خطر" ], - "This site is not connected to MonoRanks. You can erase everything the plugin stored here: the connection, the scores on your posts and pages, the redirects and AI access files it was asked to write, and the change log. Pages themselves are not touched — a fix that was written stays written, so undo those first if you want them back.": [ - "این سایت به مونورنکس متصل نیست. می‌توانید هر چه افزونه اینجا ذخیره کرده پاک کنید: اتصال، امتیاز نوشته‌ها و برگه‌ها، تغییر مسیرها و فایل‌های دسترسی هوش مصنوعی که نوشته شده‌اند، و فهرست تغییرات. خود صفحه‌ها دست‌نخورده می‌مانند؛ اصلاحی که نوشته شده نوشته می‌ماند، پس اگر می‌خواهید برگردد ابتدا آن را بازگردانی کنید." + "Erases the connection, scores, redirects, AI files and change log. Written fixes stay.": [ + "اتصال، امتیازها، تغییر مسیرها، فایل‌های هوش مصنوعی و گزارش تغییرات را پاک می‌کند. اصلاح‌های نوشته‌شده می‌مانند." ], "This cannot be undone. Delete everything?": [ "این کار برگشت‌پذیر نیست. همه چیز پاک شود؟" @@ -426,9 +420,6 @@ "%1$s of %2$s published pages scored": [ "%1$s از %2$s صفحهٔ منتشرشده امتیاز گرفته" ], - "Weekly SEO, AEO and GEO audits, with the fixes you approve written into WordPress.": [ - "ممیزی هفتگی SEO، AEO و GEO، با اصلاح‌هایی که تأیید می‌کنید و در وردپرس نوشته می‌شوند." - ], "Sync content now": [ "همگام‌سازی محتوا" ], @@ -496,6 +487,9 @@ "Ready to apply": [ "آمادهٔ اعمال" ], + "Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days.": [ + "در مونورنکس تأیید شده. هر نوشتن در تنظیمات ثبت می‌شود و تا ۳۰ روز قابل بازگردانی است." + ], "Apply all": [ "اعمال همه" ], @@ -527,9 +521,6 @@ "Apply": [ "اعمال" ], - "Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days.": [ - "در مونورنکس تأیید شده. هر نوشتن در تنظیمات ثبت می‌شود و تا ۳۰ روز قابل بازگردانی است." - ], "Needs review in MonoRanks": [ "" ], @@ -548,12 +539,15 @@ "See scores here and in your Posts list": [ "امتیازها را اینجا و در فهرست نوشته‌ها ببینید" ], - "After the first audit this page shows the site's health and AEO scores, pages needing attention and the fixes you approved; every post and page gets its scores in the list.": [ - "پس از نخستین ممیزی، این صفحه امتیاز سلامت و AEO سایت، صفحه‌های نیازمند توجه و اصلاح‌های تأییدشدهٔ شما را نشان می‌دهد؛ هر نوشته و برگه هم امتیازش را در فهرست می‌گیرد." + "Not shared yet": [ + "هنوز به اشتراک گذاشته نشده" ], "This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow.": [ "این مونورنکس هنوز نتایج ممیزی را با افزونه به اشتراک نمی‌گذارد. فعلاً امتیازها در مونورنکس می‌مانند؛ افزونه فردا دوباره می‌پرسد." ], + "MonoRanks not reached": [ + "دسترسی به مونورنکس ممکن نشد" + ], "MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen.": [ "برای دریافت نتایج ممیزی دسترسی به مونورنکس ممکن نشد. افزونه تا یک ساعت دیگر یا با بارگذاری دوباره این صفحه، دوباره تلاش می‌کند." ], @@ -581,6 +575,9 @@ "Open the audit in MonoRanks": [ "باز کردن ممیزی در مونورنکس" ], + "More info": [ + "اطلاعات بیشتر" + ], "Open MonoRanks": [ "باز کردن مونورنکس" ], diff --git a/languages/monoranks-fa_IR.mo b/languages/monoranks-fa_IR.mo index caf2031..164eee3 100644 Binary files a/languages/monoranks-fa_IR.mo and b/languages/monoranks-fa_IR.mo differ diff --git a/languages/monoranks-fa_IR.po b/languages/monoranks-fa_IR.po index 9c49763..e8a1e0b 100644 --- a/languages/monoranks-fa_IR.po +++ b/languages/monoranks-fa_IR.po @@ -35,7 +35,7 @@ msgstr "برنامهٔ مدیریت مونورنکس ساخته نشده است. #: resources/views/column-cell.php:20 #: resources/views/post-panel.php:25 -#: tmp/i18n/screens/Overview.js:182 +#: tmp/i18n/screens/Overview.js:181 msgid "Connect MonoRanks" msgstr "اتصال مونورنکس" @@ -46,19 +46,18 @@ msgstr "پیش‌نویس‌ها به مونورنکس فرستاده نمی‌ #: resources/views/column-cell.php:27 #: resources/views/column-cell.php:38 #: resources/views/post-panel.php:35 -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "Health" msgstr "سلامت" #: resources/views/column-cell.php:27 #: resources/views/column-cell.php:38 #: resources/views/post-panel.php:35 -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "AEO" msgstr "AEO" #: resources/views/column-cell.php:30 -#: tmp/i18n/screens/Settings.js:86 msgid "Status" msgstr "وضعیت" @@ -95,14 +94,14 @@ msgid "Not checked: MonoRanks reads AEO on a sample of pages" msgstr "بررسی نشده: مونورنکس AEO را روی نمونه‌ای از صفحه‌ها می‌سنجد" #: resources/views/column-cell.php:41 -#: tmp/i18n/screens/Overview.js:96 +#: tmp/i18n/screens/Overview.js:97 msgid "Fixes" msgstr "اصلاح‌ها" #. translators: %s: number #, php-format,js-format #: resources/views/column-cell.php:43 -#: tmp/i18n/screens/Overview.js:135 +#: tmp/i18n/screens/Overview.js:136 msgid "%s ready to apply" msgid_plural "%s ready to apply" msgstr[0] "%s آمادهٔ اعمال" @@ -142,6 +141,7 @@ msgid "Open in MonoRanks" msgstr "باز کردن در مونورنکس" #: resources/views/partials/score-ring.php:16 +#: tmp/i18n/screens/Overview.js:197 #: tmp/i18n/shell/Ring.js:14 msgid "Not scored yet" msgstr "هنوز امتیاز نگرفته" @@ -181,7 +181,7 @@ msgid "Search data arrives with the next refresh." msgstr "داده‌های جستجو با به‌روزرسانی بعدی می‌رسند." #: resources/views/post-panel.php:49 -#: tmp/i18n/screens/Overview.js:93 +#: tmp/i18n/screens/Overview.js:94 msgid "Connect Google Search Console in MonoRanks to see clicks here." msgstr "برای دیدن کلیک‌ها، گوگل سرچ کنسول را در مونورنکس متصل کنید." @@ -283,7 +283,7 @@ msgstr "(در زبانهٔ تازه باز می‌شود)" #: src/Admin.php:47 #: src/Assets.php:67 -#: tmp/i18n/screens/Overview.js:75 +#: tmp/i18n/screens/Overview.js:76 #: tmp/i18n/shell/Shell.js:14 msgid "Overview" msgstr "نمای کلی" @@ -294,7 +294,7 @@ msgid "MonoRanks settings" msgstr "تنظیمات مونورنکس" #: src/Admin.php:48 -#: tmp/i18n/screens/Settings.js:73 +#: tmp/i18n/screens/Settings.js:74 #: tmp/i18n/shell/Shell.js:15 msgid "Settings" msgstr "تنظیمات" @@ -311,93 +311,101 @@ msgstr "%1$s دیگر (%2$s)" msgid "%1$s ago (%2$s)" msgstr "%1$s پیش (%2$s)" -#: src/Admin.php:177 +#. translators: %s: relative time, e.g. 3 minutes +#. translators: %s: relative time such as "5 days" +#, php-format +#: src/Admin.php:181 +#: src/Column.php:63 +msgid "in %s" +msgstr "%s دیگر" + +#. translators: %s: relative time, e.g. 3 minutes +#. translators: %s: relative time such as "2 days" +#, php-format +#: src/Admin.php:181 +#: src/Column.php:78 +#: src/Column.php:92 +msgid "%s ago" +msgstr "%s پیش" + +#: src/Admin.php:193 msgid "Connected. Your published content is on its way to MonoRanks." msgstr "متصل شد. محتوای منتشرشدهٔ شما در راه مونورنکس است." -#: src/Admin.php:178 +#: src/Admin.php:194 msgid "Content sent to MonoRanks." msgstr "محتوا به مونورنکس فرستاده شد." -#: src/Admin.php:179 +#: src/Admin.php:195 msgid "Disconnected. Nothing is sent to MonoRanks any more." msgstr "اتصال قطع شد. دیگر چیزی به مونورنکس فرستاده نمی‌شود." -#: src/Admin.php:180 +#: src/Admin.php:196 msgid "Everything MonoRanks stored in WordPress is gone: the connection, the scores, the redirects and the change log." msgstr "هر چه مونورنکس در وردپرس ذخیره کرده بود پاک شد: اتصال، امتیازها، تغییر مسیرها و فهرست تغییرات." -#: src/Admin.php:181 +#: src/Admin.php:197 msgid "Applied. The change is listed under Recent changes and can be undone." msgstr "اعمال شد. این تغییر در «تغییرات اخیر» آمده و قابل بازگردانی است." -#: src/Admin.php:182 +#: src/Admin.php:198 msgid "Some fixes were applied; the rest could not be applied. Recent changes lists what was written." msgstr "" -#: src/Admin.php:183 +#: src/Admin.php:199 msgid "That change has moved in the log since this screen loaded. Reload and try Undo again." msgstr "این تغییر از زمان باز شدن صفحه در فهرست جابه‌جا شده است. صفحه را تازه کنید و دوباره بازگردانی را بزنید." -#: src/Admin.php:184 +#: src/Admin.php:200 msgid "Undone. The previous value is back." msgstr "بازگردانده شد. مقدار قبلی برگشت." -#: src/Admin.php:185 +#: src/Admin.php:201 msgid "MonoRanks could not apply that change. Open it in MonoRanks to review it again." msgstr "" -#: src/Admin.php:186 +#: src/Admin.php:202 msgid "Nothing was changed: the value in WordPress is not the one that was reviewed. It now needs review in MonoRanks." msgstr "" -#: src/Admin.php:187 +#: src/Admin.php:203 msgid "Some changes were applied. The others no longer match WordPress and need review in MonoRanks." msgstr "" -#: src/Admin.php:188 +#: src/Admin.php:204 msgid "That does not look like a MonoRanks connector key. Copy it again from MonoRanks → Settings → API and MCP." msgstr "این شبیه کلید اتصال مونورنکس نیست. آن را دوباره از مونورنکس ← تنظیمات ← API و MCP کپی کنید." -#: src/Admin.php:189 +#: src/Admin.php:205 msgid "The MonoRanks address must start with https://." msgstr "نشانی مونورنکس باید با https:// شروع شود." -#: src/Admin.php:190 +#: src/Admin.php:206 msgid "MonoRanks did not accept this key. It may have been revoked or replaced; create a new one in MonoRanks." msgstr "مونورنکس این کلید را نپذیرفت. شاید باطل یا جایگزین شده باشد؛ در مونورنکس کلید تازه‌ای بسازید." -#: src/Admin.php:191 +#: src/Admin.php:207 msgid "This key belongs to a different website in MonoRanks. Create the key on the website with this address." msgstr "این کلید متعلق به وب‌سایت دیگری در مونورنکس است. کلید را روی وب‌سایتی با همین نشانی بسازید." -#: src/Admin.php:192 +#: src/Admin.php:208 msgid "MonoRanks could not be reached. Check the address and try again." msgstr "دسترسی به مونورنکس ممکن نشد. نشانی را بررسی کنید و دوباره تلاش کنید." +#: src/Admin.php:209 +msgid "Could not connect. Please try again." +msgstr "اتصال ممکن نشد. دوباره تلاش کنید." + #: src/AuthorizeScreen.php:39 msgid "Reads your content and applies only fixes you approve." msgstr "محتوای شما را می‌خواند و فقط اصلاحاتی را که تأیید کنید اعمال می‌کند." -#. translators: %s: relative time such as "5 days" -#, php-format -#: src/Column.php:63 -msgid "in %s" -msgstr "%s دیگر" - #. translators: %s: relative time such as "in 5 days" #, php-format #: src/Column.php:71 msgid "next audit %s" msgstr "ممیزی بعدی %s" -#. translators: %s: relative time such as "2 days" -#, php-format -#: src/Column.php:78 -#: src/Column.php:92 -msgid "%s ago" -msgstr "%s پیش" - #: src/Column.php:121 msgid "Clicks, 28 days" msgstr "کلیک‌ها، ۲۸ روز" @@ -543,7 +551,7 @@ msgid "Image #%d" msgstr "تصویر #%d" #: src/Overview.php:70 -#: tmp/i18n/screens/Overview.js:29 +#: tmp/i18n/screens/Overview.js:30 msgid "Site" msgstr "سایت" @@ -584,12 +592,12 @@ msgid "Internal links" msgstr "لینک‌های داخلی" #: src/PostPanel.php:162 -#: tmp/i18n/screens/Overview.js:84 +#: tmp/i18n/screens/Overview.js:85 msgid "Health score" msgstr "امتیاز سلامت" #: src/PostPanel.php:163 -#: tmp/i18n/screens/Overview.js:88 +#: tmp/i18n/screens/Overview.js:89 msgid "AEO score" msgstr "امتیاز AEO" @@ -601,18 +609,23 @@ msgstr "%1$s %2$s ← %3$s" #. translators: 1: user, 2: date #, php-format -#: src/Settings.php:42 +#: src/Settings.php:44 msgid "set when %1$s connected MonoRanks on %2$s" msgstr "هنگام اتصال %1$s به مونورنکس در %2$s تنظیم شد" -#: src/Settings.php:43 +#: src/Settings.php:45 msgid "pasted by hand" msgstr "دستی وارد شده" -#: src/Settings.php:45 +#: src/Settings.php:47 +#: src/Settings.php:48 msgid "Never" msgstr "هرگز" +#: tmp/i18n/components/ui/tip.js:10 +msgid "More info" +msgstr "اطلاعات بیشتر" + #: tmp/i18n/screens/Grow.js:18 #: tmp/i18n/screens/Grow.js:26 msgid "What to do next" @@ -838,334 +851,330 @@ msgid "Open report" msgstr "باز کردن گزارش" #, js-format -#: tmp/i18n/screens/Overview.js:34 +#: tmp/i18n/screens/Overview.js:35 msgid "on %s" msgstr "" #, js-format -#: tmp/i18n/screens/Overview.js:36 +#: tmp/i18n/screens/Overview.js:37 msgid "Image: %s" msgstr "" -#: tmp/i18n/screens/Overview.js:37 +#: tmp/i18n/screens/Overview.js:38 msgid "Adds one answer-first paragraph at the top. Review the before/after in MonoRanks first." msgstr "یک پاراگراف پاسخ‌محور به بالای نوشته اضافه می‌کند. ابتدا قبل/بعد را در مونورنکس بررسی کنید." -#: tmp/i18n/screens/Overview.js:38 +#: tmp/i18n/screens/Overview.js:39 msgid "(empty)" msgstr "" -#: tmp/i18n/screens/Overview.js:40 +#: tmp/i18n/screens/Overview.js:41 msgid "changes to" msgstr "" -#: tmp/i18n/screens/Overview.js:54 +#: tmp/i18n/screens/Overview.js:55 msgid "Could not load the overview." msgstr "بارگذاری نمای کلی ممکن نشد." -#: tmp/i18n/screens/Overview.js:64 -#: tmp/i18n/screens/Settings.js:65 +#: tmp/i18n/screens/Overview.js:65 +#: tmp/i18n/screens/Settings.js:66 msgid "Something went wrong. Try again." msgstr "مشکلی پیش آمد. دوباره تلاش کنید." -#: tmp/i18n/screens/Overview.js:73 +#: tmp/i18n/screens/Overview.js:74 msgid "Weekly SEO, AEO and GEO audit of" msgstr "ممیزی هفتگی SEO، AEO و GEO برای" #, js-format -#: tmp/i18n/screens/Overview.js:73 +#: tmp/i18n/screens/Overview.js:74 msgid "last audit %s" msgstr "آخرین ممیزی %s" #, js-format -#: tmp/i18n/screens/Overview.js:73 +#: tmp/i18n/screens/Overview.js:74 msgid "%1$s of %2$s published pages scored" msgstr "%1$s از %2$s صفحهٔ منتشرشده امتیاز گرفته" -#: tmp/i18n/screens/Overview.js:73 -msgid "Weekly SEO, AEO and GEO audits, with the fixes you approve written into WordPress." -msgstr "ممیزی هفتگی SEO، AEO و GEO، با اصلاح‌هایی که تأیید می‌کنید و در وردپرس نوشته می‌شوند." - -#: tmp/i18n/screens/Overview.js:74 +#: tmp/i18n/screens/Overview.js:75 msgid "Sync content now" msgstr "همگام‌سازی محتوا" -#: tmp/i18n/screens/Overview.js:85 +#: tmp/i18n/screens/Overview.js:86 msgid "Technical, on-page, links, speed" msgstr "فنی، درون‌صفحه، پیوندها، سرعت" #, js-format -#: tmp/i18n/screens/Overview.js:85 +#: tmp/i18n/screens/Overview.js:86 msgid "Site average, %s page" msgid_plural "Site average, %s pages" msgstr[0] "میانگین سایت، %s صفحه" msgstr[1] "میانگین سایت، %s صفحه" -#: tmp/i18n/screens/Overview.js:89 +#: tmp/i18n/screens/Overview.js:90 msgid "Answer-first, structure, entities" msgstr "پاسخ‌محوری، ساختار، موجودیت‌ها" -#: tmp/i18n/screens/Overview.js:89 +#: tmp/i18n/screens/Overview.js:90 msgid "How well AI answers can use your pages" msgstr "پاسخ‌های هوش مصنوعی چقدر می‌توانند از صفحه‌های شما استفاده کنند" -#: tmp/i18n/screens/Overview.js:92 +#: tmp/i18n/screens/Overview.js:93 msgid "Search clicks, 28 days" msgstr "کلیک‌های جستجو، ۲۸ روز" -#: tmp/i18n/screens/Overview.js:93 +#: tmp/i18n/screens/Overview.js:94 msgid "From Google Search Console, through MonoRanks" msgstr "از گوگل سرچ کنسول، از طریق مونورنکس" #, js-format -#: tmp/i18n/screens/Overview.js:96 +#: tmp/i18n/screens/Overview.js:97 msgid "%s ready" msgstr "%s آماده" -#: tmp/i18n/screens/Overview.js:97 +#: tmp/i18n/screens/Overview.js:98 msgid "applied in 30 days" msgstr "اعمال‌شده در ۳۰ روز" #, js-format -#: tmp/i18n/screens/Overview.js:98 +#: tmp/i18n/screens/Overview.js:99 msgid "%s waiting for your approval in MonoRanks" msgstr "%s مورد در مونورنکس منتظر تأیید شماست" -#: tmp/i18n/screens/Overview.js:100 +#: tmp/i18n/screens/Overview.js:101 msgid "AI crawler rules on" msgstr "قوانین خزنده‌های هوش مصنوعی فعال" -#: tmp/i18n/screens/Overview.js:100 +#: tmp/i18n/screens/Overview.js:101 msgid "No AI crawler rules" msgstr "بدون قوانین خزندهٔ هوش مصنوعی" -#: tmp/i18n/screens/Overview.js:101 +#: tmp/i18n/screens/Overview.js:102 msgid "llms.txt published" msgstr "llms.txt منتشر شده" -#: tmp/i18n/screens/Overview.js:101 +#: tmp/i18n/screens/Overview.js:102 msgid "No llms.txt" msgstr "بدون llms.txt" -#: tmp/i18n/screens/Overview.js:110 +#: tmp/i18n/screens/Overview.js:111 msgid "Pages needing attention" msgstr "صفحه‌های نیازمند توجه" -#: tmp/i18n/screens/Overview.js:110 +#: tmp/i18n/screens/Overview.js:111 msgid "All pages in MonoRanks" msgstr "همهٔ صفحه‌ها در مونورنکس" -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "Page" msgstr "صفحه" -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "Biggest issue" msgstr "بزرگ‌ترین مشکل" -#: tmp/i18n/screens/Overview.js:120 +#: tmp/i18n/screens/Overview.js:121 msgid "Fix in MonoRanks" msgstr "اصلاح در مونورنکس" -#: tmp/i18n/screens/Overview.js:124 +#: tmp/i18n/screens/Overview.js:125 msgid "Nothing needs attention" msgstr "چیزی نیازمند توجه نیست" -#: tmp/i18n/screens/Overview.js:124 +#: tmp/i18n/screens/Overview.js:125 msgid "Every scored page is above 60. The next audit may change that." msgstr "همهٔ صفحه‌های امتیازگرفته بالای ۶۰ هستند. ممیزی بعدی ممکن است این را تغییر دهد." -#: tmp/i18n/screens/Overview.js:129 +#: tmp/i18n/screens/Overview.js:130 msgid "Ready to apply" msgstr "آمادهٔ اعمال" #: tmp/i18n/screens/Overview.js:130 +msgid "Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days." +msgstr "در مونورنکس تأیید شده. هر نوشتن در تنظیمات ثبت می‌شود و تا ۳۰ روز قابل بازگردانی است." + +#: tmp/i18n/screens/Overview.js:131 msgid "Apply all" msgstr "اعمال همه" #, js-format -#: tmp/i18n/screens/Overview.js:135 +#: tmp/i18n/screens/Overview.js:136 msgid "%s fixes are ready for your approval" msgstr "%s اصلاح آماده‌ی تأیید شماست" #, js-format -#: tmp/i18n/screens/Overview.js:135 +#: tmp/i18n/screens/Overview.js:136 msgid "%s needs a value in MonoRanks" msgid_plural "%s need a value in MonoRanks" msgstr[0] "%s نیاز به مقدار در مونورنکس" msgstr[1] "%s نیاز به مقدار در مونورنکس" -#: tmp/i18n/screens/Overview.js:136 +#: tmp/i18n/screens/Overview.js:137 msgid "Type a value or draft one with AI in MonoRanks, approve it, and it is written here, with undo." msgstr "در مونورنکس مقدار را بنویسید یا با هوش مصنوعی پیش‌نویس کنید و تأیید کنید تا این‌جا نوشته شود، با امکان بازگردانی." -#: tmp/i18n/screens/Overview.js:136 +#: tmp/i18n/screens/Overview.js:137 msgid "Approve them in MonoRanks and they are written here, with undo." msgstr "در مونورنکس تأییدشان کنید تا این‌جا نوشته شوند، با امکان بازگردانی." -#: tmp/i18n/screens/Overview.js:141 -#: tmp/i18n/screens/Overview.js:157 +#: tmp/i18n/screens/Overview.js:142 +#: tmp/i18n/screens/Overview.js:156 msgid "Review in MonoRanks" msgstr "بررسی در مونورنکس" -#: tmp/i18n/screens/Overview.js:143 +#: tmp/i18n/screens/Overview.js:144 msgid "No fixes waiting" msgstr "اصلاحی در انتظار نیست" -#: tmp/i18n/screens/Overview.js:143 +#: tmp/i18n/screens/Overview.js:144 msgid "Fixes you approve in MonoRanks appear here, ready to write into WordPress." msgstr "اصلاح‌هایی که در مونورنکس تأیید می‌کنید اینجا می‌آیند، آماده برای نوشتن در وردپرس." -#: tmp/i18n/screens/Overview.js:146 +#: tmp/i18n/screens/Overview.js:147 msgid "Review" msgstr "بررسی" -#: tmp/i18n/screens/Overview.js:146 +#: tmp/i18n/screens/Overview.js:147 msgid "Apply" msgstr "اعمال" -#: tmp/i18n/screens/Overview.js:148 -msgid "Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days." -msgstr "در مونورنکس تأیید شده. هر نوشتن در تنظیمات ثبت می‌شود و تا ۳۰ روز قابل بازگردانی است." - #: tmp/i18n/screens/Overview.js:152 msgid "Needs review in MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:154 +#: tmp/i18n/screens/Overview.js:152 msgid "These changed in WordPress after they were reviewed, so they are not applied from here. Review them again in MonoRanks." msgstr "" -#: tmp/i18n/screens/Overview.js:164 -#: tmp/i18n/screens/Settings.js:130 +#: tmp/i18n/screens/Overview.js:163 +#: tmp/i18n/screens/Settings.js:128 msgid "Recent changes" msgstr "تغییرات اخیر" -#: tmp/i18n/screens/Overview.js:167 +#: tmp/i18n/screens/Overview.js:166 msgid "All changes" msgstr "همهٔ تغییرات" -#: tmp/i18n/screens/Overview.js:182 +#: tmp/i18n/screens/Overview.js:181 msgid "Connect MonoRanks again" msgstr "مونورنکس را دوباره متصل کنید" -#: tmp/i18n/screens/Overview.js:182 -#: tmp/i18n/screens/Settings.js:81 +#: tmp/i18n/screens/Overview.js:181 +#: tmp/i18n/screens/Settings.js:82 msgid "Key revoked" msgstr "کلید باطل شده" -#: tmp/i18n/screens/Overview.js:182 -#: tmp/i18n/screens/Settings.js:81 +#: tmp/i18n/screens/Overview.js:181 +#: tmp/i18n/screens/Settings.js:82 msgid "Not connected" msgstr "متصل نیست" -#: tmp/i18n/screens/Overview.js:184 -#: tmp/i18n/screens/Settings.js:99 +#: tmp/i18n/screens/Overview.js:183 +#: tmp/i18n/screens/Settings.js:98 msgid "Connect to MonoRanks" msgstr "اتصال به MonoRanks" -#: tmp/i18n/screens/Overview.js:184 -#: tmp/i18n/screens/Settings.js:99 +#: tmp/i18n/screens/Overview.js:183 +#: tmp/i18n/screens/Settings.js:98 msgid "Sign in and approve. Takes a minute." msgstr "وارد شوید و تأیید کنید. یک دقیقه طول می‌کشد." -#: tmp/i18n/screens/Overview.js:184 -#: tmp/i18n/screens/Settings.js:99 -#: tmp/i18n/screens/Settings.js:164 +#: tmp/i18n/screens/Overview.js:183 +#: tmp/i18n/screens/Settings.js:98 +#: tmp/i18n/screens/Settings.js:161 msgid "Connect" msgstr "اتصال" -#: tmp/i18n/screens/Overview.js:185 -#: tmp/i18n/screens/Settings.js:100 +#: tmp/i18n/screens/Overview.js:184 +#: tmp/i18n/screens/Settings.js:99 msgid "Or paste a connector key" msgstr "یا کلید اتصال را وارد کنید" -#: tmp/i18n/screens/Overview.js:185 -#: tmp/i18n/screens/Settings.js:100 +#: tmp/i18n/screens/Overview.js:184 +#: tmp/i18n/screens/Settings.js:99 msgid "Use this when your host blocks Application Passwords." msgstr "وقتی میزبان شما «گذرواژه‌های برنامه» را مسدود کرده از این راه استفاده کنید." -#: tmp/i18n/screens/Overview.js:188 +#: tmp/i18n/screens/Overview.js:187 msgid "Open settings" msgstr "باز کردن تنظیمات" -#: tmp/i18n/screens/Overview.js:189 +#: tmp/i18n/screens/Overview.js:188 msgid "See scores here and in your Posts list" msgstr "امتیازها را اینجا و در فهرست نوشته‌ها ببینید" -#: tmp/i18n/screens/Overview.js:189 -msgid "After the first audit this page shows the site's health and AEO scores, pages needing attention and the fixes you approved; every post and page gets its scores in the list." -msgstr "پس از نخستین ممیزی، این صفحه امتیاز سلامت و AEO سایت، صفحه‌های نیازمند توجه و اصلاح‌های تأییدشدهٔ شما را نشان می‌دهد؛ هر نوشته و برگه هم امتیازش را در فهرست می‌گیرد." +#: tmp/i18n/screens/Overview.js:197 +msgid "Not shared yet" +msgstr "هنوز به اشتراک گذاشته نشده" -#: tmp/i18n/screens/Overview.js:198 +#: tmp/i18n/screens/Overview.js:197 msgid "This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow." msgstr "این مونورنکس هنوز نتایج ممیزی را با افزونه به اشتراک نمی‌گذارد. فعلاً امتیازها در مونورنکس می‌مانند؛ افزونه فردا دوباره می‌پرسد." -#: tmp/i18n/screens/Overview.js:198 +#: tmp/i18n/screens/Overview.js:197 +msgid "MonoRanks not reached" +msgstr "دسترسی به مونورنکس ممکن نشد" + +#: tmp/i18n/screens/Overview.js:197 msgid "MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen." msgstr "برای دریافت نتایج ممیزی دسترسی به مونورنکس ممکن نشد. افزونه تا یک ساعت دیگر یا با بارگذاری دوباره این صفحه، دوباره تلاش می‌کند." -#: tmp/i18n/screens/Overview.js:198 +#: tmp/i18n/screens/Overview.js:197 msgid "MonoRanks has not scored this site yet. Scores appear here and in the Posts list after the first weekly audit." msgstr "مونورنکس هنوز به این سایت امتیاز نداده است. امتیازها پس از نخستین ممیزی هفتگی اینجا و در فهرست نوشته‌ها دیده می‌شوند." -#: tmp/i18n/screens/Overview.js:200 +#: tmp/i18n/screens/Overview.js:199 msgid "Waiting for the first audit" msgstr "در انتظار نخستین ممیزی" -#: tmp/i18n/screens/Overview.js:200 -#: tmp/i18n/screens/Settings.js:81 +#: tmp/i18n/screens/Overview.js:199 +#: tmp/i18n/screens/Settings.js:82 msgid "Connected" msgstr "متصل" -#: tmp/i18n/screens/Overview.js:203 +#: tmp/i18n/screens/Overview.js:202 msgid "Content" msgstr "محتوا" #, js-format -#: tmp/i18n/screens/Overview.js:203 +#: tmp/i18n/screens/Overview.js:202 msgid "%1$s published items sent %2$s" msgstr "%1$s مورد منتشرشده %2$s فرستاده شد" -#: tmp/i18n/screens/Overview.js:203 +#: tmp/i18n/screens/Overview.js:202 msgid "Not sent yet. Use \"Sync content now\" above." msgstr "هنوز فرستاده نشده. از «همگام‌سازی محتوا» در بالا استفاده کنید." -#: tmp/i18n/screens/Overview.js:204 +#: tmp/i18n/screens/Overview.js:203 msgid "Audit results" msgstr "نتایج ممیزی" #, js-format -#: tmp/i18n/screens/Overview.js:204 +#: tmp/i18n/screens/Overview.js:203 msgid "checked %s" msgstr "بررسی‌شده %s" -#: tmp/i18n/screens/Overview.js:206 +#: tmp/i18n/screens/Overview.js:205 msgid "Open the audit in MonoRanks" msgstr "باز کردن ممیزی در مونورنکس" -#: tmp/i18n/screens/Settings.js:28 +#: tmp/i18n/screens/Settings.js:29 msgid "Could not load the settings." msgstr "بارگذاری تنظیمات ممکن نشد." -#: tmp/i18n/screens/Settings.js:73 -msgid "Connection, what is sent, and every change written into this site." -msgstr "اتصال، آنچه فرستاده می‌شود، و هر تغییری که در این سایت نوشته شده است." - -#: tmp/i18n/screens/Settings.js:80 +#: tmp/i18n/screens/Settings.js:81 msgid "Connection" msgstr "اتصال" -#: tmp/i18n/screens/Settings.js:86 +#: tmp/i18n/screens/Settings.js:82 msgid "MonoRanks no longer accepts this key. Connect again from MonoRanks or paste a new key below." msgstr "مونورنکس دیگر این کلید را نمی‌پذیرد. دوباره از مونورنکس متصل شوید یا کلید تازه‌ای در پایین وارد کنید." -#: tmp/i18n/screens/Settings.js:86 +#: tmp/i18n/screens/Settings.js:82 msgid "Sending published content to MonoRanks. Nothing else leaves this site." msgstr "محتوای منتشرشده به مونورنکس فرستاده می‌شود. چیز دیگری از این سایت خارج نمی‌شود." #: tmp/i18n/screens/Settings.js:87 -#: tmp/i18n/screens/Settings.js:162 +#: tmp/i18n/screens/Settings.js:159 msgid "Connector key" msgstr "کلید اتصال" @@ -1190,16 +1199,16 @@ msgid "Fixes written with" msgstr "اصلاح‌ها نوشته می‌شوند با" #: tmp/i18n/screens/Settings.js:90 -msgid "The \"MonoRanks\" Application Password" -msgstr "گذرواژهٔ برنامهٔ «MonoRanks»" +msgid "App password" +msgstr "گذرواژهٔ برنامه" #: tmp/i18n/screens/Settings.js:90 -msgid "revoke it in your profile" -msgstr "آن را در نمایهٔ خود باطل کنید" +msgid "Fixes are written with the \"MonoRanks\" Application Password. Revoke it in your profile to stop writes." +msgstr "اصلاح‌ها با گذرواژهٔ برنامهٔ «MonoRanks» نوشته می‌شوند. برای توقف نوشتن، آن را در نمایه‌تان لغو کنید." #: tmp/i18n/screens/Settings.js:90 -msgid "to stop writes" -msgstr "تا نوشتن متوقف شود" +msgid "Revoke" +msgstr "لغو" #: tmp/i18n/screens/Settings.js:91 msgid "Works with" @@ -1213,7 +1222,7 @@ msgstr "%s شناسایی شد" #, js-format #: tmp/i18n/screens/Settings.js:91 msgid "MonoRanks cannot write titles, descriptions, canonicals or noindex into %s yet, so those fixes are refused" -msgstr "" +msgstr "مونورنکس هنوز نمی‌تواند عنوان، توضیحات، canonical یا noindex را در %s بنویسد، پس این اصلاح‌ها رد می‌شوند" #, js-format #: tmp/i18n/screens/Settings.js:91 @@ -1233,86 +1242,86 @@ msgid "Send content now" msgstr "ارسال محتوا" #: tmp/i18n/screens/Settings.js:95 -msgid "Disconnect" -msgstr "قطع اتصال" - -#: tmp/i18n/screens/Settings.js:96 msgid "Disconnect stops sending. Fixes already applied stay." msgstr "قطع اتصال ارسال را متوقف می‌کند. اصلاح‌های اعمال‌شده می‌مانند." -#: tmp/i18n/screens/Settings.js:107 +#: tmp/i18n/screens/Settings.js:95 +msgid "Disconnect" +msgstr "قطع اتصال" + +#: tmp/i18n/screens/Settings.js:106 msgid "Use a different key" msgstr "استفاده از کلید دیگر" -#: tmp/i18n/screens/Settings.js:110 -msgid "In MonoRanks: Settings → API and MCP → New credential with the content:write scope, ticked for this website. Paste it here. With a key alone MonoRanks receives your content; to apply fixes, also use Connect to WordPress in MonoRanks." -msgstr "در مونورنکس: تنظیمات ← API و MCP ← اعتبارنامهٔ جدید با دسترسی content:write، تیک‌خورده برای این وب‌سایت. آن را اینجا وارد کنید. با کلید به‌تنهایی مونورنکس محتوای شما را دریافت می‌کند؛ برای اعمال اصلاح‌ها، «اتصال به وردپرس» را هم در مونورنکس انجام دهید." +#: tmp/i18n/screens/Settings.js:108 +msgid "In MonoRanks: Settings → API and MCP → New credential, content:write, this website." +msgstr "در مونورنکس: تنظیمات ← API و MCP ← اعتبارنامهٔ جدید، content:write، همین وب‌سایت." -#: tmp/i18n/screens/Settings.js:118 +#: tmp/i18n/screens/Settings.js:115 msgid "What is sent" msgstr "چه چیزی فرستاده می‌شود" -#: tmp/i18n/screens/Settings.js:121 +#: tmp/i18n/screens/Settings.js:118 msgid "Sent" msgstr "فرستاده می‌شود" -#: tmp/i18n/screens/Settings.js:121 +#: tmp/i18n/screens/Settings.js:118 msgid "Published titles, a 40-word excerpt, dates, authors, categories, tags, SEO fields, image alt text and plugin status." msgstr "عنوان‌های منتشرشده، چکیدهٔ ۴۰ کلمه‌ای، تاریخ‌ها، نویسندگان، دسته‌ها، برچسب‌ها، فیلدهای سئو، متن جایگزین تصاویر و وضعیت افزونه." -#: tmp/i18n/screens/Settings.js:122 +#: tmp/i18n/screens/Settings.js:119 msgid "Read back" msgstr "خوانده می‌شود" -#: tmp/i18n/screens/Settings.js:122 +#: tmp/i18n/screens/Settings.js:119 msgid "This website's audit results: scores, issues and the fixes you approved, shown here and in the Posts list." msgstr "نتایج ممیزی این وب‌سایت: امتیازها، مشکل‌ها و اصلاح‌هایی که تأیید کرده‌اید، که اینجا و در فهرست نوشته‌ها نشان داده می‌شوند." -#: tmp/i18n/screens/Settings.js:123 +#: tmp/i18n/screens/Settings.js:120 msgid "Never sent" msgstr "هرگز فرستاده نمی‌شود" -#: tmp/i18n/screens/Settings.js:123 +#: tmp/i18n/screens/Settings.js:120 msgid "Drafts, private posts, comments, emails, passwords, plugin or theme settings." msgstr "پیش‌نویس‌ها، نوشته‌های خصوصی، دیدگاه‌ها، ایمیل‌ها، گذرواژه‌ها، تنظیمات افزونه یا پوسته." -#: tmp/i18n/screens/Settings.js:124 +#: tmp/i18n/screens/Settings.js:121 msgid "Can change" msgstr "می‌تواند تغییر دهد" -#: tmp/i18n/screens/Settings.js:124 +#: tmp/i18n/screens/Settings.js:121 msgid "SEO title, meta description, canonical, noindex, image alt text, redirects, one opening paragraph, AI crawler rules, llms.txt. Only after you approve each one." msgstr "عنوان سئو، توضیح متا، کانونیکال، noindex، متن جایگزین تصویر، تغییر مسیرها، یک پاراگراف آغازین، قوانین خزنده‌های هوش مصنوعی، llms.txt. فقط پس از آنکه هرکدام را تأیید کنید." -#: tmp/i18n/screens/Settings.js:130 +#: tmp/i18n/screens/Settings.js:128 msgid "Last 50 · undo for 30 days" msgstr "۵۰ مورد آخر · بازگردانی تا ۳۰ روز" -#: tmp/i18n/screens/Settings.js:138 +#: tmp/i18n/screens/Settings.js:136 msgid "Danger zone" msgstr "منطقهٔ خطر" -#: tmp/i18n/screens/Settings.js:140 -msgid "This site is not connected to MonoRanks. You can erase everything the plugin stored here: the connection, the scores on your posts and pages, the redirects and AI access files it was asked to write, and the change log. Pages themselves are not touched — a fix that was written stays written, so undo those first if you want them back." -msgstr "این سایت به مونورنکس متصل نیست. می‌توانید هر چه افزونه اینجا ذخیره کرده پاک کنید: اتصال، امتیاز نوشته‌ها و برگه‌ها، تغییر مسیرها و فایل‌های دسترسی هوش مصنوعی که نوشته شده‌اند، و فهرست تغییرات. خود صفحه‌ها دست‌نخورده می‌مانند؛ اصلاحی که نوشته شده نوشته می‌ماند، پس اگر می‌خواهید برگردد ابتدا آن را بازگردانی کنید." +#: tmp/i18n/screens/Settings.js:136 +msgid "Erases the connection, scores, redirects, AI files and change log. Written fixes stay." +msgstr "اتصال، امتیازها، تغییر مسیرها، فایل‌های هوش مصنوعی و گزارش تغییرات را پاک می‌کند. اصلاح‌های نوشته‌شده می‌مانند." -#: tmp/i18n/screens/Settings.js:142 +#: tmp/i18n/screens/Settings.js:139 msgid "This cannot be undone. Delete everything?" msgstr "این کار برگشت‌پذیر نیست. همه چیز پاک شود؟" -#: tmp/i18n/screens/Settings.js:146 +#: tmp/i18n/screens/Settings.js:143 msgid "Yes, delete all data" msgstr "بله، همهٔ داده‌ها پاک شود" -#: tmp/i18n/screens/Settings.js:147 +#: tmp/i18n/screens/Settings.js:144 msgid "Cancel" msgstr "انصراف" -#: tmp/i18n/screens/Settings.js:148 +#: tmp/i18n/screens/Settings.js:145 msgid "Delete all MonoRanks data" msgstr "پاک کردن همهٔ داده‌های مونورنکس" -#: tmp/i18n/screens/Settings.js:163 +#: tmp/i18n/screens/Settings.js:160 msgid "MonoRanks address (development sites only)" msgstr "نشانی مونورنکس (فقط سایت‌های توسعه)" diff --git a/languages/monoranks.pot b/languages/monoranks.pot index dc795e9..3441919 100644 --- a/languages/monoranks.pot +++ b/languages/monoranks.pot @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2026-10-14T11:51:44+00:00\n" +"POT-Creation-Date: 2026-10-17T10:10:17+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.12.0\n" "X-Domain: monoranks\n" @@ -48,7 +48,7 @@ msgstr "" #: resources/views/column-cell.php:20 #: resources/views/post-panel.php:25 -#: tmp/i18n/screens/Overview.js:182 +#: tmp/i18n/screens/Overview.js:181 msgid "Connect MonoRanks" msgstr "" @@ -59,19 +59,18 @@ msgstr "" #: resources/views/column-cell.php:27 #: resources/views/column-cell.php:38 #: resources/views/post-panel.php:35 -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "Health" msgstr "" #: resources/views/column-cell.php:27 #: resources/views/column-cell.php:38 #: resources/views/post-panel.php:35 -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "AEO" msgstr "" #: resources/views/column-cell.php:30 -#: tmp/i18n/screens/Settings.js:86 msgid "Status" msgstr "" @@ -108,13 +107,13 @@ msgid "Not checked: MonoRanks reads AEO on a sample of pages" msgstr "" #: resources/views/column-cell.php:41 -#: tmp/i18n/screens/Overview.js:96 +#: tmp/i18n/screens/Overview.js:97 msgid "Fixes" msgstr "" #. translators: %s: number #: resources/views/column-cell.php:43 -#: tmp/i18n/screens/Overview.js:135 +#: tmp/i18n/screens/Overview.js:136 #, php-format,js-format msgid "%s ready to apply" msgid_plural "%s ready to apply" @@ -155,6 +154,7 @@ msgid "Open in MonoRanks" msgstr "" #: resources/views/partials/score-ring.php:16 +#: tmp/i18n/screens/Overview.js:197 #: tmp/i18n/shell/Ring.js:14 msgid "Not scored yet" msgstr "" @@ -194,7 +194,7 @@ msgid "Search data arrives with the next refresh." msgstr "" #: resources/views/post-panel.php:49 -#: tmp/i18n/screens/Overview.js:93 +#: tmp/i18n/screens/Overview.js:94 msgid "Connect Google Search Console in MonoRanks to see clicks here." msgstr "" @@ -296,7 +296,7 @@ msgstr "" #: src/Admin.php:47 #: src/Assets.php:67 -#: tmp/i18n/screens/Overview.js:75 +#: tmp/i18n/screens/Overview.js:76 #: tmp/i18n/shell/Shell.js:14 msgid "Overview" msgstr "" @@ -307,7 +307,7 @@ msgid "MonoRanks settings" msgstr "" #: src/Admin.php:48 -#: tmp/i18n/screens/Settings.js:73 +#: tmp/i18n/screens/Settings.js:74 #: tmp/i18n/shell/Shell.js:15 msgid "Settings" msgstr "" @@ -324,78 +324,93 @@ msgstr "" msgid "%1$s ago (%2$s)" msgstr "" -#: src/Admin.php:177 +#. translators: %s: relative time, e.g. 3 minutes +#. translators: %s: relative time such as "5 days" +#: src/Admin.php:181 +#: src/Column.php:63 +#, php-format +msgid "in %s" +msgstr "" + +#. translators: %s: relative time, e.g. 3 minutes +#. translators: %s: relative time such as "2 days" +#: src/Admin.php:181 +#: src/Column.php:78 +#: src/Column.php:92 +#, php-format +msgid "%s ago" +msgstr "" + +#: src/Admin.php:193 msgid "Connected. Your published content is on its way to MonoRanks." msgstr "" -#: src/Admin.php:178 +#: src/Admin.php:194 msgid "Content sent to MonoRanks." msgstr "" -#: src/Admin.php:179 +#: src/Admin.php:195 msgid "Disconnected. Nothing is sent to MonoRanks any more." msgstr "" -#: src/Admin.php:180 +#: src/Admin.php:196 msgid "Everything MonoRanks stored in WordPress is gone: the connection, the scores, the redirects and the change log." msgstr "" -#: src/Admin.php:181 +#: src/Admin.php:197 msgid "Applied. The change is listed under Recent changes and can be undone." msgstr "" -#: src/Admin.php:182 +#: src/Admin.php:198 msgid "Some fixes were applied; the rest could not be applied. Recent changes lists what was written." msgstr "" -#: src/Admin.php:183 +#: src/Admin.php:199 msgid "That change has moved in the log since this screen loaded. Reload and try Undo again." msgstr "" -#: src/Admin.php:184 +#: src/Admin.php:200 msgid "Undone. The previous value is back." msgstr "" -#: src/Admin.php:185 +#: src/Admin.php:201 msgid "MonoRanks could not apply that change. Open it in MonoRanks to review it again." msgstr "" -#: src/Admin.php:186 +#: src/Admin.php:202 msgid "Nothing was changed: the value in WordPress is not the one that was reviewed. It now needs review in MonoRanks." msgstr "" -#: src/Admin.php:187 +#: src/Admin.php:203 msgid "Some changes were applied. The others no longer match WordPress and need review in MonoRanks." msgstr "" -#: src/Admin.php:188 +#: src/Admin.php:204 msgid "That does not look like a MonoRanks connector key. Copy it again from MonoRanks → Settings → API and MCP." msgstr "" -#: src/Admin.php:189 +#: src/Admin.php:205 msgid "The MonoRanks address must start with https://." msgstr "" -#: src/Admin.php:190 +#: src/Admin.php:206 msgid "MonoRanks did not accept this key. It may have been revoked or replaced; create a new one in MonoRanks." msgstr "" -#: src/Admin.php:191 +#: src/Admin.php:207 msgid "This key belongs to a different website in MonoRanks. Create the key on the website with this address." msgstr "" -#: src/Admin.php:192 +#: src/Admin.php:208 msgid "MonoRanks could not be reached. Check the address and try again." msgstr "" -#: src/AuthorizeScreen.php:39 -msgid "Reads your content and applies only fixes you approve." +#: src/Admin.php:209 +msgid "Could not connect. Please try again." msgstr "" -#. translators: %s: relative time such as "5 days" -#: src/Column.php:63 -#, php-format -msgid "in %s" +#: src/AuthorizeScreen.php:39 +msgid "Reads your content and applies only fixes you approve." msgstr "" #. translators: %s: relative time such as "in 5 days" @@ -404,13 +419,6 @@ msgstr "" msgid "next audit %s" msgstr "" -#. translators: %s: relative time such as "2 days" -#: src/Column.php:78 -#: src/Column.php:92 -#, php-format -msgid "%s ago" -msgstr "" - #: src/Column.php:121 msgid "Clicks, 28 days" msgstr "" @@ -556,7 +564,7 @@ msgid "Image #%d" msgstr "" #: src/Overview.php:70 -#: tmp/i18n/screens/Overview.js:29 +#: tmp/i18n/screens/Overview.js:30 msgid "Site" msgstr "" @@ -597,12 +605,12 @@ msgid "Internal links" msgstr "" #: src/PostPanel.php:162 -#: tmp/i18n/screens/Overview.js:84 +#: tmp/i18n/screens/Overview.js:85 msgid "Health score" msgstr "" #: src/PostPanel.php:163 -#: tmp/i18n/screens/Overview.js:88 +#: tmp/i18n/screens/Overview.js:89 msgid "AEO score" msgstr "" @@ -613,19 +621,24 @@ msgid "%1$s %2$s → %3$s" msgstr "" #. translators: 1: user, 2: date -#: src/Settings.php:42 +#: src/Settings.php:44 #, php-format msgid "set when %1$s connected MonoRanks on %2$s" msgstr "" -#: src/Settings.php:43 +#: src/Settings.php:45 msgid "pasted by hand" msgstr "" -#: src/Settings.php:45 +#: src/Settings.php:47 +#: src/Settings.php:48 msgid "Never" msgstr "" +#: tmp/i18n/components/ui/tip.js:10 +msgid "More info" +msgstr "" + #: tmp/i18n/screens/Grow.js:18 #: tmp/i18n/screens/Grow.js:26 msgid "What to do next" @@ -850,335 +863,331 @@ msgstr "" msgid "Open report" msgstr "" -#: tmp/i18n/screens/Overview.js:34 +#: tmp/i18n/screens/Overview.js:35 #, js-format msgid "on %s" msgstr "" -#: tmp/i18n/screens/Overview.js:36 +#: tmp/i18n/screens/Overview.js:37 #, js-format msgid "Image: %s" msgstr "" -#: tmp/i18n/screens/Overview.js:37 +#: tmp/i18n/screens/Overview.js:38 msgid "Adds one answer-first paragraph at the top. Review the before/after in MonoRanks first." msgstr "" -#: tmp/i18n/screens/Overview.js:38 +#: tmp/i18n/screens/Overview.js:39 msgid "(empty)" msgstr "" -#: tmp/i18n/screens/Overview.js:40 +#: tmp/i18n/screens/Overview.js:41 msgid "changes to" msgstr "" -#: tmp/i18n/screens/Overview.js:54 +#: tmp/i18n/screens/Overview.js:55 msgid "Could not load the overview." msgstr "" -#: tmp/i18n/screens/Overview.js:64 -#: tmp/i18n/screens/Settings.js:65 +#: tmp/i18n/screens/Overview.js:65 +#: tmp/i18n/screens/Settings.js:66 msgid "Something went wrong. Try again." msgstr "" -#: tmp/i18n/screens/Overview.js:73 +#: tmp/i18n/screens/Overview.js:74 msgid "Weekly SEO, AEO and GEO audit of" msgstr "" -#: tmp/i18n/screens/Overview.js:73 +#: tmp/i18n/screens/Overview.js:74 #, js-format msgid "last audit %s" msgstr "" -#: tmp/i18n/screens/Overview.js:73 +#: tmp/i18n/screens/Overview.js:74 #, js-format msgid "%1$s of %2$s published pages scored" msgstr "" -#: tmp/i18n/screens/Overview.js:73 -msgid "Weekly SEO, AEO and GEO audits, with the fixes you approve written into WordPress." -msgstr "" - -#: tmp/i18n/screens/Overview.js:74 +#: tmp/i18n/screens/Overview.js:75 msgid "Sync content now" msgstr "" -#: tmp/i18n/screens/Overview.js:85 +#: tmp/i18n/screens/Overview.js:86 msgid "Technical, on-page, links, speed" msgstr "" -#: tmp/i18n/screens/Overview.js:85 +#: tmp/i18n/screens/Overview.js:86 #, js-format msgid "Site average, %s page" msgid_plural "Site average, %s pages" msgstr[0] "" msgstr[1] "" -#: tmp/i18n/screens/Overview.js:89 +#: tmp/i18n/screens/Overview.js:90 msgid "Answer-first, structure, entities" msgstr "" -#: tmp/i18n/screens/Overview.js:89 +#: tmp/i18n/screens/Overview.js:90 msgid "How well AI answers can use your pages" msgstr "" -#: tmp/i18n/screens/Overview.js:92 +#: tmp/i18n/screens/Overview.js:93 msgid "Search clicks, 28 days" msgstr "" -#: tmp/i18n/screens/Overview.js:93 +#: tmp/i18n/screens/Overview.js:94 msgid "From Google Search Console, through MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:96 +#: tmp/i18n/screens/Overview.js:97 #, js-format msgid "%s ready" msgstr "" -#: tmp/i18n/screens/Overview.js:97 +#: tmp/i18n/screens/Overview.js:98 msgid "applied in 30 days" msgstr "" -#: tmp/i18n/screens/Overview.js:98 +#: tmp/i18n/screens/Overview.js:99 #, js-format msgid "%s waiting for your approval in MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:100 +#: tmp/i18n/screens/Overview.js:101 msgid "AI crawler rules on" msgstr "" -#: tmp/i18n/screens/Overview.js:100 +#: tmp/i18n/screens/Overview.js:101 msgid "No AI crawler rules" msgstr "" -#: tmp/i18n/screens/Overview.js:101 +#: tmp/i18n/screens/Overview.js:102 msgid "llms.txt published" msgstr "" -#: tmp/i18n/screens/Overview.js:101 +#: tmp/i18n/screens/Overview.js:102 msgid "No llms.txt" msgstr "" -#: tmp/i18n/screens/Overview.js:110 +#: tmp/i18n/screens/Overview.js:111 msgid "Pages needing attention" msgstr "" -#: tmp/i18n/screens/Overview.js:110 +#: tmp/i18n/screens/Overview.js:111 msgid "All pages in MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "Page" msgstr "" -#: tmp/i18n/screens/Overview.js:113 +#: tmp/i18n/screens/Overview.js:114 msgid "Biggest issue" msgstr "" -#: tmp/i18n/screens/Overview.js:120 +#: tmp/i18n/screens/Overview.js:121 msgid "Fix in MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:124 +#: tmp/i18n/screens/Overview.js:125 msgid "Nothing needs attention" msgstr "" -#: tmp/i18n/screens/Overview.js:124 +#: tmp/i18n/screens/Overview.js:125 msgid "Every scored page is above 60. The next audit may change that." msgstr "" -#: tmp/i18n/screens/Overview.js:129 +#: tmp/i18n/screens/Overview.js:130 msgid "Ready to apply" msgstr "" #: tmp/i18n/screens/Overview.js:130 +msgid "Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days." +msgstr "" + +#: tmp/i18n/screens/Overview.js:131 msgid "Apply all" msgstr "" -#: tmp/i18n/screens/Overview.js:135 +#: tmp/i18n/screens/Overview.js:136 #, js-format msgid "%s fixes are ready for your approval" msgstr "" -#: tmp/i18n/screens/Overview.js:135 +#: tmp/i18n/screens/Overview.js:136 #, js-format msgid "%s needs a value in MonoRanks" msgid_plural "%s need a value in MonoRanks" msgstr[0] "" msgstr[1] "" -#: tmp/i18n/screens/Overview.js:136 +#: tmp/i18n/screens/Overview.js:137 msgid "Type a value or draft one with AI in MonoRanks, approve it, and it is written here, with undo." msgstr "" -#: tmp/i18n/screens/Overview.js:136 +#: tmp/i18n/screens/Overview.js:137 msgid "Approve them in MonoRanks and they are written here, with undo." msgstr "" -#: tmp/i18n/screens/Overview.js:141 -#: tmp/i18n/screens/Overview.js:157 +#: tmp/i18n/screens/Overview.js:142 +#: tmp/i18n/screens/Overview.js:156 msgid "Review in MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:143 +#: tmp/i18n/screens/Overview.js:144 msgid "No fixes waiting" msgstr "" -#: tmp/i18n/screens/Overview.js:143 +#: tmp/i18n/screens/Overview.js:144 msgid "Fixes you approve in MonoRanks appear here, ready to write into WordPress." msgstr "" -#: tmp/i18n/screens/Overview.js:146 +#: tmp/i18n/screens/Overview.js:147 msgid "Review" msgstr "" -#: tmp/i18n/screens/Overview.js:146 +#: tmp/i18n/screens/Overview.js:147 msgid "Apply" msgstr "" -#: tmp/i18n/screens/Overview.js:148 -msgid "Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days." -msgstr "" - #: tmp/i18n/screens/Overview.js:152 msgid "Needs review in MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:154 +#: tmp/i18n/screens/Overview.js:152 msgid "These changed in WordPress after they were reviewed, so they are not applied from here. Review them again in MonoRanks." msgstr "" -#: tmp/i18n/screens/Overview.js:164 -#: tmp/i18n/screens/Settings.js:130 +#: tmp/i18n/screens/Overview.js:163 +#: tmp/i18n/screens/Settings.js:128 msgid "Recent changes" msgstr "" -#: tmp/i18n/screens/Overview.js:167 +#: tmp/i18n/screens/Overview.js:166 msgid "All changes" msgstr "" -#: tmp/i18n/screens/Overview.js:182 +#: tmp/i18n/screens/Overview.js:181 msgid "Connect MonoRanks again" msgstr "" -#: tmp/i18n/screens/Overview.js:182 -#: tmp/i18n/screens/Settings.js:81 +#: tmp/i18n/screens/Overview.js:181 +#: tmp/i18n/screens/Settings.js:82 msgid "Key revoked" msgstr "" -#: tmp/i18n/screens/Overview.js:182 -#: tmp/i18n/screens/Settings.js:81 +#: tmp/i18n/screens/Overview.js:181 +#: tmp/i18n/screens/Settings.js:82 msgid "Not connected" msgstr "" -#: tmp/i18n/screens/Overview.js:184 -#: tmp/i18n/screens/Settings.js:99 +#: tmp/i18n/screens/Overview.js:183 +#: tmp/i18n/screens/Settings.js:98 msgid "Connect to MonoRanks" msgstr "" -#: tmp/i18n/screens/Overview.js:184 -#: tmp/i18n/screens/Settings.js:99 +#: tmp/i18n/screens/Overview.js:183 +#: tmp/i18n/screens/Settings.js:98 msgid "Sign in and approve. Takes a minute." msgstr "" -#: tmp/i18n/screens/Overview.js:184 -#: tmp/i18n/screens/Settings.js:99 -#: tmp/i18n/screens/Settings.js:164 +#: tmp/i18n/screens/Overview.js:183 +#: tmp/i18n/screens/Settings.js:98 +#: tmp/i18n/screens/Settings.js:161 msgid "Connect" msgstr "" -#: tmp/i18n/screens/Overview.js:185 -#: tmp/i18n/screens/Settings.js:100 +#: tmp/i18n/screens/Overview.js:184 +#: tmp/i18n/screens/Settings.js:99 msgid "Or paste a connector key" msgstr "" -#: tmp/i18n/screens/Overview.js:185 -#: tmp/i18n/screens/Settings.js:100 +#: tmp/i18n/screens/Overview.js:184 +#: tmp/i18n/screens/Settings.js:99 msgid "Use this when your host blocks Application Passwords." msgstr "" -#: tmp/i18n/screens/Overview.js:188 +#: tmp/i18n/screens/Overview.js:187 msgid "Open settings" msgstr "" -#: tmp/i18n/screens/Overview.js:189 +#: tmp/i18n/screens/Overview.js:188 msgid "See scores here and in your Posts list" msgstr "" -#: tmp/i18n/screens/Overview.js:189 -msgid "After the first audit this page shows the site's health and AEO scores, pages needing attention and the fixes you approved; every post and page gets its scores in the list." +#: tmp/i18n/screens/Overview.js:197 +msgid "Not shared yet" msgstr "" -#: tmp/i18n/screens/Overview.js:198 +#: tmp/i18n/screens/Overview.js:197 msgid "This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow." msgstr "" -#: tmp/i18n/screens/Overview.js:198 +#: tmp/i18n/screens/Overview.js:197 +msgid "MonoRanks not reached" +msgstr "" + +#: tmp/i18n/screens/Overview.js:197 msgid "MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen." msgstr "" -#: tmp/i18n/screens/Overview.js:198 +#: tmp/i18n/screens/Overview.js:197 msgid "MonoRanks has not scored this site yet. Scores appear here and in the Posts list after the first weekly audit." msgstr "" -#: tmp/i18n/screens/Overview.js:200 +#: tmp/i18n/screens/Overview.js:199 msgid "Waiting for the first audit" msgstr "" -#: tmp/i18n/screens/Overview.js:200 -#: tmp/i18n/screens/Settings.js:81 +#: tmp/i18n/screens/Overview.js:199 +#: tmp/i18n/screens/Settings.js:82 msgid "Connected" msgstr "" -#: tmp/i18n/screens/Overview.js:203 +#: tmp/i18n/screens/Overview.js:202 msgid "Content" msgstr "" -#: tmp/i18n/screens/Overview.js:203 +#: tmp/i18n/screens/Overview.js:202 #, js-format msgid "%1$s published items sent %2$s" msgstr "" -#: tmp/i18n/screens/Overview.js:203 +#: tmp/i18n/screens/Overview.js:202 msgid "Not sent yet. Use \"Sync content now\" above." msgstr "" -#: tmp/i18n/screens/Overview.js:204 +#: tmp/i18n/screens/Overview.js:203 msgid "Audit results" msgstr "" -#: tmp/i18n/screens/Overview.js:204 +#: tmp/i18n/screens/Overview.js:203 #, js-format msgid "checked %s" msgstr "" -#: tmp/i18n/screens/Overview.js:206 +#: tmp/i18n/screens/Overview.js:205 msgid "Open the audit in MonoRanks" msgstr "" -#: tmp/i18n/screens/Settings.js:28 +#: tmp/i18n/screens/Settings.js:29 msgid "Could not load the settings." msgstr "" -#: tmp/i18n/screens/Settings.js:73 -msgid "Connection, what is sent, and every change written into this site." -msgstr "" - -#: tmp/i18n/screens/Settings.js:80 +#: tmp/i18n/screens/Settings.js:81 msgid "Connection" msgstr "" -#: tmp/i18n/screens/Settings.js:86 +#: tmp/i18n/screens/Settings.js:82 msgid "MonoRanks no longer accepts this key. Connect again from MonoRanks or paste a new key below." msgstr "" -#: tmp/i18n/screens/Settings.js:86 +#: tmp/i18n/screens/Settings.js:82 msgid "Sending published content to MonoRanks. Nothing else leaves this site." msgstr "" #: tmp/i18n/screens/Settings.js:87 -#: tmp/i18n/screens/Settings.js:162 +#: tmp/i18n/screens/Settings.js:159 msgid "Connector key" msgstr "" @@ -1203,15 +1212,15 @@ msgid "Fixes written with" msgstr "" #: tmp/i18n/screens/Settings.js:90 -msgid "The \"MonoRanks\" Application Password" +msgid "App password" msgstr "" #: tmp/i18n/screens/Settings.js:90 -msgid "revoke it in your profile" +msgid "Fixes are written with the \"MonoRanks\" Application Password. Revoke it in your profile to stop writes." msgstr "" #: tmp/i18n/screens/Settings.js:90 -msgid "to stop writes" +msgid "Revoke" msgstr "" #: tmp/i18n/screens/Settings.js:91 @@ -1246,86 +1255,86 @@ msgid "Send content now" msgstr "" #: tmp/i18n/screens/Settings.js:95 -msgid "Disconnect" +msgid "Disconnect stops sending. Fixes already applied stay." msgstr "" -#: tmp/i18n/screens/Settings.js:96 -msgid "Disconnect stops sending. Fixes already applied stay." +#: tmp/i18n/screens/Settings.js:95 +msgid "Disconnect" msgstr "" -#: tmp/i18n/screens/Settings.js:107 +#: tmp/i18n/screens/Settings.js:106 msgid "Use a different key" msgstr "" -#: tmp/i18n/screens/Settings.js:110 -msgid "In MonoRanks: Settings → API and MCP → New credential with the content:write scope, ticked for this website. Paste it here. With a key alone MonoRanks receives your content; to apply fixes, also use Connect to WordPress in MonoRanks." +#: tmp/i18n/screens/Settings.js:108 +msgid "In MonoRanks: Settings → API and MCP → New credential, content:write, this website." msgstr "" -#: tmp/i18n/screens/Settings.js:118 +#: tmp/i18n/screens/Settings.js:115 msgid "What is sent" msgstr "" -#: tmp/i18n/screens/Settings.js:121 +#: tmp/i18n/screens/Settings.js:118 msgid "Sent" msgstr "" -#: tmp/i18n/screens/Settings.js:121 +#: tmp/i18n/screens/Settings.js:118 msgid "Published titles, a 40-word excerpt, dates, authors, categories, tags, SEO fields, image alt text and plugin status." msgstr "" -#: tmp/i18n/screens/Settings.js:122 +#: tmp/i18n/screens/Settings.js:119 msgid "Read back" msgstr "" -#: tmp/i18n/screens/Settings.js:122 +#: tmp/i18n/screens/Settings.js:119 msgid "This website's audit results: scores, issues and the fixes you approved, shown here and in the Posts list." msgstr "" -#: tmp/i18n/screens/Settings.js:123 +#: tmp/i18n/screens/Settings.js:120 msgid "Never sent" msgstr "" -#: tmp/i18n/screens/Settings.js:123 +#: tmp/i18n/screens/Settings.js:120 msgid "Drafts, private posts, comments, emails, passwords, plugin or theme settings." msgstr "" -#: tmp/i18n/screens/Settings.js:124 +#: tmp/i18n/screens/Settings.js:121 msgid "Can change" msgstr "" -#: tmp/i18n/screens/Settings.js:124 +#: tmp/i18n/screens/Settings.js:121 msgid "SEO title, meta description, canonical, noindex, image alt text, redirects, one opening paragraph, AI crawler rules, llms.txt. Only after you approve each one." msgstr "" -#: tmp/i18n/screens/Settings.js:130 +#: tmp/i18n/screens/Settings.js:128 msgid "Last 50 · undo for 30 days" msgstr "" -#: tmp/i18n/screens/Settings.js:138 +#: tmp/i18n/screens/Settings.js:136 msgid "Danger zone" msgstr "" -#: tmp/i18n/screens/Settings.js:140 -msgid "This site is not connected to MonoRanks. You can erase everything the plugin stored here: the connection, the scores on your posts and pages, the redirects and AI access files it was asked to write, and the change log. Pages themselves are not touched — a fix that was written stays written, so undo those first if you want them back." +#: tmp/i18n/screens/Settings.js:136 +msgid "Erases the connection, scores, redirects, AI files and change log. Written fixes stay." msgstr "" -#: tmp/i18n/screens/Settings.js:142 +#: tmp/i18n/screens/Settings.js:139 msgid "This cannot be undone. Delete everything?" msgstr "" -#: tmp/i18n/screens/Settings.js:146 +#: tmp/i18n/screens/Settings.js:143 msgid "Yes, delete all data" msgstr "" -#: tmp/i18n/screens/Settings.js:147 +#: tmp/i18n/screens/Settings.js:144 msgid "Cancel" msgstr "" -#: tmp/i18n/screens/Settings.js:148 +#: tmp/i18n/screens/Settings.js:145 msgid "Delete all MonoRanks data" msgstr "" -#: tmp/i18n/screens/Settings.js:163 +#: tmp/i18n/screens/Settings.js:160 msgid "MonoRanks address (development sites only)" msgstr "" diff --git a/monoranks.php b/monoranks.php index 923eaa3..821ff1e 100644 --- a/monoranks.php +++ b/monoranks.php @@ -45,6 +45,7 @@ add_action( \MonoRanks\Sync::DAILY_HOOK, array( 'MonoRanks\\Sync', 'daily' ) ); \MonoRanks\SeoFields::register_output(); \MonoRanks\Admin::register(); +\MonoRanks\Handoff::register(); \MonoRanks\AuthorizeScreen::register(); \MonoRanks\Assets::register(); \MonoRanks\Column::register(); diff --git a/resources/admin/src/components/ui/tip.tsx b/resources/admin/src/components/ui/tip.tsx new file mode 100644 index 0000000..2eaddd3 --- /dev/null +++ b/resources/admin/src/components/ui/tip.tsx @@ -0,0 +1,28 @@ +import * as React from 'react'; +import { __ } from '@wordpress/i18n'; +import { Info } from 'lucide-react'; +import { cn } from '@/lib/utils'; + +/** + * A short explanation behind a hover or keyboard focus, so rows can stay one short line. Without children it shows a small + * (i) button; with one child (a chip, a time, a button) that child is the trigger. Escape closes it. + */ +export function Tip({ text, children, className, align = 'center' }: { text: React.ReactNode; children?: React.ReactElement>; className?: string; align?: 'center' | 'start' | 'end' }) { + const id = React.useId(); + const [open, setOpen] = React.useState(false); + const show = () => setOpen(true); + const hide = () => setOpen(false); + const trigger = children + ? React.cloneElement(children, { 'aria-describedby': id, tabIndex: (children.props.tabIndex as number | undefined) ?? 0 }) + : ( + + ); + return ( + { if (e.key === 'Escape') hide(); }}> + {trigger} + {text} + + ); +} diff --git a/resources/admin/src/lib/api.ts b/resources/admin/src/lib/api.ts index e6795b3..3bb8d66 100644 --- a/resources/admin/src/lib/api.ts +++ b/resources/admin/src/lib/api.ts @@ -32,7 +32,7 @@ export type OverviewData = { export type SettingsData = { connected: boolean; revoked: boolean; state: 'connected' | 'revoked' | 'none'; has_data: boolean; - key_hint: string; key_via: string; api_base: string; last_sent: string; last_error: string; + key_hint: string; key_via: string; api_base: string; last_sent: string; last_sent_short: string; last_sent_date: string; last_error: string; sending: null | { page: number; pages: number }; items: number; next_audit: string; seo_plugin: string; seo_supported: boolean; profile_url: string; show_address: boolean; app_url: string; connect_url: string; log: LogRow[]; labels: Record; }; diff --git a/resources/admin/src/screens/Overview.tsx b/resources/admin/src/screens/Overview.tsx index e705b3e..30c76ba 100644 --- a/resources/admin/src/screens/Overview.tsx +++ b/resources/admin/src/screens/Overview.tsx @@ -11,6 +11,7 @@ import type { Screen } from '@/lib/screen'; import { fmt } from '@/lib/format'; import { Button } from '@/components/ui/button'; import { Badge, Dot } from '@/components/ui/badge'; +import { Tip } from '@/components/ui/tip'; import { GrowCards } from '@/screens/Grow'; const th = 'whitespace-nowrap border-b border-border px-[10px] py-[11px] text-start text-[12px] font-medium text-mute'; @@ -89,7 +90,7 @@ export function Overview({ go }: { go: (next: Screen) => void }) { const description = data ? o ? <>{__('Weekly SEO, AEO and GEO audit of', 'monoranks')} {data.host}{data.audited && <> · {sprintf(__('last audit %s', 'monoranks'), data.audited)}}{o.pages_total > 0 && <> · {sprintf(__('%1$s of %2$s published pages scored', 'monoranks'), fmt(o.pages_scored), fmt(o.pages_total))}} - : __('Weekly SEO, AEO and GEO audits, with the fixes you approve written into WordPress.', 'monoranks') + : undefined : ' '; const actions = data?.connected ? ( @@ -160,19 +161,19 @@ export function Overview({ go }: { go: (next: Screen) => void }) { - {__('Ready to apply', 'monoranks')}{o.ready.length > 0 && {fmt(o.ready.length)}} + {__('Ready to apply', 'monoranks')}{o.ready.length > 0 && {fmt(o.ready.length)}}{o.ready.length > 0 && } {o.ready.length > 1 && } {o.ready.length === 0 && review && (
-
+
{need === null ? ( {sprintf(__('%s fixes are ready for your approval', 'monoranks'), fmt(review.total))} ) : ( {[review.total > 0 && sprintf(_n('%s ready to apply', '%s ready to apply', review.total, 'monoranks'), fmt(review.total)), need > 0 && sprintf(_n('%s needs a value in MonoRanks', '%s need a value in MonoRanks', need, 'monoranks'), fmt(need))].filter(Boolean).join(' · ')} )} - {need !== null && need > 0 ? __('Type a value or draft one with AI in MonoRanks, approve it, and it is written here, with undo.', 'monoranks') : __('Approve them in MonoRanks and they are written here, with undo.', 'monoranks')} + 0 ? __('Type a value or draft one with AI in MonoRanks, approve it, and it is written here, with undo.', 'monoranks') : __('Approve them in MonoRanks and they are written here, with undo.', 'monoranks')} />
{Object.entries(review.by_field).sort((a, b) => b[1] - a[1]).map(([field, n]) => {data.labels[field] ?? field}{fmt(n)})} @@ -191,14 +192,12 @@ export function Overview({ go }: { go: (next: Screen) => void }) { )}
))} - {o.ready.length > 0 &&
{__('Approved in MonoRanks. Each write is logged under Settings and can be undone for 30 days.', 'monoranks')}
} {(o.needs_review ?? []).length > 0 && ( - {__('Needs review in MonoRanks', 'monoranks')}{fmt(o.needs_review.length)} + {__('Needs review in MonoRanks', 'monoranks')}{fmt(o.needs_review.length)} -

{__('These changed in WordPress after they were reviewed, so they are not applied from here. Review them again in MonoRanks.', 'monoranks')}

{o.needs_review.map((fix) => (
@@ -231,8 +230,8 @@ export function ConnectSteps({ revoked, go }: { revoked: boolean; go: (next: Scr {revoked ? __('Connect MonoRanks again', 'monoranks') : __('Connect MonoRanks', 'monoranks')}{revoked ? __('Key revoked', 'monoranks') : __('Not connected', 'monoranks')} {__('Connect to MonoRanks', 'monoranks')}{__('Sign in and approve. Takes a minute.', 'monoranks')} - {__('Or paste a connector key', 'monoranks')}{__('Use this when your host blocks Application Passwords.', 'monoranks')} - {__('See scores here and in your Posts list', 'monoranks')}{__("After the first audit this page shows the site's health and AEO scores, pages needing attention and the fixes you approved; every post and page gets its scores in the list.", 'monoranks')} + {__('Or paste a connector key', 'monoranks')} + {__('See scores here and in your Posts list', 'monoranks')} ); @@ -244,18 +243,18 @@ export function Step({ n, later, children }: { n: number; later?: boolean; child function Waiting({ data }: { data: OverviewData }) { const kind = data.status; - const results = kind === 'unsupported' - ? __('This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow.', 'monoranks') + const [short, results] = kind === 'unsupported' + ? [__('Not shared yet', 'monoranks'), __('This MonoRanks does not share audit results with the plugin yet. Scores stay in MonoRanks for now; the plugin asks again tomorrow.', 'monoranks')] : kind === 'error' - ? __('MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen.', 'monoranks') - : __('MonoRanks has not scored this site yet. Scores appear here and in the Posts list after the first weekly audit.', 'monoranks'); + ? [__('MonoRanks not reached', 'monoranks'), __('MonoRanks could not be reached for the audit results. The plugin tries again within the hour, or when you reload this screen.', 'monoranks')] + : [__('Not scored yet', 'monoranks'), __('MonoRanks has not scored this site yet. Scores appear here and in the Posts list after the first weekly audit.', 'monoranks')]; return ( {__('Waiting for the first audit', 'monoranks')}{__('Connected', 'monoranks')} {results}{data.fetched && · {sprintf(__('checked %s', 'monoranks'), data.fetched)}}], + [__('Audit results', 'monoranks'), {short}{results} · {sprintf(__('checked %s', 'monoranks'), data.fetched)} : results} />], ]} /> diff --git a/resources/admin/src/screens/Settings.tsx b/resources/admin/src/screens/Settings.tsx index 3536115..143dcf5 100644 --- a/resources/admin/src/screens/Settings.tsx +++ b/resources/admin/src/screens/Settings.tsx @@ -10,6 +10,7 @@ import { Card, CardHeader, CardTitle, CardBody } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge, Dot } from '@/components/ui/badge'; import { Input } from '@/components/ui/input'; +import { Tip } from '@/components/ui/tip'; import { out } from '@/lib/links'; import type { Screen } from '@/lib/screen'; import { fmt } from '@/lib/format'; @@ -64,7 +65,7 @@ export function Settings({ go }: { go: (next: Screen) => void }) { const revoked = !!data?.revoked; return ( - + {error && } {!data && !error && } @@ -73,33 +74,33 @@ export function Settings({ go }: { go: (next: Screen) => void }) {
{__('Connection', 'monoranks')}
- {revoked ? __('Key revoked', 'monoranks') : connected ? __('Connected', 'monoranks') : __('Not connected', 'monoranks')} + {connected + ? {revoked ? __('Key revoked', 'monoranks') : __('Connected', 'monoranks')} + : {__('Not connected', 'monoranks')}}
{connected ? ( <> {data.key_hint}{data.key_via}], - [__('Last sync', 'monoranks'), {data.last_sent}{data.sending && {sprintf(__('sending, batch %1$s of %2$s', 'monoranks'), fmt(data.sending.page), fmt(Math.max(1, data.sending.pages)))}}{data.items > 0 && {sprintf(_n('%s published item', '%s published items', data.items, 'monoranks'), fmt(data.items))}}{data.last_error && {data.last_error}}], + [__('Connector key', 'monoranks'), {data.key_hint}], + [__('Last sync', 'monoranks'), {data.last_sent_date ? {data.last_sent_short} : {data.last_sent_short}}{data.sending && {sprintf(__('sending, batch %1$s of %2$s', 'monoranks'), fmt(data.sending.page), fmt(Math.max(1, data.sending.pages)))}}{data.items > 0 && {sprintf(_n('%s published item', '%s published items', data.items, 'monoranks'), fmt(data.items))}}{data.last_error && {data.last_error}}], ...(data.next_audit ? [[__('Next audit', 'monoranks'), data.next_audit] as [string, React.ReactNode]] : []), - [__('Fixes written with', 'monoranks'), <>{__('The "MonoRanks" Application Password', 'monoranks')} · {__('revoke it in your profile', 'monoranks')} {__('to stop writes', 'monoranks')}], + [__('Fixes written with', 'monoranks'), {__('App password', 'monoranks')}{__('Revoke', 'monoranks')}], [__('Works with', 'monoranks'), data.seo_plugin && !data.seo_supported - ? {sprintf(__('%s detected', 'monoranks'), data.seo_plugin)}{sprintf(__('MonoRanks cannot write titles, descriptions, canonicals or noindex into %s yet, so those fixes are refused', 'monoranks'), data.seo_plugin)} + ? {sprintf(__('%s detected', 'monoranks'), data.seo_plugin)} : data.seo_plugin - ? {sprintf(__('%s detected', 'monoranks'), data.seo_plugin)}{sprintf(__('titles and descriptions go into the fields %s reads', 'monoranks'), data.seo_plugin)} - : {__('No SEO plugin', 'monoranks')}{__('MonoRanks prints the approved title, description, canonical and noindex tags itself', 'monoranks')}], + ? {sprintf(__('%s detected', 'monoranks'), data.seo_plugin)} + : {__('No SEO plugin', 'monoranks')}], ]} />
- - {__('Disconnect stops sending. Fixes already applied stay.', 'monoranks')} +
) : ( <> {__('Connect to MonoRanks', 'monoranks')}{__('Sign in and approve. Takes a minute.', 'monoranks')} - {__('Or paste a connector key', 'monoranks')}{__('Use this when your host blocks Application Passwords.', 'monoranks')} run('connect', () => api.connect(key, base))} /> + {__('Or paste a connector key', 'monoranks')} run('connect', () => api.connect(key, base))} /> )}
@@ -110,25 +111,24 @@ export function Settings({ go }: { go: (next: Screen) => void }) {
setKeyOpen(e.currentTarget.open)} className="group"> {__('Use a different key', 'monoranks')}
-
-
{__('In MonoRanks: Settings → API and MCP → New credential with the content:write scope, ticked for this website. Paste it here. With a key alone MonoRanks receives your content; to apply fixes, also use Connect to WordPress in MonoRanks.', 'monoranks')}
- run('connect', () => api.connect(key, base))} /> -
+ run('connect', () => api.connect(key, base))} />
)} - {__('What is sent', 'monoranks')} - +
+ {__('What is sent', 'monoranks')} +
- +
+
@@ -138,9 +138,8 @@ export function Settings({ go }: { go: (next: Screen) => void }) { {!connected && data.has_data && ( - {__('Danger zone', 'monoranks')} + {__('Danger zone', 'monoranks')} -

{__('This site is not connected to MonoRanks. You can erase everything the plugin stored here: the connection, the scores on your posts and pages, the redirects and AI access files it was asked to write, and the change log. Pages themselves are not touched — a fix that was written stays written, so undo those first if you want them back.', 'monoranks')}

{confirmDelete ? (
{__('This cannot be undone. Delete everything?', 'monoranks')} @@ -159,7 +158,7 @@ export function Settings({ go }: { go: (next: Screen) => void }) { ); } -function KeyForm({ data, busy, onSubmit }: { data: SettingsData; busy: string | null; onSubmit: (key: string, base?: string) => void }) { +function KeyForm({ data, busy, hint, onSubmit }: { data: SettingsData; busy: string | null; hint?: string; onSubmit: (key: string, base?: string) => void }) { const [key, setKey] = useState(''); const [base, setBase] = useState(data.api_base); function submit(e: FormEvent) { @@ -168,7 +167,7 @@ function KeyForm({ data, busy, onSubmit }: { data: SettingsData; busy: string | } return (
-
setKey(e.target.value)} />
+
{hint && } setKey(e.target.value)} />
{data.show_address &&
setBase(e.target.value)} />
}
diff --git a/src/Actions.php b/src/Actions.php index 72fae91..5456410 100644 --- a/src/Actions.php +++ b/src/Actions.php @@ -8,8 +8,16 @@ class Actions { /** A key pasted by hand. $base is only honoured on development sites; everywhere else the address is MONORANKS_API_BASE. */ public static function connect_key( $key, $base = '' ) { + return self::use_key( $key, $base && Admin::shows_address_field() ? $base : MONORANKS_API_BASE, 'manual' ); + } + + /** + * Connect with a key: pasted by hand (manual) or handed back by the connect link (pairing, Handoff). The key is checked + * with MonoRanks first; when MonoRanks refuses it, the previous connection stays. + */ + public static function use_key( $key, $base, $via = 'manual', $site_id = '' ) { $key = Connection::valid_key( $key ); - $base = Connection::valid_base( $base && Admin::shows_address_field() ? $base : MONORANKS_API_BASE ); + $base = Connection::valid_base( $base ); if ( ! $key ) { return 'bad_key'; } @@ -17,7 +25,11 @@ public static function connect_key( $key, $base = '' ) { return 'bad_address'; } $previous = Connection::get(); - Connection::update( array( 'api_base' => $base, 'key' => $key, 'via' => 'manual', 'key_state' => 'ok', 'paired_at' => gmdate( 'c' ), 'paired_by' => wp_get_current_user()->user_login ) ); + $patch = array( 'api_base' => $base, 'key' => $key, 'via' => 'pairing' === $via ? 'pairing' : 'manual', 'key_state' => 'ok', 'paired_at' => gmdate( 'c' ), 'paired_by' => wp_get_current_user()->user_login ); + if ( $site_id ) { + $patch['site_id'] = $site_id; + } + Connection::update( $patch ); $res = Api::send_status(); if ( 200 !== $res['code'] ) { $previous ? update_option( 'monoranks_connection', $previous, false ) : Connection::clear(); diff --git a/src/Admin.php b/src/Admin.php index 16856d3..531b654 100644 --- a/src/Admin.php +++ b/src/Admin.php @@ -171,6 +171,22 @@ public static function ago( $iso, $fallback = '' ) { return self::digits( sprintf( __( '%1$s ago (%2$s)', 'monoranks' ), human_time_diff( $ts, time() ), $when ) ); } + /** "3 minutes ago" alone (the full date goes in a tooltip: date_of), or the fallback. */ + public static function ago_short( $iso, $fallback = '' ) { + $ts = $iso ? strtotime( (string) $iso ) : 0; + if ( ! $ts ) { + return $fallback; + } + /* translators: %s: relative time, e.g. 3 minutes */ + return self::digits( $ts > time() ? sprintf( __( 'in %s', 'monoranks' ), human_time_diff( time(), $ts ) ) : sprintf( __( '%s ago', 'monoranks' ), human_time_diff( $ts, time() ) ) ); + } + + /** "22 Sep 2026, 14:03" in the site's formats, or ''. */ + public static function date_of( $iso ) { + $ts = $iso ? strtotime( (string) $iso ) : 0; + return $ts ? self::digits( wp_date( get_option( 'date_format' ) . ', ' . get_option( 'time_format' ), $ts ) ) : ''; + } + /** The notice for a result code (the app shows it after an action; the legacy URL carries one as ?monoranks=). */ public static function notice_for( $code ) { $map = array( @@ -190,6 +206,7 @@ public static function notice_for( $code ) { 'rejected' => array( 'error', __( 'MonoRanks did not accept this key. It may have been revoked or replaced; create a new one in MonoRanks.', 'monoranks' ) ), 'other_site' => array( 'error', __( 'This key belongs to a different website in MonoRanks. Create the key on the website with this address.', 'monoranks' ) ), 'unreachable' => array( 'error', __( 'MonoRanks could not be reached. Check the address and try again.', 'monoranks' ) ), + 'connect_failed' => array( 'error', __( 'Could not connect. Please try again.', 'monoranks' ) ), ); return isset( $map[ $code ] ) ? array( 'type' => $map[ $code ][0], 'text' => $map[ $code ][1] ) : null; } diff --git a/src/Handoff.php b/src/Handoff.php new file mode 100644 index 0000000..26596b2 --- /dev/null +++ b/src/Handoff.php @@ -0,0 +1,106 @@ + $state, 'base' => $base ), self::TTL ); + return $state; + } + + /** MonoRanks → Settings opened with ?monoranks_code=…&monoranks_state=…: claim the key, then show the clean page. */ + public static function maybe_claim() { + global $pagenow; + // phpcs:disable WordPress.Security.NonceVerification.Recommended -- the state checked in redeem() plays the nonce's role + if ( 'admin.php' !== $pagenow || ! isset( $_GET['page'], $_GET['monoranks_code'], $_GET['monoranks_state'] ) || Admin::SETTINGS !== $_GET['page'] ) { + return; + } + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + $code = sanitize_text_field( wp_unslash( $_GET['monoranks_code'] ) ); + $state = sanitize_text_field( wp_unslash( $_GET['monoranks_state'] ) ); + // phpcs:enable + wp_safe_redirect( Admin::settings_url( self::claim( $code, $state ) ) ); + exit; + } + + /** Redeem the code and connect with the key it brings. Returns a result code for Admin::notice_for(). */ + public static function claim( $code, $state ) { + $got = self::redeem( $code, $state ); + if ( ! $got ) { + return 'connect_failed'; + } + return Actions::use_key( $got['key'], $got['base'], 'pairing', $got['site_id'] ); + } + + /** + * Check the state against the one stored for this user (then forget it) and trade the code for the key. + * + * @return array{key:string, site_id:string, base:string}|null + */ + public static function redeem( $code, $state ) { + $user_id = get_current_user_id(); + $saved = $user_id ? get_transient( self::transient( $user_id ) ) : false; + if ( ! is_array( $saved ) || empty( $saved['state'] ) || ! is_string( $state ) || '' === $state || ! hash_equals( (string) $saved['state'], $state ) ) { + return null; + } + delete_transient( self::transient( $user_id ) ); + $base = Connection::valid_base( isset( $saved['base'] ) ? $saved['base'] : MONORANKS_API_BASE ); + if ( ! $base || ! is_string( $code ) || ! preg_match( '/^[A-Za-z0-9_-]{32,128}$/', $code ) ) { + return null; + } + $res = wp_remote_post( + $base . '/api/wordpress/claim', + array( + 'timeout' => 15, + 'redirection' => 0, + 'headers' => array( 'Content-Type' => 'application/json', 'User-Agent' => 'MonoRanks Connector/' . MONORANKS_CONNECTOR_VERSION ), + 'body' => wp_json_encode( array( 'code' => $code, 'site' => untrailingslashit( home_url( '/' ) ) ) ), + 'sslverify' => ! Connection::local(), + ) + ); + if ( is_wp_error( $res ) || 200 !== (int) wp_remote_retrieve_response_code( $res ) ) { + return null; + } + $body = json_decode( (string) wp_remote_retrieve_body( $res ), true ); + $key = Connection::valid_key( is_array( $body ) && isset( $body['key'] ) && is_string( $body['key'] ) ? $body['key'] : '' ); + if ( ! $key ) { + return null; + } + $site_id = is_array( $body ) && isset( $body['site_id'] ) && is_string( $body['site_id'] ) ? sanitize_text_field( $body['site_id'] ) : ''; + return array( 'key' => $key, 'site_id' => $site_id, 'base' => $base ); + } +} diff --git a/src/Settings.php b/src/Settings.php index 1e15f3b..9bf5729 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -18,11 +18,13 @@ public static function has_data() { /** * The one-link connect page in MonoRanks: it signs the person in, has them approve, and sends them back here. - * {base}/connect/wordpress?site=&return=. + * {base}/connect/wordpress?site=&return=&state=. + * The state lets MonoRanks hand the key back through Settings when it cannot reach this site (Handoff). */ public static function connect_url( $base = '' ) { - $base = untrailingslashit( $base ? (string) $base : MONORANKS_API_BASE ); - return $base . '/connect/wordpress?site=' . rawurlencode( untrailingslashit( home_url( '/' ) ) ) . '&return=' . rawurlencode( Admin::settings_url() ); + $base = untrailingslashit( $base ? (string) $base : MONORANKS_API_BASE ); + $state = Handoff::state( $base ); + return $base . '/connect/wordpress?site=' . rawurlencode( untrailingslashit( home_url( '/' ) ) ) . '&return=' . rawurlencode( Admin::settings_url() ) . ( $state ? '&state=' . $state : '' ); } public static function data() { @@ -43,6 +45,8 @@ public static function data() { : __( 'pasted by hand', 'monoranks' ), 'api_base' => $connected ? $conn['api_base'] : MONORANKS_API_BASE, 'last_sent' => Admin::ago( isset( $conn['last_sent_at'] ) ? $conn['last_sent_at'] : '', __( 'Never', 'monoranks' ) ), + 'last_sent_short' => Admin::ago_short( isset( $conn['last_sent_at'] ) ? $conn['last_sent_at'] : '', __( 'Never', 'monoranks' ) ), + 'last_sent_date' => Admin::date_of( isset( $conn['last_sent_at'] ) ? $conn['last_sent_at'] : '' ), 'last_error' => isset( $conn['last_error'] ) ? (string) $conn['last_error'] : '', 'sending' => ! empty( $sync['run_id'] ) ? array( 'page' => (int) $sync['page'], 'pages' => (int) $sync['pages'] ) : null, 'items' => array_sum( Rest::status_payload()['post_types'] ), diff --git a/tests/unit/AdminTest.php b/tests/unit/AdminTest.php index e4cbd2e..da49f69 100644 --- a/tests/unit/AdminTest.php +++ b/tests/unit/AdminTest.php @@ -41,4 +41,17 @@ public function test_outbound_links_carry_utm_tags_except_into_the_app() { $this->assertSame( 'https://app.monoranks.com/sites/x', Admin::out( 'https://app.monoranks.com/sites/x', 'posts-column', 'posts-list' ), 'a link into the app keeps its plain address' ); $this->assertSame( '', Admin::out( '', 'x' ) ); } + + public function test_last_sync_time_is_short_and_the_date_is_separate() { + Functions\when( 'determine_locale' )->justReturn( 'en_US' ); + Functions\when( '__' )->returnArg(); + Functions\when( 'human_time_diff' )->justReturn( '20 seconds' ); + Functions\when( 'get_option' )->alias( static function ( $k ) { return 'date_format' === $k ? 'M j, Y' : 'H:i'; } ); + Functions\when( 'wp_date' )->alias( static function ( $f, $ts ) { return gmdate( $f, $ts ); } ); + $iso = gmdate( 'c', time() - 20 ); + $this->assertSame( '20 seconds ago', Admin::ago_short( $iso ) ); + $this->assertSame( gmdate( 'M j, Y, H:i', strtotime( $iso ) ), Admin::date_of( $iso ) ); + $this->assertSame( 'Never', Admin::ago_short( '', 'Never' ) ); + $this->assertSame( '', Admin::date_of( '' ) ); + } } diff --git a/tests/unit/HandoffTest.php b/tests/unit/HandoffTest.php new file mode 100644 index 0000000..439d248 --- /dev/null +++ b/tests/unit/HandoffTest.php @@ -0,0 +1,117 @@ + */ + private $store = array(); + /** @var array */ + private $posts = array(); + + protected function set_up() { + parent::set_up(); + Monkey\setUp(); + $this->store = array( 'monoranks_connect_7' => array( 'state' => self::STATE, 'base' => 'https://app.monoranks.com' ) ); + $this->posts = array(); + $store = &$this->store; + $posts = &$this->posts; + Functions\when( 'get_current_user_id' )->justReturn( 7 ); + Functions\when( 'get_transient' )->alias( static function ( $k ) use ( &$store ) { return isset( $store[ $k ] ) ? $store[ $k ] : false; } ); + Functions\when( 'delete_transient' )->alias( static function ( $k ) use ( &$store ) { unset( $store[ $k ] ); return true; } ); + Functions\when( 'esc_url_raw' )->returnArg(); + Functions\when( 'untrailingslashit' )->alias( static function ( $s ) { return rtrim( (string) $s, '/' ); } ); + Functions\when( 'wp_get_environment_type' )->justReturn( 'production' ); + Functions\when( 'home_url' )->justReturn( 'https://wordpress-new.test/' ); + Functions\when( 'wp_json_encode' )->alias( 'json_encode' ); + Functions\when( 'sanitize_text_field' )->returnArg(); + Functions\when( 'is_wp_error' )->justReturn( false ); + Functions\when( 'wp_remote_retrieve_response_code' )->alias( static function ( $r ) { return $r['response']['code']; } ); + Functions\when( 'wp_remote_retrieve_body' )->alias( static function ( $r ) { return $r['body']; } ); + Functions\when( 'wp_remote_post' )->alias( + static function ( $url, $args ) use ( &$posts ) { + $posts[] = array( $url, $args ); + return array( 'response' => array( 'code' => 200 ), 'body' => json_encode( array( 'key' => 'mr_site_' . str_repeat( 'k', 32 ), 'site_id' => 'site-1' ) ) ); + } + ); + } + + protected function tear_down() { + Monkey\tearDown(); + parent::tear_down(); + } + + public function test_good_state_trades_the_code_for_the_key_once() { + $got = Handoff::redeem( self::CODE, self::STATE ); + $this->assertSame( array( 'key' => 'mr_site_' . str_repeat( 'k', 32 ), 'site_id' => 'site-1', 'base' => 'https://app.monoranks.com' ), $got ); + $this->assertCount( 1, $this->posts ); + $this->assertSame( 'https://app.monoranks.com/api/wordpress/claim', $this->posts[0][0] ); + $this->assertSame( array( 'code' => self::CODE, 'site' => 'https://wordpress-new.test' ), json_decode( $this->posts[0][1]['body'], true ) ); + $this->assertSame( 0, $this->posts[0][1]['redirection'] ); + $this->assertArrayNotHasKey( 'monoranks_connect_7', $this->store, 'the state is used up' ); + $this->assertNull( Handoff::redeem( self::CODE, self::STATE ), 'the same link cannot be replayed' ); + } + + public function test_bad_state_is_refused_without_calling_monoranks() { + $this->assertNull( Handoff::redeem( self::CODE, str_repeat( 'b', 40 ) ) ); + $this->assertNull( Handoff::redeem( self::CODE, '' ) ); + $this->assertSame( 'connect_failed', Handoff::claim( self::CODE, str_repeat( 'b', 40 ) ) ); + $this->assertCount( 0, $this->posts ); + $this->assertArrayHasKey( 'monoranks_connect_7', $this->store, 'a wrong state does not use up the right one' ); + } + + public function test_another_users_state_is_refused() { + Functions\when( 'get_current_user_id' )->justReturn( 8 ); + $this->assertNull( Handoff::redeem( self::CODE, self::STATE ) ); + $this->assertCount( 0, $this->posts ); + } + + public function test_failed_claim_gives_no_key() { + Functions\when( 'wp_remote_post' )->justReturn( array( 'response' => array( 'code' => 400 ), 'body' => '{"error":"bad_request"}' ) ); + $this->assertSame( 'connect_failed', Handoff::claim( self::CODE, self::STATE ) ); + $this->assertArrayNotHasKey( 'monoranks_connect_7', $this->store ); + } + + public function test_claim_answer_without_a_valid_key_gives_no_key() { + Functions\when( 'wp_remote_post' )->justReturn( array( 'response' => array( 'code' => 200 ), 'body' => '{"key":"not-a-key","site_id":"s"}' ) ); + $this->assertNull( Handoff::redeem( self::CODE, self::STATE ) ); + } + + public function test_malformed_code_is_not_sent() { + $this->assertNull( Handoff::redeem( 'short', self::STATE ) ); + $this->assertCount( 0, $this->posts ); + } + + public function test_without_manage_options_nothing_happens() { + global $pagenow; + $pagenow = 'admin.php'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- test + $_GET = array( 'page' => 'monoranks-settings', 'monoranks_code' => self::CODE, 'monoranks_state' => self::STATE ); + Functions\when( 'current_user_can' )->justReturn( false ); + Functions\expect( 'wp_safe_redirect' )->never(); + Handoff::maybe_claim(); + $this->assertCount( 0, $this->posts ); + $this->assertArrayHasKey( 'monoranks_connect_7', $this->store ); + $_GET = array(); + } + + public function test_other_admin_pages_are_left_alone() { + global $pagenow; + $pagenow = 'admin.php'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- test + $_GET = array( 'page' => 'monoranks', 'monoranks_code' => self::CODE, 'monoranks_state' => self::STATE ); + Functions\expect( 'current_user_can' )->never(); + Handoff::maybe_claim(); + $this->assertCount( 0, $this->posts ); + $_GET = array(); + } +} diff --git a/tests/unit/SettingsTest.php b/tests/unit/SettingsTest.php index 29a00f1..9e30de0 100644 --- a/tests/unit/SettingsTest.php +++ b/tests/unit/SettingsTest.php @@ -11,6 +11,7 @@ protected function set_up() { parent::set_up(); Monkey\setUp(); Functions\when( 'untrailingslashit' )->alias( static function ( $s ) { return rtrim( $s, '/\\' ); } ); + Functions\when( 'get_current_user_id' )->justReturn( 0 ); } protected function tear_down() { Monkey\tearDown(); @@ -34,4 +35,19 @@ public function test_connect_link_keeps_a_subfolder_and_a_custom_base() { Settings::connect_url( 'http://localhost:3000/' ) ); } + + public function test_connect_link_carries_the_users_state_and_keeps_it_while_it_lives() { + Functions\when( 'home_url' )->justReturn( 'https://example.com/' ); + Functions\when( 'admin_url' )->alias( static function ( $path ) { return 'https://example.com/wp-admin/' . $path; } ); + Functions\when( 'get_current_user_id' )->justReturn( 7 ); + $store = array(); + Functions\when( 'get_transient' )->alias( static function ( $k ) use ( &$store ) { return isset( $store[ $k ] ) ? $store[ $k ] : false; } ); + Functions\when( 'set_transient' )->alias( static function ( $k, $v ) use ( &$store ) { $store[ $k ] = $v; return true; } ); + + $url = Settings::connect_url(); + $this->assertMatchesRegularExpression( '/&state=[a-f0-9]{40}$/', $url ); + $this->assertSame( $url, Settings::connect_url(), 'a second tab gets the same link' ); + $this->assertSame( 'https://app.monoranks.com', $store['monoranks_connect_7']['base'] ); + $this->assertNotSame( substr( $url, -40 ), substr( Settings::connect_url( 'http://localhost:3000' ), -40 ), 'another MonoRanks address gets its own state' ); + } } diff --git a/uninstall.php b/uninstall.php index 412055d..b74489e 100644 --- a/uninstall.php +++ b/uninstall.php @@ -21,9 +21,10 @@ foreach ( array( 'monoranks_grow', 'monoranks_grow_lock', 'monoranks_page_values', 'monoranks_page_values_lock' ) as $monoranks_transient ) { delete_transient( $monoranks_transient ); } -// Each post's cached reads for the post editor box (monoranks_post_, twelve hours). +// Each post's cached reads for the post editor box (monoranks_post_, twelve hours) and each user's connect link state +// (monoranks_connect_, thirty minutes). global $wpdb; -$monoranks_keys = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( '_transient_monoranks_post_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- one cleanup query +$monoranks_keys = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_monoranks_post_' ) . '%', $wpdb->esc_like( '_transient_monoranks_connect_' ) . '%' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- one cleanup query foreach ( (array) $monoranks_keys as $monoranks_key ) { delete_transient( substr( (string) $monoranks_key, strlen( '_transient_' ) ) ); }