staffa 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import B from"aberdeen";var e2=t=>`background: $s-bg linear-gradient(${t}, color-mix(in oklab, $s-bg, white 9%), color-mix(in oklab, $s-bg, black 9%));`,E1=e2("170deg"),T1=e2("180deg"),O1="staffa:darkMode",h2=B.proxy({value:I2()});function I2(){try{let t=localStorage.getItem(O1);if(t==="dark")return!0;if(t==="light")return!1}catch{}}function K2(t){h2.value=t;try{t===void 0?localStorage.removeItem(O1):localStorage.setItem(O1,t?"dark":"light")}catch{}}function p2(t=!1){let a=h2.value;return a===void 0&&!t?B.darkMode():a}B(()=>{p2()?B.insertGlobalCss({":root, .s-s.neutral":"--s-bg:#0e0f12 --s-text:#e9eaec",".s-s.neutral":"--s-bg:#191b1f --s-text:#e9eaec",".s-s.neutral .s-s.neutral":"--s-bg:#23262b"}):B.insertGlobalCss({":root, .s-s.neutral":"--s-bg:#eef0f3 --s-text:#1d1f24",".s-s.neutral, .s-s.neutral":"--s-bg:#ffffff --s-text:#1d1f24",".s-s.neutral .s-s.neutral":"--s-bg:#f6f7f9"})});B.setSpacingCssVars(1.1);B.insertGlobalCss({"*, *::before, *::after":"box-sizing:border-box",html:"text-size-adjust:100%",body:"m:0 p:$3 min-height:100dvh line-height:1.5 font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; -webkit-font-smoothing:antialiased text:$s-text "+E1,a:"color: $s-link-fg; text-decoration:underline text-underline-offset:2px; transition: color 0.12s, filter 0.12s;","a:hover":"filter: brightness(1.15)","input, button, textarea, select, optgroup":"font:inherit color:inherit","input:where(:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=image],[type=submit],[type=button],[type=reset],[type=hidden])), textarea, select":"background:$s-bg border: 1px solid $s-faint; r:$s-radius-sm padding: 0.45em 0.65em; max-width:100%","input:where([type=checkbox],[type=radio])":"width:1.15em height:1.15em cursor:pointer","input[type=range]":"appearance:none background:transparent cursor:pointer vertical-align:middle","input[type=range]::-webkit-slider-runnable-track":"height:4px r:99px background:$s-faint","input[type=range]::-moz-range-track":"height:4px r:99px background:$s-faint","input[type=range]::-moz-range-progress":"height:4px r:99px background:$s-accent","input[type=range]::-webkit-slider-thumb":"appearance:none width:16px height:16px margin-top:-6px r:50% background:$s-accent","input[type=range]::-moz-range-thumb":"width:16px height:16px border:0 r:50% background:$s-accent","input[type=file]":"cursor:pointer",progress:"appearance:none border:0 height:6px r:99px background:$s-faint overflow:hidden vertical-align:middle","progress::-webkit-progress-bar":"background:$s-faint r:99px","progress::-webkit-progress-value":"background:$s-accent r:99px","progress::-moz-progress-bar":"background:$s-accent r:99px",meter:"vertical-align:middle",fieldset:"border: 1px solid $s-faint; r:$s-radius-sm padding:$2 min-width:0",legend:"padding: 0 $1; font-weight:600","code, kbd, samp, pre":"font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;",code:"background: color-mix(in oklab, $s-text, $s-bg 86%); padding: 0.12em 0.34em; r:4px font-size:0.9em",pre:"background: color-mix(in oklab, $s-text, $s-bg 92%); p:$3 r: $s-radius; overflow:auto","pre code":"background:transparent p:0","img, svg, video, canvas":"max-width:100% h:auto",hr:"border:0 border-top: 1px solid $s-faint;","::placeholder":"color: $s-muted; opacity:1",":focus-visible":"outline: 2px solid $s-focus; outline-offset:2px",small:"color:$s-muted font-size:0.9em","@media (prefers-reduced-motion: reduce)":{"*, *::before, *::after":"transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important;"},":root":"--s-primary:#00a884 --s-danger:#dc5b41 --s-success:#00a884 --s-warning:#ef6b00 --s-link:#3f8cd8 --s-radius-sm:6px --s-radius:12px --s-radius-lg:18px --s-focus: color-mix(in srgb, $s-primary 38%, transparent); --s-gradient: linear-gradient(135deg, color-mix(in oklab, $s-primary, white 16%), color-mix(in oklab, $s-primary, black 14%));",":root, .s-s.neutral":"--s-accent:$s-primary --s-link-fg:$s-link",".s-s:not(.neutral)":"--s-bg:$s-primary border:0 --s-text:#eee --s-accent:#fff --s-link-fg:#eef --s-muted: color-mix(in srgb, #fff 70%, transparent); --s-faint: color-mix(in srgb, #fff 30%, transparent);",".s-s.danger":"--s-bg:$s-danger",".s-s.success":"--s-bg:$s-success",".s-s.warning":"--s-bg:$s-warning",".s-s.link":"--s-bg:$s-link",".s-s.primary":"--s-bg:$s-primary",":root, .s-s":"--s-muted: color-mix(in oklab, $s-text, $s-bg 42%); --s-faint: color-mix(in oklab, $s-text, $s-bg 80%); color:$s-text accent-color:$s-accent scrollbar-width:thin scrollbar-color: $s-faint transparent;",".s-s":E1+" r:$s-radius",":where(.s-s.neutral)":"border: 1px solid $s-faint;",".s-s::-webkit-scrollbar, .s-s ::-webkit-scrollbar":"width:10px height:10px",".s-s::-webkit-scrollbar-track, .s-s ::-webkit-scrollbar-track":"background:transparent",".s-s::-webkit-scrollbar-thumb, .s-s ::-webkit-scrollbar-thumb":"background:$s-faint border-radius:99px border: 2px solid transparent; background-clip:padding-box",".s-s.shadow.neutral:not(.s-btn)":"box-shadow: 0 4px 14px rgba(0,0,0,0.13);",".s-s.extra-shadow.neutral:not(.s-btn)":"box-shadow: 0 18px 50px rgba(0,0,0,0.28);",".s-s.shadow:not(.neutral):not(.tonal):not(.outlined)":"box-shadow: 0 4px 14px color-mix(in srgb, $s-bg 30%, transparent);",".s-s.extra-shadow:not(.neutral):not(.tonal):not(.outlined)":"box-shadow: 0 14px 40px color-mix(in srgb, $s-bg 40%, transparent);",".s-s.no-shadow":"box-shadow: none !important;",".s-s:not(.neutral).tonal, .s-s:not(.neutral).outlined":{"&":"--s-text:$s-bg --s-accent:$s-bg --s-link-fg:$s-bg --s-faint: color-mix(in srgb, $s-bg 30%, transparent); --s-muted: color-mix(in srgb, $s-bg 70%, transparent);",code:"background:transparent padding:0",pre:"background:transparent border: 1px solid $s-faint;"},".s-s:not(.neutral).tonal":"background: color-mix(in srgb, $s-bg 15%, transparent); border: 1px solid $s-faint;",".s-s:not(.neutral).outlined":"background: transparent; border: 1px solid color-mix(in srgb, $s-bg 45%, transparent);",".s-s:not(.neutral) .s-s.tonal, .s-s:not(.neutral) .s-s.outlined":"--s-text:#fff --s-accent:#fff --s-link-fg:#fff "+E1+" border-color: transparent;"});B.insertGlobalCss({".s-preload, .s-preload *, .s-preload *::before, .s-preload *::after":"transition: none !important; animation: none !important;"});if(typeof document<"u"&&typeof requestAnimationFrame=="function"){let t=document.documentElement;t.classList.add("s-preload"),requestAnimationFrame(()=>requestAnimationFrame(()=>t.classList.remove("s-preload")))}B.insertGlobalCss({":disabled, [aria-disabled=true]":"opacity:0.45 filter:saturate(0.6) user-select:none",":disabled, [aria-disabled=true], :disabled *, [aria-disabled=true] *":"pointer-events:none cursor:not-allowed"});var U2="p, ul, ol, dl, blockquote, pre, table, figure, hr, h1, h2, h3, h4, h5, h6";B.insertGlobalCss({[`${U2}`]:{"&":"margin:0","&:not(:first-child)":"margin-top:$3"},"h1, h2, h3, h4, h5, h6":{"&":"line-height:1.15 font-weight:700 text-wrap:balance","&:not(:first-child)":"margin-top:1.4em"},h1:"font-size:2em font-weight:800 letter-spacing:-0.022em",h2:"font-size:1.55em letter-spacing:-0.018em",h3:"font-size:1.3em letter-spacing:-0.011em",h4:"font-size:1.1em",h5:"font-size:0.95em letter-spacing:0.005em",h6:"font-size:0.8em fg:$s-muted text-transform:uppercase letter-spacing:0.07em","ul, ol":{"&":"padding-left:1.5em","> li:not(:first-child), li > &:not(:first-child)":"margin-top:$1"},blockquote:"border-left: 3px solid $s-faint; padding-left: $3; fg: $s-muted",table:"border-collapse:collapse","th, td":"text-align:left padding: $1 $2; border-bottom: 1px solid $s-faint; vertical-align:top",th:"font-weight:600","thead th":"border-bottom: 2px solid $s-faint;",dt:"font-weight:600",dd:"margin-left: 1.5em",figcaption:"fg:$s-muted font-size:0.9em margin-top:$1 text-align:center"});import q1 from"aberdeen";var y1=typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform||navigator.userAgent),N2={esc:"escape",space:" "},W2={" ":"Space",escape:"Esc",arrowup:"\u2191",arrowdown:"\u2193",arrowleft:"\u2190",arrowright:"\u2192"},f1=new WeakMap,q=[];function o2(){let t=q1();if(!t)throw new Error("Staffa: claimKeyboard needs a current element");return q.push(t),()=>{let a=q.indexOf(t);a>=0&&q.splice(a,1)}}function d2(t){let[,a,e,h]=/^(mod\+)?(shift\+)?(.*)$/i.exec(t),p=h.toLowerCase();if(p=N2[p]??p,!p||p.length>1&&/[-+]/.test(p))throw new Error(`Staffa: can't parse key "${t}" \u2014 write "k", "f2", "mod+k" or "mod+shift+f2"`);if(e&&p.toUpperCase()===p)throw new Error(`Staffa: "${t}" \u2014 write the shifted character itself ("?", not "shift+/")`);return(a?"mod+":"")+(e?"shift+":"")+p}function G2(t){if(t.altKey||(y1?t.ctrlKey:t.metaKey))return null;let a=t.key.toLowerCase(),e=t.shiftKey&&(a.length>1||t.key.toUpperCase()!==a);return((y1?t.metaKey:t.ctrlKey)?"mod+":"")+(e?"shift+":"")+a}function n2(t,a){if(!(a instanceof HTMLElement))return!1;let e=t.startsWith("mod+"),h=t.replace(/^(mod\+)?(shift\+)?/,"");if(h==="enter"&&a.closest("a[href]")!=null||!e&&(h==="enter"||h===" ")&&a.closest("button, summary, [role=button]")!=null)return!0;let p=a.tagName;return!e&&h!=="escape"&&(p==="INPUT"||p==="TEXTAREA"||p==="SELECT"||a.isContentEditable)}function c2(t,a){let e=q[q.length-1];return a.global===!0||!e||e.contains(t)}function X2(t){for(let a=q.length-1;a>=0;a--)if(q[a].contains(t))return q[a]}function i2(){return q[q.length-1]??document.body}function s2(t){let a=q[q.length-1];return a&&!(t&&a.contains(t))?a:t??document.body}var r2=!1;function j2(t){if(t.defaultPrevented||t.repeat||t.isComposing)return;let a=G2(t),e=t.target instanceof Element?t.target:null;if(!(a==null||n2(a,e)))for(let h=s2(e);h;h=h.parentElement){let p=f1.get(h)?.get(a);if(p&&c2(h,p)){p.press&&(t.preventDefault(),p.press(t));return}}}function l2(t){let a=new Map;for(let e=s2(t);e;e=e.parentElement){let h=f1.get(e);if(h)for(let[p,r]of h)!a.has(p)&&c2(e,r)&&!n2(p,t)&&a.set(p,r)}return[...a]}function E(t,a,e,h="normal"){let p=q1(),r=h==="global"?document.body:h==="local"?p:h==="normal"?(p&&X2(p))??document.body:h;if(!r)throw new Error("Staffa: a local key binding needs a current element");let o=d2(t),d=f1.get(r);d||f1.set(r,d=new Map);let n={description:a,press:e,global:h==="global",prev:d.get(o)};d.set(o,n),r2||(r2=!0,document.addEventListener("keydown",j2)),q1.clean(()=>{let c=d.get(o);if(c===n)n.prev?d.set(o,n.prev):d.delete(o);else for(;c;c=c.prev)if(c.prev===n){c.prev=n.prev;break}})}function D(t,a=!1){let e=d2(t),h=e.startsWith("mod+"),p=h?e.slice(4):e,r=p.startsWith("shift+"),o=r?p.slice(6):p,d=o.length===1?o.toUpperCase():o[0].toUpperCase()+o.slice(1);if(a){let c=o===" "?"Space":r||o.length>1?d:o;return(h?y1?"Meta+":"Control+":"")+(r?"Shift+":"")+c}let n=W2[o]??d;return y1?(r?"\u21E7":"")+(h?"\u2318":"")+n:(h?"Ctrl+":"")+(r?"Shift+":"")+n}import Q from"aberdeen";import D1 from"aberdeen";var g1=640,_2=0;function j(t="s"){return`${t}-${++_2}`}function l(t,...a){t!=null&&(typeof t=="function"?t(...a):D1("rich=",t))}var Q2="a[href], button, input, select, textarea, [tabindex]",x2=t=>t instanceof HTMLElement&&!t.hasAttribute("disabled")&&t.getAttribute("aria-disabled")!=="true"&&t.tabIndex>=0&&t.getClientRects().length>0;function R1(t){return[...t.querySelectorAll(Q2)].filter(x2)}function p1(t,a){let e=(a?[...t.querySelectorAll(a)].find(x2):void 0)??R1(t)[0];return e?.focus(),e!=null}function F(t){queueMicrotask(()=>D1(t))}var M2=["scroll","resize","transitionstart","animationstart"];function r1(t,a){let e="",h=0,p=0,r=()=>{let d=t instanceof Element?t.getBoundingClientRect():t,n=`${d.left} ${d.top} ${d.bottom} ${d.width}`;n!==e&&(e=n,a(d),p=0),h=++p>30?0:requestAnimationFrame(r)},o=()=>{p=0,h||r()};for(let d of M2)window.addEventListener(d,o,!0);return D1.clean(()=>{cancelAnimationFrame(h);for(let d of M2)window.removeEventListener(d,o,!0)}),r(),()=>{e="",o()}}import f from"aberdeen";import C from"aberdeen";import R from"aberdeen";R.insertGlobalCss({".s-tt-tip":{"&":"position:fixed z-index:500 max-width:20rem w:max-content padding: 0.3em 0.65em; font-size:0.85em line-height:1.4 pointer-events:none"}});var o1=R.proxy(void 0),I=null;function J2(t,a,e,h){let r=window.innerWidth,o=window.innerHeight,d=0,n=0;return h==="bottom"?(d=t.left+(t.width-a)/2,n=t.bottom+7,n+e>o-8&&(n=t.top-e-7)):h==="left"?(d=t.left-a-7,n=t.top+(t.height-e)/2,d<8&&(d=t.right+7)):h==="right"?(d=t.right+7,n=t.top+(t.height-e)/2,d+a>r-8&&(d=t.left-a-7)):(d=t.left+(t.width-a)/2,n=t.top-e-7,n<8&&(n=t.bottom+7)),{x:Math.max(8,Math.min(d,r-a-8)),y:Math.max(8,Math.min(n,o-e-8))}}function Z1(){I&&clearTimeout(I),I=setTimeout(()=>{o1.value=void 0,I=null},100)}F(()=>{let t=o1.value;if(!t)return;let{opts:a,anchor:e}=t,h=a.placement??"top",p=R("div.s-tt-tip.s-s.neutral.shadow role=tooltip",a.attrs,()=>{R("mouseenter=",()=>{I&&(clearTimeout(I),I=null)}),R("mouseleave=",Z1),l(a.tip)});r1(e,r=>{if(r.bottom<0||r.top>window.innerHeight||r.right<0||r.left>window.innerWidth||e.closest("[inert]")){o1.value=void 0;return}let{x:o,y:d}=J2(r,p.offsetWidth,p.offsetHeight,h);p.style.left=o+"px",p.style.top=d+"px"})});function i1(t){let a=e=>{I&&(clearTimeout(I),I=null),o1.value={opts:t,anchor:e.currentTarget}};R("mouseenter=",a),R("mouseleave=",Z1),R("focusin=",e=>{e.target.matches?.(":focus-visible")&&a(e)}),R("focusout=",Z1),R.clean(()=>{R.unproxy(o1).value?.opts===t&&(o1.value=void 0)})}C.insertGlobalCss({".s-btn":{"&":"display:inline-flex align-items:center justify-content:center gap:$2 font-weight:450 line-height:1.1 white-space:nowrap cursor:pointer text-decoration:none padding: $m2 $m3; transition: background 0.15s, border-color 0.15s, color 0.15s, filter 0.15s, box-shadow 0.15s, transform 0.08s;","&:focus-visible":"outline: 3px solid $s-focus; outline-offset: 1px;","&:hover:not([aria-disabled=true])":"filter: brightness(1.06)","&.tonal:hover:not([aria-disabled=true]), &.outlined:hover:not([aria-disabled=true])":"background: color-mix(in srgb, $s-bg 24%, transparent);","&.neutral:hover:not([aria-disabled=true])":"filter:none background: color-mix(in srgb, $s-text 8%, $s-bg);","> svg":"width:1.25em height:1.25em","&:active:not(:disabled):not([aria-disabled=true])":"transform: translateY(1px)","&[aria-disabled=true]":"pointer-events:auto cursor:not-allowed","&.small, .small > &":"padding: $m1 $m2; font-size:0.85em border-radius:$s-radius-sm","&.large, .large > &":"font-size:1.4em border-radius:$s-radius-lg"},".s-icon-btn":{"&":"display:inline-flex align-items:center justify-content:center flex-shrink:0 width:2rem height:2rem p:0 border:0 background:transparent cursor:pointer fg:$s-muted r:$s-radius-sm line-height:1 font-size:1rem text-decoration:none transition: color 0.12s, background 0.12s;","> svg":"width:1.25em height:1.25em","&:hover:not(:disabled):not([aria-disabled=true])":"fg:$s-text background: color-mix(in srgb, $s-text 10%, transparent);","&:focus-visible":"outline: 3px solid $s-focus; outline-offset:1px","&[aria-disabled=true]":"pointer-events:auto cursor:not-allowed","&.small, .small > &":"width:1.6rem height:1.6rem font-size:0.8rem","&.large, .large > &":"width:2.4rem height:2.4rem font-size:1.2rem"},".s-btn.s-busy, .s-icon-btn.s-busy, .s-busy .s-btn[type=submit]":"pointer-events:none cursor:progress",".s-btn.s-busy::after, .s-icon-btn.s-busy::after, .s-busy .s-btn[type=submit]::after":"content:'' flex-shrink:0 width:1em height:1em r:50% border: 2px solid currentColor; border-top-color: transparent; animation: s-spin 0.7s linear infinite;",".s-icon-btn.s-busy > svg":"display:none","@keyframes s-spin":{to:"transform: rotate(360deg)"}});function s1(t){let a=t.href!=null?"a":"button",e=t.tooltip===!1?void 0:t.tooltip,h=t.ariaLabel??(typeof e=="string"?m2(e):void 0);C(`${a}.s-icon-btn`,t.attrs,()=>{v2(t,e!=null),C("aria-label=",h),u2(t.tooltip,t.key,h,t.disabled),l(t.icon)})}function v2(t,a=!1){t.href!=null?(C("role=button"),t.disabled?C("aria-disabled=true"):C("href=",t.href)):t.disabled&&a?(C("type=",t.type??"button"),C("aria-disabled=true tabindex=-1"),C("click=",e=>{e.preventDefault(),e.stopPropagation()})):(C("type=",t.type??"button"),t.disabled&&C("disabled=true")),t.click&&!t.disabled&&Y2(t.click)}function Y2(t){let a=C.proxy({value:!1});C(()=>{a.value&&C(".s-busy aria-busy=true")}),C("click=",e=>{if(a.value)return;let h=t(e);if(!h||typeof h.then!="function")return;a.value=!0;let p=()=>{a.value=!1};Promise.resolve(h).then(p,r=>{throw p(),r})})}function m2(t){return t.replace(/\*\*(.+?)\*\*|\*(.+?)\*|`(.+?)`|\[(.+?)\]\((.+?)\)/g,(a,e,h,p,r)=>e??h??p??r)}function u2(t,a,e,h){if(t!==!1&&(t!=null||a)&&i1({tip:()=>{l(t),a&&C("#",t==null?D(a):` \xB7 ${D(a)}`)}}),a&&!h){let p=C();C("aria-keyshortcuts=",D(a,!0)),E(a,e,()=>p.click())}}function Z(t={}){let a=typeof t=="string"||typeof t=="function"?{content:t}:t,e=a.href!=null?"a":"button",h=a.tooltip===!1?void 0:a.tooltip,p=a.ariaLabel??(a.content==null&&typeof h=="string"?m2(h):void 0);C(`${e}.s-btn.s-s.shadow`,a.attrs,()=>{v2(a,h!=null),p&&C("aria-label=",p),u2(a.tooltip,a.key,typeof a.content=="string"?a.content:p,a.disabled),l(a.icon),l(a.content)})}import y2 from"aberdeen";y2.insertGlobalCss({".s-bgroup":{"&":"display:inline-flex align-items:stretch","&.s-spaced":"gap:$2 flex-wrap:wrap","&.s-vertical":"flex-direction:column","&.s-attached":"gap:0","&.s-attached:not(.s-vertical) > .s-btn:not(:first-child)":"margin-left:-1px","&.s-attached:not(.s-vertical) > .s-btn:not(:first-child):not(:last-child)":"r:0","&.s-attached:not(.s-vertical) > .s-btn:first-child:not(:last-child)":"border-top-right-radius:0 border-bottom-right-radius:0","&.s-attached:not(.s-vertical) > .s-btn:last-child:not(:first-child)":"border-top-left-radius:0 border-bottom-left-radius:0","&.s-attached.s-vertical > .s-btn:not(:first-child)":"margin-top:-1px","&.s-attached.s-vertical > .s-btn:not(:first-child):not(:last-child)":"r:0","&.s-attached.s-vertical > .s-btn:first-child:not(:last-child)":"border-bottom-left-radius:0 border-bottom-right-radius:0","&.s-attached.s-vertical > .s-btn:last-child:not(:first-child)":"border-top-left-radius:0 border-top-right-radius:0","&.s-attached > .s-btn:hover, &.s-attached > .s-btn:focus-visible":"z-index:1"}});function Y(t={}){let e=`.s-${t.layout??"attached"}${t.vertical?".s-vertical":""}`;y2(`div.s-bgroup${e} role=group`,t.attrs,()=>{if(t.buttons)for(let h of t.buttons)Z(h);l(t.content)})}import t1 from"aberdeen";import P from"aberdeen";P.insertGlobalCss({".s-field":{"&":"display:flex flex-direction:column gap:$1","> label":"font-weight:600 font-size:0.9em fg:$s-text user-select:none"},".s-req":"fg:$s-danger margin-left:2px",".s-help":"font-size:0.82em fg:$s-muted",".s-error":"font-size:0.82em fg:$s-danger",".s-input":{"&":"w:100% background: color-mix(in oklab, $s-bg, $s-text 4%); color:$s-text border: 1px solid $s-faint; r:$s-radius padding: 0.55em 0.7em; transition: border-color 0.15s, box-shadow 0.15s;","&:hover:not(:disabled)":"border-color: color-mix(in oklab, $s-text, $s-bg 55%);","&:focus-visible":"border-color:$s-accent box-shadow: 0 0 0 3px $s-focus; outline:none","&[aria-invalid=true]":"border-color:$s-danger"}});function _(t,a){let e=t.id??j("field"),h=()=>!!t.error;P("div.s-field",t.attrs,()=>{P(()=>{t.label!=null&&P("label for=",e,()=>{l(t.label),t.required&&P("span.s-req aria-hidden=true #*")})}),a(e,h),P(()=>{t.help!=null&&!t.error&&P("div.s-help",()=>l(t.help))}),P(()=>{t.error&&P("div.s-error role=alert #",t.error)})})}function d1(t,a,e,h){P("id=",a),t.name&&P("name=",t.name),P(()=>{t.disabled&&P("disabled=true")}),P(()=>{t.required&&P("aria-required=true")}),P(()=>P("aria-invalid=",e()?"true":"false")),h&&P("bind=",h)}function B1(t={}){_(t,(a,e)=>{t1("input.s-input",t.inputAttrs,()=>{t1("type=",t.type??"text"),t.placeholder!=null&&t1("placeholder=",t.placeholder),t.autocomplete!=null&&t1("autocomplete=",t.autocomplete),t.value!=null&&!t.bind&&t1("value=",t.value),t.input&&t1("input=",t.input),t.change&&t1("change=",t.change),d1(t,a,e,t.bind)})})}f.insertGlobalCss({".s-backdrop":{"&":"position:fixed inset:0 z-index:200 display:block background: rgba(0,0,0,0.55); transition: opacity 0.4s ease-in-out;","&.hidden":"opacity:0 pointer-events:none"},".s-dialog":{"&":"position:fixed z-index:200 top:50% left:50% display:flex flex-direction:column transform:translate(-50%,-50%) min-width:min(20rem,90vw) max-width:min(90vw,44rem) max-height:min(88vh,800px) r: $s-radius-lg; overflow:hidden transition: opacity 0.2s ease-out, transform 0.2s ease-out;","> header":"display:flex align-items:center gap:$2 padding: $2 $3; border:0 border-bottom: 1px solid $s-faint; r:0 font-weight:600 flex-shrink:0","> footer":"display:flex align-items:center justify-content:flex-end gap:$2 padding: $2 $3; border:0 border-top: 1px solid $s-faint; r:0 flex-shrink:0","> div":"p:$3 gap:$3 display:flex flex-direction:column overflow-y:auto flex:1 min-height:0","&.hidden":"opacity:0 pointer-events:none transform: translate(-50%, calc(-50% + 20px)); pointer-events:none"}});var l1=f.proxy({}),t0=0,f2=f.derive(()=>{let t=Object.keys(l1);if(t.length)return t[t.length-1]});function F1(){return f2.value!=null}F(()=>{f.onEach(l1,({resolve:t,opts:a},e)=>{let h=()=>{delete l1[e]};f.clean(()=>{a.onClose?.(),t()});let p=document.activeElement;f.clean(()=>{p instanceof HTMLElement&&document.contains(p)&&p.focus()});let r=f.derive(()=>f2.value!=e);f("div.s-backdrop create=hidden destroy=hidden .hidden=",r,"click=",()=>{a.allowCancel!==!1&&h()});let o=`s-dialog-title-${e}`,d=f("div.s-dialog.neutral.s-s.extra-shadow role=dialog create=hidden destroy=hidden",a.attrs,()=>{if(!a.keyboardTransparent){let c=f();f.clean(o2()),f("aria-modal=true"),f("keydown=",m=>a0(c,m))}let n=i2();f(()=>{let c=a.allowCancel!==!1;E("esc",c?"Close this dialog":void 0,c?h:()=>{},n)}),f(()=>{a.header!=null&&(f("aria-labelledby=",o),f("header.s-s.neutral id=",o,a.headerAttrs,()=>l(a.header)))}),f("div",a.contentAttrs,()=>{l(a.content,h)}),f(()=>{a.footer!=null&&f("footer.s-s.neutral",a.footerAttrs,()=>l(a.footer))})});requestAnimationFrame(()=>{document.body.contains(d)&&p1(d)})})});function a0(t,a){if(a.key!=="Tab"||a.altKey||a.ctrlKey||a.metaKey)return;let e=R1(t),h=a.shiftKey?e[0]:e[e.length-1];!h||document.activeElement!==h||(a.preventDefault(),(a.shiftKey?e[e.length-1]:e[0]).focus())}function n1(t){let a=++t0;return t.cancelWithScope!==!1&&f.clean(()=>{delete l1[a]}),new Promise(e=>{l1[a]={resolve:e,opts:t}})}function e0(t,a={}){return n1({header:"Alert",allowCancel:!0,content:e=>{f("p",()=>{f("#",t)}),Y({layout:"spaced",attrs:"align-self:flex-end",content:()=>{Z({content:"OK",click:e})}})},...a})}function h0(t,a={}){return new Promise(e=>{let h=!1;n1({header:"Confirm",allowCancel:!0,content:p=>{f("p",()=>{f("#",t)}),Y({layout:"spaced",attrs:"align-self:flex-end",content:()=>{Z({content:"Cancel",attrs:".neutral",click:p}),Z({content:"OK",click:()=>{h=!0,p()}})}})},...a,onClose:()=>{e(h),a.onClose?.()}})})}function p0(t,a="",e={}){return new Promise(h=>{let p=null;n1({header:"Input",allowCancel:!0,content:r=>{f("p",()=>{f("#",t)});let o=f.proxy({value:a});f("form display:contents",()=>{f("submit=",d=>{d.preventDefault(),p=o.value,r()}),B1({bind:f.ref(o,"value")}),Y({layout:"spaced",attrs:"align-self:flex-end",content:()=>{Z({content:"Cancel",attrs:".neutral",type:"button",click:r}),Z({content:"OK",type:"submit"})}})})},...e,onClose:()=>{h(p),e.onClose?.()}})})}Q.insertGlobalCss({".s-keyhelp":{"&":"display:flex flex-direction:column gap:$1 min-width:14rem","> div":"display:flex align-items:baseline justify-content:space-between gap:$4",kbd:"font-family:inherit font-size:0.85em fg:$s-muted white-space:nowrap border: 1px solid $s-faint; r:$s-radius-sm padding: 0 0.4em;"}});var b1=null;function I1(){if(b1){b1();return}let t=l2(document.activeElement);n1({header:"Keyboard shortcuts",cancelWithScope:!1,keyboardTransparent:!0,onClose:()=>{b1=null},content:a=>{b1=a;let e=h=>{h.repeat||["Control","Shift","Alt","Meta","Escape","?"].includes(h.key)||a()};document.addEventListener("keydown",e,!0),Q.clean(()=>document.removeEventListener("keydown",e,!0)),Q("div.s-keyhelp",()=>{for(let[h,p]of t)p.description!==void 0&&Q("div",()=>{Q("span",()=>l(p.description)),Q("kbd text=",D(h))})})}})}var g2=Q.proxy(!0);function r0(t){g2.value=t}Q(()=>{g2.value&&(E("?",void 0,I1,"global"),E("mod+?","This overview",I1,"global"))});import s from"aberdeen";s.insertGlobalCss({".s-ac":{"> .s-control":"display:flex flex-wrap:wrap align-items:center gap:$1 background: color-mix(in oklab, $s-bg, $s-text 4%); color:$s-text border: 1px solid $s-faint; r:$s-radius padding: 0.3em 0.4em; cursor:text; transition: border-color 0.15s, box-shadow 0.15s;","> .s-control:hover":"border-color: color-mix(in oklab, $s-text, $s-bg 55%);","> .s-control:focus-within":"border-color:$s-accent box-shadow: 0 0 0 3px $s-focus;","&[aria-invalid=true] > .s-control":"border-color:$s-danger",".s-chip":"display:inline-flex align-items:center gap:$1 font-size:0.85em background: color-mix(in oklab, $s-bg, $s-text 10%); border: 1px solid $s-faint; r:$s-radius padding: 0.1em 0.2em 0.1em 0.5em;",".s-chip > button":"cursor:pointer border:0 background:transparent fg:$s-muted font-size:1.1em line-height:1 padding: 0 0.2em; r:4px",".s-chip > button:hover":"fg:$s-text background:$s-faint",input:"flex:1 min-width:6ch border:0 background:transparent color:inherit outline:none padding:0.25em"},".s-ac-menu.s-s":{"&":"position:fixed max-height:15rem overflow-y:auto list-style:none p:$1 margin:0",li:"margin:0",".s-option":"padding: 0.45em 0.6em; r:6px cursor:pointer transition: background 0.1s;",".s-option[aria-selected=true]":"background: color-mix(in srgb, $s-text 10%, transparent);",".s-add":"fg:$s-accent font-style:italic",".s-empty":"padding: 0.45em 0.6em; fg:$s-muted"}});var w1=s.proxy({cur:null});function o0(t,a){t.style.maxHeight="";let p=t.offsetHeight,r=window.innerHeight-a.bottom-4-8,o=a.top-4-8,d=p>r&&o>r;t.style.left=`${a.left}px`,t.style.width=`${a.width}px`,t.style.maxHeight=`${Math.min(p,Math.max(d?o:r,60))}px`,t.style.top=d?"auto":`${a.bottom+4}px`,t.style.bottom=d?`${window.innerHeight-a.top+4}px`:"auto"}F(()=>{let t=w1.cur;if(!t)return;let a,e=s("ul.s-ac-menu.s-s.neutral.shadow role=listbox",`id=${t.id} z-index:${t.zIndex}`,()=>{s("mousedown=",h=>h.preventDefault()),t.draw(),a?.()});a=r1(t.anchor,h=>o0(e,h))});function d0(t){return typeof t=="string"?{value:t,label:t}:{value:t.value,label:t.label??t.value}}function n0(t){let a=j("ac-menu"),e=s.proxy({query:"",open:!1,active:0}),h=()=>(typeof t.options=="function"?t.options():t.options).map(d0),p=()=>{let v=t.bind?.value;return v==null||v===""?[]:Array.isArray(v)?v:[v]},r=v=>h().find(w=>w.value===v)?.label??v;if(!t.multi){let v=t.bind?s.peek(t.bind,"value"):void 0;typeof v=="string"&&v&&(e.query=s.peek(()=>r(v)))}let o=()=>{let v=new Set(p()),w=h();t.multi&&(w=w.filter(A=>!v.has(A.value)));let V=e.query.trim().toLowerCase();return V&&(w=w.filter(A=>A.label.toLowerCase().includes(V))),w},d=(v,w)=>{if(t.multi){let V=Array.isArray(t.bind?.value)?[...t.bind.value]:[];V.includes(v)||V.push(v),t.bind&&(t.bind.value=V),e.query=""}else t.bind&&(t.bind.value=v),e.query=r(v),e.open=!1;e.active=0,w?.focus()},n=v=>{if(!t.bind)return;let w=t.bind.value??[];t.bind.value=w.filter(V=>V!==v)},c,m=()=>{let v=o(),w=e.query.trim(),V=t.allowCustom!==!1&&w!==""&&!v.some(A=>A.label.toLowerCase()===w.toLowerCase());v.forEach((A,g)=>{s("li.s-option role=option",`id=${a}-opt-${g}`,()=>{s(()=>s("aria-selected=",e.active===g?"true":"false")),s("#",A.label),s("click=",()=>d(A.value,c)),s("mousemove=",()=>{e.active=g})})}),V&&s("li.s-option.s-add role=option",()=>{s("#",`Add "${w}"`),s("click=",()=>d(w,c))}),v.length===0&&!V&&s("li.s-empty #No matches")};_(t,(v,w)=>{s("div.s-ac",t.inputAttrs,()=>{s(()=>s("aria-invalid=",w()?"true":"false"));let V=s("div.s-control",()=>{s("click=",()=>c?.focus()),s(()=>{if(t.multi)for(let A of p())s("span.s-chip",()=>{s("span #",s.peek(()=>r(A))),s("button type=button aria-label=",`Remove ${A}`,()=>{s("#\xD7"),s("click=",g=>{g.stopPropagation(),n(A),c?.focus()})})})}),c=s("input type=text role=combobox autocomplete=off",()=>{s("id=",v,`aria-controls=${a} aria-autocomplete=list`),t.placeholder!=null&&s("placeholder=",t.placeholder),t.disabled&&s("disabled=true"),t.required&&s("aria-required=true"),s("bind=",s.ref(e,"query")),s(()=>s("aria-expanded=",e.open?"true":"false")),s(()=>{let g=o()[e.active];s("aria-activedescendant=",e.open&&g?`${a}-opt-${e.active}`:"")}),s("input=",()=>{e.open=!0,e.active=0}),s("focus=",()=>{e.open=!0}),s("blur=",()=>{setTimeout(()=>H(),150)}),s("keydown=",A=>$(A,c))})});s(()=>{if(!e.open)return;let A=V.closest(".s-dialog")?350:150;w1.cur={id:a,anchor:V,zIndex:A,draw:m},s.clean(()=>{w1.cur?.id===a&&(w1.cur=null)})}),s(()=>{if(t.name)if(t.multi)for(let A of p())s("input type=hidden",()=>{s("name=",t.name),s("value=",A)});else s("input type=hidden",()=>{s("name=",t.name),s("value=",p()[0]??"")})})})});function $(v,w){let V=o(),A=V.length-1;if(v.key==="ArrowDown")v.preventDefault(),e.open=!0,e.active=Math.min(A,e.active+1);else if(v.key==="ArrowUp")v.preventDefault(),e.active=Math.max(0,e.active-1);else if(v.key==="Enter"){v.preventDefault();let g=V[e.active];g?d(g.value,w):t.allowCustom!==!1&&e.query.trim()?d(e.query.trim(),w):e.open&&(e.open=!1)}else if(v.key==="Escape")e.open&&(v.preventDefault(),e.open=!1,t.multi||(e.query=r(p()[0]??"")));else if(v.key==="Backspace"&&t.multi&&e.query===""){let g=p();g.length&&n(g[g.length-1])}}function H(){e.open=!1,t.multi?e.query="":t.allowCustom!==!1&&e.query.trim()?d(e.query.trim()):e.query=r(p()[0]??"")}}import a1 from"aberdeen";import c0 from"aberdeen";var M1={size:24,color:"currentColor",strokeWidth:2,cap:"round",join:"round"};function i0(t,a){let e=a.size??M1.size,h=c0('svg.s-icon aria-hidden=true viewBox="0 0 24 24" fill=none',"width=",e,"height=",e,"stroke=",a.color??M1.color,"stroke-width=",a.strokeWidth??M1.strokeWidth,"stroke-linecap=",a.cap??M1.cap,"stroke-linejoin=",a.join??M1.join,a.attrs);h.innerHTML=t}function O(t){return(a={})=>i0(t,a)}var b2=O('<path d="m9 18 6-6-6-6" />');var w2=O('<circle cx="12" cy="12" r="10" />');var H2=O('<path d="M15 3h6v6" /><path d="M10 14 21 3" /><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />');var A2=O('<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />');var H1=O('<path d="M4 5h16" /><path d="M4 12h16" /><path d="M4 19h16" />');var V2=O('<path d="M12 17v5" /><path d="M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89" /><path d="m2 2 20 20" /><path d="M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11" />'),K1=O('<path d="M12 17v5" /><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z" />');var k2=O('<path d="M22 2 2 22" />');var c1=O('<path d="M18 6 6 18" /><path d="m6 6 12 12" />');a1.insertGlobalCss({".s-box":{"&":"display:flex flex-direction:column overflow:hidden r: $s-radius-lg; position:relative","&:not(:first-child)":"margin-top: $3","> header":"display:flex align-items:center gap:$2 padding: $2 $3; border:0 border-bottom: 1px solid $s-faint; r:0 font-weight:600","> footer":"display:flex align-items:center justify-content:flex-end gap:$2 padding: $2 $3; border:0 border-top: 1px solid $s-faint; r:0","> div":"p:$3 gap:$3","> header > .s-box-close":"margin-left:auto","> .s-box-close":"position:absolute top:$2 right:$2 z-index:1"}});function s0(t={}){let a=typeof t=="string"||typeof t=="function"?{content:t}:t;a1("section.s-box.s-s.neutral.shadow",a.attrs,()=>{a1(()=>{a.header!=null?a1("header.s-s.neutral",a.headerAttrs,()=>{l(a.header),typeof a.close=="function"&&L2(a.close)}):typeof a.close=="function"&&L2(a.close)}),a1("div",a.contentAttrs,()=>{l(a.content)}),a1(()=>{a.footer!=null&&a1("footer.s-s.neutral",a.footerAttrs,()=>l(a.footer))})})}function L2(t){s1({icon:c1,ariaLabel:"Close",click:t,attrs:".s-box-close"})}import U1 from"aberdeen";function l0(t){U1(()=>{let a=t.bind.value;Y({attrs:t.attrs,buttons:Object.entries(t.options).map(([e,h])=>({content:h,ariaLabel:typeof h=="function"?e:void 0,attrs:a===e?".primary":".neutral",click:()=>{t.bind.value=t.allowDeselect&&a===e?void 0:e}}))})}),t.name&&U1(()=>U1("input type=hidden name=",t.name,"value=",t.bind.value??""))}import S from"aberdeen";S.insertGlobalCss({".s-check":{"&":"display:flex flex-direction:column gap:$1","> label":"display:flex align-items:center gap:$2 cursor:pointer user-select:none","> label:has(input:disabled)":"cursor:not-allowed opacity:0.45 filter:saturate(0.6)",input:"cursor:inherit m:0"}});function M0(t={}){let a=t.id??j("check");S("div.s-check",t.attrs,()=>{S("label for=",a,()=>{S("input type=checkbox",t.inputAttrs,()=>{S("id=",a),t.name&&S("name=",t.name),t.checked&&!t.bind&&S("checked=true"),t.change&&S("change=",t.change),S(()=>{t.disabled&&S("disabled=true")}),S(()=>{t.required&&S("aria-required=true")}),t.bind&&S("bind=",t.bind)}),S(()=>{t.label!=null&&l(t.label),t.required&&S("span.s-req aria-hidden=true #*")})}),S(()=>{t.help!=null&&!t.error&&S("div.s-help",()=>l(t.help))}),S(()=>{t.error&&S("div.s-error role=alert #",t.error)})})}import K from"aberdeen";K.insertGlobalCss({".s-form":{"&":"display:flex flex-direction:column gap:$3","&.grid":"display:grid grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap:$3","&.grid > .s-wide, &.grid > footer":"grid-column: 1 / -1;","> footer":"display:flex align-items:center justify-content:flex-end gap:$2 flex-wrap:wrap margin-top:$1"}});function x0(t={}){let a=typeof t=="string"||typeof t=="function"?{content:t}:t,e=K.proxy({value:!1});K("form.s-form",a.attrs,()=>{K(()=>{K(".grid=",a.layout==="grid")}),K(()=>{e.value&&K(".s-busy aria-busy=true")}),K("submit=",h=>{if(h.preventDefault(),a.submit&&!e.value){let p=new FormData(h.target),r={};for(let d of new Set(p.keys())){let n=p.getAll(d);r[d]=n.length===1?n[0]:n}let o=a.submit(r,h);if(o&&typeof o.then=="function"){e.value=!0;let d=()=>{e.value=!1};Promise.resolve(o).then(d,n=>{throw d(),n})}}}),l(a.content),K(()=>{a.actions&&K("footer",a.actionsAttrs,()=>l(a.actions))})})}import x from"aberdeen";import{current as a2}from"aberdeen/route";import y from"aberdeen";import{matchCurrent as y0,current as V1,go as z2}from"aberdeen/route";import z from"aberdeen";import{grow as v0,shrink as m0}from"aberdeen/transitions";z.insertGlobalCss({".s-toasts":"position:fixed bottom:$3 right:$3 z-index:400 display:flex flex-direction:column gap:$2 pointer-events:none max-width:min(90vw,24rem) w:24rem",".s-toast":{"&":"display:flex align-items:flex-start gap:$2 padding: $3; pointer-events:auto position:relative overflow:hidden",".s-toast-body":"display:flex flex-direction:column gap:$1 flex:1 min-width:0",".s-toast-title":"font-weight:700 line-height:1.3",".s-toast-close":"cursor:pointer border:0 background:transparent fg:$s-muted font-size:1.1em line-height:1 padding: 0 0.15em; r:4px flex-shrink:0 align-self:flex-start",".s-toast-close:hover":"fg:$s-text",".s-toast-close:focus-visible":"outline:none box-shadow: 0 0 0 3px $s-focus; fg:$s-text",".s-toast-progress":"position:absolute bottom:0 left:0 right:0 height:2px background:$s-accent width:100%"}});var u0=0,x1=z.proxy({});F(()=>{z.peek(()=>z.isEmpty(x1))&&z.isEmpty(x1)||z("div.s-toasts",()=>{z.onEach(x1,t=>{let{opts:a,id:e}=t,h=a.type==="danger"||a.type==="warning"?"alert":"status",p=a.type==null||a.type==="neutral"?"neutral":a.type,r=a.duration??6e3,o,d=null,n=()=>{clearTimeout(o),d&&(d.style.transition="none",d.style.width="100%",d.offsetWidth,d.style.transition=`width ${r}ms linear`,d.style.width="0%"),o=setTimeout(()=>N1(e),r)},c=()=>{clearTimeout(o),o=void 0,d&&(d.style.transition="none",d.style.width="100%")};z.clean(()=>clearTimeout(o)),z(`div.s-toast.s-s.${p}.extra-shadow aria-live=polite role=${h}`,"create=",v0,"destroy=",m0,a.attrs,()=>{r>0&&(z("mouseenter=",c),z("mouseleave=",n)),z("div.s-toast-body",()=>{z(()=>{a.title!=null&&z("div.s-toast-title",()=>l(a.title))}),z("div.s-toast-msg",()=>l(a.message))}),z(()=>{a.dismissible!==!1&&z("button.s-toast-close type=button aria-label=Dismiss",()=>{z("#\xD7"),z("click=",()=>N1(e))})}),r>0&&(d=z("div.s-toast-progress"))}),r>0&&requestAnimationFrame(n)})})});function N1(t){delete x1[t]}function A1(t){let a=++u0;return x1[a]={id:a,opts:t},()=>N1(a)}y.insertGlobalCss({".s-menu-list":"position:fixed z-index:350 min-width:10rem display:flex flex-direction:column p:$1 r:$s-radius-lg max-width: calc(100vw - 16px); overflow-y:auto max-height:min(80vh,28rem) transition: opacity 0.15s, transform 0.15s, visibility 0s;",".s-menu-list.hidden":"opacity:0 pointer-events:none transform:translateY(-6px) visibility:hidden transition: opacity 0.15s, transform 0.15s, visibility 0.15s;",".s-menu-item":"display:flex align-items:center gap:$2 w:100% scroll-margin:$2 padding: $m2 0; line-height:1.1 r:$s-radius cursor:pointer text-align:left font-weight:450 font-size:0.9em border:0 background:transparent fg:$s-text text-decoration:none transition: color 0.12s, transform 0.12s, text-shadow 0.12s;",".s-menu-item:focus-visible:not([aria-current=page]), .s-menu-item:hover:not([aria-disabled=true]):not([aria-current=page])":"filter:none color: color-mix(in lab, $s-primary 33%, $s-text);",".s-menu-item:focus-visible":"outline-offset:-2px background: color-mix(in srgb, $s-accent 14%, transparent);",".s-menu-item[aria-current=page]":"color:$s-accent filter:none",".s-menu-list .s-menu-item":"padding-inline:$2",".s-menu-item[aria-disabled=true]":"opacity:0.45 cursor:not-allowed pointer-events:none",".s-menu-icon":"flex-shrink:0",".s-menu-list .s-menu-icon":"display:flex",".s-menu-list .s-menu-icon > svg":"width:1.25em height:1.25em","hr.s-menu-sep":"border:0 height:1px margin: $1 0.6rem; background: linear-gradient(to right, transparent, $s-faint 18%, $s-faint 82%, transparent);",".s-menu-key":"margin-left:auto padding-left:$2 font-family:inherit font-size:0.8em opacity:0.55 white-space:nowrap flex-shrink:0","@media (hover: none) and (pointer: coarse)":{".s-menu-key":"display:none"},".s-menu-tt-key":"font-family:inherit font-size:0.85em opacity:0.7 white-space:nowrap",".s-tt-tip hr.s-menu-sep":"margin: 0.35em 0;",".s-menu-chevron":"margin-left:auto flex-shrink:0 display:flex transition: transform 0.15s ease;",".s-menu-key + .s-menu-chevron":"margin-left:0",".s-menu-chevron > svg":"width:1em height:1em",".s-menu-details":{"> summary":"list-style:none","> summary::-webkit-details-marker":"display:none","&::details-content":"interpolate-size:allow-keywords block-size:0 overflow-y:clip transition: block-size 0.15s ease, content-visibility 0.15s allow-discrete;","&[open]::details-content":"block-size:auto","&[open] > summary .s-menu-chevron":"transform:rotate(90deg)"},".s-menu-sub":"display:flex flex-direction:column gap:$1 padding-left:$3",".s-menu-inline":"display:flex flex-direction:column gap:$1"});function v1(t,a,e){y("keydown=",h=>{if(h.key==="Enter"&&!h.ctrlKey&&!h.metaKey&&!h.shiftKey&&!h.altKey&&h.target.tagName==="A"){queueMicrotask(()=>a?.());return}if(h.key!=="ArrowDown"&&h.key!=="ArrowUp"&&h.key!=="Home"&&h.key!=="End")return;h.preventDefault();let r=[...h.currentTarget.querySelectorAll(".s-menu-item")].filter(c=>c.getAttribute("aria-disabled")!=="true"&&!b0(c));if(!r.length)return;let o=r.indexOf(document.activeElement),d=h.key==="ArrowUp"?-1:1,n=h.key==="Home"?0:h.key==="End"?r.length-1:o<0?d>0?0:r.length-1:(o+d+r.length)%r.length;r[n].focus()}),$2(t,{onLeafSelect:a,keyHints:e,$hasCurrent:y.derive(()=>W1(t))})}function $2(t,a){for(let e of t){if(typeof e=="string"||typeof e=="function"){l(e);continue}if("separator"in e){y("hr.s-menu-sep");continue}e.items?g0(e,a):f0(e,a)}}function f0(t,a){let e=!1,h=y(t.href?"a.s-menu-item data-panel=open":"button.s-menu-item type=button",t.attrs,()=>{t.href&&(y("href=",t.href),t.target&&y("target=",t.target),y(()=>{let p=!e;e=!0,G1(t)&&(y("aria-current=page"),requestAnimationFrame(()=>h.scrollIntoView({block:"nearest",behavior:p?"instant":"smooth"})))})),t.disabled&&y("aria-disabled=true"),t.key&&y("aria-keyshortcuts=",D(t.key,!0)),y("click=",p=>{if(t.disabled){p.preventDefault();return}a.onLeafSelect?.(),t.click?.(p)}),t.icon&&y("span.s-menu-icon",()=>l(t.icon)),l(t.label),E2(t,a)})}var S2=new Map;function C2(t,a){return S2.set(t,a),a}function g0(t,a){let e=t.href??P2(t.items),h=e!=null?y.derive(()=>X1(t)?C2(e,!0):a.$hasCurrent.value?C2(e,!1):S2.get(e)??!1):null;y("details.s-menu-details",()=>{h&&y(()=>{h.value&&y("open=true")}),y("summary.s-menu-item.s-menu-branch",t.attrs,()=>{t.disabled&&y("aria-disabled=true"),t.key&&y("aria-keyshortcuts=",D(t.key,!0)),y(()=>{G1(t)&&y("aria-current=page")}),y("click=",p=>{if(t.disabled){p.preventDefault();return}e!=null&&(p.preventDefault(),H0(e),z2(e)),t.click?.(p)}),t.icon&&y("span.s-menu-icon",()=>l(t.icon)),l(t.label),E2(t,a),y("span.s-menu-chevron aria-hidden=true",()=>b2())}),y("div.s-menu-sub",()=>$2(t.items,a))})}function b0(t){for(let a=t.closest("details");a;a=a.parentElement&&a.parentElement.closest("details"))if(!a.open&&t.closest("summary")?.parentElement!==a)return!0;return!1}function W1(t){return t.some(a=>typeof a!="string"&&typeof a!="function"&&!("separator"in a)&&X1(a))}function G1(t){if(t.href!=null&&y0(t.href))return!0;let a=t.match;if(a==null)return!1;let e=V1.path;if(typeof a=="function")return a(e);let h=a.replace(/\/+$/,"")||"/";return e===h||e.startsWith(h==="/"?"/":h+"/")}function X1(t){if(G1(t))return!0;for(let a of t.items??[])if(!(typeof a=="string"||typeof a=="function"||"separator"in a)&&X1(a))return!0;return!1}function P2(t){for(let a of t){if(typeof a=="string"||typeof a=="function"||"separator"in a)continue;let e=a.href??(a.items?P2(a.items):void 0);if(e!=null)return e}}function E2(t,a){let e=a.keyHints?void 0:t.key;t.key&&!e&&y("kbd.s-menu-key aria-hidden=true text=",D(t.key)),!(t.tooltip==null&&!e)&&i1({placement:"right",tip:()=>{l(t.tooltip),e&&(t.tooltip!=null&&y("hr.s-menu-sep"),y("kbd.s-menu-tt-key aria-hidden=true text=",D(e)))}})}function m1(t,a){y(()=>{for(let e of O2(t(),[]))E(e.key,e.label,h=>{T2(),a?.(),e.click?.(h),e.href!=null&&w0(e.href,e.target)})})}function O2(t,a){for(let e of t)typeof e=="string"||typeof e=="function"||"separator"in e||(e.key&&!e.disabled&&a.push(e),e.items&&O2(e.items,a));return a}function w0(t,a){let e=new URL(t,location.href);a?window.open(e.href,a,a==="_blank"?"noopener":""):e.origin!==location.origin?location.href=e.href:z2(t)}var k1=null;function H0(t){try{k1=new URL(t,location.href).pathname.replace(/\/+$/,"")||"/"}catch{k1=null}}function j1(t){return k1!==t?!1:(k1=null,!0)}var J=y.proxy({opts:null});function X(){let t=J.opts?.anchor;J.opts=null,t?.focus()}function L1(t){let a=J.opts;return a!=null&&(t==null||a.anchor===t)}function T2(t){L1(t)&&X()}function A0(t,a){let e=t.offsetWidth,h=t.offsetHeight,p=window.innerWidth,r=window.innerHeight,o=4,d=a.left;d+e>p-8&&(d=Math.max(8,a.right-e));let n=a.bottom+o;n+h>r-8&&a.top-h-o>=8&&(n=a.top-h-o),t.style.left=Math.max(8,d)+"px",t.style.top=Math.max(8,n)+"px"}function V0(t){return[{label:"Open in new tab",icon:H2,click:()=>{window.open(t,"_blank","noopener")}},{label:"Copy link",icon:A2,click:()=>{k0(t)}}]}async function k0(t){let a=new URL(t,location.href).href;try{await navigator.clipboard.writeText(a),A1({message:"Link copied."})}catch{A1({message:"Couldn't copy the link.",type:"danger"})}}F(()=>{let t=J.opts;if(!t)return;let a=y("div.s-menu-list.s-s.neutral.shadow create=hidden destroy=hidden",t.dropdownAttrs,()=>{v1(t.link!=null?[...V0(t.link),{separator:!0},...t.items]:t.items,X,!0)}),e=r=>{let o=r.target;!a.contains(o)&&(t.closeOnAnchorClick||!t.anchor.contains(o))&&X()},h=r=>{(r.key==="Escape"||r.key==="Tab")&&(r.preventDefault(),X())},p=y.peek(V1,"path");y(()=>{V1.path!==p&&!j1(V1.path)&&X()}),document.addEventListener("click",e,!0),document.addEventListener("keydown",h,!0),y.clean(()=>{document.removeEventListener("click",e,!0),document.removeEventListener("keydown",h,!0)}),r1(t.at?new DOMRect(t.at.x,t.at.y,0,0):t.anchor,r=>A0(a,r)),requestAnimationFrame(()=>{document.body.contains(a)&&p1(a,".s-menu-item[aria-current=page]")})});function L0(t){y("nav.s-menu-inline",t.attrs,()=>{m1(()=>t.items,()=>t.onLeafSelect?.()),v1(t.items,t.onLeafSelect)})}function _1(t){return J.opts=t,X}function Q1(t){m1(()=>t.items);let a=null;y.clean(()=>{J.opts?.anchor===a&&X()}),y("contextmenu=",e=>{e.preventDefault(),a=e.currentTarget,_1({...t,anchor:a,at:{x:e.clientX,y:e.clientY},closeOnAnchorClick:!0})})}function C0(t){m1(()=>t.items);let a=null;y.clean(()=>{J.opts?.anchor===a&&X()}),Z({icon:H1,...t.button?.content==null?{ariaLabel:"Open menu"}:null,attrs:".neutral",...t.button,click:e=>{if(a=e.currentTarget,J.opts?.anchor===a){X();return}_1({items:t.items,anchor:a,dropdownAttrs:t.dropdownAttrs})}})}import i,{OPAQUE as D2}from"aberdeen";import*as b from"aberdeen/route";import L from"aberdeen";var z0=O('<path d="m15 18-6-6 6-6"/>'),$0=O('<path d="m9 18 6-6-6-6"/>');L.insertGlobalCss({".s-strip":{"&":"position:relative display:flex min-width:0","> .s-strip-row":"display:flex align-items:center flex:1 min-width:0 overflow-x:auto overflow-y:hidden scrollbar-width:none scroll-behavior:smooth","> .s-strip-row::-webkit-scrollbar":"display:none","> .s-strip-btn":"position:absolute top:0 bottom:0 z-index:1 display:none align-items:center justify-content:center width:2.4em border:0 padding:0 cursor:pointer fg:$s-muted transition: color 0.15s;","> .s-strip-btn:hover":"fg:$s-text","> .s-strip-btn-left":"left:0 justify-content:flex-start background: linear-gradient(to right, $s-bg 45%, transparent)","> .s-strip-btn-right":"right:0 justify-content:flex-end background: linear-gradient(to left, $s-bg 45%, transparent)","&.s-can-left > .s-strip-btn-left, &.s-can-right > .s-strip-btn-right":"display:flex"},".s-tabs":{"&":"display:flex flex-direction:column gap:$3",".s-tabbar":"border-bottom: 1px solid $s-faint;",".s-tablist":"gap:$1 align-items:stretch margin-bottom:-1px",".s-tab":"display:inline-flex align-items:center gap:$2 cursor:pointer background:transparent border:0 color: $s-muted; font-weight:600 padding: 0.6em 0.9em; white-space:nowrap border-bottom: 3px solid transparent; transition: color 0.15s, background 0.15s, border-color 0.15s;",".s-tab:hover:not(:disabled), .s-tab[aria-selected=true]":"color: $s-text;",".s-tab:focus-visible":"outline:none box-shadow: inset 0 0 0 2px $s-focus; r: $s-radius;",".s-tab[aria-selected=true]":"border-image: $s-gradient 1;",".s-tabpanel":"display:block"}});function C1(t){L("div.s-strip",t.attrs,()=>{let a=L("div.s-strip-row",t.stripAttrs,()=>l(t.content));q2(a,-1),q2(a,1),P0(a)})}function z1(t){let a=t.parentElement;if(!a||!t.isConnected)return;let e=parseFloat(getComputedStyle(a).fontSize)*2.6,h=t.getBoundingClientRect(),p=a.getBoundingClientRect(),r=h.left-p.left,o=h.right-p.right;r<e?a.scrollBy({left:r-e,behavior:"smooth"}):o>-e&&a.scrollBy({left:o+e,behavior:"smooth"})}function S0(t){let a=j("tabs"),e=(r,o)=>r.id??String(o),h=t.bind??L.proxy(e(t.tabs[0]??{label:""},0));t.tabs.length>0&&!t.tabs.some((r,o)=>e(r,o)===L.peek(()=>h.value))&&(h.value=e(t.tabs[0],0));let p=(r,o)=>{r.disabled||(h.value=e(r,o))};L("div.s-tabs",t.attrs,()=>{C1({attrs:".s-tabbar",stripAttrs:".s-tablist role=tablist",content:()=>{t.tabs.forEach((r,o)=>{let d=e(r,o),n=L("button.s-tab type=button role=tab",()=>{L("id=",`${a}-tab-${d}`,"aria-controls=",`${a}-panel-${d}`),L(()=>{let c=h.value===d;L("aria-selected=",c?"true":"false"),L("tabindex=",c?"0":"-1"),c&&requestAnimationFrame(()=>z1(n))}),r.disabled&&L("disabled=true"),L("click=",()=>p(r,o)),L("keydown=",c=>E0(c,t.tabs,o,p)),l(r.icon),l(r.label)})})}}),L("div.s-tabpanel role=tabpanel",t.contentAttrs,()=>{L(()=>{let r=h.value,o=t.tabs.findIndex((n,c)=>e(n,c)===r),d=t.tabs[o]??t.tabs[0];d&&(L("id=",`${a}-panel-${e(d,o)}`,"aria-labelledby=",`${a}-tab-${e(d,o)}`),l(d.content))})})})}function q2(t,a){L(`button.s-strip-btn.s-strip-btn-${a<0?"left":"right"} type=button`,()=>{L("tabindex=-1 aria-hidden=true"),L("click=",()=>t.scrollBy({left:a*t.clientWidth*.8,behavior:"smooth"})),(a<0?z0:$0)({size:"1.1em"})})}function P0(t){let a=t.parentElement;if(!a||typeof ResizeObserver>"u")return;let e=()=>{let r=t.scrollWidth-t.clientWidth;a.classList.toggle("s-can-left",t.scrollLeft>1),a.classList.toggle("s-can-right",t.scrollLeft<r-1)};t.addEventListener("scroll",e,{passive:!0});let h=new ResizeObserver(e);h.observe(t);let p=typeof MutationObserver>"u"?void 0:new MutationObserver(r=>{for(let o of r){for(let d of o.addedNodes)d instanceof Element&&h.observe(d);for(let d of o.removedNodes)d instanceof Element&&h.unobserve(d)}e()});p?.observe(t,{childList:!0});for(let r of Array.from(t.children))h.observe(r);e(),L.clean(()=>{t.removeEventListener("scroll",e),h.disconnect(),p?.disconnect()})}function E0(t,a,e,h){let p=e;if(t.key==="ArrowRight"||t.key==="ArrowDown")p=(e+1)%a.length;else if(t.key==="ArrowLeft"||t.key==="ArrowUp")p=(e-1+a.length)%a.length;else if(t.key==="Home")p=0;else if(t.key==="End")p=a.length-1;else return;t.preventDefault();let r=p>=e?1:-1;for(let o=0;o<a.length;o++){let d=a[p];if(d&&!d.disabled){h(d,p),t.currentTarget?.parentElement?.children[p]?.focus();return}p=(p+r+a.length)%a.length}}var t2={integer(t){if(!/^(0|-?[1-9]\d*)$/.test(t))return;let a=Number(t);return Number.isSafeInteger(a)?a:void 0}};function U(t){let a=String(t).replace(/\/+$/,"");return a.startsWith("/")||(a=`/${a}`),a}function u1(t){let a=U(t);return a==="/"?[]:a.slice(1).split("/")}function R2(t){let a=u1(t),e=a.map((h,p)=>{if(!h.startsWith("[")||!h.endsWith("]"))return{kind:"lit",value:h};let r=/^\[\.\.\.([A-Za-z_$][\w$]*)\]$/.exec(h);if(r){if(p!==a.length-1)throw new Error(`Staffa: "${h}" must be the last segment of route "${t}"`);return{kind:"rest",name:r[1]}}let o=/^\[([A-Za-z_$][\w$]*)(?:=([A-Za-z_$][\w$]*))?\]$/.exec(h);if(!o)throw new Error(`Staffa: malformed param "${h}" in route "${t}"`);let[,d,n]=o;if(n&&!(n in t2))throw new Error(`Staffa: unknown matcher "${n}" in route "${t}" (known: ${Object.keys(t2).join(", ")})`);return{kind:"param",name:d,matcher:n}});return{key:t,segs:e}}function O0(t){try{return decodeURIComponent(t)}catch{return t}}function J1(t,a){let e={};for(let h=0;h<t.segs.length;h++){let p=t.segs[h];if(p.kind==="rest")return h>=a.length?null:(e[p.name]=a.slice(h).join("/"),e);if(h>=a.length)return null;let r=a[h];if(p.kind==="lit"){if(r!==p.value)return null}else if(p.matcher){let o=t2[p.matcher](r);if(o===void 0)return null;e[p.name]=o}else e[p.name]=O0(r)}return t.segs.length===a.length?e:null}var N=250,T0=300,q0=360,$1=540;i.insertGlobalCss({":root":`--s-panel-ms:${N}ms`,".s-panels":"flex:1 min-width:0 min-height:0 position:relative overflow:clip isolation:isolate "+T1,".s-panel":{"&":"position:absolute top:0 bottom:0 left:0 display:flex flex-direction:column "+T1+` z-index:2 transition: transform ${N}ms ease-out, opacity ${N}ms linear;`,"&.s-panel-sep::before":"content:'' position:absolute left:0 top:0.6rem bottom:0.6rem width:1px z-index:1 background: linear-gradient(to bottom, transparent, $s-faint 18%, $s-faint 82%, transparent);","&.s-panel-new":"z-index:1","&.s-panel-closing":"z-index:0 opacity:0 pointer-events:none","&.s-panel-enter":"opacity:0","&.s-panel-hidden, &.s-panel-parked":"visibility:hidden"},".s-panel > .s-content":"flex:1 min-height:0 overflow-y:auto overflow-x:hidden p:$3",".s-panel-actions":"display:flex align-items:center justify-content:flex-end gap:$1 flex-shrink:0 padding: $3 $3 0;",".s-crumbs > .s-strip-row":"gap:$m1",".s-crumb":{"&":"flex: 1 0 4rem; font-size:0.85em line-height:1.5 fg:$s-muted text-decoration:none white-space:nowrap max-width:max-content overflow:hidden text-overflow:ellipsis transition: color 0.12s;","&.s-crumb-on":"font-weight:600 fg:$s-text","a&:hover":"filter:none color: color-mix(in lab, $s-primary 33%, $s-text);","svg.s-crumb-pin":"vertical-align:-0.12em margin-right:0.3em opacity:0.8 fill:currentColor","svg.s-crumb-unsaved":"vertical-align:0.08em margin-right:0.3em fill:currentColor"},"svg.s-crumb-sep":"flex-shrink:0 opacity:0.4",".s-main.s-shell-snap .s-panel":"transition:none",".s-panel-loading":{"&":"position:absolute inset:0 display:flex align-items:center justify-content:center gap:$1 pointer-events:none",i:"width:0.5rem height:0.5rem r:50% background:$s-muted opacity:0.45 animation: s-panel-pulse 1s ease-in-out infinite;","i:nth-child(2)":"animation-delay:0.15s","i:nth-child(3)":"animation-delay:0.3s"},"@keyframes s-panel-pulse":{"0%, 100%":"opacity:0.25 transform:scale(0.8)","50%":"opacity:0.7 transform:scale(1)"}});var Y1=!1,S1=class{[D2]=!0;compiled;ancestors;opts;$state=i.proxy({live:[],focus:0});$open=i.proxy({});nextOrder=0;containerEl;geom;lastGeom;layoutQueued=!1;timers=new Set;exiting=new Set;intent=null;settling=null;lastSeen=null;queued=null;constructor(a){if(Y1)throw new Error("Staffa: only one routed S.main() (one with `routes`) can be active at a time");Y1=!0,this.opts=a,this.compiled=Object.entries(a.routes).map(([e,h])=>({...R2(e),draw:h})),this.ancestors=Object.entries(a.ancestors??{}).filter(e=>e[1]!=null).map(([e,h])=>({...R2(e),fn:h})),i(()=>{let e=this.computeTarget(),h={...b.current.search},p=b.current.hash;i.peek(()=>{let r=this.lastSeen;if(r&&r.path!==b.current.path){let o=this.$state.live.find(d=>d.path===r.path);o&&(o.search=r.search,o.hash=r.hash)}this.lastSeen={path:b.current.path,search:h,hash:p},this.propose(e),Array.isArray(b.current.state.panels)||Object.assign(b.current.state,this.stateFor({stack:this.paths(),focus:this.$state.focus}))})}),this.interceptLinks(),this.watchTitle(),this.guardTabClose(),i.clean(()=>{for(let e of this.timers)clearTimeout(e);this.timers.clear(),this.queued?.settle(!1),this.queued=null,Y1=!1})}resolve(a){let e=u1(a);for(let h of this.compiled){let p=J1(h,e);if(p)return{draw:h.draw,params:p}}return{draw:this.opts.notFound??Z0,params:{}}}matches(a){let e=u1(a);return this.compiled.some(h=>J1(h,e)!=null)}deriveStack(a){let e=U(a),h=this.askAncestors(e),p=h?h.map(U):this.prefixesOf(e),r=[];for(let o of p)o!==e&&!r.includes(o)&&this.matches(o)&&r.push(o);return r.push(e),r}askAncestors(a){let e=u1(a);for(let h of this.ancestors){let p=J1(h,e);if(p)return h.fn(p,a)??void 0}}prefixesOf(a){let e=u1(a),h=[];for(let p=1;p<e.length;p++)h.push("/"+e.slice(0,p).join("/"));return h}pinnedIn(a,e){return a.filter(h=>e.includes(h)?!1:this.$state.live.find(p=>p.path===h)?.$panel.pinned===!0)}unsavedAt(a){return this.$state.live.find(e=>e.path===a)?.$panel.unsaved===!0}targetFor(a,e){let h=Array.isArray(e?.panels)?e.panels.map(String):null;if(h){let p=Array.isArray(e.parked)?e.parked.map(String):[],r=U(a),o=new Set([r]),d=c=>c.map(U).filter(m=>!o.has(m)&&!!o.add(m)),n=d(h);return{stack:[...n,r,...d(p)],focus:n.length}}return i.peek(()=>{let p=this.deriveStack(a).slice(0,-1),r=[...p,...this.pinnedIn(this.paths(),[...p,U(a)]),U(a)];return{stack:r,focus:r.length-1}})}computeTarget(){return this.targetFor(b.current.path,b.current.state)}paths(){return this.$state.live.map(a=>a.path)}propose(a){let e=this.$state.live.filter(h=>!a.stack.includes(h.path)&&h.$panel.unsaved).map(h=>h.path);e.length&&(a={stack:[...a.stack,...e],focus:a.focus}),!(Z2(this.paths(),a.stack)&&a.focus===this.$state.focus)&&this.commit(a,b.current.nav)}commit(a,e){this.geom=void 0;let h=b.current.state.pinned,p=new Set(Array.isArray(h)?h.map(String):[]),r=new Map(this.$state.live.map(n=>[n.path,n])),o=[];for(let n of a.stack){let c=r.get(n);if(c){r.delete(n),o.push(c);continue}let m=this.createEntry(n,o.length<=a.focus,p.has(n));e!=="load"&&(m.enter=!0),o.push(m),this.$open[n]=m}let d;for(let n of this.$state.live)r.has(n.path)?this.beginClose(n,d):d=n.path;this.$state.live=o,this.$state.focus=Math.min(a.focus,o.length-1),this.scheduleLayout()}createEntry(a,e,h){let{draw:p,params:r}=this.resolve(a),o={[D2]:!0,order:this.nextOrder++,path:a,draw:p,$ui:i.proxy({holding:!1}),maxWidth:"medium",width:0};return o.$panel=i.proxy({stack:this,params:r,path:a,width:0,visible:e,pinned:h||void 0,close:()=>this.closePath(o.path),open:(d,n)=>this.navigate(d,{from:o.path,how:n})}),o}beginClose(a,e){a.closing=!0,a.anchor=e,a.$panel.visible=!1,delete this.$open[a.path]}playExit(a,e){if(!a.closing){e.remove();return}e.classList.add("s-panel-closing"),e.setAttribute("inert","");let h=a.placed?{el:e,anchor:a.anchor,ride:0}:null;h&&this.exiting.add(h),this.afterTransition(e,"opacity",()=>{h&&this.exiting.delete(h),e.remove()})}afterTransition(a,e,h){let p=!1,r=setTimeout(()=>d(),N+80);this.timers.add(r);let o=()=>{clearTimeout(r),this.timers.delete(r)},d=()=>{o(),p||(p=!0,h())},n=c=>m=>{m.target===a&&m.propertyName===e&&c()};a.addEventListener("transitionrun",n(o)),a.addEventListener("transitionend",n(d)),a.addEventListener("transitioncancel",n(d))}intended(){return this.intent??{stack:this.paths(),focus:this.$state.focus}}stateFor(a){return{panels:a.stack.slice(0,a.focus),parked:a.stack.slice(a.focus+1),pinned:this.pinnedPaths()}}pinnedPaths(){return this.$state.live.filter(a=>a.$panel.pinned).map(a=>a.path)}issue(a,e){return this.intent=a,this.settling?(this.queued?.settle(!1),new Promise(h=>{this.queued={run:e,settle:h}})):this.start(e)}start(a){let e=p=>{this.settling=null;let r=this.queued;return this.queued=null,p&&r?this.start(r.run).then(r.settle,()=>r.settle(!1)):(this.intent=null,r?.settle(!1)),p},h=Promise.resolve(a()).then(e,p=>(console.error(p),e(!1)));return this.settling=h,h}focusAt(a){let e=this.intended();if(a<0||a>=e.stack.length||a===e.focus)return Promise.resolve(!1);let h={stack:e.stack,focus:a},p=e.stack[a];return this.issue(h,()=>{let r=this.$state.live.find(o=>o.path===p);return b.go({path:p,search:r?.search,hash:r?.hash,state:this.stateFor(h)})})}back(){return i.peek(()=>{let a=this.intended();return a.focus===a.stack.length-1&&!this.unsavedAt(a.stack[a.focus])?this.closePath(a.stack[a.focus]??""):a.focus===0?Promise.resolve(!1):this.focusAt(a.focus-1)})}closePath(a){return i.peek(()=>{let e=this.intended(),h=e.stack.indexOf(U(a));if(h<0||e.stack.length<2||this.unsavedAt(e.stack[h]))return Promise.resolve(!1);let p=e.stack.filter((c,m)=>m!==h),r=h===e.focus?Math.max(0,h-1):e.focus-(h<e.focus?1:0),o={stack:p,focus:r};if(h===e.focus&&h===e.stack.length-1){let c=this.$state.live.find(H=>H.path===p[r]),m={};c?.search&&(m.search=c.search),c?.hash&&(m.hash=c.hash);let $=p.filter(H=>this.$state.live.find(v=>v.path===H)?.$panel.pinned===!0);return this.issue(o,()=>Promise.resolve(b.back({path:p[r],state:{panels:p.slice(0,r),parked:[]}},m)).then(H=>(H&&(b.current.state.pinned=$),H)))}let d=p[r],n=d!==e.stack[e.focus];return this.issue(o,()=>{let c=n?this.$state.live.find(m=>m.path===d):void 0;return b.go({path:d,search:n?c?.search:{...b.current.search},hash:n?c?.hash:b.current.hash,state:this.stateFor(o)})})})}navigate(a,{from:e,how:h,beneath:p}={}){let r=h??this.opts.linkNavigation,o=r==="open"?null:e??null,d=r==="replace";return i.peek(()=>{let n;try{n=new URL(a,location.href)}catch{return Promise.resolve(!1)}let c=U(n.pathname),m=this.intended(),$=p?-1:m.stack.indexOf(c),H;if($>=0&&r!=="replace"&&r!=="open"){let g=this.pinnedIn(m.stack.slice($+1),[]);H={stack:[...m.stack.slice(0,$+1),...g],focus:$}}else{let g=o==null?-1:m.stack.indexOf(o),M=(p?p.map(U):g<0?this.deriveStack(c).slice(0,-1):m.stack.slice(0,d?g:g+1)).filter((k,G,h1)=>k!==c&&h1.indexOf(k)===G),u=[...M,...this.pinnedIn(m.stack,[...M,c,d?o:null])];H={stack:[...u,c],focus:u.length}}let v=$>=0?this.$state.live.find(g=>g.path===c):void 0,w=n.search?Object.fromEntries(new URLSearchParams(n.search)):v?.search??{},V=n.hash||v?.hash||"";if(H.focus===m.focus&&Z2(H.stack,m.stack)&&n.search===location.search&&(n.hash||"")===(location.hash||""))return Promise.resolve(!0);let A=this.stateFor(H);return d?this.issue(H,()=>(b.current.path=c,b.current.search=w,b.current.hash=V,b.current.state=A,i.runQueue(),b.current.path===c)):this.issue(H,()=>b.go({path:c,search:w,hash:V,state:A}))})}pushPath(a,e){return i.peek(()=>{let h=this.intended();return this.navigate(a,{from:h.stack[h.focus],how:e?"replace":"push"})})}interceptLinks(){b.interceptLinks((a,e,h)=>{if(h instanceof KeyboardEvent&&(h.ctrlKey||h.metaKey||h.shiftKey||h.altKey))return!1;let p=e.getAttribute("data-panel")??void 0,r=e.closest(".s-panel"),o=r?this.$state.live.find(d=>d.el===r):e.closest(".s-panel-origin")?this.$state.live[this.$state.focus]:void 0;return this.navigate(a.href,{from:o?.path,how:p}),!0})}get currentPanel(){return this.$state.live[this.$state.focus]?.$panel}get panels(){return this.$state.live.map(a=>a.$panel)}get currentPanelIndex(){return this.$state.focus}pushPanel(a){return this.pushPath(a,!1)}replacePanel(a){return this.pushPath(a,!0)}openPanelStack(a,e){return this.navigate(a,{how:"open",beneath:e})}closePanel(a){return i.peek(()=>{let e=this.intended();return this.closePath(a??e.stack[e.focus]??"")})}setColumns(a){this.opts.columns!==a&&(this.opts.columns=a,this.scheduleLayout())}setLinkNavigation(a){this.opts.linkNavigation=a}drawCrumbs(){C1({attrs:".s-crumbs role=navigation aria-label=Breadcrumbs",content:()=>{i(()=>{let a=this.panels.map(p=>p.path),e=this.currentPanelIndex,h;for(let p=0;p<a.length;p++){p&&k2({size:"0.85em",attrs:".s-crumb-sep"});let r=this.drawCrumb(a[p],p,p===e);p===e&&(h=r)}requestAnimationFrame(()=>{h&&z1(h)})})}})}drawCrumb(a,e,h){let p=this.$state.live[e];return i(h?"span.s-crumb aria-current=page":"a.s-crumb",()=>{h||i("href=",a),i(()=>{p?.$panel.visible&&i(".s-crumb-on")}),i(()=>{p?.$panel.unsaved&&w2({size:"0.45em",attrs:".s-crumb-unsaved"})}),i(()=>{p?.$panel.pinned&&K1({size:"0.85em",attrs:".s-crumb-pin"})}),i(()=>{i("#",p?.$panel.title??p?.$ui.fallback??(a.split("/").pop()||a))}),Q1({link:a,items:[{label:()=>{i(()=>{i("#",p?.$panel.pinned?"Unpin":"Pin")})},icon:()=>{i(()=>{(p?.$panel.pinned?V2:K1)()})},click:()=>{p&&this.togglePin(p)}},{label:"Close",icon:c1,disabled:p?.$panel.unsaved===!0,click:()=>{this.closePath(a)}}]})})}togglePin(a){a.$panel.pinned=!a.$panel.pinned||void 0,b.current.state.pinned=this.pinnedPaths()}watchTitle(){let a=document.title;i(()=>{let e=this.$state.live[this.$state.focus],h=e?.$panel.title??e?.$ui.fallback,p=typeof this.opts.title=="string"?this.opts.title:void 0,r=this.$state.live.some(d=>d.$panel.unsaved),o=h&&p?`${h} \xB7 ${p}`:h||p;o&&(document.title=(r?"\u2022 ":"")+o)}),i.clean(()=>{document.title=a})}guardTabClose(){if(typeof window>"u")return;let a=e=>{let h=this.$state.live.find(p=>p.$panel.unsaved);h&&(e.preventDefault(),e.returnValue=!0,this.flushLayout(),h.$panel.visible||this.focusAt(this.intended().stack.indexOf(h.path)))};i(()=>{this.$state.live.some(e=>e.$panel.unsaved)&&(window.addEventListener("beforeunload",a),i.clean(()=>window.removeEventListener("beforeunload",a)))})}drawColumns(){let a=i("div.s-panels role=main",()=>{this.containerEl=i(),i.onEach(this.$open,e=>this.drawPanel(e),e=>e.order)});if(typeof ResizeObserver<"u"){let e=new ResizeObserver(()=>this.layout());e.observe(a),i.clean(()=>e.disconnect())}i.clean(()=>{this.containerEl===a&&(this.containerEl=void 0)}),this.scheduleLayout()}drawPanel(a){let e;i(()=>{let h=a.$panel.maxWidth;a.maxWidth=h==="small"||h==="large"||h==="none"?h:"medium";let p=this.roomFor(a.maxWidth);p&&(a.width=p,i.peek(a.$panel,"width")!==p&&(a.$panel.width=p),e&&(e.style.width=`${p}px`,this.scheduleLayout()))}),e=i(`section.s-panel${a.width?` w:${a.width}px`:""}`,"destroy=",h=>this.playExit(a,h),()=>{i(()=>this.drawActions(a)),i("div.s-content",()=>{if(a.draw(a.$panel),b.persistScroll(a.path),i.peek(a.$panel,"title")==null){let h=R0(i());h&&i.peek(a.$ui,"fallback")!==h&&(a.$ui.fallback=h)}}),i(()=>{!a.$panel.loading||a.$ui.holding||i("div.s-panel-loading aria-hidden=true",()=>{i("i"),i("i"),i("i")})})}),a.el=e,a.placed=!1,e.style.transition="none",i.clean(()=>{a.el===e&&(a.el=void 0)}),i(()=>{a.$panel.loading,this.scheduleLayout()}),this.scheduleLayout()}drawActions(a){this.opts.$shell.narrow||a.$panel.actions==null||i("div.s-panel-actions",()=>l(a.$panel.actions))}scheduleLayout(){this.layoutQueued||(this.layoutQueued=!0,requestAnimationFrame(()=>this.flushLayout()))}flushLayout(){this.layoutQueued&&(this.layoutQueued=!1,this.layout())}measure(){let a=this.containerEl,e=a?a.getBoundingClientRect().width:0;if(!e)return;let h=Math.ceil(e/$1),p=e/h>=q0?e/h:Math.min(e,$1),r=o=>Math.min(o*p,e);return{area:e,size:{small:p,medium:r(2),large:r(3),none:e}}}geometry(){return this.geom??=this.measure()}roomFor(a){return this.geometry()?.size[a]??0}layout(){let a=this.containerEl,e=a?.closest(".s-main");if(!a||!e)return;let h=this.$state.live,p=h.length;if(!p||h.some(M=>!M.el))return;this.geom=void 0;let r=this.geometry();if(!r)return;let o=this.opts.columns==="single",d=this.lastGeom?.area!==r.area;d&&(this.lastGeom=r,e.classList.add("s-shell-snap"));let n=M=>r.size[M.maxWidth],c=Math.min(this.$state.focus,p-1),m=c,$=n(h[c]);if(!o)for(let M=c-1;M>=0;M--){let u=$+n(h[M]);if(u>r.area)break;$=u,m=M}let H=m>0?0:(r.area-$)/2;for(let M=m;M<=c;M++)h[M].width=n(h[M]);for(let M of h)M.width||(M.width=n(M));let v=[],w=[],V=new Map,A=new Map;if(!d)for(let M of h)M.placed&&A.set(M,D0(M.el));let g=H,e1=0;for(let M=0;M<m;M++)g-=h[M].width;for(let M=0;M<p;M++){let u=h[M],k=u.el,G=M>=m&&M<=c;M===c+1&&(g=Math.max(g,r.area)),(u.enter||!u.placed)&&(!u.$panel.loading||u.holdDone?u.$ui.holding=!1:u.$ui.holding||(u.$ui.holding=!0,this.holdEnter(u))),u.placed?(e1=parseFloat(k.style.left)-g,V.set(u.path,e1),e1&&!d&&(k.style.transition=`opacity ${N}ms linear`,k.style.transform=`translateX(${(A.get(u)??0)+e1}px)`,w.push(k)),k.style.left=`${g}px`,u.enter&&!u.$ui.holding&&this.releaseEnter(u)):(v.push(u),k.style.left=`${g}px`,u.enter&&G&&(k.style.transform=`translateX(${e1}px)`,k.classList.add("s-panel-enter","s-panel-new"))),k.style.width=`${u.width}px`,g+=u.width,u.$panel.visible!==G&&(u.$panel.visible=G),u.$panel.width!==u.width&&(u.$panel.width=u.width),k.classList.toggle("s-panel-sep",G&&M>m);let h1=M<m,F2=k.classList.contains("s-panel-hidden")||k.classList.contains("s-panel-parked");G?k.classList.remove("s-panel-hidden","s-panel-parked"):F2||!u.placed||d?(k.classList.toggle("s-panel-hidden",h1),k.classList.toggle("s-panel-parked",!h1)):this.afterTransition(k,"transform",()=>{u.el!==k||!u.offstage||(k.classList.toggle("s-panel-hidden",h1),k.classList.toggle("s-panel-parked",!h1))}),u.offstage=!G,k.toggleAttribute("inert",!G)}for(let M of this.exiting){let u=M.anchor==null?void 0:V.get(M.anchor);u&&(M.ride-=u,M.el.style.transform=`translateX(${M.ride}px)`)}(v.length||w.length||d)&&a.offsetWidth,d&&e.classList.remove("s-shell-snap");for(let M of w)M.style.transition="",M.style.transform="";for(let M of v){let u=M.el;u.style.transition="",u.style.transform="",M.placed=!0,M.$ui.holding||this.releaseEnter(M)}}releaseEnter(a){a.enter=!1;let e=a.el;!e||!e.classList.contains("s-panel-enter")||(e.classList.remove("s-panel-enter"),this.afterTransition(e,"opacity",()=>e.classList.remove("s-panel-new")))}holdEnter(a){let e=setTimeout(()=>{this.timers.delete(e),a.holdDone=!0,a.$ui.holding&&(a.$ui.holding=!1,this.scheduleLayout())},T0);this.timers.add(e)}};function Z2(t,a){return t.length===a.length&&t.every((e,h)=>e===a[h])}function D0(t){let a=getComputedStyle(t).transform;return a&&a!=="none"?new DOMMatrixReadOnly(a).m41:0}function R0(t){let a=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);for(let e=a.nextNode();e;e=a.nextNode()){let h=e.textContent.trim();if(h)return h.length>48?`${h.slice(0,47).trimEnd()}\u2026`:h}}function Z0(t){i("p fg:$s-muted",()=>i("#",`No panel at ${t.path}`))}var B0=200;x.insertGlobalCss({".s-main":{"&":"display:flex flex-direction:column min-height:100vh max-height:100vh container-type:inline-size","body > &":"margin: calc(-1 * $3)","> header":"border:0 border-bottom: 1px solid $s-faint; r:0 position:sticky top:0 z-index:10","> footer":"border-top: 1px solid $s-faint; fg:$s-muted","> header > .s-bar, > footer > .s-bar":"display:flex align-items:center width:100% margin-inline:auto gap:$3 padding: $2 $3;","> header .s-logo, > header .s-nav-trigger":"display:flex align-items:center flex-shrink:0","> header .s-nav-trigger":"margin-left:-0.375rem","> header .s-logo":"font-size:1.4em background: $s-gradient; -webkit-background-clip:text; background-clip:text; color:transparent;","> header .s-titles":"display:flex flex-direction:column min-width:5rem flex: 0 1 auto;","> header .s-subtitle":"fg:$s-muted font-size:0.85em line-height:1.5 overflow:hidden text-overflow:ellipsis white-space:nowrap","> header .s-title":"font-weight:800 font-size:1.1em line-height:1.2 overflow:hidden text-overflow:ellipsis white-space:nowrap letter-spacing:-0.01em background: $s-gradient; -webkit-background-clip:text; background-clip:text; color:transparent; width:fit-content max-width:100%","> header a.s-logo, > header a.s-title":"text-decoration:none filter:none cursor:pointer","> header .s-menu":"display:flex align-items:center justify-content:flex-end gap:$2 flex: 1 1 auto;",".s-body":"flex:1 overflow:clip display:flex flex-direction:row min-height:0 justify-content:center position:relative",".s-body-inner":"flex:1 min-width:0 display:flex flex-direction:row min-height:0","&.s-nav-right .s-body-inner":"flex-direction:row-reverse",".s-nav-sep":"width:1px flex-shrink:0 align-self:stretch margin: 0.6rem 0; border:0 background: linear-gradient(to bottom, transparent, $s-faint 18%, $s-faint 82%, transparent);",".s-body main":`flex:1 min-width:0 min-height:0 overflow-x:hidden overflow-y:auto display:flex flex-direction:column transition: transform ${N}ms ease;`,".s-body main.s-slide-in":"transform: translateX(100%); transition:none",".s-body main > .s-content":"width:100% flex:1 p:$3",".s-body main.s-scroll-y":"margin-right:$3"},".s-nav-panel":{"&":"display:flex flex-direction:column overflow-y:auto flex-shrink:0 width: calc(var(--s-nav-w) - 1px); padding:$3 gap:$1"},".s-nav-page":{"&":`position:absolute inset:0 z-index:5 display:flex flex-direction:column overflow-y:auto overscroll-behavior:contain border:0 r:0 padding:$2 gap:$1 transition: transform ${N}ms ease, visibility 0s;`,"&.s-nav-page-off":`transform:translateX(-100%) pointer-events:none visibility:hidden transition: transform ${N}ms ease, visibility 0s ${N}ms;`,".s-menu-item":"padding: $2 $3; min-height:3rem font-size:1.05em gap:$3"},[`@container (max-width: ${g1}px)`]:{".s-main .s-nav-panel, .s-main .s-nav-sep":"display:none",".s-main > header > .s-bar":"gap:$1 padding: $1 $2;",".s-main .s-body main.s-scroll-y":"margin-right:0"},[`@container (max-width: ${$1}px)`]:{".s-content > .s-box":"margin-inline: calc(-1 * $3); r:0 border-inline:0"}});function F0(t={}){let a=t.nav,e=t.navPosition??"left",h=x.proxy({open:!1}),p=x.proxy({narrow:typeof document<"u"&&document.documentElement.clientWidth<=g1}),r=t.routes;if(r!=null&&t.content!=null)throw new Error("Staffa: S.main() takes either `content` or `routes`, not both");let o=r?new S1({routes:r,notFound:t.notFound,ancestors:t.ancestors,title:t.title,$shell:p}):null;o&&(x(()=>o.setColumns(t.columns)),x(()=>o.setLinkNavigation(t.linkNavigation)));let d=o&&t.home!==null?t.home??"/":null,n=()=>{t.maxWidth!=null&&x("max-width:",t.maxWidth)},c=x("div.s-main",t.attrs,()=>{x(()=>{a==null||!a.items.length?x("--s-nav-w: 0px"):x(`.s-nav-${e}`,`--s-nav-w: ${t.navWidth??B0}px`)}),x(()=>{(o!=null||t.title!=null||t.subtitle!=null||t.logo!=null||t.menu!=null||a!=null&&a.items.length>0)&&x("header.s-s.neutral",t.topbarAttrs,()=>{x("div.s-bar",()=>{x(n),x(()=>{if(p.narrow&&a!=null&&a.items.length){x("div.s-nav-trigger",()=>W0(a,h));return}t.logo!=null&&x(d!=null?"a.s-logo aria-label=Home":"div.s-logo",()=>{d!=null&&x("href=",d),l(t.logo)})}),x("div.s-titles",()=>{x(()=>{t.title!=null&&x(d!=null?"a.s-title":"div.s-title",()=>{d!=null&&x("href=",d),l(t.title)})}),K0(t,o,a,p)}),x(()=>{let $=p.narrow?o?.currentPanel?.actions:void 0,H=$??t.menu;H!=null&&x(`div.s-menu${$!=null?".s-panel-origin":""}`,()=>l(H))})})})}),x("div.s-body",()=>{x("div.s-body-inner",()=>{x(n),x(()=>{a==null||!a.items.length||(x(`nav.s-nav-panel.s-nav-${e}`,t.navAttrs,()=>{v1(a.items)}),x("div.s-nav-sep aria-hidden=true"))}),j0(t,o)}),x(()=>{a!=null&&a.items.length&&h.open&&G0(a,t.navPageAttrs,h,p)})}),x(()=>{t.footer!=null&&x("footer",()=>{x("div.s-bar",()=>{x(n),l(t.footer)})})})});return N0(c,p),a!=null&&m1(()=>a.items,()=>{h.open=!1}),(a!=null||o)&&x(()=>{let m=H=>()=>{F1()||L1()||H()},$=()=>c.querySelector(".s-nav-trigger button");h.open?E("Esc","Close the navigation",m(()=>{h.open=!1,$()?.focus()}),"global"):o&&o.currentPanelIndex>0?E("Esc","Back to the previous panel",m(()=>{o.back()}),"global"):E("Esc","Jump to the navigation",m(()=>{let H=c.querySelector(".s-nav-panel");H?.offsetParent!=null?(H.querySelector("[aria-current=page]")??H.querySelector(".s-menu-item:not([aria-disabled=true])"))?.focus():$()?.click()}),"global")}),o??void 0}var P1=null;function I0(){P1?.()}function K0(t,a,e,h){x(()=>{if(t.subtitle!=null&&(a==null||U0(a,e,h))){x("div.s-subtitle",()=>l(t.subtitle));return}a?.drawCrumbs()})}function U0(t,a,e){return e.narrow||a==null||t.panels.length>1?!1:W1(a.items)}function N0(t,a){if(typeof ResizeObserver>"u")return;let e=new ResizeObserver(h=>{let p=h[0]?.contentBoxSize?.[0],r=p?p.inlineSize:h[0]?.contentRect.width;r!=null&&(a.narrow=r<=g1)});e.observe(t),x.clean(()=>e.disconnect())}function W0(t,a){s1({icon:t.button?.icon??(()=>x(()=>(a.open?c1:H1)())),ariaLabel:t.button?.ariaLabel??"Open navigation",attrs:t.button?.attrs,click:()=>{a.open=!a.open}})}function G0(t,a,e,h){let p=!1,r=()=>{p=!0,e.open=!1},o=x("nav.s-nav-page.s-s.neutral aria-label=Navigation create=s-nav-page-off destroy=s-nav-page-off",a,()=>v1(t.items,r));P1=r,x.clean(()=>{P1===r&&(P1=null)});let d=x.peek(a2,"path");x(()=>{a2.path!==d&&!j1(a2.path)&&r()});let n=o.closest(".s-main"),c=o.parentElement?.querySelector(":scope > .s-body-inner"),m=c?.querySelector(":scope > main");c?.setAttribute("inert",""),x(()=>{h.narrow||(e.open=!1)}),x.clean(()=>{c?.removeAttribute("inert"),p&&(m&&X0(m),n?.querySelector(".s-nav-trigger button")?.focus())}),requestAnimationFrame(()=>{document.body.contains(o)&&p1(o,".s-menu-item[aria-current=page]")})}function X0(t){t.classList.add("s-slide-in"),t.offsetWidth,t.classList.remove("s-slide-in")}function j0(t,a){if(a){a.drawColumns();return}let e=x("main",()=>{x("div.s-content",t.contentAttrs,()=>{l(t.content)})});_0(e)}function _0(t){if(typeof ResizeObserver>"u")return;let a=()=>t.classList.toggle("s-scroll-y",t.offsetWidth>t.clientWidth),e=new ResizeObserver(a);e.observe(t),t.firstElementChild&&e.observe(t.firstElementChild),a(),x.clean(()=>e.disconnect())}import T from"aberdeen";T.insertGlobalCss({".s-select_wrap":{"&":"position:relative display:block",select:"w:100% cursor:pointer padding-right:2.2em; appearance:none","&::after":"content: '\u25BE'; position:absolute right:0.7em top:50%; transform: translateY(-50%); pointer-events:none fg:$s-muted font-size:0.85em"}});function Q0(t){_(t,(a,e)=>{T("div.s-select_wrap",()=>{T("select.s-input",t.inputAttrs,()=>{d1(t,a,e),T("change=",h=>{t.bind&&(t.bind.value=h.target.value)}),T(()=>{let h=typeof t.options=="function"?t.options():t.options,p=t.bind?.value??"";t.placeholder!=null&&T("option",()=>{T("value= disabled=true hidden=true"),p||T("selected=true"),T("#",t.placeholder)});for(let r of h){let o=typeof r=="string"?{value:r,label:r}:{value:r.value,label:r.label??r.value};T("option",()=>{T("value=",o.value),o.value===p&&T("selected=true"),T("#",o.label)})}})})})})}import W from"aberdeen";W.insertGlobalCss({"textarea.s-input":"resize:vertical min-height:3em line-height:1.45","textarea.s-input.s-autoGrow":"resize:none min-height:2.5em overflow-y:hidden"});function J0(t={}){let a=t.autoGrow!==!1;_(t,(e,h)=>{let p=W("textarea.s-input",t.inputAttrs,()=>{a?(W(".s-autoGrow"),W("input=",r=>{B2(r.currentTarget),t.input&&t.input(r)})):(W("rows=",t.rows??4),W("resize:",t.resize??"vertical"),t.input&&W("input=",t.input)),t.placeholder!=null&&W("placeholder=",t.placeholder),t.value!=null&&!t.bind&&W("value=",t.value),t.change&&W("change=",t.change),d1(t,e,h,t.bind)});a&&requestAnimationFrame(()=>B2(p))})}function B2(t){t.style.height="auto",t.style.height=`${t.scrollHeight}px`}export{Q1 as addContextMenu,i1 as addTooltip,e0 as alert,n0 as autocomplete,E as bindKey,s0 as box,Z as button,l0 as buttonChooser,Y as buttonGroup,M0 as checkbox,T2 as closeFloatingMenu,I0 as closeNav,h0 as confirm,n1 as dialog,x0 as form,D as formatKey,p2 as getDarkMode,s1 as iconButton,F1 as isDialogOpen,L1 as isFloatingMenuOpen,F0 as main,L0 as menu,C0 as menuButton,p0 as prompt,z1 as revealInStrip,C1 as scrollStrip,Q0 as select,K2 as setDarkMode,r0 as setKeyHelp,_1 as showFloatingMenu,I1 as showKeyHelp,S0 as tabs,J0 as textarea,B1 as textline,A1 as toast};
1
+ import I from"aberdeen";var p2=t=>`background: $s-bg linear-gradient(${t}, color-mix(in oklab, $s-bg, white 9%), color-mix(in oklab, $s-bg, black 9%));`,O1=p2("170deg"),q1=p2("180deg"),T1="staffa:darkMode",r2=I.proxy({value:N2()});function N2(){try{let t=localStorage.getItem(T1);if(t==="dark")return!0;if(t==="light")return!1}catch{}}function G2(t){r2.value=t;try{t===void 0?localStorage.removeItem(T1):localStorage.setItem(T1,t?"dark":"light")}catch{}}function o2(t=!1){let a=r2.value;return a===void 0&&!t?I.darkMode():a}I(()=>{o2()?I.insertGlobalCss({":root, .s-s.neutral":"--s-bg:#0e0f12 --s-text:#e9eaec",".s-s.neutral":"--s-bg:#191b1f --s-text:#e9eaec",".s-s.neutral .s-s.neutral":"--s-bg:#23262b"}):I.insertGlobalCss({":root, .s-s.neutral":"--s-bg:#eef0f3 --s-text:#1d1f24",".s-s.neutral, .s-s.neutral":"--s-bg:#ffffff --s-text:#1d1f24",".s-s.neutral .s-s.neutral":"--s-bg:#f6f7f9"})});I.setSpacingCssVars(1.1);I.insertGlobalCss({"*, *::before, *::after":"box-sizing:border-box",html:"text-size-adjust:100%",body:"m:0 p:$3 min-height:100dvh line-height:1.5 font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; -webkit-font-smoothing:antialiased text:$s-text "+O1,a:"color: $s-link-fg; text-decoration:underline text-underline-offset:2px; transition: color 0.12s, filter 0.12s;","a:hover":"filter: brightness(1.15)","input, button, textarea, select, optgroup":"font:inherit color:inherit","input:where(:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=image],[type=submit],[type=button],[type=reset],[type=hidden])), textarea, select":"background:$s-bg border: 1px solid $s-faint; r:$s-radius-sm padding: 0.45em 0.65em; max-width:100%","input:where([type=checkbox],[type=radio])":"width:1.15em height:1.15em cursor:pointer","input[type=range]":"appearance:none background:transparent cursor:pointer vertical-align:middle","input[type=range]::-webkit-slider-runnable-track":"height:4px r:99px background:$s-faint","input[type=range]::-moz-range-track":"height:4px r:99px background:$s-faint","input[type=range]::-moz-range-progress":"height:4px r:99px background:$s-accent","input[type=range]::-webkit-slider-thumb":"appearance:none width:16px height:16px margin-top:-6px r:50% background:$s-accent","input[type=range]::-moz-range-thumb":"width:16px height:16px border:0 r:50% background:$s-accent","input[type=file]":"cursor:pointer",progress:"appearance:none border:0 height:6px r:99px background:$s-faint overflow:hidden vertical-align:middle","progress::-webkit-progress-bar":"background:$s-faint r:99px","progress::-webkit-progress-value":"background:$s-accent r:99px","progress::-moz-progress-bar":"background:$s-accent r:99px",meter:"vertical-align:middle",fieldset:"border: 1px solid $s-faint; r:$s-radius-sm padding:$2 min-width:0",legend:"padding: 0 $1; font-weight:600","code, kbd, samp, pre":"font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;",code:"background: color-mix(in oklab, $s-text, $s-bg 86%); padding: 0.12em 0.34em; r:4px font-size:0.9em",pre:"background: color-mix(in oklab, $s-text, $s-bg 92%); p:$3 r: $s-radius; overflow:auto","pre code":"background:transparent p:0","img, svg, video, canvas":"max-width:100% h:auto",hr:"border:0 border-top: 1px solid $s-faint;","::placeholder":"color: $s-muted; opacity:1",":focus-visible":"outline: 2px solid $s-focus; outline-offset:2px",small:"color:$s-muted font-size:0.9em","@media (prefers-reduced-motion: reduce)":{"*, *::before, *::after":"transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important;"},":root":"--s-primary:#00a884 --s-danger:#dc5b41 --s-success:#00a884 --s-warning:#ef6b00 --s-link:#3f8cd8 --s-radius-sm:6px --s-radius:12px --s-radius-lg:18px --s-focus: color-mix(in srgb, $s-primary 38%, transparent); --s-gradient: linear-gradient(135deg, color-mix(in oklab, $s-primary, white 16%), color-mix(in oklab, $s-primary, black 14%));",":root, .s-s.neutral":"--s-accent:$s-primary --s-link-fg:$s-link",".s-s:not(.neutral)":"--s-bg:$s-primary border:0 --s-text:#eee --s-accent:#fff --s-link-fg:#eef --s-muted: color-mix(in srgb, #fff 70%, transparent); --s-faint: color-mix(in srgb, #fff 30%, transparent);",".s-s.danger":"--s-bg:$s-danger",".s-s.success":"--s-bg:$s-success",".s-s.warning":"--s-bg:$s-warning",".s-s.link":"--s-bg:$s-link",".s-s.primary":"--s-bg:$s-primary",":root, .s-s":"--s-muted: color-mix(in oklab, $s-text, $s-bg 42%); --s-faint: color-mix(in oklab, $s-text, $s-bg 80%); color:$s-text accent-color:$s-accent scrollbar-width:thin scrollbar-color: $s-faint transparent;",".s-s":O1+" r:$s-radius",":where(.s-s.neutral)":"border: 1px solid $s-faint;",".s-s::-webkit-scrollbar, .s-s ::-webkit-scrollbar":"width:10px height:10px",".s-s::-webkit-scrollbar-track, .s-s ::-webkit-scrollbar-track":"background:transparent",".s-s::-webkit-scrollbar-thumb, .s-s ::-webkit-scrollbar-thumb":"background:$s-faint border-radius:99px border: 2px solid transparent; background-clip:padding-box",".s-s.shadow.neutral:not(.s-btn)":"box-shadow: 0 4px 14px rgba(0,0,0,0.13);",".s-s.extra-shadow.neutral:not(.s-btn)":"box-shadow: 0 18px 50px rgba(0,0,0,0.28);",".s-s.shadow:not(.neutral):not(.tonal):not(.outlined)":"box-shadow: 0 4px 14px color-mix(in srgb, $s-bg 30%, transparent);",".s-s.extra-shadow:not(.neutral):not(.tonal):not(.outlined)":"box-shadow: 0 14px 40px color-mix(in srgb, $s-bg 40%, transparent);",".s-s.no-shadow":"box-shadow: none !important;",".s-s:not(.neutral).tonal, .s-s:not(.neutral).outlined":{"&":"--s-text:$s-bg --s-accent:$s-bg --s-link-fg:$s-bg --s-faint: color-mix(in srgb, $s-bg 30%, transparent); --s-muted: color-mix(in srgb, $s-bg 70%, transparent);",code:"background:transparent padding:0",pre:"background:transparent border: 1px solid $s-faint;"},".s-s:not(.neutral).tonal":"background: color-mix(in srgb, $s-bg 15%, transparent); border: 1px solid $s-faint;",".s-s:not(.neutral).outlined":"background: transparent; border: 1px solid color-mix(in srgb, $s-bg 45%, transparent);",".s-s:not(.neutral) .s-s.tonal, .s-s:not(.neutral) .s-s.outlined":"--s-text:#fff --s-accent:#fff --s-link-fg:#fff "+O1+" border-color: transparent;"});I.insertGlobalCss({".s-preload, .s-preload *, .s-preload *::before, .s-preload *::after":"transition: none !important; animation: none !important;"});if(typeof document<"u"&&typeof requestAnimationFrame=="function"){let t=document.documentElement;t.classList.add("s-preload"),requestAnimationFrame(()=>requestAnimationFrame(()=>t.classList.remove("s-preload")))}I.insertGlobalCss({":disabled, [aria-disabled=true]":"opacity:0.45 filter:saturate(0.6) user-select:none",":disabled, [aria-disabled=true], :disabled *, [aria-disabled=true] *":"pointer-events:none cursor:not-allowed"});var X2="p, ul, ol, dl, blockquote, pre, table, figure, hr, h1, h2, h3, h4, h5, h6";I.insertGlobalCss({[`${X2}`]:{"&":"margin:0","&:not(:first-child)":"margin-top:$3"},"h1, h2, h3, h4, h5, h6":{"&":"line-height:1.15 font-weight:700 text-wrap:balance","&:not(:first-child)":"margin-top:1.4em"},h1:"font-size:2em font-weight:800 letter-spacing:-0.022em",h2:"font-size:1.55em letter-spacing:-0.018em",h3:"font-size:1.3em letter-spacing:-0.011em",h4:"font-size:1.1em",h5:"font-size:0.95em letter-spacing:0.005em",h6:"font-size:0.8em fg:$s-muted text-transform:uppercase letter-spacing:0.07em","ul, ol":{"&":"padding-left:1.5em","> li:not(:first-child), li > &:not(:first-child)":"margin-top:$1"},blockquote:"border-left: 3px solid $s-faint; padding-left: $3; fg: $s-muted",table:"border-collapse:collapse","th, td":"text-align:left padding: $1 $2; border-bottom: 1px solid $s-faint; vertical-align:top",th:"font-weight:600","thead th":"border-bottom: 2px solid $s-faint;",dt:"font-weight:600",dd:"margin-left: 1.5em",figcaption:"fg:$s-muted font-size:0.9em margin-top:$1 text-align:center"});import R1 from"aberdeen";var y1=typeof navigator<"u"&&/mac|iphone|ipad|ipod/i.test(navigator.platform||navigator.userAgent),_2={esc:"escape",space:" "},j2={" ":"Space",escape:"Esc",arrowup:"\u2191",arrowdown:"\u2193",arrowleft:"\u2190",arrowright:"\u2192"},f1=new WeakMap,q=[];function n2(){let t=R1();if(!t)throw new Error("Staffa: claimKeyboard needs a current element");return q.push(t),()=>{let a=q.indexOf(t);a>=0&&q.splice(a,1)}}function c2(t){let[,a,e,h]=/^(mod\+)?(shift\+)?(.*)$/i.exec(t),p=h.toLowerCase();if(p=_2[p]??p,!p||p.length>1&&/[-+]/.test(p))throw new Error(`Staffa: can't parse key "${t}" \u2014 write "k", "f2", "mod+k" or "mod+shift+f2"`);if(e&&p.toUpperCase()===p)throw new Error(`Staffa: "${t}" \u2014 write the shifted character itself ("?", not "shift+/")`);return(a?"mod+":"")+(e?"shift+":"")+p}function Q2(t){if(t.altKey||(y1?t.ctrlKey:t.metaKey))return null;let a=t.key.toLowerCase(),e=t.shiftKey&&(a.length>1||t.key.toUpperCase()!==a);return((y1?t.metaKey:t.ctrlKey)?"mod+":"")+(e?"shift+":"")+a}function i2(t,a){if(!(a instanceof HTMLElement))return!1;let e=t.startsWith("mod+"),h=t.replace(/^(mod\+)?(shift\+)?/,"");if(h==="enter"&&a.closest("a[href]")!=null||!e&&(h==="enter"||h===" ")&&a.closest("button, summary, [role=button]")!=null)return!0;let p=a.tagName;return!e&&h!=="escape"&&(p==="INPUT"||p==="TEXTAREA"||p==="SELECT"||a.isContentEditable)}function s2(t,a){let e=q[q.length-1];return a.global===!0||!e||e.contains(t)}function J2(t){for(let a=q.length-1;a>=0;a--)if(q[a].contains(t))return q[a]}function l2(){return q[q.length-1]??document.body}function M2(t){let a=q[q.length-1];return a&&!(t&&a.contains(t))?a:t??document.body}var d2=!1;function Y2(t){if(t.defaultPrevented||t.repeat||t.isComposing)return;let a=Q2(t),e=t.target instanceof Element?t.target:null;if(!(a==null||i2(a,e)))for(let h=M2(e);h;h=h.parentElement){let p=f1.get(h)?.get(a);if(p&&s2(h,p)){p.press&&(t.preventDefault(),p.press(t));return}}}function x2(t){let a=new Map;for(let e=M2(t);e;e=e.parentElement){let h=f1.get(e);if(h)for(let[p,r]of h)!a.has(p)&&s2(e,r)&&!i2(p,t)&&a.set(p,r)}return[...a]}function P(t,a,e,h="normal"){let p=R1(),r=h==="global"?document.body:h==="local"?p:h==="normal"?(p&&J2(p))??document.body:h;if(!r)throw new Error("Staffa: a local key binding needs a current element");let o=c2(t),d=f1.get(r);d||f1.set(r,d=new Map);let n={description:a,press:e,global:h==="global",prev:d.get(o)};d.set(o,n),d2||(d2=!0,document.addEventListener("keydown",Y2)),R1.clean(()=>{let c=d.get(o);if(c===n)n.prev?d.set(o,n.prev):d.delete(o);else for(;c;c=c.prev)if(c.prev===n){c.prev=n.prev;break}})}function R(t,a=!1){let e=c2(t),h=e.startsWith("mod+"),p=h?e.slice(4):e,r=p.startsWith("shift+"),o=r?p.slice(6):p,d=o.length===1?o.toUpperCase():o[0].toUpperCase()+o.slice(1);if(a){let c=o===" "?"Space":r||o.length>1?d:o;return(h?y1?"Meta+":"Control+":"")+(r?"Shift+":"")+c}let n=j2[o]??d;return y1?(r?"\u21E7":"")+(h?"\u2318":"")+n:(h?"Ctrl+":"")+(r?"Shift+":"")+n}import J from"aberdeen";import D1 from"aberdeen";var g1=640,t0=0;function j(t="s"){return`${t}-${++t0}`}function M(t,...a){t!=null&&(typeof t=="function"?t(...a):D1("rich=",t))}var a0="a[href], button, input, select, textarea, [tabindex]",m2=t=>t instanceof HTMLElement&&!t.hasAttribute("disabled")&&t.getAttribute("aria-disabled")!=="true"&&t.tabIndex>=0&&t.getClientRects().length>0;function Z1(t){return[...t.querySelectorAll(a0)].filter(m2)}function p1(t,a){let e=(a?[...t.querySelectorAll(a)].find(m2):void 0)??Z1(t)[0];return e?.focus(),e!=null}function F(t){queueMicrotask(()=>D1(t))}var v2=["scroll","resize","transitionstart","animationstart"];function r1(t,a){let e="",h=0,p=0,r=()=>{let d=t instanceof Element?t.getBoundingClientRect():t,n=`${d.left} ${d.top} ${d.bottom} ${d.width}`;n!==e&&(e=n,a(d),p=0),h=++p>30?0:requestAnimationFrame(r)},o=()=>{p=0,h||r()};for(let d of v2)window.addEventListener(d,o,!0);return D1.clean(()=>{cancelAnimationFrame(h);for(let d of v2)window.removeEventListener(d,o,!0)}),r(),()=>{e="",o()}}import g from"aberdeen";import $ from"aberdeen";import Z from"aberdeen";Z.insertGlobalCss({".s-tt-tip":{"&":"position:fixed z-index:500 max-width:20rem w:max-content padding: 0.3em 0.65em; font-size:0.85em line-height:1.4 pointer-events:none"}});var o1=Z.proxy(void 0),K=null;function e0(t,a,e,h){let r=window.innerWidth,o=window.innerHeight,d=0,n=0;return h==="bottom"?(d=t.left+(t.width-a)/2,n=t.bottom+7,n+e>o-8&&(n=t.top-e-7)):h==="left"?(d=t.left-a-7,n=t.top+(t.height-e)/2,d<8&&(d=t.right+7)):h==="right"?(d=t.right+7,n=t.top+(t.height-e)/2,d+a>r-8&&(d=t.left-a-7)):(d=t.left+(t.width-a)/2,n=t.top-e-7,n<8&&(n=t.bottom+7)),{x:Math.max(8,Math.min(d,r-a-8)),y:Math.max(8,Math.min(n,o-e-8))}}function B1(){K&&clearTimeout(K),K=setTimeout(()=>{o1.value=void 0,K=null},100)}F(()=>{let t=o1.value;if(!t)return;let{opts:a,anchor:e}=t,h=a.placement??"top",p=Z("div.s-tt-tip.s-s.neutral.shadow role=tooltip",a.attrs,()=>{Z("mouseenter=",()=>{K&&(clearTimeout(K),K=null)}),Z("mouseleave=",B1),M(a.tip)});r1(e,r=>{if(r.bottom<0||r.top>window.innerHeight||r.right<0||r.left>window.innerWidth||e.closest("[inert]")){o1.value=void 0;return}let{x:o,y:d}=e0(r,p.offsetWidth,p.offsetHeight,h);p.style.left=o+"px",p.style.top=d+"px"})});function s1(t){let a=e=>{K&&(clearTimeout(K),K=null),o1.value={opts:t,anchor:e.currentTarget}};Z("mouseenter=",a),Z("mouseleave=",B1),Z("focusin=",e=>{e.target.matches?.(":focus-visible")&&a(e)}),Z("focusout=",B1),Z.clean(()=>{Z.unproxy(o1).value?.opts===t&&(o1.value=void 0)})}$.insertGlobalCss({".s-btn":{"&":"display:inline-flex align-items:center justify-content:center gap:$2 font-weight:450 line-height:1.1 white-space:nowrap cursor:pointer text-decoration:none padding: $m2 $m3; transition: background 0.15s, border-color 0.15s, color 0.15s, filter 0.15s, box-shadow 0.15s, transform 0.08s;","&:focus-visible":"outline: 3px solid $s-focus; outline-offset: 1px;","&:hover:not([aria-disabled=true])":"filter: brightness(1.06)","&.tonal:hover:not([aria-disabled=true]), &.outlined:hover:not([aria-disabled=true])":"background: color-mix(in srgb, $s-bg 24%, transparent);","&.neutral:hover:not([aria-disabled=true])":"filter:none background: color-mix(in srgb, $s-text 8%, $s-bg);","> svg":"width:1.25em height:1.25em","&:active:not(:disabled):not([aria-disabled=true])":"transform: translateY(1px)","&[aria-disabled=true]":"pointer-events:auto cursor:not-allowed","&.small, .small > &":"padding: $m1 $m2; font-size:0.85em border-radius:$s-radius-sm","&.large, .large > &":"font-size:1.4em border-radius:$s-radius-lg"},".s-icon-btn":{"&":"display:inline-flex align-items:center justify-content:center flex-shrink:0 width:2rem height:2rem p:0 border:0 background:transparent cursor:pointer fg:$s-muted r:$s-radius-sm line-height:1 font-size:1rem text-decoration:none transition: color 0.12s, background 0.12s;","> svg":"width:1.25em height:1.25em","&:hover:not(:disabled):not([aria-disabled=true])":"fg:$s-text background: color-mix(in srgb, $s-text 10%, transparent);","&:focus-visible":"outline: 3px solid $s-focus; outline-offset:1px","&[aria-disabled=true]":"pointer-events:auto cursor:not-allowed","&.small, .small > &":"width:1.6rem height:1.6rem font-size:0.8rem","&.large, .large > &":"width:2.4rem height:2.4rem font-size:1.2rem"},".s-btn.s-busy, .s-icon-btn.s-busy, .s-busy .s-btn[type=submit]":"pointer-events:none cursor:progress",".s-btn.s-busy::after, .s-icon-btn.s-busy::after, .s-busy .s-btn[type=submit]::after":"content:'' flex-shrink:0 width:1em height:1em r:50% border: 2px solid currentColor; border-top-color: transparent; animation: s-spin 0.7s linear infinite;",".s-icon-btn.s-busy > svg":"display:none","@keyframes s-spin":{to:"transform: rotate(360deg)"}});function l1(t){let a=t.href!=null?"a":"button",e=t.tooltip===!1?void 0:t.tooltip,h=t.ariaLabel??(typeof e=="string"?y2(e):void 0);$(`${a}.s-icon-btn`,t.attrs,()=>{u2(t,e!=null),$("aria-label=",h),f2(t.tooltip,t.key,h,t.disabled),M(t.icon)})}function u2(t,a=!1){t.href!=null?($("role=button"),t.disabled?$("aria-disabled=true"):$("href=",t.href)):t.disabled&&a?($("type=",t.type??"button"),$("aria-disabled=true tabindex=-1"),$("click=",e=>{e.preventDefault(),e.stopPropagation()})):($("type=",t.type??"button"),t.disabled&&$("disabled=true")),t.click&&!t.disabled&&h0(t.click)}function h0(t){let a=$.proxy({value:!1});$(()=>{a.value&&$(".s-busy aria-busy=true")}),$("click=",e=>{if(a.value)return;let h=t(e);if(!h||typeof h.then!="function")return;a.value=!0;let p=()=>{a.value=!1};Promise.resolve(h).then(p,r=>{throw p(),r})})}function y2(t){return t.replace(/\*\*(.+?)\*\*|\*(.+?)\*|`(.+?)`|\[(.+?)\]\((.+?)\)/g,(a,e,h,p,r)=>e??h??p??r)}function f2(t,a,e,h){if(t!==!1&&(t!=null||a)&&s1({tip:()=>{M(t),a&&$("#",t==null?R(a):` \xB7 ${R(a)}`)}}),a&&!h){let p=$();$("aria-keyshortcuts=",R(a,!0)),P(a,e,()=>p.click())}}function B(t={}){let a=typeof t=="string"||typeof t=="function"?{content:t}:t,e=a.href!=null?"a":"button",h=a.tooltip===!1?void 0:a.tooltip,p=a.ariaLabel??(a.content==null&&typeof h=="string"?y2(h):void 0);$(`${e}.s-btn.s-s.shadow`,a.attrs,()=>{u2(a,h!=null),p&&$("aria-label=",p),f2(a.tooltip,a.key,typeof a.content=="string"?a.content:p,a.disabled),M(a.icon),M(a.content)})}import g2 from"aberdeen";g2.insertGlobalCss({".s-bgroup":{"&":"display:inline-flex align-items:stretch","&.s-spaced":"gap:$2 flex-wrap:wrap","&.s-vertical":"flex-direction:column","&.s-attached":"gap:0","&.s-attached:not(.s-vertical) > .s-btn:not(:first-child)":"margin-left:-1px","&.s-attached:not(.s-vertical) > .s-btn:not(:first-child):not(:last-child)":"r:0","&.s-attached:not(.s-vertical) > .s-btn:first-child:not(:last-child)":"border-top-right-radius:0 border-bottom-right-radius:0","&.s-attached:not(.s-vertical) > .s-btn:last-child:not(:first-child)":"border-top-left-radius:0 border-bottom-left-radius:0","&.s-attached.s-vertical > .s-btn:not(:first-child)":"margin-top:-1px","&.s-attached.s-vertical > .s-btn:not(:first-child):not(:last-child)":"r:0","&.s-attached.s-vertical > .s-btn:first-child:not(:last-child)":"border-bottom-left-radius:0 border-bottom-right-radius:0","&.s-attached.s-vertical > .s-btn:last-child:not(:first-child)":"border-top-left-radius:0 border-top-right-radius:0","&.s-attached > .s-btn:hover, &.s-attached > .s-btn:focus-visible":"z-index:1"}});function t1(t={}){let e=`.s-${t.layout??"attached"}${t.vertical?".s-vertical":""}`;g2(`div.s-bgroup${e} role=group`,t.attrs,()=>{if(t.buttons)for(let h of t.buttons)B(h);M(t.content)})}import a1 from"aberdeen";import L from"aberdeen";L.insertGlobalCss({".s-field":{"&":"display:flex flex-direction:column gap:$1","> label":"font-weight:600 font-size:0.9em fg:$s-text user-select:none"},".s-req":"fg:$s-danger margin-left:2px",".s-help":"font-size:0.82em fg:$s-muted",".s-error":"font-size:0.82em fg:$s-danger",".s-input":{"&":"w:100% background: color-mix(in oklab, $s-bg, $s-text 4%); color:$s-text border: 1px solid $s-faint; r:$s-radius padding: 0.55em 0.7em; transition: border-color 0.15s, box-shadow 0.15s;","&:hover:not(:disabled)":"border-color: color-mix(in oklab, $s-text, $s-bg 55%);","&:focus-visible":"border-color:$s-accent box-shadow: 0 0 0 3px $s-focus; outline:none","&[aria-invalid=true]":"border-color:$s-danger"},".s-inset":{"&":"position:relative display:grid --s-inset-start:0px --s-inset-end:0px","> .s-input":"padding-inline-start: calc(0.7em + var(--s-inset-start)); padding-inline-end: calc(0.7em + var(--s-inset-end));","> .s-inset_start, > .s-inset_end":"position:absolute top:0 bottom:0 display:flex align-items:center gap:$1 fg:$s-muted","> .s-inset_start":"left:0.35em","> .s-inset_end":"right:0.35em","&.s-inset-bottom > .s-inset_start, &.s-inset-bottom > .s-inset_end":"top:auto padding-bottom:0.35em","> .s-inset_start > svg, > .s-inset_end > svg":"width:1.15em height:1.15em","&:has(> .s-inset_end) > input[type=number]":"appearance:textfield","&:has(> .s-inset_end) > input[type=number]::-webkit-inner-spin-button":"appearance:none margin:0"},".s-inset_start, .s-inset_end":"pointer-events:none",".s-inset_start :where(button, a, input, select, textarea, label, [tabindex])":"pointer-events:auto",".s-inset_end :where(button, a, input, select, textarea, label, [tabindex])":"pointer-events:auto"});function Q(t,a){let e=t.id??j("field"),h=()=>!!t.error;L("div.s-field",t.attrs,()=>{L(()=>{t.label!=null&&L("label for=",e,()=>{M(t.label),t.required&&L("span.s-req aria-hidden=true #*")})}),a(e,h),L(()=>{t.help!=null&&!t.error&&L("div.s-help",()=>M(t.help))}),L(()=>{t.error&&L("div.s-error role=alert #",t.error)})})}function d1(t,a,e,h){L("id=",a),t.name&&L("name=",t.name),L(()=>{t.disabled&&L("disabled=true")}),L(()=>{t.required&&L("aria-required=true")}),L(()=>L("aria-invalid=",e()?"true":"false")),h&&L("bind=",h)}function b1(t,a,e){L("div.s-inset",()=>{a&&L(".s-inset-bottom"),e(),b2(()=>t.prefix,"s-inset_start","--s-inset-start"),b2(()=>t.suffix,"s-inset_end","--s-inset-end")})}function b2(t,a,e){L(()=>{let h=t();if(h==null)return;let p=L(`div.${a}.small`,()=>M(h)),r=p.parentElement,o=new ResizeObserver(()=>r?.style.setProperty(e,`${p.offsetWidth}px`));o.observe(p),L.clean(()=>{o.disconnect(),r?.style.setProperty(e,"0px")})})}function I1(t={}){Q(t,(a,e)=>{b1(t,!1,()=>{a1("input.s-input",t.inputAttrs,()=>{a1("type=",t.type??"text"),t.placeholder!=null&&a1("placeholder=",t.placeholder),t.autocomplete!=null&&a1("autocomplete=",t.autocomplete),t.value!=null&&!t.bind&&a1("value=",t.value),t.input&&a1("input=",t.input),t.change&&a1("change=",t.change),d1(t,a,e,t.bind)})})})}var w2=200;g.insertGlobalCss({".s-backdrop":{"&":"position:fixed inset:0 z-index:200 display:block background: rgba(0,0,0,0.55); transition: opacity 0.4s ease-in-out;","&.hidden":"opacity:0 pointer-events:none"},".s-dialog":{"&":"position:fixed z-index:200 top:50% left:50% display:flex flex-direction:column transform:translate(-50%,-50%) min-width:min(20rem,90vw) max-width:min(90vw,44rem) max-height:min(88vh,800px) r: $s-radius-lg; overflow:hidden transition: opacity 0.2s ease-out, transform 0.2s ease-out;","> header":"display:flex align-items:center gap:$2 padding: $2 $3; border:0 border-bottom: 1px solid $s-faint; r:0 font-weight:600 flex-shrink:0","> footer":"display:flex align-items:center justify-content:flex-end gap:$2 padding: $2 $3; border:0 border-top: 1px solid $s-faint; r:0 flex-shrink:0","> div":"p:$3 gap:$3 display:flex flex-direction:column overflow-y:auto flex:1 min-height:0","&.hidden":"opacity:0 pointer-events:none transform: translate(-50%, calc(-50% + 20px)); pointer-events:none"}});var n1=g.proxy({}),p0=0,F1=g.derive(()=>{let t=Object.keys(n1);if(t.length)return t[t.length-1]});function K1(){return F1.value!=null}F(()=>{g.onEach(n1,({resolve:t,opts:a},e)=>{let h=()=>{delete n1[e]};g.clean(()=>{a.onClose?.(),t()});let p=document.activeElement;g.clean(()=>{p instanceof HTMLElement&&document.contains(p)&&p.focus()});let r=g.derive(()=>F1.value!=e),o=g("div.s-backdrop create=hidden destroy=hidden .hidden=",r,"click=",()=>{a.allowCancel!==!1&&h()}),d=`s-dialog-title-${e}`,n=g("div.s-dialog.neutral.s-s.extra-shadow role=dialog create=hidden destroy=hidden",a.attrs,()=>{if(!a.keyboardTransparent){let A=g();g.clean(n2()),g("aria-modal=true"),g("keydown=",w=>r0(A,w))}let i=l2();g(()=>{let A=a.allowCancel!==!1;P("esc",A?"Close this dialog":void 0,A?h:()=>{},i)}),g(()=>{a.header!=null&&(g("aria-labelledby=",d),g("header.s-s.neutral id=",d,a.headerAttrs,()=>M(a.header)))}),g("div",a.contentAttrs,()=>{M(a.content,h)}),g(()=>{a.footer!=null&&g("footer.s-s.neutral",a.footerAttrs,()=>M(a.footer))})}),c=0;g(()=>{let i=Object.keys(n1).indexOf(e);i>=0&&(c=i),o.style.zIndex=`${w2+2*c}`,n.style.zIndex=`${w2+2*c+1}`}),requestAnimationFrame(()=>{g.peek(()=>F1.value)===e&&document.body.contains(n)&&p1(n)})},(t,a)=>+a)});function r0(t,a){if(a.key!=="Tab"||a.altKey||a.ctrlKey||a.metaKey)return;let e=Z1(t),h=a.shiftKey?e[0]:e[e.length-1];!h||document.activeElement!==h||(a.preventDefault(),(a.shiftKey?e[e.length-1]:e[0]).focus())}function c1(t){let a=++p0;return t.cancelWithScope!==!1&&g.clean(()=>{delete n1[a]}),new Promise(e=>{n1[a]={resolve:e,opts:t}})}function o0(t,a={}){return c1({header:"Alert",allowCancel:!0,content:e=>{g("p",()=>{g("#",t)}),t1({layout:"spaced",attrs:"align-self:flex-end",content:()=>{B({content:"OK",click:e})}})},...a})}function d0(t,a={}){return new Promise(e=>{let h=!1;c1({header:"Confirm",allowCancel:!0,content:p=>{g("p",()=>{g("#",t)}),t1({layout:"spaced",attrs:"align-self:flex-end",content:()=>{B({content:"Cancel",attrs:".neutral",click:p}),B({content:"OK",click:()=>{h=!0,p()}})}})},...a,onClose:()=>{e(h),a.onClose?.()}})})}function n0(t,a="",e={}){return new Promise(h=>{let p=null;c1({header:"Input",allowCancel:!0,content:r=>{g("p",()=>{g("#",t)});let o=g.proxy({value:a});g("form display:contents",()=>{g("submit=",d=>{d.preventDefault(),p=o.value,r()}),I1({bind:g.ref(o,"value")}),t1({layout:"spaced",attrs:"align-self:flex-end",content:()=>{B({content:"Cancel",attrs:".neutral",type:"button",click:r}),B({content:"OK",type:"submit"})}})})},...e,onClose:()=>{h(p),e.onClose?.()}})})}J.insertGlobalCss({".s-keyhelp":{"&":"display:flex flex-direction:column gap:$1 min-width:14rem","> div":"display:flex align-items:baseline justify-content:space-between gap:$4",kbd:"font-family:inherit font-size:0.85em fg:$s-muted white-space:nowrap border: 1px solid $s-faint; r:$s-radius-sm padding: 0 0.4em;"}});var w1=null;function U1(){if(w1){w1();return}let t=x2(document.activeElement);c1({header:"Keyboard shortcuts",cancelWithScope:!1,keyboardTransparent:!0,onClose:()=>{w1=null},content:a=>{w1=a;let e=h=>{h.repeat||["Control","Shift","Alt","Meta","Escape","?"].includes(h.key)||a()};document.addEventListener("keydown",e,!0),J.clean(()=>document.removeEventListener("keydown",e,!0)),J("div.s-keyhelp",()=>{for(let[h,p]of t)p.description!==void 0&&J("div",()=>{J("span",()=>M(p.description)),J("kbd text=",R(h))})})}})}var H2=J.proxy(!0);function c0(t){H2.value=t}J(()=>{H2.value&&(P("?",void 0,U1,"global"),P("mod+?","This overview",U1,"global"))});import x from"aberdeen";x.insertGlobalCss({".s-ac":{"> .s-control":"display:flex flex-wrap:wrap align-items:center gap:$1 background: color-mix(in oklab, $s-bg, $s-text 4%); color:$s-text border: 1px solid $s-faint; r:$s-radius padding: 0.3em 0.4em; cursor:text; transition: border-color 0.15s, box-shadow 0.15s;","> .s-control:hover":"border-color: color-mix(in oklab, $s-text, $s-bg 55%);","> .s-control:focus-within":"border-color:$s-accent box-shadow: 0 0 0 3px $s-focus;","&[aria-invalid=true] > .s-control":"border-color:$s-danger",".s-chip":"display:inline-flex align-items:center gap:$1 font-size:0.85em background: color-mix(in oklab, $s-bg, $s-text 10%); border: 1px solid $s-faint; r:$s-radius padding: 0.1em 0.2em 0.1em 0.5em;",".s-chip > button":"cursor:pointer border:0 background:transparent fg:$s-muted font-size:1.1em line-height:1 padding: 0 0.2em; r:4px",".s-chip > button:hover":"fg:$s-text background:$s-faint",input:"flex:1 min-width:6ch border:0 background:transparent color:inherit outline:none padding:0.25em"},".s-ac-menu.s-s":{"&":"position:fixed max-height:15rem overflow-y:auto list-style:none p:$1 margin:0",li:"margin:0",".s-option":"padding: 0.45em 0.6em; r:6px cursor:pointer transition: background 0.1s;",".s-option[aria-selected=true]":"background: color-mix(in srgb, $s-text 10%, transparent);",".s-add":"fg:$s-accent font-style:italic",".s-empty":"padding: 0.45em 0.6em; fg:$s-muted"}});var H1=x.proxy({cur:null});function i0(t,a){t.style.maxHeight="";let p=t.offsetHeight,r=window.innerHeight-a.bottom-4-8,o=a.top-4-8,d=p>r&&o>r;t.style.left=`${a.left}px`,t.style.width=`${a.width}px`,t.style.maxHeight=`${Math.min(p,Math.max(d?o:r,60))}px`,t.style.top=d?"auto":`${a.bottom+4}px`,t.style.bottom=d?`${window.innerHeight-a.top+4}px`:"auto"}F(()=>{let t=H1.cur;if(!t)return;let a,e=x("ul.s-ac-menu.s-s.neutral.shadow role=listbox",`id=${t.id} z-index:${t.zIndex}`,()=>{x("mousedown=",h=>h.preventDefault()),t.draw(),a?.()});a=r1(t.anchor,h=>i0(e,h))});function s0(t){let a=[];for(let e of t.matchAll(/\p{N}+|\p{Lu}+(?=\p{Lu}\p{Ll})|\p{Lu}?\p{Ll}+|\p{Lu}+/gu))a.push(e.index);return a}function A2(t,a){let e=a.toLowerCase().split(/\s+/).filter(Boolean).sort((r,o)=>o.length-r.length);if(!e.length)return!0;let h=s0(t),p=[];return e.every(r=>{let o=h.findIndex((d,n)=>!p[n]&&t.slice(d,d+r.length).toLowerCase()===r);return o<0?!1:(p[o]=!0,!0)})}function l0(t){return typeof t=="string"?{value:t,label:t}:{value:t.value,label:t.label??t.value}}function M0(t){let a=j("ac-menu"),e=x.proxy({query:"",open:!1,active:0}),h=()=>(typeof t.options=="function"?t.options():t.options).map(l0),p=()=>{let v=t.bind?.value;return v==null||v===""?[]:Array.isArray(v)?v:[v]},r=v=>h().find(H=>H.value===v)?.label??v,o=v=>v?h().find(H=>H.label.toLowerCase()===v.toLowerCase())?.value??v:"";if(!t.multi){let v=t.bind?x.peek(t.bind,"value"):void 0;typeof v=="string"&&v&&(e.query=x.peek(()=>r(v)))}let d=()=>{let v=new Set(p()),H=h();t.multi&&(H=H.filter(f=>!v.has(f.value)));let V=e.query.trim();return V&&(H=H.filter(f=>(t.match??A2)(f.label,V))),H},n=(v,H)=>{if(t.multi){let V=Array.isArray(t.bind?.value)?[...t.bind.value]:[];V.includes(v)||V.push(v),t.bind&&(t.bind.value=V),e.query=""}else t.bind&&(t.bind.value=v),e.query=r(v),e.open=!1;e.active=0,H?.focus()},c=v=>{if(!t.bind)return;let H=t.bind.value??[];t.bind.value=H.filter(V=>V!==v)},i,A=()=>{let v=d(),H=e.query.trim(),V=t.allowCustom!==!1&&H!==""&&!v.some(f=>f.label.toLowerCase()===H.toLowerCase());v.forEach((f,C)=>{x("li.s-option role=option",`id=${a}-opt-${C}`,()=>{x(()=>x("aria-selected=",e.active===C?"true":"false")),x("#",f.label),x("click=",()=>n(f.value,i)),x("mousemove=",()=>{e.active=C})})}),V&&x("li.s-option.s-add role=option",()=>{x("#",`Add "${H}"`),x("click=",()=>n(H,i))}),v.length===0&&!V&&x("li.s-empty #No matches")};Q(t,(v,H)=>{x("div.s-ac",t.inputAttrs,()=>{x(()=>x("aria-invalid=",H()?"true":"false"));let V=x("div.s-control",()=>{x("click=",()=>i?.focus()),x(()=>{if(t.multi)for(let f of p())x("span.s-chip",()=>{x("span #",x.peek(()=>r(f))),x("button type=button aria-label=",`Remove ${f}`,()=>{x("#\xD7"),x("click=",C=>{C.stopPropagation(),c(f),i?.focus()})})})}),i=x("input type=text role=combobox autocomplete=off",()=>{x("id=",v,`aria-controls=${a} aria-autocomplete=list`),t.placeholder!=null&&x("placeholder=",t.placeholder),t.disabled&&x("disabled=true"),t.required&&x("aria-required=true"),x("bind=",x.ref(e,"query")),x(()=>x("aria-expanded=",e.open?"true":"false")),x(()=>{let C=d()[e.active];x("aria-activedescendant=",e.open&&C?`${a}-opt-${e.active}`:"")}),x("input=",()=>{e.open=!0,e.active=0}),x("focus=",()=>{e.open=!0}),x("blur=",()=>{setTimeout(()=>D(),150)}),x("keydown=",f=>w(f,i))})});x(()=>{if(!e.open)return;let f=V.closest(".s-dialog")?350:150;H1.cur={id:a,anchor:V,zIndex:f,draw:A},x.clean(()=>{H1.cur?.id===a&&(H1.cur=null)})}),x(()=>{if(t.name)if(t.multi)for(let f of p())x("input type=hidden",()=>{x("name=",t.name),x("value=",f)});else x("input type=hidden",()=>{x("name=",t.name),x("value=",p()[0]??"")})})})});function w(v,H){let V=d(),f=V.length-1;if(v.key==="ArrowDown")v.preventDefault(),e.open=!0,e.active=Math.min(f,e.active+1);else if(v.key==="ArrowUp")v.preventDefault(),e.active=Math.max(0,e.active-1);else if(v.key==="Enter"){v.preventDefault();let C=e.query.trim(),s=e.open?V[e.active]:void 0;s?n(s.value,H):t.allowCustom!==!1&&(C||!t.multi)?n(o(C),H):e.open&&(e.open=!1)}else if(v.key==="Escape")e.open&&(v.preventDefault(),e.open=!1);else if(v.key==="Backspace"&&t.multi&&e.query===""){let C=p();C.length&&c(C[C.length-1])}}function D(){e.open=!1,t.multi?e.query="":t.allowCustom!==!1?n(o(e.query.trim())):e.query=r(p()[0]??"")}}import e1 from"aberdeen";import x0 from"aberdeen";var M1={size:24,color:"currentColor",strokeWidth:2,cap:"round",join:"round"};function v0(t,a){let e=a.size??M1.size,h=x0('svg.s-icon aria-hidden=true viewBox="0 0 24 24" fill=none',"width=",e,"height=",e,"stroke=",a.color??M1.color,"stroke-width=",a.strokeWidth??M1.strokeWidth,"stroke-linecap=",a.cap??M1.cap,"stroke-linejoin=",a.join??M1.join,a.attrs);h.innerHTML=t}function O(t){return(a={})=>v0(t,a)}var V2=O('<path d="m9 18 6-6-6-6" />');var k2=O('<circle cx="12" cy="12" r="10" />');var L2=O('<path d="M15 3h6v6" /><path d="M10 14 21 3" /><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />');var C2=O('<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" />');var A1=O('<path d="M4 5h16" /><path d="M4 12h16" /><path d="M4 19h16" />');var z2=O('<path d="M12 17v5" /><path d="M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89" /><path d="m2 2 20 20" /><path d="M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11" />'),W1=O('<path d="M12 17v5" /><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z" />');var $2=O('<path d="M22 2 2 22" />');var i1=O('<path d="M18 6 6 18" /><path d="m6 6 12 12" />');e1.insertGlobalCss({".s-box":{"&":"display:flex flex-direction:column overflow:hidden r: $s-radius-lg; position:relative","&:not(:first-child)":"margin-top: $3","> header":"display:flex align-items:center gap:$2 padding: $2 $3; border:0 border-bottom: 1px solid $s-faint; r:0 font-weight:600","> footer":"display:flex align-items:center justify-content:flex-end gap:$2 padding: $2 $3; border:0 border-top: 1px solid $s-faint; r:0","> div":"p:$3 gap:$3","> header > .s-box-close":"margin-left:auto","> .s-box-close":"position:absolute top:$2 right:$2 z-index:1"}});function m0(t={}){let a=typeof t=="string"||typeof t=="function"?{content:t}:t;e1("section.s-box.s-s.neutral.shadow",a.attrs,()=>{e1(()=>{a.header!=null?e1("header.s-s.neutral",a.headerAttrs,()=>{M(a.header),typeof a.close=="function"&&S2(a.close)}):typeof a.close=="function"&&S2(a.close)}),e1("div",a.contentAttrs,()=>{M(a.content)}),e1(()=>{a.footer!=null&&e1("footer.s-s.neutral",a.footerAttrs,()=>M(a.footer))})})}function S2(t){l1({icon:i1,ariaLabel:"Close",click:t,attrs:".s-box-close"})}import N1 from"aberdeen";function u0(t){N1(()=>{let a=t.bind.value;t1({attrs:t.attrs,buttons:Object.entries(t.options).map(([e,h])=>({content:h,ariaLabel:typeof h=="function"?e:void 0,attrs:a===e?".primary":".neutral",click:()=>{t.bind.value=t.allowDeselect&&a===e?void 0:e}}))})}),t.name&&N1(()=>N1("input type=hidden name=",t.name,"value=",t.bind.value??""))}import E from"aberdeen";E.insertGlobalCss({".s-check":{"&":"display:flex flex-direction:column gap:$1","> label":"display:flex align-items:center gap:$2 cursor:pointer user-select:none","> label:has(input:disabled)":"cursor:not-allowed opacity:0.45 filter:saturate(0.6)",input:"cursor:inherit m:0"}});function y0(t={}){let a=t.id??j("check");E("div.s-check",t.attrs,()=>{E("label for=",a,()=>{E("input type=checkbox",t.inputAttrs,()=>{E("id=",a),t.name&&E("name=",t.name),t.checked&&!t.bind&&E("checked=true"),t.change&&E("change=",t.change),E(()=>{t.disabled&&E("disabled=true")}),E(()=>{t.required&&E("aria-required=true")}),t.bind&&E("bind=",t.bind)}),E(()=>{t.label!=null&&M(t.label),t.required&&E("span.s-req aria-hidden=true #*")})}),E(()=>{t.help!=null&&!t.error&&E("div.s-help",()=>M(t.help))}),E(()=>{t.error&&E("div.s-error role=alert #",t.error)})})}import U from"aberdeen";U.insertGlobalCss({".s-form":{"&":"display:flex flex-direction:column gap:$3","&.grid":"display:grid grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap:$3","&.grid > .s-wide, &.grid > footer":"grid-column: 1 / -1;","> footer":"display:flex align-items:center justify-content:flex-end gap:$2 flex-wrap:wrap margin-top:$1"}});function f0(t={}){let a=typeof t=="string"||typeof t=="function"?{content:t}:t,e=U.proxy({value:!1});U("form.s-form",a.attrs,()=>{U(()=>{U(".grid=",a.layout==="grid")}),U(()=>{e.value&&U(".s-busy aria-busy=true")}),U("submit=",h=>{if(h.preventDefault(),a.submit&&!e.value){let p=new FormData(h.target),r={};for(let d of new Set(p.keys())){let n=p.getAll(d);r[d]=n.length===1?n[0]:n}let o=a.submit(r,h);if(o&&typeof o.then=="function"){e.value=!0;let d=()=>{e.value=!1};Promise.resolve(o).then(d,n=>{throw d(),n})}}}),M(a.content),U(()=>{a.actions&&U("footer",a.actionsAttrs,()=>M(a.actions))})})}import m from"aberdeen";import{current as h2}from"aberdeen/route";import y from"aberdeen";import{matchCurrent as H0,current as k1,go as P2}from"aberdeen/route";import S from"aberdeen";import{grow as g0,shrink as b0}from"aberdeen/transitions";S.insertGlobalCss({".s-toasts":"position:fixed bottom:$3 right:$3 z-index:400 display:flex flex-direction:column gap:$2 pointer-events:none max-width:min(90vw,24rem) w:24rem",".s-toast":{"&":"display:flex align-items:flex-start gap:$2 padding: $3; pointer-events:auto position:relative overflow:hidden",".s-toast-body":"display:flex flex-direction:column gap:$1 flex:1 min-width:0",".s-toast-title":"font-weight:700 line-height:1.3",".s-toast-close":"cursor:pointer border:0 background:transparent fg:$s-muted font-size:1.1em line-height:1 padding: 0 0.15em; r:4px flex-shrink:0 align-self:flex-start",".s-toast-close:hover":"fg:$s-text",".s-toast-close:focus-visible":"outline:none box-shadow: 0 0 0 3px $s-focus; fg:$s-text",".s-toast-progress":"position:absolute bottom:0 left:0 right:0 height:2px background:$s-accent width:100%"}});var w0=0,x1=S.proxy({});F(()=>{S.peek(()=>S.isEmpty(x1))&&S.isEmpty(x1)||S("div.s-toasts",()=>{S.onEach(x1,t=>{let{opts:a,id:e}=t,h=a.type==="danger"||a.type==="warning"?"alert":"status",p=a.type==null||a.type==="neutral"?"neutral":a.type,r=a.duration??6e3,o,d=null,n=()=>{clearTimeout(o),d&&(d.style.transition="none",d.style.width="100%",d.offsetWidth,d.style.transition=`width ${r}ms linear`,d.style.width="0%"),o=setTimeout(()=>G1(e),r)},c=()=>{clearTimeout(o),o=void 0,d&&(d.style.transition="none",d.style.width="100%")};S.clean(()=>clearTimeout(o)),S(`div.s-toast.s-s.${p}.extra-shadow aria-live=polite role=${h}`,"create=",g0,"destroy=",b0,a.attrs,()=>{r>0&&(S("mouseenter=",c),S("mouseleave=",n)),S("div.s-toast-body",()=>{S(()=>{a.title!=null&&S("div.s-toast-title",()=>M(a.title))}),S("div.s-toast-msg",()=>M(a.message))}),S(()=>{a.dismissible!==!1&&S("button.s-toast-close type=button aria-label=Dismiss",()=>{S("#\xD7"),S("click=",()=>G1(e))})}),r>0&&(d=S("div.s-toast-progress"))}),r>0&&requestAnimationFrame(n)})})});function G1(t){delete x1[t]}function V1(t){let a=++w0;return x1[a]={id:a,opts:t},()=>G1(a)}y.insertGlobalCss({".s-menu-list":"position:fixed z-index:350 min-width:10rem display:flex flex-direction:column p:$1 r:$s-radius-lg max-width: calc(100vw - 16px); overflow-y:auto max-height:min(80vh,28rem) transition: opacity 0.15s, transform 0.15s, visibility 0s;",".s-menu-list.hidden":"opacity:0 pointer-events:none transform:translateY(-6px) visibility:hidden transition: opacity 0.15s, transform 0.15s, visibility 0.15s;",".s-menu-item":"display:flex align-items:center gap:$2 w:100% scroll-margin:$2 padding: $m2 0; line-height:1.1 r:$s-radius cursor:pointer text-align:left font-weight:450 font-size:0.9em border:0 background:transparent fg:$s-text text-decoration:none transition: color 0.12s, transform 0.12s, text-shadow 0.12s;",".s-menu-item:focus-visible:not([aria-current=page]), .s-menu-item:hover:not([aria-disabled=true]):not([aria-current=page])":"filter:none color: color-mix(in lab, $s-primary 33%, $s-text);",".s-menu-item:focus-visible":"outline-offset:-2px background: color-mix(in srgb, $s-accent 14%, transparent);",".s-menu-item[aria-current=page]":"color:$s-accent filter:none",".s-menu-list .s-menu-item":"padding-inline:$2",".s-menu-item[aria-disabled=true]":"opacity:0.45 cursor:not-allowed pointer-events:none",".s-menu-icon":"flex-shrink:0",".s-menu-list .s-menu-icon":"display:flex",".s-menu-list .s-menu-icon > svg":"width:1.25em height:1.25em","hr.s-menu-sep":"border:0 height:1px margin: $1 0.6rem; background: linear-gradient(to right, transparent, $s-faint 18%, $s-faint 82%, transparent);",".s-menu-key":"margin-left:auto padding-left:$2 font-family:inherit font-size:0.8em opacity:0.55 white-space:nowrap flex-shrink:0","@media (hover: none) and (pointer: coarse)":{".s-menu-key":"display:none"},".s-menu-tt-key":"font-family:inherit font-size:0.85em opacity:0.7 white-space:nowrap",".s-tt-tip hr.s-menu-sep":"margin: 0.35em 0;",".s-menu-chevron":"margin-left:auto flex-shrink:0 display:flex transition: transform 0.15s ease;",".s-menu-key + .s-menu-chevron":"margin-left:0",".s-menu-chevron > svg":"width:1em height:1em",".s-menu-details":{"> summary":"list-style:none","> summary::-webkit-details-marker":"display:none","&::details-content":"interpolate-size:allow-keywords block-size:0 overflow-y:clip transition: block-size 0.15s ease, content-visibility 0.15s allow-discrete;","&[open]::details-content":"block-size:auto","&[open] > summary .s-menu-chevron":"transform:rotate(90deg)"},".s-menu-sub":"display:flex flex-direction:column gap:$1 padding-left:$3",".s-menu-inline":"display:flex flex-direction:column gap:$1"});function v1(t,a,e){y("keydown=",h=>{if(h.key==="Enter"&&!h.ctrlKey&&!h.metaKey&&!h.shiftKey&&!h.altKey&&h.target.tagName==="A"){queueMicrotask(()=>a?.());return}if(h.key!=="ArrowDown"&&h.key!=="ArrowUp"&&h.key!=="Home"&&h.key!=="End")return;h.preventDefault();let r=[...h.currentTarget.querySelectorAll(".s-menu-item")].filter(c=>c.getAttribute("aria-disabled")!=="true"&&!k0(c));if(!r.length)return;let o=r.indexOf(document.activeElement),d=h.key==="ArrowUp"?-1:1,n=h.key==="Home"?0:h.key==="End"?r.length-1:o<0?d>0?0:r.length-1:(o+d+r.length)%r.length;r[n].focus()}),O2(t,{onLeafSelect:a,keyHints:e,$hasCurrent:y.derive(()=>X1(t))})}function O2(t,a){for(let e of t){if(typeof e=="string"||typeof e=="function"){M(e);continue}if("separator"in e){y("hr.s-menu-sep");continue}e.items?V0(e,a):A0(e,a)}}function A0(t,a){let e=!1,h=y(t.href?"a.s-menu-item data-panel=open":"button.s-menu-item type=button",t.attrs,()=>{t.href&&(y("href=",t.href),t.target&&y("target=",t.target),y(()=>{let p=!e;e=!0,_1(t)&&(y("aria-current=page"),requestAnimationFrame(()=>h.scrollIntoView({block:"nearest",behavior:p?"instant":"smooth"})))})),t.disabled&&y("aria-disabled=true"),t.key&&y("aria-keyshortcuts=",R(t.key,!0)),y("click=",p=>{if(t.disabled){p.preventDefault();return}a.onLeafSelect?.(),t.click?.(p)}),t.icon&&y("span.s-menu-icon",()=>M(t.icon)),M(t.label),R2(t,a)})}var T2=new Map;function E2(t,a){return T2.set(t,a),a}function V0(t,a){let e=t.href??q2(t.items),h=e!=null?y.derive(()=>j1(t)?E2(e,!0):a.$hasCurrent.value?E2(e,!1):T2.get(e)??!1):null;y("details.s-menu-details",()=>{h&&y(()=>{h.value&&y("open=true")}),y("summary.s-menu-item.s-menu-branch",t.attrs,()=>{t.disabled&&y("aria-disabled=true"),t.key&&y("aria-keyshortcuts=",R(t.key,!0)),y(()=>{_1(t)&&y("aria-current=page")}),y("click=",p=>{if(t.disabled){p.preventDefault();return}e!=null&&(p.preventDefault(),C0(e),P2(e)),t.click?.(p)}),t.icon&&y("span.s-menu-icon",()=>M(t.icon)),M(t.label),R2(t,a),y("span.s-menu-chevron aria-hidden=true",()=>V2())}),y("div.s-menu-sub",()=>O2(t.items,a))})}function k0(t){for(let a=t.closest("details");a;a=a.parentElement&&a.parentElement.closest("details"))if(!a.open&&t.closest("summary")?.parentElement!==a)return!0;return!1}function X1(t){return t.some(a=>typeof a!="string"&&typeof a!="function"&&!("separator"in a)&&j1(a))}function _1(t){if(t.href!=null&&H0(t.href))return!0;let a=t.match;if(a==null)return!1;let e=k1.path;if(typeof a=="function")return a(e);let h=a.replace(/\/+$/,"")||"/";return e===h||e.startsWith(h==="/"?"/":h+"/")}function j1(t){if(_1(t))return!0;for(let a of t.items??[])if(!(typeof a=="string"||typeof a=="function"||"separator"in a)&&j1(a))return!0;return!1}function q2(t){for(let a of t){if(typeof a=="string"||typeof a=="function"||"separator"in a)continue;let e=a.href??(a.items?q2(a.items):void 0);if(e!=null)return e}}function R2(t,a){let e=a.keyHints?void 0:t.key;t.key&&!e&&y("kbd.s-menu-key aria-hidden=true text=",R(t.key)),!(t.tooltip==null&&!e)&&s1({placement:"right",tip:()=>{M(t.tooltip),e&&(t.tooltip!=null&&y("hr.s-menu-sep"),y("kbd.s-menu-tt-key aria-hidden=true text=",R(e)))}})}function m1(t,a){y(()=>{for(let e of D2(t(),[]))P(e.key,e.label,h=>{Z2(),a?.(),e.click?.(h),e.href!=null&&L0(e.href,e.target)})})}function D2(t,a){for(let e of t)typeof e=="string"||typeof e=="function"||"separator"in e||(e.key&&!e.disabled&&a.push(e),e.items&&D2(e.items,a));return a}function L0(t,a){let e=new URL(t,location.href);a?window.open(e.href,a,a==="_blank"?"noopener":""):e.origin!==location.origin?location.href=e.href:P2(t)}var L1=null;function C0(t){try{L1=new URL(t,location.href).pathname.replace(/\/+$/,"")||"/"}catch{L1=null}}function Q1(t){return L1!==t?!1:(L1=null,!0)}var Y=y.proxy({opts:null});function _(){let t=Y.opts?.anchor;Y.opts=null,t?.focus()}function C1(t){let a=Y.opts;return a!=null&&(t==null||a.anchor===t)}function Z2(t){C1(t)&&_()}function z0(t,a){let e=t.offsetWidth,h=t.offsetHeight,p=window.innerWidth,r=window.innerHeight,o=4,d=a.left;d+e>p-8&&(d=Math.max(8,a.right-e));let n=a.bottom+o;n+h>r-8&&a.top-h-o>=8&&(n=a.top-h-o),t.style.left=Math.max(8,d)+"px",t.style.top=Math.max(8,n)+"px"}function $0(t){return[{label:"Open in new tab",icon:L2,click:()=>{window.open(t,"_blank","noopener")}},{label:"Copy link",icon:C2,click:()=>{S0(t)}}]}async function S0(t){let a=new URL(t,location.href).href;try{await navigator.clipboard.writeText(a),V1({message:"Link copied."})}catch{V1({message:"Couldn't copy the link.",type:"danger"})}}F(()=>{let t=Y.opts;if(!t)return;let a=y("div.s-menu-list.s-s.neutral.shadow create=hidden destroy=hidden",t.dropdownAttrs,()=>{v1(t.link!=null?[...$0(t.link),{separator:!0},...t.items]:t.items,_,!0)}),e=r=>{let o=r.target;!a.contains(o)&&(t.closeOnAnchorClick||!t.anchor.contains(o))&&_()},h=r=>{(r.key==="Escape"||r.key==="Tab")&&(r.preventDefault(),_())},p=y.peek(k1,"path");y(()=>{k1.path!==p&&!Q1(k1.path)&&_()}),document.addEventListener("click",e,!0),document.addEventListener("keydown",h,!0),y.clean(()=>{document.removeEventListener("click",e,!0),document.removeEventListener("keydown",h,!0)}),r1(t.at?new DOMRect(t.at.x,t.at.y,0,0):t.anchor,r=>z0(a,r)),requestAnimationFrame(()=>{document.body.contains(a)&&p1(a,".s-menu-item[aria-current=page]")})});function E0(t){y("nav.s-menu-inline",t.attrs,()=>{m1(()=>t.items,()=>t.onLeafSelect?.()),v1(t.items,t.onLeafSelect)})}function J1(t){return Y.opts=t,_}function Y1(t){m1(()=>t.items);let a=null;y.clean(()=>{Y.opts?.anchor===a&&_()}),y("contextmenu=",e=>{e.preventDefault(),a=e.currentTarget,J1({...t,anchor:a,at:{x:e.clientX,y:e.clientY},closeOnAnchorClick:!0})})}function P0(t){m1(()=>t.items);let a=null;y.clean(()=>{Y.opts?.anchor===a&&_()}),B({icon:A1,...t.button?.content==null?{ariaLabel:"Open menu"}:null,attrs:".neutral",...t.button,click:e=>{if(a=e.currentTarget,Y.opts?.anchor===a){_();return}J1({items:t.items,anchor:a,dropdownAttrs:t.dropdownAttrs})}})}import l,{OPAQUE as I2}from"aberdeen";import*as b from"aberdeen/route";import z from"aberdeen";var O0=O('<path d="m15 18-6-6 6-6"/>'),T0=O('<path d="m9 18 6-6-6-6"/>');z.insertGlobalCss({".s-strip":{"&":"position:relative display:flex min-width:0","> .s-strip-row":"display:flex align-items:center flex:1 min-width:0 overflow-x:auto overflow-y:hidden scrollbar-width:none scroll-behavior:smooth","> .s-strip-row::-webkit-scrollbar":"display:none","> .s-strip-btn":"position:absolute top:0 bottom:0 z-index:1 display:none align-items:center justify-content:center width:2.4em border:0 padding:0 cursor:pointer fg:$s-muted transition: color 0.15s;","> .s-strip-btn:hover":"fg:$s-text","> .s-strip-btn-left":"left:0 justify-content:flex-start background: linear-gradient(to right, $s-bg 45%, transparent)","> .s-strip-btn-right":"right:0 justify-content:flex-end background: linear-gradient(to left, $s-bg 45%, transparent)","&.s-can-left > .s-strip-btn-left, &.s-can-right > .s-strip-btn-right":"display:flex"},".s-tabs":{"&":"display:flex flex-direction:column gap:$3",".s-tabbar":"border-bottom: 1px solid $s-faint;",".s-tablist":"gap:$1 align-items:stretch margin-bottom:-1px",".s-tab":"display:inline-flex align-items:center gap:$2 cursor:pointer background:transparent border:0 color: $s-muted; font-weight:600 padding: 0.6em 0.9em; white-space:nowrap border-bottom: 3px solid transparent; transition: color 0.15s, background 0.15s, border-color 0.15s;",".s-tab:hover:not(:disabled), .s-tab[aria-selected=true]":"color: $s-text;",".s-tab:focus-visible":"outline:none box-shadow: inset 0 0 0 2px $s-focus; r: $s-radius;",".s-tab[aria-selected=true]":"border-image: $s-gradient 1;",".s-tabpanel":"display:block"}});function z1(t){z("div.s-strip",t.attrs,()=>{let a=z("div.s-strip-row",t.stripAttrs,()=>M(t.content));B2(a,-1),B2(a,1),R0(a)})}function $1(t){let a=t.parentElement;if(!a||!t.isConnected)return;let e=parseFloat(getComputedStyle(a).fontSize)*2.6,h=t.getBoundingClientRect(),p=a.getBoundingClientRect(),r=h.left-p.left,o=h.right-p.right;r<e?a.scrollBy({left:r-e,behavior:"smooth"}):o>-e&&a.scrollBy({left:o+e,behavior:"smooth"})}function q0(t){let a=j("tabs"),e=(r,o)=>r.id??String(o),h=t.bind??z.proxy(e(t.tabs[0]??{label:""},0));t.tabs.length>0&&!t.tabs.some((r,o)=>e(r,o)===z.peek(()=>h.value))&&(h.value=e(t.tabs[0],0));let p=(r,o)=>{r.disabled||(h.value=e(r,o))};z("div.s-tabs",t.attrs,()=>{z1({attrs:".s-tabbar",stripAttrs:".s-tablist role=tablist",content:()=>{t.tabs.forEach((r,o)=>{let d=e(r,o),n=z("button.s-tab type=button role=tab",()=>{z("id=",`${a}-tab-${d}`,"aria-controls=",`${a}-panel-${d}`),z(()=>{let c=h.value===d;z("aria-selected=",c?"true":"false"),z("tabindex=",c?"0":"-1"),c&&requestAnimationFrame(()=>$1(n))}),r.disabled&&z("disabled=true"),z("click=",()=>p(r,o)),z("keydown=",c=>D0(c,t.tabs,o,p)),M(r.icon),M(r.label)})})}}),z("div.s-tabpanel role=tabpanel",t.contentAttrs,()=>{z(()=>{let r=h.value,o=t.tabs.findIndex((n,c)=>e(n,c)===r),d=t.tabs[o]??t.tabs[0];d&&(z("id=",`${a}-panel-${e(d,o)}`,"aria-labelledby=",`${a}-tab-${e(d,o)}`),M(d.content))})})})}function B2(t,a){z(`button.s-strip-btn.s-strip-btn-${a<0?"left":"right"} type=button`,()=>{z("tabindex=-1 aria-hidden=true"),z("click=",()=>t.scrollBy({left:a*t.clientWidth*.8,behavior:"smooth"})),(a<0?O0:T0)({size:"1.1em"})})}function R0(t){let a=t.parentElement;if(!a||typeof ResizeObserver>"u")return;let e=()=>{let r=t.scrollWidth-t.clientWidth;a.classList.toggle("s-can-left",t.scrollLeft>1),a.classList.toggle("s-can-right",t.scrollLeft<r-1)};t.addEventListener("scroll",e,{passive:!0});let h=new ResizeObserver(e);h.observe(t);let p=typeof MutationObserver>"u"?void 0:new MutationObserver(r=>{for(let o of r){for(let d of o.addedNodes)d instanceof Element&&h.observe(d);for(let d of o.removedNodes)d instanceof Element&&h.unobserve(d)}e()});p?.observe(t,{childList:!0});for(let r of Array.from(t.children))h.observe(r);e(),z.clean(()=>{t.removeEventListener("scroll",e),h.disconnect(),p?.disconnect()})}function D0(t,a,e,h){let p=e;if(t.key==="ArrowRight"||t.key==="ArrowDown")p=(e+1)%a.length;else if(t.key==="ArrowLeft"||t.key==="ArrowUp")p=(e-1+a.length)%a.length;else if(t.key==="Home")p=0;else if(t.key==="End")p=a.length-1;else return;t.preventDefault();let r=p>=e?1:-1;for(let o=0;o<a.length;o++){let d=a[p];if(d&&!d.disabled){h(d,p),t.currentTarget?.parentElement?.children[p]?.focus();return}p=(p+r+a.length)%a.length}}var e2={integer(t){if(!/^(0|-?[1-9]\d*)$/.test(t))return;let a=Number(t);return Number.isSafeInteger(a)?a:void 0}};function W(t){let a=String(t).replace(/\/+$/,"");return a.startsWith("/")||(a=`/${a}`),a}function u1(t){let a=W(t);return a==="/"?[]:a.slice(1).split("/")}function F2(t){let a=u1(t),e=a.map((h,p)=>{if(!h.startsWith("[")||!h.endsWith("]"))return{kind:"lit",value:h};let r=/^\[\.\.\.([A-Za-z_$][\w$]*)\]$/.exec(h);if(r){if(p!==a.length-1)throw new Error(`Staffa: "${h}" must be the last segment of route "${t}"`);return{kind:"rest",name:r[1]}}let o=/^\[([A-Za-z_$][\w$]*)(?:=([A-Za-z_$][\w$]*))?\]$/.exec(h);if(!o)throw new Error(`Staffa: malformed param "${h}" in route "${t}"`);let[,d,n]=o;if(n&&!(n in e2))throw new Error(`Staffa: unknown matcher "${n}" in route "${t}" (known: ${Object.keys(e2).join(", ")})`);return{kind:"param",name:d,matcher:n}});return{key:t,segs:e}}function Z0(t){try{return decodeURIComponent(t)}catch{return t}}function t2(t,a){let e={};for(let h=0;h<t.segs.length;h++){let p=t.segs[h];if(p.kind==="rest")return h>=a.length?null:(e[p.name]=a.slice(h).join("/"),e);if(h>=a.length)return null;let r=a[h];if(p.kind==="lit"){if(r!==p.value)return null}else if(p.matcher){let o=e2[p.matcher](r);if(o===void 0)return null;e[p.name]=o}else e[p.name]=Z0(r)}return t.segs.length===a.length?e:null}var N=250,B0=300,I0=360,S1=540;l.insertGlobalCss({":root":`--s-panel-ms:${N}ms`,".s-panels":"flex:1 min-width:0 min-height:0 position:relative overflow:clip isolation:isolate "+q1,".s-panel":{"&":"position:absolute top:0 bottom:0 left:0 display:flex flex-direction:column "+q1+` z-index:2 transition: transform ${N}ms ease-out, opacity ${N}ms linear;`,"&.s-panel-sep::before":"content:'' position:absolute left:0 top:0.6rem bottom:0.6rem width:1px z-index:1 background: linear-gradient(to bottom, transparent, $s-faint 18%, $s-faint 82%, transparent);","&.s-panel-new":"z-index:1","&.s-panel-closing":"z-index:0 opacity:0 pointer-events:none","&.s-panel-enter":"opacity:0","&.s-panel-hidden, &.s-panel-parked":"visibility:hidden"},".s-panel > .s-content":"flex:1 min-height:0 overflow-y:auto overflow-x:hidden p:$3",".s-panel-actions":"display:flex align-items:center justify-content:flex-end gap:$1 flex-shrink:0 padding: $3 $3 0;",".s-crumbs > .s-strip-row":"gap:$m1",".s-crumb":{"&":"flex: 1 0 4rem; font-size:0.85em line-height:1.5 fg:$s-muted text-decoration:none white-space:nowrap max-width:max-content overflow:hidden text-overflow:ellipsis transition: color 0.12s;","&.s-crumb-on":"font-weight:600 fg:$s-text","a&:hover":"filter:none color: color-mix(in lab, $s-primary 33%, $s-text);","svg.s-crumb-pin":"vertical-align:-0.12em margin-right:0.3em opacity:0.8 fill:currentColor","svg.s-crumb-unsaved":"vertical-align:0.08em margin-right:0.3em fill:currentColor"},"svg.s-crumb-sep":"flex-shrink:0 opacity:0.4",".s-main.s-shell-snap .s-panel":"transition:none",".s-panel-loading":{"&":"position:absolute inset:0 display:flex align-items:center justify-content:center gap:$1 pointer-events:none",i:"width:0.5rem height:0.5rem r:50% background:$s-muted opacity:0.45 animation: s-panel-pulse 1s ease-in-out infinite;","i:nth-child(2)":"animation-delay:0.15s","i:nth-child(3)":"animation-delay:0.3s"},"@keyframes s-panel-pulse":{"0%, 100%":"opacity:0.25 transform:scale(0.8)","50%":"opacity:0.7 transform:scale(1)"}});var a2=!1,E1=class{[I2]=!0;compiled;ancestors;opts;$state=l.proxy({live:[],focus:0});$open=l.proxy({});nextOrder=0;containerEl;geom;lastGeom;layoutQueued=!1;timers=new Set;exiting=new Set;intent=null;settling=null;lastSeen=null;queued=null;constructor(a){if(a2)throw new Error("Staffa: only one routed S.main() (one with `routes`) can be active at a time");a2=!0,this.opts=a,this.compiled=Object.entries(a.routes).map(([e,h])=>({...F2(e),draw:h})),this.ancestors=Object.entries(a.ancestors??{}).filter(e=>e[1]!=null).map(([e,h])=>({...F2(e),fn:h})),l(()=>{let e=this.computeTarget(),h={...b.current.search},p=b.current.hash;l.peek(()=>{let r=this.lastSeen;if(r&&r.path!==b.current.path){let o=this.$state.live.find(d=>d.path===r.path);o&&(o.search=r.search,o.hash=r.hash)}this.lastSeen={path:b.current.path,search:h,hash:p},this.propose(e),Array.isArray(b.current.state.panels)||Object.assign(b.current.state,this.stateFor({stack:this.paths(),focus:this.$state.focus}))})}),this.interceptLinks(),this.watchTitle(),this.guardTabClose(),l.clean(()=>{for(let e of this.timers)clearTimeout(e);this.timers.clear(),this.queued?.settle(!1),this.queued=null,a2=!1})}resolve(a){let e=u1(a);for(let h of this.compiled){let p=t2(h,e);if(p)return{draw:h.draw,params:p}}return{draw:this.opts.notFound??U0,params:{}}}matches(a){let e=u1(a);return this.compiled.some(h=>t2(h,e)!=null)}deriveStack(a){let e=W(a),h=this.askAncestors(e),p=h?h.map(W):this.prefixesOf(e),r=[];for(let o of p)o!==e&&!r.includes(o)&&this.matches(o)&&r.push(o);return r.push(e),r}askAncestors(a){let e=u1(a);for(let h of this.ancestors){let p=t2(h,e);if(p)return h.fn(p,a)??void 0}}prefixesOf(a){let e=u1(a),h=[];for(let p=1;p<e.length;p++)h.push("/"+e.slice(0,p).join("/"));return h}pinnedIn(a,e){return a.filter(h=>e.includes(h)?!1:this.$state.live.find(p=>p.path===h)?.$panel.pinned===!0)}unsavedAt(a){return this.$state.live.find(e=>e.path===a)?.$panel.unsaved===!0}targetFor(a,e){let h=Array.isArray(e?.panels)?e.panels.map(String):null;if(h){let p=Array.isArray(e.parked)?e.parked.map(String):[],r=W(a),o=new Set([r]),d=c=>c.map(W).filter(i=>!o.has(i)&&!!o.add(i)),n=d(h);return{stack:[...n,r,...d(p)],focus:n.length}}return l.peek(()=>{let p=this.deriveStack(a).slice(0,-1),r=[...p,...this.pinnedIn(this.paths(),[...p,W(a)]),W(a)];return{stack:r,focus:r.length-1}})}computeTarget(){return this.targetFor(b.current.path,b.current.state)}paths(){return this.$state.live.map(a=>a.path)}propose(a){let e=this.$state.live.filter(h=>!a.stack.includes(h.path)&&h.$panel.unsaved).map(h=>h.path);e.length&&(a={stack:[...a.stack,...e],focus:a.focus}),!(K2(this.paths(),a.stack)&&a.focus===this.$state.focus)&&this.commit(a,b.current.nav)}commit(a,e){this.geom=void 0;let h=b.current.state.pinned,p=new Set(Array.isArray(h)?h.map(String):[]),r=new Map(this.$state.live.map(n=>[n.path,n])),o=[];for(let n of a.stack){let c=r.get(n);if(c){r.delete(n),o.push(c);continue}let i=this.createEntry(n,o.length<=a.focus,p.has(n));e!=="load"&&(i.enter=!0),o.push(i),this.$open[n]=i}let d;for(let n of this.$state.live)r.has(n.path)?this.beginClose(n,d):d=n.path;this.$state.live=o,this.$state.focus=Math.min(a.focus,o.length-1),this.scheduleLayout()}createEntry(a,e,h){let{draw:p,params:r}=this.resolve(a),o={[I2]:!0,order:this.nextOrder++,path:a,draw:p,$ui:l.proxy({holding:!1}),maxWidth:"medium",width:0};return o.$panel=l.proxy({stack:this,params:r,path:a,width:0,visible:e,pinned:h||void 0,close:()=>this.closePath(o.path),open:(d,n)=>this.navigate(d,{from:o.path,how:n})}),o}beginClose(a,e){a.closing=!0,a.anchor=e,a.$panel.visible=!1,delete this.$open[a.path]}playExit(a,e){if(!a.closing){e.remove();return}e.classList.add("s-panel-closing"),e.setAttribute("inert","");let h=a.placed?{el:e,anchor:a.anchor,ride:0}:null;h&&this.exiting.add(h),this.afterTransition(e,"opacity",()=>{h&&this.exiting.delete(h),e.remove()})}afterTransition(a,e,h){let p=!1,r=setTimeout(()=>d(),N+80);this.timers.add(r);let o=()=>{clearTimeout(r),this.timers.delete(r)},d=()=>{o(),p||(p=!0,h())},n=c=>i=>{i.target===a&&i.propertyName===e&&c()};a.addEventListener("transitionrun",n(o)),a.addEventListener("transitionend",n(d)),a.addEventListener("transitioncancel",n(d))}intended(){return this.intent??{stack:this.paths(),focus:this.$state.focus}}stateFor(a){return{panels:a.stack.slice(0,a.focus),parked:a.stack.slice(a.focus+1),pinned:this.pinnedPaths()}}pinnedPaths(){return this.$state.live.filter(a=>a.$panel.pinned).map(a=>a.path)}issue(a,e){return this.intent=a,this.settling?(this.queued?.settle(!1),new Promise(h=>{this.queued={run:e,settle:h}})):this.start(e)}start(a){let e=p=>{this.settling=null;let r=this.queued;return this.queued=null,p&&r?this.start(r.run).then(r.settle,()=>r.settle(!1)):(this.intent=null,r?.settle(!1)),p},h=Promise.resolve(a()).then(e,p=>(console.error(p),e(!1)));return this.settling=h,h}focusAt(a){let e=this.intended();if(a<0||a>=e.stack.length||a===e.focus)return Promise.resolve(!1);let h={stack:e.stack,focus:a},p=e.stack[a];return this.issue(h,()=>{let r=this.$state.live.find(o=>o.path===p);return b.go({path:p,search:r?.search,hash:r?.hash,state:this.stateFor(h)})})}back(){return l.peek(()=>{let a=this.intended();return a.focus===a.stack.length-1&&!this.unsavedAt(a.stack[a.focus])?this.closePath(a.stack[a.focus]??""):a.focus===0?Promise.resolve(!1):this.focusAt(a.focus-1)})}closePath(a){return l.peek(()=>{let e=this.intended(),h=e.stack.indexOf(W(a));if(h<0||e.stack.length<2||this.unsavedAt(e.stack[h]))return Promise.resolve(!1);let p=e.stack.filter((c,i)=>i!==h),r=h===e.focus?Math.max(0,h-1):e.focus-(h<e.focus?1:0),o={stack:p,focus:r};if(h===e.focus&&h===e.stack.length-1){let c=this.$state.live.find(w=>w.path===p[r]),i={};c?.search&&(i.search=c.search),c?.hash&&(i.hash=c.hash);let A=p.filter(w=>this.$state.live.find(D=>D.path===w)?.$panel.pinned===!0);return this.issue(o,()=>Promise.resolve(b.back({path:p[r],state:{panels:p.slice(0,r),parked:[]}},i)).then(w=>(w&&(b.current.state.pinned=A),w)))}let d=p[r],n=d!==e.stack[e.focus];return this.issue(o,()=>{let c=n?this.$state.live.find(i=>i.path===d):void 0;return b.go({path:d,search:n?c?.search:{...b.current.search},hash:n?c?.hash:b.current.hash,state:this.stateFor(o)})})})}navigate(a,{from:e,how:h,beneath:p}={}){let r=h??this.opts.linkNavigation,o=r==="open"?null:e??null,d=r==="replace";return l.peek(()=>{let n;try{n=new URL(a,location.href)}catch{return Promise.resolve(!1)}let c=W(n.pathname),i=this.intended(),A=p?-1:i.stack.indexOf(c),w;if(A>=0&&r!=="replace"&&r!=="open"){let f=this.pinnedIn(i.stack.slice(A+1),[]);w={stack:[...i.stack.slice(0,A+1),...f],focus:A}}else{let f=o==null?-1:i.stack.indexOf(o),s=(p?p.map(W):f<0?this.deriveStack(c).slice(0,-1):i.stack.slice(0,d?f:f+1)).filter((k,X,h1)=>k!==c&&h1.indexOf(k)===X),u=[...s,...this.pinnedIn(i.stack,[...s,c,d?o:null])];w={stack:[...u,c],focus:u.length}}let D=A>=0?this.$state.live.find(f=>f.path===c):void 0,v=n.search?Object.fromEntries(new URLSearchParams(n.search)):D?.search??{},H=n.hash||D?.hash||"";if(w.focus===i.focus&&K2(w.stack,i.stack)&&n.search===location.search&&(n.hash||"")===(location.hash||""))return Promise.resolve(!0);let V=this.stateFor(w);return d?this.issue(w,()=>(b.current.path=c,b.current.search=v,b.current.hash=H,b.current.state=V,l.runQueue(),b.current.path===c)):this.issue(w,()=>b.go({path:c,search:v,hash:H,state:V}))})}pushPath(a,e){return l.peek(()=>{let h=this.intended();return this.navigate(a,{from:h.stack[h.focus],how:e?"replace":"push"})})}interceptLinks(){b.interceptLinks((a,e,h)=>{if(h instanceof KeyboardEvent&&(h.ctrlKey||h.metaKey||h.shiftKey||h.altKey))return!1;let p=e.getAttribute("data-panel")??void 0,r=e.closest(".s-panel"),o=r?this.$state.live.find(d=>d.el===r):e.closest(".s-panel-origin")?this.$state.live[this.$state.focus]:void 0;return this.navigate(a.href,{from:o?.path,how:p}),!0})}get currentPanel(){return this.$state.live[this.$state.focus]?.$panel}get panels(){return this.$state.live.map(a=>a.$panel)}get currentPanelIndex(){return this.$state.focus}pushPanel(a){return this.pushPath(a,!1)}replacePanel(a){return this.pushPath(a,!0)}openPanelStack(a,e){return this.navigate(a,{how:"open",beneath:e})}closePanel(a){return l.peek(()=>{let e=this.intended();return this.closePath(a??e.stack[e.focus]??"")})}setColumns(a){this.opts.columns!==a&&(this.opts.columns=a,this.scheduleLayout())}setLinkNavigation(a){this.opts.linkNavigation=a}drawCrumbs(){z1({attrs:".s-crumbs role=navigation aria-label=Breadcrumbs",content:()=>{l(()=>{let a=this.panels.map(p=>p.path),e=this.currentPanelIndex,h;for(let p=0;p<a.length;p++){p&&$2({size:"0.85em",attrs:".s-crumb-sep"});let r=this.drawCrumb(a[p],p,p===e);p===e&&(h=r)}requestAnimationFrame(()=>{h&&$1(h)})})}})}drawCrumb(a,e,h){let p=this.$state.live[e];return l(h?"span.s-crumb aria-current=page":"a.s-crumb",()=>{h||l("href=",a),l(()=>{p?.$panel.visible&&l(".s-crumb-on")}),l(()=>{p?.$panel.unsaved&&k2({size:"0.45em",attrs:".s-crumb-unsaved"})}),l(()=>{p?.$panel.pinned&&W1({size:"0.85em",attrs:".s-crumb-pin"})}),l(()=>{l("#",p?.$panel.title??p?.$ui.fallback??(a.split("/").pop()||a))}),Y1({link:a,items:[{label:()=>{l(()=>{l("#",p?.$panel.pinned?"Unpin":"Pin")})},icon:()=>{l(()=>{(p?.$panel.pinned?z2:W1)()})},click:()=>{p&&this.togglePin(p)}},{label:"Close",icon:i1,disabled:p?.$panel.unsaved===!0,click:()=>{this.closePath(a)}}]})})}togglePin(a){a.$panel.pinned=!a.$panel.pinned||void 0,b.current.state.pinned=this.pinnedPaths()}watchTitle(){let a=document.title;l(()=>{let e=this.$state.live[this.$state.focus],h=e?.$panel.title??e?.$ui.fallback,p=typeof this.opts.title=="string"?this.opts.title:void 0,r=this.$state.live.some(d=>d.$panel.unsaved),o=h&&p?`${h} \xB7 ${p}`:h||p;o&&(document.title=(r?"\u2022 ":"")+o)}),l.clean(()=>{document.title=a})}guardTabClose(){if(typeof window>"u")return;let a=e=>{let h=this.$state.live.find(p=>p.$panel.unsaved);h&&(e.preventDefault(),e.returnValue=!0,this.flushLayout(),h.$panel.visible||this.focusAt(this.intended().stack.indexOf(h.path)))};l(()=>{this.$state.live.some(e=>e.$panel.unsaved)&&(window.addEventListener("beforeunload",a),l.clean(()=>window.removeEventListener("beforeunload",a)))})}drawColumns(){let a=l("div.s-panels role=main",()=>{this.containerEl=l(),l.onEach(this.$open,e=>this.drawPanel(e),e=>e.order)});if(typeof ResizeObserver<"u"){let e=new ResizeObserver(()=>this.layout());e.observe(a),l.clean(()=>e.disconnect())}l.clean(()=>{this.containerEl===a&&(this.containerEl=void 0)}),this.scheduleLayout()}drawPanel(a){let e;l(()=>{let h=a.$panel.maxWidth;a.maxWidth=h==="small"||h==="large"||h==="none"?h:"medium";let p=this.roomFor(a.maxWidth);p&&(a.width=p,l.peek(a.$panel,"width")!==p&&(a.$panel.width=p),e&&(e.style.width=`${p}px`,this.scheduleLayout()))}),e=l(`section.s-panel${a.width?` w:${a.width}px`:""}`,"destroy=",h=>this.playExit(a,h),()=>{l(()=>this.drawActions(a)),l("div.s-content",()=>{if(a.draw(a.$panel),b.persistScroll(a.path),l.peek(a.$panel,"title")==null){let h=K0(l());h&&l.peek(a.$ui,"fallback")!==h&&(a.$ui.fallback=h)}}),l(()=>{!a.$panel.loading||a.$ui.holding||l("div.s-panel-loading aria-hidden=true",()=>{l("i"),l("i"),l("i")})})}),a.el=e,a.placed=!1,e.style.transition="none",l.clean(()=>{a.el===e&&(a.el=void 0)}),l(()=>{a.$panel.loading,this.scheduleLayout()}),this.scheduleLayout()}drawActions(a){this.opts.$shell.narrow||a.$panel.actions==null||l("div.s-panel-actions",()=>M(a.$panel.actions))}scheduleLayout(){this.layoutQueued||(this.layoutQueued=!0,requestAnimationFrame(()=>this.flushLayout()))}flushLayout(){this.layoutQueued&&(this.layoutQueued=!1,this.layout())}measure(){let a=this.containerEl,e=a?a.getBoundingClientRect().width:0;if(!e)return;let h=Math.ceil(e/S1),p=e/h>=I0?e/h:Math.min(e,S1),r=o=>Math.min(o*p,e);return{area:e,size:{small:p,medium:r(2),large:r(3),none:e}}}geometry(){return this.geom??=this.measure()}roomFor(a){return this.geometry()?.size[a]??0}layout(){let a=this.containerEl,e=a?.closest(".s-main");if(!a||!e)return;let h=this.$state.live,p=h.length;if(!p||h.some(s=>!s.el))return;this.geom=void 0;let r=this.geometry();if(!r)return;let o=this.opts.columns==="single",d=this.lastGeom?.area!==r.area;d&&(this.lastGeom=r,e.classList.add("s-shell-snap"));let n=s=>r.size[s.maxWidth],c=Math.min(this.$state.focus,p-1),i=c,A=n(h[c]);if(!o)for(let s=c-1;s>=0;s--){let u=A+n(h[s]);if(u>r.area)break;A=u,i=s}let w=i>0?0:(r.area-A)/2;for(let s=i;s<=c;s++)h[s].width=n(h[s]);for(let s of h)s.width||(s.width=n(s));let D=[],v=[],H=new Map,V=new Map;if(!d)for(let s of h)s.placed&&V.set(s,F0(s.el));let f=w,C=0;for(let s=0;s<i;s++)f-=h[s].width;for(let s=0;s<p;s++){let u=h[s],k=u.el,X=s>=i&&s<=c;s===c+1&&(f=Math.max(f,r.area)),(u.enter||!u.placed)&&(!u.$panel.loading||u.holdDone?u.$ui.holding=!1:u.$ui.holding||(u.$ui.holding=!0,this.holdEnter(u))),u.placed?(C=parseFloat(k.style.left)-f,H.set(u.path,C),C&&!d&&(k.style.transition=`opacity ${N}ms linear`,k.style.transform=`translateX(${(V.get(u)??0)+C}px)`,v.push(k)),k.style.left=`${f}px`,u.enter&&!u.$ui.holding&&this.releaseEnter(u)):(D.push(u),k.style.left=`${f}px`,u.enter&&X&&(k.style.transform=`translateX(${C}px)`,k.classList.add("s-panel-enter","s-panel-new"))),k.style.width=`${u.width}px`,f+=u.width,u.$panel.visible!==X&&(u.$panel.visible=X),u.$panel.width!==u.width&&(u.$panel.width=u.width),k.classList.toggle("s-panel-sep",X&&s>i);let h1=s<i,W2=k.classList.contains("s-panel-hidden")||k.classList.contains("s-panel-parked");X?k.classList.remove("s-panel-hidden","s-panel-parked"):W2||!u.placed||d?(k.classList.toggle("s-panel-hidden",h1),k.classList.toggle("s-panel-parked",!h1)):this.afterTransition(k,"transform",()=>{u.el!==k||!u.offstage||(k.classList.toggle("s-panel-hidden",h1),k.classList.toggle("s-panel-parked",!h1))}),u.offstage=!X,k.toggleAttribute("inert",!X)}for(let s of this.exiting){let u=s.anchor==null?void 0:H.get(s.anchor);u&&(s.ride-=u,s.el.style.transform=`translateX(${s.ride}px)`)}(D.length||v.length||d)&&a.offsetWidth,d&&e.classList.remove("s-shell-snap");for(let s of v)s.style.transition="",s.style.transform="";for(let s of D){let u=s.el;u.style.transition="",u.style.transform="",s.placed=!0,s.$ui.holding||this.releaseEnter(s)}}releaseEnter(a){a.enter=!1;let e=a.el;!e||!e.classList.contains("s-panel-enter")||(e.classList.remove("s-panel-enter"),this.afterTransition(e,"opacity",()=>e.classList.remove("s-panel-new")))}holdEnter(a){let e=setTimeout(()=>{this.timers.delete(e),a.holdDone=!0,a.$ui.holding&&(a.$ui.holding=!1,this.scheduleLayout())},B0);this.timers.add(e)}};function K2(t,a){return t.length===a.length&&t.every((e,h)=>e===a[h])}function F0(t){let a=getComputedStyle(t).transform;return a&&a!=="none"?new DOMMatrixReadOnly(a).m41:0}function K0(t){let a=document.createTreeWalker(t,NodeFilter.SHOW_TEXT);for(let e=a.nextNode();e;e=a.nextNode()){let h=e.textContent.trim();if(h)return h.length>48?`${h.slice(0,47).trimEnd()}\u2026`:h}}function U0(t){l("p fg:$s-muted",()=>l("#",`No panel at ${t.path}`))}var W0=200;m.insertGlobalCss({".s-main":{"&":"display:flex flex-direction:column min-height:100vh max-height:100vh container-type:inline-size","body > &":"margin: calc(-1 * $3)","> header":"border:0 border-bottom: 1px solid $s-faint; r:0 position:sticky top:0 z-index:10","> footer":"border-top: 1px solid $s-faint; fg:$s-muted","> header > .s-bar, > footer > .s-bar":"display:flex align-items:center width:100% margin-inline:auto gap:$3 padding: $2 $3;","> header .s-logo, > header .s-nav-trigger":"display:flex align-items:center flex-shrink:0","> header .s-nav-trigger":"margin-left:-0.375rem","> header .s-logo":"font-size:1.4em background: $s-gradient; -webkit-background-clip:text; background-clip:text; color:transparent;","> header .s-titles":"display:flex flex-direction:column min-width:5rem flex: 0 1 auto;","> header .s-subtitle":"fg:$s-muted font-size:0.85em line-height:1.5 overflow:hidden text-overflow:ellipsis white-space:nowrap","> header .s-title":"font-weight:800 font-size:1.1em line-height:1.2 overflow:hidden text-overflow:ellipsis white-space:nowrap letter-spacing:-0.01em background: $s-gradient; -webkit-background-clip:text; background-clip:text; color:transparent; width:fit-content max-width:100%","> header a.s-logo, > header a.s-title":"text-decoration:none filter:none cursor:pointer","> header .s-menu":"display:flex align-items:center justify-content:flex-end gap:$2 flex: 1 1 auto;",".s-body":"flex:1 overflow:clip display:flex flex-direction:row min-height:0 justify-content:center position:relative",".s-body-inner":"flex:1 min-width:0 display:flex flex-direction:row min-height:0","&.s-nav-right .s-body-inner":"flex-direction:row-reverse",".s-nav-sep":"width:1px flex-shrink:0 align-self:stretch margin: 0.6rem 0; border:0 background: linear-gradient(to bottom, transparent, $s-faint 18%, $s-faint 82%, transparent);",".s-body main":`flex:1 min-width:0 min-height:0 overflow-x:hidden overflow-y:auto display:flex flex-direction:column transition: transform ${N}ms ease;`,".s-body main.s-slide-in":"transform: translateX(100%); transition:none",".s-body main > .s-content":"width:100% flex:1 p:$3",".s-body main.s-scroll-y":"margin-right:$3"},".s-nav-panel":{"&":"display:flex flex-direction:column overflow-y:auto flex-shrink:0 width: calc(var(--s-nav-w) - 1px); padding:$3 gap:$1"},".s-nav-page":{"&":`position:absolute inset:0 z-index:5 display:flex flex-direction:column overflow-y:auto overscroll-behavior:contain border:0 r:0 padding:$2 gap:$1 transition: transform ${N}ms ease, visibility 0s;`,"&.s-nav-page-off":`transform:translateX(-100%) pointer-events:none visibility:hidden transition: transform ${N}ms ease, visibility 0s ${N}ms;`,".s-menu-item":"padding: $2 $3; min-height:3rem font-size:1.05em gap:$3"},[`@container (max-width: ${g1}px)`]:{".s-main .s-nav-panel, .s-main .s-nav-sep":"display:none",".s-main > header > .s-bar":"gap:$1 padding: $1 $2;",".s-main .s-body main.s-scroll-y":"margin-right:0"},[`@container (max-width: ${S1}px)`]:{".s-content > .s-box":"margin-inline: calc(-1 * $3); r:0 border-inline:0"}});function N0(t={}){let a=t.nav,e=t.navPosition??"left",h=m.proxy({open:!1}),p=m.proxy({narrow:typeof document<"u"&&document.documentElement.clientWidth<=g1}),r=t.routes;if(r!=null&&t.content!=null)throw new Error("Staffa: S.main() takes either `content` or `routes`, not both");let o=r?new E1({routes:r,notFound:t.notFound,ancestors:t.ancestors,title:t.title,$shell:p}):null;o&&(m(()=>o.setColumns(t.columns)),m(()=>o.setLinkNavigation(t.linkNavigation)));let d=o&&t.home!==null?t.home??"/":null,n=()=>{t.maxWidth!=null&&m("max-width:",t.maxWidth)},c=m("div.s-main",t.attrs,()=>{m(()=>{a==null||!a.items.length?m("--s-nav-w: 0px"):m(`.s-nav-${e}`,`--s-nav-w: ${t.navWidth??W0}px`)}),m(()=>{(o!=null||t.title!=null||t.subtitle!=null||t.logo!=null||t.menu!=null||a!=null&&a.items.length>0)&&m("header.s-s.neutral",t.topbarAttrs,()=>{m("div.s-bar",()=>{m(n),m(()=>{if(p.narrow&&a!=null&&a.items.length){m("div.s-nav-trigger",()=>Q0(a,h));return}t.logo!=null&&m(d!=null?"a.s-logo aria-label=Home":"div.s-logo",()=>{d!=null&&m("href=",d),M(t.logo)})}),m("div.s-titles",()=>{m(()=>{t.title!=null&&m(d!=null?"a.s-title":"div.s-title",()=>{d!=null&&m("href=",d),M(t.title)})}),X0(t,o,a,p)}),m(()=>{let A=p.narrow?o?.currentPanel?.actions:void 0,w=A??t.menu;w!=null&&m(`div.s-menu${A!=null?".s-panel-origin":""}`,()=>M(w))})})})}),m("div.s-body",()=>{m("div.s-body-inner",()=>{m(n),m(()=>{a==null||!a.items.length||(m(`nav.s-nav-panel.s-nav-${e}`,t.navAttrs,()=>{v1(a.items)}),m("div.s-nav-sep aria-hidden=true"))}),tt(t,o)}),m(()=>{a!=null&&a.items.length&&h.open&&J0(a,t.navPageAttrs,h,p)})}),m(()=>{t.footer!=null&&m("footer",()=>{m("div.s-bar",()=>{m(n),M(t.footer)})})})});return j0(c,p),a!=null&&m1(()=>a.items,()=>{h.open=!1}),(a!=null||o)&&m(()=>{let i=w=>()=>{K1()||C1()||w()},A=()=>c.querySelector(".s-nav-trigger button");h.open?P("Esc","Close the navigation",i(()=>{h.open=!1,A()?.focus()}),"global"):o&&o.currentPanelIndex>0?P("Esc","Back to the previous panel",i(()=>{o.back()}),"global"):P("Esc","Jump to the navigation",i(()=>{let w=c.querySelector(".s-nav-panel");w?.offsetParent!=null?(w.querySelector("[aria-current=page]")??w.querySelector(".s-menu-item:not([aria-disabled=true])"))?.focus():A()?.click()}),"global")}),o??void 0}var P1=null;function G0(){P1?.()}function X0(t,a,e,h){m(()=>{if(t.subtitle!=null&&(a==null||_0(a,e,h))){m("div.s-subtitle",()=>M(t.subtitle));return}a?.drawCrumbs()})}function _0(t,a,e){return e.narrow||a==null||t.panels.length>1?!1:X1(a.items)}function j0(t,a){if(typeof ResizeObserver>"u")return;let e=new ResizeObserver(h=>{let p=h[0]?.contentBoxSize?.[0],r=p?p.inlineSize:h[0]?.contentRect.width;r!=null&&(a.narrow=r<=g1)});e.observe(t),m.clean(()=>e.disconnect())}function Q0(t,a){l1({icon:t.button?.icon??(()=>m(()=>(a.open?i1:A1)())),ariaLabel:t.button?.ariaLabel??"Open navigation",attrs:t.button?.attrs,click:()=>{a.open=!a.open}})}function J0(t,a,e,h){let p=!1,r=()=>{p=!0,e.open=!1},o=m("nav.s-nav-page.s-s.neutral aria-label=Navigation create=s-nav-page-off destroy=s-nav-page-off",a,()=>v1(t.items,r));P1=r,m.clean(()=>{P1===r&&(P1=null)});let d=m.peek(h2,"path");m(()=>{h2.path!==d&&!Q1(h2.path)&&r()});let n=o.closest(".s-main"),c=o.parentElement?.querySelector(":scope > .s-body-inner"),i=c?.querySelector(":scope > main");c?.setAttribute("inert",""),m(()=>{h.narrow||(e.open=!1)}),m.clean(()=>{c?.removeAttribute("inert"),p&&(i&&Y0(i),n?.querySelector(".s-nav-trigger button")?.focus())}),requestAnimationFrame(()=>{document.body.contains(o)&&p1(o,".s-menu-item[aria-current=page]")})}function Y0(t){t.classList.add("s-slide-in"),t.offsetWidth,t.classList.remove("s-slide-in")}function tt(t,a){if(a){a.drawColumns();return}let e=m("main",()=>{m("div.s-content",t.contentAttrs,()=>{M(t.content)})});at(e)}function at(t){if(typeof ResizeObserver>"u")return;let a=()=>t.classList.toggle("s-scroll-y",t.offsetWidth>t.clientWidth),e=new ResizeObserver(a);e.observe(t),t.firstElementChild&&e.observe(t.firstElementChild),a(),m.clean(()=>e.disconnect())}import T from"aberdeen";T.insertGlobalCss({".s-select_wrap":{"&":"position:relative display:block",select:"w:100% cursor:pointer padding-right:2.2em; appearance:none","&::after":"content: '\u25BE'; position:absolute right:0.7em top:50%; transform: translateY(-50%); pointer-events:none fg:$s-muted font-size:0.85em"}});function et(t){Q(t,(a,e)=>{T("div.s-select_wrap",()=>{T("select.s-input",t.inputAttrs,()=>{d1(t,a,e),T("change=",h=>{t.bind&&(t.bind.value=h.target.value)}),T(()=>{let h=typeof t.options=="function"?t.options():t.options,p=t.bind?.value??"";t.placeholder!=null&&T("option",()=>{T("value= disabled=true hidden=true"),p||T("selected=true"),T("#",t.placeholder)});for(let r of h){let o=typeof r=="string"?{value:r,label:r}:{value:r.value,label:r.label??r.value};T("option",()=>{T("value=",o.value),o.value===p&&T("selected=true"),T("#",o.label)})}})})})})}import G from"aberdeen";G.insertGlobalCss({"textarea.s-input":"resize:vertical min-height:3em line-height:1.45","textarea.s-input.s-autoGrow":"resize:none min-height:2.5em overflow-y:hidden"});function ht(t={}){let a=t.autoGrow!==!1;Q(t,(e,h)=>{b1(t,!0,()=>{let p=G("textarea.s-input",t.inputAttrs,()=>{a?(G(".s-autoGrow"),G("input=",r=>{U2(r.currentTarget),t.input&&t.input(r)})):(G("rows=",t.rows??4),G("resize:",t.resize??(t.suffix?"none":"vertical")),t.input&&G("input=",t.input)),t.placeholder!=null&&G("placeholder=",t.placeholder),t.value!=null&&!t.bind&&G("value=",t.value),t.change&&G("change=",t.change),d1(t,e,h,t.bind)});a&&requestAnimationFrame(()=>U2(p))})})}function U2(t){t.style.height="auto",t.style.height=`${t.scrollHeight}px`}export{Y1 as addContextMenu,s1 as addTooltip,o0 as alert,M0 as autocomplete,P as bindKey,m0 as box,B as button,u0 as buttonChooser,t1 as buttonGroup,y0 as checkbox,Z2 as closeFloatingMenu,G0 as closeNav,d0 as confirm,c1 as dialog,f0 as form,R as formatKey,o2 as getDarkMode,l1 as iconButton,K1 as isDialogOpen,C1 as isFloatingMenuOpen,N0 as main,A2 as matchWords,E0 as menu,P0 as menuButton,n0 as prompt,$1 as revealInStrip,z1 as scrollStrip,et as select,G2 as setDarkMode,c0 as setKeyHelp,J1 as showFloatingMenu,U1 as showKeyHelp,q0 as tabs,ht as textarea,I1 as textline,V1 as toast};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "staffa",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "An opinionated component library for the Aberdeen reactive UI library.",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -41,7 +41,7 @@
41
41
  "jsdom": "^29.1.1",
