diff --git a/docs/.vuepress/theme/components/MyMagicItems.vue b/docs/.vuepress/theme/components/MyMagicItems.vue
index 4f95719..26355c9 100644
--- a/docs/.vuepress/theme/components/MyMagicItems.vue
+++ b/docs/.vuepress/theme/components/MyMagicItems.vue
@@ -40,7 +40,7 @@
                   mdi-printer
                 
                 mdi-pencil
-                mdi-delete
+                mdi-delete
               
             
 
@@ -53,7 +53,7 @@
               
                 
{{ magicItem.title }}
                 mdi-pencil Modifier
-                mdi-delete Supprimer
+                mdi-delete Supprimer
               
               
             
@@ -117,6 +117,11 @@ export default {
     },
     onClickRow (row, item) {
       item.expand(!item.isExpanded)
+    },
+    removeMagicItem (magicItem) {
+      this.$store.commit('myMagicItems/removeMagicItem', magicItem)
+      this.$store.commit('setSnackbarText', "L'objet magique " + magicItem.title + " a été supprimé de votre bibliothèque")
+      this.$store.commit('setIsOpenSnackbar', true)
     }
   }
 }
diff --git a/docs/.vuepress/theme/components/MyMonsters.vue b/docs/.vuepress/theme/components/MyMonsters.vue
index bec0f22..aa606ec 100644
--- a/docs/.vuepress/theme/components/MyMonsters.vue
+++ b/docs/.vuepress/theme/components/MyMonsters.vue
@@ -48,7 +48,7 @@
                   mdi-printer
                 
                 mdi-pencil
-                mdi-delete
+                mdi-delete
               
             
 
@@ -61,7 +61,7 @@
               
                 
{{ monster.title }}
                 mdi-pencil Modifier
-                mdi-delete Supprimer
+                mdi-delete Supprimer
               
               
             
@@ -131,6 +131,11 @@ export default {
     },
     onClickRow (row, item) {
       item.expand(!item.isExpanded)
+    },
+    removeMonster (monster) {
+      this.$store.commit('myMonsters/removeMonster', monster)
+      this.$store.commit('setSnackbarText', "Le monstre " + monster.title + " a été supprimé de votre bestiaire")
+      this.$store.commit('setIsOpenSnackbar', true)
     }
   }
 }
diff --git a/docs/.vuepress/theme/components/MySpells.vue b/docs/.vuepress/theme/components/MySpells.vue
index 4b5dea3..0438ee1 100644
--- a/docs/.vuepress/theme/components/MySpells.vue
+++ b/docs/.vuepress/theme/components/MySpells.vue
@@ -80,7 +80,7 @@
                   mdi-printer
                 
                 mdi-pencil
-                mdi-delete
+                mdi-delete
               
             
 
@@ -96,7 +96,7 @@
                   
                     
{{ spell.title }}
                     mdi-pencil Modifier
-                    mdi-delete Supprimer
+                    mdi-delete Supprimer
                   
                   
                 
@@ -192,6 +192,11 @@ export default {
     },
     onClickRow (row, item) {
       item.expand(!item.isExpanded)
+    },
+    removeSpell (spell) {
+      this.$store.commit('mySpells/removeSpell', spell)
+      this.$store.commit('setSnackbarText', "Le sort " + spell.title + " a été supprimé de votre grimoire")
+      this.$store.commit('setIsOpenSnackbar', true)
     }
   },
 }
