// 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 {
Layout component

Feature Grid

Arrange feature cards, services, solutions, or benefits in a responsive equal-height grid.

14 props1 slots0 outputsTheme readyResponsive
Interactive playground

Configure Feature Grid

Change any prop and inspect the server-rendered component immediately.

Live preview
Component code
<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"
/>
Component props14 controls
Live examples

Designed for real product surfaces

Compare configurations and resize the browser to check responsive behavior.

Recommended

Three-column service grid

Arrange services or capabilities as equal-height responsive cards.

01
Live preview
Component usage.wrn
<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"
/>
Compact

Compact four-column grid

Use smaller gaps and four columns for short benefit or capability cards.

02
Live preview
Component usage.wrn
<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"
/>
Advanced

Auto-fit feature collection

Let cards wrap automatically according to a minimum useful width.

03
Live preview
Component usage.wrn
<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 API

Props and configuration

All content and behavior shown above is supplied through these props and slots.

PropTypeDefaultRequired
sizestring"default"No
colorstring"primary"No
itemsunknown[][]No
columnsnumber3No
tabletColumnsnumber2No
mobileColumnsnumber1No
gapstring"md"No
minItemWidthstring""No
equalHeightbooleantrueNo
alignstring"stretch"No
maxWidthstring"full"No
variantstring"default"No
labelstring"Features"No
classstring""No
} }