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 { PhotoGalleryCardDefinition } from './media/PhotoGalleryCard';
27import { StandardSiteDocumentListCardDefinition } from './content/StandardSiteDocumentListCard';
28import { StatusphereCardDefinition } from './media/StatusphereCard';
29import { EventCardDefinition } from './social/EventCard';
30import { VCardCardDefinition } from './social/VCardCard';
31import { DrawCardDefinition } from './visual/DrawCard';
32import { TimerCardDefinition } from './utilities/TimerCard';
33import { ClockCardDefinition } from './utilities/ClockCard';
34import { CountdownCardDefinition } from './utilities/CountdownCard';
35import { SpotifyCardDefinition } from './media/SpotifyCard';
36import { AppleMusicCardDefinition } from './media/AppleMusicCard';
37import { ButtonCardDefinition } from './utilities/ButtonCard';
38import { GuestbookCardDefinition } from './social/GuestbookCard';
39import { FriendsCardDefinition } from './social/FriendsCard';
40import { GitHubContributorsCardDefinition } from './social/GitHubContributorsCard';
41import { ProductHuntCardDefinition } from './social/ProductHuntCard';
42import { KickstarterCardDefinition } from './social/KickstarterCard';
43import { NpmxLikesCardDefinition } from './social/NpmxLikesCard';
44import { NpmxLikesLeaderboardCardDefinition } from './social/NpmxLikesLeaderboardCard';
45import { LastFMRecentTracksCardDefinition } from './media/LastFMCard/LastFMRecentTracksCard';
46import { LastFMTopTracksCardDefinition } from './media/LastFMCard/LastFMTopTracksCard';
47import { LastFMTopAlbumsCardDefinition } from './media/LastFMCard/LastFMTopAlbumsCard';
48import { LastFMProfileCardDefinition } from './media/LastFMCard/LastFMProfileCard';
49import { PlyrFMCardDefinition, PlyrFMCollectionCardDefinition } from './media/PlyrFMCard';
50import { MarginCardDefinition } from './social/MarginCard';
51import { SembleCollectionCardDefinition } from './social/SembleCollectionCard';
52import { GermDMCardDefinition } from './social/GermDMCard';
53// import { Model3DCardDefinition } from './visual/Model3DCard';
54
55export const AllCardDefinitions = [
56 GuestbookCardDefinition,
57 ButtonCardDefinition,
58 ImageCardDefinition,
59 TextCardDefinition,
60 LinkCardDefinition,
61 BigSocialCardDefinition,
62 UpdatedBlentosCardDefitition,
63 YoutubeCardDefinition,
64 BlueskyPostCardDefinition,
65 LatestBlueskyPostCardDefinition,
66 BlueskyFeedCardDefinition,
67 LivestreamCardDefitition,
68 LivestreamEmbedCardDefitition,
69 // EmbedCardDefinition,
70 MapCardDefinition,
71 ATProtoCollectionsCardDefinition,
72 SectionCardDefinition,
73 BlueskyMediaCardDefinition,
74 DinoGameCardDefinition,
75 BlueskyProfileCardDefinition,
76 GithubProfileCardDefitition,
77 TetrisCardDefinition,
78 FluidTextCardDefinition,
79 GifCardDefinition,
80 PopfeedReviewsCardDefinition,
81 TealFMPlaysCardDefinition,
82 PhotoGalleryCardDefinition,
83 StandardSiteDocumentListCardDefinition,
84 StatusphereCardDefinition,
85 EventCardDefinition,
86 VCardCardDefinition,
87 DrawCardDefinition,
88 TimerCardDefinition,
89 ClockCardDefinition,
90 CountdownCardDefinition,
91 SpotifyCardDefinition,
92 AppleMusicCardDefinition,
93 // Model3DCardDefinition
94 FriendsCardDefinition,
95 GitHubContributorsCardDefinition,
96 ProductHuntCardDefinition,
97 KickstarterCardDefinition,
98 NpmxLikesCardDefinition,
99 NpmxLikesLeaderboardCardDefinition,
100 LastFMRecentTracksCardDefinition,
101 LastFMTopTracksCardDefinition,
102 LastFMTopAlbumsCardDefinition,
103 LastFMProfileCardDefinition,
104 PlyrFMCardDefinition,
105 PlyrFMCollectionCardDefinition,
106 MarginCardDefinition,
107 SembleCollectionCardDefinition,
108 GermDMCardDefinition
109] as const;
110
111export const CardDefinitionsByType = AllCardDefinitions.reduce(
112 (acc, item) => {
113 acc[item.type] = item;
114 return acc;
115 },
116 {} as Record<string, CardDefinition>
117);
118
119export function getColor(item: Item): string {
120 if (item.color) return item.color;
121
122 const cardDefColor = CardDefinitionsByType[item.cardType]?.defaultColor;
123
124 return cardDefColor || 'base';
125}