-
+
{#if badge}
-
+
{badge}
{/if}
- {title}
+ {title}
{#if description}
- {description}
+ {description}
{/if}
@@ -70,11 +51,33 @@ component FeatureIconCard {
href='{href}'
color='{color}'
size="sm"
- class="mt-6"
+ class="wire-feature-icon-card__action"
/>
{/if}
}
+
+ style {
+ .wire-feature-icon-card { position: relative; display: flex; height: 100%; flex-direction: column; padding: 1.5rem; border: 1px solid var(--wire-color-border); border-radius: calc(var(--wire-radius) * 2); background: var(--wire-color-surface-raised); box-shadow: var(--wire-shadow-1); transition: transform var(--wire-motion-base), border-color var(--wire-motion-base), box-shadow var(--wire-motion-base); }
+ .wire-feature-icon-card[data-size="sm"] { padding: 1.25rem; } .wire-feature-icon-card[data-size="lg"] { padding: 2rem; }
+ .wire-feature-icon-card[data-variant="soft"] { background: var(--wire-color-surface-soft); }
+ .wire-feature-icon-card[data-variant="ghost"] { border-color: transparent; background: transparent; box-shadow: none; }
+ .wire-feature-icon-card[data-hover="lift"]:hover { transform: translateY(-0.25rem); }
+ .wire-feature-icon-card:is([data-hover="lift"], [data-hover="shadow"]):hover { box-shadow: var(--wire-shadow-3); }
+ .wire-feature-icon-card:is([data-hover="lift"], [data-hover="border"]):hover { border-color: var(--wire-color-primary); }
+ .wire-feature-icon-card[data-align="center"] { align-items: center; text-align: center; }
+ .wire-feature-icon-card__icon { position: relative; display: flex; width: 3.5rem; height: 3.5rem; align-items: center; justify-content: center; border: 1px solid var(--wire-color-primary-muted); border-radius: calc(var(--wire-radius) * 1.5); color: var(--wire-color-primary); background: var(--wire-color-primary-soft); }
+ .wire-feature-icon-card__icon[data-size="sm"] { width: 3rem; height: 3rem; } .wire-feature-icon-card__icon[data-size="lg"] { width: 4rem; height: 4rem; }
+ .wire-feature-icon-card__icon[data-variant="solid"] { color: var(--wire-color-on-primary); background: var(--wire-color-primary); }
+ .wire-feature-icon-card__icon[data-color="success"]:not([data-variant="solid"]) { color: var(--wire-color-success); background: var(--wire-color-success-soft); }
+ .wire-feature-icon-card__icon[data-color="warning"]:not([data-variant="solid"]) { color: var(--wire-color-warning-text); background: var(--wire-color-warning-soft); }
+ .wire-feature-icon-card__icon[data-color="danger"]:not([data-variant="solid"]) { color: var(--wire-color-danger); background: var(--wire-color-danger-soft); }
+ .wire-feature-icon-card__icon-glyph { width: 1.75rem; height: 1.75rem; }
+ .wire-feature-icon-card__badge { position: absolute; top: -0.5rem; right: -0.5rem; padding: 0.25rem 0.5rem; border: 1px solid var(--wire-color-border); border-radius: 999px; color: var(--wire-color-primary); background: var(--wire-color-surface-raised); box-shadow: var(--wire-shadow-1); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.025em; text-transform: uppercase; }
+ .wire-feature-icon-card__title { margin-top: 1.5rem; color: var(--wire-color-text); font-size: 1.25rem; font-weight: 700; letter-spacing: -0.025em; }
+ .wire-feature-icon-card__description { flex: 1; margin-top: 0.75rem; color: var(--wire-color-text-muted); font-size: 0.875rem; line-height: 1.5rem; }
+ .wire-feature-icon-card__action { margin-top: 1.5rem; }
+ }
}
diff --git a/packages/ui/components/HeroActions.wrn b/packages/ui/components/HeroActions.wrn
index ed7be41e..29bd26b8 100644
--- a/packages/ui/components/HeroActions.wrn
+++ b/packages/ui/components/HeroActions.wrn
@@ -17,13 +17,11 @@ component HeroActions {
data-ui-component="HeroActions"
role="group"
aria-label="Page actions"
- class='flex flex-wrap items-center gap-3 {class}'
- class:flex-col='orientation === "vertical" || stackOnMobile'
- class:sm:flex-row='orientation === "horizontal" && stackOnMobile'
- class:justify-center='align === "center"'
- class:justify-end='align === "right"'
- class:w-full='fullWidthMobile'
- class:sm:w-auto='fullWidthMobile'
+ data-align='{align}'
+ data-orientation='{orientation}'
+ data-stack-mobile='{stackOnMobile ? "true" : "false"}'
+ data-full-mobile='{fullWidthMobile ? "true" : "false"}'
+ class='wire-hero-actions {class}'
>
{#each actions as action, index}
{#if action.label}
@@ -43,7 +41,7 @@ component HeroActions {
ariaLabel='{action.ariaLabel || action.label}'
fullWidth='{fullWidthMobile}'
controlClass='{action.controlClass || ""}'
- class='{"sm:w-auto " + (action.class || "")}'
+ class='{"wire-hero-actions__action " + (action.class || "")}'
/>
{/if}
{/each}
@@ -51,4 +49,19 @@ component HeroActions {