···5353**Card System (`src/lib/cards/`):**
54545555- `CardDefinition` type in `types.ts` defines the interface for card types
5656-- 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`)
5656+- 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`)
5757- Card types include Text, Link, Image, Bluesky, Embed, Map, Livestream, ATProto collections, and special cards (see `src/lib/cards`).
5858- `AllCardDefinitions` and `CardDefinitionsByType` in `index.ts` aggregate all card types
5959- See e.g. `src/lib/cards/EmbedCard/` and `src/lib/cards/LivestreamCard/` for examples of implementation.
···33333434 upload?: (item: Item) => Promise<Item>; // optionally upload some other data needed for this card
35353636- // one of those two has to be set for a card to appear in the sidebar
3737- sidebarComponent?: Component<SidebarComponentProps>;
3636+ // has to be set for a card to appear in the sidebar
3837 sidebarButtonText?: string;
39384039 // if this component exists, a settings button with a popover will be shown containing this component