Remove unused components and models for improved maintainability

- Deleted redundant components (`AddActionButton`, `AlertBox`, `AlertStack`, `BackButton`, `CancelButton`, and `CollapsableArea`) and related files.
- Removed unused models (`Book`, `BookSerie`, `BookTables`, `Character`, and `Chapter`) to reduce codebase clutter.
- Updated project structure and references to reflect these removals.
This commit is contained in:
natreex
2026-03-22 22:37:31 -04:00
parent e8aaef108b
commit 64ed90d993
229 changed files with 15091 additions and 21289 deletions

9
lib/constants/book.ts Normal file
View File

@@ -0,0 +1,9 @@
import {SelectBoxProps} from "@/components/form/SelectBox";
export const bookTypes: SelectBoxProps[] = [
{label: 'bookTypes.short', value: 'short'},
{label: 'bookTypes.novelette', value: 'novelette'},
{label: 'bookTypes.novella', value: 'long'},
{label: 'bookTypes.chapbook', value: 'chapbook'},
{label: 'bookTypes.novel', value: 'novel'},
];

9
lib/constants/chapter.ts Normal file
View File

@@ -0,0 +1,9 @@
import {SelectBoxProps} from "@/components/form/SelectBox";
export const chapterVersions: SelectBoxProps[] = [
{value: '1', label: 'chapterVersions.prompt'},
{value: '2', label: 'chapterVersions.draft'},
{value: '3', label: 'chapterVersions.refine'},
{value: '4', label: 'chapterVersions.review'},
{value: '5', label: 'chapterVersions.final'},
];

153
lib/constants/character.ts Normal file
View File

@@ -0,0 +1,153 @@
import {
Zap,
Box,
Brain,
Target,
AlertTriangle,
Fingerprint,
Flame,
Ghost,
Heart,
HeartCrack,
Users,
Quote,
Route,
Ruler,
Shield,
UserX,
Wrench
} from 'lucide-react';
import {SelectBoxProps} from "@/components/form/SelectBox";
import {CharacterElement} from "@/lib/types/character";
export const characterCategories: SelectBoxProps[] = [
{value: 'none', label: 'characterCategories.none'},
{value: 'main', label: 'characterCategories.main'},
{value: 'secondary', label: 'characterCategories.secondary'},
{value: 'recurring', label: 'characterCategories.recurring'},
];
export const characterStatus: SelectBoxProps[] = [
{value: 'alive', label: 'characterStatus.alive'},
{value: 'dead', label: 'characterStatus.dead'},
{value: 'unknown', label: 'characterStatus.unknown'},
];
export const basicCharacterElements: CharacterElement[] = [
{
title: 'Descriptions physiques',
section: 'physical',
placeholder: 'Nouvelle Description Physique',
icon: Ruler,
},
{
title: 'Descriptions psychologiques',
section: 'psychological',
placeholder: 'Nouvelle Description Psychologique',
icon: Brain,
},
];
export const advancedCharacterElements: CharacterElement[] = [
{
title: 'Signes distinctifs',
section: 'distinguishingMarks',
placeholder: 'Nouveau signe distinctif',
icon: Fingerprint,
},
{
title: 'Arc du personnage',
section: 'arc',
placeholder: 'Nouvelle étape de l\'arc',
icon: Route,
},
{
title: 'Secrets',
section: 'secrets',
placeholder: 'Nouveau secret',
icon: UserX,
},
{
title: 'Peurs',
section: 'fears',
placeholder: 'Nouvelle peur',
icon: Ghost,
},
{
title: 'Défauts',
section: 'flaws',
placeholder: 'Nouveau défaut',
icon: HeartCrack,
},
{
title: 'Croyances',
section: 'beliefs',
placeholder: 'Nouvelle croyance',
icon: Heart,
},
{
title: 'Conflits internes',
section: 'conflicts',
placeholder: 'Nouveau conflit',
icon: Zap,
},
{
title: 'Citations',
section: 'quotes',
placeholder: 'Nouvelle citation',
icon: Quote,
},
{
title: 'Relations',
section: 'relations',
placeholder: 'Nouveau Nom de Relation',
icon: Users,
},
{
title: 'Compétences',
section: 'skills',
placeholder: 'Nouvelle Compétence',
icon: Wrench,
},
{
title: 'Faiblesses',
section: 'weaknesses',
placeholder: 'Nouvelle Faiblesse',
icon: AlertTriangle,
},
{
title: 'Forces',
section: 'strengths',
placeholder: 'Nouvelle Force',
icon: Shield,
},
{
title: 'Objectifs',
section: 'goals',
placeholder: 'Nouvel Objectif',
icon: Target,
},
{
title: 'Motivations',
section: 'motivations',
placeholder: 'Nouvelle Motivation',
icon: Flame,
},
{
title: 'Objets importants',
section: 'items',
placeholder: 'Nouvel objet',
icon: Box,
},
{
title: 'Affiliations',
section: 'affiliations',
placeholder: 'Nouvelle affiliation',
icon: Users,
},
];
export const characterElementCategory: CharacterElement[] = [
...basicCharacterElements,
...advancedCharacterElements,
];

