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';
56// import { Model3DCardDefinition } from './visual/Model3DCard';
57
58export const AllCardDefinitions = [
59 GuestbookCardDefinition,
60 ButtonCardDefinition,
61 ImageCardDefinition,
62 TextCardDefinition,
63 LinkCardDefinition,
64 BigSocialCardDefinition,
65 UpdatedBlentosCardDefitition,
66 YoutubeCardDefinition,
67 BlueskyPostCardDefinition,
68 LatestBlueskyPostCardDefinition,
69 BlueskyFeedCardDefinition,
70 LivestreamCardDefitition,
71 LivestreamEmbedCardDefitition,
72 // EmbedCardDefinition,
73 MapCardDefinition,
74 ATProtoCollectionsCardDefinition,
75 SectionCardDefinition,
76 BlueskyMediaCardDefinition,
77 DinoGameCardDefinition,
78 BlueskyProfileCardDefinition,
79 GithubProfileCardDefitition,
80 TetrisCardDefinition,
81 FluidTextCardDefinition,
82 GifCardDefinition,
83 PopfeedReviewsCardDefinition,
84 TealFMPlaysCardDefinition,
85 RockskyPlaysCardDefinition,
86 PhotoGalleryCardDefinition,
87 StandardSiteDocumentListCardDefinition,
88 StatusphereCardDefinition,
89 EventCardDefinition,
90 UpcomingEventsCardDefinition,
91 UpcomingRsvpsCardDefinition,
92 VCardCardDefinition,
93 DrawCardDefinition,
94 TimerCardDefinition,
95 ClockCardDefinition,
96 CountdownCardDefinition,
97 SpotifyCardDefinition,
98 AppleMusicCardDefinition,
99 // Model3DCardDefinition
100 FriendsCardDefinition,
101 GitHubContributorsCardDefinition,
102 ProductHuntCardDefinition,
103 KickstarterCardDefinition,
104 NpmxLikesCardDefinition,
105 NpmxLikesLeaderboardCardDefinition,
106 LastFMRecentTracksCardDefinition,
107 LastFMTopTracksCardDefinition,
108 LastFMTopAlbumsCardDefinition,
109 LastFMProfileCardDefinition,
110 PlyrFMCardDefinition,
111 PlyrFMCollectionCardDefinition,
112 MarginCardDefinition,
113 SembleCollectionCardDefinition,
114 GermDMCardDefinition
115] as const;
116
117export const CardDefinitionsByType = AllCardDefinitions.reduce(
118 (acc, item) => {
119 acc[item.type] = item;
120 return acc;
121 },
122 {} as Record<string, CardDefinition>
123);
124
125export function getColor(item: Item): string {
126 if (item.color) return item.color;
127
128 const cardDefColor = CardDefinitionsByType[item.cardType]?.defaultColor;
129
130 return cardDefColor || 'base';
131}