- Implement `remove-inline-scripts.js` to externalize Next.js inline scripts, enhancing CSP compliance. - Add models for `Book`, `Character`, `Story`, `Editor`, `System`, and `BookSerie` with relevant properties and utilities. - Include macOS entitlements plist for app development with advanced permissions. - Add utility functions to handle script hashing, cookie management, and content formatting.
223 lines
7.0 KiB
TypeScript
Executable File
223 lines
7.0 KiB
TypeScript
Executable File
import {
|
|
faBrain,
|
|
faBullseye,
|
|
faExclamationTriangle,
|
|
faFire,
|
|
faRuler,
|
|
faShieldAlt,
|
|
faUsers,
|
|
faWrench,
|
|
} from '@fortawesome/free-solid-svg-icons';
|
|
import {SelectBoxProps} from "@/shared/interface";
|
|
|
|
type CharacterCategory = 'main' | 'secondary' | 'recurring' | 'none';
|
|
|
|
export const characterCategories: SelectBoxProps[] = [
|
|
{
|
|
value: 'none',
|
|
label: 'Sélectionner son rôle',
|
|
},
|
|
{
|
|
value: 'main',
|
|
label: 'Principal',
|
|
},
|
|
{
|
|
value: 'secondary',
|
|
label: 'Secondaire',
|
|
},
|
|
{
|
|
value: 'recurring',
|
|
label: 'Récurrent',
|
|
},
|
|
];
|
|
|
|
export const characterTitle: SelectBoxProps[] = [
|
|
{value: 'none', label: 'Aucun'},
|
|
{value: 'king', label: 'Roi'},
|
|
{value: 'queen', label: 'Reine'},
|
|
{value: 'emperor', label: 'Empereur'},
|
|
{value: 'empress', label: 'Impératrice'},
|
|
{value: 'prince', label: 'Prince'},
|
|
{value: 'princess', label: 'Princesse'},
|
|
{value: 'duke', label: 'Duc'},
|
|
{value: 'duchess', label: 'Duchesse'},
|
|
{value: 'count', label: 'Comte'},
|
|
{value: 'countess', label: 'Comtesse'},
|
|
{value: 'baron', label: 'Baron'},
|
|
{value: 'baroness', label: 'Baronne'},
|
|
{value: 'lord', label: 'Seigneur'},
|
|
{value: 'lady', label: 'Dame'},
|
|
{value: 'knight', label: 'Chevalier'},
|
|
{value: 'squire', label: 'Écuyer'},
|
|
{value: 'warrior', label: 'Guerrier'},
|
|
{value: 'general', label: 'Général'},
|
|
{value: 'commander', label: 'Commandant'},
|
|
{value: 'captain', label: 'Capitaine'},
|
|
{value: 'soldier', label: 'Soldat'},
|
|
{value: 'mercenary', label: 'Mercenaire'},
|
|
{value: 'assassin', label: 'Assassin'},
|
|
{value: 'thief', label: 'Voleur'},
|
|
{value: 'spy', label: 'Espion'},
|
|
{value: 'archmage', label: 'Archimage'},
|
|
{value: 'sorcerer', label: 'Sorcier'},
|
|
{value: 'witch', label: 'Sorcière'},
|
|
{value: 'warlock', label: 'Mage Noir'},
|
|
{value: 'druid', label: 'Druide'},
|
|
{value: 'priest', label: 'Prêtre'},
|
|
{value: 'prophet', label: 'Prophète'},
|
|
{value: 'oracle', label: 'Oracle'},
|
|
{value: 'seer', label: 'Voyant'},
|
|
{value: 'scholar', label: 'Érudit'},
|
|
{value: 'alchemist', label: 'Alchimiste'},
|
|
{value: 'healer', label: 'Guérisseur'},
|
|
{value: 'bard', label: 'Barde'},
|
|
{value: 'hermit', label: 'Ermite'},
|
|
{value: 'noble', label: 'Noble'},
|
|
{value: 'peasant', label: 'Paysan'},
|
|
{value: 'merchant', label: 'Marchand'},
|
|
{value: 'sailor', label: 'Marin'},
|
|
{value: 'pirate', label: 'Pirate'},
|
|
{value: 'slave', label: 'Esclave'},
|
|
{value: 'gladiator', label: 'Gladiateur'},
|
|
{value: 'champion', label: 'Champion'},
|
|
{value: 'outlaw', label: 'Hors-la-loi'},
|
|
{value: 'hunter', label: 'Chasseur'},
|
|
{value: 'beastmaster', label: 'Maître des Bêtes'},
|
|
{value: 'ranger', label: 'Rôdeur'},
|
|
{value: 'warden', label: 'Gardien'},
|
|
{value: 'sentinel', label: 'Sentinelle'},
|
|
{value: 'herald', label: 'Héraut'},
|
|
{value: 'messenger', label: 'Messager'},
|
|
{value: 'pilgrim', label: 'Pèlerin'},
|
|
{value: 'nomad', label: 'Nomade'},
|
|
{value: 'chieftain', label: 'Chef de Clan'},
|
|
{value: 'high-priest', label: 'Grand Prêtre'},
|
|
{value: 'inquisitor', label: 'Inquisiteur'},
|
|
{value: 'judge', label: 'Juge'},
|
|
{value: 'executioner', label: 'Bourreau'},
|
|
{value: 'warden', label: 'Gardien de Prison'},
|
|
{value: 'monk', label: 'Moine'},
|
|
{value: 'abbot', label: 'Abbé'},
|
|
{value: 'nun', label: 'Nonne'},
|
|
{value: 'diplomat', label: 'Diplomate'},
|
|
{value: 'ambassador', label: 'Ambassadeur'},
|
|
{value: 'scientist', label: 'Scientifique'},
|
|
{value: 'engineer', label: 'Ingénieur'},
|
|
{value: 'inventor', label: 'Inventeur'},
|
|
{value: 'architect', label: 'Architecte'},
|
|
{value: 'scribe', label: 'Scribe'},
|
|
{value: 'chronicler', label: 'Chroniqueur'},
|
|
{value: 'storyteller', label: 'Conteur'},
|
|
{value: 'actor', label: 'Acteur'},
|
|
{value: 'musician', label: 'Musicien'},
|
|
{value: 'artist', label: 'Artiste'},
|
|
{value: 'sculptor', label: 'Sculpteur'},
|
|
{value: 'orator', label: 'Orateur'},
|
|
{value: 'revolutionary', label: 'Révolutionnaire'},
|
|
{value: 'resistance-fighter', label: 'Résistant'},
|
|
{value: 'freedom-fighter', label: 'Combattant de la Liberté'},
|
|
{value: 'cult-leader', label: 'Chef de Secte'},
|
|
{value: 'warlock-lord', label: 'Seigneur Noir'},
|
|
{value: 'dark-prophet', label: 'Prophète du Chaos'},
|
|
{value: 'warlord', label: 'Seigneur de Guerre'},
|
|
{value: 'grandmaster', label: 'Grand Maître'},
|
|
{value: 'tactician', label: 'Tacticien'},
|
|
{value: 'archduke', label: 'Archiduc'},
|
|
{value: 'high-king', label: 'Haut Roi'},
|
|
{value: 'divine-champion', label: 'Champion Divin'},
|
|
];
|
|
|
|
export interface Relation {
|
|
name: string;
|
|
type: string;
|
|
description: string;
|
|
history: string;
|
|
}
|
|
|
|
export interface Attribute {
|
|
id: string;
|
|
name: string;
|
|
}
|
|
|
|
export interface CharacterAttribute {
|
|
[key: string]: Array<Attribute>;
|
|
}
|
|
|
|
export interface CharacterProps {
|
|
id: string | null;
|
|
name: string;
|
|
lastName: string;
|
|
category: CharacterCategory;
|
|
title: string;
|
|
image: string;
|
|
physical: Attribute[];
|
|
psychological: Attribute[];
|
|
relations: Attribute[];
|
|
skills: Attribute[];
|
|
weaknesses: Attribute[];
|
|
strengths: Attribute[];
|
|
goals: Attribute[];
|
|
motivations: Attribute[];
|
|
role: string;
|
|
biography?: string;
|
|
history?: string;
|
|
}
|
|
|
|
export interface CharacterElement {
|
|
title: string;
|
|
section: keyof CharacterProps;
|
|
placeholder: string;
|
|
icon: any; // Replace `any` with an appropriate type if you have a specific icon type.
|
|
}
|
|
|
|
export const characterElementCategory: CharacterElement[] = [
|
|
{
|
|
title: 'Descriptions physiques',
|
|
section: 'physical',
|
|
placeholder: 'Nouvelle Description Physique',
|
|
icon: faRuler,
|
|
},
|
|
{
|
|
title: 'Descriptions psychologiques',
|
|
section: 'psychological',
|
|
placeholder: 'Nouvelle Description Psychologique',
|
|
icon: faBrain,
|
|
},
|
|
{
|
|
title: 'Relations',
|
|
section: 'relations',
|
|
placeholder: 'Nouveau Nom de Relation',
|
|
icon: faUsers,
|
|
},
|
|
{
|
|
title: 'Compétences',
|
|
section: 'skills',
|
|
placeholder: 'Nouvelle Compétence',
|
|
icon: faWrench,
|
|
},
|
|
{
|
|
title: 'Faiblesses',
|
|
section: 'weaknesses',
|
|
placeholder: 'Nouvelle Faiblesse',
|
|
icon: faExclamationTriangle,
|
|
},
|
|
{
|
|
title: 'Forces',
|
|
section: 'strengths',
|
|
placeholder: 'Nouvelle Force',
|
|
icon: faShieldAlt,
|
|
},
|
|
{
|
|
title: 'Objectifs',
|
|
section: 'goals',
|
|
placeholder: 'Nouvel Objectif',
|
|
icon: faBullseye,
|
|
},
|
|
{
|
|
title: 'Motivations',
|
|
section: 'motivations',
|
|
placeholder: 'Nouvelle Motivation',
|
|
icon: faFire,
|
|
},
|
|
];
|