diff --git a/.changeset/bright-icons-route.md b/.changeset/bright-icons-route.md
new file mode 100644
index 0000000..b05cff9
--- /dev/null
+++ b/.changeset/bright-icons-route.md
@@ -0,0 +1,6 @@
+---
+"@webaseui/svelte": patch
+---
+
+Expand the public Lucide icon name set used by the documentation navigation,
+component contracts, status summaries, and theme controls.
diff --git a/.gitignore b/.gitignore
index 228fbbe..95660c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@ coverage/
.env
.env.*
!.env.example
+docs/UI/
diff --git a/apps/docs/src/App.svelte b/apps/docs/src/App.svelte
index d8ec2d8..3e7687b 100644
--- a/apps/docs/src/App.svelte
+++ b/apps/docs/src/App.svelte
@@ -1,69 +1,39 @@
+ {pageTitle}
-
-
-
-
-
-
Build witha visible contract.
-
Accessible Svelte 5 components, named tokens, and a public contract designed to move between products.
-
- document.querySelector('#components')?.scrollIntoView({ behavior: scrollBehavior() })} />
-
-
-
-
-
-
Interactive component specimen
-
-
-
-
-
-
- {#snippet footer()}
- Three browser engines
-
- {/snippet}
-
-
-
-
-
-
-
-
- (heroSaved = !heroSaved)} />
-
-
-
-
-
-
-
-
- - Components
- 28
- RuntimeSvelte 5
- Engines3
- LicenseMIT
-
-
-
-
-
- Foundation
- Tokens carry the identity.
- Semantic variables keep color, type, focus, and motion coherent across every framework surface.
-
-
-
-
-
-
-
-
- --webase-*
-
-
-
- {#each tokens as token}
-
-
-
- {token.label}
- {token.token}
-
-
- {/each}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {#key selectedComponent.name}
-
-
-
-
-
- Live specimen
- Package root import
-
-
-
-
-
-
-
-
-
- Public contract
- {selectedComponent.fields.length} fields
-
-
- {#each selectedComponent.fields as field}
-
-
- {field.label}
- -
- {#each inlineParts(field.value) as part}
- {#if part.code}
{part.text}{:else}{part.text}{/if}
- {/each}
-
-
- {/each}
-
-
-
-
-
- Usage
-
-
-
- {`import { ${selectedComponent.name} } from '@webaseui/svelte';\n\n${selectedComponent.example}`}
-
-
-
- {/key}
-
-
-
-
-
-
-
-
-
- Packages
-
-
-
- {installCommand}
- @webaseui/svelte v{packageVersion}
-
-
-
-
- Import
-
-
-
- {importCode}
-
-
-
-
-
-
-
-
+
+
diff --git a/apps/docs/src/app.css b/apps/docs/src/app.css
index 3d41dcd..1bc7353 100644
--- a/apps/docs/src/app.css
+++ b/apps/docs/src/app.css
@@ -56,8 +56,8 @@ pre:focus-visible {
}
::selection {
- color: var(--paper);
- background: var(--brand);
+ color: var(--ink);
+ background: var(--surface);
}
.visually-hidden {
@@ -305,6 +305,10 @@ main { overflow: clip; }
margin-top: 30px;
}
+.hero-actions .ds-link-action {
+ min-height: var(--webase-component-button-height);
+}
+
.hero-stage {
position: relative;
min-width: 0;
@@ -689,6 +693,7 @@ code {
letter-spacing: .12em;
text-transform: uppercase;
}
+.sidebar-group-trigger { display: flex; width: 100%; min-height: 32px; align-items: center; justify-content: space-between; padding: 0; border: 0; color: var(--ink-muted); background: transparent; cursor: pointer; font-family: var(--mono); font-size: 8px; letter-spacing: .12em; text-align: left; text-transform: uppercase; }
.sidebar-group > div { display: grid; gap: 2px; }
@@ -1219,7 +1224,7 @@ footer nav a { text-underline-offset: 4px; }
.stage-alert { animation: layer-in 720ms var(--ease-out) 460ms both; }
.stage-actions { animation: layer-in 720ms var(--ease-out) 580ms both; }
- [data-reveal] {
+ [data-reveal].reveal-pending {
opacity: 0;
transform: translateY(34px);
transition: opacity 760ms var(--ease-out), transform 760ms var(--ease-out);
@@ -1425,3 +1430,372 @@ footer nav a { text-underline-offset: 4px; }
.install-primary,
.install-import { border: 1px solid CanvasText; }
}
+
+/* Prototype pass: the docs surface uses a quiet editorial grid with a single navy signal. */
+.brand-logo { display: block; }
+.brand-mark {
+ display: grid;
+ width: 34px;
+ height: 34px;
+ place-items: center;
+ border: 1px solid var(--brand);
+ color: var(--paper);
+ background: var(--brand);
+ font-family: var(--display);
+ font-size: 23px;
+ line-height: 1;
+}
+.brand-name {
+ margin-left: 10px;
+ color: var(--ink);
+ font-family: var(--sans);
+ font-size: 14px;
+ font-weight: 650;
+ letter-spacing: -.02em;
+}
+.primary-nav a.active { color: var(--brand); }
+.primary-nav a.active::after { transform: scaleX(1); transform-origin: left; }
+.theme-sun { color: var(--brand); }
+.theme-moon { color: var(--ink-muted); }
+.header-actions .ds-switch-copy { display: none; }
+.landing-page { border-bottom: 1px solid var(--hairline-strong); }
+.hero {
+ min-height: min(620px, calc(100dvh - var(--header-height)));
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ padding-top: 24px;
+ padding-bottom: 56px;
+}
+.hero h1 { max-width: 700px; font-size: clamp(64px, 7vw, 112px); letter-spacing: -.075em; line-height: .84; }
+.hero h1 em { color: var(--ink); font-style: normal; }
+.hero-copy { max-width: 490px; font-size: 17px; }
+.hero-actions { margin-top: 28px; }
+.hero-stage { min-height: 510px; }
+.hero-stage::before,
+.hero-stage::after { display: none; }
+.reference-desk {
+ position: absolute;
+ inset: 7% 3% 3% 8%;
+ display: grid;
+ grid-template-rows: auto auto 1fr auto;
+ border: 1px solid var(--hairline-strong);
+ background: var(--surface);
+ box-shadow: 14px 14px 0 color-mix(in srgb, var(--brand) 12%, transparent);
+ transform: rotate(1.2deg);
+}
+.desk-header,
+.desk-footer { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 18px 22px; }
+.desk-header { border-bottom: 1px solid var(--hairline); }
+.desk-header strong { font-family: var(--display); font-size: 25px; font-weight: 500; letter-spacing: -.03em; }
+.desk-header > div { display: flex; gap: 13px; color: var(--brand); }
+.desk-tabs { padding: 0 22px; border-bottom: 1px solid var(--hairline); }
+.desk-tabs .ds-tabs { width: 100%; }
+.desk-tabs .ds-tab-list { justify-content: space-between; border-bottom: 0; }
+.desk-tabs .ds-tab-list button { min-width: 28%; }
+.desk-tabs .ds-tab-panel { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); border: 0; }
+.desk-body { display: grid; align-content: center; gap: 16px; padding: 32px 22px; }
+.density-line { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; }
+.density-line span,
+.density-labels,
+.desk-footer,
+.preview-density span { color: var(--ink-muted); font-family: var(--mono); font-size: 9px; letter-spacing: .08em; text-transform: uppercase; }
+.density-line strong { color: var(--brand); font-family: var(--sans); font-size: 12px; font-weight: 600; }
+.density-labels { display: flex; justify-content: space-between; margin-top: -10px; font-size: 8px; }
+.verified-alert { margin-top: 18px; }
+.verified-alert .ds-alert { border-color: color-mix(in srgb, var(--success) 50%, var(--hairline)); }
+.desk-footer { border-top: 1px solid var(--hairline); }
+.desk-footer span { display: inline-flex; align-items: center; gap: 8px; }
+.desk-footer svg { color: var(--brand); }
+.desk-footer code { color: var(--ink); font-size: 10px; }
+.proof-rail { padding-bottom: 0; }
+.proof-rail dl > div { justify-content: flex-start; gap: 12px; }
+.proof-rail dl > div > svg { color: var(--brand); flex: 0 0 auto; }
+.proof-rail dt { margin-right: auto; }
+.proof-rail dd { font-family: var(--sans); font-size: 17px; font-weight: 650; }
+.foundation-section,
+.install-section { width: min(100%, var(--content-max)); margin: 0 auto; padding: clamp(82px, 9vw, 132px) var(--page-gutter); scroll-margin-top: calc(var(--header-height) + 18px); }
+.reference-page { width: min(100%, var(--page-max)); margin: 0 auto; padding: clamp(82px, 9vw, 132px) var(--page-gutter); scroll-margin-top: calc(var(--header-height) + 18px); }
+.foundation-section { padding-top: 52px; }
+.reference-page { padding-top: 32px; }
+.foundation-heading { display: flex; max-width: none; align-items: end; justify-content: space-between; }
+.foundation-heading h2 { max-width: 620px; }
+.foundation-grid { display: grid; grid-template-columns: 1fr 1.25fr 1fr .7fr; gap: clamp(22px, 3vw, 48px); }
+.foundation-group { padding-top: 18px; border-top: 1px solid var(--hairline-strong); }
+.foundation-group h3 { margin: 0 0 15px; color: var(--ink-muted); font-family: var(--mono); font-size: 9px; font-weight: 400; letter-spacing: .12em; text-transform: uppercase; }
+.swatch-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(28px, 1fr)); gap: 7px; }
+.swatch-item { display: grid; gap: 8px; }
+.swatch-item > span { display: block; min-height: 62px; border: 1px solid color-mix(in srgb, var(--ink) 13%, var(--hairline)); }
+.swatch-item code { color: var(--ink-muted); font-size: 9px; }
+.reference-page { border-top: 1px solid var(--hairline-strong); }
+.reference-breadcrumb { margin-bottom: 26px; }
+.reference-breadcrumb a { display: inline-flex; align-items: center; gap: 7px; color: var(--ink-muted); font-family: var(--mono); font-size: 9px; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
+.reference-breadcrumb a:hover { color: var(--brand); }
+.reference-header h3 { margin: 0; font-family: var(--display); font-size: clamp(48px, 6vw, 84px); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
+.reference-header > div > p:last-child { max-width: 650px; margin-top: 20px; }
+.preview-panel,
+.contract-panel,
+.example-panel { box-shadow: 8px 8px 0 color-mix(in srgb, var(--brand) 7%, transparent); }
+.preview-panel > header h2,
+.contract-panel > header h2,
+.example-panel > header h2 { margin: 0; font-family: var(--sans); font-size: 11px; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; }
+.preview-density { display: flex; min-width: min(300px, 45%); align-items: center; gap: 9px; }
+.preview-density input { width: 120px; accent-color: var(--brand); }
+.preview-density svg { color: var(--brand); }
+.contract-list { display: grid; }
+.contract-row { display: grid; grid-template-columns: 28px 76px minmax(0, 1fr) 18px; align-items: start; gap: 12px; min-width: 0; padding: 17px 16px; border-bottom: 1px solid var(--hairline); }
+.contract-row:last-child { border-bottom: 0; }
+.contract-icon { color: var(--brand); }
+.contract-row strong { padding-top: 2px; font-family: var(--sans); font-size: 11px; font-weight: 650; }
+.contract-row p { min-width: 0; margin: 0; color: var(--ink-soft); font-size: 13px; line-height: 1.5; }
+.contract-row p code { background: color-mix(in srgb, var(--brand-tint) 62%, transparent); }
+.contract-row > svg { margin-top: 2px; color: var(--ink-muted); }
+.example-panel pre { min-height: 235px; background: color-mix(in srgb, var(--brand-tint) 20%, var(--paper)); }
+.install-section { border-top: 1px solid var(--hairline-strong); }
+
+.components-index,
+.release-page {
+ width: min(100%, var(--content-max));
+ margin: 0 auto;
+ padding: clamp(72px, 8vw, 118px) var(--page-gutter) 132px;
+}
+
+.components-index:focus,
+.release-page:focus { outline: none; }
+
+.components-index-heading,
+.release-heading {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ align-items: end;
+ gap: 32px;
+ padding-bottom: 42px;
+ border-bottom: 1px solid var(--hairline-strong);
+}
+
+.components-index-heading h1,
+.release-heading h1 {
+ max-width: 720px;
+ margin: 0;
+ font-family: var(--display);
+ font-size: clamp(64px, 8vw, 112px);
+ font-weight: 500;
+ letter-spacing: -.075em;
+ line-height: .84;
+}
+
+.components-index-heading p:last-child,
+.release-heading p:last-child {
+ max-width: 620px;
+ margin: 22px 0 0;
+ color: var(--ink-soft);
+ font-size: 17px;
+ line-height: 1.6;
+}
+
+.components-index-search {
+ display: grid;
+ grid-template-columns: auto minmax(0, 1fr) auto;
+ align-items: center;
+ gap: 12px;
+ min-height: 58px;
+ margin: 34px 0 70px;
+ padding: 0 16px;
+ border: 1px solid var(--hairline-strong);
+ color: var(--brand);
+ background: var(--surface);
+}
+
+.components-index-search:focus-within {
+ border-color: var(--brand);
+ outline: var(--focus-ring);
+ outline-offset: 3px;
+}
+
+.components-index-search input {
+ min-width: 0;
+ border: 0;
+ outline: 0;
+ color: var(--ink);
+ background: transparent;
+ font-size: 15px;
+}
+
+.components-index-search input::placeholder { color: var(--ink-muted); opacity: 1; }
+.components-index-search > span:last-child { color: var(--ink-muted); font-family: var(--mono); font-size: 9px; letter-spacing: .08em; }
+
+.components-index-groups { display: grid; gap: 54px; }
+
+.components-index-group > header {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ gap: 20px;
+ margin-bottom: 12px;
+ padding-bottom: 12px;
+ border-bottom: 1px solid var(--hairline-strong);
+}
+
+.components-index-group > header h2 {
+ margin: 0;
+ color: var(--ink-muted);
+ font-family: var(--mono);
+ font-size: 10px;
+ font-weight: 400;
+ letter-spacing: .12em;
+ text-transform: uppercase;
+}
+
+.components-index-group > header span { color: var(--brand); font-family: var(--mono); font-size: 10px; }
+.components-index-list { display: grid; }
+
+.component-index-item {
+ display: grid;
+ grid-template-columns: minmax(190px, .65fr) minmax(0, 1.35fr) auto;
+ align-items: center;
+ gap: 22px;
+ min-height: 78px;
+ padding: 13px 10px;
+ border-bottom: 1px solid var(--hairline);
+ color: var(--ink);
+ text-decoration: none;
+ transition: color var(--duration-ui) var(--ease-out), background-color var(--duration-ui) var(--ease-out), transform var(--duration-fast) var(--ease-out);
+}
+
+.component-index-item:first-child { border-top: 1px solid var(--hairline); }
+.component-index-item:hover,
+.component-index-item:focus-visible { color: var(--brand); background: var(--brand-tint); transform: translateX(3px); }
+.component-index-item > span:first-child { display: grid; gap: 4px; }
+.component-index-item strong { font-family: var(--sans); font-size: 14px; font-weight: 650; }
+.component-index-item small { color: var(--ink-muted); font-family: var(--mono); font-size: 8px; letter-spacing: .08em; text-transform: uppercase; }
+.component-index-item > span:nth-child(2) { color: var(--ink-soft); font-size: 13px; line-height: 1.45; }
+.component-index-item svg { color: var(--brand); }
+
+.components-index-empty,
+.release-policy {
+ display: grid;
+ align-items: center;
+ gap: 12px;
+ border: 1px dashed var(--hairline-strong);
+ color: var(--ink-muted);
+}
+
+.components-index-empty { min-height: 250px; place-items: center; align-content: center; text-align: center; }
+.components-index-empty strong { color: var(--ink); font-size: 17px; }
+.components-index-empty span { font-size: 14px; }
+
+.release-heading { align-items: start; }
+.release-signal { display: grid; min-width: 160px; justify-items: start; gap: 8px; padding: 18px 0 0 18px; border-left: 1px solid var(--hairline-strong); color: var(--brand); }
+.release-signal span { color: var(--ink-muted); font-family: var(--mono); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
+.release-signal strong { color: var(--ink); font-family: var(--display); font-size: 31px; font-weight: 500; letter-spacing: -.04em; }
+.release-timeline { display: grid; margin-top: 62px; }
+.release-entry { display: grid; grid-template-columns: 80px minmax(0, 760px); gap: 20px; padding: 0 0 48px; }
+.release-marker { position: relative; display: flex; justify-content: center; color: var(--brand); font-family: var(--mono); font-size: 9px; }
+.release-marker::after { position: absolute; top: 25px; bottom: -48px; left: 50%; width: 1px; background: var(--hairline-strong); content: ''; }
+.release-entry:last-child { padding-bottom: 0; }
+.release-entry:last-child .release-marker::after { display: none; }
+.release-marker span { display: grid; width: 30px; height: 30px; place-items: center; border: 1px solid var(--brand); background: var(--paper); }
+.release-entry-copy { border-top: 1px solid var(--hairline-strong); }
+.release-entry-copy > header { display: flex; align-items: start; justify-content: space-between; gap: 20px; padding: 18px 0 16px; }
+.release-entry-copy > header p { margin: 0 0 8px; color: var(--brand); font-family: var(--mono); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
+.release-entry-copy h2 { margin: 0; font-family: var(--display); font-size: clamp(32px, 4vw, 52px); font-weight: 500; letter-spacing: -.055em; line-height: .9; }
+.release-entry-copy > header > span { padding: 7px 8px; border: 1px solid var(--hairline); color: var(--ink-muted); font-family: var(--mono); font-size: 8px; letter-spacing: .08em; text-transform: uppercase; }
+.release-entry-copy ul { display: grid; gap: 10px; margin: 0; padding: 0 0 0 18px; color: var(--ink-soft); font-size: 15px; line-height: 1.6; }
+.release-entry-copy li::marker { color: var(--brand); }
+.release-policy { grid-template-columns: auto minmax(0, 1fr) auto; margin-top: 70px; padding: 20px; border-style: solid; background: color-mix(in srgb, var(--brand-tint) 28%, var(--paper)); }
+.release-policy > svg { color: var(--brand); }
+.release-policy strong { color: var(--ink); font-size: 14px; }
+.release-policy p { max-width: 620px; margin: 6px 0 0; color: var(--ink-soft); font-size: 13px; line-height: 1.5; }
+.release-policy a { display: inline-flex; align-items: center; gap: 8px; color: var(--brand); font-family: var(--mono); font-size: 9px; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
+
+.sidebar-group > div > a {
+ display: block;
+ min-height: 34px;
+ padding: 9px 10px;
+ border-left: 2px solid transparent;
+ color: var(--ink-soft);
+ font-family: var(--sans);
+ font-size: 11px;
+ text-decoration: none;
+ transition: border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), background-color var(--duration-ui) var(--ease-out), transform var(--duration-fast) var(--ease-out);
+}
+.sidebar-group > div > a:hover,
+.sidebar-group > div > a:focus-visible { color: var(--ink); background: color-mix(in srgb, var(--brand-tint) 55%, transparent); transform: translateX(2px); }
+.sidebar-group > div > a.selected { border-left-color: var(--brand); color: var(--brand); background: var(--brand-tint); }
+.reference-header h1 { margin: 0; font-family: var(--display); font-size: clamp(48px, 6vw, 84px); font-weight: 500; letter-spacing: -.06em; line-height: .9; }
+
+@media (max-width: 900px) {
+ .header-inner { grid-template-columns: auto minmax(150px, 1fr) auto; }
+ .primary-nav { display: none; }
+ .mobile-menu-button { display: inline-flex; align-items: center; justify-content: center; }
+ .hero { grid-template-columns: 1fr; }
+ .hero-stage { width: min(720px, 100%); min-height: 520px; margin-inline: auto; }
+ .reference-lower { grid-template-columns: 1fr; }
+ .example-panel { position: static; }
+}
+
+@media (max-width: 680px) {
+ .header-inner { grid-template-columns: auto 1fr auto; padding-inline: 16px; }
+ .brand-name { font-size: 13px; }
+ .header-actions { gap: 6px; }
+ .theme-sun, .theme-moon { display: none; }
+ .hero { min-height: auto; gap: 28px; padding: 26px 20px 56px; }
+ .hero h1 { font-size: clamp(48px, 12.5vw, 54px); }
+ .hero h1 em { white-space: nowrap; }
+ .hero-copy { margin-top: 22px; font-size: 16px; }
+ .hero-actions { align-items: flex-start; flex-direction: row; margin-top: 24px; }
+ .hero-actions > * { width: auto; justify-content: center; }
+ .hero-actions .ds-link { display: none; }
+ .hero-stage { min-height: 340px; }
+ .reference-desk { inset: 3% 0 1% 3%; transform: none; }
+ .desk-header, .desk-footer { padding-inline: 16px; }
+ .desk-header strong { font-size: 21px; }
+ .desk-tabs { padding-inline: 16px; }
+ .desk-body { gap: 10px; padding: 18px 16px; }
+ .verified-alert { margin-top: 8px; }
+ .desk-footer { flex-wrap: nowrap; padding-block: 13px; }
+ .proof-rail { padding-inline: 20px; }
+ .proof-rail dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
+ .proof-rail dl > div { min-height: 82px; padding-inline: 12px; }
+ .foundation-section, .install-section, .reference-page { padding-inline: 20px; padding-top: 82px; padding-bottom: 88px; }
+ .reference-page { padding-top: 28px; }
+ .foundation-heading { align-items: start; flex-direction: row; }
+ .foundation-grid { grid-template-columns: 1fr 1.15fr .85fr .75fr; gap: 14px; }
+ .foundation-group { min-width: 0; }
+ .foundation-group h3 { font-size: 8px; }
+ .swatch-row { grid-template-columns: repeat(auto-fit, minmax(9px, 1fr)); gap: 4px; }
+ .swatch-item > span { min-height: 54px; }
+ .swatch-item code { font-size: 7px; }
+ .mobile-component-select { display: grid; position: relative; min-height: 58px; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 13px; margin-bottom: 28px; padding: 0 16px; border: 1px solid var(--hairline-strong); background: var(--surface); }
+ .mobile-component-select > svg:first-child { color: var(--brand); }
+ .mobile-component-select > svg:last-child { pointer-events: none; }
+ .mobile-component-select label { color: var(--ink); font-family: var(--sans); font-size: 15px; }
+ .mobile-component-select select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
+ .reference-sidebar { display: none; }
+ .reference-shell { display: block; }
+ .reference-header { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
+ .reference-header h3 { font-size: clamp(44px, 11.5vw, 52px); }
+ .reference-version { width: max-content; margin-top: 4px; }
+ .preview-panel > header { align-items: flex-start; flex-direction: column; padding-block: 14px; }
+ .preview-density { width: 100%; min-width: 0; }
+ .preview-density input { flex: 1; width: auto; }
+ .preview-canvas { min-height: 310px; padding: 22px 16px; }
+ .contract-row { grid-template-columns: 25px minmax(0, 1fr) 18px; gap: 10px; }
+ .contract-row strong { grid-column: 2; }
+ .contract-row p { grid-column: 2 / -1; }
+ .contract-row > svg { grid-column: 3; grid-row: 1; }
+ footer { padding-inline: 20px; }
+ .components-index,
+ .release-page { padding-inline: 20px; padding-top: 72px; padding-bottom: 90px; }
+ .components-index-heading,
+ .release-heading { grid-template-columns: 1fr; gap: 24px; padding-bottom: 34px; }
+ .components-index-heading h1,
+ .release-heading h1 { font-size: clamp(58px, 18vw, 78px); }
+ .components-index-heading p:last-child,
+ .release-heading p:last-child { font-size: 16px; }
+ .components-index-search { margin: 24px 0 48px; }
+ .component-index-item { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
+ .component-index-item > span:nth-child(2) { display: none; }
+ .release-signal { min-width: 0; padding: 16px 0 0; border-top: 1px solid var(--hairline-strong); border-left: 0; }
+ .release-entry { grid-template-columns: 44px minmax(0, 1fr); gap: 10px; }
+ .release-policy { grid-template-columns: auto minmax(0, 1fr); }
+ .release-policy a { grid-column: 2; }
+}
diff --git a/apps/docs/src/lib/ComponentPreview.svelte b/apps/docs/src/lib/ComponentPreview.svelte
index d064d9d..5afd348 100644
--- a/apps/docs/src/lib/ComponentPreview.svelte
+++ b/apps/docs/src/lib/ComponentPreview.svelte
@@ -29,7 +29,7 @@
WeBaseToast,
WeBaseTooltip
} from '@webaseui/svelte';
- import type { ComponentName } from './reference';
+ import type { ComponentName } from './data/reference';
interface Props {
name: ComponentName;
@@ -43,8 +43,8 @@
{ title: 'Release gate', content: 'Cross-browser and accessibility checks run before publish.' }
];
const breadcrumbItems = [
- { label: 'Docs', href: '#top' },
- { label: 'Components', href: '#components' },
+ { label: 'Docs', href: '/' },
+ { label: 'Components', href: '/components' },
{ label: 'Button' }
];
const selectOptions = [
@@ -90,11 +90,12 @@
{:else if name === 'WeBaseBreadcrumbs'}
{:else if name === 'WeBaseButton'}
-
-
-
-
-
+
{:else if name === 'WeBaseCard'}
@@ -140,8 +141,8 @@
{:else if name === 'WeBaseLink'}
-
-
+
+
{:else if name === 'WeBaseLoader'}
@@ -174,7 +175,7 @@
-
+
{:else if name === 'WeBaseTabs'}
@@ -196,6 +197,9 @@