{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "agrista",
  "homepage": "https://github.com/agrista/mercator/tree/main/apps/ui-registry",
  "items": [
    {
      "name": "mission-hero",
      "type": "registry:block",
      "title": "Mission Hero",
      "description": "Landing-page hero that leads with an organisation's mission rather than its shop: eyebrow, mission statement as the page h1, supporting copy and up to two actions beside a picture or muted looping video masked to the Landbou24 hero shape (or a plain rounded frame), with an optional tagline set in the shape's bottom-right notch. Below it, an optional grid of services (title, description, optional link and host icon), so a storefront reads as one service of the mission. Presentational; actions use the host's buttonVariants so they follow its theme; hosts pass copy, swap the media for next/image via mediaContent and pass their router link through renderLink.",
      "registryDependencies": [
        "button",
        "card"
      ],
      "files": [
        {
          "path": "default/mission-hero/mission-hero.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "network-hero",
      "type": "registry:block",
      "title": "Network Hero",
      "description": "Landing-page hero matching the live Landbou24 home page: a full-bleed photo that slowly drifts under dark scrims, a farm network that lights up around the mouse pointer, and over it a pill eyebrow, a very large heading, a subtitle and two actions (solid secondary and outlined). The copy fades up on load; the drift, the entrance and the network all stand still for reduced motion, and the network skips touch. Presentational; actions use the host's buttonVariants, hosts swap the photo for next/image via mediaContent, pass their router link through renderLink, and set the height and gutter to sit under their own header.",
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "default/network-hero/network-hero.tsx",
          "type": "registry:component"
        },
        {
          "path": "default/network-hero/network-canvas.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "farm-sale-detail",
      "type": "registry:block",
      "title": "Farm Sale Detail",
      "description": "Presentational dossier for a farm_sale listing (not a Farm operating entity, not a classified-with-extra-cards). Renders listing title/price/location plus the listing-owned cadastral overlay: erf/sg/lightstone seed refs, web_ref, cadastral_parcels (sg_key + area), land_uses breakdown, buildings and amenities, and an enquire CTA slot. Hosts wire the lead form via onEnquire or enquire; replace CadastralMap with a map when ready - v1 ships a parcel list only (no MapLibre, no PropData fetch).",
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "separator",
        "table"
      ],
      "files": [
        {
          "path": "default/farm-sale-detail/listing-farm-sale-overlay.ts",
          "type": "registry:component"
        },
        {
          "path": "default/farm-sale-detail/cadastral-map.tsx",
          "type": "registry:component"
        },
        {
          "path": "default/farm-sale-detail/farm-sale-detail.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "membership-plans",
      "type": "registry:block",
      "title": "Membership Plans",
      "description": "Presentational section listing the memberships a network admin published on their marketplace. Renders each plan's name, description, host-formatted price, billing note and included/excluded features, and separates what a member can buy now from what is only announced: available plans get a live action, coming_soon and unavailable plans render disabled so they can never be purchased. Marks the member's current plan and switches the other actions to an upgrade/change CTA, so the same section serves both the public marketplace page and the member portal. Hosts wire subscribe/upgrade via onSelect or the action slot.",
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "separator"
      ],
      "files": [
        {
          "path": "default/membership-plans/membership-plan.ts",
          "type": "registry:component"
        },
        {
          "path": "default/membership-plans/membership-plans.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "membership-highlights",
      "type": "registry:block",
      "title": "Membership Highlights",
      "description": "Landing-page teaser for a marketplace's memberships. Features up to a set number of plans with name, description, host-formatted price, billing note and their first included features: joinable plans first (recommended leading), each linked to the full memberships page, then announced (coming_soon) plans with a Coming soon label and no Join action. Announced plans that do not fit are counted under the grid, and showComingSoon={false} only counts them. Closed plans are never shown. Renders nothing when no plan is joinable or announced, so a landing page can always mount it. Takes the same MembershipPlan shape as membership-plans; hosts pass their router link through renderLink.",
      "registryDependencies": [
        "badge",
        "card",
        "@agrista/membership-plans"
      ],
      "files": [
        {
          "path": "default/membership-highlights/membership-highlights.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "partner-spotlight",
      "type": "registry:block",
      "title": "Partner Spotlight",
      "description": "Landing-page section that promotes a partnership: a logo lockup of the partners joined by a cross (logos on white tiles, or names as text), eyebrow, heading, supporting copy and a short checklist of what the reader gets, with link tiles shaped like app-store badges (caption, label or a logo standing in for it, optional icon; external links open in a new tab). Sits in a rounded card, dark by default with an optional cover photo under a legibility gradient, or muted; an optional picture is anchored to the card's bottom edge beside the copy. Presentational; hosts pass copy, swap the media for next/image via mediaContent and pass their router link through renderLink.",
      "registryDependencies": [
        "card"
      ],
      "files": [
        {
          "path": "default/partner-spotlight/partner-spotlight.tsx",
          "type": "registry:component"
        }
      ]
    }
  ]
}
