- Ajout d'icônes dans la scène, chapitre et arc - Possibilité de bouger les cases dans la partie graphe et les textes associés si ces derniers ne sont pas visibles - Changement sur le thème du graphe : mode sombre et plus blanc - Barre d'action en haut, même pour la partie scène - Mode sticky corrigé : plus de trou entre le haut du navigateur web et de la barre d'action Passage version 0.6.5
67 lines
2.8 KiB
TypeScript
67 lines
2.8 KiB
TypeScript
import {
|
|
Bookmark,
|
|
Theater, Drama, Compass, Flag, Calendar, Map, Castle, Tent,
|
|
Swords, Skull, Crown, Heart, Eye, Footprints, Dice5, Hourglass,
|
|
Flame, Snowflake, Cloud, Sun, Moon, Star, Zap, Target,
|
|
Music, MessageCircle, Lock, Key as KeyIcon, Coins, Gift,
|
|
LucideIconData
|
|
} from 'lucide-angular';
|
|
|
|
// Type local equivalent a IconOption de lore-icons. Duplique volontairement
|
|
// pour eviter une dependance circulaire (lore-icons importe ce fichier).
|
|
export interface CampaignIconOption {
|
|
key: string;
|
|
icon: LucideIconData;
|
|
}
|
|
|
|
/**
|
|
* Banque d'icones dediee aux entites narratives d'une campagne (arc, chapitre, scene).
|
|
*
|
|
* Pourquoi separe de LORE_ICON_OPTIONS ? Les icones lore sont plutot orientees
|
|
* "objets de monde" (chateau, foret, dragon...). Ici on est sur du sequencement
|
|
* narratif et de la mise en scene : ambiances, actes, decisions. Cles uniques
|
|
* (prefixees `c-` quand un nom existerait deja dans le lore) pour eviter les
|
|
* collisions avec LORE_ICON_OPTIONS — le resolver consulte les deux registres.
|
|
*/
|
|
export const CAMPAIGN_ICON_OPTIONS: CampaignIconOption[] = [
|
|
{ key: 'c-theater', icon: Theater },
|
|
{ key: 'c-drama', icon: Drama },
|
|
{ key: 'c-compass', icon: Compass },
|
|
{ key: 'c-flag', icon: Flag },
|
|
{ key: 'c-calendar', icon: Calendar },
|
|
{ key: 'c-map', icon: Map },
|
|
{ key: 'c-castle', icon: Castle },
|
|
{ key: 'c-tent', icon: Tent },
|
|
{ key: 'c-swords', icon: Swords },
|
|
{ key: 'c-skull', icon: Skull },
|
|
{ key: 'c-crown', icon: Crown },
|
|
{ key: 'c-heart', icon: Heart },
|
|
{ key: 'c-eye', icon: Eye },
|
|
{ key: 'c-footprints', icon: Footprints },
|
|
{ key: 'c-dice', icon: Dice5 },
|
|
{ key: 'c-hourglass', icon: Hourglass },
|
|
{ key: 'c-flame', icon: Flame },
|
|
{ key: 'c-snowflake', icon: Snowflake },
|
|
{ key: 'c-cloud', icon: Cloud },
|
|
{ key: 'c-sun', icon: Sun },
|
|
{ key: 'c-moon', icon: Moon },
|
|
{ key: 'c-star', icon: Star },
|
|
{ key: 'c-zap', icon: Zap },
|
|
{ key: 'c-target', icon: Target },
|
|
{ key: 'c-music', icon: Music },
|
|
{ key: 'c-message', icon: MessageCircle },
|
|
{ key: 'c-lock', icon: Lock },
|
|
{ key: 'c-key', icon: KeyIcon },
|
|
{ key: 'c-coins', icon: Coins },
|
|
{ key: 'c-gift', icon: Gift },
|
|
];
|
|
|
|
/** Icone par defaut quand une entite narrative n'en a pas. */
|
|
export const DEFAULT_CAMPAIGN_ICON: LucideIconData = Bookmark;
|
|
|
|
/** Resolveur dedie. Prefere passer par `resolveIcon` dans lore-icons qui consulte les deux. */
|
|
export function resolveCampaignIcon(key: string | null | undefined): LucideIconData {
|
|
if (!key) return DEFAULT_CAMPAIGN_ICON;
|
|
return CAMPAIGN_ICON_OPTIONS.find(o => o.key === key)?.icon ?? DEFAULT_CAMPAIGN_ICON;
|
|
}
|