@bndynet/vue-site 0.1.11 → 1.0.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.
@@ -4,5 +4,7 @@ export declare function maxNavDepth(items: ResolvedNavItem[]): number;
4
4
  export declare function subtreeContainsPath(item: ResolvedNavItem, path: string): boolean;
5
5
  /** First top-level item whose subtree contains `path` (fallback: first item). */
6
6
  export declare function findActiveTopLevelItem(items: ResolvedNavItem[], path: string): ResolvedNavItem | undefined;
7
+ /** True for absolute/external links (http(s), protocol-relative, mailto, tel). */
8
+ export declare function isExternalLink(url: string): boolean;
7
9
  /** First routable path in a subtree (for group targets). */
8
10
  export declare function getFirstLeafPath(item: ResolvedNavItem): string | null;
package/dist/router.d.ts CHANGED
@@ -1,3 +1,9 @@
1
- import { NavItem, ResolvedNavItem } from './types';
1
+ import { NavItem, ResolvedNavItem, StandalonePage } from './types';
2
+ /**
3
+ * Recursively drop nav items whose `visible()` predicate resolves to `false`. Sibling
4
+ * predicates are evaluated in parallel. A hidden parent removes its subtree; a group left
5
+ * with no children and no own `page`/`link` is pruned. Awaited once at startup.
6
+ */
7
+ export declare function filterNavItems(items: NavItem[]): Promise<NavItem[]>;
2
8
  export declare function resolveNavItems(items: NavItem[], parentIndex?: number): ResolvedNavItem[];
