diff --git a/scripts/docs-site/assets.mjs b/scripts/docs-site/assets.mjs index f39994e8c..a16996900 100644 --- a/scripts/docs-site/assets.mjs +++ b/scripts/docs-site/assets.mjs @@ -17,6 +17,7 @@ export function siteCss() { .oc-steps{counter-reset:step;list-style:none;padding-left:0!important;margin:28px 0 32px 24px}.oc-step{counter-increment:step;border-left:2px solid var(--line);padding:0 0 24px 34px;position:relative}.oc-step:last-child{padding-bottom:0;border-image:linear-gradient(to bottom,var(--line) 0%,color-mix(in srgb,var(--line) 52%,transparent) 44%,transparent 92%) 1}.oc-step:before{content:counter(step);position:absolute;left:-13px;top:0;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--line-strong) 78%,var(--paper) 22%);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong);display:grid;place-items:center;font-size:12px;font-weight:800}.oc-step h3{margin-top:0}.oc-step>p:first-of-type{margin-top:.2em}.oc-step .oc-code{max-width:100%;margin:14px 0 0}.oc-callout{--callout-accent:var(--brand);--callout-surface:color-mix(in srgb,var(--paper) 86%,var(--callout-accent) 14%);position:relative;border:1px solid color-mix(in srgb,var(--line-strong) 74%,var(--callout-accent) 26%);border-left:3px solid var(--callout-accent);background:var(--callout-surface);border-radius:8px;padding:14px 16px 14px 42px;margin:20px 0;color:var(--text)}.oc-callout strong{display:block;color:var(--ink);font:760 14px/1.3 ui-sans-serif,system-ui,sans-serif;margin:0 0 4px}.oc-callout strong:before{content:"i";position:absolute;left:15px;top:15px;width:17px;height:17px;border:1px solid var(--callout-accent);border-radius:50%;display:grid;place-items:center;color:var(--callout-accent);font:800 11px/1 ui-sans-serif,system-ui,sans-serif}.oc-callout p:last-child,.oc-callout ul:last-child,.oc-callout ol:last-child{margin-bottom:0}.oc-callout-tip{--callout-accent:#48b49a}.oc-callout-tip strong:before{content:"?"}.oc-callout-info,.oc-callout-note{--callout-accent:#7aa7ff}.oc-callout-warning{--callout-accent:#d97706}.oc-callout-warning strong:before{content:"!"}.oc-callout-check{--callout-accent:#48b49a}.oc-callout-check strong:before{content:"✓"}.oc-callout-say{--callout-accent:#c084fc}.oc-callout-say strong:before{content:">"}.oc-code{margin:18px 0;border:1px solid var(--code-border);border-radius:10px;background:var(--code-block);box-shadow:var(--code-shadow);overflow:hidden}.oc-code figcaption{display:flex;align-items:center;min-height:34px;padding:6px 8px 6px 12px;border-bottom:1px solid var(--code-border);background:color-mix(in srgb,var(--paper-2) 42%,transparent);color:var(--muted);font:760 12px/1 ui-sans-serif,system-ui,sans-serif}.oc-code pre{margin:0;border:0;border-radius:0;box-shadow:none;background:transparent}.oc-tabs,.oc-code-group{border:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 78%,transparent);border-radius:8px;margin:20px 0 28px;overflow:hidden}.oc-code-tabs{display:flex;gap:2px;padding:6px 7px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper-2) 74%,transparent)}.oc-code-tab{border:0;border-radius:6px;background:transparent;color:var(--muted);padding:6px 9px;font:760 12px/1 ui-sans-serif,system-ui,sans-serif;cursor:pointer}.oc-code-tab:hover{color:var(--ink);background:color-mix(in srgb,var(--soft) 52%,transparent)}.oc-code-tab.active{color:var(--ink);background:var(--soft)}.oc-code-group .oc-code{display:none;margin:0;border:0;border-radius:0;box-shadow:none}.oc-code-group .oc-code.active{display:block}.oc-code-group .oc-code figcaption{display:none}.oc-tab{border-top:1px solid var(--line);padding:20px 24px}.oc-tab:first-child{border-top:0}.oc-tab h3{margin:0 0 12px;font-size:13px;color:var(--brand)}.oc-tab .oc-code{margin:0;max-width:100%}.oc-accordion-group{display:grid;gap:10px;margin:18px 0}.oc-accordion{border:1px solid var(--line-strong);background:var(--paper);border-radius:8px;margin:0;padding:0 13px}.oc-accordion summary{cursor:pointer;color:var(--ink);font-weight:750;padding:12px 0}.oc-accordion summary::marker{color:var(--brand)}.oc-param,.oc-frame{border:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 78%,transparent);border-radius:8px;padding:13px 15px;margin:12px 0}.oc-frame{padding:10px}.oc-frame figcaption{padding:2px 4px 10px;color:var(--muted);font-size:12px}.oc-frame p{margin:0}.oc-frame img{display:block;margin:0 auto;border-radius:6px}.oc-tooltip{position:relative;display:inline-flex;align-items:center;border-bottom:1px dotted color-mix(in srgb,var(--brand) 72%,var(--text));color:var(--ink);cursor:help}.oc-tooltip:focus{outline:2px solid color-mix(in srgb,var(--brand) 45%,transparent);outline-offset:3px;border-radius:4px}.oc-tooltip[data-tip]:hover:after,.oc-tooltip[data-tip]:focus:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);z-index:20;width:max-content;max-width:min(320px,calc(100vw - 40px));padding:8px 10px;border:1px solid var(--tooltip-border);border-radius:8px;background:var(--tooltip-bg);color:var(--tooltip-text);font:700 12px/1.35 ui-sans-serif,system-ui,sans-serif;box-shadow:var(--shadow)}.oc-param header{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.oc-param header code{background:var(--code-inline);border-color:var(--code-border);color:var(--ink)}.oc-param-type,.oc-param-default,.oc-param-required{border:1px solid var(--line-strong);border-radius:999px;background:color-mix(in srgb,var(--soft) 70%,transparent);padding:1px 7px;font-size:12px;color:var(--muted)}.oc-param-type{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 34%,var(--line-strong));background:color-mix(in srgb,var(--brand) 12%,var(--paper))}.oc-param-default{color:var(--text);background:color-mix(in srgb,var(--paper-2) 82%,transparent)}.oc-param-required{color:#ff8a5f;border-color:color-mix(in srgb,#ff8a5f 42%,var(--line-strong));background:color-mix(in srgb,#ff8a5f 10%,var(--paper))} .breadcrumbs{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;margin:0 0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumbs span{min-width:0;overflow:hidden;text-overflow:ellipsis}.breadcrumbs [aria-current="page"]{color:var(--text)}.page-status{display:flex;flex-wrap:wrap;gap:7px;margin:13px 0 0}.page-status-badge{display:inline-flex;align-items:center;min-height:24px;max-width:100%;border:1px solid var(--line-strong);border-radius:999px;background:color-mix(in srgb,var(--paper) 76%,transparent);color:var(--muted);padding:4px 9px;font:760 12px/1.25 ui-sans-serif,system-ui,sans-serif}.page-status-beta,.page-status-status{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 38%,var(--line-strong));background:color-mix(in srgb,var(--soft) 68%,transparent)}.page-status-deprecated{color:#d97706;border-color:color-mix(in srgb,#d97706 42%,var(--line-strong))}.page-tools{display:flex;align-items:center;gap:8px;margin-top:16px}.page-tools a,.page-tools button,.page-feedback button,.oc-prompt button{border:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 82%,transparent);color:var(--muted);border-radius:7px;padding:6px 9px;font:760 12px/1 ui-sans-serif,system-ui,sans-serif;cursor:pointer}.page-tools a:hover,.page-tools button:hover,.page-feedback button:hover,.oc-prompt button:hover{border-color:var(--brand);color:var(--ink)}.oc-code figcaption{justify-content:space-between;gap:12px}.oc-code figcaption .oc-code-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;letter-spacing:.08em}.oc-code figcaption button{position:relative;display:grid;place-items:center;flex:0 0 32px;width:32px;height:30px;padding:0;border:1px solid transparent;background:transparent;color:var(--muted);border-radius:8px;cursor:pointer}.oc-code figcaption button:before,.oc-code figcaption button:after{content:"";position:absolute;box-sizing:border-box;width:13px;height:13px;border:1.6px solid currentColor;border-radius:4px;background:color-mix(in srgb,var(--paper-2) 42%,var(--code-block) 58%)}.oc-code figcaption button:before{left:7px;top:6px;opacity:.72}.oc-code figcaption button:after{left:11px;top:10px}.oc-code figcaption button:hover{border-color:color-mix(in srgb,var(--brand) 32%,var(--line-strong));background:color-mix(in srgb,var(--soft) 46%,transparent);color:var(--ink)}.oc-code figcaption button[data-copy-state="copied"]{color:var(--brand)}.oc-code figcaption button[data-copy-state="copied"]:before{content:"✓";position:static;width:auto;height:auto;border:0;background:transparent;font:900 14px/1 ui-sans-serif,system-ui,sans-serif}.oc-code figcaption button[data-copy-state="copied"]:after,.oc-code figcaption button[data-copy-state="failed"]:after{content:none}.oc-code figcaption button[data-copy-state="failed"]{color:#fca5a5}.oc-code figcaption button[data-copy-state="failed"]:before{content:"!";position:static;width:auto;height:auto;border:0;background:transparent;font:900 14px/1 ui-sans-serif,system-ui,sans-serif}.doc pre code{display:block;min-width:max-content}.doc .oc-code pre code{white-space:pre}.doc .code-line,.oc-code .code-line{display:block;min-height:1.5em;line-height:1.5;padding:0 2px;border-left:2px solid transparent;white-space:pre}.doc .code-line:before{content:attr(data-line);display:none;width:2.4em;margin-right:1em;color:var(--muted);text-align:right;user-select:none}.doc .has-line-numbers .code-line:before{display:inline-block}.doc .code-line.is-highlighted{background:color-mix(in srgb,var(--brand) 14%,transparent);border-left-color:var(--brand)}.doc .code-line.is-dimmed{opacity:.46}.doc .code-line.is-added{background:color-mix(in srgb,#48b49a 13%,transparent);border-left-color:#48b49a}.doc .code-line.is-removed{background:color-mix(in srgb,#d97706 12%,transparent);border-left-color:#d97706}.doc .oc-code.is-wrapped pre,.doc .oc-code.is-wrapped code{white-space:pre-wrap;min-width:0}.doc .oc-code.is-wrapped .code-line{white-space:pre-wrap}.doc .oc-code.is-expandable pre{max-height:360px}.oc-badge{display:inline-flex;align-items:center;min-height:1.55em;padding:0 .5em;border:1px solid var(--line-strong);border-radius:999px;background:var(--soft);color:var(--ink);font:760 .76em/1 ui-sans-serif,system-ui,sans-serif;vertical-align:middle}.oc-badge-orange{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 38%,var(--line-strong))}.oc-badge-green{color:#48b49a;border-color:color-mix(in srgb,#48b49a 38%,var(--line-strong))}.oc-panel,.oc-prompt,.oc-mermaid{border:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 86%,transparent);border-radius:8px;margin:18px 0;padding:16px}.oc-panel>strong{display:block;color:var(--ink);font:760 14px/1.3 ui-sans-serif,system-ui,sans-serif;margin:0 0 8px}.oc-prompt header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.oc-prompt strong{color:var(--ink);font:760 14px/1.3 ui-sans-serif,system-ui,sans-serif}.oc-prompt p:last-child,.oc-panel p:last-child{margin-bottom:0}.oc-tile-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:10px;margin:18px 0}.oc-tile{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line-strong);border-radius:8px;padding:14px;color:var(--text);background:transparent}.oc-tile:hover{border-color:var(--brand);background:color-mix(in srgb,var(--soft) 28%,transparent)}.oc-tile strong{display:block;color:var(--ink);font:750 14px/1.3 ui-sans-serif,system-ui,sans-serif;margin:0 0 5px}.oc-tile p{margin:0;color:var(--muted);line-height:1.5}.oc-tile .oc-card-icon{flex:0 0 20px;width:20px;height:20px}.oc-mermaid{overflow:auto;display:grid;place-items:center;min-height:180px;padding:18px;color:var(--code-text);font:13px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.oc-mermaid svg{display:block;max-width:100%;height:auto}.oc-mermaid pre{width:100%;margin:0}.oc-mermaid.is-rendered{background:color-mix(in srgb,var(--paper) 70%,transparent)}.oc-mermaid.is-error{display:block;place-items:normal;border-color:color-mix(in srgb,#d97706 42%,var(--line-strong))}.page-feedback{display:flex;align-items:center;gap:9px;border-top:1px solid var(--line);margin-top:42px;padding-top:18px;color:var(--muted);font-size:13px}.page-feedback output{color:var(--brand);font-weight:760}.page-nav{display:grid;grid-template-columns:1fr 1fr;gap:14px;border-top:1px solid var(--line);margin-top:24px;padding-top:18px}.page-nav a{border:1px solid var(--line-strong);background:var(--paper);border-radius:10px;padding:13px;color:var(--text)}.page-nav a:hover{border-color:var(--brand)}.page-nav small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase}.next{text-align:right} .article-meta-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px}.article-meta-row .breadcrumbs{margin:0;min-width:0}.article-meta-row .page-tools{margin:0 0 0 auto}.page-actions{display:inline-flex;align-items:stretch;position:relative}.page-tools .page-actions-primary,.page-tools .page-actions-more summary{height:30px;min-height:30px;border:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 82%,transparent);color:var(--muted);font:760 12px/1 ui-sans-serif,system-ui,sans-serif;cursor:pointer}.page-tools .page-actions-primary{display:inline-flex;align-items:center;gap:7px;border-right:1px solid var(--line-strong);border-radius:7px 0 0 7px;margin-right:-1px;padding:0 9px}.page-tools .page-actions-primary .icon{width:15px;height:15px;min-width:15px}.page-tools .page-actions-more{position:relative}.page-tools .page-actions-more summary{display:grid;place-items:center;width:34px;border-radius:0 7px 7px 0;padding:0;list-style:none}.page-tools .page-actions-more summary::-webkit-details-marker{display:none}.page-tools .page-actions-more summary::marker{content:""}.page-tools .page-actions-primary:hover,.page-tools .page-actions-more[open] summary,.page-tools .page-actions-more summary:hover{border-color:var(--brand);color:var(--ink)}.page-actions-chevron{display:grid;place-items:center;color:var(--muted)}.page-tools .page-actions-more summary .page-actions-chevron .icon{width:15px;height:15px;min-width:15px;transition:transform .16s ease}.page-tools .page-actions-more[open] .page-actions-chevron .icon{transform:rotate(180deg)}.page-tools .page-actions-more .page-actions-menu{position:absolute;top:calc(100% + 8px);left:auto;right:0;z-index:40;display:none;gap:4px;min-width:260px;padding:8px;border:1px solid var(--line-strong);border-radius:10px;background:var(--paper);box-shadow:var(--shadow)}.page-tools .page-actions-more[open] .page-actions-menu{display:grid}.page-tools .page-action{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:9px;border:0;border-radius:8px;background:transparent;color:var(--text);text-align:left;text-decoration:none;cursor:pointer}.page-tools .page-action:hover{background:var(--soft);color:var(--ink)}.page-tools .page-action .icon{width:17px;height:17px}.page-tools .page-action strong{display:block;color:var(--ink);font:760 12px/1.2 ui-sans-serif,system-ui,sans-serif}.page-tools .page-action small{display:block;margin-top:3px;color:var(--muted);font:650 11px/1.25 ui-sans-serif,system-ui,sans-serif}.page-tools .page-action-external{justify-self:end;color:var(--muted);font-size:12px}.page-feedback-links{display:flex;align-items:center;gap:9px;margin-left:auto}.page-feedback-links a{border:1px solid var(--line-strong);background:color-mix(in srgb,var(--paper) 82%,transparent);color:var(--muted);border-radius:7px;padding:6px 9px;font:760 12px/1 ui-sans-serif,system-ui,sans-serif}.page-feedback-links a:hover{border-color:var(--brand);color:var(--ink)} +.doc .oc-code.is-expandable{position:relative}.doc .oc-code.is-expandable pre{max-height:360px;padding-bottom:44px}.doc .oc-code.is-expandable.is-expanded pre{max-height:none}.doc .oc-code.is-expandable:not(.is-expanded):after{content:"";position:absolute;left:0;right:0;bottom:39px;height:72px;background:linear-gradient(180deg,transparent,var(--code-block));pointer-events:none}.oc-code-expand{position:absolute;left:0;right:0;bottom:0;z-index:2;width:100%;min-height:40px;border:0;border-top:1px solid var(--code-border);background:color-mix(in srgb,var(--code-block) 88%,var(--paper-2) 12%);color:var(--brand);font:760 12px/1 ui-sans-serif,system-ui,sans-serif;cursor:pointer}.oc-code-expand:hover,.oc-code-expand:focus-visible{color:var(--ink);background:color-mix(in srgb,var(--soft) 48%,var(--code-block));outline:0} .search-modal{position:fixed;inset:0;background:rgba(0,0,0,.62);display:none;z-index:90;padding:8vh 18px}.search-modal.open{display:block}.search-panel{max-width:760px;margin:0 auto;background:var(--paper);border:1px solid var(--line-strong);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.search-head{display:flex;gap:10px;padding:12px;border-bottom:1px solid var(--line)}.search-head input{flex:1;border:1px solid var(--line-strong);border-radius:10px;padding:10px;background:var(--bg);color:var(--text)}.search-head button{border:1px solid var(--line-strong);background:var(--paper-2);color:var(--text);border-radius:9px;padding:0 12px}.search-hints{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper-2) 58%,transparent)}.search-hints button{border:1px solid var(--line-strong);border-radius:999px;background:transparent;color:var(--muted);padding:5px 9px;font:730 12px/1 ui-sans-serif,system-ui,sans-serif;cursor:pointer}.search-hints button:hover{color:var(--ink);border-color:var(--brand)}.search-results{min-height:220px;max-height:62vh;overflow:auto;padding:8px 12px 14px}.search-results.is-loading{cursor:progress}.search-state{margin:0;padding:12px;color:var(--muted)}.search-result{display:block;border-bottom:1px solid var(--line);padding:12px;color:var(--text)}.search-result strong{display:block;color:var(--ink)}.search-result p{margin:.35em 0 0;color:var(--muted);font-size:13px} .docs-chat{position:fixed;top:0;right:0;bottom:0;width:min(380px,calc(100vw - 28px));z-index:80;pointer-events:none}.docs-chat-launcher{position:absolute;right:18px;bottom:18px;height:46px;border:1px solid color-mix(in srgb,var(--brand) 48%,var(--line-strong));border-radius:999px;background:color-mix(in srgb,var(--paper-2) 86%,#000 14%);color:var(--ink);display:flex;align-items:center;gap:9px;padding:0 17px 0 8px;font-weight:850;cursor:pointer;box-shadow:0 16px 44px rgba(0,0,0,.30),inset 0 1px 0 rgba(255,255,255,.03);pointer-events:auto;overflow:hidden;isolation:isolate;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.docs-chat.open .docs-chat-launcher{display:none}.docs-chat-launcher:after{content:"";position:absolute;inset:-1px;border-radius:inherit;background:linear-gradient(90deg,transparent 36%,color-mix(in srgb,var(--brand) 20%,transparent) 74%,color-mix(in srgb,var(--brand) 34%,transparent));opacity:0;z-index:-1;transition:opacity .2s ease}.docs-chat-launcher:hover{border-color:var(--brand);color:var(--ink);transform:translateY(-1px);box-shadow:0 18px 50px rgba(0,0,0,.34),0 0 22px color-mix(in srgb,var(--brand) 10%,transparent),inset 0 1px 0 rgba(255,255,255,.04)}.docs-chat-launcher:hover:after{opacity:1}.docs-chat-avatar{display:block;width:32px;height:32px;border-radius:999px;object-fit:contain;flex:0 0 auto}.docs-chat-launcher .docs-chat-avatar{width:30px;height:30px}.docs-chat-title .docs-chat-avatar{width:34px;height:34px}.docs-chat-panel{position:absolute;inset:0;display:none;grid-template-rows:auto auto minmax(0,1fr) auto;background:color-mix(in srgb,var(--paper) 94%,#000 6%);border-left:1px solid var(--line-strong);box-shadow:-24px 0 70px rgba(0,0,0,.34);overflow:hidden;pointer-events:auto}.docs-chat.open .docs-chat-panel{display:grid}.docs-chat-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:14px 14px 13px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper-2) 88%,transparent)}.docs-chat-head p{margin:0 0 2px;color:var(--brand);font-size:12px;font-weight:850;text-transform:uppercase}.docs-chat-head h2{margin:0;color:var(--ink);font:760 18px/1.1 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.docs-chat-actions{display:flex;align-items:center;gap:7px}.docs-chat-icon{position:relative;display:grid;place-items:center;width:34px;height:34px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--muted);padding:0;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.docs-chat-icon .icon{width:17px;height:17px}.docs-chat-icon:hover{border-color:color-mix(in srgb,var(--brand) 38%,var(--line-strong));background:color-mix(in srgb,var(--paper-2) 82%,transparent);color:var(--ink)}.docs-chat-icon:disabled{opacity:.35;cursor:not-allowed}.docs-chat-icon[data-copy-state="copied"]{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 44%,var(--line-strong));background:color-mix(in srgb,var(--soft) 70%,transparent)}.docs-chat-minimize{font-size:22px}.docs-chat-clear[hidden]{display:none}.docs-chat-auth{padding:14px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 92%,#000 8%)}.docs-chat-auth[hidden]{display:none}.docs-chat-auth-card{border:1px solid var(--line-strong);border-radius:14px;background:color-mix(in srgb,var(--paper-2) 86%,transparent);padding:14px}.docs-chat-auth-card p{margin:0 0 16px;color:var(--text);font-size:14px;line-height:1.45;text-wrap:balance}.docs-chat-auth-card strong{display:block;color:var(--ink);font:760 15px/1.25 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin-bottom:8px}.docs-chat-verify{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:40px;border:1px solid var(--brand);border-radius:12px;background:var(--brand);color:#15100e!important;font-weight:850;padding:0 14px;text-decoration:none!important}.docs-chat-github-icon{width:18px;height:18px;fill:currentColor;flex:0 0 auto}.docs-chat-verify:hover{background:color-mix(in srgb,var(--brand) 86%,white 14%);color:#15100e!important}.docs-chat-log{overflow:auto;padding:14px 14px 16px;display:flex;flex-direction:column;gap:10px}.docs-chat-message{max-width:94%;border:1px solid var(--line);border-radius:14px;padding:10px 12px;overflow-wrap:break-word}.docs-chat-message p{margin:0 0 .7em}.docs-chat-message p:last-child{margin-bottom:0}.docs-chat-message a{color:var(--brand);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;word-break:break-word}.docs-chat-message code{background:var(--code);border:1px solid var(--line-strong);border-radius:5px;padding:.05em .32em;color:var(--code-text);font-size:.9em}.docs-chat-code{margin:.35em 0 .85em;border:1px solid var(--line-strong);border-radius:8px;background:color-mix(in srgb,var(--code) 92%,#000 8%);overflow:hidden;box-shadow:0 14px 40px rgba(0,0,0,.22)}.docs-chat-code-head{display:flex;align-items:center;min-height:28px;padding:5px 10px;border-bottom:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.docs-chat-code pre{margin:0;padding:12px;overflow:auto;white-space:pre;line-height:1.55}.docs-chat-code code{display:block;background:transparent!important;border:0!important;border-radius:0!important;padding:0!important;color:var(--code-text);font-size:12px}.docs-chat-message.user{align-self:flex-end;background:var(--brand);border-color:var(--brand);color:#14100f}.docs-chat-message.assistant{align-self:flex-start;background:var(--paper-2);color:var(--text)}.docs-chat-message.thinking{padding:14px;min-height:42px;display:inline-flex;align-items:center}.docs-chat-thinking{display:inline-flex;gap:7px;align-items:flex-end;height:14px}.docs-chat-thinking span{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:docs-chat-dot 1.25s cubic-bezier(.4,0,.2,1) infinite;will-change:transform,opacity,background-color}.docs-chat-thinking span:nth-child(2){animation-delay:.18s}.docs-chat-thinking span:nth-child(3){animation-delay:.36s}@keyframes docs-chat-dot{0%,80%,100%{opacity:.3;transform:translateY(0) scale(.85);background:var(--muted)}40%{opacity:1;transform:translateY(-5px) scale(1);background:var(--brand)}}@media(prefers-reduced-motion:reduce){.docs-chat-thinking span{animation-duration:2.4s;animation-name:docs-chat-dot-fade}@keyframes docs-chat-dot-fade{0%,100%{opacity:.35}50%{opacity:1}}}.docs-chat-message.error{border-color:#8b2f28;color:#ffb4a8;background:color-mix(in srgb,#401510 35%,var(--paper))}.docs-chat-form{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px;border-top:1px solid var(--line);background:var(--paper)}.docs-chat-form[hidden]{display:none}.docs-chat-form textarea{resize:none;min-height:50px;max-height:160px;border:1px solid var(--line-strong);border-radius:14px;background:var(--bg);color:var(--ink);padding:12px 12px;line-height:1.35}.docs-chat-form textarea:focus{outline:2px solid color-mix(in srgb,var(--brand) 42%,transparent);border-color:var(--brand)}.docs-chat-form button{align-self:end;display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--brand);border-radius:12px;background:var(--brand);color:#15100e;font-weight:850;padding:0;cursor:pointer}.docs-chat-form button .icon{width:18px;height:18px}.docs-chat-form button:disabled{opacity:.55;cursor:wait} .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}} @@ -52,7 +53,8 @@ async function copyText(text,control){try{const value=String(text||"");if(!value function codeTextForCopy(block){const lines=[...block?.querySelectorAll(".code-line")||[]];if(lines.length)return lines.map(line=>line.textContent).join("\\n");return block?.querySelector("code")?.textContent||""} function pageMarkdownForCopy(control){const source=control.closest(".article")?.querySelector("[data-page-markdown]");if(!source)return"";try{return JSON.parse(source.textContent||'""')}catch{return source.textContent||""}} function copyPageMarkdown(control){return copyText(pageMarkdownForCopy(control),control)} -function handleDocsControlClick(e){const copyCode=e.target.closest("[data-code-copy]");if(copyCode){copyText(codeTextForCopy(copyCode.closest(".oc-code")),copyCode);return true}const copyPrompt=e.target.closest("[data-prompt-copy]");if(copyPrompt){const prompt=copyPrompt.closest(".oc-prompt")?.textContent?.replace(/Copy\\s*$/,"").trim()||"";copyText(prompt,copyPrompt);return true}const copyPage=e.target.closest("[data-copy-page]");if(copyPage){copyPageMarkdown(copyPage);return true}const headingAnchor=e.target.closest("[data-heading-anchor]");if(headingAnchor){const url=new URL(location.href);url.hash=headingAnchor.dataset.headingAnchor||"";copyText(url.href,headingAnchor);return true}const feedback=e.target.closest("[data-feedback-value]");if(feedback){const result=feedback.closest(".page-feedback")?.querySelector("[data-feedback-result]");if(result)result.value=feedback.dataset.feedbackValue==="yes"?"Thanks.":"Noted.";return true}return false} +function toggleCodeExpand(control){const block=control.closest(".oc-code");if(!block)return;const expanded=!block.classList.contains("is-expanded");block.classList.toggle("is-expanded",expanded);control.setAttribute("aria-expanded",String(expanded));control.textContent=expanded?"Show less":"Show more"} +function handleDocsControlClick(e){const copyCode=e.target.closest("[data-code-copy]");if(copyCode){copyText(codeTextForCopy(copyCode.closest(".oc-code")),copyCode);return true}const expandCode=e.target.closest("[data-code-expand]");if(expandCode){toggleCodeExpand(expandCode);return true}const copyPrompt=e.target.closest("[data-prompt-copy]");if(copyPrompt){const prompt=copyPrompt.closest(".oc-prompt")?.textContent?.replace(/Copy\\s*$/,"").trim()||"";copyText(prompt,copyPrompt);return true}const copyPage=e.target.closest("[data-copy-page]");if(copyPage){copyPageMarkdown(copyPage);return true}const headingAnchor=e.target.closest("[data-heading-anchor]");if(headingAnchor){const url=new URL(location.href);url.hash=headingAnchor.dataset.headingAnchor||"";copyText(url.href,headingAnchor);return true}const feedback=e.target.closest("[data-feedback-value]");if(feedback){const result=feedback.closest(".page-feedback")?.querySelector("[data-feedback-result]");if(result)result.value=feedback.dataset.feedbackValue==="yes"?"Thanks.":"Noted.";return true}return false} function scrollTarget(hash){if(hash){document.getElementById(decodeURIComponent(hash.slice(1)))?.scrollIntoView()}else{scrollTo(0,0)}} async function navigateTo(url,replace=false){if(navigating)return false;navigating=true;closeLanguage();try{const res=await fetch(url.href,{credentials:"same-origin"});if(!res.ok||!res.headers.get("content-type")?.includes("text/html"))return false;const nextDoc=new DOMParser().parseFromString(await res.text(),"text/html");if(!nextDoc.querySelector(".main"))return false;syncSidebar(nextDoc);swap(".header-left",nextDoc);swapTabs(nextDoc);swap(".main",nextDoc);initCodeGroups();initMermaid();document.title=nextDoc.title;history[replace?"replaceState":"pushState"]({docs:true},"",url.href);setNavOpen(false);scrollTarget(url.hash);return true}catch{return false}finally{navigating=false}} function openSearch(){modal?.classList.add("open");setTimeout(()=>input?.focus(),0);pagefindReady ||= import(withBase("/pagefind/pagefind.js")).then(m=>m.init?.().then?.(()=>m)??m)} diff --git a/scripts/docs-site/elements-fixture.mjs b/scripts/docs-site/elements-fixture.mjs index 671989300..959471449 100644 --- a/scripts/docs-site/elements-fixture.mjs +++ b/scripts/docs-site/elements-fixture.mjs @@ -90,6 +90,33 @@ export async function restartGateway(mode: GatewayMode) { } \`\`\` +\`\`\`bash expandable +openclaw status --deep +openclaw gateway inspect --json +openclaw channels list +openclaw channels test telegram +openclaw channels test slack +openclaw models list +openclaw models test openai +openclaw models test anthropic +openclaw plugins list +openclaw plugins doctor +openclaw skills list +openclaw skills validate +openclaw config get gateway.publicBaseUrl +openclaw config get gateway.heartbeatSeconds +openclaw config get channels.telegram.enabled +openclaw config get channels.telegram.groupPolicy +openclaw config get channels.slack.enabled +openclaw config get channels.slack.socketMode +openclaw logs tail gateway +openclaw logs tail channels +openclaw gateway restart +openclaw gateway health +openclaw gateway doctor +openclaw status --deep +\`\`\` + \`\`\`sh scripts/setup-openclaw.sh diff --git a/scripts/docs-site/mdx-ish.mjs b/scripts/docs-site/mdx-ish.mjs index b08b5569c..cd0af9cae 100644 --- a/scripts/docs-site/mdx-ish.mjs +++ b/scripts/docs-site/mdx-ish.mjs @@ -133,7 +133,8 @@ function renderFence(tokens, idx) { wrap ? "is-wrapped" : "", expandable ? "is-expandable" : "", ].filter(Boolean).join(" "); - return `
${escapeHtml(dataLabel)}
${highlighted}
`; + const expandControl = expandable ? `` : ""; + return `
${escapeHtml(dataLabel)}
${highlighted}
${expandControl}
`; } function parseCodeInfo(rawInfo = "") { diff --git a/scripts/docs-site/smoke.mjs b/scripts/docs-site/smoke.mjs index 27ab2ebf1..da4e3bfa8 100644 --- a/scripts/docs-site/smoke.mjs +++ b/scripts/docs-site/smoke.mjs @@ -363,6 +363,7 @@ for (const marker of [ 'class="oc-card-grid oc-card-cols-4"', 'class="oc-card"', 'class="oc-code"', + 'class="oc-code is-expandable"', 'class="oc-code-group"', 'scripts/setup-openclaw.sh', 'openclaw.json5', @@ -401,6 +402,8 @@ for (const marker of [ 'Ready<br>state', 'Broken -->', 'data-code-copy', + 'data-code-expand', + 'Show more', 'class="code-line is-highlighted"', 'data-prompt-copy', 'data-heading-anchor', @@ -468,6 +471,12 @@ if (!/function initCodeGroups/.test(siteJs) || !/className="oc-code-tab"/.test(s if (!/function handleDocsControlClick/.test(siteJs) || !/async function copyText/.test(siteJs)) { throw new Error("assets: copy and feedback controls are missing"); } +if (!/function toggleCodeExpand/.test(siteJs) + || !/data-code-expand/.test(siteJs) + || !/is-expanded/.test(siteJs) + || !/Show less/.test(siteJs)) { + throw new Error("assets: expandable code controls are missing"); +} if (!/function copyPageMarkdown/.test(siteJs) || !/function pageMarkdownForCopy/.test(siteJs) || !/function setCopyFeedback/.test(siteJs) @@ -512,6 +521,12 @@ if (!/\.page-tools \.page-actions-primary:hover,\.page-tools \.page-actions-more || !/\.page-feedback-links\{display:flex;align-items:center;gap:9px;margin-left:auto\}/.test(siteCss)) { throw new Error("assets: page action hover, external marker, and footer link skin are missing"); } +if (!/\.doc \.oc-code\.is-expandable\{position:relative\}/.test(siteCss) + || !/\.doc \.oc-code\.is-expandable\.is-expanded pre\{max-height:none\}/.test(siteCss) + || !/\.doc \.oc-code\.is-expandable:not\(\.is-expanded\):after\{[^}]*linear-gradient\(180deg,transparent,var\(--code-block\)\)/.test(siteCss) + || !/\.oc-code-expand\{[^}]*border-top:1px solid var\(--code-border\)/.test(siteCss)) { + throw new Error("assets: expandable code affordance skin is missing"); +} const ambient = fs.readFileSync(path.join(site, "channels/ambient-room-events/index.html"), "utf8"); if (!/
/.test(ambient) || !/class="language-json5"/.test(ambient)