test: centralize media role labels
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
---
|
||||
import SourceBadge from "./SourceBadge.astro";
|
||||
import type { MediaAsset } from "../lib/api";
|
||||
import { mediaRoleLabel } from "../lib/media";
|
||||
const { asset, compact = false, sourceLink = false } = Astro.props as { asset: MediaAsset; compact?: boolean; sourceLink?: boolean };
|
||||
const roleLabels: Record<string, string> = { waterbody_cover: "Заставка водоёма", waterbody_map: "Карта водоёма", waterbody_depth_map: "Карта глубин", waterbody_screenshot: "Скриншот водоёма", tackle_card: "Карточка снасти", tackle_detail: "Деталь снасти", rig_diagram: "Схема монтажа", tackle_screenshot: "Скриншот снасти" };
|
||||
---
|
||||
<figure class:list={["entity-media", { "entity-media--compact": compact }]}>
|
||||
<span class="entity-media__frame"><picture>
|
||||
@@ -12,5 +12,5 @@ const roleLabels: Record<string, string> = { waterbody_cover: "Заставка
|
||||
})}
|
||||
<img src={asset.image_url} alt={asset.label ?? "Иллюстрация RF4"} width={asset.width} height={asset.height} loading="lazy" decoding="async" />
|
||||
</picture></span>
|
||||
<figcaption><SourceBadge source={asset.source_system} href={sourceLink ? asset.source_url : undefined} /><span>{asset.label ?? "Справочный материал"}</span>{asset.media_role && <small data-media-role={asset.media_role}>{roleLabels[asset.media_role] ?? asset.media_role}</small>}</figcaption>
|
||||
<figcaption><SourceBadge source={asset.source_system} href={sourceLink ? asset.source_url : undefined} /><span>{asset.label ?? "Справочный материал"}</span>{asset.media_role && <small data-media-role={asset.media_role}>{mediaRoleLabel(asset.media_role)}</small>}</figcaption>
|
||||
</figure>
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
import type { MediaAsset, MediaRole } from "./api";
|
||||
|
||||
const mediaRoleLabels: Record<MediaRole, string> = {
|
||||
waterbody_cover: "Заставка водоёма",
|
||||
waterbody_map: "Карта водоёма",
|
||||
waterbody_depth_map: "Карта глубин",
|
||||
waterbody_screenshot: "Скриншот водоёма",
|
||||
tackle_card: "Карточка снасти",
|
||||
tackle_detail: "Деталь снасти",
|
||||
rig_diagram: "Схема монтажа",
|
||||
tackle_screenshot: "Скриншот снасти",
|
||||
};
|
||||
|
||||
export const mediaRoleLabel = (role: string): string => mediaRoleLabels[role as MediaRole] ?? role;
|
||||
|
||||
const tokens = (value: string) => value
|
||||
.toLocaleLowerCase("ru")
|
||||
.replaceAll("ё", "е")
|
||||
|
||||
Reference in New Issue
Block a user