42
42
  "lucide-static": "^1.17.0",
43
43
  "readme-tsdoc": "^1.2.1",
44
- "shotest": "^2.4.0",
44
+ "shotest": "^2.6.0",
45
45
  "typescript": "^5.9.3"
46
46
  },
47
47
  "allowScripts": {
@@ -26,10 +26,24 @@ Allow selecting several values, shown as removable chips.
26
26
 
27
27
  ### autocompleteOptions.allowCustom · member
28
28
 
29
- Allow committing free text that isn't in the options list. Defaults to `true`.
29
+ Allow committing free text that isn't in the options list. Defaults to
30
+ `true`, and includes no text at all: emptying a single-select field clears
31
+ its selection (`required` is what makes that an error). With
32
+ `allowCustom: false` only the options can be committed, so anything else
33
+ springs back to the current selection when the field loses focus.
30
34
 
31
35
  **Type:** `boolean`
32
36
 
37
+ ### autocompleteOptions.match · member
38
+
39
+ The type-ahead test, run for each option against what has been typed.
40
+ Defaults to `matchWords`. Pass your own to filter differently — say
41
+ `(label, q) => label.toLowerCase().includes(q.toLowerCase())` for plain
42
+ substring matching, or something that also looks at an option's other
43
+ fields. Matching never reorders: options are shown as given.
44
+
45
+ **Type:** `(label: string, query: string) => boolean`
46
+
33
47
  ### autocompleteOptions.placeholder · member
34
48
 
35
49
  Placeholder for the text input.
@@ -0,0 +1,23 @@
1
+ ## InsetOptions · interface
2
+
3
+ Options for a field that can carry content *inside* its control box — an
4
+ icon against the leading edge, a button against the trailing one. Added by
5
+ ("./textline").textline and
6
+ ("./textarea").textarea.
7
+
8
+ ### insetOptions.prefix · member
9
+
10
+ Content drawn inside the control, against its leading edge — typically a
11
+ unit, a currency sign or a search glyph. The control's text is indented to
12
+ keep clear of it, however wide it turns out to be.
13
+
14
+ **Type:** `Slot`
15
+
16
+ ### insetOptions.suffix · member
17
+
18
+ Content drawn inside the control, against its trailing edge: a *send*
19
+ button on a chat box, a clear or reveal button, a character count. Sits
20
+ against the bottom on a (growing) textarea, and vertically centred on a
21
+ single-line input.
22
+
23
+ **Type:** `Slot`
package/skill/SKILL.md CHANGED
@@ -254,6 +254,16 @@ S.iconButton({ icon: trash2, tooltip: "Delete" }); // says "Delete" on hover,
254
254
 
255
255
  A tooltip appears only where one is asked for; on an icon button, a string `tooltip` doubles as the `ariaLabel` when that is left out, so naming a glyph takes one option rather than two. A `key` is appended to whatever the tip says (`tooltip: false` keeps even that quiet), and — unlike a tooltip on a plain disabled `<button>`, which the browser gives no hover events — these show while disabled, which is where a tooltip earns its keep.
256
256
 
257
+ `S.textline` and `S.textarea` take a `prefix` and a `suffix` slot that put content *inside* the control — a search glyph, a unit, a clear or send button. The control's text keeps clear of whatever they hold, and on a textarea they ride the bottom edge, which is where a send button belongs:
258
+
259
+ ```ts
260
+ S.textline({ placeholder: "Search…", prefix: search, suffix: () => S.iconButton({ icon: x, tooltip: "Clear" }) });
261
+ S.textarea({ placeholder: "Message…", bind: A.ref($chat, "text"),
262
+ suffix: () => S.iconButton({ icon: send, tooltip: "Send", click: post }) });
263
+ ```
264
+
265
+ A plain glyph there lets the click through to the field it decorates; a button or a link takes it.
266
+
257
267
  `src/index.ts` is the authoritative list of exports.
258
268
 
259
269
  ### Keyboard shortcuts
@@ -408,6 +418,15 @@ A combobox with type-ahead filtering. Supports single or multi-select (chips),
408
418
  optional free-text entry, and full keyboard control (arrows, enter, escape,
409
419
  backspace-to-remove). Implements the ARIA combobox/listbox pattern.
410
420
 
421
+ ## [matchWords](matchWords.md) · function
422
+
423
+ The default type-ahead test: every whitespace-separated term of the query has
424
+ to match the label from a word start on, and no two terms may claim the same
425
+ word. Order doesn't matter, so "se pal" finds "Palette search" just as
426
+ "pal se" does — but "ette" finds nothing, as you type the beginnings of
427
+ words. A term may run past its word's end ("typescript" finds "TypeScript",
428
+ "c++" finds "C++"), so typing a label out in full always finds it.
429
+
411
430
  ## [AutocompleteOptions](AutocompleteOptions.md) · interface