35
lib/constants/spell.ts Normal file
View File

@@ -0,0 +1,35 @@
import {SelectBoxProps} from "@/components/form/SelectBox";
import {SpellEditState} from "@/lib/types/spell";
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',
];

135
lib/constants/story.ts Normal file
View File

@@ -0,0 +1,135 @@
import {RadioBoxValue} from "@/components/form/RadioBox";
import {SelectBoxProps} from "@/components/form/SelectBox";
export const storyStates: RadioBoxValue[] = [
{label: 'Suite', value: 0},
{label: 'Début', value: 1},
{label: 'Fin', value: 2},
{label: 'Introduction', value: 3},
{label: 'Final', value: 4},
];
export const beginnerPredefinedType: SelectBoxProps[] = [
{label: `Thème défini disponible.`, value: '0'},
{label: `Féerique`, value: '3'},
{label: 'Romance historique', value: '10'},
{label: 'Conte de fées moderne', value: '13'},
{label: 'Romance contemporaine', value: '17'},
{label: 'Conte moral', value: '20'},
];
export const intermediatePredefinedType: SelectBoxProps[] = [
{label: `Thème défini disponible.`, value: '0'},
{label: `Histoire d'horreur jeune adulte`, value: '1'},
{label: 'Féerique', value: '3'},
{label: 'Romance dramatique', value: '5'},
{label: 'Fantastique sombre', value: '9'},
{label: 'Romance historique', value: '10'},
{label: 'Science-fiction utopique', value: '12'},
{label: 'Conte de fées moderne', value: '13'},
{label: 'Drame familial', value: '14'},
{label: 'Romance contemporaine', value: '17'},
{label: 'Science-fiction post-apocalyptique', value: '19'},
{label: 'Conte moral', value: '20'},
];
export const advancedPredefinedType: SelectBoxProps[] = [
{label: `Thème défini disponible.`, value: '0'},
{label: `Histoire d'horreur jeune adulte`, value: '1'},
{label: `Horreur adulte`, value: '2'},
{label: 'Féerique', value: '3'},
{label: 'Science-fiction dystopique', value: '4'},
{label: 'Romance dramatique', value: '5'},
{label: 'Aventure épique', value: '6'},
{label: 'Conte philosophique', value: '7'},
{label: 'Thriller psychologique', value: '8'},
{label: 'Fantastique sombre', value: '9'},
{label: 'Romance historique', value: '10'},
{label: 'Polar noir', value: '11'},
{label: 'Science-fiction utopique', value: '12'},
{label: 'Conte de fées moderne', value: '13'},
{label: 'Drame familial', value: '14'},
{label: 'Aventure maritime', value: '15'},
{label: 'Fantaisie épique', value: '16'},
{label: 'Romance contemporaine', value: '17'},
{label: "Thriller d'espionnage", value: '18'},
{label: 'Science-fiction post-apocalyptique', value: '19'},
{label: 'Conte moral', value: '20'},
];
export const beginnerNarrativePersons: SelectBoxProps[] = [
{label: 'Sélectionner un type narrative.', value: '0'},
{label: 'Première personne (Je acteur) - Implication émotionnelle', value: '1'},
{label: 'Troisième omnisciente - Narration divine, savoir total', value: '3'},
];
export const intermediateNarrativePersons: SelectBoxProps[] = [
{label: 'Sélectionner un type narrative.', value: '0'},
{label: 'Première personne (Je acteur) - Implication émotionnelle', value: '1'},
{label: 'Première personne (Je témoin) - Observation extérieure', value: '2'},
{label: 'Troisième omnisciente - Narration divine, savoir total', value: '3'},
{label: 'Troisième limitée - Focus sur 1 personnage', value: '4'},
];
export const advancedNarrativePersons: SelectBoxProps[] = [
{label: 'Sélectionner un type narrative.', value: '0'},
{label: 'Première personne (Je acteur) - Implication émotionnelle', value: '1'},
{label: 'Première personne (Je témoin) - Observation extérieure', value: '2'},
{label: 'Troisième omnisciente - Narration divine, savoir total', value: '3'},
{label: 'Troisième limitée - Focus sur 1 personnage', value: '4'},
{label: 'Deuxième personne (Tu) - Immersion/confrontation', value: '5'},
{label: 'Nous collectif - Voix chorale, destin partagé', value: '6'},
];
export const langues: SelectBoxProps[] = [
{label: 'Sélectionner une langue.', value: '0'},
{label: 'Français Canada', value: '1'},
{label: 'Français France', value: '2'},
{label: 'Français Québécois', value: '3'},
{label: 'English Canada', value: '4'},
];
export const beginnerDialogueTypes: SelectBoxProps[] = [
{label: 'Sélectionner un type de dialogue.', value: '0'},
{label: 'Dialogue direct - Paroles exactes des personnages', value: '1'},
{label: 'Dialogue indirect - Paroles résumées par le narrateur', value: '2'},
];
export const intermediateDialogueTypes: SelectBoxProps[] = [
{label: 'Sélectionner un type de dialogue.', value: '0'},
{label: 'Dialogue direct - Paroles exactes des personnages', value: '1'},
{label: 'Dialogue indirect - Paroles résumées par le narrateur', value: '2'},
{label: 'Dialogue mixte - Mélange de dialogue direct et indirect', value: '3'},
];
export const advancedDialogueTypes: SelectBoxProps[] = [
{label: 'Sélectionner un type de dialogue.', value: '0'},
{label: 'Dialogue direct - Paroles exactes des personnages', value: '1'},
{label: 'Dialogue indirect - Paroles résumées par le narrateur', value: '2'},
{label: 'Dialogue mixte - Mélange de dialogue direct et indirect', value: '3'},
{label: 'Monologue intérieur - Interaction avec soi-même', value: '4'},
];
export const verbalTime: SelectBoxProps[] = [
{label: 'Sélectionner un temps verbal.', value: '0'},
{label: 'Passé Simple', value: '1'},
{label: 'Passé Immédiat → Témoignages, récits autobiographiques', value: '2'},
{label: 'Passé Profond → Flashbacks littéraires, tragédies', value: '3'},
{label: 'Présent Brut → Urgence, immersion totale', value: '4'},
{label: 'Présent Réflexif → Méditations philosophiques', value: '5'},
{label: 'Futur Projeté → Prophéties, plans stratégiques', value: '6'},
{label: 'Futur Catastrophe → Dystopies, récits post-apocalyptiques', value: '7'},
{label: 'Imparfait Onirique → Rêves, souvenirs déformés', value: '8'},
{label: 'Conditionnel Hypothétique → Uchronies, réalités alternatives', value: '9'},
{label: 'Subjonctif Angoissé → Drames psychologiques, dilemmes', value: '10'},
{label: 'Mélancolie Composée → Regrets, introspection nostalgique', value: '11'},
{label: 'Urgence Narrative → Urgences', value: '12'},
{label: 'Présent Émotionnel → Émotions intenses', value: '13'},
{label: 'Présent Introspectif → Réflexions profondes', value: '14'},
{label: 'Présent Historique → Histoires historiques', value: '15'},
{label: 'Passé Réflexif → Récits introspectifs', value: '16'},
{label: 'Futur Prophétique → Prophéties, visions apocalyptiques', value: '17'},
{label: 'Conditionnel Visionnaire → Mondes parallèles', value: '18'},
{label: 'Imparfait Poétique → Lyrisme, poésie narrative', value: '19'},
{label: 'Second Person Narrative → Immersion totale', value: '20'},
];

