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