412
431
 
413
432
  Options for `autocomplete`.
@@ -803,6 +822,13 @@ autocomplete, ...). Every field lays out the same way — optional label,
803
822
  control, optional help/error below — which is what lets `form` align
804
823
  groups of them.
805
824
 
825
+ ## [InsetOptions](InsetOptions.md) · interface
826
+
827
+ Options for a field that can carry content *inside* its control box — an
828
+ icon against the leading edge, a button against the trailing one. Added by
829
+ ("./textline").textline and
830
+ ("./textarea").textarea.
831
+
806
832
  ## [ContentOptions](ContentOptions.md) · interface
807
833
 
808
834
  Options for components that wrap a single block of caller-provided content,
@@ -28,7 +28,10 @@ Visible number of text rows. Defaults to `4`. Ignored when `autoGrow` is enabled
28
28
 
29
29
  ### textareaOptions.resize · member
30
30
 
31
- Whether the textarea may be resized by the user. Defaults to `"vertical"`. Ignored when `autoGrow` is enabled.
31
+ Whether the textarea may be resized by the user. Defaults to `"vertical"`,
32
+ or to `"none"` when a | suffix is given — the
33
+ resize grip and the inset both want the bottom-right corner. Ignored when
34
+ `autoGrow` is enabled.
32
35
 
