feat: release design system engine, studio and component contracts

This commit is contained in:
Clintchiz committed 2026-10-19 13:09:03 +05:30
1 parent ff1065fb27
commit 3943b946d6
693 files changed
+175546 -3894

No files matched your search

+34 -34
View File
@@ -187,7 +187,7 @@ component MegaMenu {
@keydown='handleKeydown(event)'
@mouseenter='cancelScheduledHide()'
@mouseleave='scheduleHide()'
>
data-wrn-owner="MegaMenu" data-wrn-part="root" data-wrn-component="MegaMenu" data-wrn-axis-color='{color}' data-wrn-axis-size='{size}' data-wrn-axis-variant='{variant}'>
<button
type="button"
class="wrn-mega__trigger"
@@ -196,10 +196,10 @@ component MegaMenu {
aria-label='{label || "Menu"}'
@click='activatePanel(event)'
@mouseenter='hoverPanel(event)'
>
<span class='wrn-mega__trigger-icon {icon}' data-show="icon" aria-hidden="true"></span>
<span class="wrn-mega__trigger-label" data-label='{label || "Menu"}' aria-hidden="true"></span>
<span class="wrn-mega__arrow" aria-hidden="true">&#8250;</span>
data-wrn-owner="MegaMenu" data-wrn-part="trigger" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
<span class='wrn-mega__trigger-icon {icon}' data-show="icon" aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="triggerIcon" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"></span>
<span class="wrn-mega__trigger-label" data-label='{label || "Menu"}' aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="triggerLabel" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"></span>
<span class="wrn-mega__arrow" aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="arrow" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">&#8250;</span>
</button>
<div
@@ -209,19 +209,19 @@ component MegaMenu {
style='{visible ? "" : "display:none"}'
data-wrn-roving="both"
@mouseenter='cancelScheduledHide()'
>
<div class="wrn-mega__layout">
data-wrn-owner="MegaMenu" data-wrn-part="panel" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
<div class="wrn-mega__layout" data-wrn-owner="MegaMenu" data-wrn-part="layout" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if railList().length > 0}
<aside class="wrn-mega__rail">
<aside class="wrn-mega__rail" data-wrn-owner="MegaMenu" data-wrn-part="rail" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#each railList() as item, index}
{#if variant === "catalog"}
<button type="button" class="wrn-mega__rail-link" data-active='{activeCategoryIndex() === index ? "true" : "false"}' aria-pressed='{activeCategoryIndex() === index ? "true" : "false"}' @click='chooseCategory(item, index, event)'>
{#if item.icon}<span class="wrn-mega__rail-icon" aria-hidden="true"><span class='{item.icon}'></span></span>{/if}
<button type="button" class="wrn-mega__rail-link" data-active='{activeCategoryIndex() === index ? "true" : "false"}' aria-pressed='{activeCategoryIndex() === index ? "true" : "false"}' @click='chooseCategory(item, index, event)' data-wrn-owner="MegaMenu" data-wrn-part="railLink" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if item.icon}<span class="wrn-mega__rail-icon" aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="railIcon" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"><span class='{item.icon}'></span></span>{/if}
<span><strong>{item.label}</strong>{#if item.description}<small>{item.description}</small>{/if}</span>
</button>
{:else}
<a class="wrn-mega__rail-link" href='{item.href || "#"}' @click='choose(item)'>
{#if item.icon}<span class="wrn-mega__rail-icon" aria-hidden="true"><span class='{item.icon}'></span></span>{/if}
<a class="wrn-mega__rail-link" href='{item.href || "#"}' @click='choose(item)' data-wrn-owner="MegaMenu" data-wrn-part="railLink" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if item.icon}<span class="wrn-mega__rail-icon" aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="railIcon" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"><span class='{item.icon}'></span></span>{/if}
<span><strong>{item.label}</strong>{#if item.description}<small>{item.description}</small>{/if}</span>
</a>
{/if}
@@ -229,53 +229,53 @@ component MegaMenu {
</aside>
{/if}
<div class="wrn-mega__columns">
<div class="wrn-mega__columns" data-wrn-owner="MegaMenu" data-wrn-part="columns" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#each visibleColumns() as column}
<section class="wrn-mega__column">
<header class="wrn-mega__column-header">
{#if column.eyebrow}<p class="wrn-mega__eyebrow">{column.eyebrow}</p>{/if}
<h3 class="wrn-mega__heading" data-show="column.heading">{column.heading}</h3>
{#if column.description}<p class="wrn-mega__column-description">{column.description}</p>{/if}
<section class="wrn-mega__column" data-wrn-owner="MegaMenu" data-wrn-part="column" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
<header class="wrn-mega__column-header" data-wrn-owner="MegaMenu" data-wrn-part="columnHeader" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if column.eyebrow}<p class="wrn-mega__eyebrow" data-wrn-owner="MegaMenu" data-wrn-part="eyebrow" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{column.eyebrow}</p>{/if}
<h3 class="wrn-mega__heading" data-show="column.heading" data-wrn-owner="MegaMenu" data-wrn-part="heading" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{column.heading}</h3>
{#if column.description}<p class="wrn-mega__column-description" data-wrn-owner="MegaMenu" data-wrn-part="columnDescription" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{column.description}</p>{/if}
</header>
{#if column.image}<img class="wrn-mega__column-image" src='{column.image}' alt='{column.imageAlt || ""}' loading="lazy" />{/if}
<ul class="wrn-mega__list">
{#if column.image}<img class="wrn-mega__column-image" src='{column.image}' alt='{column.imageAlt || ""}' loading="lazy" data-wrn-owner="MegaMenu" data-wrn-part="columnImage" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"/>{/if}
<ul class="wrn-mega__list" data-wrn-owner="MegaMenu" data-wrn-part="list" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#each itemsOf(column) as item}
<li>
<a class="wrn-mega__link" href='{item.href || "#"}' data-wrn-roving-item="true" aria-disabled='{item.disabled ? "true" : "false"}' @click='choose(item)'>
{#if item.image}<img class="wrn-mega__link-image" src='{item.image}' alt="" loading="lazy" />{/if}
<a class="wrn-mega__link" href='{item.href || "#"}' data-wrn-roving-item="true" aria-disabled='{item.disabled ? "true" : "false"}' @click='choose(item)' data-wrn-owner="MegaMenu" data-wrn-part="link" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if item.image}<img class="wrn-mega__link-image" src='{item.image}' alt="" loading="lazy" data-wrn-owner="MegaMenu" data-wrn-part="linkImage" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"/>{/if}
{#if item.icon}
<span class='wrn-mega__link-icon {item.icon}' aria-hidden="true"></span>
<span class='wrn-mega__link-icon {item.icon}' aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="linkIcon" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"></span>
{:else if variant === "catalog"}
<span class="wrn-mega__link-icon wrn-mega__link-icon--fallback" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M9 21V9"></path></svg>
<span class="wrn-mega__link-icon wrn-mega__link-icon--fallback" aria-hidden="true" data-wrn-owner="MegaMenu" data-wrn-part="linkIcon" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-wrn-owner="MegaMenu" data-wrn-part="vector" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M9 21V9"></path></svg>
</span>
{/if}
<span class="wrn-mega__link-body">
{#if item.eyebrow}<span class="wrn-mega__link-eyebrow">{item.eyebrow}</span>{/if}
<span class="wrn-mega__link-label">{item.label}{#if item.badge}<span class="wrn-mega__badge">{item.badge}</span>{/if}</span>
{#if item.description}<span class="wrn-mega__link-description">{item.description}</span>{/if}
<span class="wrn-mega__link-body" data-wrn-owner="MegaMenu" data-wrn-part="linkBody" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if item.eyebrow}<span class="wrn-mega__link-eyebrow" data-wrn-owner="MegaMenu" data-wrn-part="linkEyebrow" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{item.eyebrow}</span>{/if}
<span class="wrn-mega__link-label" data-wrn-owner="MegaMenu" data-wrn-part="linkLabel" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{item.label}{#if item.badge}<span class="wrn-mega__badge" data-wrn-owner="MegaMenu" data-wrn-part="badge" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{item.badge}</span>{/if}</span>
{#if item.description}<span class="wrn-mega__link-description" data-wrn-owner="MegaMenu" data-wrn-part="linkDescription" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{item.description}</span>{/if}
</span>
</a>
</li>
{/each}
</ul>
{#if column.actionLabel}<a class="wrn-mega__column-action" href='{column.actionHref || "#"}'>{column.actionLabel}<span class="icon-[lucide--arrow-right]" aria-hidden="true"></span></a>{/if}
{#if column.actionLabel}<a class="wrn-mega__column-action" href='{column.actionHref || "#"}' data-wrn-owner="MegaMenu" data-wrn-part="columnAction" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{column.actionLabel}<span class="icon-[lucide--arrow-right]" aria-hidden="true"></span></a>{/if}
</section>
{/each}
</div>
{#if featured.title || featured.image}
<aside class="wrn-mega__featured">
{#if featured.eyebrow}<p class="wrn-mega__eyebrow">{featured.eyebrow}</p>{/if}
<aside class="wrn-mega__featured" data-wrn-owner="MegaMenu" data-wrn-part="featured" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">
{#if featured.eyebrow}<p class="wrn-mega__eyebrow" data-wrn-owner="MegaMenu" data-wrn-part="eyebrow" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{featured.eyebrow}</p>{/if}
{#if featured.image}<img src='{featured.image}' alt='{featured.imageAlt || ""}' loading="lazy" />{/if}
{#if featured.title}<strong>{featured.title}</strong>{/if}
{#if featured.description}<p>{featured.description}</p>{/if}
{#if featured.actionLabel}<a href='{featured.actionHref || "#"}'>{featured.actionLabel}<span class="icon-[lucide--arrow-right]" aria-hidden="true"></span></a>{/if}
{#if featured.actionLabel}<a href='{featured.actionHref || "#"}' data-wrn-owner="MegaMenu" data-wrn-part="link" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{featured.actionLabel}<span class="icon-[lucide--arrow-right]" aria-hidden="true"></span></a>{/if}
</aside>
{/if}
</div>
{#if footer || actionLabel}<div class="wrn-mega__footer"><span>{footer}</span>{#if actionLabel}<a href='{actionHref || "#"}'>{actionLabel}<span class='{actionIcon}' aria-hidden="true"></span></a>{/if}</div>{/if}
{#if footer || actionLabel}<div class="wrn-mega__footer" data-wrn-owner="MegaMenu" data-wrn-part="footer" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}"><span>{footer}</span>{#if actionLabel}<a href='{actionHref || "#"}' data-wrn-owner="MegaMenu" data-wrn-part="link" data-wrn-axis-color="{color}" data-wrn-axis-size="{size}" data-wrn-axis-variant="{variant}">{actionLabel}<span class='{actionIcon}' aria-hidden="true"></span></a>{/if}</div>{/if}
<slot />
</div>
</div>