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 { LatestBlueskyPostCardDefinition } from './LatestBlueskyPostCard';
7import { DinoGameCardDefinition } from './GameCards/DinoGameCard';
8import { EmbedCardDefinition } from './EmbedCard';
9import { TetrisCardDefinition } from './GameCards/TetrisCard';
10import { ImageCardDefinition } from './ImageCard';
11import { LinkCardDefinition } from './LinkCard';
12import { LivestreamCardDefitition, LivestreamEmbedCardDefitition } from './LivestreamCard';
13import { MapCardDefinition } from './MapCard';
14import { SectionCardDefinition } from './SectionCard';
15import { UpdatedBlentosCardDefitition } from './SpecialCards/UpdatedBlentos';
16import { TextCardDefinition } from './TextCard';
17import type { CardDefinition } from './types';
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';
32import { ClockCardDefinition } from './ClockCard';
33import { CountdownCardDefinition } from './CountdownCard';
34import { SpotifyCardDefinition } from './SpotifyCard';
35import { ButtonCardDefinition } from './ButtonCard';
36import { GuestbookCardDefinition } from './GuestbookCard';
37import { FriendsCardDefinition } from './FriendsCard';
38// import { Model3DCardDefinition } from './Model3DCard';
39
40export const AllCardDefinitions = [
41 GuestbookCardDefinition,
42 ButtonCardDefinition,
43 ImageCardDefinition,
44 TextCardDefinition,
45 LinkCardDefinition,
46 BigSocialCardDefinition,
47 UpdatedBlentosCardDefitition,
48 YoutubeCardDefinition,
49 BlueskyPostCardDefinition,
50 LatestBlueskyPostCardDefinition,
51 LivestreamCardDefitition,
52 LivestreamEmbedCardDefitition,
53 // EmbedCardDefinition,
54 MapCardDefinition,
55 ATProtoCollectionsCardDefinition,
56 SectionCardDefinition,
57 BlueskyMediaCardDefinition,
58 DinoGameCardDefinition,
59 BlueskyProfileCardDefinition,
60 GithubProfileCardDefitition,
61 TetrisCardDefinition,
62 FluidTextCardDefinition,
63 GifCardDefinition,
64 PopfeedReviewsCardDefinition,
65 TealFMPlaysCardDefinition,
66 PhotoGalleryCardDefinition,
67 StandardSiteDocumentListCardDefinition,
68 StatusphereCardDefinition,
69 EventCardDefinition,
70 VCardCardDefinition,
71 DrawCardDefinition,
72 TimerCardDefinition,
73 ClockCardDefinition,
74 CountdownCardDefinition,
75 SpotifyCardDefinition,
76 // Model3DCardDefinition
77 FriendsCardDefinition
78] as const;
79
80export const CardDefinitionsByType = AllCardDefinitions.reduce(
81 (acc, item) => {
82 acc[item.type] = item;
83 return acc;
84 },
85 {} as Record<string, CardDefinition>
86);
87
88export function getColor(item: Item): string {
89 if (item.color) return item.color;
90
91 const cardDefColor = CardDefinitionsByType[item.cardType]?.defaultColor;
92
93 return cardDefColor || 'base';
94}