diff --git a/docs/.vuepress/theme/layouts/CreateMagicItemLayout.vue b/docs/.vuepress/theme/layouts/CreateMagicItemLayout.vue
index ffc65b6..434c356 100644
--- a/docs/.vuepress/theme/layouts/CreateMagicItemLayout.vue
+++ b/docs/.vuepress/theme/layouts/CreateMagicItemLayout.vue
@@ -144,17 +144,26 @@ export default {
 
     upload (e) {
       let file = e.target.files[0]
+      if (!file) {
+        return
+      }
       let reader = new FileReader()
       let self = this
 
       reader.onload = function() {
         let result = JSON.parse(reader.result)
-        if (result.pid == 'magicItem') {
+        if (result.pid == 'magicitem') {
           self.magicItem = result
+          self.$store.commit('setSnackbarText', "L'objet magique " + self.magicItem.title + " a été chargé")
+          self.$store.commit('setIsOpenSnackbar', true)
+        } else {
+          self.$store.commit('setSnackbarText', "Le fichier est invalide")
+          self.$store.commit('setIsOpenSnackbar', true)
         }
       }
 
       reader.readAsText(file)
+      this.$refs.uploader.value = ''
     },
 
     onUploadClick () {
@@ -173,15 +182,19 @@ export default {
     toggleMagicItemInTreasureChest () {
       if (this.isMagicItemInTreasureChest) {
         this.$store.commit('myMagicItems/removeMagicItem', this.magicItem)
+        this.$store.commit('setSnackbarText', "L'objet magique " + this.magicItem.title + " a été supprimé de votre bibliothèque")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('myMagicItems/addMagicItem', this.magicItem)
+        this.$store.commit('setSnackbarText', "L'objet magique " + this.magicItem.title + " a été ajouté à votre bibliothèque")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     },
 
     updateMagicItemInTreasureChest () {
       if (this.isMagicItemInTreasureChest) {
         this.$store.commit('myMagicItems/updateMagicItem', this.magicItem)
-        this.$store.commit('setSnackbarText', "L'objet a été mis à jour dans la bibliothèque")
+        this.$store.commit('setSnackbarText', "L'objet magique a été mis à jour dans votre bibliothèque")
         this.$store.commit('setIsOpenSnackbar', true)
       }
     },
diff --git a/docs/.vuepress/theme/layouts/CreateMonsterLayout.vue b/docs/.vuepress/theme/layouts/CreateMonsterLayout.vue
index 91c24c6..c00739b 100644
--- a/docs/.vuepress/theme/layouts/CreateMonsterLayout.vue
+++ b/docs/.vuepress/theme/layouts/CreateMonsterLayout.vue
@@ -347,6 +347,9 @@ export default {
 
     upload (e) {
       let file = e.target.files[0]
+      if (!file) {
+        return
+      }
       let reader = new FileReader()
       let self = this
 
@@ -354,10 +357,16 @@ export default {
         let result = JSON.parse(reader.result)
         if (result.pid == 'monster') {
           self.monster = result
+          self.$store.commit('setSnackbarText', "Le monstre " + self.monster.title + " a été chargé")
+          self.$store.commit('setIsOpenSnackbar', true)
+        } else {
+          self.$store.commit('setSnackbarText', "Le fichier est invalide")
+          self.$store.commit('setIsOpenSnackbar', true)
         }
       }
 
       reader.readAsText(file)
+      this.$refs.uploader.value = ''
     },
 
     onUploadClick () {
@@ -376,8 +385,12 @@ export default {
     toggleMonsterInBestiary () {
       if (this.isMonsterInBestiary) {
         this.$store.commit('myMonsters/removeMonster', this.monster)
+        this.$store.commit('setSnackbarText', "Le monstre " + this.monster.title + " a été supprimé de votre bestiaire")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('myMonsters/addMonster', this.monster)
+        this.$store.commit('setSnackbarText', "Le monstre " + this.monster.title + " a été ajouté à votre bestiaire")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     },
 
diff --git a/docs/.vuepress/theme/layouts/CreateSpellLayout.vue b/docs/.vuepress/theme/layouts/CreateSpellLayout.vue
index ba8859e..1b2dc88 100644
--- a/docs/.vuepress/theme/layouts/CreateSpellLayout.vue
+++ b/docs/.vuepress/theme/layouts/CreateSpellLayout.vue
@@ -187,6 +187,9 @@ export default {
 
     upload (e) {
       let file = e.target.files[0]
+      if (!file) {
+        return
+      }
       let reader = new FileReader()
       let self = this
 
@@ -194,10 +197,16 @@ export default {
         let result = JSON.parse(reader.result)
         if (result.pid == 'spell') {
           self.spell = result
+          self.$store.commit('setSnackbarText', "Le sort " + self.spell.title + " a été chargé")
+          self.$store.commit('setIsOpenSnackbar', true)
+        } else {
+          self.$store.commit('setSnackbarText', "Le fichier est invalide")
+          self.$store.commit('setIsOpenSnackbar', true)
         }
       }
 
       reader.readAsText(file)
+      this.$refs.uploader.value = ''
     },
 
     onUploadClick () {
@@ -216,8 +225,12 @@ export default {
     toggleSpellInSpellBook () {
       if (this.isSpellInSpellBook) {
         this.$store.commit('mySpells/removeSpell', this.spell)
+        this.$store.commit('setSnackbarText', "Le sort " + this.spell.title + " a été supprimé de votre grimoire")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('mySpells/addSpell', this.spell)
+        this.$store.commit('setSnackbarText', "Le sort " + this.spell.title + " a été ajouté à votre grimoire")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     },
 
diff --git a/docs/.vuepress/theme/layouts/GlobalLayout.vue b/docs/.vuepress/theme/layouts/GlobalLayout.vue
index 7f7b3ee..c588ded 100644
--- a/docs/.vuepress/theme/layouts/GlobalLayout.vue
+++ b/docs/.vuepress/theme/layouts/GlobalLayout.vue
@@ -41,7 +41,7 @@
 
     
       {{ $store.state.snackbarText }}
-      
+      
         Fermer
       
     
diff --git a/docs/.vuepress/theme/layouts/MagicItemLayout.vue b/docs/.vuepress/theme/layouts/MagicItemLayout.vue
index f1b4caa..81aaaeb 100644
--- a/docs/.vuepress/theme/layouts/MagicItemLayout.vue
+++ b/docs/.vuepress/theme/layouts/MagicItemLayout.vue
@@ -52,8 +52,12 @@ export default {
     toggleMagicItemInTreasureChest () {
       if (this.isMagicItemInTreasureChest) {
         this.$store.commit('myMagicItems/removeMagicItem', this.$page)
+        this.$store.commit('setSnackbarText', "L'objet magique " + this.$page.title + " a été supprimé de votre bibliothèque")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('myMagicItems/addMagicItem', this.$page)
+        this.$store.commit('setSnackbarText', "L'objet magique " + this.$page.title + " a été ajouté à votre bibliothèque")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     }
   },
diff --git a/docs/.vuepress/theme/layouts/MagicItemsLayout.vue b/docs/.vuepress/theme/layouts/MagicItemsLayout.vue
index bdbeb19..2a8196b 100644
--- a/docs/.vuepress/theme/layouts/MagicItemsLayout.vue
+++ b/docs/.vuepress/theme/layouts/MagicItemsLayout.vue
@@ -193,8 +193,12 @@ export default {
     toggleItemInTreasureChest (magicItem) {
       if (this.isItemInTreasureChest(magicItem)) {
         this.$store.commit('myMagicItems/removeMagicItem', magicItem)
+        this.$store.commit('setSnackbarText', "L'objet magique " + magicItem.title + " a été supprimé de votre bibliothèque")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('myMagicItems/addMagicItem', magicItem)
+        this.$store.commit('setSnackbarText', "L'objet magique " + magicItem.title + " a été ajouté à votre bibliothèque")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     },
 
diff --git a/docs/.vuepress/theme/layouts/MonsterLayout.vue b/docs/.vuepress/theme/layouts/MonsterLayout.vue
index 61be079..092da9f 100644
--- a/docs/.vuepress/theme/layouts/MonsterLayout.vue
+++ b/docs/.vuepress/theme/layouts/MonsterLayout.vue
@@ -52,8 +52,12 @@ export default {
     toggleMonsterInBestiary () {
       if (this.isMonsterInBestiary) {
         this.$store.commit('myMonsters/removeMonster', this.$page)
+        this.$store.commit('setSnackbarText', "Le monstre " + this.$page.title + " a été supprimé de votre bestiaire")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('myMonsters/addMonster', this.$page)
+        this.$store.commit('setSnackbarText', "Le monstre " + this.$page.title + " a été ajouté à votre bestiaire")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     }
   },
diff --git a/docs/.vuepress/theme/layouts/MonstersLayout.vue b/docs/.vuepress/theme/layouts/MonstersLayout.vue
index 55b87bc..2936c92 100644
--- a/docs/.vuepress/theme/layouts/MonstersLayout.vue
+++ b/docs/.vuepress/theme/layouts/MonstersLayout.vue
@@ -279,8 +279,12 @@ export default {
     toggleMonsterInBestiary (monster) {
       if (this.isMonsterInBestiary(monster)) {
         this.$store.commit('myMonsters/removeMonster', monster)
+        this.$store.commit('setSnackbarText', "Le monstre " + monster.title + " a été supprimé de votre bestiaire")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('myMonsters/addMonster', monster)
+        this.$store.commit('setSnackbarText', "Le monstre " + monster.title + " a été ajouté à votre bestiaire")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     },
 
diff --git a/docs/.vuepress/theme/layouts/MyMagicItemsLayout.vue b/docs/.vuepress/theme/layouts/MyMagicItemsLayout.vue
index 6b301bd..7c87aed 100644
--- a/docs/.vuepress/theme/layouts/MyMagicItemsLayout.vue
+++ b/docs/.vuepress/theme/layouts/MyMagicItemsLayout.vue
@@ -103,13 +103,11 @@ export default {
           if (result.notPrintedMagicItems) {
             self.$store.commit('myMagicItems/setNotPrintedMagicItems', result.notPrintedMagicItems)
           }
-          self.alertText = self.$store.state.myMagicItems.magicItems.length + " objets magiques inscrits dans la bibliothèque."
-          self.alertType = "success"
-          self.alertOpen = true
+          self.$store.commit('setSnackbarText', self.$store.state.myMagicItems.magicItems.length + " objets magiques inscrits dans votre bibliothèque")
+          self.$store.commit('setIsOpenSnackbar', true)
         } else {
-          self.alertText = "Le fichier est invalide."
-          self.alertType = "error"
-          self.alertOpen = true
+          self.$store.commit('setSnackbarText', "Le fichier est invalide")
+          self.$store.commit('setIsOpenSnackbar', true)
         }
       }
 
@@ -133,6 +131,8 @@ export default {
     confirmDeletion () {
       this.$store.commit('myMagicItems/resetMagicItems')
       this.confirmDeleteDialog = false
+      this.$store.commit('setSnackbarText', "Votre bibliothèque d'objets magiques a été effacée")
+      this.$store.commit('setIsOpenSnackbar', true)
     }
   },
 
diff --git a/docs/.vuepress/theme/layouts/MyMonstersLayout.vue b/docs/.vuepress/theme/layouts/MyMonstersLayout.vue
index eda6f5f..eba8d4e 100644
--- a/docs/.vuepress/theme/layouts/MyMonstersLayout.vue
+++ b/docs/.vuepress/theme/layouts/MyMonstersLayout.vue
@@ -102,13 +102,11 @@ export default {
           if (result.notPrintedMonsters) {
             self.$store.commit('myMonsters/setNotPrintedMonsters', result.notPrintedMonsters)
           }
-          self.alertText = self.$store.state.myMonsters.monsters.length + " monstres inscrits dans le bestiaire."
-          self.alertType = "success"
-          self.alertOpen = true
+          self.$store.commit('setSnackbarText', self.$store.state.myMonsters.monsters.length + " monstres inscrits dans votre bestiaire")
+          self.$store.commit('setIsOpenSnackbar', true)
         } else {
-          self.alertText = "Le fichier est invalide."
-          self.alertType = "error"
-          self.alertOpen = true
+          self.$store.commit('setSnackbarText', "Le fichier est invalide")
+          self.$store.commit('setIsOpenSnackbar', true)
         }
       }
 
@@ -132,6 +130,8 @@ export default {
     confirmDeletion () {
       this.$store.commit('myMonsters/resetMonsters')
       this.confirmDeleteDialog = false
+      this.$store.commit('setSnackbarText', "Votre bestiaire a été effacé")
+      this.$store.commit('setIsOpenSnackbar', true)
     }
   },
 
diff --git a/docs/.vuepress/theme/layouts/MySpellsLayout.vue b/docs/.vuepress/theme/layouts/MySpellsLayout.vue
index b6b561b..a726a77 100644
--- a/docs/.vuepress/theme/layouts/MySpellsLayout.vue
+++ b/docs/.vuepress/theme/layouts/MySpellsLayout.vue
@@ -107,13 +107,11 @@ export default {
           if (result.notPrintedSpells) {
             self.$store.commit('mySpells/setNotPrintedSpells', result.notPrintedSpells)
           }
-          self.alertText = self.$store.state.mySpells.spells.length + " sorts inscrits dans le grimoire."
-          self.alertType = "success"
-          self.alertOpen = true
+          self.$store.commit('setSnackbarText', self.$store.state.mySpells.spells.length + " sorts inscrits dans votre grimoire")
+          self.$store.commit('setIsOpenSnackbar', true)
         } else {
-          self.alertText = "Le fichier est invalide."
-          self.alertType = "error"
-          self.alertOpen = true
+          self.$store.commit('setSnackbarText', "Le fichier est invalide")
+          self.$store.commit('setIsOpenSnackbar', true)
         }
       }
 
@@ -137,6 +135,8 @@ export default {
     confirmDeletion () {
       this.$store.commit('mySpells/resetSpells')
       this.confirmDeleteDialog = false
+      this.$store.commit('setSnackbarText', "Votre grimoire a été effacé")
+      this.$store.commit('setIsOpenSnackbar', true)
     }
   },
 
diff --git a/docs/.vuepress/theme/layouts/SpellLayout.vue b/docs/.vuepress/theme/layouts/SpellLayout.vue
index 46df725..cc87076 100644
--- a/docs/.vuepress/theme/layouts/SpellLayout.vue
+++ b/docs/.vuepress/theme/layouts/SpellLayout.vue
@@ -52,8 +52,12 @@ export default {
     toggleSpellInSpellBook () {
       if (this.isSpellInSpellBook) {
         this.$store.commit('mySpells/removeSpell', this.$page)
+        this.$store.commit('setSnackbarText', "Le sort " + this.$page.title + " a été supprimé de votre grimoire")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('mySpells/addSpell', this.$page)
+        this.$store.commit('setSnackbarText', "Le sort " + this.$page.title + " a été ajouté à votre grimoire")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     }
   },
diff --git a/docs/.vuepress/theme/layouts/SpellsLayout.vue b/docs/.vuepress/theme/layouts/SpellsLayout.vue
index e76c688..af923d7 100644
--- a/docs/.vuepress/theme/layouts/SpellsLayout.vue
+++ b/docs/.vuepress/theme/layouts/SpellsLayout.vue
@@ -292,8 +292,12 @@ export default {
     toggleSpellInSpellBook (spell) {
       if (this.isSpellInSpellBook(spell)) {
         this.$store.commit('mySpells/removeSpell', spell)
+        this.$store.commit('setSnackbarText', "Le sort " + spell.title + " a été supprimé de votre grimoire")
+        this.$store.commit('setIsOpenSnackbar', true)
       } else {
         this.$store.commit('mySpells/addSpell', spell)
+        this.$store.commit('setSnackbarText', "Le sort " + spell.title + " a été ajouté à votre grimoire")
+        this.$store.commit('setIsOpenSnackbar', true)
       }
     },