@blackwork/docs 0.1.0 → 0.3.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.
Files changed (130) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  2. package/dist/config/defaults.cjs +1 -1
  3. package/dist/config/defaults.mjs +1 -1
  4. package/dist/config/define-config.cjs +1 -1
  5. package/dist/config/define-config.mjs +1 -1
  6. package/dist/config/define-docs-config.cjs +1 -1
  7. package/dist/config/define-docs-config.mjs +1 -1
  8. package/dist/config/load-content-config.cjs +1 -1
  9. package/dist/config/load-content-config.mjs +1 -1
  10. package/dist/config/types.d.mts +11 -1
  11. package/dist/config/types.d.ts +11 -1
  12. package/dist/export/process-exported-docs.cjs +9 -0
  13. package/dist/export/process-exported-docs.d.mts +16 -0
  14. package/dist/export/process-exported-docs.d.ts +16 -0
  15. package/dist/export/process-exported-docs.mjs +9 -0
  16. package/dist/index.cjs +2 -2
  17. package/dist/index.d.mts +3 -2
  18. package/dist/index.d.ts +3 -2
  19. package/dist/index.mjs +2 -2
  20. package/dist/mdx/default-docs-components.cjs +1 -1
  21. package/dist/mdx/default-docs-components.mjs +1 -1
  22. package/dist/mdx/merge-docs-components.cjs +1 -1
  23. package/dist/mdx/merge-docs-components.mjs +1 -1
  24. package/dist/metadata/create-doc-metadata.cjs +1 -1
  25. package/dist/metadata/create-doc-metadata.d.mts +1 -1
  26. package/dist/metadata/create-doc-metadata.d.ts +1 -1
  27. package/dist/metadata/create-doc-metadata.mjs +1 -1
  28. package/dist/navigation/build-locale-links.cjs +1 -1
  29. package/dist/navigation/build-locale-links.d.mts +1 -1
  30. package/dist/navigation/build-locale-links.d.ts +1 -1
  31. package/dist/navigation/build-locale-links.mjs +1 -1
  32. package/dist/navigation/build-pager.cjs +1 -1
  33. package/dist/navigation/build-pager.mjs +1 -1
  34. package/dist/navigation/build-sidebar.cjs +1 -1
  35. package/dist/navigation/build-sidebar.d.mts +1 -1
  36. package/dist/navigation/build-sidebar.d.ts +1 -1
  37. package/dist/navigation/build-sidebar.mjs +1 -1
  38. package/dist/navigation/resolve-sidebar.cjs +1 -1
  39. package/dist/navigation/resolve-sidebar.mjs +1 -1
  40. package/dist/next/context.cjs +1 -1
  41. package/dist/next/context.mjs +1 -1
  42. package/dist/next/document-lang-sync.cjs +9 -0
  43. package/dist/next/document-lang-sync.mjs +9 -0
  44. package/dist/next/load-doc-content.cjs +1 -1
  45. package/dist/next/load-doc-content.mjs +1 -1
  46. package/dist/next/load-generated-manifest.cjs +1 -1
  47. package/dist/next/load-generated-manifest.mjs +1 -1
  48. package/dist/next/metadata.cjs +1 -1
  49. package/dist/next/metadata.mjs +1 -1
  50. package/dist/next/page.cjs +1 -1
  51. package/dist/next/page.mjs +1 -1
  52. package/dist/next/render-route.cjs +1 -1
  53. package/dist/next/render-route.mjs +1 -1
  54. package/dist/next/resolve-document-lang.cjs +1 -1
  55. package/dist/next/resolve-document-lang.mjs +1 -1
  56. package/dist/next/root-layout.cjs +2 -2
  57. package/dist/next/root-layout.mjs +2 -2
  58. package/dist/next-plugin/generate.cjs +1 -1
  59. package/dist/next-plugin/generate.mjs +1 -1
  60. package/dist/next.cjs +1 -1
  61. package/dist/next.mjs +1 -1
  62. package/dist/routing/build-static-params.cjs +1 -1
  63. package/dist/routing/build-static-params.mjs +1 -1
  64. package/dist/routing/resolve-docs-route.cjs +1 -1
  65. package/dist/routing/resolve-docs-route.mjs +1 -1
  66. package/dist/runtime.cjs +1 -1
  67. package/dist/runtime.mjs +1 -1
  68. package/dist/source/build-docs-source.cjs +1 -1
  69. package/dist/source/build-docs-source.mjs +1 -1
  70. package/dist/source/collect-docs-manifest.cjs +1 -1
  71. package/dist/source/collect-docs-manifest.mjs +1 -1
  72. package/dist/source/create-docs-source-from-manifest.cjs +1 -1
  73. package/dist/source/create-docs-source-from-manifest.mjs +1 -1
  74. package/dist/source/create-docs-source.cjs +1 -1
  75. package/dist/source/create-docs-source.mjs +1 -1
  76. package/dist/theme/components/content-layout.cjs +9 -0
  77. package/dist/theme/components/content-layout.d.mts +15 -0
  78. package/dist/theme/components/content-layout.d.ts +15 -0
  79. package/dist/theme/components/content-layout.mjs +9 -0
  80. package/dist/theme/components/content-shell.cjs +2 -2
  81. package/dist/theme/components/content-shell.d.mts +1 -1
  82. package/dist/theme/components/content-shell.d.ts +1 -1
  83. package/dist/theme/components/content-shell.mjs +2 -2
  84. package/dist/theme/components/docs-rail-scroll-state.cjs +2 -2
  85. package/dist/theme/components/docs-rail-scroll-state.mjs +2 -2
  86. package/dist/theme/components/docs-rail-scroll.cjs +2 -2
  87. package/dist/theme/components/docs-rail-scroll.mjs +2 -2
  88. package/dist/theme/components/docs-scroll-reset.cjs +1 -1
  89. package/dist/theme/components/docs-scroll-reset.mjs +1 -1
  90. package/dist/theme/components/docs-scroll-to-top.cjs +9 -0
  91. package/dist/theme/components/docs-scroll-to-top.mjs +9 -0
  92. package/dist/theme/components/docs-shell.cjs +2 -2
  93. package/dist/theme/components/docs-shell.d.mts +1 -1
  94. package/dist/theme/components/docs-shell.d.ts +1 -1
  95. package/dist/theme/components/docs-shell.mjs +2 -2
  96. package/dist/theme/components/docs-toc-geometry.cjs +1 -1
  97. package/dist/theme/components/docs-toc-geometry.mjs +1 -1
  98. package/dist/theme/components/docs-toc.cjs +2 -2
  99. package/dist/theme/components/docs-toc.d.mts +32 -0
  100. package/dist/theme/components/docs-toc.d.ts +32 -0
  101. package/dist/theme/components/docs-toc.mjs +2 -2
  102. package/dist/theme/components/floating-actions.cjs +9 -0
  103. package/dist/theme/components/floating-actions.mjs +9 -0
  104. package/dist/theme/components/footer.cjs +1 -1
  105. package/dist/theme/components/footer.mjs +1 -1
  106. package/dist/theme/components/header.cjs +2 -2
  107. package/dist/theme/components/header.d.mts +1 -0
  108. package/dist/theme/components/header.d.ts +1 -0
  109. package/dist/theme/components/header.mjs +2 -2
  110. package/dist/theme/components/home-shell.cjs +2 -2
  111. package/dist/theme/components/home-shell.d.mts +1 -1
  112. package/dist/theme/components/home-shell.d.ts +1 -1
  113. package/dist/theme/components/home-shell.mjs +2 -2
  114. package/dist/theme/components/link.cjs +1 -1
  115. package/dist/theme/components/link.mjs +1 -1
  116. package/dist/theme/components/shell-shared.cjs +2 -2
  117. package/dist/theme/components/shell-shared.mjs +2 -2
  118. package/dist/theme/create-home-data.cjs +1 -1
  119. package/dist/theme/create-home-data.d.mts +1 -1
  120. package/dist/theme/create-home-data.d.ts +1 -1
  121. package/dist/theme/create-home-data.mjs +1 -1
  122. package/dist/theme/slots.cjs +2 -2
  123. package/dist/theme/slots.mjs +2 -2
  124. package/dist/theme/types.d.mts +14 -1
  125. package/dist/theme/types.d.ts +14 -1
  126. package/dist/theme.cjs +2 -2
  127. package/dist/theme.d.mts +4 -2
  128. package/dist/theme.d.ts +4 -2
  129. package/dist/theme.mjs +2 -2
  130. package/package.json +5 -5
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./docs-toc-geometry.cjs`);let n=require(`blackwork`),r=require(`react`);r=e.__toESM(r);let i=require(`react/jsx-runtime`),a=require(`blackwork/icons`);const o=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),s=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),c=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},l=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),u=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),d=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},f=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},p=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-f(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+f(r.paddingTop)}]})},m=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},h=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},g=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,_=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function v(e){let[t,n]=(0,r.useState)([]);return(0,r.useEffect)(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=u([...t.values()]);if(r.length===0){let n=d([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function y(e,n){let i=(0,r.useRef)(null),[a,o]=(0,r.useState)(null),[s,c]=(0,r.useState)(null),l=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=i.current;if(!e)return;let r=0,a=()=>{cancelAnimationFrame(r),r=requestAnimationFrame(()=>{let r=t.buildTocTrackGeometry(p(e,n)),i={...r,itemLineLengths:m(r.positions,r.path)};o(e=>h(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(a);return s?.observe(e),window.addEventListener(`resize`,a),a(),()=>{cancelAnimationFrame(r),s?.disconnect(),window.removeEventListener(`resize`,a)}},[n]),(0,r.useEffect)(()=>{let t=0;return t=requestAnimationFrame(()=>{if(!a||e.length===0){l.current=null,c(e=>e===null?e:null);return}let[t,n]=_(e,a,l.current);l.current=n,c(e=>g(e,t)?e:t)}),()=>{cancelAnimationFrame(t)}},[e,a]),[i,a,s]}const b=({className:e,collapseEnabled:u=!1,defaultCollapsed:d=!1,dock:f=`sticky`,headings:p,minHeadings:m=1})=>{let h=v(p),[g,_,b]=y(h,p),x=(0,r.useMemo)(()=>new Set(h),[h]),S=(0,r.useId)(),[C,w]=(0,r.useState)(d),[T,E]=(0,r.useState)(0);return p.length<m?null:(0,i.jsx)(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":u?`true`:void 0,"data-docs-toc-collapsed":u?String(C):void 0,className:(0,n.cn)(`hidden w-64 xl:block`,f===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:(0,i.jsxs)(`nav`,{"aria-label":`On This Page`,className:`flex flex-col gap-3 text-sm`,children:[C?null:(0,i.jsxs)(`div`,{className:(0,n.cn)(`flex items-center gap-2`,u?`justify-between`:void 0),children:[(0,i.jsx)(`p`,{className:`font-medium text-foreground`,children:`On This Page`}),u?(0,i.jsxs)(n.Button,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":S,"aria-expanded":`true`,title:`Collapse outline`,"aria-label":`Collapse outline`,className:`size-8 shrink-0 text-muted-foreground hover:text-foreground`,onClick:()=>{w(e=>!e)},children:[(0,i.jsx)(a.ChevronsLeft,{className:`size-4`,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:`sr-only`,children:`Collapse outline`})]}):null]}),C?(0,i.jsxs)(n.Button,{type:`button`,"data-docs-toc-panel":`collapsed`,variant:`ghost`,size:`icon`,"aria-label":`Expand outline`,"aria-expanded":`false`,title:`Expand outline`,className:`self-start shrink-0 text-muted-foreground hover:text-foreground`,onClick:()=>{w(!1)},children:[(0,i.jsx)(a.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:`sr-only`,children:`Expand outline`})]}):(0,i.jsxs)(`div`,{className:`relative`,children:[(0,i.jsxs)(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:s(_,T),children:[(0,i.jsx)(`svg`,{"data-docs-toc-track-path":`true`,height:_?.height??1,viewBox:`0 0 ${_?.width??1} ${_?.height??1}`,width:_?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:c(b),children:(0,i.jsx)(`path`,{d:_?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),(0,i.jsx)(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:l(_,b)})]}),(0,i.jsx)(`ol`,{id:S,ref:g,className:`flex max-h-[calc(100dvh-8rem)] flex-col overflow-auto py-1 [scrollbar-width:none]`,onScroll:e=>{E(e.currentTarget.scrollTop)},children:p.map((e,n)=>{let r=x.has(e.id),a=t.getTocGuideOffset(e.depth),s=n>0?t.getTocGuideOffset(p[n-1].depth):a,c=n+1<p.length?t.getTocGuideOffset(p[n+1].depth):a;return(0,i.jsx)(`li`,{children:(0,i.jsxs)(`a`,{href:`#${e.id}`,"data-active":r?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:o(),style:{paddingInlineStart:`${t.getTocItemPadding(e.depth)}px`},children:[a===s?null:(0,i.jsx)(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(a,s)} 0 ${Math.abs(s-a)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(a,s)}px`,top:`-6px`,width:`${Math.abs(s-a)+1}px`,zIndex:-1},children:(0,i.jsx)(`path`,{d:`M ${s} 0 C ${s} 8 ${a} 4 ${a} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),(0,i.jsx)(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:a===c?`0px`:`6px`,insetInlineStart:`${a}px`,top:a===s?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})]})})};exports.DefaultDocsToc=b;
9
+ "use client";const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./docs-toc-geometry.cjs`),n=require(`./floating-actions.cjs`);let r=require(`blackwork`),i=require(`react`);i=e.__toESM(i);let a=require(`react/jsx-runtime`),o=require(`blackwork/icons`);const s=`On This Page`,c=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),l=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),u=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},d=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),f=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),p=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},m=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},h=({itemBottom:e,itemTop:t,margin:n,scrollHeight:r,scrollTop:i,viewportHeight:a})=>{let o=i+n,s=i+a-n,c=Math.max(0,r-a);return t<o?Math.max(0,t-n):e>s?Math.min(c,e-a+n):i},g=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-m(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+m(r.paddingTop)}]})},_=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},v=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},y=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,b=e=>{let t=C(e),[n,r,a]=w(t,e),o=(0,i.useMemo)(()=>new Set(t),[t]),s=(0,i.useId)(),[c,l]=(0,i.useState)(0);return{activeIds:t,activeIdSet:o,listId:s,listRef:n,measurement:r,scrollTop:c,setScrollTop:l,track:a}},x=({activeIds:e,activeIdSet:n,headings:o,listClassName:s,listId:f,listRef:p,measurement:m,onSelect:g,scrollTop:_,setScrollTop:v,track:y,wrapperClassName:b})=>((0,i.useEffect)(()=>{let t=p.current,n=e[0];if(!t||!n)return;let r=Array.from(t.querySelectorAll(`a[data-heading-id]`)).find(e=>e.dataset.headingId===n);if(!r)return;let i=h({itemBottom:r.offsetTop+r.offsetHeight,itemTop:r.offsetTop,margin:16,scrollHeight:t.scrollHeight,scrollTop:t.scrollTop,viewportHeight:t.clientHeight});i!==t.scrollTop&&t.scrollTo({top:i})},[e,p]),(0,a.jsxs)(`div`,{className:(0,r.cn)(`relative`,b),children:[(0,a.jsxs)(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:l(m,_),children:[(0,a.jsx)(`svg`,{"data-docs-toc-track-path":`true`,height:m?.height??1,viewBox:`0 0 ${m?.width??1} ${m?.height??1}`,width:m?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:u(y),children:(0,a.jsx)(`path`,{d:m?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),(0,a.jsx)(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:d(m,y)})]}),(0,a.jsx)(`ol`,{id:f,ref:p,className:(0,r.cn)(`flex flex-col overflow-auto py-1 [scrollbar-width:none]`,s),onScroll:e=>{v(e.currentTarget.scrollTop)},children:o.map((e,r)=>{let i=n.has(e.id),s=t.getTocGuideOffset(e.depth),l=r>0?t.getTocGuideOffset(o[r-1].depth):s,u=r+1<o.length?t.getTocGuideOffset(o[r+1].depth):s;return(0,a.jsx)(`li`,{children:(0,a.jsxs)(`a`,{href:`#${e.id}`,"data-active":i?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:c(),style:{paddingInlineStart:`${t.getTocItemPadding(e.depth)}px`},onClick:g,children:[s===l?null:(0,a.jsx)(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(s,l)} 0 ${Math.abs(l-s)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(s,l)}px`,top:`-6px`,width:`${Math.abs(l-s)+1}px`,zIndex:-1},children:(0,a.jsx)(`path`,{d:`M ${l} 0 C ${l} 8 ${s} 4 ${s} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),(0,a.jsx)(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:s===u?`0px`:`6px`,insetInlineStart:`${s}px`,top:s===l?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})),S=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function C(e){let[t,n]=(0,i.useState)([]);return(0,i.useEffect)(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=f([...t.values()]);if(r.length===0){let n=p([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function w(e,n){let r=(0,i.useRef)(null),[a,o]=(0,i.useState)(null),[s,c]=(0,i.useState)(null),l=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=r.current;if(!e)return;let i=0,a=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=t.buildTocTrackGeometry(g(e,n)),i={...r,itemLineLengths:_(r.positions,r.path)};o(e=>v(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(a);return s?.observe(e),window.addEventListener(`resize`,a),a(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,a)}},[n]),(0,i.useEffect)(()=>{let t=0;return t=requestAnimationFrame(()=>{if(!a||e.length===0){l.current=null,c(e=>e===null?e:null);return}let[t,n]=S(e,a,l.current);l.current=n,c(e=>y(e,t)?e:t)}),()=>{cancelAnimationFrame(t)}},[e,a]),[r,a,s]}const T=({className:e,collapseDirection:t=`left`,collapseLabel:n=`Collapse outline`,collapseEnabled:c=!1,defaultCollapsed:l=!1,dock:u=`sticky`,expandLabel:d=`Expand outline`,headings:f,minHeadings:p=1,title:m=s})=>{let h=b(f),[g,_]=(0,i.useState)(l),v=g?d:n,y=t===`right`?`right-0`:`left-0`,S=c?t===`right`?`pr-10`:`pl-10`:void 0;return f.length<p?null:(0,a.jsx)(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":c?`true`:void 0,"data-docs-toc-collapsed":c?String(g):void 0,className:(0,r.cn)(`hidden w-64 xl:block`,u===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:(0,a.jsxs)(`nav`,{"aria-label":m,className:(0,r.cn)(`relative flex w-64 flex-col text-sm`,t===`right`?`ml-auto`:void 0),children:[(0,a.jsxs)(`div`,{inert:c&&g?!0:void 0,"aria-hidden":c&&g?!0:void 0,className:(0,r.cn)(`flex w-64 flex-col gap-3 overflow-hidden transition-opacity duration-200 ease-out motion-reduce:transition-none`,c&&g?`pointer-events-none opacity-0`:`opacity-100`),children:[(0,a.jsx)(`p`,{className:(0,r.cn)(`font-medium text-foreground`,S),children:m}),(0,a.jsx)(x,{...h,headings:f,listClassName:`max-h-[calc(100dvh-8rem)]`})]}),c?(0,a.jsxs)(r.Button,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":h.listId,"aria-label":v,"aria-expanded":!g,title:v,className:(0,r.cn)(y,`absolute top-0 z-10 shrink-0 text-muted-foreground transition-opacity duration-200 ease-out hover:text-foreground hover:opacity-100 motion-reduce:transition-none`,g?`opacity-100`:`opacity-60`),onClick:()=>{_(e=>!e)},children:[(0,a.jsx)(o.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`sr-only`,children:v})]}):null]})})},E=({className:e,headings:t,minHeadings:c=1,openLabel:l=`Open outline`,title:u=s})=>{let d=b(t),[f,p]=(0,i.useState)(!1);return t.length<c?null:(0,a.jsx)(`div`,{className:(0,r.cn)(`xl:hidden`,e),children:(0,a.jsxs)(r.Sheet,{open:f,onOpenChange:p,children:[(0,a.jsx)(r.SheetTrigger,{asChild:!0,children:(0,a.jsxs)(r.Button,{type:`button`,variant:`outline`,size:`icon`,title:l,"aria-label":l,"data-docs-toc-mobile-trigger":`true`,className:`fixed border border-input bg-background shadow-sm`,style:n.getDocsFloatingActionStyle(1),children:[(0,a.jsx)(o.Toc,{className:`size-4`,"aria-hidden":`true`}),(0,a.jsx)(`span`,{className:`sr-only`,children:l})]})}),(0,a.jsxs)(r.SheetContent,{side:`right`,className:`flex h-dvh flex-col gap-0 p-0 sm:max-w-sm`,children:[(0,a.jsx)(r.SheetHeader,{className:`border-b border-border/60 px-6 pb-4 pt-[calc(env(safe-area-inset-top)+1.5rem)] text-left`,children:(0,a.jsx)(r.SheetTitle,{children:u})}),(0,a.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-6 pb-[calc(env(safe-area-inset-bottom)+1.5rem)] pt-4`,children:(0,a.jsx)(x,{...d,headings:t,listClassName:`min-h-0 flex-1`,wrapperClassName:`min-h-0 flex-1`,onSelect:()=>{p(!1)}})})]})]})})};exports.DefaultDocsToc=T,exports.MobileDocsToc=E;
@@ -0,0 +1,32 @@
1
+
2
+ import React from "react";
3
+
4
+ //#region src/theme/components/docs-toc.d.ts
5
+ interface DocsTocHeading {
6
+ depth: number;
7
+ id: string;
8
+ title: string;
9
+ }
10
+ interface DefaultDocsTocProps {
11
+ className?: string;
12
+ collapseDirection?: 'left' | 'right';
13
+ collapseLabel?: string;
14
+ collapseEnabled?: boolean;
15
+ defaultCollapsed?: boolean;
16
+ dock?: 'fixed' | 'sticky';
17
+ expandLabel?: string;
18
+ headings: DocsTocHeading[];
19
+ minHeadings?: number;
20
+ title?: string;
21
+ }
22
+ interface MobileDocsTocProps {
23
+ className?: string;
24
+ headings: DocsTocHeading[];
25
+ minHeadings?: number;
26
+ openLabel?: string;
27
+ title?: string;
28
+ }
29
+ declare const DefaultDocsToc: React.FC<DefaultDocsTocProps>;
30
+ declare const MobileDocsToc: React.FC<MobileDocsTocProps>;
31
+ //#endregion
32
+ export { DefaultDocsToc, DefaultDocsTocProps, DocsTocHeading, MobileDocsToc, MobileDocsTocProps };
@@ -0,0 +1,32 @@
1
+
2
+ import React from "react";
3
+
4
+ //#region src/theme/components/docs-toc.d.ts
5
+ interface DocsTocHeading {
6
+ depth: number;
7
+ id: string;
8
+ title: string;
9
+ }
10
+ interface DefaultDocsTocProps {
11
+ className?: string;
12
+ collapseDirection?: 'left' | 'right';
13
+ collapseLabel?: string;
14
+ collapseEnabled?: boolean;
15
+ defaultCollapsed?: boolean;
16
+ dock?: 'fixed' | 'sticky';
17
+ expandLabel?: string;
18
+ headings: DocsTocHeading[];
19
+ minHeadings?: number;
20
+ title?: string;
21
+ }
22
+ interface MobileDocsTocProps {
23
+ className?: string;
24
+ headings: DocsTocHeading[];
25
+ minHeadings?: number;
26
+ openLabel?: string;
27
+ title?: string;
28
+ }
29
+ declare const DefaultDocsToc: React.FC<DefaultDocsTocProps>;
30
+ declare const MobileDocsToc: React.FC<MobileDocsTocProps>;
31
+ //#endregion
32
+ export { DefaultDocsToc, DefaultDocsTocProps, DocsTocHeading, MobileDocsToc, MobileDocsTocProps };
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- "use client";import{buildTocTrackGeometry as e,getTocGuideOffset as t,getTocItemPadding as n}from"./docs-toc-geometry.mjs";import{Button as r,cn as i}from"blackwork";import{useEffect as a,useId as o,useMemo as s,useRef as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{ChevronsLeft as f,Toc as p}from"blackwork/icons";const m=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),h=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),g=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},_=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),v=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),y=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},b=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},x=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-b(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+b(r.paddingTop)}]})},S=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},C=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},w=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,T=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function E(e){let[t,n]=l([]);return a(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=v([...t.values()]);if(r.length===0){let n=y([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function D(t,n){let r=c(null),[i,o]=l(null),[s,u]=l(null),d=c(null);return a(()=>{let t=r.current;if(!t)return;let i=0,a=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=e(x(t,n)),i={...r,itemLineLengths:S(r.positions,r.path)};o(e=>C(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(a);return s?.observe(t),window.addEventListener(`resize`,a),a(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,a)}},[n]),a(()=>{let e=0;return e=requestAnimationFrame(()=>{if(!i||t.length===0){d.current=null,u(e=>e===null?e:null);return}let[e,n]=T(t,i,d.current);d.current=n,u(t=>w(t,e)?t:e)}),()=>{cancelAnimationFrame(e)}},[t,i]),[r,i,s]}const O=({className:e,collapseEnabled:a=!1,defaultCollapsed:c=!1,dock:v=`sticky`,headings:y,minHeadings:b=1})=>{let x=E(y),[S,C,w]=D(x,y),T=s(()=>new Set(x),[x]),O=o(),[k,A]=l(c),[j,M]=l(0);return y.length<b?null:u(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":a?`true`:void 0,"data-docs-toc-collapsed":a?String(k):void 0,className:i(`hidden w-64 xl:block`,v===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:d(`nav`,{"aria-label":`On This Page`,className:`flex flex-col gap-3 text-sm`,children:[k?null:d(`div`,{className:i(`flex items-center gap-2`,a?`justify-between`:void 0),children:[u(`p`,{className:`font-medium text-foreground`,children:`On This Page`}),a?d(r,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":O,"aria-expanded":`true`,title:`Collapse outline`,"aria-label":`Collapse outline`,className:`size-8 shrink-0 text-muted-foreground hover:text-foreground`,onClick:()=>{A(e=>!e)},children:[u(f,{className:`size-4`,"aria-hidden":`true`}),u(`span`,{className:`sr-only`,children:`Collapse outline`})]}):null]}),k?d(r,{type:`button`,"data-docs-toc-panel":`collapsed`,variant:`ghost`,size:`icon`,"aria-label":`Expand outline`,"aria-expanded":`false`,title:`Expand outline`,className:`self-start shrink-0 text-muted-foreground hover:text-foreground`,onClick:()=>{A(!1)},children:[u(p,{className:`size-4`,"aria-hidden":`true`}),u(`span`,{className:`sr-only`,children:`Expand outline`})]}):d(`div`,{className:`relative`,children:[d(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:h(C,j),children:[u(`svg`,{"data-docs-toc-track-path":`true`,height:C?.height??1,viewBox:`0 0 ${C?.width??1} ${C?.height??1}`,width:C?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:g(w),children:u(`path`,{d:C?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),u(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:_(C,w)})]}),u(`ol`,{id:O,ref:S,className:`flex max-h-[calc(100dvh-8rem)] flex-col overflow-auto py-1 [scrollbar-width:none]`,onScroll:e=>{M(e.currentTarget.scrollTop)},children:y.map((e,r)=>{let i=T.has(e.id),a=t(e.depth),o=r>0?t(y[r-1].depth):a,s=r+1<y.length?t(y[r+1].depth):a;return u(`li`,{children:d(`a`,{href:`#${e.id}`,"data-active":i?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:m(),style:{paddingInlineStart:`${n(e.depth)}px`},children:[a===o?null:u(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(a,o)} 0 ${Math.abs(o-a)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(a,o)}px`,top:`-6px`,width:`${Math.abs(o-a)+1}px`,zIndex:-1},children:u(`path`,{d:`M ${o} 0 C ${o} 8 ${a} 4 ${a} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),u(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:a===s?`0px`:`6px`,insetInlineStart:`${a}px`,top:a===o?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})]})})};export{O as DefaultDocsToc};
9
+ "use client";import{buildTocTrackGeometry as e,getTocGuideOffset as t,getTocItemPadding as n}from"./docs-toc-geometry.mjs";import{getDocsFloatingActionStyle as r}from"./floating-actions.mjs";import{Button as i,Sheet as a,SheetContent as o,SheetHeader as s,SheetTitle as c,SheetTrigger as l,cn as u}from"blackwork";import{useEffect as d,useId as f,useMemo as p,useRef as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{Toc as v}from"blackwork/icons";const y=`On This Page`,b=()=>[`relative block py-1.5 pr-3 text-sm text-muted-foreground transition-colors`,`hover:text-foreground data-[active=true]:text-primary`].join(` `),x=(e,t)=>({height:`${e?.height??1}px`,transform:`translateY(${-t}px)`,width:`${e?.width??1}px`}),S=e=>{let t=e?.top??0,n=e?.bottom??0;return{clipPath:`polygon(0 ${t}px, 100% ${t}px, 100% ${n}px, 0 ${n}px)`,opacity:+!!e}},C=(e,t)=>({offsetDistance:`${t?.offsetDistance??0}px`,offsetPath:`path("${e?.path||`M0 0 L0 0`}")`,opacity:+!!t}),w=e=>e.filter(e=>e.active).sort((e,t)=>e.t-t.t).map(e=>e.id),T=(e,t)=>{let n=null,r=1/0;for(let i of e){let e=document.getElementById(i.id);if(!e)continue;let a=Math.abs(e.getBoundingClientRect().top-t);a<r&&(r=a,n=i.id)}return n},E=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},D=({itemBottom:e,itemTop:t,margin:n,scrollHeight:r,scrollTop:i,viewportHeight:a})=>{let o=i+n,s=i+a-n,c=Math.max(0,r-a);return t<o?Math.max(0,t-n):e>s?Math.min(c,e-a+n):i},O=(e,t)=>{let n=new Map(Array.from(e.querySelectorAll(`a[data-heading-id]`)).map(e=>[e.dataset.headingId??``,e]));return t.flatMap(e=>{let t=n.get(e.id);if(!t)return[];let r=getComputedStyle(t);return[{bottom:t.offsetTop+t.clientHeight-E(r.paddingBottom),depth:e.depth,id:e.id,top:t.offsetTop+E(r.paddingTop)}]})},k=(e,t)=>{if(t.length===0||e.length===0)return[];try{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);n.setAttribute(`d`,t);let r=[],i=n.getTotalLength();return e.forEach((t,a)=>{let o=a>0?r[a-1][1]+(t.top-e[a-1].bottom):t.top;for(;o<i&&n.getPointAtLength(o).y<t.top;)o+=1;r.push([o,o+(t.bottom-t.top)])}),r}catch{return e.map(e=>[e.top,e.bottom])}},A=(e,t)=>{if(!e||!t)return e===t;if(e.height!==t.height||e.path!==t.path||e.width!==t.width||e.positions.length!==t.positions.length||e.itemLineLengths.length!==t.itemLineLengths.length)return!1;for(let n=0;n<e.positions.length;n+=1){let r=e.positions[n],i=t.positions[n];if(r.bottom!==i.bottom||r.depth!==i.depth||r.id!==i.id||r.top!==i.top||r.x!==i.x)return!1}for(let n=0;n<e.itemLineLengths.length;n+=1){let r=e.itemLineLengths[n],i=t.itemLineLengths[n];if(r[0]!==i[0]||r[1]!==i[1])return!1}return!0},j=(e,t)=>!e||!t?e===t:e.bottom===t.bottom&&e.offsetDistance===t.offsetDistance&&e.top===t.top,M=e=>{let t=F(e),[n,r,i]=I(t,e),a=p(()=>new Set(t),[t]),o=f(),[s,c]=h(0);return{activeIds:t,activeIdSet:a,listId:o,listRef:n,measurement:r,scrollTop:s,setScrollTop:c,track:i}},N=({activeIds:e,activeIdSet:r,headings:i,listClassName:a,listId:o,listRef:s,measurement:c,onSelect:l,scrollTop:f,setScrollTop:p,track:m,wrapperClassName:h})=>(d(()=>{let t=s.current,n=e[0];if(!t||!n)return;let r=Array.from(t.querySelectorAll(`a[data-heading-id]`)).find(e=>e.dataset.headingId===n);if(!r)return;let i=D({itemBottom:r.offsetTop+r.offsetHeight,itemTop:r.offsetTop,margin:16,scrollHeight:t.scrollHeight,scrollTop:t.scrollTop,viewportHeight:t.clientHeight});i!==t.scrollTop&&t.scrollTo({top:i})},[e,s]),_(`div`,{className:u(`relative`,h),children:[_(`div`,{"aria-hidden":`true`,"data-docs-toc-track":`true`,className:`pointer-events-none absolute left-0 top-0 transition-transform duration-150 ease-out`,style:x(c,f),children:[g(`svg`,{"data-docs-toc-track-path":`true`,height:c?.height??1,viewBox:`0 0 ${c?.width??1} ${c?.height??1}`,width:c?.width??1,className:`absolute left-0 top-0 transition-[clip-path,opacity] duration-150 ease-out`,style:S(m),children:g(`path`,{d:c?.path||`M0 0 L0 0`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-primary`})}),g(`span`,{"data-docs-toc-thumb":`true`,className:`absolute left-0 top-0 size-1 rounded-full bg-primary transition-[opacity,offset-distance] duration-150 ease-out`,style:C(c,m)})]}),g(`ol`,{id:o,ref:s,className:u(`flex flex-col overflow-auto py-1 [scrollbar-width:none]`,a),onScroll:e=>{p(e.currentTarget.scrollTop)},children:i.map((e,a)=>{let o=r.has(e.id),s=t(e.depth),c=a>0?t(i[a-1].depth):s,u=a+1<i.length?t(i[a+1].depth):s;return g(`li`,{children:_(`a`,{href:`#${e.id}`,"data-active":o?`true`:`false`,"data-depth":e.depth,"data-heading-id":e.id,className:b(),style:{paddingInlineStart:`${n(e.depth)}px`},onClick:l,children:[s===c?null:g(`svg`,{"aria-hidden":`true`,"data-docs-toc-item-curve":`true`,viewBox:`${Math.min(s,c)} 0 ${Math.abs(c-s)} 12`,className:`pointer-events-none absolute`,style:{height:`12px`,insetInlineStart:`${Math.min(s,c)}px`,top:`-6px`,width:`${Math.abs(c-s)+1}px`,zIndex:-1},children:g(`path`,{d:`M ${c} 0 C ${c} 8 ${s} 4 ${s} 12`,stroke:`currentColor`,strokeWidth:`1`,fill:`none`,className:`text-border`})}),g(`span`,{"aria-hidden":`true`,"data-docs-toc-item-line":`true`,className:`pointer-events-none absolute w-px bg-border`,style:{bottom:s===u?`0px`:`6px`,insetInlineStart:`${s}px`,top:s===c?`0px`:`6px`,zIndex:-1}}),e.title]})},e.id)})})]})),P=(e,t,n)=>{let r=new Set(e),i=t.positions.findIndex(e=>r.has(e.id));if(i===-1)return[null,null];let a=i;t.positions.forEach((e,t)=>{r.has(e.id)&&(a=t)});let o=n?n.startIdx>i||n.endIdx>a||n.startIdx===i&&n.endIdx===a&&n.isUp:!1,s=t.itemLineLengths[i]?.[0]??t.positions[i].top,c=t.itemLineLengths[a]?.[1]??t.positions[a].bottom;return[{bottom:t.positions[a].bottom,offsetDistance:o?s:c,top:t.positions[i].top},{endIdx:a,isUp:o,startIdx:i}]};function F(e){let[t,n]=h([]);return d(()=>{if(e.length===0||typeof document>`u`||typeof IntersectionObserver>`u`)return;let t=new Map(e.map(e=>[e.id,{active:!1,fallback:!1,id:e.id,t:0}])),r=(e=0)=>{for(let e of t.values())e.fallback&&(e.active=!1,e.fallback=!1);let r=w([...t.values()]);if(r.length===0){let n=T([...t.values()],e),i=n?t.get(n):void 0;i&&(i.active=!0,i.fallback=!0,i.t=Date.now(),r=[i.id])}n(r)},i=new IntersectionObserver(e=>{let n=Date.now();for(let r of e){let e=t.get(r.target.id);e&&(e.active!==r.isIntersecting||e.fallback)&&(e.active=r.isIntersecting,e.fallback=!1,e.t=n)}r(e[0]?.rootBounds?.top??0)},{threshold:.9});return e.forEach(e=>{let t=document.getElementById(e.id);t&&i.observe(t)}),r(),()=>{i.disconnect()}},[e]),t}function I(t,n){let r=m(null),[i,a]=h(null),[o,s]=h(null),c=m(null);return d(()=>{let t=r.current;if(!t)return;let i=0,o=()=>{cancelAnimationFrame(i),i=requestAnimationFrame(()=>{let r=e(O(t,n)),i={...r,itemLineLengths:k(r.positions,r.path)};a(e=>A(e,i)?e:i)})},s=typeof ResizeObserver>`u`?null:new ResizeObserver(o);return s?.observe(t),window.addEventListener(`resize`,o),o(),()=>{cancelAnimationFrame(i),s?.disconnect(),window.removeEventListener(`resize`,o)}},[n]),d(()=>{let e=0;return e=requestAnimationFrame(()=>{if(!i||t.length===0){c.current=null,s(e=>e===null?e:null);return}let[e,n]=P(t,i,c.current);c.current=n,s(t=>j(t,e)?t:e)}),()=>{cancelAnimationFrame(e)}},[t,i]),[r,i,o]}const L=({className:e,collapseDirection:t=`left`,collapseLabel:n=`Collapse outline`,collapseEnabled:r=!1,defaultCollapsed:a=!1,dock:o=`sticky`,expandLabel:s=`Expand outline`,headings:c,minHeadings:l=1,title:d=y})=>{let f=M(c),[p,m]=h(a),b=p?s:n,x=t===`right`?`right-0`:`left-0`,S=r?t===`right`?`pr-10`:`pl-10`:void 0;return c.length<l?null:g(`aside`,{"data-docs-region":`toc`,"data-docs-toc-collapsible":r?`true`:void 0,"data-docs-toc-collapsed":r?String(p):void 0,className:u(`hidden w-64 xl:block`,o===`sticky`?`shrink-0 xl:self-start xl:sticky xl:top-24`:`xl:fixed xl:top-24`,e),children:_(`nav`,{"aria-label":d,className:u(`relative flex w-64 flex-col text-sm`,t===`right`?`ml-auto`:void 0),children:[_(`div`,{inert:r&&p?!0:void 0,"aria-hidden":r&&p?!0:void 0,className:u(`flex w-64 flex-col gap-3 overflow-hidden transition-opacity duration-200 ease-out motion-reduce:transition-none`,r&&p?`pointer-events-none opacity-0`:`opacity-100`),children:[g(`p`,{className:u(`font-medium text-foreground`,S),children:d}),g(N,{...f,headings:c,listClassName:`max-h-[calc(100dvh-8rem)]`})]}),r?_(i,{type:`button`,variant:`ghost`,size:`icon`,"data-docs-toc-toggle":`true`,"aria-controls":f.listId,"aria-label":b,"aria-expanded":!p,title:b,className:u(x,`absolute top-0 z-10 shrink-0 text-muted-foreground transition-opacity duration-200 ease-out hover:text-foreground hover:opacity-100 motion-reduce:transition-none`,p?`opacity-100`:`opacity-60`),onClick:()=>{m(e=>!e)},children:[g(v,{className:`size-4`,"aria-hidden":`true`}),g(`span`,{className:`sr-only`,children:b})]}):null]})})},R=({className:e,headings:t,minHeadings:n=1,openLabel:d=`Open outline`,title:f=y})=>{let p=M(t),[m,b]=h(!1);return t.length<n?null:g(`div`,{className:u(`xl:hidden`,e),children:_(a,{open:m,onOpenChange:b,children:[g(l,{asChild:!0,children:_(i,{type:`button`,variant:`outline`,size:`icon`,title:d,"aria-label":d,"data-docs-toc-mobile-trigger":`true`,className:`fixed border border-input bg-background shadow-sm`,style:r(1),children:[g(v,{className:`size-4`,"aria-hidden":`true`}),g(`span`,{className:`sr-only`,children:d})]})}),_(o,{side:`right`,className:`flex h-dvh flex-col gap-0 p-0 sm:max-w-sm`,children:[g(s,{className:`border-b border-border/60 px-6 pb-4 pt-[calc(env(safe-area-inset-top)+1.5rem)] text-left`,children:g(c,{children:f})}),g(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden px-6 pb-[calc(env(safe-area-inset-bottom)+1.5rem)] pt-4`,children:g(N,{...p,headings:t,listClassName:`min-h-0 flex-1`,wrapperClassName:`min-h-0 flex-1`,onSelect:()=>{b(!1)}})})]})]})})};export{L as DefaultDocsToc,R as MobileDocsToc};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * name: @blackwork/docs
3
+ * version: v0.3.0
4
+ * description: Next-first documentation framework for Blackwork projects.
5
+ * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
+ * homepage: https://chengpeiquan.com
7
+ * license: MIT
8
+ */
9
+ const e=(e=0)=>({bottom:`${20+e*52}px`,height:`40px`,position:`fixed`,right:`20px`,width:`40px`,zIndex:10});exports.getDocsFloatingActionStyle=e;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * name: @blackwork/docs
3
+ * version: v0.3.0
4
+ * description: Next-first documentation framework for Blackwork projects.
5
+ * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
+ * homepage: https://chengpeiquan.com
7
+ * license: MIT
8
+ */
9
+ const e=(e=0)=>({bottom:`${20+e*52}px`,height:`40px`,position:`fixed`,right:`20px`,width:`40px`,zIndex:10});export{e as getDocsFloatingActionStyle};
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./link.cjs`);let n=require(`blackwork`),r=require(`react`);r=e.__toESM(r);let i=require(`react/jsx-runtime`),a=require(`blackwork/icons`);const o=e=>e.label||e.locale,s=({LinkComponent:e,localeLinks:t})=>{if(t.length<=1)return null;let r=t.find(e=>e.current),s=r?`Change language: ${o(r)}`:`Change language`;return(0,i.jsxs)(n.DropdownMenu,{children:[(0,i.jsx)(n.DropdownMenuTrigger,{asChild:!0,children:(0,i.jsxs)(n.Button,{variant:`ghost`,size:`icon`,title:s,"aria-label":`Change language`,"data-current-locale":r?`true`:void 0,className:`focus-visible:ring-0 focus-visible:ring-offset-0`,children:[(0,i.jsx)(a.Language,{className:`size-5`,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:`sr-only`,children:s})]})}),(0,i.jsx)(n.DropdownMenuContent,{align:`end`,className:`border-border`,children:t.map(t=>(0,i.jsx)(n.DropdownMenuItem,{asChild:!0,className:t.current?`gap-3 font-medium text-foreground`:`gap-3 text-muted-foreground`,children:(0,i.jsxs)(e,{href:t.href,hrefLang:t.lang,"aria-current":t.current?`page`:void 0,"data-current-locale":t.current?`true`:void 0,children:[(0,i.jsx)(`span`,{"aria-hidden":`true`,className:`flex size-4 items-center justify-center`,"data-current-locale-indicator":t.current?``:void 0,children:t.current?(0,i.jsx)(a.Check,{className:`size-4`}):null}),o(t)]})},t.href))})]})},c=({homeHref:e,LinkComponent:r=t.DefaultDocsLink,localeLinks:a=[],siteTitle:o})=>(0,i.jsx)(n.LayoutHeader,{"data-docs-region":`header`,socialLinksVisible:!1,wrapperClassName:`mx-auto w-full max-w-screen-2xl px-6 sm:px-8 md:px-10 lg:px-12 xl:px-14`,contentClassName:`min-w-0`,className:`border-b border-border/60`,languageToggle:(0,i.jsx)(s,{LinkComponent:r,localeLinks:a}),themeToggle:(0,i.jsx)(n.ThemeToggle,{title:`Toggle theme`,ariaLabel:`Toggle theme`}),children:(0,i.jsx)(r,{href:e,"data-docs-region":`header-brand`,className:`truncate text-lg font-semibold text-foreground`,children:o})});exports.DefaultDocsHeader=c;
9
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./link.cjs`);let n=require(`blackwork`),r=require(`react`);r=e.__toESM(r);let i=require(`react/jsx-runtime`),a=require(`blackwork/icons`);const o=e=>e.label||e.locale,s=({LinkComponent:e,localeLinks:t})=>{if(t.length<=1)return null;let r=t.find(e=>e.current),s=r?`Change language: ${o(r)}`:`Change language`;return(0,i.jsxs)(n.DropdownMenu,{children:[(0,i.jsx)(n.DropdownMenuTrigger,{asChild:!0,children:(0,i.jsxs)(n.Button,{variant:`ghost`,size:`icon`,title:s,"aria-label":`Change language`,"data-current-locale":r?`true`:void 0,className:`focus-visible:ring-0 focus-visible:ring-offset-0`,children:[(0,i.jsx)(a.Language,{className:`size-5`,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:`sr-only`,children:s})]})}),(0,i.jsx)(n.DropdownMenuContent,{align:`end`,className:`border-border`,children:t.map(t=>(0,i.jsx)(n.DropdownMenuItem,{asChild:!0,className:t.current?`gap-3 font-medium text-foreground`:`gap-3 text-muted-foreground`,children:(0,i.jsxs)(e,{href:t.href,hrefLang:t.lang,"aria-current":t.current?`page`:void 0,"data-current-locale":t.current?`true`:void 0,children:[(0,i.jsx)(`span`,{"aria-hidden":`true`,className:`flex size-4 items-center justify-center`,"data-current-locale-indicator":t.current?``:void 0,children:t.current?(0,i.jsx)(a.Check,{className:`size-4`}):null}),o(t)]})},t.href))})]})},c=({headerActions:e,homeHref:r,LinkComponent:a=t.DefaultDocsLink,localeLinks:o=[],siteTitle:c})=>(0,i.jsxs)(n.LayoutHeader,{"data-docs-region":`header`,socialLinksVisible:!1,wrapperClassName:`mx-auto w-full max-w-screen-2xl px-6 sm:px-8 md:px-10 lg:px-12 xl:px-14`,contentClassName:`min-w-0`,className:`border-b border-border/60`,languageToggle:(0,i.jsx)(s,{LinkComponent:a,localeLinks:o}),themeToggle:(0,i.jsx)(n.ThemeToggle,{title:`Toggle theme`,ariaLabel:`Toggle theme`}),children:[(0,i.jsx)(a,{href:r,"data-docs-region":`header-brand`,className:`truncate text-lg font-semibold text-foreground`,children:c}),e?(0,i.jsx)(`div`,{"data-docs-region":`header-actions`,className:`ml-auto hidden items-center pl-4 md:flex`,children:e}):null]});exports.DefaultDocsHeader=c;
@@ -4,6 +4,7 @@ import React from "react";
4
4
 
5
5
  //#region src/theme/components/header.d.ts
6
6
  interface DefaultDocsHeaderProps {
7
+ headerActions?: React.ReactNode;
7
8
  homeHref: string;
8
9
  LinkComponent?: DocsThemeLinkComponent;
9
10
  localeLinks?: DocsThemeLocaleLink[];
@@ -4,6 +4,7 @@ import React from "react";
4
4
 
5
5
  //#region src/theme/components/header.d.ts
6
6
  interface DefaultDocsHeaderProps {
7
+ headerActions?: React.ReactNode;
7
8
  homeHref: string;
8
9
  LinkComponent?: DocsThemeLinkComponent;
9
10
  localeLinks?: DocsThemeLocaleLink[];
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- import{DefaultDocsLink as e}from"./link.mjs";import{Button as t,DropdownMenu as n,DropdownMenuContent as r,DropdownMenuItem as i,DropdownMenuTrigger as a,LayoutHeader as o,ThemeToggle as s}from"blackwork";import"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{Check as u,Language as d}from"blackwork/icons";const f=e=>e.label||e.locale,p=({LinkComponent:e,localeLinks:o})=>{if(o.length<=1)return null;let s=o.find(e=>e.current),p=s?`Change language: ${f(s)}`:`Change language`;return l(n,{children:[c(a,{asChild:!0,children:l(t,{variant:`ghost`,size:`icon`,title:p,"aria-label":`Change language`,"data-current-locale":s?`true`:void 0,className:`focus-visible:ring-0 focus-visible:ring-offset-0`,children:[c(d,{className:`size-5`,"aria-hidden":`true`}),c(`span`,{className:`sr-only`,children:p})]})}),c(r,{align:`end`,className:`border-border`,children:o.map(t=>c(i,{asChild:!0,className:t.current?`gap-3 font-medium text-foreground`:`gap-3 text-muted-foreground`,children:l(e,{href:t.href,hrefLang:t.lang,"aria-current":t.current?`page`:void 0,"data-current-locale":t.current?`true`:void 0,children:[c(`span`,{"aria-hidden":`true`,className:`flex size-4 items-center justify-center`,"data-current-locale-indicator":t.current?``:void 0,children:t.current?c(u,{className:`size-4`}):null}),f(t)]})},t.href))})]})},m=({homeHref:t,LinkComponent:n=e,localeLinks:r=[],siteTitle:i})=>c(o,{"data-docs-region":`header`,socialLinksVisible:!1,wrapperClassName:`mx-auto w-full max-w-screen-2xl px-6 sm:px-8 md:px-10 lg:px-12 xl:px-14`,contentClassName:`min-w-0`,className:`border-b border-border/60`,languageToggle:c(p,{LinkComponent:n,localeLinks:r}),themeToggle:c(s,{title:`Toggle theme`,ariaLabel:`Toggle theme`}),children:c(n,{href:t,"data-docs-region":`header-brand`,className:`truncate text-lg font-semibold text-foreground`,children:i})});export{m as DefaultDocsHeader};
9
+ import{DefaultDocsLink as e}from"./link.mjs";import{Button as t,DropdownMenu as n,DropdownMenuContent as r,DropdownMenuItem as i,DropdownMenuTrigger as a,LayoutHeader as o,ThemeToggle as s}from"blackwork";import"react";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{Check as u,Language as d}from"blackwork/icons";const f=e=>e.label||e.locale,p=({LinkComponent:e,localeLinks:o})=>{if(o.length<=1)return null;let s=o.find(e=>e.current),p=s?`Change language: ${f(s)}`:`Change language`;return l(n,{children:[c(a,{asChild:!0,children:l(t,{variant:`ghost`,size:`icon`,title:p,"aria-label":`Change language`,"data-current-locale":s?`true`:void 0,className:`focus-visible:ring-0 focus-visible:ring-offset-0`,children:[c(d,{className:`size-5`,"aria-hidden":`true`}),c(`span`,{className:`sr-only`,children:p})]})}),c(r,{align:`end`,className:`border-border`,children:o.map(t=>c(i,{asChild:!0,className:t.current?`gap-3 font-medium text-foreground`:`gap-3 text-muted-foreground`,children:l(e,{href:t.href,hrefLang:t.lang,"aria-current":t.current?`page`:void 0,"data-current-locale":t.current?`true`:void 0,children:[c(`span`,{"aria-hidden":`true`,className:`flex size-4 items-center justify-center`,"data-current-locale-indicator":t.current?``:void 0,children:t.current?c(u,{className:`size-4`}):null}),f(t)]})},t.href))})]})},m=({headerActions:t,homeHref:n,LinkComponent:r=e,localeLinks:i=[],siteTitle:a})=>l(o,{"data-docs-region":`header`,socialLinksVisible:!1,wrapperClassName:`mx-auto w-full max-w-screen-2xl px-6 sm:px-8 md:px-10 lg:px-12 xl:px-14`,contentClassName:`min-w-0`,className:`border-b border-border/60`,languageToggle:c(p,{LinkComponent:r,localeLinks:i}),themeToggle:c(s,{title:`Toggle theme`,ariaLabel:`Toggle theme`}),children:[c(r,{href:n,"data-docs-region":`header-brand`,className:`truncate text-lg font-semibold text-foreground`,children:a}),t?c(`div`,{"data-docs-region":`header-actions`,className:`ml-auto hidden items-center pl-4 md:flex`,children:t}):null]});export{m as DefaultDocsHeader};
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/define-config.cjs`),n=require(`../../navigation/build-locale-links.cjs`),r=require(`../../navigation/build-sidebar.cjs`),i=require(`./link.cjs`),a=require(`./header.cjs`),o=require(`../slots.cjs`),s=require(`../create-home-data.cjs`);let c=require(`blackwork`),l=require(`react`);l=e.__toESM(l);let u=require(`react/jsx-runtime`);const d=e=>e.site.title||`Documentation`,f=(e,t,r)=>{let i=r.getEntry(t,[]);return i?n.buildLocaleLinks({config:e,entry:i,source:r}):r.getLocaleCodes().map(n=>{let i=Object.values(e.content.locales??{}).find(e=>e.code===n);return{locale:n,href:r.getCanonicalHref(n,[]),label:i?.label,lang:i?.lang,current:n===t}})},p=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:e?.href===t.href})),m=({config:e,locale:n,source:l})=>{let m=t.defineConfig(e),h=l.getEntries(n),g=l.getEntry(n,[]),_=s.createHomeData({config:m,locale:n,source:l}),v=p(g,r.buildSidebar({entries:h,currentHref:_.homeHref})),y=f(m,n,l),b=o.resolveThemeSlots(m.slots).link??i.DefaultDocsLink;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a.DefaultDocsHeader,{homeHref:_.homeHref,LinkComponent:b,localeLinks:y,navigation:v,siteDescription:m.site.description,siteTitle:d(m)}),(0,u.jsxs)(`main`,{"data-docs-region":`home-shell`,className:`flex min-h-[calc(100dvh-4rem)] w-full flex-col bg-background px-6 py-10`,children:[(0,u.jsxs)(`section`,{"data-docs-region":`home-hero`,"data-home-mode":_.mode,className:`mx-auto flex w-full max-w-6xl flex-1 flex-col items-center justify-center gap-8 text-center`,children:[_.badge||_.eyebrow?(0,u.jsxs)(c.Badge,{variant:`secondary`,className:`max-w-full gap-2 px-4 py-2 text-sm font-medium`,children:[_.badge?(0,u.jsx)(`span`,{className:`truncate`,children:_.badge}):null,_.badge&&_.eyebrow?(0,u.jsx)(c.Separator,{orientation:`vertical`,"aria-hidden":`true`,className:`h-4 bg-border`}):null,_.eyebrow?(0,u.jsx)(`span`,{className:`truncate text-muted-foreground`,children:_.eyebrow}):null]}):null,(0,u.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,u.jsx)(`h1`,{className:`max-w-5xl text-balance text-5xl font-semibold leading-none text-foreground sm:text-6xl lg:text-7xl`,children:_.title}),(0,u.jsx)(`p`,{className:`max-w-3xl text-pretty text-lg leading-8 text-muted-foreground sm:text-xl`,children:_.description})]}),(0,u.jsxs)(`div`,{className:`flex flex-col items-center gap-3 text-base font-medium sm:flex-row`,children:[(0,u.jsx)(c.Button,{asChild:!0,size:`lg`,className:`rounded-full px-6 shadow-sm`,children:(0,u.jsx)(b,{href:_.primaryAction.href,children:_.primaryAction.label})}),_.secondaryAction?(0,u.jsx)(c.Button,{asChild:!0,variant:`ghost`,size:`lg`,className:`rounded-full px-6`,children:(0,u.jsx)(b,{href:_.secondaryAction.href,children:_.secondaryAction.label})}):null]})]}),_.highlights.length>0?(0,u.jsx)(`section`,{"data-docs-region":`home-highlights`,className:`mx-auto grid w-full max-w-6xl gap-4 pb-16 md:grid-cols-3`,children:_.highlights.map(e=>(0,u.jsx)(b,{href:e.href,className:`block transition-colors`,children:(0,u.jsx)(c.Card,{className:`h-full border-border/60 transition-colors hover:bg-accent hover:text-accent-foreground`,children:(0,u.jsxs)(c.CardContent,{className:`flex flex-col gap-2 p-4`,children:[(0,u.jsx)(`h2`,{className:`text-lg font-medium text-foreground`,children:e.title}),(0,u.jsx)(`p`,{className:`text-pretty text-sm text-muted-foreground`,children:e.description})]})})},e.href))}):null]})]})};exports.DefaultHomeShell=m;
9
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../config/define-config.cjs`),n=require(`../../navigation/build-locale-links.cjs`),r=require(`../../navigation/build-sidebar.cjs`),i=require(`./link.cjs`),a=require(`./header.cjs`),o=require(`../slots.cjs`),s=require(`./docs-scroll-to-top.cjs`),c=require(`./shell-shared.cjs`),l=require(`../create-home-data.cjs`);let u=require(`blackwork`),d=require(`react`);d=e.__toESM(d);let f=require(`react/jsx-runtime`);const p=e=>e.site.title||`Documentation`,m=(e,t,r)=>{let i=r.getEntry(t,[]);return i?n.buildLocaleLinks({config:e,entry:i,source:r}):r.getLocaleCodes().map(n=>{let i=Object.values(e.content.locales??{}).find(e=>e.code===n);return{locale:n,href:r.getCanonicalHref(n,[]),label:i?.label,lang:i?.lang,current:n===t}})},h=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:e?.href===t.href})),g=({config:e,locale:n,source:d})=>{let g=t.defineConfig(e),_=d.getEntries(n),v=d.getEntry(n,[]),y=l.createHomeData({config:g,locale:n,source:d}),b=h(v,r.buildSidebar({entries:_,currentHref:y.homeHref})),x=m(g,n,d),S=o.resolveThemeSlots(g.slots),C=S.headerActions,w=S.link??i.DefaultDocsLink,T=c.getPagefindFilterEntries(c.getPagefindFilters({locale:n}));return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(a.DefaultDocsHeader,{headerActions:C?(0,f.jsx)(C,{homeHref:y.homeHref,localeLinks:x,navigation:b,siteDescription:g.site.description,siteTitle:p(g)}):void 0,homeHref:y.homeHref,LinkComponent:w,localeLinks:x,navigation:b,siteDescription:g.site.description,siteTitle:p(g)}),(0,f.jsx)(s.DocsScrollToTop,{}),(0,f.jsxs)(`main`,{"data-docs-region":`home-shell`,className:`flex min-h-[calc(100dvh-4rem)] w-full flex-col bg-background px-6 py-10`,children:[(0,f.jsxs)(`section`,{"data-docs-region":`home-hero`,"data-home-mode":y.mode,"data-pagefind-body":``,className:`mx-auto flex w-full max-w-6xl flex-1 flex-col items-center justify-center gap-8 text-center`,children:[(0,f.jsx)(`div`,{hidden:!0,children:T.map(e=>(0,f.jsx)(`span`,{"data-pagefind-filter":e},e))}),y.badge||y.eyebrow?(0,f.jsxs)(u.Badge,{variant:`secondary`,className:`max-w-full gap-2 px-4 py-2 text-sm font-medium`,children:[y.badge?(0,f.jsx)(`span`,{className:`truncate`,children:y.badge}):null,y.badge&&y.eyebrow?(0,f.jsx)(u.Separator,{orientation:`vertical`,"aria-hidden":`true`,className:`h-4 bg-border`}):null,y.eyebrow?(0,f.jsx)(`span`,{className:`truncate text-muted-foreground`,children:y.eyebrow}):null]}):null,(0,f.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,f.jsx)(`h1`,{className:`max-w-5xl text-balance text-5xl font-semibold leading-none text-foreground sm:text-6xl lg:text-7xl`,children:y.title}),(0,f.jsx)(`p`,{className:`max-w-3xl text-pretty text-lg leading-8 text-muted-foreground sm:text-xl`,children:y.description})]}),(0,f.jsxs)(`div`,{className:`flex flex-col items-center gap-3 text-base font-medium sm:flex-row`,children:[(0,f.jsx)(u.Button,{asChild:!0,size:`lg`,className:`rounded-full px-6 shadow-sm`,children:(0,f.jsx)(w,{href:y.primaryAction.href,children:y.primaryAction.label})}),y.secondaryAction?(0,f.jsx)(u.Button,{asChild:!0,variant:`ghost`,size:`lg`,className:`rounded-full px-6`,children:(0,f.jsx)(w,{href:y.secondaryAction.href,children:y.secondaryAction.label})}):null]})]}),y.highlights.length>0?(0,f.jsx)(`section`,{"data-docs-region":`home-highlights`,className:`mx-auto grid w-full max-w-6xl gap-4 pb-16 md:grid-cols-3`,children:y.highlights.map(e=>(0,f.jsx)(w,{href:e.href,className:`block transition-colors`,children:(0,f.jsx)(u.Card,{className:`h-full border-border/60 transition-colors hover:bg-accent hover:text-accent-foreground`,children:(0,f.jsxs)(u.CardContent,{className:`flex flex-col gap-2 p-4`,children:[(0,f.jsx)(`h2`,{className:`text-lg font-medium text-foreground`,children:e.title}),(0,f.jsx)(`p`,{className:`text-pretty text-sm text-muted-foreground`,children:e.description})]})})},e.href))}):null]})]})};exports.DefaultHomeShell=g;
@@ -1,6 +1,6 @@
1
1
 
2
- import { DocsConfig, NormalizedDocsConfig } from "../../config/types.mjs";
3
2
  import { DocsSource } from "../../source/types.mjs";
3
+ import { DocsConfig, NormalizedDocsConfig } from "../../config/types.mjs";
4
4
  import React from "react";
5
5
 
6
6
  //#region src/theme/components/home-shell.d.ts
@@ -1,6 +1,6 @@
1
1
 
2
- import { DocsConfig, NormalizedDocsConfig } from "../../config/types.js";
3
2
  import { DocsSource } from "../../source/types.js";
3
+ import { DocsConfig, NormalizedDocsConfig } from "../../config/types.js";
4
4
  import React from "react";
5
5
 
6
6
  //#region src/theme/components/home-shell.d.ts
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- import{defineConfig as e}from"../../config/define-config.mjs";import{buildLocaleLinks as t}from"../../navigation/build-locale-links.mjs";import{buildSidebar as n}from"../../navigation/build-sidebar.mjs";import{DefaultDocsLink as r}from"./link.mjs";import{DefaultDocsHeader as i}from"./header.mjs";import{resolveThemeSlots as a}from"../slots.mjs";import{createHomeData as o}from"../create-home-data.mjs";import{Badge as s,Button as c,Card as l,CardContent as u,Separator as d}from"blackwork";import"react";import{Fragment as f,jsx as p,jsxs as m}from"react/jsx-runtime";const h=e=>e.site.title||`Documentation`,g=(e,n,r)=>{let i=r.getEntry(n,[]);return i?t({config:e,entry:i,source:r}):r.getLocaleCodes().map(t=>{let i=Object.values(e.content.locales??{}).find(e=>e.code===t);return{locale:t,href:r.getCanonicalHref(t,[]),label:i?.label,lang:i?.lang,current:t===n}})},_=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:e?.href===t.href})),v=({config:t,locale:v,source:y})=>{let b=e(t),x=y.getEntries(v),S=y.getEntry(v,[]),C=o({config:b,locale:v,source:y}),w=_(S,n({entries:x,currentHref:C.homeHref})),T=g(b,v,y),E=a(b.slots).link??r;return m(f,{children:[p(i,{homeHref:C.homeHref,LinkComponent:E,localeLinks:T,navigation:w,siteDescription:b.site.description,siteTitle:h(b)}),m(`main`,{"data-docs-region":`home-shell`,className:`flex min-h-[calc(100dvh-4rem)] w-full flex-col bg-background px-6 py-10`,children:[m(`section`,{"data-docs-region":`home-hero`,"data-home-mode":C.mode,className:`mx-auto flex w-full max-w-6xl flex-1 flex-col items-center justify-center gap-8 text-center`,children:[C.badge||C.eyebrow?m(s,{variant:`secondary`,className:`max-w-full gap-2 px-4 py-2 text-sm font-medium`,children:[C.badge?p(`span`,{className:`truncate`,children:C.badge}):null,C.badge&&C.eyebrow?p(d,{orientation:`vertical`,"aria-hidden":`true`,className:`h-4 bg-border`}):null,C.eyebrow?p(`span`,{className:`truncate text-muted-foreground`,children:C.eyebrow}):null]}):null,m(`div`,{className:`flex flex-col items-center gap-6`,children:[p(`h1`,{className:`max-w-5xl text-balance text-5xl font-semibold leading-none text-foreground sm:text-6xl lg:text-7xl`,children:C.title}),p(`p`,{className:`max-w-3xl text-pretty text-lg leading-8 text-muted-foreground sm:text-xl`,children:C.description})]}),m(`div`,{className:`flex flex-col items-center gap-3 text-base font-medium sm:flex-row`,children:[p(c,{asChild:!0,size:`lg`,className:`rounded-full px-6 shadow-sm`,children:p(E,{href:C.primaryAction.href,children:C.primaryAction.label})}),C.secondaryAction?p(c,{asChild:!0,variant:`ghost`,size:`lg`,className:`rounded-full px-6`,children:p(E,{href:C.secondaryAction.href,children:C.secondaryAction.label})}):null]})]}),C.highlights.length>0?p(`section`,{"data-docs-region":`home-highlights`,className:`mx-auto grid w-full max-w-6xl gap-4 pb-16 md:grid-cols-3`,children:C.highlights.map(e=>p(E,{href:e.href,className:`block transition-colors`,children:p(l,{className:`h-full border-border/60 transition-colors hover:bg-accent hover:text-accent-foreground`,children:m(u,{className:`flex flex-col gap-2 p-4`,children:[p(`h2`,{className:`text-lg font-medium text-foreground`,children:e.title}),p(`p`,{className:`text-pretty text-sm text-muted-foreground`,children:e.description})]})})},e.href))}):null]})]})};export{v as DefaultHomeShell};
9
+ import{defineConfig as e}from"../../config/define-config.mjs";import{buildLocaleLinks as t}from"../../navigation/build-locale-links.mjs";import{buildSidebar as n}from"../../navigation/build-sidebar.mjs";import{DefaultDocsLink as r}from"./link.mjs";import{DefaultDocsHeader as i}from"./header.mjs";import{resolveThemeSlots as a}from"../slots.mjs";import{DocsScrollToTop as o}from"./docs-scroll-to-top.mjs";import{getPagefindFilterEntries as s,getPagefindFilters as c}from"./shell-shared.mjs";import{createHomeData as l}from"../create-home-data.mjs";import{Badge as u,Button as d,Card as f,CardContent as p,Separator as m}from"blackwork";import"react";import{Fragment as h,jsx as g,jsxs as _}from"react/jsx-runtime";const v=e=>e.site.title||`Documentation`,y=(e,n,r)=>{let i=r.getEntry(n,[]);return i?t({config:e,entry:i,source:r}):r.getLocaleCodes().map(t=>{let i=Object.values(e.content.locales??{}).find(e=>e.code===t);return{locale:t,href:r.getCanonicalHref(t,[]),label:i?.label,lang:i?.lang,current:t===n}})},b=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:e?.href===t.href})),x=({config:t,locale:x,source:S})=>{let C=e(t),w=S.getEntries(x),T=S.getEntry(x,[]),E=l({config:C,locale:x,source:S}),D=b(T,n({entries:w,currentHref:E.homeHref})),O=y(C,x,S),k=a(C.slots),A=k.headerActions,j=k.link??r,M=s(c({locale:x}));return _(h,{children:[g(i,{headerActions:A?g(A,{homeHref:E.homeHref,localeLinks:O,navigation:D,siteDescription:C.site.description,siteTitle:v(C)}):void 0,homeHref:E.homeHref,LinkComponent:j,localeLinks:O,navigation:D,siteDescription:C.site.description,siteTitle:v(C)}),g(o,{}),_(`main`,{"data-docs-region":`home-shell`,className:`flex min-h-[calc(100dvh-4rem)] w-full flex-col bg-background px-6 py-10`,children:[_(`section`,{"data-docs-region":`home-hero`,"data-home-mode":E.mode,"data-pagefind-body":``,className:`mx-auto flex w-full max-w-6xl flex-1 flex-col items-center justify-center gap-8 text-center`,children:[g(`div`,{hidden:!0,children:M.map(e=>g(`span`,{"data-pagefind-filter":e},e))}),E.badge||E.eyebrow?_(u,{variant:`secondary`,className:`max-w-full gap-2 px-4 py-2 text-sm font-medium`,children:[E.badge?g(`span`,{className:`truncate`,children:E.badge}):null,E.badge&&E.eyebrow?g(m,{orientation:`vertical`,"aria-hidden":`true`,className:`h-4 bg-border`}):null,E.eyebrow?g(`span`,{className:`truncate text-muted-foreground`,children:E.eyebrow}):null]}):null,_(`div`,{className:`flex flex-col items-center gap-6`,children:[g(`h1`,{className:`max-w-5xl text-balance text-5xl font-semibold leading-none text-foreground sm:text-6xl lg:text-7xl`,children:E.title}),g(`p`,{className:`max-w-3xl text-pretty text-lg leading-8 text-muted-foreground sm:text-xl`,children:E.description})]}),_(`div`,{className:`flex flex-col items-center gap-3 text-base font-medium sm:flex-row`,children:[g(d,{asChild:!0,size:`lg`,className:`rounded-full px-6 shadow-sm`,children:g(j,{href:E.primaryAction.href,children:E.primaryAction.label})}),E.secondaryAction?g(d,{asChild:!0,variant:`ghost`,size:`lg`,className:`rounded-full px-6`,children:g(j,{href:E.secondaryAction.href,children:E.secondaryAction.label})}):null]})]}),E.highlights.length>0?g(`section`,{"data-docs-region":`home-highlights`,className:`mx-auto grid w-full max-w-6xl gap-4 pb-16 md:grid-cols-3`,children:E.highlights.map(e=>g(j,{href:e.href,className:`block transition-colors`,children:g(f,{className:`h-full border-border/60 transition-colors hover:bg-accent hover:text-accent-foreground`,children:_(p,{className:`flex flex-col gap-2 p-4`,children:[g(`h2`,{className:`text-lg font-medium text-foreground`,children:e.title}),g(`p`,{className:`text-pretty text-sm text-muted-foreground`,children:e.description})]})})},e.href))}):null]})]})};export{x as DefaultHomeShell};
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- const e={layout:`docs`,sidebar:`auto`},t=e=>e.site.title||`Documentation`,n=(e,t)=>e.site.description||t.description||`Browse the available documentation.`,r=(e,t,n)=>t===e.href?!0:n.length===0?!1:n.every((t,n)=>e.slugSegments[n]===t),i=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:r(e,t.href,t.slugSegments)})),a=e=>e.flatMap(e=>{let t=e.children?a(e.children):[];return(e.depth??0)<=1?t:[{depth:e.depth??2,id:e.id,title:e.value??e.id},...t]}),o=e=>e.slugSegments[0],s=(e,t)=>{let n=o(t);return n?e.filter(e=>e.slugSegments[0]===n):e},c=(t,n)=>{let r=o(n);if(!r)return e;let i=t.content?.sections?.[r],a=i?.layout??e.layout;return{layout:a,sidebar:i?.sidebar??(a===`content`?!1:e.sidebar)}};exports.getEntrySectionConfig=c,exports.getEntrySectionKey=o,exports.getFooterDescription=n,exports.getSectionEntries=s,exports.getSiteTitle=t,exports.getTocHeadings=a,exports.toNavigation=i;
9
+ const e={layout:`docs`,sidebar:`auto`},t=e=>e.site.title||`Documentation`,n=(e,t)=>e.site.description||t.description||`Browse the available documentation.`,r=(e,t,n)=>typeof e==`string`?e:e?.[t]??n,i=(e,t)=>({collapseLabel:r(e.theme.toc?.collapseLabel,t,`Collapse outline`),expandLabel:r(e.theme.toc?.expandLabel,t,`Expand outline`),openLabel:r(e.theme.toc?.openLabel,t,`Open outline`),title:r(e.theme.toc?.title,t,`On This Page`)}),a=(e,t,n)=>t===e.href?!0:n.length===0?!1:n.every((t,n)=>e.slugSegments[n]===t),o=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:a(e,t.href,t.slugSegments)})),s=e=>e.flatMap(e=>{let t=e.children?s(e.children):[];return(e.depth??0)<=1?t:[{depth:e.depth??2,id:e.id,title:e.value??e.id},...t]}),c=e=>e.slugSegments[0],l=(e,t)=>{let n=c(t);return n?e.filter(e=>e.slugSegments[0]===n):e},u=(t,n)=>{let r=c(n);if(!r)return e;let i=t.content?.sections?.[r],a=i?.layout??e.layout;return{layout:a,sidebar:i?.sidebar??(a===`content`?!1:e.sidebar)}},d=e=>e?.trim(),f=e=>{let t=e.split(/[-_]/u).map(e=>d(e)).filter(e=>!!e);return{language:t[0]?.toLowerCase(),region:t.slice(1).find(e=>/^(?:[A-Za-z]{2}|\d{3})$/u.test(e))?.toUpperCase()}},p=({kind:e=`docs`,layout:t,locale:n,section:r})=>{let{language:i,region:a}=f(n);return{kind:e,locale:n,...i?{language:i}:{},...a?{region:a}:{},...r?{section:r}:{},...t?{layout:t}:{}}},m=e=>Object.entries(e).map(([e,t])=>`${e}:${t}`);exports.getEntrySectionConfig=u,exports.getEntrySectionKey=c,exports.getFooterDescription=n,exports.getPagefindFilterEntries=m,exports.getPagefindFilters=p,exports.getSectionEntries=l,exports.getSiteTitle=t,exports.getTocHeadings=s,exports.getTocLabels=i,exports.toNavigation=o;
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- const e={layout:`docs`,sidebar:`auto`},t=e=>e.site.title||`Documentation`,n=(e,t)=>e.site.description||t.description||`Browse the available documentation.`,r=(e,t,n)=>t===e.href?!0:n.length===0?!1:n.every((t,n)=>e.slugSegments[n]===t),i=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:r(e,t.href,t.slugSegments)})),a=e=>e.flatMap(e=>{let t=e.children?a(e.children):[];return(e.depth??0)<=1?t:[{depth:e.depth??2,id:e.id,title:e.value??e.id},...t]}),o=e=>e.slugSegments[0],s=(e,t)=>{let n=o(t);return n?e.filter(e=>e.slugSegments[0]===n):e},c=(t,n)=>{let r=o(n);if(!r)return e;let i=t.content?.sections?.[r],a=i?.layout??e.layout;return{layout:a,sidebar:i?.sidebar??(a===`content`?!1:e.sidebar)}};export{c as getEntrySectionConfig,o as getEntrySectionKey,n as getFooterDescription,s as getSectionEntries,t as getSiteTitle,a as getTocHeadings,i as toNavigation};
9
+ const e={layout:`docs`,sidebar:`auto`},t=e=>e.site.title||`Documentation`,n=(e,t)=>e.site.description||t.description||`Browse the available documentation.`,r=(e,t,n)=>typeof e==`string`?e:e?.[t]??n,i=(e,t)=>({collapseLabel:r(e.theme.toc?.collapseLabel,t,`Collapse outline`),expandLabel:r(e.theme.toc?.expandLabel,t,`Expand outline`),openLabel:r(e.theme.toc?.openLabel,t,`Open outline`),title:r(e.theme.toc?.title,t,`On This Page`)}),a=(e,t,n)=>t===e.href?!0:n.length===0?!1:n.every((t,n)=>e.slugSegments[n]===t),o=(e,t)=>t.filter(e=>e.depth===0).map(t=>({href:t.href,label:t.title,current:a(e,t.href,t.slugSegments)})),s=e=>e.flatMap(e=>{let t=e.children?s(e.children):[];return(e.depth??0)<=1?t:[{depth:e.depth??2,id:e.id,title:e.value??e.id},...t]}),c=e=>e.slugSegments[0],l=(e,t)=>{let n=c(t);return n?e.filter(e=>e.slugSegments[0]===n):e},u=(t,n)=>{let r=c(n);if(!r)return e;let i=t.content?.sections?.[r],a=i?.layout??e.layout;return{layout:a,sidebar:i?.sidebar??(a===`content`?!1:e.sidebar)}},d=e=>e?.trim(),f=e=>{let t=e.split(/[-_]/u).map(e=>d(e)).filter(e=>!!e);return{language:t[0]?.toLowerCase(),region:t.slice(1).find(e=>/^(?:[A-Za-z]{2}|\d{3})$/u.test(e))?.toUpperCase()}},p=({kind:e=`docs`,layout:t,locale:n,section:r})=>{let{language:i,region:a}=f(n);return{kind:e,locale:n,...i?{language:i}:{},...a?{region:a}:{},...r?{section:r}:{},...t?{layout:t}:{}}},m=e=>Object.entries(e).map(([e,t])=>`${e}:${t}`);export{u as getEntrySectionConfig,c as getEntrySectionKey,n as getFooterDescription,m as getPagefindFilterEntries,p as getPagefindFilters,l as getSectionEntries,t as getSiteTitle,s as getTocHeadings,i as getTocLabels,o as toNavigation};
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
@@ -1,7 +1,7 @@
1
1
 
