"""Per-Space configuration for the Loreify D&D tools portfolio.""" from dataclasses import dataclass, field COLLECTION_TITLE = "Free D&D Tools, Generators, Trackers, and Calculators" # Filled in by deploy.py after the Collection is created; the footer link # falls back to the owner's Spaces listing until then. COLLECTION_URL = "https://huggingface.co/collections/Jordancole21/free-d-and-d-tools-generators-trackers-and-calculators-6a5fd7e9bbbcea33a3ab7ed2" OWNER = "Jordancole21" LOREIFY_TRIAL_URL = "https://loreify.ai/start-trial" @dataclass(frozen=True) class RelatedSpace: title: str url: str description: str @dataclass(frozen=True) class CTA: copy: str button: str utm_content: str # hero | post_tool | mid_page | footer (or page-specific) @dataclass(frozen=True) class SpaceConfig: slug: str # Space repo name, e.g. "dnd-monster-builder" utm_campaign: str # e.g. "dnd_monster_builder" title: str # Space metadata title emoji: str short_description: str # <= ~60 chars h1: str # exact-intent H1, one per page tagline: str # one-sentence outcome promise primary_keyword: str secondary_keywords: tuple = () hero_cta: CTA = None post_tool_cta: CTA = None mid_page_cta: CTA = None # optional third placement footer_cta: CTA = None related: tuple = () # tuple[RelatedSpace] @property def space_url(self) -> str: return f"https://huggingface.co/spaces/{OWNER}/{self.slug}"