├── .env.example
├── .czrc
├── tests
├── setupTests.ts
└── unit
│ └── components
│ ├── skeletons
│ └── pokemon-card.test.tsx
│ ├── pokemon-card
│ └── pokemon-card.test.tsx
│ └── pokemon-list
│ └── pokemon-list.test.tsx
├── .commitlintrc.json
├── src
├── components
│ ├── pokemon-card
│ │ ├── index.ts
│ │ └── pokemon-card.tsx
│ ├── pokemon-list
│ │ ├── index.ts
│ │ └── pokemon-list.tsx
│ └── skeletons
│ │ ├── index.ts
│ │ └── pokemon-card.tsx
├── styles
│ └── globals.css
├── types
│ └── pokemon.ts
├── lib
│ └── apollo.ts
├── pages
│ ├── _document.tsx
│ ├── _app.tsx
│ └── pokemons.tsx
└── assets
│ └── pokemons
│ ├── 132.svg
│ ├── 100.svg
│ ├── 101.svg
│ ├── 43.svg
│ ├── 11.svg
│ ├── 137.svg
│ ├── 69.svg
│ ├── 70.svg
│ ├── 54.svg
│ ├── 113.svg
│ ├── 14.svg
│ ├── 147.svg
│ ├── 50.svg
│ ├── 61.svg
│ ├── 81.svg
│ ├── 60.svg
│ ├── 116.svg
│ ├── 39.svg
│ ├── 120.svg
│ ├── 151.svg
│ └── 40.svg
├── .husky
├── pre-push
├── pre-commit
└── commit-msg
├── .prettierrc.json
├── public
└── screenshot-1.png
├── .lintstagedrc.json
├── postcss.config.js
├── .prettierignore
├── .eslintignore
├── next-env.d.ts
├── tailwind.config.js
├── next.config.mjs
├── docker-compose.yml
├── .editorconfig
├── .gitignore
├── README.md
├── .eslintrc.json
├── jest.config.ts
├── tsconfig.json
├── .github
└── workflows
│ └── main.yml
├── LICENSE
└── package.json
/.env.example:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.czrc:
--------------------------------------------------------------------------------
1 | {
2 | "path": "cz-conventional-changelog"
3 | }
--------------------------------------------------------------------------------
/tests/setupTests.ts:
--------------------------------------------------------------------------------
1 | import '@testing-library/jest-dom/extend-expect'
2 |
--------------------------------------------------------------------------------
/.commitlintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["@commitlint/config-conventional"]
3 | }
--------------------------------------------------------------------------------
/src/components/pokemon-card/index.ts:
--------------------------------------------------------------------------------
1 | export { PokemonCard } from './pokemon-card'
2 |
--------------------------------------------------------------------------------
/src/components/pokemon-list/index.ts:
--------------------------------------------------------------------------------
1 | export { PokemonList } from './pokemon-list'
2 |
--------------------------------------------------------------------------------
/src/components/skeletons/index.ts:
--------------------------------------------------------------------------------
1 | export { PokemonCardSkeleton } from './pokemon-card'
2 |
--------------------------------------------------------------------------------
/.husky/pre-push:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | npm run test
5 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | npx lint-staged
5 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "semi": false,
4 | "trailingComma": "none"
5 | }
--------------------------------------------------------------------------------
/public/screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luas10c/poketruco-nextjs/HEAD/public/screenshot-1.png
--------------------------------------------------------------------------------
/.lintstagedrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "*.t(s|sx)": [
3 | "eslint --fix",
4 | "npm run test:staging"
5 | ]
6 | }
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | autoprefixer: {},
4 | tailwindcss: {}
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . "$(dirname -- "$0")/_/husky.sh"
3 |
4 | npx --no -- commitlint --edit "\${1}"
5 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # node_modules
2 | node_modules
3 |
4 | # tests
5 | coverage
6 |
7 | # vscode files
8 | .vscode
9 |
10 | # next files
11 | .next
--------------------------------------------------------------------------------
/src/styles/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | html,
6 | body,
7 | #__next {
8 | min-height: 100vh;
9 | }
10 |
--------------------------------------------------------------------------------
/src/types/pokemon.ts:
--------------------------------------------------------------------------------
1 | export interface IPokemon {
2 | id: number
3 | name: string
4 | type: 'fire' | 'grass/poison'
5 | attack: number
6 | health: number
7 | }
8 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | # node_modules
2 | node_modules
3 |
4 | # tests
5 | coverage
6 |
7 | # vscode files
8 | .vscode
9 |
10 | # next files
11 | .next
12 |
13 | # jest files
14 | jest.config.ts
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/src/lib/apollo.ts:
--------------------------------------------------------------------------------
1 | import { ApolloClient, InMemoryCache } from '@apollo/client'
2 |
3 | export const apollo = new ApolloClient({
4 | uri: 'http://localhost:4000',
5 | cache: new InMemoryCache({
6 | addTypename: false
7 | })
8 | })
9 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import('tailwindcss').Config}
3 | */
4 | module.exports = {
5 | content: ['src/components/**/*.tsx', 'src/pages/**/*.tsx'],
6 | theme: {
7 | extend: {}
8 | },
9 | plugins: []
10 | }
11 |
--------------------------------------------------------------------------------
/next.config.mjs:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import('next').NextConfig}
3 | **/
4 | export default {
5 | reactStrictMode: true,
6 | images: {
7 | domains: []
8 | },
9 | async redirects() {
10 | return []
11 | },
12 | output: 'standalone'
13 | }
14 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | nodejs:
4 | container_name: nodejs
5 | image: node:16-alpine
6 | working_dir: /usr/app
7 | volumes:
8 | - .:/usr/app
9 | ports:
10 | - 8000:3000
11 | restart: always
12 | command: npm run dev
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: https://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | [*]
7 | indent_style = space
8 | indent_size = 2
9 | end_of_line = lf
10 | charset = utf-8
11 | trim_trailing_whitespace = false
12 | insert_final_newline = false
--------------------------------------------------------------------------------
/src/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import { Head, Html, Main, NextScript } from 'next/document'
2 |
3 | const Document = () => {
4 | return (
5 |
6 |
8 |
9 |
10 |
11 |
12 | )
13 | }
14 |
15 | export default Document
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # node_modules
2 | node_modules
3 |
4 | # env files
5 | .env*
6 | !.env.example
7 |
8 | # tests
9 | coverage
10 |
11 | # next files
12 | .next
13 |
14 | # vscode files
15 | .vscode
16 |
17 | # typescript
18 | tsconfig.tsbuildinfo
19 |
20 | # package-lock.json
21 | package-lock.json
22 |
23 | # yarn files
24 | yarn-*
--------------------------------------------------------------------------------
/tests/unit/components/skeletons/pokemon-card.test.tsx:
--------------------------------------------------------------------------------
1 | import { screen, render } from '@testing-library/react'
2 |
3 | import { PokemonCardSkeleton } from '#/components/skeletons'
4 |
5 | describe('PokemonCard Tests', () => {
6 | it('renders correctly', () => {
7 | render()
8 |
9 | expect(screen.getByText(/carregando/i)).toBeInTheDocument()
10 | })
11 | })
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # O que é?
4 |
5 | Jogo de truco com cartas de pokémons
6 |
7 | ### Como funciona?
8 |
9 | Para começar a jogar, é necessário ter ```4 pessoas```, cada pessoa recebe ao entrar no jogo ```3 cartas``` de pokémons aleatórias.
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import type { AppProps } from 'next/app'
2 | import { ApolloProvider } from '@apollo/client'
3 |
4 | import { apollo } from '#/lib/apollo'
5 |
6 | import '../styles/globals.css'
7 |
8 | const App = (props: AppProps) => {
9 | const { Component, pageProps } = props
10 |
11 | return (
12 |
13 |
14 |
15 | )
16 | }
17 |
18 | export default App
19 |
--------------------------------------------------------------------------------
/src/components/skeletons/pokemon-card.tsx:
--------------------------------------------------------------------------------
1 | import { motion } from 'framer-motion'
2 |
3 | export const PokemonCardSkeleton = () => {
4 | return (
5 |
11 | Carregando...
12 |
13 | )
14 | }
15 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "node": true,
4 | "browser": true,
5 | "jest": true
6 | },
7 | "extends": ["next"],
8 | "plugins": ["@typescript-eslint", "prettier"],
9 | "rules": {
10 | "prettier/prettier": "error",
11 | "comma-dangle": ["error", "never"],
12 | "@typescript-eslint/no-unused-vars": ["error"],
13 | "import/no-anonymous-default-export": [
14 | "error",
15 | {
16 | "allowArray": true,
17 | "allowObject": true
18 | }
19 | ]
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/jest.config.ts:
--------------------------------------------------------------------------------
1 | import nextJest from 'next/jest'
2 |
3 | const createJestConfig = nextJest({
4 | // Provide the path to your Next.js app to load next.config.js and .env files in your test environment
5 | dir: './'
6 | })
7 |
8 | // Add any custom config to be passed to Jest
9 | const customJestConfig = {
10 | setupFilesAfterEnv: ['/tests/setupTests.ts'],
11 | moduleNameMapper: {
12 | '^#/(.*)/(.*)': '/src/$1/$2'
13 | },
14 | testEnvironment: 'jest-environment-jsdom'
15 | }
16 |
17 | export default createJestConfig(customJestConfig)
18 |
--------------------------------------------------------------------------------
/tests/unit/components/pokemon-card/pokemon-card.test.tsx:
--------------------------------------------------------------------------------
1 | import { screen, render } from '@testing-library/react'
2 |
3 | import { PokemonCard } from '#/components/pokemon-card'
4 |
5 | describe('PokemonCard Tests', () => {
6 | it('renders correctly', () => {
7 | render(
8 |
17 | )
18 |
19 | expect(screen.getByText(/bulbasaur/i)).toBeInTheDocument()
20 | })
21 | })
22 |
--------------------------------------------------------------------------------
/src/pages/pokemons.tsx:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from 'react'
2 |
3 | import { PokemonList } from '#/components/pokemon-list'
4 |
5 | const Pokemons = () => {
6 | const [pokemons, setPokemons] = useState([])
7 | const [loading, setLoading] = useState(true)
8 |
9 | useEffect(() => {
10 | fetch('/pokemons.json')
11 | .then((response) => response.json())
12 | .then((data) => {
13 | setPokemons(data)
14 | })
15 | .finally(() => setLoading(false))
16 | }, [])
17 |
18 | return (
19 |
22 | )
23 | }
24 |
25 | export default Pokemons
26 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "target": "es5",
5 | "lib": ["dom", "dom.iterable", "esnext"],
6 | "allowJs": true,
7 | "skipLibCheck": true,
8 | "strict": false,
9 | "removeComments": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "noEmit": true,
12 | "incremental": true,
13 | "esModuleInterop": true,
14 | "noImplicitAny": true,
15 | "noUnusedParameters": true,
16 | "module": "esnext",
17 | "resolveJsonModule": true,
18 | "moduleResolution": "node",
19 | "isolatedModules": true,
20 | "jsx": "preserve",
21 | "paths": {
22 | "#/*": ["src/*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------
/src/components/pokemon-list/pokemon-list.tsx:
--------------------------------------------------------------------------------
1 | import { PokemonCardSkeleton } from '../skeletons'
2 | import { PokemonCard } from '#/components/pokemon-card'
3 |
4 | import type { IPokemon } from '#/types/pokemon'
5 |
6 | interface Props {
7 | pokemons: IPokemon[]
8 | loading?: boolean
9 | }
10 |
11 | export const PokemonList = (props: Props) => {
12 | const { pokemons, loading } = props
13 |
14 | return (
15 |
16 |
Lista de Pokemons
17 | {loading && (
18 |
24 | )}
25 |
26 | {pokemons.map((pokemon) => {
27 | return
28 | })}
29 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3 |
4 | name: Node.js CI
5 |
6 | on:
7 | push:
8 | branches: [ "main", "develop" ]
9 | pull_request:
10 | branches: [ "main", "develop" ]
11 |
12 | jobs:
13 | build:
14 |
15 | runs-on: ubuntu-latest
16 |
17 | strategy:
18 | matrix:
19 | node-version: [16.14.x]
20 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
21 |
22 | steps:
23 | - uses: actions/checkout@v3
24 | - name: Use Node.js ${{ matrix.node-version }}
25 | uses: actions/setup-node@v3
26 | with:
27 | node-version: ${{ matrix.node-version }}
28 | cache: 'npm'
29 | - run: npm install
30 | - run: npm run type-check
31 | - run: npm run lint
32 | - run: npm run build --if-present
33 | - run: npm test
--------------------------------------------------------------------------------
/tests/unit/components/pokemon-list/pokemon-list.test.tsx:
--------------------------------------------------------------------------------
1 | import { screen, render } from '@testing-library/react'
2 |
3 | import { PokemonList } from '#/components/pokemon-list'
4 |
5 | describe('PokemonList Tests', () => {
6 | it('renders correctly', () => {
7 | render(
8 |
27 | )
28 |
29 | expect(screen.getByText(/bulbasaur/i)).toBeInTheDocument()
30 | expect(screen.getByText(/ivysaur/i)).toBeInTheDocument()
31 | })
32 |
33 | it('should be loading', () => {
34 | render()
35 |
36 | expect(screen.getAllByText(/carregando/i)[0]).toBeInTheDocument()
37 | })
38 | })
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2022 Scott Chacon and others
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pokemons",
3 | "description": "",
4 | "scripts": {
5 | "dev": "next",
6 | "start": "next start",
7 | "lint": "next lint",
8 | "build": "next build",
9 | "test": "jest --passWithNoTests --bail",
10 | "test:coverage": "jest --coverage --onlyChanged",
11 | "test:watch": "jest --watch",
12 | "test:staging": "jest --passWithNoTests --onlyChanged --bail",
13 | "telemetry:disable": "next telemetry disable",
14 | "telemetry:enable": "next telemetry enable",
15 | "type-check": "tsc --project tsconfig.json",
16 | "husky:install": "husky install",
17 | "commit": "cz"
18 | },
19 | "dependencies": {
20 | "@apollo/client": "^3.6.9",
21 | "classnames": "^2.3.1",
22 | "framer-motion": "^6.5.1",
23 | "graphql": "^16.5.0",
24 | "next": "^12.2.3",
25 | "react": "^18.2.0",
26 | "react-dom": "^18.2.0"
27 | },
28 | "devDependencies": {
29 | "@commitlint/cli": "^17.0.3",
30 | "@commitlint/config-conventional": "^17.0.3",
31 | "@testing-library/jest-dom": "^5.16.4",
32 | "@testing-library/react": "^13.3.0",
33 | "@testing-library/user-event": "^14.3.0",
34 | "@types/jest": "^28.1.6",
35 | "@types/node": "^18.6.3",
36 | "@types/react": "^18.0.15",
37 | "@types/react-dom": "^18.0.6",
38 | "@typescript-eslint/eslint-plugin": "^5.31.0",
39 | "autoprefixer": "^10.4.8",
40 | "commitizen": "^4.2.5",
41 | "eslint": "^8.20.0",
42 | "eslint-config-next": "^12.2.3",
43 | "eslint-plugin-prettier": "^4.2.1",
44 | "husky": "^8.0.1",
45 | "jest": "^28.1.3",
46 | "jest-environment-jsdom": "^28.1.3",
47 | "lint-staged": "^13.0.3",
48 | "postcss": "^8.4.14",
49 | "prettier": "^2.7.1",
50 | "tailwindcss": "^3.1.7",
51 | "typescript": "^4.7.4"
52 | },
53 | "engines": {
54 | "node": "^16.14.0"
55 | },
56 | "license": "MIT"
57 | }
58 |
--------------------------------------------------------------------------------
/src/components/pokemon-card/pokemon-card.tsx:
--------------------------------------------------------------------------------
1 | import Image from 'next/image'
2 | import classNames from 'classnames'
3 | import { motion } from 'framer-motion'
4 |
5 | import type { IPokemon } from '#/types/pokemon'
6 |
7 | interface Props {
8 | pokemon: IPokemon
9 | }
10 |
11 | const colors: Record = {
12 | fire: 'bg-red-400',
13 | water: 'bg-cyan-400',
14 | grass: 'bg-lime-400',
15 | bug: 'bg-purple-400',
16 | normal: 'bg-zinc-400',
17 | electric: 'bg-yellow-400',
18 | ground: 'bg-orange-800',
19 | poison: 'bg-fuchsia-400',
20 | fairy: 'bg-rose-400',
21 | fighting: 'bg-amber-600',
22 | psychic: 'bg-indigo-400',
23 | rock: 'bg-blue-400',
24 | ghost: 'bg-gray-400',
25 | ice: 'bg-cyan-200',
26 | dragon: 'bg-orange-200'
27 | }
28 |
29 | export const PokemonCard = (props: Props) => {
30 | const { pokemon } = props
31 |
32 | const pokemon_type = pokemon.type.split('/')[0]
33 |
34 | return (
35 |
40 |
59 |
60 |
61 | {pokemon.name}
62 |
63 |
64 |
65 |
66 | {pokemon.health} Hp
67 |
68 |
69 |
70 |
71 | {pokemon.attack} At
72 |
73 |
74 |
75 |
76 |
77 | )
78 | }
79 |
--------------------------------------------------------------------------------
/src/assets/pokemons/132.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/100.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/101.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/43.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/11.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/137.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/69.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/70.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/54.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/113.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/14.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/147.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/50.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/61.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/81.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/60.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/116.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/39.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/120.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/151.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/pokemons/40.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------