import {SelectBoxProps} from "@/shared/interface"; // ==================== SPELL TAG INTERFACES ==================== export interface SpellTagProps { id: string; name: string; color: string | null; } // ==================== SPELL INTERFACES ==================== // Réponse de GET /spell/detail et POST /spell/add export interface SpellProps { id: string; name: string; description: string; appearance: string; tags: string[]; // IDs des tags powerLevel: string | null; components: string | null; limitations: string | null; notes: string | null; seriesSpellId?: string | null; } // Pour POST /spell/add et PUT /spell/update export interface SpellPropsPost { id?: string; name: string; description: string; appearance: string; tags: string[]; powerLevel?: string | null; components?: string | null; limitations?: string | null; notes?: string | null; seriesSpellId?: string | null; } // Item dans la liste (GET /spell/list) export interface SpellListItem { id: string; name: string; description: string; tags: SpellTagProps[]; // Tags résolus (pas les IDs) seriesSpellId?: string | null; } // Réponse de GET /spell/list export interface SpellListResponse { enabled: boolean; spells: SpellListItem[]; tags: SpellTagProps[]; } // État local pour l'édition (avec id nullable pour création) export interface SpellEditState { id: string | null; name: string; description: string; appearance: string; tags: string[]; powerLevel: string | null; components: string | null; limitations: string | null; notes: string | null; seriesSpellId?: string | null; } export const initialSpellState: SpellEditState = { id: null, name: '', description: '', appearance: '', tags: [], powerLevel: null, components: null, limitations: null, notes: null, seriesSpellId: null, }; export const spellPowerLevels: SelectBoxProps[] = [ {value: 'none', label: 'spellPowerLevels.none'}, {value: 'cantrip', label: 'spellPowerLevels.cantrip'}, {value: 'novice', label: 'spellPowerLevels.novice'}, {value: 'apprentice', label: 'spellPowerLevels.apprentice'}, {value: 'journeyman', label: 'spellPowerLevels.journeyman'}, {value: 'expert', label: 'spellPowerLevels.expert'}, {value: 'master', label: 'spellPowerLevels.master'}, {value: 'grandmaster', label: 'spellPowerLevels.grandmaster'}, {value: 'legendary', label: 'spellPowerLevels.legendary'}, {value: 'divine', label: 'spellPowerLevels.divine'}, ]; export const defaultTagColors: string[] = [ '#51AE84', '#3A8B69', '#2196F3', '#1976D2', '#FFA726', '#FF9800', '#EF5350', '#E53935', '#AB47BC', '#9C27B0', '#26A69A', '#00897B', '#5C6BC0', '#3F51B5', '#EC407A', '#D81B60', ];