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