8
lib/constants/user.ts Normal file
View File

@@ -0,0 +1,8 @@
import {SelectBoxProps} from "@/components/form/SelectBox";
export const writingLevel: SelectBoxProps[] = [
{value: '0', label: 'Sélectionner un niveau d\'écriture'},
{value: '1', label: 'Je suis débutant'},
{value: '2', label: 'Je suis intermédiaire'},
{value: '3', label: 'Je suis avancé'},
];

30
lib/constants/world.ts Normal file
View File

@@ -0,0 +1,30 @@
import {
Crown,
AlertTriangle,
Flag,
Gavel,
Factory,
Leaf,
Mountain,
Music,
ArrowLeftRight,
Snowflake,
UserCog,
Users
} from 'lucide-react';
import {ElementSection} from "@/lib/types/world";
export const elementSections: ElementSection[] = [
{title: 'Lois', section: 'laws', icon: Gavel},
{title: 'Biomes', section: 'biomes', icon: Mountain},
{title: 'Problèmes', section: 'issues', icon: AlertTriangle},
{title: 'Coutumes', section: 'customs', icon: ArrowLeftRight},
{title: 'Royaumes', section: 'kingdoms', icon: Flag},
{title: 'Climat', section: 'climate', icon: Snowflake},
{title: 'Ressources', section: 'resources', icon: Factory},
{title: 'Faune', section: 'wildlife', icon: Leaf},
{title: 'Arts', section: 'arts', icon: Music},
{title: 'Groupes ethniques', section: 'ethnicGroups', icon: Users},
{title: 'Classes sociales', section: 'socialClasses', icon: UserCog},
{title: 'Personnages importants', section: 'importantCharacters', icon: Crown},
];