33
36
  **Type:** `"none" | "vertical" | "horizontal" | "both"`
34
37
 
@@ -4,6 +4,10 @@ A combobox with type-ahead filtering. Supports single or multi-select (chips),
4
4
  optional free-text entry, and full keyboard control (arrows, enter, escape,
5
5
  backspace-to-remove). Implements the ARIA combobox/listbox pattern.
6
6
 
7
+ What you type is matched against the start of the label's words, a term at a
8
+ time and in any order — "pal se" finds "Palette search" — see
9
+ `matchWords`, or `AutocompleteOptions.match` to filter your own way.
10
+
7
11
  The suggestion list is portalled to `document.body`, so a dialog or a
8
12
  scrolling column can neither clip it nor grow a scrollbar around it. It hangs
9
13
  off whichever side of the field has the room, and follows it as things move.
package/skill/dialog.md CHANGED
@@ -5,8 +5,9 @@ that fades in and out. Returns a `Promise<void>` that resolves when the dialog
5
5
  closes. Lifecycle is also tied to the parent reactive scope — when that scope
6
6
  is cleaned up the dialog disappears and the promise resolves.
7
7
 
8
- Multiple dialogs stack correctly: each new pair (backdrop + dialog) has a
9
- higher z-index, while older dialogs are pushed behind their covering backdrop.
8
+ Multiple dialogs stack: each new pair (backdrop + dialog) gets a higher
9
+ z-index than the one it covers, while older dialogs are pushed behind their
10
+ covering backdrop.
10
11
 
11
12
  **Signature:** `(opts: DialogOptions) => Promise<void>`
12
13