{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "bento",
  "type": "registry:ui",
  "title": "Bento grid (MIAN)",
  "description": "A grid of tiles in mixed sizes for showing several product details at once.",
  "categories": [
    "sections",
    "bento",
    "bento grid",
    "tiles",
    "mosaic"
  ],
  "registryDependencies": [
    "https://mian.ro/r/mian-base.json"
  ],
  "files": [
    {
      "path": "mian/components/bento.css",
      "type": "registry:file",
      "target": "mian/components/bento.css",
      "content": ".mn-bento { display: grid; gap: var(--mn-gap, 1rem); grid-template-columns: minmax(0, 1fr); grid-auto-flow: dense; }\n.mn-tile { --_p: clamp(1.25rem, 2.6cqi, 1.9rem); display: flex; flex-direction: column; gap: .55rem; min-width: 0; padding: var(--_p); }\n.mn-tile > * { margin: 0; }\n.mn-tile-title { font: var(--mn-heading-weight) 1.125rem/1.3 var(--mn-font-heading); letter-spacing: -.012em; color: var(--mn-fg); }\n.mn-tile :where(p:not([class])) { color: var(--mn-muted); font-size: .9375rem; line-height: 1.6; }\n.mn-tile-media { margin: auto calc(var(--_p) * -1) calc(var(--_p) * -1); padding: var(--_p) var(--_p) 0; min-width: 0; }\n.mn-tile-media-flush { padding: 0; }\n@container mn (min-width: 40rem) {\n  .mn-bento { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n  .mn-tile-wide, .mn-tile-full { grid-column: span 2; }\n}\n@container mn (min-width: 62rem) {\n  .mn-bento { grid-template-columns: repeat(6, minmax(0, 1fr)); }\n  .mn-tile { grid-column: span 2; }\n  .mn-tile-half { grid-column: span 3; }\n  .mn-tile-wide { grid-column: span 4; }\n  .mn-tile-full { grid-column: span 6; }\n  .mn-tile-tall { grid-row: span 2; }\n}\n.mn-tile-figure { font: 700 clamp(2.25rem, 7cqi, 3.5rem)/1 var(--mn-font-heading); letter-spacing: -.04em; font-variant-numeric: tabular-nums; color: var(--mn-fg); }\n.mn-tile-quote { margin: 0; font: 500 1.1875rem/1.45 var(--mn-font-heading); letter-spacing: -.01em; color: var(--mn-fg); text-wrap: pretty; }\n.mn-tile-end { margin-top: auto; }\na.mn-tile { position: relative; color: inherit; text-decoration: none; transition: border-color var(--mn-duration) var(--mn-ease), box-shadow var(--mn-duration) var(--mn-ease); }\na.mn-tile:hover { border-color: color-mix(in oklab, var(--mn-border), var(--mn-fg) 35%); }\na.mn-tile:focus-visible { outline: 2px solid var(--mn-ring); outline-offset: 2px; }\n.mn-tile-arrow { position: absolute; top: var(--_p); inset-inline-end: var(--_p); width: 1.1rem; height: 1.1rem; color: var(--mn-muted); rotate: -45deg; transition: translate var(--mn-dur, 200ms) var(--mn-ease-out, ease-out), color var(--mn-duration) var(--mn-ease); }\na.mn-tile:hover .mn-tile-arrow { translate: 2px -2px; color: currentColor; }\n.mn-bento-rows { grid-auto-rows: minmax(9.5rem, auto); }\n@container mn (min-width: 40rem) { .mn-bento-compact { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n@container mn (min-width: 62rem) {\n  .mn-bento-compact { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n  .mn-bento-compact > .mn-tile { grid-column: span 1; }\n  .mn-bento-compact > :is(.mn-tile-half, .mn-tile-wide) { grid-column: span 2; }\n  .mn-bento-compact > .mn-tile-full { grid-column: span 4; }"
    },
    {
      "path": "mian/examples/bento.html",
      "type": "registry:file",
      "target": "mian/examples/bento.html",
      "content": "<!-- Bento -->\n<section class=\"mn-section mn-section-sm\">\n  <div class=\"mn-container mn-bento\">\n    <article class=\"mn-card mn-tile mn-tile-wide\"><h3 class=\"mn-tile-title\">Close dashboard</h3><p>Every account, every entity, one progress bar.</p>\n      <div class=\"mn-tile-media\"><div class=\"mn-stats\"><div class=\"mn-stat\"><div class=\"mn-stat-label\">Matched</div><div class=\"mn-stat-value\">1,284</div></div><div class=\"mn-stat\"><div class=\"mn-stat-label\">Exceptions</div><div class=\"mn-stat-value\">7</div></div><div class=\"mn-stat\"><div class=\"mn-stat-label\">Days to close</div><div class=\"mn-stat-value\">3.5</div></div></div></div>\n    </article>\n    <article class=\"mn-card mn-tile mn-tile-tall\"><h3 class=\"mn-tile-title\">Approvals on the go</h3><p>Swipe to approve from your phone.</p><div class=\"mn-tile-media mn-tile-media-flush\"><div class=\"mn-media mn-media-flat\" style=\"--ratio:3/4\"><svg viewBox=\"0 0 600 450\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"600\" height=\"450\" fill=\"var(--mn-surface)\"/><g fill=\"none\" stroke=\"var(--mn-fg)\" stroke-width=\"1.5\"><circle cx=\"300\" cy=\"225\" r=\"12\"/><circle cx=\"300\" cy=\"225\" r=\"26\"/><circle cx=\"300\" cy=\"225\" r=\"40\"/><circle cx=\"300\" cy=\"225\" r=\"54\"/><circle cx=\"300\" cy=\"225\" r=\"68\"/><circle cx=\"300\" cy=\"225\" r=\"82\"/><circle cx=\"300\" cy=\"225\" r=\"96\"/><circle cx=\"300\" cy=\"225\" r=\"110\"/><circle cx=\"300\" cy=\"225\" r=\"124\"/><circle cx=\"300\" cy=\"225\" r=\"138\"/><circle cx=\"300\" cy=\"225\" r=\"152\"/><circle cx=\"300\" cy=\"225\" r=\"166\"/><circle cx=\"300\" cy=\"225\" r=\"180\"/><circle cx=\"300\" cy=\"225\" r=\"194\"/></g><circle cx=\"300\" cy=\"225\" r=\"12\" fill=\"var(--mn-primary)\"/></svg></div></div></article>\n    <article class=\"mn-card mn-tile\"><h3 class=\"mn-tile-title\">32 currencies</h3><p>Revalued at month-end.</p></article>\n    <article class=\"mn-card mn-tile\"><h3 class=\"mn-tile-title\">SOC 2 Type II</h3><p>Audited every year.</p></article>\n  </div>\n</section>\n\n<!-- Numbers, a quote and links -->\n<section class=\"mn-section mn-section-sm\">\n  <div class=\"mn-container mn-bento mn-bento-rows\">\n    <article class=\"mn-card mn-tile mn-tile-half\"><p class=\"mn-tile-figure\">3.5 days</p><h3 class=\"mn-tile-title\">to close the month</h3><p>Down from eleven, measured across 140 finance teams in 2026.</p></article>\n    <article class=\"mn-card mn-tile mn-tile-half mn-tile-fill\"><h3 class=\"mn-tile-title\">Start with one entity</h3><p>Connect a bank feed and reconcile last month. It takes an afternoon.</p><span class=\"mn-tile-end\"><span class=\"mn-btn mn-btn-sm mn-secondary\">Book a walkthrough</span></span></article>\n    <figure class=\"mn-card mn-tile mn-tile-wide\" style=\"margin:0\"><blockquote class=\"mn-tile-quote\">“We stopped exporting to spreadsheets in the second week. Nobody asked for them back.”</blockquote><figcaption class=\"mn-tile-end mn-muted\">Example quote. Replace with a real, attributed one.</figcaption></figure>\n    <a class=\"mn-card mn-tile\" href=\"#\"><svg class=\"mn-tile-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"/></svg><h3 class=\"mn-tile-title\">Changelog</h3><p>What shipped this month.</p></a>\n  </div>\n</section>\n\n<!-- Compact: a profile page -->\n<section class=\"mn-section mn-section-sm\">\n  <div class=\"mn-container mn-bento mn-bento-compact mn-bento-rows\">\n    <article class=\"mn-card mn-tile mn-tile-wide\"><h3 class=\"mn-tile-title\">Noor Haddad</h3><p>Type designer in Rotterdam. I draw text faces for long reading and teach on Thursdays.</p><span class=\"mn-tile-end mn-row\"><span class=\"mn-badge mn-badge-soft mn-success\">Booking for 2027</span></span></article>\n    <a class=\"mn-card mn-tile\" href=\"#\"><svg class=\"mn-tile-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"/></svg><h3 class=\"mn-tile-title\">Typefaces</h3><p>Seven families.</p></a>\n    <a class=\"mn-card mn-tile\" href=\"#\"><svg class=\"mn-tile-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"/></svg><h3 class=\"mn-tile-title\">Writing</h3><p>Notes on spacing.</p></a>\n    <article class=\"mn-card mn-tile\"><p class=\"mn-tile-figure\">12</p><p>years drawing letters</p></article>\n    <article class=\"mn-card mn-tile mn-tile-wide\"><div class=\"mn-tile-media mn-tile-media-flush\" style=\"margin-top:calc(var(--_p) * -1)\"><div class=\"mn-media mn-media-flat\" style=\"--ratio:21/9\"><svg viewBox=\"0 0 600 450\" preserveAspectRatio=\"xMidYMid slice\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"600\" height=\"450\" fill=\"var(--mn-fg)\"/><path d=\"M0 330 300 90l300 240Z\" fill=\"var(--mn-accent)\"/><circle cx=\"300\" cy=\"300\" r=\"40\" fill=\"var(--mn-bg)\"/></svg></div></div></article>\n    <a class=\"mn-card mn-tile mn-tile-fill\" href=\"#\"><svg class=\"mn-tile-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"/></svg><h3 class=\"mn-tile-title\">Say hello</h3><p>Replies within two days.</p></a>\n  </div>\n</section>"
    }
  ],
  "docs": "MIAN components are HTML + CSS classes, not React components. The styles are already included in mian-base; this item adds the component's CSS section and example markup for reference. Docs: https://mian.ro/components/bento",
  "meta": {
    "mian": {
      "license": "LicenseRef-MIAN-1.0",
      "requiresJs": false,
      "classes": [
        "mn-bento",
        "mn-tile",
        "mn-tile-half · mn-tile-wide · mn-tile-full",
        "mn-tile-tall",
        "mn-tile-title",
        "mn-tile-media",
        "mn-tile-figure",
        "mn-tile-quote",
        "mn-tile-fill",
        "mn-tile-end",
        "mn-tile-arrow",
        "mn-bento-compact",
        "mn-bento-rows"
      ],
      "accessibility": [
        "Tiles read in source order: put them in the order you want them read, and let the grid place them.",
        "Keep one idea per tile with a real heading.",
        "Layout answers to the section’s own width (container queries), so it works the same in a page, a sidebar or a preview."
      ],
      "intents": [
        "showcase product features",
        "show product capabilities",
        "portfolio highlights",
        "mixed size tiles",
        "product tour",
        "feature overview with visuals"
      ]
    }
  }
}
