// Generated by scripts/generate-showcase.mjs. Do not edit directly.
page FeatureGridDetail {
layout = "showcase"
state playground_size = ctx.url.searchParams.get("pg_size") ?? "default"
state playground_color = ctx.url.searchParams.get("pg_color") ?? "primary"
state playground_items = JSON.parse(ctx.url.searchParams.get("pg_items") ?? "[{\"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\",\"color\":\"primary\",\"variant\":\"default\",\"hover\":\"lift\"},{\"icon\":\"icon-[lucide--map-pin]\",\"eyebrow\":\"Directory\",\"title\":\"Station directory\",\"description\":\"Locate offices, jurisdictions, contacts, and public service hours.\",\"href\":\"#station-directory\",\"actionLabel\":\"Find a station\",\"badge\":\"Directory\",\"color\":\"info\",\"variant\":\"soft\",\"hover\":\"border\"},{\"icon\":\"icon-[lucide--radio-tower]\",\"eyebrow\":\"Verified\",\"title\":\"Public updates\",\"description\":\"Publish official alerts, notices, advisories, and verified information.\",\"href\":\"#public-updates\",\"actionLabel\":\"View updates\",\"badge\":\"Live\",\"color\":\"success\",\"variant\":\"gradient\",\"hover\":\"glow\"}]")
state playground_columns = Number(ctx.url.searchParams.get("pg_columns") ?? "3")
state playground_tabletColumns = Number(ctx.url.searchParams.get("pg_tabletColumns") ?? "2")
state playground_mobileColumns = Number(ctx.url.searchParams.get("pg_mobileColumns") ?? "1")
state playground_gap = ctx.url.searchParams.get("pg_gap") ?? "md"
state playground_minItemWidth = ctx.url.searchParams.get("pg_minItemWidth") ?? ""
state playground_equalHeight = (ctx.url.searchParams.get("pg_equalHeight") ?? "true") === "true"
state playground_align = ctx.url.searchParams.get("pg_align") ?? "start"
state playground_maxWidth = ctx.url.searchParams.get("pg_maxWidth") ?? "full"
state playground_variant = ctx.url.searchParams.get("pg_variant") ?? "default"
state playground_label = ctx.url.searchParams.get("pg_label") ?? "Feature Grid"
state playground_class = ctx.url.searchParams.get("pg_class") ?? "showcase-instance showcase-instance--1"
seo {
title = "Feature Grid"
description = "Arrange feature cards, services, solutions, or benefits in a responsive equal-height grid."
}
view {
Interactive playgroundConfigure Feature Grid
Change any prop and inspect the server-rendered component immediately.
Live preview
<FeatureGrid
items='[
{
"id": "feature-grid-0-1",
"key": "feature-grid-0-1",
"value": "primary",
"label": "Primary workflow",
"title": "Primary workflow",
"description": "A clean default configuration for everyday product interfaces.",
"text": "A configurable sample message.",
"href": "#feature-grid-demo",
"actionHref": "#feature-grid-demo",
"actionLabel": "View details",
"icon": "icon-[lucide--sparkles]",
"iconClass": "icon-[lucide--sparkles]",
"variant": "primary",
"status": "Active",
"time": "09:30",
"current": true,
"selected": true,
"checked": true,
"disabled": false,
"outgoing": false,
"open": true,
"number": 1,
"count": 16,
"percentage": 72,
"color": "#7c3aed",
"target": "_self",
"ariaLabel": "Open primary workflow 1",
"items": [
{
"label": "Nested option A",
"value": "nested-a"
},
{
"label": "Nested option B",
"value": "nested-b"
}
],
"links": [
{
"label": "Documentation",
"href": "#documentation"
},
{
"label": "API reference",
"href": "#api-reference"
}
],
"values": [
"Included",
"Standard"
]
},
{
"id": "feature-grid-0-2",
"key": "feature-grid-0-2",
"value": "secondary",
"label": "Additional option",
"title": "Supporting example",
"description": "A clean default configuration for everyday product interfaces.",
"text": "Another configurable message.",
"href": "#feature-grid-demo",
"actionHref": "#feature-grid-demo",
"actionLabel": "View details",
"icon": "icon-[lucide--sparkles]",
"iconClass": "icon-[lucide--sparkles]",
"variant": "primary",
"status": "Active",
"time": "09:30",
"current": false,
"selected": false,
"checked": false,
"disabled": false,
"outgoing": true,
"open": true,
"number": 2,
"count": 32,
"percentage": 72,
"color": "#7c3aed",
"target": "_self",
"ariaLabel": "Open primary workflow 2",
"items": [
{
"label": "Nested option A",
"value": "nested-a"
},
{
"label": "Nested option B",
"value": "nested-b"
}
],
"links": [
{
"label": "Documentation",
"href": "#documentation"
},
{
"label": "API reference",
"href": "#api-reference"
}
],
"values": [
"Included",
"Standard"
]
}
]'
align="start"
label="Feature Grid"
/>
Live examplesDesigned for real product surfaces
Compare configurations and resize the browser to check responsive behavior.
<FeatureGrid
items='[
{
"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",
"color": "primary",
"variant": "default",
"hover": "lift"
},
{
"icon": "icon-[lucide--map-pin]",
"eyebrow": "Directory",
"title": "Station directory",
"description": "Locate offices, jurisdictions, contacts, and public service hours.",
"href": "#station-directory",
"actionLabel": "Find a station",
"badge": "Directory",
"color": "info",
"variant": "soft",
"hover": "border"
},
{
"icon": "icon-[lucide--radio-tower]",
"eyebrow": "Verified",
"title": "Public updates",
"description": "Publish official alerts, notices, advisories, and verified information.",
"href": "#public-updates",
"actionLabel": "View updates",
"badge": "Live",
"color": "success",
"variant": "gradient",
"hover": "glow"
}
]'
gap="lg"
align="start"
label="Feature Grid"
/>
<FeatureGrid
size="sm"
items='[
{
"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",
"color": "primary",
"variant": "default",
"hover": "lift"
},
{
"icon": "icon-[lucide--map-pin]",
"eyebrow": "Directory",
"title": "Station directory",
"description": "Locate offices, jurisdictions, contacts, and public service hours.",
"href": "#station-directory",
"actionLabel": "Find a station",
"badge": "Directory",
"color": "info",
"variant": "soft",
"hover": "border"
},
{
"icon": "icon-[lucide--radio-tower]",
"eyebrow": "Verified",
"title": "Public updates",
"description": "Publish official alerts, notices, advisories, and verified information.",
"href": "#public-updates",
"actionLabel": "View updates",
"badge": "Live",
"color": "success",
"variant": "gradient",
"hover": "glow"
},
{
"icon": "icon-[lucide--file-check-2]",
"title": "Certificates",
"description": "Request and track certificates online.",
"href": "#certificates",
"color": "warning"
}
]'
columns="4"
gap="sm"
align="center"
variant="soft"
label="Compact example"
/>
<FeatureGrid
size="lg"
items='[
{
"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",
"color": "primary",
"variant": "default",
"hover": "lift"
},
{
"icon": "icon-[lucide--map-pin]",
"eyebrow": "Directory",
"title": "Station directory",
"description": "Locate offices, jurisdictions, contacts, and public service hours.",
"href": "#station-directory",
"actionLabel": "Find a station",
"badge": "Directory",
"color": "info",
"variant": "soft",
"hover": "border"
},
{
"icon": "icon-[lucide--radio-tower]",
"eyebrow": "Verified",
"title": "Public updates",
"description": "Publish official alerts, notices, advisories, and verified information.",
"href": "#public-updates",
"actionLabel": "View updates",
"badge": "Live",
"color": "success",
"variant": "gradient",
"hover": "glow"
}
]'
gap="xl"
minItemWidth="18rem"
align="end"
maxWidth="wide"
variant="panel"
label="Advanced example"
/>
Component APIProps and configuration
All content and behavior shown above is supplied through these props and slots.
| Prop | Type | Default | Required |
|---|
size | string | "default" | No |
color | string | "primary" | No |
items | unknown[] | [] | No |
columns | number | 3 | No |
tabletColumns | number | 2 | No |
mobileColumns | number | 1 | No |
gap | string | "md" | No |
minItemWidth | string | "" | No |
equalHeight | boolean | true | No |
align | string | "stretch" | No |
maxWidth | string | "full" | No |
variant | string | "default" | No |
label | string | "Features" | No |
class | string | "" | No |
}
}