your personal website on atproto - mirror
blento.app
1import type { Item } from '$lib/types';
2import { ATProtoCollectionsCardDefinition } from './social/ATProtoCollectionsCard';
3import { BigSocialCardDefinition } from './social/BigSocialCard';
4import { BlueskyMediaCardDefinition } from './media/BlueskyMediaCard';
5import { BlueskyPostCardDefinition } from './social/BlueskyPostCard';
6import { BlueskyFeedCardDefinition } from './social/BlueskyFeedCard';
7import { LatestBlueskyPostCardDefinition } from './social/LatestBlueskyPostCard';
8import { DinoGameCardDefinition } from './games/DinoGameCard';
9import { EmbedCardDefinition } from './media/EmbedCard';
10import { TetrisCardDefinition } from './games/TetrisCard';
11import { ImageCardDefinition } from './core/ImageCard';
12import { LinkCardDefinition } from './core/LinkCard';
13import { LivestreamCardDefitition, LivestreamEmbedCardDefitition } from './media/LivestreamCard';
14import { MapCardDefinition } from './core/MapCard';
15import { SectionCardDefinition } from './core/SectionCard';
16import { UpdatedBlentosCardDefitition } from './special/UpdatedBlentos';
17import { TextCardDefinition } from './core/TextCard';
18import type { CardDefinition } from './types';
19import { YoutubeCardDefinition } from './media/YoutubeVideoCard';
20import { BlueskyProfileCardDefinition } from './social/BlueskyProfileCard';
21import { GithubProfileCardDefitition } from './social/GitHubProfileCard';
22import { FluidTextCardDefinition } from './visual/FluidTextCard';
23import { GifCardDefinition } from './media/GIFCard';
24import { PopfeedReviewsCardDefinition } from './media/PopfeedReviews';
25import { TealFMPlaysCardDefinition } from './media/TealFMPlaysCard';
26import { RockskyPlaysCardDefinition } from './media/RockskyPlaysCard';
27import { PhotoGalleryCardDefinition } from './media/PhotoGalleryCard';
28import { StandardSiteDocumentListCardDefinition } from './content/StandardSiteDocumentListCard';
29import { StatusphereCardDefinition } from './media/StatusphereCard';
30import { EventCardDefinition } from './social/EventCard';
31import { UpcomingEventsCardDefinition } from './social/UpcomingEventsCard';
32import { UpcomingRsvpsCardDefinition } from './social/UpcomingRsvpsCard';
33import { VCardCardDefinition } from './social/VCardCard';
34import { DrawCardDefinition } from './visual/DrawCard';
35import { TimerCardDefinition } from './utilities/TimerCard';
36import { ClockCardDefinition } from './utilities/ClockCard';
37import { CountdownCardDefinition } from './utilities/CountdownCard';
38import { SpotifyCardDefinition } from './media/SpotifyCard';
39import { AppleMusicCardDefinition } from './media/AppleMusicCard';
40import { ButtonCardDefinition } from './utilities/ButtonCard';
41import { GuestbookCardDefinition } from './social/GuestbookCard';
42import { FriendsCardDefinition } from './social/FriendsCard';
43import { GitHubContributorsCardDefinition } from './social/GitHubContributorsCard';
44import { ProductHuntCardDefinition } from './social/ProductHuntCard';
45import { KickstarterCardDefinition } from './social/KickstarterCard';
46import { NpmxLikesCardDefinition } from './social/NpmxLikesCard';
47import { NpmxLikesLeaderboardCardDefinition } from './social/NpmxLikesLeaderboardCard';
48import { LastFMRecentTracksCardDefinition } from './media/LastFMCard/LastFMRecentTracksCard';
49import { LastFMTopTracksCardDefinition } from './media/LastFMCard/LastFMTopTracksCard';
50import { LastFMTopAlbumsCardDefinition } from './media/LastFMCard/LastFMTopAlbumsCard';
51import { LastFMProfileCardDefinition } from './media/LastFMCard/LastFMProfileCard';
52import { PlyrFMCardDefinition, PlyrFMCollectionCardDefinition } from './media/PlyrFMCard';
53import { MarginCardDefinition } from './social/MarginCard';
54import { SembleCollectionCardDefinition } from './social/SembleCollectionCard';
55import { GermDMCardDefinition } from './social/GermDMCard';
56import { KichRecipeCardDefinition } from './social/KichRecipeCard';
57import { KichRecipeCollectionCardDefinition } from './social/KichRecipeCollectionCard';
58import { KichCookingLogCardDefinition } from './social/KichCookingLogCard';
59// import { Model3DCardDefinition } from './visual/Model3DCard';
60
61export const AllCardDefinitions = [
62 GuestbookCardDefinition,
63 ButtonCardDefinition,
64 ImageCardDefinition,
65 TextCardDefinition,
66 LinkCardDefinition,
67 BigSocialCardDefinition,
68 UpdatedBlentosCardDefitition,
69 YoutubeCardDefinition,
70 BlueskyPostCardDefinition,
71 LatestBlueskyPostCardDefinition,
72 BlueskyFeedCardDefinition,
73 LivestreamCardDefitition,
74 LivestreamEmbedCardDefitition,
75 // EmbedCardDefinition,
76 MapCardDefinition,
77 ATProtoCollectionsCardDefinition,
78 SectionCardDefinition,
79 BlueskyMediaCardDefinition,
80 DinoGameCardDefinition,
81 BlueskyProfileCardDefinition,
82 GithubProfileCardDefitition,
83 TetrisCardDefinition,
84 FluidTextCardDefinition,
85 GifCardDefinition,
86 PopfeedReviewsCardDefinition,
87 TealFMPlaysCardDefinition,
88 RockskyPlaysCardDefinition,
89 PhotoGalleryCardDefinition,
90 StandardSiteDocumentListCardDefinition,
91 StatusphereCardDefinition,
92 EventCardDefinition,
93 UpcomingEventsCardDefinition,
94 UpcomingRsvpsCardDefinition,
95 VCardCardDefinition,
96 DrawCardDefinition,
97 TimerCardDefinition,
98 ClockCardDefinition,
99 CountdownCardDefinition,
100 SpotifyCardDefinition,
101 AppleMusicCardDefinition,
102 // Model3DCardDefinition
103 FriendsCardDefinition,
104 GitHubContributorsCardDefinition,
105 ProductHuntCardDefinition,
106 KickstarterCardDefinition,
107 NpmxLikesCardDefinition,
108 NpmxLikesLeaderboardCardDefinition,
109 LastFMRecentTracksCardDefinition,
110 LastFMTopTracksCardDefinition,
111 LastFMTopAlbumsCardDefinition,
112 LastFMProfileCardDefinition,
113 PlyrFMCardDefinition,
114 PlyrFMCollectionCardDefinition,
115 MarginCardDefinition,
116 SembleCollectionCardDefinition,
117 GermDMCardDefinition,
118 KichRecipeCardDefinition,
119 KichRecipeCollectionCardDefinition,
120 KichCookingLogCardDefinition
121] as const;
122
123export const CardDefinitionsByType = AllCardDefinitions.reduce(
124 (acc, item) => {
125 acc[item.type] = item;
126 return acc;
127 },
128 {} as Record<string, CardDefinition>
129);
130
131export function getColor(item: Item): string {
132 if (item.color) return item.color;
133
134 const cardDefColor = CardDefinitionsByType[item.cardType]?.defaultColor;
135
136 return cardDefColor || 'base';
137}