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 { SnakeGameCardDefinition } from './games/SnakeGameCard';
10import { EmbedCardDefinition } from './media/EmbedCard';
11import { TetrisCardDefinition } from './games/TetrisCard';
12import { ImageCardDefinition } from './core/ImageCard';
13import { LinkCardDefinition } from './core/LinkCard';
14import { LivestreamCardDefitition, LivestreamEmbedCardDefitition } from './media/LivestreamCard';
15import { MapCardDefinition } from './core/MapCard';
16import { SectionCardDefinition } from './core/SectionCard';
17import { UpdatedBlentosCardDefitition } from './special/UpdatedBlentos';
18import { TextCardDefinition } from './core/TextCard';
19import type { CardDefinition } from './types';
20import { YoutubeCardDefinition } from './media/YoutubeVideoCard';
21import { BlueskyProfileCardDefinition } from './social/BlueskyProfileCard';
22import { GithubProfileCardDefitition } from './social/GitHubProfileCard';
23import { FluidTextCardDefinition } from './visual/FluidTextCard';
24import { GifCardDefinition } from './media/GIFCard';
25import { PopfeedReviewsCardDefinition } from './media/PopfeedReviews';
26import { TealFMPlaysCardDefinition } from './media/TealFMPlaysCard';
27import { PhotoGalleryCardDefinition } from './media/PhotoGalleryCard';
28import { StandardSiteDocumentListCardDefinition } from './content/StandardSiteDocumentListCard';
29import { StatusphereCardDefinition } from './media/StatusphereCard';
30import { EventCardDefinition } from './social/EventCard';
31import { VCardCardDefinition } from './social/VCardCard';
32import { DrawCardDefinition } from './visual/DrawCard';
33import { TimerCardDefinition } from './utilities/TimerCard';
34import { ClockCardDefinition } from './utilities/ClockCard';
35import { CountdownCardDefinition } from './utilities/CountdownCard';
36import { SpotifyCardDefinition } from './media/SpotifyCard';
37import { AppleMusicCardDefinition } from './media/AppleMusicCard';
38import { ButtonCardDefinition } from './utilities/ButtonCard';
39import { GuestbookCardDefinition } from './social/GuestbookCard';
40import { FriendsCardDefinition } from './social/FriendsCard';
41import { GitHubContributorsCardDefinition } from './social/GitHubContributorsCard';
42import { ProductHuntCardDefinition } from './social/ProductHuntCard';
43import { KickstarterCardDefinition } from './social/KickstarterCard';
44import { NpmxLikesCardDefinition } from './social/NpmxLikesCard';
45import { NpmxLikesLeaderboardCardDefinition } from './social/NpmxLikesLeaderboardCard';
46import { LastFMRecentTracksCardDefinition } from './media/LastFMCard/LastFMRecentTracksCard';
47import { LastFMTopTracksCardDefinition } from './media/LastFMCard/LastFMTopTracksCard';
48import { LastFMTopAlbumsCardDefinition } from './media/LastFMCard/LastFMTopAlbumsCard';
49import { LastFMProfileCardDefinition } from './media/LastFMCard/LastFMProfileCard';
50import { PlyrFMCardDefinition, PlyrFMCollectionCardDefinition } from './media/PlyrFMCard';
51import { MarginCardDefinition } from './social/MarginCard';
52import { SembleCollectionCardDefinition } from './social/SembleCollectionCard';
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 SnakeGameCardDefinition,
76 BlueskyProfileCardDefinition,
77 GithubProfileCardDefitition,
78 TetrisCardDefinition,
79 FluidTextCardDefinition,
80 GifCardDefinition,
81 PopfeedReviewsCardDefinition,
82 TealFMPlaysCardDefinition,
83 PhotoGalleryCardDefinition,
84 StandardSiteDocumentListCardDefinition,
85 StatusphereCardDefinition,
86 EventCardDefinition,
87 VCardCardDefinition,
88 DrawCardDefinition,
89 TimerCardDefinition,
90 ClockCardDefinition,
91 CountdownCardDefinition,
92 SpotifyCardDefinition,
93 AppleMusicCardDefinition,
94 // Model3DCardDefinition
95 FriendsCardDefinition,
96 GitHubContributorsCardDefinition,
97 ProductHuntCardDefinition,
98 KickstarterCardDefinition,
99 NpmxLikesCardDefinition,
100 NpmxLikesLeaderboardCardDefinition,
101 LastFMRecentTracksCardDefinition,
102 LastFMTopTracksCardDefinition,
103 LastFMTopAlbumsCardDefinition,
104 LastFMProfileCardDefinition,
105 PlyrFMCardDefinition,
106 PlyrFMCollectionCardDefinition,
107 MarginCardDefinition,
108 SembleCollectionCardDefinition
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}