3
- export declare function createSiteRouter(resolvedNav: ResolvedNavItem[]): import('vue-router').Router;
9
+ export declare function createSiteRouter(resolvedNav: ResolvedNavItem[], pages?: StandalonePage[]): Promise<import('vue-router').Router>;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .page-view[data-v-98336c56]{min-height:200px}.page-loading[data-v-98336c56]{display:flex;justify-content:center;padding:60px 0}.page-loading-dot[data-v-98336c56]{width:8px;height:8px;border-radius:50%;background:var(--color-link);animation:pulse-98336c56 1s ease-in-out infinite}@keyframes pulse-98336c56{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.nav-item[data-v-03ee80b4]{display:flex;align-items:center;gap:10px;padding:9px 14px;margin-bottom:2px;border-radius:8px;color:var(--color-sidebar-text);font-size:.9rem;font-weight:500;text-decoration:none;transition:background-color .15s ease,color .15s ease}.nav-item--indent[data-v-03ee80b4]{padding-left:22px;font-size:.85rem}.nav-item[data-v-03ee80b4]:hover{background:var(--color-sidebar-item-hover);text-decoration:none}.nav-item--active[data-v-03ee80b4]{background:var(--color-sidebar-item-active);color:var(--color-sidebar-item-active-text)}.nav-item-label[data-v-03ee80b4]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-group-header[data-v-0faf5c71]{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;margin-bottom:2px;border:none;border-radius:8px;background:none;color:var(--color-sidebar-text);font-size:.9rem;font-weight:500;cursor:pointer;text-align:left;transition:background-color .15s ease}.nav-group-header[data-v-0faf5c71]:hover{background:var(--color-sidebar-item-hover)}.nav-group-label[data-v-0faf5c71]{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-group-chevron[data-v-0faf5c71]{flex-shrink:0;transition:transform .2s ease;opacity:.5}.nav-group--expanded .nav-group-chevron[data-v-0faf5c71]{transform:rotate(90deg)}.nav-group-children[data-v-0faf5c71]{padding-left:8px}.tooltip-overlay[data-v-31d77ab5]{max-width:min(280px,calc(100vw - 16px));padding:6px 10px;font-size:.75rem;line-height:1.35;font-weight:500;color:var(--color-sidebar-text, #1e293b);background:var(--color-sidebar-bg, #f8fafc);border:1px solid var(--color-sidebar-border, #e2e8f0);border-radius:8px;box-shadow:0 4px 12px #0f172a1f,0 2px 4px #0f172a0f;pointer-events:none}.ui-tooltip[data-v-c96e8e51]{display:inline-flex;align-items:center;max-width:100%}.site-external-links[data-v-70c288f3]{display:flex;align-items:center;gap:6px}.site-external-link[data-v-70c288f3]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:999px;text-decoration:none;cursor:pointer;background:transparent;color:var(--color-theme-switch-text);border:1px solid transparent;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease}.site-external-link[data-v-70c288f3]:hover{background:var(--color-theme-switch-hover);border-color:color-mix(in srgb,var(--color-theme-switch-text) 16%,transparent);box-shadow:0 2px 4px #0f172a12,0 6px 14px #0f172a14;text-decoration:none}.site-external-link[data-v-70c288f3]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-sidebar-bg),0 0 0 4px color-mix(in srgb,var(--color-link) 85%,transparent)}.site-external-links--compact .site-external-link[data-v-70c288f3]{width:28px;height:28px}.theme-switch[data-v-42e72bf0]{position:relative;display:inline-flex;flex-direction:column;align-items:center;width:fit-content;max-width:100%;color:var(--color-theme-switch-text)}.theme-switch summary[data-v-42e72bf0]{list-style:none}.theme-switch summary[data-v-42e72bf0]::-webkit-details-marker{display:none}.theme-switch-trigger[data-v-42e72bf0]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:999px;cursor:pointer;background:transparent;color:var(--color-theme-switch-text);border:1px solid transparent;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.theme-switch-trigger[data-v-42e72bf0]:hover{background:var(--color-theme-switch-hover);border-color:color-mix(in srgb,var(--color-theme-switch-text) 16%,transparent);box-shadow:0 2px 4px #0f172a12,0 6px 14px #0f172a14}.theme-switch-trigger[data-v-42e72bf0]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-sidebar-bg),0 0 0 4px color-mix(in srgb,var(--color-link) 85%,transparent)}.theme-switch-trigger-icon[data-v-42e72bf0]{display:flex;align-items:center;justify-content:center}.theme-switch-menu[data-v-42e72bf0]{position:absolute;left:50%;right:auto;top:calc(100% + 6px);transform:translate(-50%);z-index:40;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:40px;padding:6px;border-radius:12px;background:var(--color-sidebar-bg);border:1px solid var(--color-sidebar-border);box-shadow:0 4px 12px #0f172a1f,0 12px 28px #0f172a1a}.theme-switch-option[data-v-42e72bf0]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;margin:0;border:none;border-radius:999px;cursor:pointer;color:var(--color-sidebar-text);background:transparent;transition:background-color .15s ease}.theme-switch-option[data-v-42e72bf0]:hover{background:var(--color-sidebar-item-hover)}.theme-switch-option--active[data-v-42e72bf0]{background:var(--color-sidebar-item-active);color:var(--color-sidebar-item-active-text)}.theme-switch-option[data-v-42e72bf0]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-content-bg),0 0 0 4px color-mix(in srgb,var(--color-link) 85%,transparent)}.theme-switch--compact .theme-switch-trigger[data-v-42e72bf0]{width:28px;height:28px}.theme-switch--compact .theme-switch-menu[data-v-42e72bf0]{top:auto;bottom:calc(100% + 6px);transform:translate(-50%);padding:4px;gap:2px;border-radius:10px;box-shadow:0 -4px 12px #0f172a1a,0 -8px 24px #0f172a14}.theme-switch--compact .theme-switch-option[data-v-42e72bf0]{width:30px;height:30px}@media(prefers-reduced-motion:reduce){.theme-switch-trigger[data-v-42e72bf0]{transition:none}}.site-primary-nav-links[data-v-49be0e52]{display:flex;align-items:stretch;gap:0;min-width:0;flex:1;overflow-x:auto;padding:0;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.site-primary-nav-link[data-v-49be0e52]{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;padding:0 14px;border-radius:0;font-size:.9rem;font-weight:600;color:var(--color-sidebar-text);text-decoration:none;background:transparent;transition:background-color .15s ease,color .15s ease}.site-primary-nav-link[data-v-49be0e52]:hover{background:var(--color-sidebar-item-hover);text-decoration:none}.site-primary-nav-link--active[data-v-49be0e52]{background:var(--color-sidebar-item-active);color:var(--color-sidebar-item-active-text)}.site-primary-nav-link-label[data-v-49be0e52]{white-space:nowrap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;color:var(--color-text);background-color:var(--color-bg);transition:color .2s ease,background-color .2s ease}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}:root{--site-top-nav-height: 48px;--site-sidebar-width: 200px}.site-layout{min-height:100vh}.site-layout--tiered-nav .site-sidebar{top:var(--site-top-nav-height);height:calc(100vh - var(--site-top-nav-height))}.site-layout--tiered-nav .site-content{margin-top:var(--site-top-nav-height)}.site-layout--tiered-no-sidebar .site-content{margin-left:0}.site-footer-standalone{margin-left:0;padding:20px 48px 32px;text-align:center;border-top:1px solid var(--color-border);background:var(--color-content-bg);transition:background-color .2s ease}.site-primary-nav{position:fixed;top:0;left:0;right:0;z-index:21;display:flex;align-items:stretch;height:var(--site-top-nav-height);padding:0 12px 0 0;box-sizing:border-box;background:var(--color-sidebar-bg);border-bottom:1px solid var(--color-sidebar-border);transition:background-color .2s ease,border-color .2s ease}.site-primary-nav-end{display:flex;align-items:center;gap:6px;flex-shrink:0}.site-primary-nav-theme{flex-shrink:0}.site-primary-nav-brand{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;flex:0 0 var(--site-sidebar-width);width:var(--site-sidebar-width);min-width:0;max-width:var(--site-sidebar-width);box-sizing:border-box;padding:0 12px;text-decoration:none;color:inherit}.site-primary-nav-brand:hover{text-decoration:none;opacity:.9}.site-primary-nav-logo{display:block;height:auto;max-height:32px;width:auto;max-width:100%;object-fit:contain}.site-primary-nav-title{min-width:0;font-size:1.05rem;font-weight:700;color:var(--color-sidebar-title);letter-spacing:-.01em;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-layout--tiered-nav .site-sidebar-nav{padding-top:12px}.site-sidebar-toolbar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;width:100%}.site-sidebar{position:fixed;top:0;left:0;width:var(--site-sidebar-width);height:100vh;background:var(--color-sidebar-bg);border-right:1px solid var(--color-sidebar-border);display:flex;flex-direction:column;overflow:hidden;z-index:10;transition:background-color .2s ease,border-color .2s ease}.site-sidebar-header{flex-shrink:0;padding:1rem 1rem .75rem;display:flex;justify-content:center}.site-sidebar-brand{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;min-width:0;max-width:100%}.site-sidebar-logo{display:block;max-width:100%;height:auto;max-height:40px;width:auto;object-fit:contain}.site-sidebar-title{min-width:0;font-size:1.15rem;font-weight:700;color:var(--color-sidebar-title);letter-spacing:-.01em;line-height:1.25;text-align:center}.site-sidebar-nav{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 8px}.site-sidebar-footer{flex-shrink:0;padding:10px 12px 12px;border-top:1px solid var(--color-sidebar-border);display:flex;flex-direction:column;align-items:center;gap:10px}.site-footer-text{margin:0;font-size:.75rem;line-height:1.45;color:var(--color-text-secondary);white-space:pre-wrap;word-break:break-word;text-align:center}.site-content{margin-left:var(--site-sidebar-width);min-height:100vh;background:var(--color-content-bg);transition:background-color .2s ease}.site-content-inner{max-width:860px;margin:0 auto;padding:40px 48px}.markdown-body h1{font-size:2rem;font-weight:700;margin-bottom:.5rem;padding-bottom:.3rem;border-bottom:1px solid var(--color-border);color:var(--color-text)}.markdown-body h2{font-size:1.5rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border);color:var(--color-text)}.markdown-body h3{font-size:1.25rem;font-weight:600;margin-top:1.5rem;margin-bottom:.5rem;color:var(--color-text)}.markdown-body h4,.markdown-body h5,.markdown-body h6{font-size:1rem;font-weight:600;margin-top:1.25rem;margin-bottom:.5rem;color:var(--color-text)}.markdown-body p{margin-bottom:1rem;color:var(--color-text-secondary);line-height:1.75}.markdown-body ul,.markdown-body ol{margin-bottom:1rem;padding-left:2em;color:var(--color-text-secondary)}.markdown-body li{margin-bottom:.25rem}.markdown-body li>ul,.markdown-body li>ol{margin-bottom:0}.markdown-body code{font-family:SF Mono,Fira Code,Fira Mono,Menlo,Consolas,monospace;font-size:.875em;padding:.2em .4em;background:var(--color-code-bg);border-radius:4px;color:var(--color-code-text)}.markdown-body pre{margin-bottom:1.25rem;border-radius:8px;overflow-x:auto;border:1px solid var(--color-code-border)}.markdown-body pre code{display:block;padding:16px 20px;background:var(--color-code-block-bg);font-size:.85rem;line-height:1.6;border-radius:0}.markdown-body blockquote{margin-bottom:1rem;padding:12px 20px;border-left:4px solid var(--color-blockquote-border);background:var(--color-blockquote-bg);border-radius:0 6px 6px 0;color:var(--color-blockquote-text)}.markdown-body blockquote p:last-child{margin-bottom:0}.markdown-body table{width:100%;margin-bottom:1rem;border-collapse:collapse;border:1px solid var(--color-table-border)}.markdown-body th{background:var(--color-table-header-bg);padding:10px 14px;text-align:left;font-weight:600;border:1px solid var(--color-table-border);color:var(--color-text)}.markdown-body td{padding:10px 14px;border:1px solid var(--color-table-border);color:var(--color-text-secondary)}.markdown-body tr:hover td{background:var(--color-table-row-hover)}.markdown-body hr{margin:2rem 0;border:none;border-top:1px solid var(--color-border)}.markdown-body a{color:var(--color-link)}.markdown-body a:hover{color:var(--color-link-hover)}.markdown-body img{max-width:100%;border-radius:6px}.markdown-body strong{color:var(--color-text)}[data-theme=light] .hljs{color:#24292f;background:var(--color-code-block-bg)}[data-theme=light] .hljs-comment,[data-theme=light] .hljs-quote{color:#6a737d;font-style:italic}[data-theme=light] .hljs-keyword,[data-theme=light] .hljs-selector-tag,[data-theme=light] .hljs-type{color:#d73a49}[data-theme=light] .hljs-string,[data-theme=light] .hljs-addition{color:#032f62}[data-theme=light] .hljs-number,[data-theme=light] .hljs-literal{color:#005cc5}[data-theme=light] .hljs-built_in,[data-theme=light] .hljs-builtin-name,[data-theme=light] .hljs-title,[data-theme=light] .hljs-title.function_,[data-theme=light] .hljs-section{color:#6f42c1}[data-theme=light] .hljs-attr,[data-theme=light] .hljs-attribute{color:#005cc5}[data-theme=light] .hljs-variable,[data-theme=light] .hljs-template-variable{color:#e36209}[data-theme=light] .hljs-name,[data-theme=light] .hljs-tag{color:#22863a}[data-theme=light] .hljs-selector-class,[data-theme=light] .hljs-selector-id{color:#6f42c1}[data-theme=light] .hljs-deletion{color:#b31d28;background:#ffeef0}[data-theme=light] .hljs-addition{background:#f0fff4}[data-theme=light] .hljs-meta{color:#735c0f}[data-theme=light] .hljs-regexp{color:#032f62}[data-theme=light] .hljs-symbol{color:#005cc5}[data-theme=light] .hljs-params{color:#24292f}[data-theme=dark] .hljs{color:#e2e8f0;background:var(--color-code-block-bg)}[data-theme=dark] .hljs-comment,[data-theme=dark] .hljs-quote{color:#8b949e;font-style:italic}[data-theme=dark] .hljs-keyword,[data-theme=dark] .hljs-selector-tag,[data-theme=dark] .hljs-type{color:#ff7b72}[data-theme=dark] .hljs-string,[data-theme=dark] .hljs-addition{color:#a5d6ff}[data-theme=dark] .hljs-number,[data-theme=dark] .hljs-literal{color:#79c0ff}[data-theme=dark] .hljs-built_in,[data-theme=dark] .hljs-builtin-name,[data-theme=dark] .hljs-title,[data-theme=dark] .hljs-title.function_,[data-theme=dark] .hljs-section{color:#d2a8ff}[data-theme=dark] .hljs-attr,[data-theme=dark] .hljs-attribute{color:#79c0ff}[data-theme=dark] .hljs-variable,[data-theme=dark] .hljs-template-variable{color:#ffa657}[data-theme=dark] .hljs-name,[data-theme=dark] .hljs-tag{color:#7ee787}[data-theme=dark] .hljs-selector-class,[data-theme=dark] .hljs-selector-id{color:#d2a8ff}[data-theme=dark] .hljs-deletion{color:#ffdcd7;background:#67060c}[data-theme=dark] .hljs-addition{background:#0d4429}[data-theme=dark] .hljs-meta{color:#d29922}[data-theme=dark] .hljs-regexp{color:#a5d6ff}[data-theme=dark] .hljs-symbol{color:#79c0ff}[data-theme=dark] .hljs-params{color:#e2e8f0}:root{--el-bg-color-page: var(--color-bg);--el-bg-color: var(--color-content-bg);--el-bg-color-overlay: var(--color-content-bg);--el-text-color-primary: var(--color-text);--el-text-color-regular: var(--color-sidebar-text);--el-text-color-secondary: var(--color-text-secondary);--el-text-color-placeholder: color-mix(in srgb, var(--color-text-secondary) 70%, var(--color-bg));--el-text-color-disabled: color-mix(in srgb, var(--color-text-secondary) 50%, var(--color-bg));--el-border-color: var(--color-border);--el-border-color-light: color-mix(in srgb, var(--color-border) 70%, var(--color-bg));--el-border-color-lighter: color-mix(in srgb, var(--color-border) 50%, var(--color-bg));--el-border-color-extra-light: color-mix(in srgb, var(--color-border) 30%, var(--color-bg));--el-border-color-dark: color-mix(in srgb, var(--color-border) 80%, var(--color-text));--el-border-color-darker: color-mix(in srgb, var(--color-border) 60%, var(--color-text));--el-fill-color: var(--color-table-header-bg);--el-fill-color-light: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-bg));--el-fill-color-lighter: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-fill-color-extra-light: color-mix(in srgb, var(--color-table-header-bg) 30%, var(--color-bg));--el-fill-color-dark: color-mix(in srgb, var(--color-table-header-bg) 120%, var(--color-border));--el-fill-color-darker: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-border));--el-fill-color-blank: var(--color-bg);--el-table-header-bg-color: var(--color-table-header-bg);--el-table-tr-bg-color: var(--color-bg);--el-table-expanded-cell-bg-color: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-table-row-hover-bg-color: var(--color-table-row-hover);--el-menu-bg-color: var(--color-sidebar-bg);--el-menu-text-color: var(--color-sidebar-text);--el-menu-active-color: var(--color-link);--el-menu-hover-bg-color: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-fill: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-color: var(--color-text)}html.dark{--el-bg-color-page: var(--color-bg);--el-bg-color: var(--color-content-bg);--el-bg-color-overlay: var(--color-sidebar-bg);--el-text-color-primary: var(--color-text);--el-text-color-regular: var(--color-sidebar-text);--el-text-color-secondary: var(--color-text-secondary);--el-text-color-placeholder: color-mix(in srgb, var(--color-text-secondary) 70%, var(--color-bg));--el-text-color-disabled: color-mix(in srgb, var(--color-text-secondary) 50%, var(--color-bg));--el-border-color: var(--color-border);--el-border-color-light: color-mix(in srgb, var(--color-border) 70%, var(--color-bg));--el-border-color-lighter: color-mix(in srgb, var(--color-border) 50%, var(--color-bg));--el-border-color-extra-light: color-mix(in srgb, var(--color-border) 30%, var(--color-bg));--el-border-color-dark: color-mix(in srgb, var(--color-border) 80%, var(--color-text));--el-border-color-darker: color-mix(in srgb, var(--color-border) 60%, var(--color-text));--el-fill-color: var(--color-table-header-bg);--el-fill-color-light: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-bg));--el-fill-color-lighter: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-fill-color-extra-light: color-mix(in srgb, var(--color-table-header-bg) 30%, var(--color-bg));--el-fill-color-dark: color-mix(in srgb, var(--color-table-header-bg) 120%, var(--color-border));--el-fill-color-darker: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-border));--el-fill-color-blank: var(--color-bg);--el-table-header-bg-color: var(--color-table-header-bg);--el-table-tr-bg-color: var(--color-bg);--el-table-expanded-cell-bg-color: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-table-row-hover-bg-color: var(--color-table-row-hover);--el-menu-bg-color: var(--color-sidebar-bg);--el-menu-text-color: var(--color-sidebar-text);--el-menu-active-color: var(--color-link);--el-menu-hover-bg-color: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-fill: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-color: var(--color-text);--el-box-shadow: 0 12px 32px 4px rgba(0, 0, 0, .5), 0 8px 20px rgba(0, 0, 0, .6);--el-box-shadow-light: 0 0 12px rgba(0, 0, 0, .6);--el-box-shadow-lighter: 0 0 6px rgba(0, 0, 0, .5);--el-box-shadow-dark: 0 16px 48px 16px rgba(0, 0, 0, .7), 0 12px 32px rgba(0, 0, 0, .6);--el-mask-color: rgba(0, 0, 0, .8);--el-mask-color-extra-light: rgba(0, 0, 0, .3)}
1
+ .page-view[data-v-98336c56]{min-height:200px}.page-loading[data-v-98336c56]{display:flex;justify-content:center;padding:60px 0}.page-loading-dot[data-v-98336c56]{width:8px;height:8px;border-radius:50%;background:var(--color-link);animation:pulse-98336c56 1s ease-in-out infinite}@keyframes pulse-98336c56{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.nav-item[data-v-a35b68cd]{display:flex;align-items:center;gap:10px;padding:9px 14px;margin-bottom:2px;border-radius:8px;color:var(--color-sidebar-text);font-size:.9rem;font-weight:500;text-decoration:none;transition:background-color .15s ease,color .15s ease}.nav-item--indent[data-v-a35b68cd]{padding-left:22px;font-size:.85rem}.nav-item[data-v-a35b68cd]:hover{background:var(--color-sidebar-item-hover);text-decoration:none}.nav-item--active[data-v-a35b68cd]{background:var(--color-sidebar-item-active);color:var(--color-sidebar-item-active-text)}.nav-item-label[data-v-a35b68cd]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-group-header[data-v-0faf5c71]{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;margin-bottom:2px;border:none;border-radius:8px;background:none;color:var(--color-sidebar-text);font-size:.9rem;font-weight:500;cursor:pointer;text-align:left;transition:background-color .15s ease}.nav-group-header[data-v-0faf5c71]:hover{background:var(--color-sidebar-item-hover)}.nav-group-label[data-v-0faf5c71]{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-group-chevron[data-v-0faf5c71]{flex-shrink:0;transition:transform .2s ease;opacity:.5}.nav-group--expanded .nav-group-chevron[data-v-0faf5c71]{transform:rotate(90deg)}.nav-group-children[data-v-0faf5c71]{padding-left:8px}.tooltip-overlay[data-v-d0b5d0eb]{max-width:min(280px,calc(100vw - 16px));padding:6px 10px;font-size:.75rem;line-height:1.35;font-weight:500;color:var(--color-sidebar-text, #606770);background:var(--color-sidebar-bg, #f5f6f7);border:1px solid var(--color-sidebar-border, #ebedf0);border-radius:8px;box-shadow:0 4px 12px #0000001f,0 2px 4px #0000000f;pointer-events:none}.ui-tooltip[data-v-c96e8e51]{display:inline-flex;align-items:center;max-width:100%}.site-external-links[data-v-89ad5b4d]{display:flex;align-items:center;gap:6px}.site-external-link[data-v-89ad5b4d]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:999px;text-decoration:none;cursor:pointer;background:transparent;color:var(--color-theme-switch-text);border:1px solid transparent;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease}.site-external-link[data-v-89ad5b4d]:hover{background:var(--color-theme-switch-hover);border-color:color-mix(in srgb,var(--color-theme-switch-text) 16%,transparent);box-shadow:0 1px 2px #0000001a,0 6px 14px #00000014;text-decoration:none}.site-external-link[data-v-89ad5b4d]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-sidebar-bg),0 0 0 4px color-mix(in srgb,var(--color-link) 85%,transparent)}.site-external-links--compact .site-external-link[data-v-89ad5b4d]{width:28px;height:28px}.theme-switch[data-v-a636511b]{position:relative;display:inline-flex;flex-direction:column;align-items:center;width:fit-content;max-width:100%;color:var(--color-theme-switch-text)}.theme-switch summary[data-v-a636511b]{list-style:none}.theme-switch summary[data-v-a636511b]::-webkit-details-marker{display:none}.theme-switch-trigger[data-v-a636511b]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:999px;cursor:pointer;background:transparent;color:var(--color-theme-switch-text);border:1px solid transparent;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.theme-switch-trigger[data-v-a636511b]:hover{background:var(--color-theme-switch-hover);border-color:color-mix(in srgb,var(--color-theme-switch-text) 16%,transparent);box-shadow:0 1px 2px #0000001a,0 6px 14px #00000014}.theme-switch-trigger[data-v-a636511b]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-sidebar-bg),0 0 0 4px color-mix(in srgb,var(--color-link) 85%,transparent)}.theme-switch-trigger-icon[data-v-a636511b]{display:flex;align-items:center;justify-content:center}.theme-switch-menu[data-v-a636511b]{position:absolute;left:50%;right:auto;top:calc(100% + 6px);transform:translate(-50%);z-index:40;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:40px;padding:6px;border-radius:12px;background:var(--color-sidebar-bg);border:1px solid var(--color-sidebar-border);box-shadow:0 4px 12px #0000001f,0 12px 28px #0000001a}.theme-switch-option[data-v-a636511b]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;margin:0;border:none;border-radius:999px;cursor:pointer;color:var(--color-sidebar-text);background:transparent;transition:background-color .15s ease}.theme-switch-option[data-v-a636511b]:hover{background:var(--color-sidebar-item-hover)}.theme-switch-option--active[data-v-a636511b]{background:var(--color-sidebar-item-active);color:var(--color-sidebar-item-active-text)}.theme-switch-option[data-v-a636511b]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-content-bg),0 0 0 4px color-mix(in srgb,var(--color-link) 85%,transparent)}.theme-switch--compact .theme-switch-trigger[data-v-a636511b]{width:28px;height:28px}.theme-switch--compact .theme-switch-menu[data-v-a636511b]{top:auto;bottom:calc(100% + 6px);transform:translate(-50%);padding:4px;gap:2px;border-radius:10px;box-shadow:0 -4px 12px #0000001a,0 -8px 24px #00000014}.theme-switch--compact .theme-switch-option[data-v-a636511b]{width:30px;height:30px}@media(prefers-reduced-motion:reduce){.theme-switch-trigger[data-v-a636511b]{transition:none}}.site-primary-nav-links[data-v-320c51ce]{display:flex;align-items:stretch;gap:0;min-width:0;flex:1;overflow-x:auto;padding:0;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.site-primary-nav-link[data-v-320c51ce]{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;padding:0 14px;border-radius:0;font-size:.9rem;font-weight:600;color:var(--color-sidebar-text);text-decoration:none;background:transparent;transition:background-color .15s ease,color .15s ease}.site-primary-nav-link[data-v-320c51ce]:hover{background:var(--color-sidebar-item-hover);text-decoration:none}.site-primary-nav-link--active[data-v-320c51ce]{background:var(--color-sidebar-item-active);color:var(--color-sidebar-item-active-text)}.site-primary-nav-link-label[data-v-320c51ce]{white-space:nowrap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;color:var(--color-text);background-color:var(--color-bg);transition:color .2s ease,background-color .2s ease}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}:root{--site-top-nav-height: 48px;--site-sidebar-width: 200px}.site-layout{min-height:100vh}.site-layout--tiered-nav .site-sidebar{top:var(--site-top-nav-height);height:calc(100vh - var(--site-top-nav-height))}.site-layout--tiered-nav .site-content{margin-top:var(--site-top-nav-height)}.site-layout--tiered-no-sidebar .site-content{margin-left:0}.site-layout--blank .site-content{margin-left:0;margin-top:0}.site-layout--blank .site-content-inner{max-width:none;margin:0;padding:0}.site-footer-standalone{margin-left:0;padding:1rem;text-align:center;border-top:1px solid var(--color-border);background:var(--color-content-bg);transition:background-color .2s ease}.site-primary-nav{position:fixed;top:0;left:0;right:0;z-index:21;display:flex;align-items:stretch;height:var(--site-top-nav-height);padding:0 12px 0 0;box-sizing:border-box;background:var(--color-sidebar-bg);border-bottom:1px solid var(--color-sidebar-border);transition:background-color .2s ease,border-color .2s ease}.site-primary-nav-end{display:flex;align-items:center;gap:6px;flex-shrink:0}.site-primary-nav-theme{flex-shrink:0}.site-primary-nav-brand{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;flex:0 0 var(--site-sidebar-width);width:var(--site-sidebar-width);min-width:0;max-width:var(--site-sidebar-width);box-sizing:border-box;padding:0 12px;text-decoration:none;color:inherit}.site-primary-nav-brand:hover{text-decoration:none;opacity:.9}.site-primary-nav-logo{display:block;height:auto;max-height:32px;width:auto;max-width:100%;object-fit:contain}.site-primary-nav-title{min-width:0;font-size:1.05rem;font-weight:700;color:var(--color-sidebar-title);letter-spacing:-.01em;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-layout--tiered-nav .site-sidebar-nav{padding-top:12px}.site-sidebar-toolbar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;width:100%}.site-sidebar{position:fixed;top:0;left:0;width:var(--site-sidebar-width);height:100vh;background:var(--color-sidebar-bg);border-right:1px solid var(--color-sidebar-border);display:flex;flex-direction:column;overflow:hidden;z-index:10;transition:background-color .2s ease,border-color .2s ease}.site-sidebar-header{flex-shrink:0;padding:1rem 1rem .75rem;display:flex;justify-content:center}.site-sidebar-brand{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;min-width:0;max-width:100%}.site-sidebar-logo{display:block;max-width:100%;height:auto;max-height:40px;width:auto;object-fit:contain}.site-sidebar-title{min-width:0;font-size:1.15rem;font-weight:700;color:var(--color-sidebar-title);letter-spacing:-.01em;line-height:1.25;text-align:center}.site-sidebar-nav{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 8px}.site-sidebar-footer{flex-shrink:0;padding:10px 12px 12px;border-top:1px solid var(--color-sidebar-border);display:flex;flex-direction:column;align-items:center;gap:10px}.site-footer-text{margin:0;font-size:.75rem;line-height:1.45;color:var(--color-text-secondary);white-space:pre-wrap;word-break:break-word;text-align:center}.site-content{margin-left:var(--site-sidebar-width);min-height:100vh;background:var(--color-content-bg);transition:background-color .2s ease}.site-content-inner{max-width:860px;margin:0 auto;padding:40px 48px}.markdown-body h1{font-size:2rem;font-weight:700;margin-bottom:.5rem;padding-bottom:.3rem;border-bottom:1px solid var(--color-border);color:var(--color-text)}.markdown-body h2{font-size:1.5rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border);color:var(--color-text)}.markdown-body h3{font-size:1.25rem;font-weight:600;margin-top:1.5rem;margin-bottom:.5rem;color:var(--color-text)}.markdown-body h4,.markdown-body h5,.markdown-body h6{font-size:1rem;font-weight:600;margin-top:1.25rem;margin-bottom:.5rem;color:var(--color-text)}.markdown-body p{margin-bottom:1rem;color:var(--color-text-secondary);line-height:1.75}.markdown-body ul,.markdown-body ol{margin-bottom:1rem;padding-left:2em;color:var(--color-text-secondary)}.markdown-body li{margin-bottom:.25rem}.markdown-body li>ul,.markdown-body li>ol{margin-bottom:0}.markdown-body code{font-family:SF Mono,Fira Code,Fira Mono,Menlo,Consolas,monospace;font-size:.875em;padding:.2em .4em;background:var(--color-code-bg);border-radius:4px;color:var(--color-code-text)}.markdown-body pre{margin-bottom:1.25rem;border-radius:8px;overflow-x:auto;border:1px solid var(--color-code-border)}.markdown-body pre code{display:block;padding:16px 20px;background:var(--color-code-block-bg);font-size:.85rem;line-height:1.6;border-radius:0}.markdown-body blockquote{margin-bottom:1rem;padding:12px 20px;border-left:4px solid var(--color-blockquote-border);background:var(--color-blockquote-bg);border-radius:0 6px 6px 0;color:var(--color-blockquote-text)}.markdown-body blockquote p:last-child{margin-bottom:0}.markdown-body table{width:100%;margin-bottom:1rem;border-collapse:collapse;border:1px solid var(--color-table-border)}.markdown-body th{background:var(--color-table-header-bg);padding:10px 14px;text-align:left;font-weight:600;border:1px solid var(--color-table-border);color:var(--color-text)}.markdown-body td{padding:10px 14px;border:1px solid var(--color-table-border);color:var(--color-text-secondary)}.markdown-body tr:hover td{background:var(--color-table-row-hover)}.markdown-body hr{margin:2rem 0;border:none;border-top:1px solid var(--color-border)}.markdown-body a{color:var(--color-link)}.markdown-body a:hover{color:var(--color-link-hover)}.markdown-body img{max-width:100%;border-radius:6px}.markdown-body strong{color:var(--color-text)}[data-theme=light] .hljs{color:#24292f;background:var(--color-code-block-bg)}[data-theme=light] .hljs-comment,[data-theme=light] .hljs-quote{color:#6a737d;font-style:italic}[data-theme=light] .hljs-keyword,[data-theme=light] .hljs-selector-tag,[data-theme=light] .hljs-type{color:#d73a49}[data-theme=light] .hljs-string,[data-theme=light] .hljs-addition{color:#032f62}[data-theme=light] .hljs-number,[data-theme=light] .hljs-literal{color:#005cc5}[data-theme=light] .hljs-built_in,[data-theme=light] .hljs-builtin-name,[data-theme=light] .hljs-title,[data-theme=light] .hljs-title.function_,[data-theme=light] .hljs-section{color:#6f42c1}[data-theme=light] .hljs-attr,[data-theme=light] .hljs-attribute{color:#005cc5}[data-theme=light] .hljs-variable,[data-theme=light] .hljs-template-variable{color:#e36209}[data-theme=light] .hljs-name,[data-theme=light] .hljs-tag{color:#22863a}[data-theme=light] .hljs-selector-class,[data-theme=light] .hljs-selector-id{color:#6f42c1}[data-theme=light] .hljs-deletion{color:#b31d28;background:#ffeef0}[data-theme=light] .hljs-addition{background:#f0fff4}[data-theme=light] .hljs-meta{color:#735c0f}[data-theme=light] .hljs-regexp{color:#032f62}[data-theme=light] .hljs-symbol{color:#005cc5}[data-theme=light] .hljs-params{color:#24292f}[data-theme=dark] .hljs{color:#e2e8f0;background:var(--color-code-block-bg)}[data-theme=dark] .hljs-comment,[data-theme=dark] .hljs-quote{color:#8b949e;font-style:italic}[data-theme=dark] .hljs-keyword,[data-theme=dark] .hljs-selector-tag,[data-theme=dark] .hljs-type{color:#ff7b72}[data-theme=dark] .hljs-string,[data-theme=dark] .hljs-addition{color:#a5d6ff}[data-theme=dark] .hljs-number,[data-theme=dark] .hljs-literal{color:#79c0ff}[data-theme=dark] .hljs-built_in,[data-theme=dark] .hljs-builtin-name,[data-theme=dark] .hljs-title,[data-theme=dark] .hljs-title.function_,[data-theme=dark] .hljs-section{color:#d2a8ff}[data-theme=dark] .hljs-attr,[data-theme=dark] .hljs-attribute{color:#79c0ff}[data-theme=dark] .hljs-variable,[data-theme=dark] .hljs-template-variable{color:#ffa657}[data-theme=dark] .hljs-name,[data-theme=dark] .hljs-tag{color:#7ee787}[data-theme=dark] .hljs-selector-class,[data-theme=dark] .hljs-selector-id{color:#d2a8ff}[data-theme=dark] .hljs-deletion{color:#ffdcd7;background:#67060c}[data-theme=dark] .hljs-addition{background:#0d4429}[data-theme=dark] .hljs-meta{color:#d29922}[data-theme=dark] .hljs-regexp{color:#a5d6ff}[data-theme=dark] .hljs-symbol{color:#79c0ff}[data-theme=dark] .hljs-params{color:#e2e8f0}:root{--el-bg-color-page: var(--color-bg);--el-bg-color: var(--color-content-bg);--el-bg-color-overlay: var(--color-content-bg);--el-text-color-primary: var(--color-text);--el-text-color-regular: var(--color-sidebar-text);--el-text-color-secondary: var(--color-text-secondary);--el-text-color-placeholder: color-mix(in srgb, var(--color-text-secondary) 70%, var(--color-bg));--el-text-color-disabled: color-mix(in srgb, var(--color-text-secondary) 50%, var(--color-bg));--el-border-color: var(--color-border);--el-border-color-light: color-mix(in srgb, var(--color-border) 70%, var(--color-bg));--el-border-color-lighter: color-mix(in srgb, var(--color-border) 50%, var(--color-bg));--el-border-color-extra-light: color-mix(in srgb, var(--color-border) 30%, var(--color-bg));--el-border-color-dark: color-mix(in srgb, var(--color-border) 80%, var(--color-text));--el-border-color-darker: color-mix(in srgb, var(--color-border) 60%, var(--color-text));--el-fill-color: var(--color-table-header-bg);--el-fill-color-light: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-bg));--el-fill-color-lighter: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-fill-color-extra-light: color-mix(in srgb, var(--color-table-header-bg) 30%, var(--color-bg));--el-fill-color-dark: color-mix(in srgb, var(--color-table-header-bg) 120%, var(--color-border));--el-fill-color-darker: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-border));--el-fill-color-blank: var(--color-bg);--el-table-header-bg-color: var(--color-table-header-bg);--el-table-tr-bg-color: var(--color-bg);--el-table-expanded-cell-bg-color: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-table-row-hover-bg-color: var(--color-table-row-hover);--el-menu-bg-color: var(--color-sidebar-bg);--el-menu-text-color: var(--color-sidebar-text);--el-menu-active-color: var(--color-link);--el-menu-hover-bg-color: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-fill: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-color: var(--color-text)}html.dark{--el-bg-color-page: var(--color-bg);--el-bg-color: var(--color-content-bg);--el-bg-color-overlay: var(--color-sidebar-bg);--el-text-color-primary: var(--color-text);--el-text-color-regular: var(--color-sidebar-text);--el-text-color-secondary: var(--color-text-secondary);--el-text-color-placeholder: color-mix(in srgb, var(--color-text-secondary) 70%, var(--color-bg));--el-text-color-disabled: color-mix(in srgb, var(--color-text-secondary) 50%, var(--color-bg));--el-border-color: var(--color-border);--el-border-color-light: color-mix(in srgb, var(--color-border) 70%, var(--color-bg));--el-border-color-lighter: color-mix(in srgb, var(--color-border) 50%, var(--color-bg));--el-border-color-extra-light: color-mix(in srgb, var(--color-border) 30%, var(--color-bg));--el-border-color-dark: color-mix(in srgb, var(--color-border) 80%, var(--color-text));--el-border-color-darker: color-mix(in srgb, var(--color-border) 60%, var(--color-text));--el-fill-color: var(--color-table-header-bg);--el-fill-color-light: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-bg));--el-fill-color-lighter: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-fill-color-extra-light: color-mix(in srgb, var(--color-table-header-bg) 30%, var(--color-bg));--el-fill-color-dark: color-mix(in srgb, var(--color-table-header-bg) 120%, var(--color-border));--el-fill-color-darker: color-mix(in srgb, var(--color-table-header-bg) 80%, var(--color-border));--el-fill-color-blank: var(--color-bg);--el-table-header-bg-color: var(--color-table-header-bg);--el-table-tr-bg-color: var(--color-bg);--el-table-expanded-cell-bg-color: color-mix(in srgb, var(--color-table-header-bg) 50%, var(--color-bg));--el-table-row-hover-bg-color: var(--color-table-row-hover);--el-menu-bg-color: var(--color-sidebar-bg);--el-menu-text-color: var(--color-sidebar-text);--el-menu-active-color: var(--color-link);--el-menu-hover-bg-color: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-fill: var(--color-sidebar-item-hover);--el-dropdown-menuItem-hover-color: var(--color-text);--el-box-shadow: 0 12px 32px 4px rgba(0, 0, 0, .5), 0 8px 20px rgba(0, 0, 0, .6);--el-box-shadow-light: 0 0 12px rgba(0, 0, 0, .6);--el-box-shadow-lighter: 0 0 6px rgba(0, 0, 0, .5);--el-box-shadow-dark: 0 16px 48px 16px rgba(0, 0, 0, .7), 0 12px 32px rgba(0, 0, 0, .6);--el-mask-color: rgba(0, 0, 0, .8);--el-mask-color-extra-light: rgba(0, 0, 0, .3)}
package/dist/types.d.ts CHANGED
@@ -10,6 +10,42 @@ export interface NavItem {
10
10
  }>);
11
11
  children?: NavItem[];
12
12
  path?: string;
13
+ /**
14
+ * Render this item as a plain hyperlink instead of a page route. Use an internal route path
15
+ * (e.g. `/landing` to point at a `pages` entry) or an external URL (e.g. `https://...`, opened
16
+ * in a new tab). When set, no `PageView` route is registered for this item and `page`/`children`
17
+ * are ignored for routing.
18
+ */
19
+ link?: string;
20
+ /**
21
+ * Optional visibility predicate, awaited once at app startup. Return `false` (or a
22
+ * promise resolving to `false`) to hide this item from navigation. Hidden items also
23
+ * get no route registered, so their pages are not reachable by direct URL. When an item
24
+ * has `children`, a hidden parent hides its whole subtree; a group whose children all
25
+ * become hidden is pruned. Evaluated only at startup, so it does not react to later
26
+ * permission changes (e.g. login/logout) without recreating the app.
27
+ */
28
+ visible?: () => boolean | Promise<boolean>;
29
+ }
30
+ /**
31
+ * A standalone, full-screen page registered outside the `nav` tree.
32
+ * Standalone pages do not appear in any navigation (no top bar, sidebar, or footer)
33
+ * and render only their content. Use for landing pages, login, embeds, etc.
34
+ */
35
+ export interface StandalonePage {
36
+ /** Route path (used as-is, no label-based derivation), e.g. `/landing`. */
37
+ path: string;
38
+ page: (() => Promise<{
39
+ default: string;
40
+ }>) | (() => Promise<{
41
+ default: Component;
42
+ }>);
43
+ /**
44
+ * Optional visibility predicate, awaited once at app startup. Return `false` (or a
45
+ * promise resolving to `false`) to skip registering this page's route entirely.
46
+ * Evaluated only at startup, so it does not react to later permission changes.
47
+ */
48
+ visible?: () => boolean | Promise<boolean>;
13
49
  }
14
50
  /** CSS custom properties for one theme (`--color-bg`, etc.). */
15
51
  export type ThemePaletteVars = Record<string, string>;
@@ -85,6 +121,12 @@ export interface SiteConfig {
85
121
  title: string;
86
122
  logo?: string;
87
123
  nav: NavItem[];
124
+ /**
125
+ * Standalone, full-screen pages registered outside the `nav` tree. They do not appear in
126
+ * navigation and render with no top bar, sidebar, or footer (content only). The active theme
127
+ * still applies via root CSS variables.
128
+ */
129
+ pages?: StandalonePage[];
88
130
  theme?: ThemeConfig;
89
131
  footer?: string;
90
132
  readme?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bndynet/vue-site",
3
- "version": "0.1.11",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "description": "A configurable Vue 3 site framework with sidebar navigation, markdown rendering, and theme switching.",
6
6
  "repository": {
@@ -37,7 +37,7 @@
37
37
  "dev:example": "npm --prefix example run dev",
38
38
  "dev": "npm run build:lib && concurrently -k -n lib,example -c blue,magenta \"npm run build:lib:watch\" \"npm run dev:example\"",
39
39
  "build": "npm run build:lib",
40
- "preview": "npm run build:lib && cd example && npm run preview"
40
+ "preview": "npm run build:lib && cd example && npm run build && npm run preview"
41
41
  },
42
42
  "dependencies": {
43
43
  "@vitejs/plugin-vue": "^5.2.0",