Selection
Blogging
Messaging
Map
Installation
$ pnpm dlx shadcn@latest add @mcpcn/event-card
Usage
import { EventCard, EventCardContent } from "@/components/ui/event-card";<EventCard>
<EventCardContent />
</EventCard>Composition
Use the following composition to build an EventCard:
EventCard
├── EventCardContent
├── EventCardFooter
├── EventCardImage
├── EventCardMeta
├── EventCardSignal
└── EventCardTagsExamples
Compact
"use client";
import { EventCard, EventCardContent } from "@/components/ui/event-card";
export function EventCardCompactDemo() {
return (
<EventCard appearance={{ variant: "compact" }}>
<EventCardContent />
</EventCard>
);
}Horizontal
"use client";
import { EventCard, EventCardContent } from "@/components/ui/event-card";
export function EventCardHorizontalDemo() {
return (
<EventCard appearance={{ variant: "horizontal" }}>
<EventCardContent />
</EventCard>
);
}Covered
"use client";
import { EventCard, EventCardContent } from "@/components/ui/event-card";
export function EventCardCoveredDemo() {
return (
<EventCard appearance={{ variant: "covered" }}>
<EventCardContent />
</EventCard>
);
}OpenUI Integration
Install the OpenUI React packages.
pnpm add @openuidev/react-lang zodAdd EventCard to a component library and map it to the installed component.
import { createLibrary, defineComponent } from "@openuidev/react-lang";
import { z } from "zod/v4";
import { EventCard, EventCardContent } from "@/components/ui/event-card";
const OpenUIEventCard = defineComponent({
name: "EventCard",
description:
"Display event information with multiple layouts. Supports events with images, signals, vibe tags, and display-formatted date/time. Entire card is clickable.",
props: z.object({}),
component: () => (
<EventCard>
<EventCardContent />
</EventCard>
),
});
export const event_cardLibrary = createLibrary({
root: "EventCard",
components: [OpenUIEventCard],
});For richer generated compositions, define the child primitives separately and connect them with .ref fields. See Defining Components in the OpenUI documentation.
json-render Integration
Install the json-render React packages.
pnpm add @json-render/core @json-render/react zodAdd EventCard to a component catalog and map it to the installed component.
import { defineCatalog } from "@json-render/core";
import { defineRegistry } from "@json-render/react";
import { schema } from "@json-render/react/schema";
import { z } from "zod";
import { EventCard, EventCardContent } from "@/components/ui/event-card";
export const catalog = defineCatalog(schema, {
components: {
EventCard: {
props: z.object({}),
description:
"Display event information with multiple layouts. Supports events with images, signals, vibe tags, and display-formatted date/time. Entire card is clickable.",
},
},
});
export const { registry } = defineRegistry(catalog, {
components: {
EventCard: () => (
<EventCard>
<EventCardContent />
</EventCard>
),
},
});Use catalog.prompt() to constrain model output, then render the generated spec with the json-render React Renderer. See the json-render Quick Start for the provider and streaming setup.
API Reference
See the Base UI documentation for more information.