diff --git a/scripts/docs-site/assets.mjs b/scripts/docs-site/assets.mjs index f39994e8c..99e232a27 100644 --- a/scripts/docs-site/assets.mjs +++ b/scripts/docs-site/assets.mjs @@ -8,7 +8,7 @@ export function siteCss() { .site-header{position:sticky;top:0;z-index:70;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.header-row,.tabs{max-width:1780px;margin:0 auto}.doc-shell{max-width:1780px;margin:0 auto}.header-row{height:62px;display:grid;grid-template-columns:minmax(340px,1fr) minmax(360px,430px) minmax(340px,1fr);gap:24px;align-items:center;padding:0 56px}.header-left{display:flex;align-items:center;gap:16px;min-width:0}.brand{display:inline-flex;align-items:center;flex:0 0 auto}.brand img{width:24px;height:24px;image-rendering:pixelated}.language-picker{position:relative;min-width:0}.language-trigger{height:36px;border:1px solid transparent;border-radius:999px;background:color-mix(in srgb,var(--paper) 62%,transparent);color:var(--ink);display:flex;align-items:center;gap:9px;max-width:190px;padding:0 12px 0 11px;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.02);transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease}.language-trigger:hover,.language-picker.open .language-trigger{background:linear-gradient(180deg,color-mix(in srgb,var(--brand) 22%,var(--paper) 78%),color-mix(in srgb,var(--soft) 74%,var(--paper) 26%));border-color:color-mix(in srgb,var(--brand) 46%,var(--line-strong));color:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 13%,transparent),0 10px 30px rgba(0,0,0,.20),inset 0 1px 0 rgba(255,255,255,.04)}.language-trigger:focus-visible{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 28%,transparent),0 10px 30px rgba(0,0,0,.20)}.language-trigger:hover .language-chevron{color:var(--brand)}.locale-flag{width:21px;height:21px;border-radius:50%;display:inline-grid;place-items:center;font-size:17px;line-height:1;overflow:hidden;flex:0 0 auto}.language-current{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:var(--ink)}.language-chevron{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--muted);line-height:1;transition:transform .16s ease,color .16s ease}.language-chevron .icon{width:16px;height:16px}.language-picker.open .language-chevron{transform:rotate(180deg);color:var(--brand)}.language-menu{position:absolute;top:calc(100% + 10px);left:0;width:min(340px,calc(100vw - 32px));max-height:min(72vh,720px);overflow:auto;display:none;z-index:80;padding:10px;background:color-mix(in srgb,var(--bg) 92%,#000 8%);border:1px solid var(--line-strong);border-radius:22px;box-shadow:0 30px 90px rgba(0,0,0,.52),inset 0 1px 0 rgba(255,255,255,.03)}.language-picker.open .language-menu{display:block}.language-option{display:grid;grid-template-columns:30px minmax(0,1fr) 22px;align-items:center;gap:12px;padding:12px 16px;border-radius:16px;color:var(--ink);font-weight:800;font-size:18px;line-height:1.2}.language-option:hover{background:color-mix(in srgb,var(--paper-2) 84%,transparent);color:var(--ink)}.language-option.active{color:var(--brand)}.language-option.active:hover{background:color-mix(in srgb,var(--soft) 84%,transparent)}.language-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.language-check{opacity:0;color:var(--brand);font-size:19px;text-align:right}.language-option.active .language-check{opacity:1}.icon{display:block;width:18px;height:18px;min-width:18px;max-width:18px;flex:0 0 18px}.search-button{height:38px;border:1px solid var(--line-strong);border-radius:12px;background:color-mix(in srgb,var(--paper) 86%,transparent);color:var(--muted);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:0 9px 0 14px;cursor:pointer;text-align:left;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}.search-button:hover{border-color:color-mix(in srgb,var(--brand) 42%,var(--line));color:var(--text)}.search-button:hover .search-shortcut{border-color:color-mix(in srgb,var(--brand) 38%,var(--line-strong));color:var(--ink);background:color-mix(in srgb,var(--soft) 64%,var(--paper) 36%)}.search-label{min-width:0;font-size:14px;color:var(--muted)}.search-shortcut{display:inline-grid;place-items:center;justify-self:end;min-width:44px;height:28px;padding:0 9px;border:1px solid var(--line-strong);border-radius:10px;background:color-mix(in srgb,var(--paper-2) 82%,transparent);color:var(--text);font:760 13px/1 ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}.header-links{display:flex;align-items:center;justify-content:flex-end;gap:22px;color:var(--muted);font-size:14px;white-space:nowrap}.header-links a{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-weight:650}.header-links a:hover{color:var(--ink)}.header-links a .icon{width:16px;height:16px;color:var(--ink)}.header-links button{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:4px}.header-links button:hover{color:var(--ink)}.theme-toggle{display:inline-grid;place-items:center;width:28px;height:28px}.theme-toggle .icon{width:18px;height:18px}.nav-toggle{display:none;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:8px;padding:7px 10px}.sidebar-close{display:none} .theme-toggle-icon{display:none;place-items:center}:root[data-theme="dark"] .theme-toggle-icon-dark,:root[data-theme="light"] .theme-toggle-icon-light{display:grid} .tabs{position:relative;display:flex;align-items:center;gap:32px;min-height:58px;padding:0 56px;overflow-x:auto;white-space:nowrap}.tab-link{position:relative;color:var(--muted);font-weight:700;font-size:14px;padding:17px 0 18px;transition:color .18s ease}.tab-link:hover{color:var(--ink)}.tab-link.active{color:var(--ink)}.tab-underline{position:absolute;left:0;bottom:0;height:2px;width:var(--tu-w,0);transform:translate3d(var(--tu-x,0),0,0);background:var(--brand);border-radius:2px;pointer-events:none;opacity:0;will-change:transform,width;transition:transform .28s cubic-bezier(.4,0,.2,1),width .28s cubic-bezier(.4,0,.2,1),opacity .18s ease}.tabs.is-ready .tab-underline{opacity:1}.tab-underline.no-transition{transition:none}@media(prefers-reduced-motion:reduce){.tab-underline{transition:opacity .18s ease}} -.doc-shell{display:grid;grid-template-columns:340px minmax(0,1fr);gap:72px;padding:38px 56px 90px}.sidebar{position:sticky;top:148px;align-self:start;max-height:calc(100vh - 172px);overflow:auto;padding:0 6px 36px 0;scrollbar-gutter:stable;overscroll-behavior:contain}.nav-section{margin:0 0 33px}.nav-section h2{font:750 13px/1.2 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);letter-spacing:0;margin:0 0 14px}.nav-link{display:block;color:var(--muted);border-radius:9px;padding:7px 14px;margin:2px 0;font-size:14px;line-height:1.48}.nav-link:hover{color:var(--ink);background:color-mix(in srgb,var(--paper) 68%,transparent)}.nav-link.active{background:var(--soft);color:var(--brand);font-weight:730}.nav-nested{padding-left:10px;border-left:1px solid var(--line);margin:9px 0 0 6px}.nav-nested h2{font-size:12px;color:var(--muted);margin:0 0 5px;text-transform:none} +.doc-shell{display:grid;grid-template-columns:340px minmax(0,1fr);gap:72px;padding:38px 56px 90px}.sidebar{position:sticky;top:148px;align-self:start;max-height:calc(100vh - 172px);overflow:auto;padding:0 6px 64px 0;scrollbar-gutter:stable;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 42%,transparent) transparent}.sidebar::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 34%,transparent);background-clip:content-box;border:2px solid transparent;border-radius:999px}.sidebar:hover::-webkit-scrollbar-thumb{background-color:color-mix(in srgb,var(--muted) 56%,transparent)}.sidebar.has-overflow{--sidebar-fade-top:0px;--sidebar-fade-bottom:0px;mask-image:linear-gradient(to bottom,transparent 0,#000 var(--sidebar-fade-top),#000 calc(100% - var(--sidebar-fade-bottom)),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--sidebar-fade-top),#000 calc(100% - var(--sidebar-fade-bottom)),transparent 100%)}.sidebar.can-scroll-up{--sidebar-fade-top:18px}.sidebar.can-scroll-down{--sidebar-fade-bottom:30px}.nav-section{margin:0 0 33px}.nav-section h2{font:750 13px/1.2 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);letter-spacing:0;margin:0 0 14px}.nav-link{display:block;color:var(--muted);border-radius:9px;padding:7px 14px;margin:2px 0;font-size:14px;line-height:1.48}.nav-link:hover{color:var(--ink);background:color-mix(in srgb,var(--paper) 68%,transparent)}.nav-link.active{background:var(--soft);color:var(--brand);font-weight:730}.nav-nested{padding-left:10px;border-left:1px solid var(--line);margin:9px 0 0 6px}.nav-nested h2{font-size:12px;color:var(--muted);margin:0 0 5px;text-transform:none} .main{min-width:0;display:grid;grid-template-columns:minmax(0,760px) 250px;gap:76px;align-items:start}.article{min-width:0}.article-header{margin:0 0 36px}.article-kicker{color:var(--brand);font-weight:780;font-size:13px;margin:0 0 8px}.article h1{font:740 28px/1.12 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:0;color:var(--ink);margin:0}.doc{font-size:14px}.doc>h1:first-child{display:none}.doc h2{font:740 23px/1.22 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);margin:3.0em 0 .65em}.doc h3{font:700 17px/1.28 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);margin:1.8em 0 .45em}.doc h4{font:700 14px/1.35 ui-sans-serif,system-ui,sans-serif;color:var(--ink);margin:1.4em 0 .35em}.doc [tabindex="-1"]:focus{outline:0}.doc p,.doc ul,.doc ol,.doc blockquote,.doc table{margin-top:0;margin-bottom:1.12em}.doc ul,.doc ol{padding-left:1.35rem}.doc li{margin:.24em 0}.doc strong{color:var(--ink);font-weight:800}.doc :where(p,li,td,blockquote) a:not([class]){color:var(--brand);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.doc :where(p,li,td,blockquote) a:not([class]):hover{color:var(--ink)}.doc code{background:var(--code-inline);border:1px solid var(--code-border);border-radius:5px;padding:.08em .36em;font-size:.86em;color:var(--code-text);box-decoration-break:clone}.doc kbd{display:inline-grid;place-items:center;min-width:1.65em;height:1.65em;margin:0 .08em;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:5px;background:var(--paper);color:var(--ink);font:760 .78em/1 ui-monospace,SFMono-Regular,Menlo,monospace}.doc pre{position:relative;overflow:auto;background:var(--code-block);color:var(--code-text);border-radius:9px;padding:12px 14px;border:1px solid var(--code-border);box-shadow:var(--code-shadow)}.doc pre code{background:transparent;border:0;color:inherit;padding:0}.doc pre .tok-comment,.doc pre .hljs-comment,.doc pre .hljs-quote{color:var(--tok-comment)}.doc pre .tok-command,.doc pre .hljs-title,.doc pre .hljs-section,.doc pre .hljs-selector-tag{color:var(--tok-command);font-weight:750}.doc pre .tok-option,.doc pre .tok-keyword,.doc pre .hljs-keyword,.doc pre .hljs-built_in,.doc pre .hljs-type{color:var(--tok-option)}.doc pre .tok-string,.doc pre .hljs-string,.doc pre .hljs-regexp{color:var(--tok-string)}.doc pre .tok-var,.doc pre .tok-literal,.doc pre .hljs-variable,.doc pre .hljs-template-variable,.doc pre .hljs-symbol{color:var(--tok-literal)}.doc pre .tok-key,.doc pre .hljs-attr,.doc pre .hljs-attribute,.doc pre .hljs-name{color:var(--tok-key)}.doc pre .tok-number,.doc pre .hljs-number,.doc pre .hljs-literal{color:var(--tok-number)}.doc pre .tok-punct,.doc pre .hljs-punctuation,.doc pre .hljs-meta{color:var(--tok-punct)}.doc pre .hljs-deletion{color:#fca5a5}.doc pre .hljs-addition{color:#7dd3a8}.doc blockquote{border-left:3px solid var(--line-strong);padding-left:24px;color:var(--text);font-style:italic}.doc table{width:100%;border-collapse:collapse;font-size:13px}.doc th,.doc td{border-bottom:1px solid var(--line);padding:9px;text-align:left;vertical-align:top}.doc th{color:var(--ink);background:var(--paper);font-weight:760}.doc p[align="center"]{text-align:center}.doc p[align="center"] img{margin:0 auto}.heading-anchor{position:relative;display:inline-grid;place-items:center;width:24px;height:24px;margin-left:7px;padding:0;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--muted);vertical-align:-1px;opacity:0;cursor:pointer;transition:opacity .15s ease,background .15s ease,border-color .15s ease,color .15s ease}.doc :is(h1,h2,h3,h4,h5,h6):hover .heading-anchor,.heading-anchor:focus-visible,.heading-anchor[data-copy-state]{opacity:1}.heading-anchor:hover,.heading-anchor:focus-visible{border-color:color-mix(in srgb,var(--brand) 34%,var(--line-strong));background:color-mix(in srgb,var(--soft) 46%,transparent);color:var(--ink);outline:0}.heading-anchor[data-copy-state="copied"]{color:var(--brand)}.heading-anchor[data-copy-state="failed"]{color:#fca5a5}.heading-anchor .heading-anchor-icon{grid-area:1/1;display:block;width:15px;height:15px;stroke-width:2.15}.heading-anchor .heading-anchor-check{display:none}.heading-anchor[data-copy-state="copied"] .heading-anchor-link,.heading-anchor[data-copy-state="failed"] .heading-anchor-link{display:none}.heading-anchor[data-copy-state="copied"] .heading-anchor-check{display:block}.heading-anchor[data-copy-state="failed"]:after{content:"!";grid-area:1/1;font:900 13px/1 ui-sans-serif,system-ui,sans-serif} .toc{position:sticky;top:148px;align-self:start;max-height:calc(100vh - 172px);overflow:auto;color:var(--muted);font-size:14px}.toc h2{display:flex;align-items:center;gap:7px;font:700 13px/1.2 ui-sans-serif,system-ui,sans-serif;color:var(--text);margin:0 0 14px}.toc h2:before{content:"≡";font-size:14px;color:var(--text)}.toc a{display:block;color:var(--muted);line-height:1.42;padding:7px 0}.toc a:hover{color:var(--ink)}.toc a.active{color:var(--brand);font-weight:750}.toc-l3{padding-left:12px!important} .oc-card-grid,.oc-card-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:28px 0}.oc-card-grid.oc-card-cols-1{grid-template-columns:1fr}.oc-card-grid.oc-card-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.oc-card-grid.oc-card-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.oc-card{display:block;min-height:136px;border:1px solid var(--line-strong);background:transparent;border-radius:8px;padding:21px 23px;color:var(--text);transition:border-color .16s ease,background .16s ease}.oc-card:hover,.oc-card:focus-visible{border-color:var(--brand);background:color-mix(in srgb,var(--soft) 34%,transparent);color:var(--text);outline:0}.oc-card strong{display:block;color:var(--ink);font:750 16px/1.3 ui-sans-serif,system-ui,sans-serif;margin:18px 0 8px}.oc-card p{margin:0;color:var(--muted);line-height:1.55}.oc-card-icon{display:block;width:24px;height:24px;color:var(--brand);stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round} @@ -22,7 +22,7 @@ export function siteCss() { .docs-chat{top:auto;right:18px;bottom:18px;width:min(420px,calc(100vw - 36px));height:min(680px,calc(100vh - 36px));transition:width .24s cubic-bezier(.23,1,.32,1),height .24s cubic-bezier(.23,1,.32,1)}.docs-chat-launcher{right:0;bottom:0}.docs-chat.expanded{width:min(760px,calc(100vw - 36px));height:min(860px,calc(100vh - 36px))}.docs-chat.open{pointer-events:auto}.docs-chat:not(.open):not(.closing){right:18px!important}.docs-chat.open .docs-chat-launcher,.docs-chat.closing .docs-chat-launcher{display:flex;opacity:0;visibility:hidden;pointer-events:none}.docs-chat-panel{display:grid;opacity:0;transform:translateY(10px) scale(.985);transform-origin:bottom right;pointer-events:none;transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .16s ease}.docs-chat.open .docs-chat-panel{display:grid;opacity:1;transform:none;pointer-events:auto}.docs-chat-maximize[aria-pressed="true"]{border-color:color-mix(in srgb,var(--brand) 44%,var(--line-strong));background:color-mix(in srgb,var(--soft) 68%,transparent);color:var(--ink)}.docs-chat-maximize .icon{transition:none}@media(prefers-reduced-motion:reduce){.docs-chat,.docs-chat-panel{transition:none}} .docs-chat-panel{grid-template-rows:auto auto minmax(0,1fr) auto;inline-size:100%;min-width:0;max-width:100%;background:var(--bg);border:1px solid var(--line-strong);border-radius:16px;box-shadow:0 22px 70px rgba(0,0,0,.42);overflow:hidden}.docs-chat-panel>*{min-width:0;max-width:100%}.docs-chat-head{grid-row:1;min-height:58px;overflow:hidden;padding:10px 14px;background:var(--bg);border-bottom:1px solid var(--line);cursor:grab;touch-action:none;user-select:none}.docs-chat.dragging .docs-chat-head{cursor:grabbing}.docs-chat-title{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0}.docs-chat-mark{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;color:var(--brand);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--brand) 35%,transparent))}.docs-chat-mark .icon{width:25px;height:25px;stroke-width:1.8}.docs-chat-head h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 17px/1.05 ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;letter-spacing:.04em}.docs-chat-actions{flex:0 0 auto;min-width:0;gap:6px}.docs-chat-icon{width:29px;height:29px;border-radius:10px;color:color-mix(in srgb,var(--muted) 82%,transparent)}.docs-chat-icon[hidden]{display:none}.docs-chat-icon .icon{width:17px;height:17px}.docs-chat-copy[data-copy-state] .icon{display:none}.docs-chat-copy[data-copy-state]:before{font:900 15px/1 ui-sans-serif,system-ui,sans-serif}.docs-chat-copy[data-copy-state="copied"]:before{content:"✓"}.docs-chat-copy[data-copy-state="failed"]:before{content:"!"}.docs-chat-minimize{font-size:27px;font-weight:320}.docs-chat-log{grid-row:3;min-width:0;overflow-x:hidden;padding:24px 22px 18px;gap:12px}.docs-chat-message{max-width:min(86%,calc(100% - 28px));min-width:0;overflow-wrap:anywhere;word-break:break-word}.docs-chat-message.user{margin-right:0}.docs-chat-code{max-width:100%}.docs-chat-empty{max-width:300px;margin:0 auto;color:color-mix(in srgb,var(--muted) 72%,transparent);text-align:center;font:500 15px/1.45 ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;letter-spacing:.03em}.docs-chat-form{grid-row:4;position:relative;display:block;width:100%;min-width:0;max-width:100%;overflow:hidden;padding:16px 22px 22px;border-top:0;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--bg) 96%,#000 4%) 22%)}.docs-chat:not([data-chat-auth-state="ready"]) .docs-chat-form{display:none}.docs-chat-form textarea{display:block;inline-size:100%;max-width:100%;min-width:0;min-height:118px;max-height:158px;border-radius:22px;padding:20px 66px 42px 20px;background:var(--bg);font-size:16px;line-height:1.5;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}.docs-chat-form textarea:focus{outline:0;border-color:var(--brand);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand) 48%,transparent),inset 0 0 0 4px color-mix(in srgb,var(--brand) 12%,transparent),inset 0 1px 0 rgba(255,255,255,.03)}.docs-chat-attach{position:absolute;left:40px;bottom:38px;display:grid;place-items:center;width:28px;height:28px;color:var(--muted);pointer-events:none}.docs-chat-attach .icon{width:17px;height:17px}.docs-chat-form button{position:absolute;right:34px;bottom:34px;width:38px;height:38px;border-radius:999px}.docs-chat-auth{grid-row:4;align-self:end;border-top:1px solid var(--line);border-bottom:0;background:var(--bg);padding:16px 22px 22px}.docs-chat-auth-card{border-radius:16px} .oc-chart-mark,.oc-chart-donut-key{position:relative}.oc-chart-mark:focus-visible,.oc-chart-line-svg circle:focus-visible,.oc-chart-donut-segment:focus-visible,.oc-chart-donut-key:focus-visible{outline:2px solid color-mix(in srgb,var(--brand) 58%,transparent);outline-offset:3px}.oc-chart-mark[data-tip]:hover:after,.oc-chart-mark[data-tip]:focus:after,.oc-chart-donut-key[data-tip]:hover:after,.oc-chart-donut-key[data-tip]:focus:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%);z-index:30;width:max-content;max-width:min(260px,calc(100vw - 40px));padding:7px 9px;border:1px solid var(--tooltip-border);border-radius:7px;background:var(--tooltip-bg);color:var(--tooltip-text);font:760 12px/1.25 ui-sans-serif,system-ui,sans-serif;box-shadow:var(--shadow);pointer-events:none}.oc-chart-mark[data-tip]:hover:before,.oc-chart-mark[data-tip]:focus:before,.oc-chart-donut-key[data-tip]:hover:before,.oc-chart-donut-key[data-tip]:focus:before{content:"";position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%) rotate(45deg);z-index:31;width:8px;height:8px;background:var(--tooltip-bg);pointer-events:none}.oc-chart-area-fill{fill:color-mix(in srgb,var(--brand) 18%,transparent)}.oc-chart-donut-wrap{display:grid;grid-template-columns:minmax(170px,220px) minmax(0,1fr);gap:18px;align-items:center}.oc-chart-donut-svg{display:block;width:100%;height:auto}.oc-chart-donut-bg{fill:none;stroke:color-mix(in srgb,var(--line-strong) 72%,transparent);stroke-width:28}.oc-chart-donut-segment{fill:none;stroke:var(--oc-chart-tone);stroke-width:28;stroke-linecap:butt;stroke-dasharray:var(--oc-chart-share) 100;stroke-dashoffset:calc(var(--oc-chart-offset) * -1);transition:stroke-width .16s ease,opacity .16s ease}.oc-chart-donut-segment:hover,.oc-chart-donut-segment:focus{stroke-width:32;opacity:.92}.oc-chart-donut-svg text:first-of-type{fill:var(--ink);font:780 24px/1 ui-sans-serif,system-ui,sans-serif}.oc-chart-donut-svg text:last-of-type{fill:var(--muted);font:760 11px/1 ui-sans-serif,system-ui,sans-serif;text-transform:uppercase}.oc-chart-donut-legend{display:grid;gap:8px}.oc-chart-donut-key{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:8px;align-items:center;color:var(--text);font-size:12px}.oc-chart-donut-key i{width:10px;height:10px;border-radius:2px;background:var(--oc-chart-tone)}.oc-chart-donut-key span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oc-chart-donut-key strong{color:var(--ink);font:760 12px/1 ui-sans-serif,system-ui,sans-serif}.oc-callout{--callout-surface:var(--paper);background:var(--callout-surface);border-color:var(--line-strong);border-left-color:var(--callout-accent);box-shadow:none}.oc-callout strong:before{background:var(--paper)}:root[data-theme="light"] .oc-callout{background:var(--paper);border-color:var(--line-strong);border-left-color:var(--callout-accent)}:root[data-theme="light"] .oc-callout strong:before{background:var(--paper);box-shadow:0 0 0 3px var(--paper)} -@media(max-width:1120px){.header-row{grid-template-columns:auto 1fr auto;padding:0 24px}.tabs{padding:0 24px}.header-links a{display:none}.oc-card-grid.oc-card-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.doc-shell{grid-template-columns:220px minmax(0,1fr);gap:34px;padding-left:24px;padding-right:24px}.main{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media(max-width:820px){html{scroll-padding-top:118px}.site-header{position:sticky}.header-row{height:auto;min-height:0;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"menu brand actions" "search search search";align-items:center;padding:10px 14px 12px;gap:10px 12px}.header-left{grid-area:brand;justify-self:center;gap:10px;min-width:0}.brand img{width:22px;height:22px}.language-trigger{max-width:48vw;height:34px}.language-current{font-size:13px}.language-menu{left:50%;transform:translateX(-50%);width:min(390px,calc(100vw - 28px));max-height:min(72vh,620px)}.search-button{grid-area:search;width:100%;height:40px}.header-links{grid-area:actions;justify-self:end;gap:0}.theme-toggle{width:40px;height:40px;border:1px solid var(--line-strong)!important;border-radius:10px;background:var(--paper)!important}.nav-toggle{grid-area:menu;display:inline-flex;align-items:center;justify-content:center;justify-self:start;min-width:72px;height:40px;padding:0 12px}.tabs{display:none}.doc-shell{display:block;padding:26px 20px 86px}body.nav-open{overflow:hidden}body.nav-open:before{content:"";position:fixed;inset:0;z-index:75;background:rgba(0,0,0,.58);backdrop-filter:blur(2px)}.sidebar{position:fixed;inset:0 auto 0 0;width:min(360px,calc(100vw - 28px));z-index:90;transform:translateX(calc(-100% - 1px));transition:transform .2s ease;background:var(--bg);border-right:1px solid var(--line);padding:18px 18px 28px;max-height:none;box-shadow:24px 0 80px rgba(0,0,0,.42)}.sidebar.open{transform:translateX(0)}.sidebar-close{display:flex;align-items:center;justify-content:center;width:100%;height:40px;margin:0 0 18px;border:1px solid var(--line-strong);border-radius:8px;background:var(--paper);color:var(--ink);font:760 13px/1 ui-sans-serif,system-ui,sans-serif}.breadcrumbs{white-space:normal}.page-tools,.page-feedback{flex-wrap:wrap}.article h1{font-size:28px}.oc-card-grid,.oc-card-group,.oc-card-grid.oc-card-cols-3,.oc-card-grid.oc-card-cols-4,.oc-tile-group,.oc-cta-grid,.oc-stat-grid{grid-template-columns:1fr}.oc-steps{margin-left:18px}.oc-step{padding-left:30px}.oc-tabs,.oc-code-group{margin-left:0;margin-right:0}.oc-tab{padding:18px}.doc pre{white-space:pre-wrap;overflow-wrap:anywhere}.doc pre code{white-space:pre-wrap;min-width:0}.doc .code-line{white-space:pre-wrap;overflow-wrap:anywhere}.oc-code-tabs{overflow-x:auto}.oc-code-tab{flex:0 0 auto}.next{text-align:left}.page-nav{grid-template-columns:1fr}.oc-chart-donut-wrap{grid-template-columns:1fr}.docs-chat,.docs-chat.expanded{right:14px;bottom:14px;width:min(390px,calc(100vw - 28px));height:min(680px,calc(100vh - 28px))}.docs-chat:not(.open):not(.closing){right:14px!important}.docs-chat-launcher{right:0;bottom:0;height:44px;padding:0 14px}.docs-chat-head{min-height:58px;padding:12px}.docs-chat-panel{box-shadow:0 18px 54px rgba(0,0,0,.42)}} +@media(max-width:1120px){.header-row{grid-template-columns:auto 1fr auto;padding:0 24px}.tabs{padding:0 24px}.header-links a{display:none}.oc-card-grid.oc-card-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.doc-shell{grid-template-columns:220px minmax(0,1fr);gap:34px;padding-left:24px;padding-right:24px}.sidebar{top:148px;max-height:calc(100vh - 172px);padding-right:4px}.nav-section{margin-bottom:26px}.nav-link{padding:6px 10px;font-size:13px}.main{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media(max-width:820px){html{scroll-padding-top:118px}.site-header{position:sticky}.header-row{height:auto;min-height:0;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"menu brand actions" "search search search";align-items:center;padding:10px 14px 12px;gap:10px 12px}.header-left{grid-area:brand;justify-self:center;gap:10px;min-width:0}.brand img{width:22px;height:22px}.language-trigger{max-width:48vw;height:34px}.language-current{font-size:13px}.language-menu{left:50%;transform:translateX(-50%);width:min(390px,calc(100vw - 28px));max-height:min(72vh,620px)}.search-button{grid-area:search;width:100%;height:40px}.header-links{grid-area:actions;justify-self:end;gap:0}.theme-toggle{width:40px;height:40px;border:1px solid var(--line-strong)!important;border-radius:10px;background:var(--paper)!important}.nav-toggle{grid-area:menu;display:inline-flex;align-items:center;justify-content:center;justify-self:start;min-width:72px;height:40px;padding:0 12px}.tabs{display:none}.doc-shell{display:block;padding:26px 20px 86px}body.nav-open{overflow:hidden}body.nav-open:before{content:"";position:fixed;inset:0;z-index:75;background:rgba(0,0,0,.58);backdrop-filter:blur(2px)}.sidebar{position:fixed;inset:0 auto 0 0;width:min(360px,calc(100vw - 28px));z-index:90;transform:translateX(calc(-100% - 1px));transition:transform .2s ease;background:var(--bg);border-right:1px solid var(--line);padding:18px 18px 28px;max-height:none;box-shadow:24px 0 80px rgba(0,0,0,.42);mask-image:none;-webkit-mask-image:none}.sidebar.open{transform:translateX(0)}.sidebar-close{display:flex;align-items:center;justify-content:center;width:100%;height:40px;margin:0 0 18px;border:1px solid var(--line-strong);border-radius:8px;background:var(--paper);color:var(--ink);font:760 13px/1 ui-sans-serif,system-ui,sans-serif}.breadcrumbs{white-space:normal}.page-tools,.page-feedback{flex-wrap:wrap}.article h1{font-size:28px}.oc-card-grid,.oc-card-group,.oc-card-grid.oc-card-cols-3,.oc-card-grid.oc-card-cols-4,.oc-tile-group,.oc-cta-grid,.oc-stat-grid{grid-template-columns:1fr}.oc-steps{margin-left:18px}.oc-step{padding-left:30px}.oc-tabs,.oc-code-group{margin-left:0;margin-right:0}.oc-tab{padding:18px}.doc pre{white-space:pre-wrap;overflow-wrap:anywhere}.doc pre code{white-space:pre-wrap;min-width:0}.doc .code-line{white-space:pre-wrap;overflow-wrap:anywhere}.oc-code-tabs{overflow-x:auto}.oc-code-tab{flex:0 0 auto}.next{text-align:left}.page-nav{grid-template-columns:1fr}.oc-chart-donut-wrap{grid-template-columns:1fr}.docs-chat,.docs-chat.expanded{right:14px;bottom:14px;width:min(390px,calc(100vw - 28px));height:min(680px,calc(100vh - 28px))}.docs-chat:not(.open):not(.closing){right:14px!important}.docs-chat-launcher{right:0;bottom:0;height:44px;padding:0 14px}.docs-chat-head{min-height:58px;padding:12px}.docs-chat-panel{box-shadow:0 18px 54px rgba(0,0,0,.42)}} @media(max-width:1120px){.oc-card-grid.oc-card-cols-4,.oc-card-group.oc-card-cols-4{--oc-card-columns:2;grid-template-columns:repeat(var(--oc-card-columns),minmax(0,1fr))}}@media(max-width:820px){.oc-card-grid,.oc-card-group,.oc-card-grid.oc-card-cols-1,.oc-card-group.oc-card-cols-1,.oc-card-grid.oc-card-cols-2,.oc-card-group.oc-card-cols-2,.oc-card-grid.oc-card-cols-3,.oc-card-group.oc-card-cols-3,.oc-card-grid.oc-card-cols-4,.oc-card-group.oc-card-cols-4{--oc-card-columns:1;grid-template-columns:1fr}} `; } @@ -37,7 +37,9 @@ function toggleLanguage(){const picker=document.querySelector("[data-language-pi function isPlainLeftClick(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey} function isDocsPage(url){if(url.origin!==location.origin)return false;const base=window.OPENCLAW_DOCS_BASE||"";if(base&&url.pathname!==base&&!url.pathname.startsWith(base+"/"))return false;if(/\\/(?:assets|pagefind)\\//.test(url.pathname))return false;return !/\\.[a-z0-9]{2,8}$/i.test(url.pathname)} function sameSidebarLinks(a,b){const ah=[...a.querySelectorAll("a")].map(x=>x.getAttribute("href"));const bh=[...b.querySelectorAll("a")].map(x=>x.getAttribute("href"));return ah.length===bh.length&&ah.every((href,i)=>href===bh[i])} -function syncSidebar(nextDoc){const current=document.querySelector(".sidebar");const incoming=nextDoc.querySelector(".sidebar");if(!current||!incoming)return;const scroll=current.scrollTop;if(sameSidebarLinks(current,incoming)){const nextLinks=[...incoming.querySelectorAll("a")];current.querySelectorAll("a").forEach((link,i)=>link.className=nextLinks[i]?.className||link.className);current.scrollTop=scroll}else{current.replaceWith(incoming)}} +function updateSidebarFade(){const sidebar=document.querySelector(".sidebar");if(!sidebar)return;const overflow=sidebar.scrollHeight>sidebar.clientHeight+1;const canUp=overflow&&sidebar.scrollTop>1;const canDown=overflow&&sidebar.scrollTop+sidebar.clientHeightlink.className=nextLinks[i]?.className||link.className);current.scrollTop=scroll}else{current.replaceWith(incoming)}scrollActiveNavLink()} function setNavOpen(open){document.body.classList.toggle("nav-open",open);const sidebar=document.querySelector(".sidebar");const toggle=document.querySelector("[data-nav-toggle]");sidebar?.classList.toggle("open",open);toggle?.setAttribute("aria-expanded",String(open))} function swap(selector,nextDoc){const current=document.querySelector(selector);const incoming=nextDoc.querySelector(selector);if(current&&incoming)current.replaceWith(incoming)} function placeTabUnderline(animate){const tabs=document.querySelector(".tabs");if(!tabs)return;const underline=tabs.querySelector(".tab-underline");const active=tabs.querySelector(".tab-link.active");if(!underline)return;if(!active){tabs.classList.remove("is-ready");underline.style.setProperty("--tu-w","0px");return}if(!animate)underline.classList.add("no-transition");underline.style.setProperty("--tu-x",active.offsetLeft+"px");underline.style.setProperty("--tu-w",active.offsetWidth+"px");tabs.classList.add("is-ready");if(!animate)requestAnimationFrame(()=>requestAnimationFrame(()=>underline.classList.remove("no-transition")))} @@ -107,10 +109,12 @@ form.addEventListener("submit",async e=>{e.preventDefault();if(authState!=="read initChat(); initCodeGroups(); initMermaid(); +scrollActiveNavLink(); document.addEventListener("click",async e=>{const pageActions=e.target.closest(".page-actions");document.querySelectorAll(".page-actions-more[open]").forEach(menu=>{if(!pageActions?.contains(menu))menu.removeAttribute("open")});if(handleDocsControlClick(e))return;const theme=e.target.closest("[data-theme-toggle]");if(theme){const next=root.dataset.theme==="dark"?"light":"dark";root.dataset.theme=next;localStorage.setItem("theme",next);initMermaid(true);return}const trigger=e.target.closest("[data-language-trigger]");if(trigger){e.stopPropagation();toggleLanguage();return}const picker=document.querySelector("[data-language-picker]");if(picker&&!picker.contains(e.target))closeLanguage();const navToggle=e.target.closest("[data-nav-toggle]");if(navToggle){setNavOpen(!document.body.classList.contains("nav-open"));return}if(e.target.closest("[data-nav-close]")){setNavOpen(false);return}if(document.body.classList.contains("nav-open")&&!e.target.closest(".sidebar")){setNavOpen(false);return}if(e.target.closest("[data-search-open]")){openSearch();return}if(e.target.closest("[data-search-close]")){modal?.classList.remove("open");return}const link=e.target.closest("a[href]");if(!link)return;if(link.closest("[data-language-picker]"))return;if(link.target||link.download||!isPlainLeftClick(e))return;const url=new URL(link.href,location.href);if(url.pathname===location.pathname&&url.search===location.search&&url.hash)return;if(!isDocsPage(url))return;e.preventDefault();modal?.classList.remove("open");const ok=await navigateTo(url);if(!ok)location.href=url.href}); modal?.addEventListener("click",e=>{if(e.target===modal)modal.classList.remove("open")});addEventListener("keydown",e=>{if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"){e.preventDefault();openSearch()}if(e.key==="Escape"){modal?.classList.remove("open");document.querySelectorAll(".page-actions-more[open]").forEach(menu=>menu.removeAttribute("open"));closeLanguage();setNavOpen(false)}}); addEventListener("popstate",()=>navigateTo(new URL(location.href),true)); -let tabResizeRaf=0;addEventListener("resize",()=>{cancelAnimationFrame(tabResizeRaf);tabResizeRaf=requestAnimationFrame(()=>placeTabUnderline(false))}); +document.addEventListener("scroll",e=>{if(e.target?.classList?.contains("sidebar"))updateSidebarFade()},{capture:true,passive:true}); +let tabResizeRaf=0;addEventListener("resize",()=>{cancelAnimationFrame(tabResizeRaf);tabResizeRaf=requestAnimationFrame(()=>{placeTabUnderline(false);updateSidebarFade()})}); if(document.fonts?.ready)document.fonts.ready.then(()=>placeTabUnderline(false)); requestAnimationFrame(()=>placeTabUnderline(false)); let seq=0;let searchTimer=0;const searchAliases={install:"getting started onboarding setup curl node",setup:"install onboarding getting started",telegram:"channels telegram groups tdlib pairing",slack:"channels slack app bot socket mode",gateway:"gateway auth heartbeat remote health restart",plugin:"plugins capabilities tools skills",plugins:"plugins capabilities tools skills",config:"configuration json5 env defaults",model:"models providers openai anthropic google"};function expandSearchQuery(q){const extra=q.toLowerCase().split(/\\s+/).flatMap(word=>searchAliases[word]?[searchAliases[word]]:[]);return [q,...extra].join(" ").trim()}async function runSearch(q,id){if(!results)return;if(!results.innerHTML.trim())results.innerHTML='

Searching...

';results.classList.add("is-loading");const pf=await (pagefindReady ||= import(withBase("/pagefind/pagefind.js")).then(m=>m.init?.().then?.(()=>m)??m));if(id!==seq)return;const search=await pf.search(q);const items=await Promise.all(search.results.slice(0,12).map(r=>r.data()));if(id!==seq)return;results.classList.remove("is-loading");results.innerHTML=items.length?items.map(item=>''+item.meta.title+'

'+item.excerpt+'

').join(""):'

No results. Try install, telegram, gateway, or plugins.

'} diff --git a/scripts/docs-site/smoke.mjs b/scripts/docs-site/smoke.mjs index 27ab2ebf1..b575b6fbe 100644 --- a/scripts/docs-site/smoke.mjs +++ b/scripts/docs-site/smoke.mjs @@ -252,9 +252,14 @@ if (!fs.existsSync(path.join(site, "assets/mermaid.esm.min.mjs")) || !fs.existsSync(path.join(site, "assets/chunks/mermaid.esm.min"))) { throw new Error("assets: Mermaid runtime was not copied"); } -if (!/\.sidebar\{[^}]*padding:0 6px 36px 0;[^}]*scrollbar-gutter:stable/.test(siteCss)) { +if (!/\.sidebar\{[^}]*padding:0 6px 64px 0;[^}]*scrollbar-gutter:stable/.test(siteCss)) { throw new Error("assets: sidebar scroll-end padding is missing"); } +if (!/\.sidebar\{[^}]*scrollbar-width:thin;[^}]*scrollbar-color:/.test(siteCss) + || !/\.sidebar\.has-overflow\{[^}]*mask-image:linear-gradient/.test(siteCss) + || !/\.sidebar\.can-scroll-down\{--sidebar-fade-bottom:30px\}/.test(siteCss)) { + throw new Error("assets: sidebar overflow affordance is missing"); +} if (!/\.header-row,\.tabs\{max-width:1780px;margin:0 auto\}/.test(siteCss) || !/\.doc-shell\{max-width:1780px;margin:0 auto\}/.test(siteCss) || !/\.doc-shell\{display:grid;grid-template-columns:340px minmax\(0,1fr\);gap:72px;padding:38px 56px 90px\}/.test(siteCss)) { @@ -273,6 +278,12 @@ if (!/--bg:#0d0b0b;--paper:#111010;--paper-2:#151211;[^}]*--soft:#241915/.test(s if (!/function syncSidebar/.test(siteJs) || !/async function navigateTo/.test(siteJs)) { throw new Error("assets: docs PJAX navigation is missing"); } +if (!/function scrollActiveNavLink/.test(siteJs) + || !/active\.offsetTop-sidebar\.clientHeight\/2\+active\.offsetHeight\/2/.test(siteJs) + || !/Math\.max\(0,Math\.min\(max,target\)\)/.test(siteJs) + || !/scrollActiveNavLink\(\)/.test(siteJs.match(/function syncSidebar[^]+?function setNavOpen/)?.[0] ?? "")) { + throw new Error("assets: active sidebar link is not centered in view"); +} if (!/function setNavOpen/.test(siteJs) || !/body\.nav-open:before/.test(siteCss) || !/data-nav-close/.test(index)) { throw new Error("assets: mobile navigation drawer state is missing"); }