···53**Card System (`src/lib/cards/`):**
5455- `CardDefinition` type in `types.ts` defines the interface for card types
56-- Each card type exports a definition with: `type`, `contentComponent`, optional `editingContentComponent`, `creationModalComponent`, `sidebarComponent`, `loadData`, `upload` (see more info and description in `src/lib/cards/types.ts`)
57- Card types include Text, Link, Image, Bluesky, Embed, Map, Livestream, ATProto collections, and special cards (see `src/lib/cards`).
58- `AllCardDefinitions` and `CardDefinitionsByType` in `index.ts` aggregate all card types
59- See e.g. `src/lib/cards/EmbedCard/` and `src/lib/cards/LivestreamCard/` for examples of implementation.
···53**Card System (`src/lib/cards/`):**
5455- `CardDefinition` type in `types.ts` defines the interface for card types
56+- Each card type exports a definition with: `type`, `contentComponent`, optional `editingContentComponent`, `creationModalComponent`, `sidebarButtonText`, `loadData`, `upload` (see more info and description in `src/lib/cards/types.ts`)
57- Card types include Text, Link, Image, Bluesky, Embed, Map, Livestream, ATProto collections, and special cards (see `src/lib/cards`).
58- `AllCardDefinitions` and `CardDefinitionsByType` in `index.ts` aggregate all card types
59- See e.g. `src/lib/cards/EmbedCard/` and `src/lib/cards/LivestreamCard/` for examples of implementation.
···25import { PhotoGalleryCardDefinition } from './PhotoGalleryCard';
26import { StandardSiteDocumentListCardDefinition } from './StandardSiteDocumentListCard';
27import { StatusphereCardDefinition } from './StatusphereCard';
28+import { EventCardDefinition } from './EventCard';
2930export const AllCardDefinitions = [
31 ImageCardDefinition,
···53 TealFMPlaysCardDefinition,
54 PhotoGalleryCardDefinition,
55 StandardSiteDocumentListCardDefinition,
56+ StatusphereCardDefinition,
57+ EventCardDefinition
58] as const;
5960export const CardDefinitionsByType = AllCardDefinitions.reduce(
+1-2
src/lib/cards/types.ts
···3334 upload?: (item: Item) => Promise<Item>; // optionally upload some other data needed for this card
3536- // one of those two has to be set for a card to appear in the sidebar
37- sidebarComponent?: Component<SidebarComponentProps>;
38 sidebarButtonText?: string;
3940 // if this component exists, a settings button with a popover will be shown containing this component
···3334 upload?: (item: Item) => Promise<Item>; // optionally upload some other data needed for this card
3536+ // has to be set for a card to appear in the sidebar
037 sidebarButtonText?: string;
3839 // if this component exists, a settings button with a popover will be shown containing this component