+
-
+
+
+
+
+
+
+
+
+
+ Filtering…
+
+
+ Booting Pokédex…
+
+
+
+
{{ loadError }}
+
+
+
+
+ No Pokémon found.
+
+
+
+
+
+
+
diff --git a/src/components/PokemonCard.vue b/src/components/PokemonCard.vue
new file mode 100644
index 0000000..71e8474
--- /dev/null
+++ b/src/components/PokemonCard.vue
@@ -0,0 +1,45 @@
+
+
+
diff --git a/src/components/PokemonModal.vue b/src/components/PokemonModal.vue
new file mode 100644
index 0000000..e0e650d
--- /dev/null
+++ b/src/components/PokemonModal.vue
@@ -0,0 +1,121 @@
+
+
+
diff --git a/src/composables/useFavorites.ts b/src/composables/useFavorites.ts
new file mode 100644
index 0000000..89a28a2
--- /dev/null
+++ b/src/composables/useFavorites.ts
@@ -0,0 +1,38 @@
+import { ref, watch } from "vue"
+
+// Favorited dex ids, persisted to localStorage. Module-level singleton so every
+// component shares one reactive source of truth.
+
+const KEY = "pokedex:favorites"
+
+function load(): number[] {
+ try {
+ const raw = localStorage.getItem(KEY)
+ return raw ? (JSON.parse(raw) as number[]) : []
+ } catch {
+ return []
+ }
+}
+
+const favorites = ref