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 { VideoCardDefinition } from './VideoCard';
19import { YoutubeCardDefinition } from './YoutubeVideoCard';
20import { BlueskyProfileCardDefinition } from './BlueskyProfileCard';
21import { GithubProfileCardDefitition } from './GitHubProfileCard';
22import { FluidTextCardDefinition } from './FluidTextCard';
23import { GifCardDefinition } from './GIFCard';
24import { PopfeedReviewsCardDefinition } from './PopfeedReviews';
25import { TealFMPlaysCardDefinition } from './TealFMPlaysCard';
26import { PhotoGalleryCardDefinition } from './PhotoGalleryCard';
27import { StandardSiteDocumentListCardDefinition } from './StandardSiteDocumentListCard';
28import { StatusphereCardDefinition } from './StatusphereCard';
29import { EventCardDefinition } from './EventCard';
30import { VCardCardDefinition } from './VCardCard';
31import { DrawCardDefinition } from './DrawCard';
32import { TimerCardDefinition } from './TimerCard';
33import { SpotifyCardDefinition } from './SpotifyCard';
34import { ButtonCardDefinition } from './ButtonCard';
35import { GuestbookCardDefinition } from './GuestbookCard';
36// import { Model3DCardDefinition } from './Model3DCard';
37
38export const AllCardDefinitions = [
39 GuestbookCardDefinition,
40 ButtonCardDefinition,
41 ImageCardDefinition,
42 VideoCardDefinition,
43 TextCardDefinition,
44 LinkCardDefinition,
45 BigSocialCardDefinition,
46 UpdatedBlentosCardDefitition,
47 YoutubeCardDefinition,
48 BlueskyPostCardDefinition,
49 LatestBlueskyPostCardDefinition,
50 LivestreamCardDefitition,
51 LivestreamEmbedCardDefitition,
52 EmbedCardDefinition,
53 MapCardDefinition,
54 ATProtoCollectionsCardDefinition,
55 SectionCardDefinition,
56 BlueskyMediaCardDefinition,
57 DinoGameCardDefinition,
58 BlueskyProfileCardDefinition,
59 GithubProfileCardDefitition,
60 TetrisCardDefinition,
61 FluidTextCardDefinition,
62 GifCardDefinition,
63 PopfeedReviewsCardDefinition,
64 TealFMPlaysCardDefinition,
65 PhotoGalleryCardDefinition,
66 StandardSiteDocumentListCardDefinition,
67 StatusphereCardDefinition,
68 EventCardDefinition,
69 VCardCardDefinition,
70 DrawCardDefinition,
71 TimerCardDefinition,
72 SpotifyCardDefinition
73 // Model3DCardDefinition
74] as const;
75
76export const CardDefinitionsByType = AllCardDefinitions.reduce(
77 (acc, item) => {
78 acc[item.type] = item;
79 return acc;
80 },
81 {} as Record<string, CardDefinition>
82);
83
84export function getColor(item: Item): string {
85 if (item.color) return item.color;
86
87 const cardDefColor = CardDefinitionsByType[item.cardType]?.defaultColor;
88
89 return cardDefColor || 'base';
90}