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