your personal website on atproto - mirror
blento.app
1import type { Item } from '$lib/types';
2import { ATProtoCollectionsCardDefinition } from './ATProtoCollectionsCard';
3import { BigSocialCardDefinition } from './BigSocialCard';
4import { BlueskyMediaCardDefinition } from './BlueskyMediaCard';
5import { BlueskyPostCardDefinition } from './BlueskyPostCard';
6import { DinoGameCardDefinition } from './GameCards/DinoGameCard';
7import { EmbedCardDefinition } from './EmbedCard';
8import { TetrisCardDefinition } from './GameCards/TetrisCard';
9import { ImageCardDefinition } from './ImageCard';
10import { LinkCardDefinition } from './LinkCard';
11import { LivestreamCardDefitition, LivestreamEmbedCardDefitition } from './LivestreamCard';
12import { MapCardDefinition } from './MapCard';
13import { SectionCardDefinition } from './SectionCard';
14import { UpdatedBlentosCardDefitition } from './SpecialCards/UpdatedBlentos';
15import { TextCardDefinition } from './TextCard';
16import type { CardDefinition } from './types';
17import { VideoCardDefinition } from './VideoCard';
18import { YoutubeCardDefinition } from './YoutubeVideoCard';
19import { BlueskyProfileCardDefinition } from './BlueskyProfileCard';
20import { GithubProfileCardDefitition } from './GitHubProfileCard';
21import { FluidTextCardDefinition } from './FluidTextCard';
22import { GifCardDefinition } from './GIFCard';
23import { PopfeedReviewsCardDefinition } from './PopfeedReviews';
24import { TealFMPlaysCardDefinition } from './TealFMPlaysCard';
25import { PhotoGalleryCardDefinition } from './PhotoGalleryCard';
26import { StandardSiteDocumentListCardDefinition } from './StandardSiteDocumentListCard';
27import { StatusphereCardDefinition } from './StatusphereCard';
28import { EventCardDefinition } from './EventCard';
29import { VCardCardDefinition } from './VCardCard';
30import { DrawCardDefinition } from './DrawCard';
31import { TimerCardDefinition } from './TimerCard';
32
33export const AllCardDefinitions = [
34 ImageCardDefinition,
35 VideoCardDefinition,
36 TextCardDefinition,
37 LinkCardDefinition,
38 BigSocialCardDefinition,
39 UpdatedBlentosCardDefitition,
40 YoutubeCardDefinition,
41 BlueskyPostCardDefinition,
42 LivestreamCardDefitition,
43 LivestreamEmbedCardDefitition,
44 EmbedCardDefinition,
45 MapCardDefinition,
46 ATProtoCollectionsCardDefinition,
47 SectionCardDefinition,
48 BlueskyMediaCardDefinition,
49 DinoGameCardDefinition,
50 BlueskyProfileCardDefinition,
51 GithubProfileCardDefitition,
52 TetrisCardDefinition,
53 FluidTextCardDefinition,
54 GifCardDefinition,
55 PopfeedReviewsCardDefinition,
56 TealFMPlaysCardDefinition,
57 PhotoGalleryCardDefinition,
58 StandardSiteDocumentListCardDefinition,
59 StatusphereCardDefinition,
60 EventCardDefinition,
61 VCardCardDefinition,
62 DrawCardDefinition,
63 TimerCardDefinition
64] as const;
65
66export const CardDefinitionsByType = AllCardDefinitions.reduce(
67 (acc, item) => {
68 acc[item.type] = item;
69 return acc;
70 },
71 {} as Record<string, CardDefinition>
72);
73
74export function getColor(item: Item): string {
75 if (item.color) return item.color;
76
77 const cardDefColor = CardDefinitionsByType[item.cardType]?.defaultColor;
78
79 return cardDefColor || 'base';
80}