// Generated by scripts/generate-showcase.mjs. Do not edit directly.
page FeatureCardDetail {
layout = "showcase"
state playground_icon = ctx.url.searchParams.get("pg_icon") ?? ""
state playground_iconStyle = ctx.url.searchParams.get("pg_iconStyle") ?? "soft"
state playground_iconSize = ctx.url.searchParams.get("pg_iconSize") ?? "default"
state playground_eyebrow = ctx.url.searchParams.get("pg_eyebrow") ?? ""
state playground_title = ctx.url.searchParams.get("pg_title") ?? "Feature Card example"
state playground_description = ctx.url.searchParams.get("pg_description") ?? "A polished default feature card for a modern application."
state playground_image = ctx.url.searchParams.get("pg_image") ?? ""
state playground_imageAlt = ctx.url.searchParams.get("pg_imageAlt") ?? ""
state playground_imagePosition = ctx.url.searchParams.get("pg_imagePosition") ?? "top"
state playground_imageAspect = ctx.url.searchParams.get("pg_imageAspect") ?? "wide"
state playground_imageLoading = ctx.url.searchParams.get("pg_imageLoading") ?? "lazy"
state playground_href = ctx.url.searchParams.get("pg_href") ?? "#feature-card-demo"
state playground_target = ctx.url.searchParams.get("pg_target") ?? ""
state playground_rel = ctx.url.searchParams.get("pg_rel") ?? ""
state playground_external = (ctx.url.searchParams.get("pg_external") ?? "false") === "true"
state playground_actionLabel = ctx.url.searchParams.get("pg_actionLabel") ?? "Feature Card"
state playground_actionIcon = ctx.url.searchParams.get("pg_actionIcon") ?? ""
state playground_showArrow = (ctx.url.searchParams.get("pg_showArrow") ?? "true") === "true"
state playground_stretchedLink = (ctx.url.searchParams.get("pg_stretchedLink") ?? "true") === "true"
state playground_badge = ctx.url.searchParams.get("pg_badge") ?? ""
state playground_badgeColor = ctx.url.searchParams.get("pg_badgeColor") ?? "primary"
state playground_size = ctx.url.searchParams.get("pg_size") ?? "default"
state playground_color = ctx.url.searchParams.get("pg_color") ?? "primary"
state playground_variant = ctx.url.searchParams.get("pg_variant") ?? "default"
state playground_hover = ctx.url.searchParams.get("pg_hover") ?? "lift"
state playground_align = ctx.url.searchParams.get("pg_align") ?? "start"
state playground_disabled = (ctx.url.searchParams.get("pg_disabled") ?? "false") === "true"
state playground_class = ctx.url.searchParams.get("pg_class") ?? "showcase-instance showcase-instance--1"
seo {
title = "Feature Card"
description = "Present one linked feature or service with media, icon, badge, description, and action."
}
view {
Interactive playgroundConfigure Feature Card
Change any prop and inspect the server-rendered component immediately.
Live preview
<FeatureCard
title="Feature Card example"
description="A polished default feature card for a modern application."
href="#feature-card-demo"
actionLabel="Feature Card"
align="start">
<div data-slot="media">
<div class="showcase-slot">media slot</div>
</div>
<div data-slot="icon">
<div class="showcase-slot">icon slot</div>
</div>
<div data-slot="footer">
<div class="showcase-slot">footer slot</div>
</div>
</FeatureCard>
Live examplesDesigned for real product surfaces
Compare configurations and resize the browser to check responsive behavior.
<FeatureCard
icon="icon-[lucide--shield-check]"
eyebrow="Citizen support"
title="Citizen services"
description="Report incidents, request certificates, and find safety information."
href="#citizen-services"
actionLabel="Explore services"
badge="Public"
align="start">
<div data-slot="media">
<div class="showcase-slot">media slot</div>
</div>
<div data-slot="icon">
<div class="showcase-slot">icon slot</div>
</div>
<div data-slot="footer">
<div class="showcase-slot">footer slot</div>
</div>
</FeatureCard>
<FeatureCard
icon="icon-[lucide--arrow-right]"
title="Unified citizen portal"
description="Access trusted services from one responsive interface."
image="/showcase-images/dashboard-preview.svg"
imageAlt="Abstract dashboard preview"
href="#portal"
actionLabel="Open portal"
badge="Featured"
size="sm"
color="info"
variant="raised"
align="center">
<div data-slot="media">
<div class="showcase-slot">media slot</div>
</div>
<div data-slot="icon">
<div class="showcase-slot">icon slot</div>
</div>
<div data-slot="footer">
<div class="showcase-slot">footer slot</div>
</div>
</FeatureCard>
<FeatureCard
icon="icon-[lucide--siren]"
eyebrow="Emergency"
title="Get urgent help"
description="Find verified emergency contacts and immediate safety guidance."
href="#emergency"
actionLabel="View emergency help"
badge="Important"
size="lg"
color="danger"
variant="solid"
hover="glow"
align="end">
<div data-slot="media">
<div class="showcase-slot">media slot</div>
</div>
<div data-slot="icon">
<div class="showcase-slot">icon slot</div>
</div>
<div data-slot="footer">
<div class="showcase-slot">footer slot</div>
</div>
</FeatureCard>
Component APIProps and configuration
All content and behavior shown above is supplied through these props and slots.
| Prop | Type | Default | Required |
|---|
icon | string | "" | No |
iconStyle | string | "soft" | No |
iconSize | string | "default" | No |
eyebrow | string | "" | No |
title | string | "Feature" | No |
description | string | "" | No |
image | string | "" | No |
imageAlt | string | "" | No |
imagePosition | string | "top" | No |
imageAspect | string | "wide" | No |
imageLoading | string | "lazy" | No |
href | string | "" | No |
target | string | "" | No |
rel | string | "" | No |
external | boolean | false | No |
actionLabel | string | "Learn more" | No |
actionIcon | string | "" | No |
showArrow | boolean | true | No |
stretchedLink | boolean | true | No |
badge | string | "" | No |
badgeColor | string | "primary" | No |
size | string | "default" | No |
color | string | "primary" | No |
variant | string | "default" | No |
hover | string | "lift" | No |
align | string | "left" | No |
disabled | boolean | false | No |
class | string | "" | No |
}
}