docs: update portal for WRNexusJS 0.2.74
This commit is contained in:
@@ -10,16 +10,27 @@ page PublicHeadercomponent {
|
||||
<header class="topbar">
|
||||
<a class="brand" href="/"><span>W</span> WRNexusJS</a>
|
||||
<nav aria-label="Primary"><a href="/getting-started">Get started</a><a href="/packages">Packages</a><a href="/components">Components</a><a href="/language">Language</a><a href="/architecture">Architecture</a></nav>
|
||||
<div class="topbar-actions"><a class="preview-pill" href="/access">Private preview · v0.2.73</a><button data-wire-theme-toggle class="theme-button" aria-label="Toggle color theme" title="Toggle color theme">◐</button></div>
|
||||
<div class="topbar-actions"><a class="preview-pill" href="/access">Private preview · v0.2.74</a><button data-wire-theme-toggle class="theme-button" aria-label="Toggle color theme" title="Toggle color theme">◐</button></div>
|
||||
</header>
|
||||
<div class="mobile-doc-nav"><details><summary>Browse documentation</summary><nav><a href="/getting-started">Get started</a><a href="/packages">Packages</a><a href="/components">Components</a><a href="/language">Language</a><a href="/architecture">Architecture</a><a href="/tutorial">Tutorial</a><a href="/guides/project-structure">Guides</a><a href="/examples">Examples</a><a href="/search">Search</a></nav></details></div>
|
||||
<main class="portal-main docs-layout component-detail-page"><article id="main" class="documentation prose standalone"><nav class="breadcrumbs" aria-label="Breadcrumb"><a href="/">Home</a><span>/</span><a href="/components">Components</a><span>/</span><span aria-current="page">PublicHeader</span></nav><section class="doc-intro"><span class="eyebrow">layout component</span><h1>PublicHeader</h1><p>Reusable public header component.</p><div class="doc-meta"><span>@wrnexus/ui 0.2.73</span><span>22 props</span><span>2 slots</span><span>1 events</span></div></section><section id="usage"><h2>Usage</h2><p>Components are auto-discovered. Use the component directly in any <code>.wrn</code> view:</p><pre data-language="wrn"><code><PublicHeader
|
||||
<main class="portal-main docs-layout component-detail-page"><article id="main" class="documentation prose standalone"><nav class="breadcrumbs" aria-label="Breadcrumb"><a href="/">Home</a><span>/</span><a href="/components">Components</a><span>/</span><span aria-current="page">PublicHeader</span></nav><section class="doc-intro"><span class="eyebrow">layout component</span><h1>PublicHeader</h1><p>Reusable public header component.</p><div class="doc-meta"><span>@wrnexus/ui 0.2.74</span><span>30 props</span><span>2 slots</span><span>1 events</span></div></section><section id="usage"><h2>Usage</h2><p>Components are auto-discovered. Use the component directly in any <code>.wrn</code> view:</p><pre data-language="wrn"><code><PublicHeader
|
||||
homeHref="/"
|
||||
brandName="WRNexusJS"
|
||||
brandTagline="Identity Cloud"
|
||||
brandAriaLabel="WRNexusJS home"
|
||||
brandIcon="icon-[lucide--blocks]"
|
||||
/></code></pre><p>Legacy mount name: <code>data-component="PublicHeader"</code>.</p></section><section id="props"><h2>Props and attributes</h2><div class="table-wrap"><table><thead><tr><th>Prop</th><th>Type</th><th>Requirement</th><th>Default</th></tr></thead><tbody><tr><td><code>class</code></td><td><code>string</code></td><td>Optional</td><td><code>""</code></td></tr><tr><td><code>homeHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/"</code></td></tr><tr><td><code>brandName</code></td><td><code>string</code></td><td>Optional</td><td><code>"WRNexusJS"</code></td></tr><tr><td><code>brandTagline</code></td><td><code>string</code></td><td>Optional</td><td><code>"Identity Cloud"</code></td></tr><tr><td><code>brandAriaLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"WRNexusJS home"</code></td></tr><tr><td><code>brandIcon</code></td><td><code>string</code></td><td>Optional</td><td><code>"icon-[lucide--blocks]"</code></td></tr><tr><td><code>pricingLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Pricing"</code></td></tr><tr><td><code>pricingHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/pricing"</code></td></tr><tr><td><code>statusLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"All systems operational"</code></td></tr><tr><td><code>statusHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/status"</code></td></tr><tr><td><code>signInLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Sign in"</code></td></tr><tr><td><code>signInHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/sign-in"</code></td></tr><tr><td><code>primaryLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Start free"</code></td></tr><tr><td><code>primaryHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/sign-up"</code></td></tr><tr><td><code>showStatus</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showThemeToggle</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showSignIn</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showPrimaryAction</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>productLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Product"</code></td></tr><tr><td><code>solutionsLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Solutions"</code></td></tr><tr><td><code>developersLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Developers"</code></td></tr><tr><td><code>resourcesLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Resources"</code></td></tr></tbody></table></div></section><section id="slots"><h2>Slots</h2><ul><li><code>navigation</code></li><li><code>actions</code></li></ul></section><section id="events"><h2>Events</h2><ul><li><code>click</code></li></ul></section><section id="source"><h2>Source contract</h2><p>Installed source: <code>components/PublicHeader.wrn</code></p><pre data-language="wrn"><code>component PublicHeader {
|
||||
/></code></pre><p>Legacy mount name: <code>data-component="PublicHeader"</code>.</p></section><section id="props"><h2>Props and attributes</h2><div class="table-wrap"><table><thead><tr><th>Prop</th><th>Type</th><th>Requirement</th><th>Default</th></tr></thead><tbody><tr><td><code>class</code></td><td><code>string</code></td><td>Optional</td><td><code>""</code></td></tr><tr><td><code>homeHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/"</code></td></tr><tr><td><code>brandName</code></td><td><code>string</code></td><td>Optional</td><td><code>"WRNexusJS"</code></td></tr><tr><td><code>brandTagline</code></td><td><code>string</code></td><td>Optional</td><td><code>"Identity Cloud"</code></td></tr><tr><td><code>brandAriaLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"WRNexusJS home"</code></td></tr><tr><td><code>brandIcon</code></td><td><code>string</code></td><td>Optional</td><td><code>"icon-[lucide--blocks]"</code></td></tr><tr><td><code>pricingLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Pricing"</code></td></tr><tr><td><code>pricingHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/pricing"</code></td></tr><tr><td><code>statusLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"All systems operational"</code></td></tr><tr><td><code>statusHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/status"</code></td></tr><tr><td><code>signInLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Sign in"</code></td></tr><tr><td><code>signInHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/sign-in"</code></td></tr><tr><td><code>primaryLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Start free"</code></td></tr><tr><td><code>primaryHref</code></td><td><code>string</code></td><td>Optional</td><td><code>"/sign-up"</code></td></tr><tr><td><code>showStatus</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showThemeToggle</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showSignIn</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showPrimaryAction</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>productLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Product"</code></td></tr><tr><td><code>solutionsLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Solutions"</code></td></tr><tr><td><code>developersLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Developers"</code></td></tr><tr><td><code>resourcesLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Resources"</code></td></tr><tr><td><code>navigationAriaLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Main navigation"</code></td></tr><tr><td><code>themeToggleLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Toggle color theme"</code></td></tr><tr><td><code>mobileMenuOpenLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Open navigation menu"</code></td></tr><tr><td><code>mobileMenuCloseLabel</code></td><td><code>string</code></td><td>Optional</td><td><code>"Close navigation menu"</code></td></tr><tr><td><code>navigationItems</code></td><td><code>PublicHeaderNavigationItem[]</code></td><td>Optional</td><td><code>[]</code></td></tr><tr><td><code>actionItems</code></td><td><code>PublicHeaderActionItem[]</code></td><td>Optional</td><td><code>[]</code></td></tr><tr><td><code>showNavigation</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr><tr><td><code>showMobileThemeToggle</code></td><td><code>boolean</code></td><td>Optional</td><td><code>true</code></td></tr></tbody></table></div></section><section id="slots"><h2>Slots</h2><ul><li><code>navigation</code></li><li><code>actions</code></li></ul></section><section id="events"><h2>Events</h2><ul><li><code>click</code></li></ul></section><section id="source"><h2>Source contract</h2><p>Installed source: <code>components/PublicHeader.wrn</code></p><pre data-language="wrn"><code>component PublicHeader {
|
||||
types {
|
||||
interface PublicHeaderNavigationItem {
|
||||
label: string
|
||||
href: string
|
||||
ariaLabel?: string
|
||||
target?: string
|
||||
}
|
||||
interface PublicHeaderActionItem extends PublicHeaderNavigationItem {
|
||||
variant?: "primary" | "secondary" | "ghost"
|
||||
}
|
||||
}
|
||||
props {
|
||||
class: string = ""
|
||||
homeHref: string = "/"
|
||||
@@ -43,6 +54,14 @@ page PublicHeadercomponent {
|
||||
solutionsLabel: string = "Solutions"
|
||||
developersLabel: string = "Developers"
|
||||
resourcesLabel: string = "Resources"
|
||||
navigationAriaLabel: string = "Main navigation"
|
||||
themeToggleLabel: string = "Toggle color theme"
|
||||
mobileMenuOpenLabel: string = "Open navigation menu"
|
||||
mobileMenuCloseLabel: string = "Close navigation menu"
|
||||
navigationItems: PublicHeaderNavigationItem[] = []
|
||||
actionItems: PublicHeaderActionItem[] = []
|
||||
showNavigation: boolean = true
|
||||
showMobileThemeToggle: boolean = true
|
||||
}
|
||||
state activeMenu = ""
|
||||
state mobileMenuOpen = false
|
||||
@@ -89,11 +108,17 @@ page PublicHeadercomponent {
|
||||
</a>
|
||||
<!-- Desktop navigation -->
|
||||
<nav
|
||||
aria-label="Main navigation"
|
||||
aria-label="{navigationAriaLabel}"
|
||||
data-show="showNavigation"
|
||||
class="hidden items-center gap-1 lg:flex"
|
||||
>
|
||||
<slot name="navigation">
|
||||
<!-- Product -->
|
||||
{#if navigationItems.length > 0}
|
||||
{#each navigationItems as item}
|
||||
<a href="{item.href}" aria-label="{item.ariaLabel || item.label}" target="{item.target || '_self'}" class="inline-flex h-10 items-center rounded-xl px-3.5 text-sm font-semibold text-slate-700 transition hover:bg-slate-100 hover:text-slate-950 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 dark:text-slate-300 dark:hover:bg-white/5 dark:hover:text-white">{item.label}</a>
|
||||
{/each}
|
||||
{:else}
|
||||
<!-- Product -->
|
||||
<button
|
||||
type="button"
|
||||
@click="activeMenu = activeMenu === 'product' ? '' : 'product'"
|
||||
@@ -189,12 +214,18 @@ page PublicHeadercomponent {
|
||||
>
|
||||
{pricingLabel}
|
||||
</a>
|
||||
</slot>
|
||||
{/if}
|
||||
</slot>
|
||||
</nav>
|
||||
<!-- Desktop actions -->
|
||||
<div class="hidden items-center gap-2 lg:flex">
|
||||
<slot name="actions">
|
||||
<a data-show="showStatus"
|
||||
{#if actionItems.length > 0}
|
||||
{#each actionItems as item}
|
||||
<a href="{item.href}" aria-label="{item.ariaLabel || item.label}" target="{item.target || '_self'}" class="wire-public-header-action wire-public-header-action--{item.variant || 'secondary'}">{item.label}{#if item.variant === 'primary'}<span aria-hidden="true">→</span>{/if}</a>
|
||||
{/each}
|
||||
{:else}
|
||||
<a data-show="showStatus"
|
||||
href="{statusHref}"
|
||||
class="mr-1 inline-flex items-center gap-2 rounded-xl px-3 py-2 text-xs font-semibold text-slate-500 transition hover:bg-slate-100 hover:text-slate-950 dark:text-slate-400 dark:hover:bg-white/5 dark:hover:text-white"
|
||||
>
|
||||
@@ -210,8 +241,8 @@ page PublicHeadercomponent {
|
||||
<button data-show="showThemeToggle"
|
||||
type="button"
|
||||
data-wire-theme-toggle
|
||||
aria-label="Toggle color theme"
|
||||
title="Toggle color theme"
|
||||
aria-label="{themeToggleLabel}"
|
||||
title="{themeToggleLabel}"
|
||||
class="grid h-10 w-10 place-items-center rounded-xl border border-slate-200 bg-white text-slate-600 shadow-sm transition hover:border-slate-300 hover:bg-slate-100 hover:text-slate-950 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-300 dark:hover:border-white/20 dark:hover:bg-white/10 dark:hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--moon] h-4 w-4 dark:hidden" aria-hidden="true" >
|
||||
@@ -219,7 +250,7 @@ page PublicHeadercomponent {
|
||||
<span class="icon-[lucide--sun] hidden h-4 w-4 dark:block" aria-hidden="true" >
|
||||
</span>
|
||||
<span class="sr-only">
|
||||
Toggle color theme
|
||||
{themeToggleLabel}
|
||||
</span>
|
||||
</button>
|
||||
<a data-show="showSignIn"
|
||||
@@ -237,15 +268,16 @@ page PublicHeadercomponent {
|
||||
<span class="icon-[lucide--arrow-right] h-4 w-4 transition-transform group-hover:translate-x-0.5" aria-hidden="true" >
|
||||
</span>
|
||||
</a>
|
||||
</slot>
|
||||
{/if}
|
||||
</slot>
|
||||
</div>
|
||||
<!-- Mobile actions -->
|
||||
<div class="flex items-center gap-2 lg:hidden">
|
||||
<button
|
||||
<button data-show="showThemeToggle && showMobileThemeToggle"
|
||||
type="button"
|
||||
data-wire-theme-toggle
|
||||
aria-label="Toggle color theme"
|
||||
title="Toggle color theme"
|
||||
aria-label="{themeToggleLabel}"
|
||||
title="{themeToggleLabel}"
|
||||
class="grid h-10 w-10 place-items-center rounded-xl border border-slate-200 bg-white text-slate-600 shadow-sm transition hover:bg-slate-100 hover:text-slate-950 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-300 dark:hover:bg-white/10 dark:hover:text-white"
|
||||
>
|
||||
<span class="icon-[lucide--moon] h-4 w-4 dark:hidden" aria-hidden="true" >
|
||||
@@ -256,7 +288,7 @@ page PublicHeadercomponent {
|
||||
<button
|
||||
type="button"
|
||||
@click="mobileMenuOpen = !mobileMenuOpen"
|
||||
aria-label="{mobileMenuOpen ? 'Close navigation menu' : 'Open navigation menu'}"
|
||||
aria-label="{mobileMenuOpen ? mobileMenuCloseLabel : mobileMenuOpenLabel}"
|
||||
aria-expanded="{mobileMenuOpen}"
|
||||
aria-controls="public-mobile-navigation"
|
||||
class="grid h-10 w-10 place-items-center rounded-xl border border-slate-200 bg-white text-slate-700 shadow-sm transition hover:bg-slate-100 hover:text-slate-950 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10 dark:hover:text-white"
|
||||
@@ -272,7 +304,7 @@ page PublicHeadercomponent {
|
||||
</div>
|
||||
</div>
|
||||
<!-- Outside-click backdrop -->
|
||||
<button type="button" data-show="activeMenu !== ''" @click="activeMenu = ''" aria-label="Close navigation menu" class="fixed inset-0 z-40 hidden cursor-default bg-transparent lg:block" class:hidden="activeMenu === ''" class:block="activeMenu !== ''" >
|
||||
<button type="button" data-show="activeMenu !== ''" @click="activeMenu = ''" aria-label="{mobileMenuCloseLabel}" class="fixed inset-0 z-40 hidden cursor-default bg-transparent lg:block" class:hidden="activeMenu === ''" class:block="activeMenu !== ''" >
|
||||
</button>
|
||||
<!-- Desktop mega menus -->
|
||||
<div
|
||||
@@ -312,13 +344,22 @@ page PublicHeadercomponent {
|
||||
class:hidden="!mobileMenuOpen"
|
||||
class:block="mobileMenuOpen"
|
||||
>
|
||||
<PublicMobileNavigation />
|
||||
</div>
|
||||
{#if navigationItems.length > 0 || actionItems.length > 0}
|
||||
<nav aria-label="{navigationAriaLabel}" class="border-t border-slate-200 bg-white px-5 py-5 shadow-xl dark:border-white/10 dark:bg-slate-950">
|
||||
<div class="grid gap-2">
|
||||
{#each navigationItems as item}<a href="{item.href}" target="{item.target || '_self'}" class="rounded-xl px-4 py-3 text-sm font-semibold text-slate-700 hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-white/5">{item.label}</a>{/each}
|
||||
{#each actionItems as item}<a href="{item.href}" target="{item.target || '_self'}" class="wire-public-header-action wire-public-header-action--{item.variant || 'secondary'}">{item.label}</a>{/each}
|
||||
</div>
|
||||
</nav>
|
||||
{:else}
|
||||
<PublicMobileNavigation />
|
||||
{/if}
|
||||
</div>
|
||||
</header>
|
||||
}
|
||||
}
|
||||
</code></pre></section></article><aside class="on-this-page"><h2>On this page</h2><nav><a href="#usage">Usage</a><a href="#props">Props and attributes</a><a href="#slots">Slots</a><a href="#events">Events</a><a href="#source">Source contract</a></nav></aside></main>
|
||||
<footer><div class="footer-brand"><span class="footer-mark" aria-hidden="true">W</span><p><strong>WRNexusJS 0.2.73</strong><span>Complete API documentation generated from installed package declarations.</span></p></div><nav aria-label="Footer"><a href="/packages">All packages</a><a href="/getting-started">Get started</a><a href="/security">Security</a><a href="/support">Support</a><a href="/llms.txt">AI guide</a></nav><p class="footer-meta">Private Developer Preview · Bun-native</p></footer>
|
||||
<footer><div class="footer-brand"><span class="footer-mark" aria-hidden="true">W</span><p><strong>WRNexusJS 0.2.74</strong><span>Complete API documentation generated from installed package declarations.</span></p></div><nav aria-label="Footer"><a href="/packages">All packages</a><a href="/getting-started">Get started</a><a href="/security">Security</a><a href="/support">Support</a><a href="/llms.txt">AI guide</a></nav><p class="footer-meta">Private Developer Preview · Bun-native</p></footer>
|
||||
<BackToTop />
|
||||
</div>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user