2
+ import { DocsSource } from "../source/types.mjs";
2
3
  import { DocsThemeHomeData } from "./types.mjs";
3
4
  import { DocsConfig, NormalizedDocsConfig } from "../config/types.mjs";
4
- import { DocsSource } from "../source/types.mjs";
5
5
 
6
6
  //#region src/theme/create-home-data.d.ts
7
7
  interface CreateHomeDataOptions {
@@ -1,7 +1,7 @@
1
1
 
2
+ import { DocsSource } from "../source/types.js";
2
3
  import { DocsThemeHomeData } from "./types.js";
3
4
  import { DocsConfig, NormalizedDocsConfig } from "../config/types.js";
4
- import { DocsSource } from "../source/types.js";
5
5
 
6
6
  //#region src/theme/create-home-data.d.ts
7
7
  interface CreateHomeDataOptions {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- const e=e=>typeof e==`object`&&!!e,t=e=>typeof e==`function`,n=e=>typeof e==`function`;function r(r){return e(r)?{...t(r.footer)?{footer:r.footer}:{},...n(r.link)?{link:r.link}:{}}:{}}exports.resolveThemeSlots=r;
9
+ const e=e=>typeof e==`object`&&!!e,t=e=>typeof e==`function`,n=e=>typeof e==`function`,r=e=>typeof e==`function`,i=e=>typeof e==`function`;function a(a){return e(a)?{...r(a.contentHeaderMeta)?{contentHeaderMeta:a.contentHeaderMeta}:{},...t(a.footer)?{footer:a.footer}:{},...n(a.headerActions)?{headerActions:a.headerActions}:{},...i(a.link)?{link:a.link}:{}}:{}}exports.resolveThemeSlots=a;
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- const e=e=>typeof e==`object`&&!!e,t=e=>typeof e==`function`,n=e=>typeof e==`function`;function r(r){return e(r)?{...t(r.footer)?{footer:r.footer}:{},...n(r.link)?{link:r.link}:{}}:{}}export{r as resolveThemeSlots};
9
+ const e=e=>typeof e==`object`&&!!e,t=e=>typeof e==`function`,n=e=>typeof e==`function`,r=e=>typeof e==`function`,i=e=>typeof e==`function`;function a(a){return e(a)?{...r(a.contentHeaderMeta)?{contentHeaderMeta:a.contentHeaderMeta}:{},...t(a.footer)?{footer:a.footer}:{},...n(a.headerActions)?{headerActions:a.headerActions}:{},...i(a.link)?{link:a.link}:{}}:{}}export{a as resolveThemeSlots};
@@ -1,4 +1,5 @@
1
1
 
2
+ import { DocEntry } from "../source/types.mjs";
2
3
  import { AnchorHTMLAttributes, ComponentType, ReactNode } from "react";
3
4
 
4
5
  //#region src/theme/types.d.ts
@@ -26,8 +27,20 @@ interface DocsThemeFooterSlotProps {
26
27
  siteTitle: string;
27
28
  LinkComponent?: DocsThemeLinkComponent;
28
29
  }
30
+ interface DocsThemeHeaderActionsProps {
31
+ homeHref: string;
32
+ localeLinks?: DocsThemeLocaleLink[];
33
+ navigation: DocsThemeNavItem[];
34
+ siteDescription?: string;
35
+ siteTitle: string;
36
+ }
37
+ interface DocsThemeContentHeaderMetaProps {
38
+ entry: DocEntry;
39
+ }
29
40
  interface DocsThemeSlots {
41
+ contentHeaderMeta?: ComponentType<DocsThemeContentHeaderMetaProps>;
30
42
  footer?: ComponentType<DocsThemeFooterSlotProps>;
43
+ headerActions?: ComponentType<DocsThemeHeaderActionsProps>;
31
44
  link?: DocsThemeLinkComponent;
32
45
  }
33
46
  interface DocsThemeHomeAction {
@@ -61,4 +74,4 @@ interface DocsHomeConfig {
61
74
  }
62
75
  type DocsSlotsConfig = DocsThemeSlots;
63
76
  //#endregion
64
- export { DocsHomeConfig, DocsSlotsConfig, DocsThemeFooterSlotProps, DocsThemeHomeAction, DocsThemeHomeData, DocsThemeHomeHighlight, DocsThemeLinkComponent, DocsThemeLinkProps, DocsThemeLocaleLink, DocsThemeNavItem, DocsThemeSlots };
77
+ export { DocsHomeConfig, DocsSlotsConfig, DocsThemeContentHeaderMetaProps, DocsThemeFooterSlotProps, DocsThemeHeaderActionsProps, DocsThemeHomeAction, DocsThemeHomeData, DocsThemeHomeHighlight, DocsThemeLinkComponent, DocsThemeLinkProps, DocsThemeLocaleLink, DocsThemeNavItem, DocsThemeSlots };
@@ -1,4 +1,5 @@
1
1
 
2
+ import { DocEntry } from "../source/types.js";
2
3
  import { AnchorHTMLAttributes, ComponentType, ReactNode } from "react";
3
4
 
4
5
  //#region src/theme/types.d.ts
@@ -26,8 +27,20 @@ interface DocsThemeFooterSlotProps {
26
27
  siteTitle: string;
27
28
  LinkComponent?: DocsThemeLinkComponent;
28
29
  }
30
+ interface DocsThemeHeaderActionsProps {
31
+ homeHref: string;
32
+ localeLinks?: DocsThemeLocaleLink[];
33
+ navigation: DocsThemeNavItem[];
34
+ siteDescription?: string;
35
+ siteTitle: string;
36
+ }
37
+ interface DocsThemeContentHeaderMetaProps {
38
+ entry: DocEntry;
39
+ }
29
40
  interface DocsThemeSlots {
41
+ contentHeaderMeta?: ComponentType<DocsThemeContentHeaderMetaProps>;
30
42
  footer?: ComponentType<DocsThemeFooterSlotProps>;
43
+ headerActions?: ComponentType<DocsThemeHeaderActionsProps>;
31
44
  link?: DocsThemeLinkComponent;
32
45
  }
33
46
  interface DocsThemeHomeAction {
@@ -61,4 +74,4 @@ interface DocsHomeConfig {
61
74
  }
62
75
  type DocsSlotsConfig = DocsThemeSlots;
63
76
  //#endregion
64
- export { DocsHomeConfig, DocsSlotsConfig, DocsThemeFooterSlotProps, DocsThemeHomeAction, DocsThemeHomeData, DocsThemeHomeHighlight, DocsThemeLinkComponent, DocsThemeLinkProps, DocsThemeLocaleLink, DocsThemeNavItem, DocsThemeSlots };
77
+ export { DocsHomeConfig, DocsSlotsConfig, DocsThemeContentHeaderMetaProps, DocsThemeFooterSlotProps, DocsThemeHeaderActionsProps, DocsThemeHomeAction, DocsThemeHomeData, DocsThemeHomeHighlight, DocsThemeLinkComponent, DocsThemeLinkProps, DocsThemeLocaleLink, DocsThemeNavItem, DocsThemeSlots };
package/dist/theme.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * name: @blackwork/docs
3
- * version: v0.1.0
3
+ * version: v0.3.0
4
4
  * description: Next-first documentation framework for Blackwork projects.
5
5
  * author: chengpeiquan <chengpeiquan@chengpeiquan.com>
6
6
  * homepage: https://chengpeiquan.com
7
7
  * license: MIT
8
8
  */
9
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./theme/components/link.cjs`),t=require(`./theme/components/footer.cjs`),n=require(`./theme/components/header.cjs`),r=require(`./theme/slots.cjs`),i=require(`./theme/components/content-shell.cjs`),a=require(`./theme/components/docs-shell.cjs`),o=require(`./theme/create-home-data.cjs`),s=require(`./theme/components/home-shell.cjs`);exports.DefaultContentShell=i.DefaultContentShell,exports.DefaultDocsFooter=t.DefaultDocsFooter,exports.DefaultDocsHeader=n.DefaultDocsHeader,exports.DefaultDocsLink=e.DefaultDocsLink,exports.DefaultDocsShell=a.DefaultDocsShell,exports.DefaultHomeShell=s.DefaultHomeShell,exports.createHomeData=o.createHomeData,exports.resolveThemeSlots=r.resolveThemeSlots;
9
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./theme/components/link.cjs`),t=require(`./theme/components/footer.cjs`),n=require(`./theme/components/header.cjs`),r=require(`./theme/components/docs-toc.cjs`),i=require(`./theme/components/content-layout.cjs`),a=require(`./theme/slots.cjs`),o=require(`./theme/components/content-shell.cjs`),s=require(`./theme/components/docs-shell.cjs`),c=require(`./theme/create-home-data.cjs`),l=require(`./theme/components/home-shell.cjs`);exports.DefaultContentLayout=i.DefaultContentLayout,exports.DefaultContentShell=o.DefaultContentShell,exports.DefaultDocsFooter=t.DefaultDocsFooter,exports.DefaultDocsHeader=n.DefaultDocsHeader,exports.DefaultDocsLink=e.DefaultDocsLink,exports.DefaultDocsShell=s.DefaultDocsShell,exports.DefaultDocsToc=r.DefaultDocsToc,exports.DefaultHomeShell=l.DefaultHomeShell,exports.MobileDocsToc=r.MobileDocsToc,exports.createHomeData=c.createHomeData,exports.resolveThemeSlots=a.resolveThemeSlots;
package/dist/theme.d.mts CHANGED
@@ -1,11 +1,13 @@
1
1
 
2
- import { DocsHomeConfig, DocsSlotsConfig, DocsThemeFooterSlotProps, DocsThemeHomeAction, DocsThemeHomeData, DocsThemeHomeHighlight, DocsThemeLinkComponent, DocsThemeLinkProps, DocsThemeLocaleLink, DocsThemeNavItem, DocsThemeSlots } from "./theme/types.mjs";
2
+ import { DocsHomeConfig, DocsSlotsConfig, DocsThemeContentHeaderMetaProps, DocsThemeFooterSlotProps, DocsThemeHeaderActionsProps, DocsThemeHomeAction, DocsThemeHomeData, DocsThemeHomeHighlight, DocsThemeLinkComponent, DocsThemeLinkProps, DocsThemeLocaleLink, DocsThemeNavItem, DocsThemeSlots } from "./theme/types.mjs";
3
3
  import { DefaultDocsFooter, DefaultDocsFooterProps } from "./theme/components/footer.mjs";
4
4
  import { DefaultDocsHeader, DefaultDocsHeaderProps } from "./theme/components/header.mjs";
5
5
  import { DefaultDocsLink, DefaultDocsLinkProps } from "./theme/components/link.mjs";
6
+ import { DefaultDocsToc, DefaultDocsTocProps, DocsTocHeading, MobileDocsToc, MobileDocsTocProps } from "./theme/components/docs-toc.mjs";
7
+ import { DefaultContentLayout, DefaultContentLayoutProps } from "./theme/components/content-layout.mjs";
6
8
  import { DefaultContentShell, DefaultContentShellProps } from "./theme/components/content-shell.mjs";
7
9
  import { DefaultDocsShell, DefaultDocsShellProps } from "./theme/components/docs-shell.mjs";
8
10
  import { DefaultHomeShell, DefaultHomeShellProps } from "./theme/components/home-shell.mjs";
9
11
  import { CreateHomeDataOptions, createHomeData } from "./theme/create-home-data.mjs";
10
12
  import { resolveThemeSlots } from "./theme/slots.mjs";
11
- export { type CreateHomeDataOptions, DefaultContentShell, type DefaultContentShellProps, DefaultDocsFooter, type DefaultDocsFooterProps, DefaultDocsHeader, type DefaultDocsHeaderProps, DefaultDocsLink, type DefaultDocsLinkProps, DefaultDocsShell, type DefaultDocsShellProps, DefaultHomeShell, type DefaultHomeShellProps, type DocsHomeConfig, type DocsSlotsConfig, type DocsThemeFooterSlotProps, type DocsThemeHomeAction, type DocsThemeHomeData, type DocsThemeHomeHighlight, type DocsThemeLinkComponent, type DocsThemeLinkProps, type DocsThemeLocaleLink, type DocsThemeNavItem, type DocsThemeSlots, createHomeData, resolveThemeSlots };
13
+ export { type CreateHomeDataOptions, DefaultContentLayout, type DefaultContentLayoutProps, DefaultContentShell, type DefaultContentShellProps, DefaultDocsFooter, type DefaultDocsFooterProps, DefaultDocsHeader, type DefaultDocsHeaderProps, DefaultDocsLink, type DefaultDocsLinkProps, DefaultDocsShell, type DefaultDocsShellProps, DefaultDocsToc, type DefaultDocsTocProps, DefaultHomeShell, type DefaultHomeShellProps, type DocsHomeConfig, type DocsSlotsConfig, type DocsThemeContentHeaderMetaProps, type DocsThemeFooterSlotProps, type DocsThemeHeaderActionsProps, type DocsThemeHomeAction, type DocsThemeHomeData, type DocsThemeHomeHighlight, type DocsThemeLinkComponent, type DocsThemeLinkProps, type DocsThemeLocaleLink, type DocsThemeNavItem, type DocsThemeSlots, type DocsTocHeading, MobileDocsToc, type MobileDocsTocProps, createHomeData, resolveThemeSlots };