Navigation par barre du bas + gabarits de jeux natifs
Build and Publish Docker Image / build-and-push-image (push) Successful in 1m0s

Navigation :
- Suppression du menu hamburger, remplacé par le logo de l'app dans l'en-tête
- Barre du bas à 5 onglets : Accueil, Mes jeux, Parties, Stats, Joueurs
- Menu profil sur l'avatar (haut-droite) : profil/switch, Emplacements,
  Jeux importés, Paramètres
- Nouvelle page "Mes jeux" (/jeux) : bibliothèque de tous les jeux

Format d'import enrichi + gabarits :
- Champ icon (lucide) au niveau du jeu, et icon/color sur les catégories
- Gabarits JSON des 5 jeux natifs dans public/game-templates/ (référence,
  au format d'import) + doc à jour

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Zed
2026-07-12 21:33:19 +02:00
parent 90fba52a92
commit c96a1627ec
17 changed files with 356 additions and 182 deletions
+20
View File
@@ -0,0 +1,20 @@
{
"schemaVersion": 1,
"id": "azul",
"name": "Azul",
"minPlayers": 2,
"maxPlayers": 4,
"scoreType": "positive",
"scoreFormula": { "strategy": "sum_rounds" },
"description": "Placez des tuiles pour marquer un maximum de points.",
"icon": "Palette",
"colors": { "primary": "#005b8f" },
"options": [
{
"id": "variants",
"label": "Variante plateau gris",
"type": "boolean",
"defaultValue": false
}
]
}
+27
View File
@@ -0,0 +1,27 @@
{
"schemaVersion": 1,
"id": "cabo",
"name": "Cabo",
"minPlayers": 2,
"maxPlayers": 5,
"scoreType": "negative",
"scoreFormula": {
"strategy": "sum_rounds_with_reset",
"resetThreshold": 100,
"resetTo": 50,
"oncePerPlayer": true
},
"targetScore": { "type": "fixed", "value": 100 },
"targetScoreCondition": "reaches",
"description": "Trouvez la licorne. La partie se termine si on atteint ou dépasse 100 points. Tomber pile sur 100 fait redescendre le score à 50 (une fois par joueur).",
"icon": "Ghost",
"colors": { "primary": "#6e1d5a" },
"options": [
{
"id": "kamikaze",
"label": "Règle Kamikaze (2 cartes 13 + 2 cartes 12)",
"type": "boolean",
"defaultValue": true
}
]
}
+21
View File
@@ -0,0 +1,21 @@
{
"schemaVersion": 1,
"id": "harmonie",
"name": "Harmonies",
"minPlayers": 1,
"maxPlayers": 4,
"scoreType": "positive",
"scoreFormula": { "strategy": "sum_rounds" },
"fixedRounds": 1,
"description": "Créez des paysages pour accueillir des animaux.",
"icon": "TreePine",
"colors": { "primary": "#065f46" },
"scoringCategories": [
{ "id": "arbres", "label": "Arbres", "icon": "TreePine", "color": "#16a34a" },
{ "id": "montagnes", "label": "Montagnes", "icon": "Mountain", "color": "#64748b" },
{ "id": "champs", "label": "Champs", "icon": "Wheat", "color": "#d97706" },
{ "id": "batiments", "label": "Bâtiments", "icon": "Building2", "color": "#dc2626" },
{ "id": "eau", "label": "Rivière", "icon": "Waves", "color": "#0ea5e9" },
{ "id": "animaux", "label": "Animaux", "icon": "Rabbit", "color": "#a16207" }
]
}
+38
View File
@@ -0,0 +1,38 @@
{
"schemaVersion": 1,
"id": "odin_cards",
"name": "Odin",
"minPlayers": 2,
"maxPlayers": 6,
"scoreType": "negative",
"scoreFormula": { "strategy": "sum_rounds" },
"targetScore": {
"type": "fromOption",
"optionId": "target_score",
"customSentinel": "custom",
"customOptionId": "custom_target_score"
},
"targetScoreCondition": "reaches",
"description": "Videz votre main le plus vite possible. Un point par carte restante. La partie s'arrête quand le score cible est atteint, le plus petit score gagne.",
"icon": "Sword",
"colors": { "primary": "#c2410c" },
"options": [
{
"id": "target_score",
"label": "Score de fin de partie",
"type": "select",
"defaultValue": "15",
"options": [
{ "label": "Partie courte (15 pts)", "value": "15" },
{ "label": "Partie classique (20 pts)", "value": "20" },
{ "label": "Personnalisé", "value": "custom" }
]
},
{
"id": "custom_target_score",
"label": "Score personnalisé",
"type": "number",
"defaultValue": 25
}
]
}
+14
View File
@@ -0,0 +1,14 @@
{
"schemaVersion": 1,
"id": "skyjo",
"name": "Skyjo",
"minPlayers": 2,
"maxPlayers": 8,
"scoreType": "negative",
"scoreFormula": { "strategy": "sum_rounds" },
"targetScore": { "type": "fixed", "value": 100 },
"targetScoreCondition": "reaches",
"description": "Remplacez vos cartes pour avoir le moins de points possible. La partie s'arrête quand un joueur dépasse 100 points.",
"icon": "Layers",
"colors": { "primary": "#0f766e" }
}