[
  {
    "path": "Diversão/.eslintrc.cjs",
    "content": "module.exports = {\n  root: true,\n  env: { browser: true, es2020: true },\n  extends: [\n    'eslint:recommended',\n    'plugin:react/recommended',\n    'plugin:react/jsx-runtime',\n    'plugin:react-hooks/recommended',\n  ],\n  ignorePatterns: ['dist', '.eslintrc.cjs'],\n  parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },\n  settings: { react: { version: '18.2' } },\n  plugins: ['react-refresh'],\n  rules: {\n    'react-refresh/only-export-components': [\n      'warn',\n      { allowConstantExport: true },\n    ],\n  },\n}\n"
  },
  {
    "path": "Diversão/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "Diversão/README.md",
    "content": "# React + Vite\n\nThis template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.\n\nCurrently, two official plugins are available:\n\n- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh\n- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh\n"
  },
  {
    "path": "Diversão/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Vite + React</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.jsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "Diversão/package.json",
    "content": "{\n  \"name\": \"divers-o\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"vite build\",\n    \"lint\": \"eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@emotion/react\": \"^11.11.1\",\n    \"@emotion/styled\": \"^11.11.0\",\n    \"@mui/icons-material\": \"^5.14.3\",\n    \"@mui/material\": \"^5.14.3\",\n\n    \"bootstrap\": \"^5.3.1\",\n    \"json-server\": \"^0.17.3\",\n    \"prop-types\": \"^15.8.1\",\n    \"react\": \"^18.2.0\",\n    \"react-bootstrap\": \"^2.8.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-icons\": \"^4.10.1\",\n\n    \"react-router-dom\": \"^6.15.0\",\n    \"styled-components\": \"^6.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.2.15\",\n    \"@types/react-dom\": \"^18.2.7\",\n    \"@vitejs/plugin-react\": \"^4.0.3\",\n    \"eslint\": \"^8.45.0\",\n    \"eslint-plugin-react\": \"^7.32.2\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-react-refresh\": \"^0.4.3\",\n    \"vite\": \"^4.4.5\"\n  }\n}\n"
  },
  {
    "path": "Diversão/src/App.css",
    "content": "@import \"bootstrap/dist/css/bootstrap.min.css\";\n@import url(\"https://fonts.googleapis.com/css2?family=Roboto&display=swap\");\n"
  },
  {
    "path": "Diversão/src/App.jsx",
    "content": "import { BrowserRouter as Router, Route, Routes } from \"react-router-dom\";\n\nimport \"./App.css\";\nimport PaginaPrincipal from \"./pages/PaginaPrincipal/PaginaPrincipal\";\nimport PaginaDeCheckout from \"./pages/PaginaDeCheckout/PaginaDeCheckout\";\nimport PaginaDeProdutos from \"./pages/PaginaDeProdutos/PaginaDeProdutos\";\nimport Provider from \"./contexts/AppProvider\";\nimport ItensCarrinho from \"./components/ItensCarrinho/ItensCarrinho.component\";\n\nimport { PaginaSquad } from \"./pages/PaginaSquad/Index\";\nimport PaginaDeErro from \"./pages/PaginaDeErro/PaginaDeErro\";\nimport PaginaDoCarrinho from \"./pages/PaginaDoCarrinhoGlauton/PaginaDoCarrinho\";\n\nfunction App() {\n  return (\n    <div className=\"app\">\n      <Router>\n        <Provider>\n        <Routes>\n          <Route path=\"/\" element={<PaginaPrincipal />} />\n          <Route path=\"/produtos\" element={<PaginaDeProdutos />} />\n          <Route path=\"/carrinho\" element={<PaginaDoCarrinho />} />\n          <Route path=\"/checkout\" element={<PaginaDeCheckout />} />\n          <Route path=\"/squad\" element={<PaginaSquad />} />\n          <Route path=\"/*\" element={<PaginaDeErro />} />\n        </Routes>\n        <ItensCarrinho/>\n        </Provider>\n      </Router>\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "Diversão/src/components/BuscaProduto/BuscaProduto.component.jsx",
    "content": "/* eslint-disable react/prop-types */\n\nimport { StyledBuscaProduto } from \"./BuscaProduto.styled\"; \nimport SearchIcon from '@mui/icons-material/Search'; // Importe o ícone de pesquisa do Material-UI\n\nconst BuscaProduto = ({ searchTerm, onSearchChange }) => {\n  return (\n    <StyledBuscaProduto>\n      <input\n        type=\"text\"\n        placeholder=\"Busque o produto por nome\"\n        value={searchTerm}\n        onChange={onSearchChange}\n      />\n      <div className=\"search-icon\">\n        <SearchIcon />\n      </div>\n    </StyledBuscaProduto>\n  );\n};\n\nexport default BuscaProduto;"
  },
  {
    "path": "Diversão/src/components/BuscaProduto/BuscaProduto.styled.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const StyledBuscaProduto = styled.div`\n  display: flex;\n  align-items: center;\n  width: 70%;\n  margin: 0 auto;\n  position: relative;\n\n  input {\n    width: 100%;\n    padding: 14px;\n    font-size: 16px;\n    border: none;\n    outline: 2px solid #e5e5e5;\n    border-radius: 9px;\n  }\n\n  .search-icon {\n    position: absolute;\n    right: 0px;\n    top: 50%;\n    transform: translateY(-50%);\n    background-color: #ffc500;\n    border-radius: 0 9px 9px 0 ;\n    padding: 11px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .MuiSvgIcon-root {\n    color: white;\n  }\n`;"
  },
  {
    "path": "Diversão/src/components/Button/Button.component.jsx",
    "content": "import * as Styled from \"./Button.style\";\n\nexport const ButtonComponent = ({ type, text, onClick }) => {\n  return (\n    <Styled.ButtonWrapper>\n      {type === \"button\" && (\n        <Styled.Button type={type} onClick={onClick}>\n          {text}\n        </Styled.Button>\n      )}\n\n      {type === \"submit\" && (\n        <Styled.Button type={type} onClick={onClick}>\n          {text}\n        </Styled.Button>\n      )}\n    </Styled.ButtonWrapper>\n  );\n};\n\n"
  },
  {
    "path": "Diversão/src/components/Button/Button.style.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const ButtonWrapper = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: space-around;\n  background-color: green;\n  padding: 20px;\n`;\n\nexport const Button = styled.button`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n`;\n\n"
  },
  {
    "path": "Diversão/src/components/CardProduto/CardProduto.component.jsx",
    "content": "/* eslint-disable react/prop-types */\nimport { useContext } from \"react\";\nimport { StyledCardProduto, AddToCartButton } from \"./CardProduto.styled\";\nimport AppContext from \"../../contexts/AppContext\";\n\nconst CardProduto = ({ item }) => {\n  const { setCartItems } = useContext(AppContext);\n\n  // Função para adicionar o item ao\n  const adicionarAoCarrinho = () => {\n    // Construindo o objeto do novo item do carrinho\n    const novoItemCarrinho = {\n      produto_id: item.id,\n      nome: item.nome,\n      moeda: item.moeda,\n      preço: item.preço,\n      imagem: item.imagem,\n    };\n\n    // Fazendo uma requisição POST para adicionar o item ao carrinho\n    fetch(\"http://localhost:3000/carrinho\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify(novoItemCarrinho),\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        console.log(\"Item adicionado ao carrinho:\", data);\n        setCartItems(data);\n        // Atualizar o estado do carrinho automaticamente aqui\n\n        //** talvez vamos ter que criar um context ou deixar a função no app.jsx que encapsula tudo\n      })\n      .catch((error) => {\n        console.error(\"Erro ao adicionar item ao carrinho:\", error);\n      });\n  };\n\n  return (\n    <StyledCardProduto>\n      <div className=\"corner-badge\">#{item.id}</div>\n      <div className=\"container\">\n        {/* Exibição do nome */}\n        <span className=\"title\">{item.nome}</span>\n        {/* Exibição da imagem */}\n        <div className=\"image-container\">\n          <img src={item.imagem} alt={item.nome} loading=\"lazy\" />\n        </div>\n        {/* Exibição do preço */}\n        <div className=\"price-and-button\">\n          <span className=\"price\">\n            <span className=\"price-tittle\">preço:</span>\n            {item.moeda}\n            {item.preço}\n          </span>\n          <AddToCartButton className=\"bt\" onClick={adicionarAoCarrinho}>\n            Adicionar ao Carrinho\n          </AddToCartButton>\n        </div>\n      </div>\n    </StyledCardProduto>\n  );\n};\n\nexport default CardProduto;\n"
  },
  {
    "path": "Diversão/src/components/CardProduto/CardProduto.styled.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const StyledCardProduto = styled.div`\n  display: flex;\n  flex-direction: column;\n  width: 24%;\n  height:100%;\n  background-color: #ffffff;\n  border: none;\n  margin: 0 2px 15px 2px;\n  position: relative;\n\n  .container {\n    display: flex;\n    flex-direction: column;\n    padding: 20px;\n    justify-content: space-between; /* Adicione esta linha */\n  }\n\n  .price-and-button {\n    display: flex;\n    flex-direction: column; \n    align-items: flex-end; \n    gap: 10px;\n    width: 100%;\n  }\n\n  .image-container {\n    min-height: 65%;\n    width: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    margin-bottom: 5px;\n    flex: 1 1 auto;\n  }\n\n  div > img {\n    max-height: 90%;\n    max-width: 90%;\n    object-fit: cover;\n  }\n\n  .title {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    text-align: center;\n    word-break: break-word;\n    padding-left: 25px;\n    margin-bottom: 5px;\n    font-size: 1rem;\n    flex: 0 1 auto;\n  }\n\n  .price {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    text-align: center;\n    padding-right:5px;\n    font-size: 1.1rem;\n    font-weight: 500;\n    cursor: default;\n  }\n\n  .price-tittle {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    padding-right:5px;\n    text-align: center;\n    font-size: 0.8rem;\n    font-weight: 500;\n    color: #8b8b8b;\n  }\n\n  .corner-badge {\n    position: absolute;\n    background-color: #FFA500;\n    color: white;\n    padding: 8px 12px;\n    border-radius: 0 0 15px 0;\n  }\n\n\n  @media (max-width: 1000px) {\n    & {\n      width: 31%;\n    }\n\n    .image-container {\n      min-height: 30%;\n      flex-shrink: 1;\n    }\n  }\n\n  @media (max-width: 620px) {\n    width: 170px;\n    height: 300px;\n  }\n`;\n\nexport const AddToCartButton = styled.button`\n  width: 140px; /* Largura fixa do botão */\n\n  padding: 10px;\n  font-size: 1rem;\n  font-size: 0.75rem;\n  cursor: pointer;\n  border: none;\n  border-radius: 50px;\n  background-color: #ffc500;\n  color: black;\n  transition: background-color 0.3s ease;\n\n  &:hover {\n    background-color: #e3b000;\n  }\n`;"
  },
  {
    "path": "Diversão/src/components/Carrinho/Carrinho.component.jsx",
    "content": "import * as Styled from \"./Carrinho.style\";\nimport { useEffect, useState } from \"react\";\nimport { ButtonComponent } from \"../Button/Button.component\";\nimport { Compra } from \"../../services/CarrinhoService/CarrinhoService\";\nimport { Button } from \"../Button/Button.style\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const CarrinhoComponent = () => {\n  const [carrinho, setCarrinho] = useState([]);\n  const navigate = useNavigate();\n  useEffect(() => {\n    const fetchCarrinho = async () => {\n      try {\n        const produtosCarrinho = await Compra.Get();\n        setCarrinho(produtosCarrinho);\n      } catch (error) {\n        console.error(\"erro ao buscar carrinho: \", error);\n      }\n    };\n    fetchCarrinho();\n  }, []);\n\n  const redirectToNewPage = () => {\n    navigate(\"/carrinho-glauton\");\n  };\n\n  return (\n    <>\n      <ButtonComponent\n        type=\"button\"\n        onClick={redirectToNewPage}\n        text=\"Pagina Interessante\"\n      />\n      <Styled.ProductsWrapper>\n        <h2>Meu Carrinho</h2>\n        {carrinho.length > 0 ? (\n          carrinho.map((produto) => {\n            return (\n              <Styled.ProductWrapper key={produto.id}>\n                <img src={produto.imagem} alt=\"Imagem do Produto\" />\n                <Styled.ProductFeaturesWrapper>\n                  <h2>{produto.nome}</h2>\n                  <p>\n                    {produto.moeda}\n                    {produto.preco}\n                  </p>\n                </Styled.ProductFeaturesWrapper>\n              </Styled.ProductWrapper>\n            );\n          })\n        ) : (\n          <p>Nenhum item no seu carrinho</p>\n        )}\n      </Styled.ProductsWrapper>\n    </>\n  );\n};\n\n"
  },
  {
    "path": "Diversão/src/components/Carrinho/Carrinho.style.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const ProductsWrapper = styled.div`\n  display: flex;\n  text-align: center;\n  flex-direction: column;\n  background-color: yellow;\n`;\n\nexport const ProductWrapper = styled.div`\n  display: flex;\n  background-color: red;\n  margin-bottom: 10px;\n`;\n\nexport const ProductFeaturesWrapper = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n`;\n\n"
  },
  {
    "path": "Diversão/src/components/CarrinhoGlauton/CarrinhoGlauton.jsx",
    "content": "import { useNavigate } from \"react-router-dom\";\nimport { Compra } from \"../../services/CarrinhoService/CarrinhoService\";\nimport * as Styled from \"./CarrinhoGlauton.style\";\nimport { useEffect, useState } from \"react\";\nimport DeleteProduct from \"../DeleteProduct/DeleteProduct\";\n\nconst Carrinho = () => {\n  const [somaPreços, setSomaPreços] = useState();\n  const [produtos, setProdutos] = useState([]);\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    const pegaProduto = async () => {\n      await Compra.Get().then((produto) => {\n        setProdutos(produto);\n      });\n    };\n    pegaProduto();\n  }, []);\n  useEffect(() => {\n    const Soma = async () => {\n      await Compra.Get().then((produto) => {\n        let total = 0;\n        produto.forEach(async (element) => {\n          let somaTotal = await (total += Number(element.preço));\n          if (produto.length > 3) {\n            let desconto = somaTotal / 5;\n            let preçoDescontado = somaTotal - desconto;\n            setSomaPreços(`R$${preçoDescontado}.00`);\n          } else {\n            setSomaPreços(`R$${Number(somaTotal)}.00`);\n          }\n        });\n      });\n    };\n    Soma();\n  }, []);\n  const redirectToProducts = () => {\n    navigate(\"/produtos\");\n  };\n  const redirectToCheckout = () => {\n    navigate(\"/checkout\");\n  };\n  return (\n    <Styled.CarrinhoContainer>\n      <Styled.CarrinhoContent>\n        <Styled.CarrinhoTitulo>Lista de Compra</Styled.CarrinhoTitulo>\n        <Styled.ProductOverflow>\n          {produtos &&\n            produtos.map((produto) => {\n              return (\n                <Styled.CarrinhoProductContent key={produto.id}>\n                  <DeleteProduct produtoId={produto.id} />\n\n                  <Styled.CarrinhoProductImage\n                    src={produto.imagem}\n                    alt=\"imagem do item\"\n                  />\n                  <Styled.ProductCollum>\n                    <h2>{produto.nome}</h2>\n                    <span>\n                      Preço:{produto.moeda}\n                      {produto.preço}\n                    </span>\n                  </Styled.ProductCollum>\n                </Styled.CarrinhoProductContent>\n              );\n            })}\n        </Styled.ProductOverflow>\n        <Styled.ProductBottomRow>\n          <div>\n            <Styled.ProductButton onClick={redirectToProducts}>\n              Comprar mais produtos\n            </Styled.ProductButton>\n          </div>\n          <div>\n            <span>Preço atual:</span>\n            <h2>{somaPreços}</h2>\n          </div>\n          <div>\n            <Styled.ProductButton onClick={redirectToCheckout}>\n              Terminar a Compra\n            </Styled.ProductButton>\n          </div>\n        </Styled.ProductBottomRow>\n      </Styled.CarrinhoContent>\n    </Styled.CarrinhoContainer>\n  );\n};\n\nexport default Carrinho;\n"
  },
  {
    "path": "Diversão/src/components/CarrinhoGlauton/CarrinhoGlauton.style.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const CarrinhoContainer = styled.div`\n  display: flex;\n  width: 100%;\n  height: 100vh;\n  justify-content: center;\n`;\n\nexport const CarrinhoContent = styled.div`\n  background-color: #fff;\n  width: 50%;\n  margin: 2rem;\n  border-radius: 0.5rem;\n  box-shadow: 0.2rem 0.2rem 0.2rem #485769;\n`;\n\nexport const CarrinhoTitulo = styled.h1`\n  font-size: 4rem;\n  color: #de8705;\n  text-align: center;\n  margin: 1rem;\n`;\n\nexport const ProductOverflow = styled.div`\n  margin: 1rem;\n  overflow-y: scroll;\n  height: 60%;\n`;\n\nexport const CarrinhoProductImage = styled.img`\n  width: 18%;\n`;\nexport const CarrinhoProductContent = styled.div`\n  display: flex;\n  flex-direction: row;\n  margin: 1rem;\n  justify-content: left;\n  gap: 1.5rem;\n`;\n\nexport const ProductCollum = styled.div`\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n  font-size: 1rem;\n  color: #000;\n`;\n\nexport const ProductBottomRow = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  padding: 1rem;\n`;\n\nexport const ProductButton = styled.button`\n  width: 12rem;\n  height: 4rem;\n  font-size: 1.2rem;\n  color: whitesmoke;\n  background-color: #de8705;\n  color: black;\n  border-color: black;\n  border-radius: 0.5rem;\n  cursor: pointer;\n  &:hover {\n    background-color: #ffd700;\n  }\n`;\n"
  },
  {
    "path": "Diversão/src/components/Checkout/CheckoutComponent.jsx",
    "content": "import React, { useState, useEffect } from \"react\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { Compra } from \"../../services/CarrinhoService/CarrinhoService\";\nimport * as Styled from \"./CheckoutComponent.style\";\n\nconst Button = ({ to, children }) => {\n  const navigate = useNavigate();\n\n  const handleClick = () => {\n    navigate(to);\n  };\n\n  return (\n    <Styled.CheckoutButton onClick={handleClick}>\n      {\" \"}\n      {children}\n    </Styled.CheckoutButton>\n  );\n};\n\nexport const CheckoutComponent = () => {\n  const navigate = useNavigate();\n  const [somaPreços, setSomaPreços] = useState();\n  const [produtos, setProdutos] = useState([]);\n\n  useEffect(() => {\n    const pegaProduto = async () => {\n      await Compra.Get().then((produto) => {\n        setProdutos(produto);\n      });\n    };\n    pegaProduto();\n  }, []);\n  useEffect(() => {\n    const Soma = async () => {\n      await Compra.Get().then((produto) => {\n        let total = 0;\n        produto.forEach(async (element) => {\n          let somaTotal = await (total += Number(element.preço));\n          if (produto.length > 3) {\n            let desconto = somaTotal / 5;\n            let preçoDescontado = somaTotal - desconto;\n            setSomaPreços(`R$${preçoDescontado}.00`);\n          } else {\n            setSomaPreços(`R$${Number(somaTotal)}.00`);\n          }\n        });\n      });\n    };\n    Soma();\n  }, []);\n\n  const [paymentMethod, setPaymentMethod] = useState(\"creditCard\");\n\n  const [isCheckoutDisabled, setIsCheckoutDisabled] = useState(true);\n  const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(\"\");\n  const handlePayment = async (id) => {\n    await Compra.Delete(id);\n\n    await navigate(\"/\");\n  };\n\n  useEffect(() => {\n    setIsCheckoutDisabled(produtos.length === 0);\n  }, [produtos]);\n\n  return (\n    <Styled.CheckoutContainer>\n      <Styled.CheckoutCart>\n        {produtos.length === 0 ? (\n          <p>O carrinho está vazio.</p>\n        ) : (\n          <div>\n            <Styled.CheckoutTittle>Lista de Compras</Styled.CheckoutTittle>\n            <Styled.Table>\n              <thead>\n                <tr>\n                  <th>Imagem</th>\n                  <th>Nome do Produto</th>\n                  <th>Preço</th>\n                </tr>\n              </thead>\n              <tbody>\n                {produtos.map((item, index) => (\n                  <tr key={index}>\n                    <td>\n                      <img src={item.imagem} alt=\"product_image\" />\n                    </td>\n                    <td>{item.nome}</td>\n                    <td>\n                      {item.moeda}\n                      {item.preço}\n                    </td>\n                  </tr>\n                ))}\n                <tr key=\"total\">\n                  <td></td>\n                  <td></td>\n                  <td></td>\n                  <td>Valor total </td>\n                  <td>{somaPreços}</td>\n                </tr>\n              </tbody>\n            </Styled.Table>\n          </div>\n        )}\n        <Styled.redirectButtons>\n          <Button to=\"/carrinho\">Verificar carrinho</Button>\n          <Button to=\"/produtos\">Continuar comprando</Button>\n        </Styled.redirectButtons>\n      </Styled.CheckoutCart>\n\n      <Styled.CheckoutPaymethod>\n        <Styled.CheckoutTittle>Método de Pagamento</Styled.CheckoutTittle>\n\n        <Styled.PaymentOptions>\n          <div>\n            <label>\n              <input\n                type=\"radio\"\n                name=\"paymentMethod\"\n                value=\"creditCard\"\n                checked={selectedPaymentMethod === \"creditCard\"}\n                onChange={() => setSelectedPaymentMethod(\"creditCard\")}\n              />\n              Cartão de Crédito\n            </label>\n          </div>\n          <div>\n            <label>\n              <input\n                type=\"radio\"\n                name=\"paymentMethod\"\n                value=\"debitCard\"\n                checked={selectedPaymentMethod === \"debitCard\"}\n                onChange={() => setSelectedPaymentMethod(\"debitCard\")}\n              />\n              Cartão de Débito\n            </label>\n          </div>\n          <div>\n            <label>\n              <input\n                type=\"radio\"\n                name=\"paymentMethod\"\n                value=\"pix\"\n                checked={selectedPaymentMethod === \"pix\"}\n                onChange={() => setSelectedPaymentMethod(\"pix\")}\n              />\n              PIX\n            </label>\n          </div>\n          <div>\n            <label>\n              <input\n                type=\"radio\"\n                name=\"paymentMethod\"\n                value=\"bankSlip\"\n                checked={selectedPaymentMethod === \"bankSlip\"}\n                onChange={() => setSelectedPaymentMethod(\"bankSlip\")}\n              />\n              Boleto Bancário\n            </label>\n          </div>\n        </Styled.PaymentOptions>\n        <Styled.CheckoutButton\n          onClick={() => {\n            produtos.map((produto) => {\n              handlePayment(produto.id);\n            });\n          }}\n          disabled={isCheckoutDisabled}\n        >\n          Finalizar Compra\n        </Styled.CheckoutButton>\n      </Styled.CheckoutPaymethod>\n    </Styled.CheckoutContainer>\n  );\n};\n"
  },
  {
    "path": "Diversão/src/components/Checkout/CheckoutComponent.style.jsx",
    "content": "import styled from \"styled-components\";\nimport { Link } from \"react-router-dom\";\n\nexport const CheckoutContainer = styled.div`\n  display: flex;\n  flex-direction: row;\n  justify-items: center;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  gap: 5rem;\n  background-color: #ccc;\n  padding: 30px;\n`;\n\nexport const CheckoutTittle = styled.div`\n  display: flex;\n  align-items: center;\n  font-size: 2rem;\n  color: black;\n  margin: 1rem;\n`;\n\nexport const CheckoutCart = styled.div`\n  flex: 2;\n  width: 66%;\n  padding: 20px;\n  box-sizing: border-box;\n  align-items: center;\n  background-color: white;\n  border-radius: 10px;\n`;\n\nexport const CheckoutPaymethod = styled.div`\n  flex: 1;\n  width: 34%;\n  padding: 20px;\n  box-sizing: border-box;\n  background-color: white;\n  border-radius: 10px;\n`;\n\nexport const Table = styled.table`\n  width: 100%;\n  text-align: center;\n\n  thead {\n    background: #ccc;\n    font-weight: bold;\n    color: black;\n  }\n\n  tbody {\n    margin: 1px;\n    border-color: black;\n  }\n\n  th,\n  td {\n    padding: 2px 0;\n  }\n\n  tbody tr td img {\n    max-width: 80%;\n    height: auto;\n  }\n\n  tbody tr:last-child td {\n    font-weight: bold;\n  }\n\n  @media screen and (max-width: 480px) {\n    thead {\n      display: none;\n    }\n\n    tbody td {\n      display: flex;\n      flex-direction: column;\n    }\n  }\n\n  @media only screen and (min-width: 1200px) {\n    tbody tr td:nth-child(1) {\n      width: 15%;\n    }\n    tbody tr td:nth-child(2) {\n      width: 50%;\n    }\n    tbody tr td:nth-child(3) {\n      width: 10%;\n    }\n    tbody tr td:nth-child(4) {\n      width: 5%;\n    }\n    tbody tr td:nth-child(5) {\n      width: 15%;\n    }\n  }\n`;\n\nexport const CheckoutButton = styled.button`\n  width: 250px;\n  border-radius: 10px;\n  height: 45px;\n  background-color: yellow;\n  color: black;\n  margin: 25px;\n  border: none;\n\n  &:hover {\n    background-color: #d6d30ec5;\n  }\n`;\n\nexport const redirectButtons = styled.div`\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  margin-top: 5%;\n`;\n\nexport const PaymentOptions = styled.div`\n  display: flex;\n  flex-direction: column;\n\n  div {\n    margin: 5px 0;\n  }\n\n  label {\n    display: flex;\n    align-items: center;\n  }\n\n  input {\n    margin-right: 5px;\n  }\n`;\n"
  },
  {
    "path": "Diversão/src/components/DeleteProduct/DeleteProduct.jsx",
    "content": "import { Compra } from \"../../services/CarrinhoService/CarrinhoService\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\n\nconst DeleteProduct = ({ produtoId }) => {\n  const Delete = async (id) => {\n    await Compra.Delete(id);\n    window.location.reload();\n  };\n  return (\n    <>\n      <ClearIcon\n        onClick={() => {\n          Delete(produtoId);\n        }}\n      />\n    </>\n  );\n};\n\nexport default DeleteProduct;\n"
  },
  {
    "path": "Diversão/src/components/Error/Index.jsx",
    "content": "import Col from 'react-bootstrap/Col';\nimport Image from 'react-bootstrap/Image';\nimport { IoMdAlert } from 'react-icons/io';\nimport error404 from '../../assets/error404.gif'\nimport { useNavigate } from 'react-router-dom';\nimport './Style.css'\n\nexport const ErrorComponent = ()=>{\n    const navigate = useNavigate()\n    const handleEasterEgg = (e)=>{\n        e.preventDefault()\n        navigate('/easterEggs')\n    }\n   return (<>\n    <Col className=\"alignItens\">\n        <h2>Eitcha, parece que não encontramos essa página <IoMdAlert onClick={handleEasterEgg} style={{color: 'red'}}/></h2>            \n            <Image className='ImageError' src={error404} rounded />\n    </Col>\n    </>)\n}"
  },
  {
    "path": "Diversão/src/components/Error/Style.css",
    "content": ".alignItens {\n    text-align: center;\n    margin-left: auto;\n    margin-right: auto;\n    \n}\n\n.alignItens h2 {\n    margin-top: 40px;\n    color: rgb(0, 0, 0);\n    box-shadow: 0px 3px 0px 0px rgba(0, 0, 0, 0.1);\n    \n}\n\n.ImageError {    \n    width: 40%;\n}"
  },
  {
    "path": "Diversão/src/components/Footer/Footer.jsx",
    "content": "import React from \"react\";\nimport logo from \"../../assets/logo-garcia.png\";\nimport * as Styled from \"./Footer.style\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nconst Footer = () => {\n  const navigate = useNavigate();\n  const navigateHome = () => {\n    navigate(\"/\");\n  };\n  return (\n    <React.Fragment>\n      <Styled.FooterContainer>\n        <Styled.FooterRow>\n          <div className=\"firstMenu\">\n            <Styled.FooterImage\n              src={logo}\n              alt=\"Logotipo\"\n              onClick={navigateHome}\n            />\n          </div>\n\n          <Styled.FooterList>\n            <Styled.FooterTittle>Paginas Criadas</Styled.FooterTittle>\n            <Styled.FooterLnk to={\"/produtos\"}>\n              Pagina de Produtos\n            </Styled.FooterLnk>\n\n            <Styled.FooterLnk to={\"/carrinho\"}>\n              Pagina do Carrinho\n            </Styled.FooterLnk>\n\n            <Styled.FooterLnk to={\"/checkout\"}>\n              Pagina de Checkout\n            </Styled.FooterLnk>\n            <Styled.FooterLnk to={\"/squad\"}>\n              Pagina do Grupo Secreto de Progamadores\n            </Styled.FooterLnk>\n          </Styled.FooterList>\n        </Styled.FooterRow>\n        <span className=\"footerSpan\">\n          Garcia.Moveis@ Alguns direitos reservados.\n        </span>\n      </Styled.FooterContainer>\n    </React.Fragment>\n  );\n};\n\nexport default Footer;\n"
  },
  {
    "path": "Diversão/src/components/Footer/Footer.style.jsx",
    "content": "import styled from \"styled-components\";\nimport { Link } from \"react-router-dom\";\n\nexport const FooterContainer = styled.footer`\n  display: flex;\n  flex-direction: column;\n  font-family: \"Times New Roman\";\n  width: 100%;\n  background-color: #00121c;\n  color: #fff;\n  gap: 1rem;\n`;\n\nexport const FooterRow = styled.section`\n  display: flex;\n  flex-direction: row;\n  margin: 1rem;\n  justify-content: space-between;\n`;\n\nexport const FooterImage = styled.img`\n  width: 18rem;\n  margin: 1rem;\n`;\n\nexport const FooterTittle = styled.h4`\n  font-size: 2rem;\n`;\n\nexport const FooterList = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-content: left;\n  gap: 1rem;\n`;\n\nexport const FooterLnk = styled(Link)`\n  text-decoration: none !important;\n  list-style-type: none;\n  font-size: 1rem;\n  color: #f8f8ff;\n`;\n"
  },
  {
    "path": "Diversão/src/components/Header/Header.jsx",
    "content": "import { useContext } from 'react';\nimport AddShoppingCartIcon from \"@mui/icons-material/AddShoppingCart\";\nimport { HeaderWrapper, LogoWrapper, MenuWrapper } from './Header.styled';\nimport logo from '../../assets/logo-garcia.png';\nimport  { useEffect, useState } from \"react\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { Compra } from \"../../services/CarrinhoService/CarrinhoService\";\nimport AppContext from \"../../contexts/AppContext\";\n\n\nconst Header = () => {\n  const {cartItems, setIsCartVisible} = useContext(AppContext);\n\n  const [compra, setCompra] = useState();\n  const navigate = useNavigate();\n  useEffect(() => {\n    const quantidadeCompra = async () => {\n      await Compra.Get().then((compras) => {\n        setCompra(compras.length);\n      });\n    };\n    quantidadeCompra();\n  }, [cartItems]);\n  const navigateHome = () => {\n    navigate(\"/\");\n  };\n  return (\n      <HeaderWrapper>\n        <LogoWrapper>\n          <Link to={'/'}>\n            <img src={logo} alt=\"Logotipo\" onClick={navigateHome} />\n          </Link>\n        </LogoWrapper>\n        <MenuWrapper>\n        <li>\n            <Link to={'/'}>Inicio</Link>\n          </li>\n          <li>\n            <Link to={'/produtos'}>Produtos</Link>\n          </li>\n          <li>\n            <Link to={\"/carrinho\"} className=\"link\">\n              <div >\n                <strong>Meu carrinho</strong>\n                </div><div onMouseOver={() => setIsCartVisible(true)} onMouseOut={() => setIsCartVisible(false)}>\n                <span>\n                {compra === 1 \n                ? `${compra} item`\n                : compra > 1\n                ? `${compra} itens`\n                : 'vazio'}\n                </span> {/* Exibe a quantidade */}\n                <AddShoppingCartIcon fontSize=\"medium\"/>\n              </div>\n\n            </Link>\n          </li>\n\n        </MenuWrapper>\n      </HeaderWrapper>\n\n  );\n};\n\nexport default Header;\n"
  },
  {
    "path": "Diversão/src/components/Header/Header.styled.jsx",
    "content": "import styled from 'styled-components';\n\n\nexport const HeaderWrapper = styled.nav`\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    align-items: center;\n    padding: 20px;\n    background-color: #00121c;\n    gap: 10px;\n    z-index: 1;\n`;\n\nexport const LogoWrapper = styled.div`\n    margin-left:1rem;\n    img {\n        width: 250px;\n    }\n`;\n\nexport const MenuWrapper = styled.ul`\n    display: flex;\n    align-items: end;\n    gap: 40px;\n    padding: 10px;\n    list-style-type: none;\n\n    li {\n        font-size: 20px;\n        font-weight: 500;\n    }\n\n    div {\n      display:flex;\n      justify-content: space-between;\n      align-items: center;\n      text-align: right;\n      margin-right: 10px;\n      padding: 2px;\n\n    span {\n      font-size: 16px;\n      color: #c6c6c6;\n    }\n    strong {\n      font-size: 14px;\n      display: block;\n      color: #fff;     \n    }\n  }\n\n    a {\n        text-decoration: none;\n        color: #fff;\n        position: relative;\n\n        &:after {\n            content: '';\n            display: block;\n            height: 2px;\n            width: 0;\n            background: #FFBB00;\n            margin-top: 4px;\n            transition: 0.3s;\n            position: absolute;\n        }\n\n        &:hover::after {\n            width: 100%;\n        }\n    }\n`;\n"
  },
  {
    "path": "Diversão/src/components/Header/headerCss.css",
    "content": "header {\n  display: flex;\n  flex-direction: column;\n  background-image: linear-gradient(to top right, #cd853f 10%, #f4a460);\n\n  width: 100%;\n  gap: 10px;\n  padding: 10px;\n  font-family: Arial;\n}\n\n.headerContainer {\n  display: flex;\n  justify-content: space-between;\n  align-items: baseline;\n}\n\n.headerH1 {\n  background: linear-gradient(to bottom right, #ff8c00, #800000 90%);\n  -webkit-text-fill-color: transparent;\n  -webkit-background-clip: text;\n  -webkit-text-stroke-width: 1px;\n  -webkit-text-stroke-color: #000;\n  margin-top: 20px;\n  font-family: serif !important;\n  font-weight: 500px;\n  font-size: 5rem;\n}\n.headerList {\n  display: flex;\n  margin: 1rem;\n  top: 20px;\n  flex-direction: row;\n  width: 25rem;\n  gap: 1rem;\n}\n\nli {\n  list-style-type: none;\n}\n.link {\n  text-decoration: none !important;\n  color: #461e00;\n  font-size: 2rem;\n  cursor: pointer;\n}\n\n.link:hover {\n  color: #ffd700;\n}\n"
  },
  {
    "path": "Diversão/src/components/ItensCarrinho/ItensCarrinho.component.jsx",
    "content": "import  { useContext } from 'react';\nimport {\n    CartSection,\n    CartItems,\n    CartItem,\n    CartItemImage,\n    CartItemContent,\n    CartItemTitle,\n    CartItemPrice,\n    CartResume\n} from './ItensCarrinho.style';\nimport AppContext from '../../contexts/AppContext';\n\nfunction ItensCarrinho() {\n    const { isCartVisible, produtos } = useContext(AppContext);\n\n    const totalPrice = produtos.reduce((acc, item) => {\n        const priceValue = parseFloat(item.preço.replace('R$', '').replace(',', '.')); // Converte o preço para número\n        return priceValue + acc;\n    }, 0);\n\n    const formattedTotalPrice = `R$${totalPrice.toFixed(2).replace('.', ',')}`; // Formata o preço novamente para exibição\n\n    return (\n        <CartSection className={`cart ${isCartVisible ? 'cart--active' : ''}`}>\n            <CartResume className=\"cart-resume\">Total: {formattedTotalPrice}</CartResume>\n            <CartItems>\n                {/* Renderize os itens do carrinho */}\n                {produtos.length > 0 ? (\n                    produtos.map((item) => (\n                        <CartItem key={item.id} className=\"cart-item\">\n                            <CartItemImage\n                                src={item.imagem}\n                                alt=\"imagem do produto\"\n                                className=\"cart-item-image\"\n                            />\n                            <CartItemContent className=\"cart-item-content\">\n                                <CartItemTitle className=\"cart-item-title\">{item.nome}</CartItemTitle>\n                                <CartItemPrice className=\"cart-item-price\">{item.preço}</CartItemPrice>\n                            </CartItemContent>\n                        </CartItem>\n                    ))\n                ) : (\n                    <div>Carrinho vazio</div>\n                )}\n            </CartItems>\n        </CartSection>\n    );\n}\n\nexport default ItensCarrinho;"
  },
  {
    "path": "Diversão/src/components/ItensCarrinho/ItensCarrinho.style.jsx",
    "content": "import styled from 'styled-components';\n\nexport const CartSection = styled.section`\n  background-color: #fff;\n  position: fixed;\n  right: 0;\n  top: 0;\n  height: 100%;\n  width: 350px;\n  margin-top: 108px;\n  box-shadow: -5px 0 5px rgba(0, 0, 0, 0.2);\n  transform: translateX(110%);\n  transition: transform 0.3s ease-in-out;\n  \n  &.cart--active {\n    transform: translateX(0);\n  }\n`;\n\nexport const CartItems = styled.div`\n  padding: 1rem;\n`;\n\nexport const CartItem = styled.section`\n  display: flex;\n  align-items: center;\n  margin-bottom: 1rem;\n  border-bottom: 1px solid #ddd;\n  padding-bottom: 1rem;\n\n  &:last-child {\n    border-bottom: none;\n  }\n`;\n\nexport const CartItemImage = styled.img`\n  width: 60px;\n  height: 60px;\n  object-fit: cover;\n  margin-right: 1rem;\n`;\n\nexport const CartItemContent = styled.div``;\n\nexport const CartItemTitle = styled.h3`\nfont-size: 0.85rem;\nfont-weight: 500;\ncolor: rgba(0,  0,  0 , 0.5);\nmargin-bottom: 8px;\n`;\n\nexport const CartItemPrice = styled.h3`\npadding-top:10px;\nfont-size: 18px;\nfont-weight: 500;\n`;\n\nexport const CartResume = styled.div`\ntext-align:right;\nmargin-right:15px;\nfont-size: 1.5rem;\nfont-weight: 500;\npadding: 35px 0 15px;\nborder-top: 1px solid #ddd;\n`;"
  },
  {
    "path": "Diversão/src/components/PrincipalBody/PrincipalBody.jsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { ListaDeProdutos } from \"../../services/ProdutosService/Produtos\";\nimport ImagemPrincipal from \"../../assets/ExemploPaiFilho.jpg\";\nimport * as Styled from \"./PrincipalBody.style\";\nimport { useNavigate } from \"react-router\";\n\nconst PrincipalBody = () => {\n  const [produtos, setProdutos] = useState([]);\n\n  const navigate = useNavigate();\n  useEffect(() => {\n    const pegaProduto = async () => {\n      await ListaDeProdutos.Get().then((produto) => {\n        setProdutos(produto);\n      });\n    };\n    pegaProduto();\n  }, []);\n\n  const navigateProducts = () => {\n    navigate(\"/produtos\");\n  };\n  return (\n    <Styled.MainContainer>\n      <Styled.MainTitle>Feliz Dias dos Pais</Styled.MainTitle>\n      <Styled.MainCard>\n        <div>\n          <Styled.CardImage src={ImagemPrincipal} alt=\"Pai e Filho\" />\n        </div>\n        <Styled.MainCardContent>\n          <Styled.MainCardTitle>\n            Estamos com um\n            <Styled.MainCardSpecialText>Desconto</Styled.MainCardSpecialText>\n          </Styled.MainCardTitle>\n          <Styled.MainCardTextRow>\n            Para você\n            <Styled.MainCardSpecialText>Pai</Styled.MainCardSpecialText>\n          </Styled.MainCardTextRow>\n          <Styled.MainCardSpecialText>\n            20% de Desconto\n          </Styled.MainCardSpecialText>\n          <Styled.MainCardTextRow>\n            em uma compra de\n            <Styled.MainCardSpecialText>3</Styled.MainCardSpecialText> ou mais\n            moveis\n          </Styled.MainCardTextRow>\n          <Styled.CardButton onClick={navigateProducts}>\n            Venha escolher o seu\n          </Styled.CardButton>\n        </Styled.MainCardContent>\n      </Styled.MainCard>\n\n      <Styled.MainFooter onClick={navigateProducts}>\n        <Styled.MainFooterTitle>Veja nossos produtos</Styled.MainFooterTitle>\n        <Styled.MainProductRow>\n          {produtos &&\n            produtos.map((produto) => {\n              return (\n                <div key={produto.id}>\n                  <Styled.ProductImages\n                    className=\"main-product-image\"\n                    src={produto.imagem}\n                    alt=\"imagem de produto\"\n                  />\n                </div>\n              );\n            })}\n        </Styled.MainProductRow>\n      </Styled.MainFooter>\n    </Styled.MainContainer>\n  );\n};\n\nexport default PrincipalBody;\n"
  },
  {
    "path": "Diversão/src/components/PrincipalBody/PrincipalBody.style.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const MainContainer = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-items: center;\n  align-items: center;\n  width: 100%;\n  gap: 5rem;\n`;\nexport const MainTitle = styled.h1`\n  font-size: 8rem;\n  color: #de8705;\n  margin: 1rem;\n`;\nexport const MainCard = styled.div`\n  display: flex;\n  flex-direction: row;\n  background-color: #00008b;\n  margin: 1rem;\n  box-shadow: 0.2rem 0.2rem 0.2rem #485769;\n`;\nexport const CardImage = styled.img`\n  width: 40rem;\n`;\n\nexport const MainCardContent = styled.div`\n  display: flex;\n  flex-direction: column;\n  justify-items: center;\n  gap: 2rem;\n  font-size: 2rem;\n  padding: 1rem;\n  color: #fff;\n`;\n\nexport const CardButton = styled.button`\n  width: 12rem;\n  height: 4rem;\n  font-size: 1.2rem;\n  color: whitesmoke;\n  background-color: #de8705;\n  color: black;\n  border-color: black;\n  border-radius: 0.5rem;\n  margin-left: 30rem;\n  cursor: pointer;\n  &:hover {\n    background-color: #ffd700;\n  }\n`;\n\nexport const MainCardTitle = styled.h2`\n  display: flex;\n  justify-items: center;\n  align-items: center;\n  gap: 0.5rem;\n  font-size: 2.5rem;\n`;\n\nexport const MainCardSpecialText = styled.p`\n  font-size: 4rem;\n  color: #ffd700;\n`;\nexport const MainCardTextRow = styled.span`\n  display: flex;\n  flex-direction: row;\n  justify-items: center;\n  align-items: center;\n`;\nexport const MainFooter = styled.div`\n  background-color: #ffffff;\n  box-shadow: 0.2rem 0.2rem 0.2rem #485769;\n  margin-bottom: 4rem;\n  cursor: pointer;\n`;\nexport const MainFooterTitle = styled.h3`\n  font-size: 4rem;\n  color: #de8705;\n`;\nexport const MainProductRow = styled.div`\n  display: flex;\n  flex-direction: row;\n  width: 80rem;\n  height: 12rem;\n  overflow-x: scroll;\n  margin: 1rem;\n`;\n\nexport const ProductImages = styled.img`\n  width: 8rem;\n  margin: 1rem;\n`;\n"
  },
  {
    "path": "Diversão/src/components/Quantidade/Quantidade.component.jsx",
    "content": "import { useContext, useState } from 'react';\nimport { CgMathPlus, CgMathMinus } from 'react-icons/cg';\nimport * as Styled from './Quantidade.style';\n\nexport const QuantidadeComponent = ({produto, onUpdate}) => {\n\n    const [qty, setQty] = useState(produto.qty);\n\n    const handleAddQty = () => {\n        const newQty = qty + 1;\n        setQty(newQty);\n        onUpdate(produto.id, newQty);\n    }\n\n    const handleSubQty = () => {\n        if(qty > 0) {\n            const newQty = qty - 1;\n            setQty(newQty);\n            onUpdate(produto.id, newQty);\n        }\n    }\n\n    return(\n        <Styled.QtyWrapper>\n            <button onClick={handleAddQty}><CgMathPlus/></button>\n            <span>{qty}</span>\n            <button onClick={handleSubQty}><CgMathMinus/></button>       \n        </Styled.QtyWrapper>\n    );\n}"
  },
  {
    "path": "Diversão/src/components/Quantidade/Quantidade.style.jsx",
    "content": "import styled from 'styled-components';\n\nexport const QtyWrapper = styled.div`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    button {\n        background-color: yellow;\n        border: none;\n        padding: 5px;\n        border-radius: 10px;\n\n        &:hover{\n            background-color:#d6d30ec5;\n        }\n    }\n`"
  },
  {
    "path": "Diversão/src/components/Resumo/Resumo.component.jsx",
    "content": "import { useNavigate } from \"react-router-dom\";\nimport { ButtonComponent } from \"../Button/Button.component\";\nimport * as Styled from \"./Resumo.style\";\n\nexport const ResumoComponent = () => {\n  const navigate = useNavigate();\n  const redirectToProducts = () => {\n    navigate(\"/produtos\");\n  };\n  const redirectToCheckout = () => {\n    navigate(\"/checkout\");\n  };\n  return (\n    <Styled.ResumoWrapper>\n      <p>aqui vai ser o resumo da sua compra</p>\n      <ButtonComponent\n        type=\"button\"\n        onClick={redirectToProducts}\n        text=\"Continue Comprando\"\n      />\n      <ButtonComponent\n        type=\"button\"\n        onClick={redirectToCheckout}\n        text=\"Prosseguir para o Checkout\"\n      />\n    </Styled.ResumoWrapper>\n  );\n};\n\n"
  },
  {
    "path": "Diversão/src/components/Resumo/Resumo.style.jsx",
    "content": "\nimport styled from \"styled-components\";\n\nexport const ResumoWrapper = styled.div`\n  display: flex;\n  flex-direction: column;\n  background-color: blue;\n  padding: 50px;\n`;\n\n"
  },
  {
    "path": "Diversão/src/components/TeamCard/Index.jsx",
    "content": "import { useState, useEffect } from 'react';\nimport Card from 'react-bootstrap/Card';\nimport './Style.css'\n\nexport const TeamCard = ({usuario}) => {\n    \n    const [descricao, setDescricao] = useState('')\n  \nuseEffect(()=>{\n        fetch(`https://api.github.com/users/${usuario}`)\n        .then(response => response.json())\n        .then(data => {\n            setDescricao(data)\n        }).catch(error =>{\n            console.log('error fetch from git', error)\n        })\n        \n    },[])\n    return (\n        <div>\n            <Card className='styleCard' style={{width: '18rem' }}>\n                <Card.Img variant=\"top\" src={descricao?.avatar_url} />\n                <Card.Body>\n                    <Card.Title>{descricao?.name}</Card.Title>\n                    <hr />\n                    <Card.Text className='font-italic'>\n                        <strong>Bio: </strong>\n                       <em>{descricao?.bio} </em>                     \n                    </Card.Text>\n                    \n                </Card.Body>\n            </Card>\n        </div>\n    )\n}\n\nexport default TeamCard"
  },
  {
    "path": "Diversão/src/components/TeamCard/Style.css",
    "content": ".styleCard {    \n    margin-bottom:40px ;      \n    margin-left: 10px;\n    min-height: 500px;\n    padding: 5px;\n    box-shadow: 0px 2px 10px 3px rgba(15, 0, 221, 0.5);\n}"
  },
  {
    "path": "Diversão/src/contexts/AppContext.js",
    "content": "import { createContext } from 'react';\n\nconst AppContext = createContext();\n\nexport default AppContext;"
  },
  {
    "path": "Diversão/src/contexts/AppProvider.jsx",
    "content": "import  { useState,useEffect } from 'react';\nimport propTypes from 'prop-types';\nimport AppContext from './AppContext';\nimport { Compra } from \"../services/CarrinhoService/CarrinhoService\";\n\nfunction Provider( {children} ) {\n\n    const [produtos, setProdutos] = useState([]);\n\n    const [cartItems, setCartItems] = useState([]);\n\n    const [isCartVisible, setIsCartVisible] = useState(false);\n\n\n\n  useEffect(() => {\n    fetchCarrinho();\n  }, [cartItems]);\n\n  // Função carregar itens do carrinho\n  const fetchCarrinho = async () => {\n    try {\n      const carrinho = await Compra.Get(); //usando o serviço Produtos\n      setProdutos(carrinho);\n    } catch (error) {\n      console.error(\"Erro ao buscar produtos:\", error);\n    }\n  };\n\n\n  const value = {\n    cartItems,\n    setCartItems,\n    isCartVisible, \n    setIsCartVisible,\n    produtos,\n  };\n\n  return ( \n    <AppContext.Provider value={value}>\n      {children}\n    </AppContext.Provider>\n  );\n}\n\nexport default Provider;\n\nProvider.propTypes = {\n  children: propTypes.any,\n}.isRequired;"
  },
  {
    "path": "Diversão/src/contexts/MathContext/Math.context.jsx",
    "content": "import { createContext, useState } from \"react\";\nimport PropTypes from 'prop-types'\n\n\nexport const MathContext = createContext(\n    {\n        totalQty: 0,\n        setTotalQty: () => {},\n        totalPrc: 0,\n        setTotalPrc: () => {},\n    }\n);\n\nexport const MathProvider = ({children}) => {\n    const [totalQty, setTotalQty] = useState(0);\n    const [totalPrc, setTotalPrc] = useState(0);\n\n    return(\n        <MathContext.Provider value={{totalQty, setTotalQty, totalPrc, setTotalPrc}}>\n            {children}\n        </MathContext.Provider>\n    );\n}\n\nMathProvider.propTypes = {\n    children: PropTypes.node,\n}"
  },
  {
    "path": "Diversão/src/global.style.jsx",
    "content": "import { createGlobalStyle } from \"styled-components\";\n\nexport const GlobalStyle = createGlobalStyle`\n  * {\n    margin: 0;\n    padding: 0;\n    outline: none;\n\n    box-sizing: border-box;\n  }\n\n  html, body, #root {\n    background-color:#e3e6e6;\n    font-family: Roboto, sans-serif;\n  }\n`;\n\n"
  },
  {
    "path": "Diversão/src/index.css",
    "content": ""
  },
  {
    "path": "Diversão/src/main.jsx",
    "content": "import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport App from \"./App.jsx\";\nimport \"./index.css\";\nimport { GlobalStyle } from \"./global.style.jsx\";\n\nReactDOM.createRoot(document.getElementById(\"root\")).render(\n  <React.StrictMode>\n    <GlobalStyle />\n    <App />\n  </React.StrictMode>\n);\n"
  },
  {
    "path": "Diversão/src/pages/PaginaDeCheckout/PaginaDeCheckout.jsx",
    "content": "import { CheckoutComponent } from \"../../components/Checkout/CheckoutComponent\";\nimport Footer from \"../../components/Footer/Footer\";\nimport Header from \"../../components/Header/Header\";\n\nconst PaginaDeCheckout = () => {\n  return (\n    <>\n      <Header />\n      <CheckoutComponent />\n      <Footer />\n    </>\n  );\n};\n\nexport default PaginaDeCheckout;\n"
  },
  {
    "path": "Diversão/src/pages/PaginaDeCompra/PaginaDeCompra.jsx",
    "content": "import Header from \"../../components/Header/Header\";\nimport Footer from \"../../components/Footer/Footer\";\nimport * as Styled from \"./PaginaDeCompra.style\";\nimport { CarrinhoComponent } from \"../../components/Carrinho/Carrinho.component\";\nimport { ResumoComponent } from \"../../components/Resumo/Resumo.component\";\n\nexport const PaginaDeCompra = () => {\n  return (\n    <>\n      <Header />\n      <Styled.CarrinhoWrapper>\n        <CarrinhoComponent />\n        <ResumoComponent />\n      </Styled.CarrinhoWrapper>\n      <Footer />\n    </>\n  );\n};\n\n"
  },
  {
    "path": "Diversão/src/pages/PaginaDeCompra/PaginaDeCompra.style.jsx",
    "content": "\nimport styled from \"styled-components\";\n\nexport const CarrinhoWrapper = styled.div`\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: space-between;\n  padding: 20px;\n  width: 100%;\n`;\n\n"
  },
  {
    "path": "Diversão/src/pages/PaginaDeErro/PaginaDeErro.jsx",
    "content": "import Footer from \"../../components/Footer/Footer\";\nimport Header from \"../../components/Header/Header\";\nimport { ErrorComponent } from \"../../components/error/Index\";\n\nconst PaginaDeErro = () => {\n  return (\n    <>\n      <Header />\n      <ErrorComponent />\n      <Footer />\n    </>\n  );\n};\n\nexport default PaginaDeErro;\n"
  },
  {
    "path": "Diversão/src/pages/PaginaDeProdutos/PaginaDeProduto.styled.jsx",
    "content": "import styled from \"styled-components\";\n\nexport const StyledProduto = styled.div`\n  margin: 0 auto;\n  min-height: calc(100vh - 120px);\n  max-width: 1200px;\n  padding: 5px;\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-around;\n`;\n\nexport const StyledContent = styled.div`\ndisplay: flex;\npadding-top: 25px;\npadding-bottom: 25px;\n`;\n"
  },
  {
    "path": "Diversão/src/pages/PaginaDeProdutos/PaginaDeProdutos.jsx",
    "content": "\nimport { useState, useEffect } from \"react\";\nimport CardProduto from \"../../components/CardProduto/CardProduto.component\";\nimport { StyledContent, StyledProduto } from \"./PaginaDeProduto.styled\";\nimport BuscaProduto from \"../../components/BuscaProduto/BuscaProduto.component\";\nimport Header from \"../../components/Header/Header\";\nimport Footer from \"../../components/Footer/Footer\";\nimport { ListaDeProdutos } from \"../../services/ProdutosService/Produtos\"; \n\nconst PaginaDeProdutos = () => {\n  // Estado para armazenar a lista completa de produtos\n  const [items, setItems] = useState([\"\"]);\n\n  // Estado para armazenar o termo de pesquisa\n  const [searchTerm, setSearchTerm] = useState(\"\");\n\n  // Estado para armazenar a lista de produtos filtrados\n  const [filteredItems, setFilteredItems] = useState([]);\n\n  // Carregar a lista completa de produtos quando o componente montar\n  useEffect(() => {\n    fetchProdutos();\n  }, []);\n\n  // Função para buscar e configurar a lista de produtos\n  const fetchProdutos = async () => {\n    try {\n      const produtos = await ListaDeProdutos.Get(); //usando o serviço Produtos\n      setItems(produtos);\n      setFilteredItems(produtos);\n    } catch (error) {\n      console.error(\"Erro ao buscar produtos:\", error);\n    }\n  };\n\n  const handleSearch = (event) => {\n    const searchTerm = event.target.value;\n    setSearchTerm(searchTerm);\n\n    const filtered = items.filter((item) =>\n      item.nome.toLowerCase().includes(searchTerm.toLowerCase())\n    );\n\n    setFilteredItems(filtered);\n  };\n  \n\n  return (\n    <>\n      <Header />\n      <StyledContent>\n        <BuscaProduto searchTerm={searchTerm} onSearchChange={handleSearch} /> {/* Componente de busca */}\n      </StyledContent>\n      <StyledProduto>\n        {/* Verifica se existem produtos filtrados para exibir */}\n        {filteredItems.length > 0 ? (\n          // Mapeia e renderiza os produtos filtrados\n          filteredItems.map((item) => {\n            return (\n              <CardProduto\n                item={item}\n                key={item.id} // Define a chave como o ID do produto\n              />\n            );\n          })\n        ) : (\n          // Caso não haja produtos filtrados, exibe a mensagem\n          <div>Nenhum produto encontrado com este nome</div>\n        )}\n      </StyledProduto>\n      <Footer /> \n    </>\n  );\n};\n\nexport default PaginaDeProdutos;"
  },
  {
    "path": "Diversão/src/pages/PaginaDoCarrinhoGlauton/PaginaDoCarrinho.jsx",
    "content": "import Carrinho from \"../../components/CarrinhoGlauton/CarrinhoGlauton\";\nimport Footer from \"../../components/Footer/Footer\";\nimport Header from \"../../components/Header/Header\";\n\nconst PaginaDoCarrinho = () => {\n  return (\n    <div>\n      <Header />\n      <Carrinho />\n      <Footer />\n    </div>\n  );\n};\n\nexport default PaginaDoCarrinho;\n"
  },
  {
    "path": "Diversão/src/pages/PaginaEasterEgg/Index.jsx",
    "content": "import './Style.css'\nimport { Col, Row } from 'react-bootstrap'\nimport Image from 'react-bootstrap/Image';\nimport Container from 'react-bootstrap/Container';\nimport TeamCard from '../../components/teamCard/Index'\nimport eag from '../../assets/yoshi5.gif'\nimport Header from '../../components/Header/Header';\nimport Footer from '../../components/Footer/Footer';\n\nexport const PaginaSquad = () => {\n    return (\n        <Container fluid>\n            <Header/>\n            <Col>\n                <Col className='text-center'>\n                    <h2 style={{ margin: '40px' }}>Equipe de Desenvolvimento Web - Trindade</h2>\n                    <p style={{ fontSize: '20px', color: 'green', marginBottom: '-30px', marginTop: '-40px' }}>Congrats, you find the easter egg! <Image src={eag} /></p>\n                    <hr />\n                </Col>\n                <Row>\n                    <Row>\n                        <Col className='cardEaster'>\n                            <Col id='teamCard'>\n                             <TeamCard usuario='portexrp' />\n                            </Col>\n                            <Col id='aboutUs'>\n                            <h3>Soft Skills</h3>\n                            <hr />\n                            <p>Node js - Models View Controller Middleware's</p>\n                            <p>SQL - <span> Script Procedures Triggers CRUD</span></p>\n                            <p>React</p>\n                            <p></p>\n                            </Col>\n                            \n                        </Col>\n                    </Row>\n                    <Row>\n\n                        <Col>\n                            <Col>\n                            </Col>\n                            <Col>\n                            </Col>\n                            <TeamCard usuario='devmariano' />\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col>\n                            <Col>\n                            </Col>\n                            <Col>\n                            </Col>\n                            <TeamCard usuario='rodrigopieritz' />\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col>\n                            <Col>\n                            </Col>\n                            <Col>\n                            </Col>\n                            <TeamCard usuario='glautonOsorio' />\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col>\n                            <Col>\n                            </Col>\n                            <Col>\n                            </Col>\n                            <TeamCard usuario='CesarNahra' />\n                        </Col>\n                    </Row>\n                </Row >\n            </Col >\n            <Footer/>\n        </Container >\n    )\n}"
  },
  {
    "path": "Diversão/src/pages/PaginaEasterEgg/Style.css",
    "content": ".cardEaster{\ndisplay: flex;\n}\n\n#teamCard{\n    display: block;\n    max-width: 280px;\n}\n\n#aboutUs {\n    display: block;\n    background-color: black;\n    height: 500px;\n    padding: 50px;\n    color: white;\n}\n\n@media (max-width: 600px)\n{\n  .cardEaster\n   {\n    display: block;\n    \n   }\n   #aboutUs {\n    margin-top: -50px;\n}\n}"
  },
  {
    "path": "Diversão/src/pages/PaginaPrincipal/PaginaPrincipal.jsx",
    "content": "import Footer from \"../../components/Footer/Footer\";\nimport Header from \"../../components/Header/Header\";\nimport PrincipalBody from \"../../components/PrincipalBody/PrincipalBody\";\n\nconst PaginaPrincipal = () => {\n  return (\n    <div>\n      <Header />\n      <PrincipalBody />\n      <Footer />\n    </div>\n  );\n};\n\nexport default PaginaPrincipal;\n"
  },
  {
    "path": "Diversão/src/pages/PaginaSquad/Index.jsx",
    "content": "import './Style.css'\nimport { Col, Row } from 'react-bootstrap'\nimport Image from 'react-bootstrap/Image';\nimport Container from 'react-bootstrap/Container';\nimport TeamCard from '../../components/teamCard/Index'\nimport eag from '../../assets/yoshi5.gif'\nimport Header from '../../components/Header/Header';\nimport Footer from '../../components/Footer/Footer';\n\nexport const PaginaSquad = () => {\n    return (\n        <Container fluid>\n            <Header />\n            <Col>\n                <Col className='text-center'>\n                    <h2 style={{ margin: '40px' }}>Equipe de Desenvolvimento Web - Trindade</h2>\n                  \n                    <hr />\n                </Col>\n                <Row>\n                    <Row>\n                        <Col className='cardEaster'>\n                            <Col id='teamCard'>\n                                <TeamCard usuario='portexrp' />\n                            </Col>\n                            <Col id='aboutUs'>\n                                <h3>Skills</h3>\n                                <hr />\n                                <p>Node js </p>\n                                <p>SQL </p>\n                                <p>React</p>\n                                <p>Javascript</p>\n                                <p>PHP</p>\n                                <p>Quality Assurance - Tester</p>\n                                <p>Linux</p>\n                                <p>Rede</p>\n                            </Col>\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col className='cardEaster'>\n                            <Col id='teamCard'>\n                                <TeamCard usuario='devmariano' />\n                            </Col>\n                            <Col id='aboutUs'>\n                                <h3>Skills</h3>\n                                <hr />\n                                <p>Node js </p>\n                                <p>SQL </p>\n                                <p>React</p>\n                                <p>Javascript</p>\n                            </Col>\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col className='cardEaster'>\n                            <Col id='teamCard'>\n                                <TeamCard usuario='rodrigopieritz' />\n                            </Col>\n                            <Col id='aboutUs'>\n                                <h3>Skills</h3>\n                                <hr />\n                                <p>Node js </p>\n                                <p>SQL </p>\n                                <p>React</p>\n                                <p>Javascript</p>\n                            </Col>\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col className='cardEaster'>\n                            <Col id='teamCard'>\n                                <TeamCard usuario='glautonOsorio' />\n                            </Col>\n                            <Col id='aboutUs'>\n                                <h3>Skills</h3>\n                                <hr />\n                                <p>Node js </p>\n                                <p>SQL </p>\n                                <p>React</p>\n                                <p>Javascript</p>\n                            </Col>\n                        </Col>\n                    </Row>\n                    <Row>\n                        <Col className='cardEaster'>\n                            <Col id='teamCard'>\n                                <TeamCard usuario='CesarNahra' />\n                            </Col>\n                            <Col id='aboutUs'>\n                                <h3>Skills</h3>\n                                <hr />\n                                <p>Node js </p>\n                                <p>SQL </p>\n                                <p>React</p>\n                                <p>Javascript</p>\n                            </Col>\n                        </Col>\n                    </Row>\n                </Row >\n            </Col >\n            <Footer />\n        </Container >\n    )\n}"
  },
  {
    "path": "Diversão/src/pages/PaginaSquad/Style.css",
    "content": ".cardEaster{\ndisplay: flex;\n}\n\n#teamCard{\n    display: block;\n    max-width: 280px;\n}\n\n#aboutUs {\n    display: block;\n    background-color: black;\n    height: 500px;\n    padding: 50px;\n    color: white;\n}\n\n@media (max-width: 600px)\n{\n  .cardEaster\n   {\n    display: block;\n    \n   }\n   #aboutUs {\n    margin-top: -50px;\n}\n}"
  },
  {
    "path": "Diversão/src/pages/error404/Index.jsx",
    "content": "import { ErrorComponent } from '../../components/error/Index'\nimport './Style.css'\n\n\nexport const Error404 = ()=>{\n    return (\n        <>\n        <ErrorComponent/>        \n        </>\n    )\n}"
  },
  {
    "path": "Diversão/src/pages/error404/Style.css",
    "content": ""
  },
  {
    "path": "Diversão/src/server/db.json",
    "content": "{\n  \"produtos\": [\n    {\n      \"id\": 1,\n      \"nome\": \"Cadeira de Criança colorida um\",\n      \"moeda\": \"R$\",\n      \"preço\": \"30.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/01/00/img/3653861/0/3653861027_1GG.jpg\"\n    },\n    {\n      \"id\": 2,\n      \"nome\": \"Console Playstation 5 Edição Digital 825GB ssd Sony\",\n      \"moeda\": \"R$\",\n      \"preço\": \"3599.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/7291335766/imagens/console-playstation-5-edicao-digital-825gb-ssd-sony/7291335774_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 3,\n      \"nome\": \"Guarda Roupa Casal Hera 8 Portas E 4 Gavetas Imbuia\",\n      \"moeda\": \"R$\",\n      \"preço\": \"45.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/5698332031/imagens/cadeira-banco-plastica-brinquedo-infantil-colorida-escola-un/5698332049_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 4,\n      \"nome\": \"Guarda-Roupa Solteiro Malibu 4 pt Imbuia e Off White\",\n      \"moeda\": \"R$\",\n      \"preço\": \"496.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/61188794/imagens/guarda-roupa-solteiro-malibu-4-pt-imbuia-e-off-white/61188791_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 5,\n      \"nome\": \"Sofá 3 Lugares Retrátil e Reclinável Cama inBox Compact 1,80m Velusoft Café\",\n      \"moeda\": \"R$\",\n      \"preço\": \"1098.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/3072707478/imagens/sofa-3-lugares-retratil-e-reclinavel-cama-inbox-compact-1-80m-velusoft-cafe/3072707486_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 6,\n      \"nome\": \"Cadeira de Criança colorida seis\",\n      \"moeda\": \"R$\",\n      \"preço\": \"52.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/5049198388/imagens/cadeira-infantil-turquesa-jm-moveis/5049198417_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 7,\n      \"nome\": \"Sofá de Canto Retrátil 5 lugares Qatar Suede Cinza\",\n      \"moeda\": \"R$\",\n      \"preço\": \"979.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/01/00/img/49454797/9/4945479786_1SZ.jpg\"\n    },\n    {\n      \"id\": 8,\n      \"nome\": \"Console Xbox Series S 500gb Ssd\",\n      \"moeda\": \"R$\",\n      \"preço\": \"2299.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/01/00/img/2117190/5/2117190565_2SZ.jpg\"\n    },\n    {\n      \"id\": 9,\n      \"nome\": \"Cama Box Casal Colchão Molas Flora Bege 138x188x60cm Marrom\",\n      \"moeda\": \"R$\",\n      \"preço\": \"879.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/5761173408/imagens/cama-box-casal-colchao-molas-flora-bege-138x188x60cm-marrom/5761173408_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 10,\n      \"nome\": \"Cama Box Queen Colchão Molas Ensacadas\",\n      \"moeda\": \"R$\",\n      \"preço\": \"1983.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/4683808649/imagens/cama-box-queen-colchao-molas-ensacadas-com-pillow-top-extra-conforto-158x198x72cm-premium-sleep-bf-colchoes/4683808657_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 11,\n      \"nome\": \"Cadeira De Escritorio Com Base Cromada Prizi Essencial - Preta\",\n      \"moeda\": \"R$\",\n      \"preço\": \"148.40\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/3646386150/imagens/cadeira-de-escritorio-com-base-cromada-prizi-essencial-preta/3646386168_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 12,\n      \"nome\": \"Cama Box Casal Colchão Molas Flora Bege 138x188x60cm Marrom\",\n      \"moeda\": \"R$\",\n      \"preço\": \"879.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/5761173408/imagens/cama-box-casal-colchao-molas-flora-bege-138x188x60cm-marrom/5761173408_1_xlarge.jpg\"\n    },\n    {\n      \"id\": 13,\n      \"nome\": \"Cadeira De Escritório Presidente Best C302 Giratória Tela Mesh\",\n      \"moeda\": \"R$\",\n      \"preço\": \"323.91\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/4803475616/imagens/cadeira-de-escritorio-presidente-best-c302-giratoria-tela-mesh/4803475624_1_xlarge.jpg\"\n    }\n  ],\n  \"carrinho\": [\n    {\n      \"produto_id\": 4,\n      \"nome\": \"Guarda-Roupa Solteiro Malibu 4 pt Imbuia e Off White\",\n      \"moeda\": \"R$\",\n      \"preço\": \"496.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/61188794/imagens/guarda-roupa-solteiro-malibu-4-pt-imbuia-e-off-white/61188791_1_xlarge.jpg\",\n      \"id\": 1\n    },\n    {\n      \"produto_id\": 2,\n      \"nome\": \"Console Playstation 5 Edição Digital 825GB ssd Sony\",\n      \"moeda\": \"R$\",\n      \"preço\": \"3599.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/7291335766/imagens/console-playstation-5-edicao-digital-825gb-ssd-sony/7291335774_1_xlarge.jpg\",\n      \"id\": 2\n    },\n    {\n      \"produto_id\": 5,\n      \"nome\": \"Sofá 3 Lugares Retrátil e Reclinável Cama inBox Compact 1,80m Velusoft Café\",\n      \"moeda\": \"R$\",\n      \"preço\": \"1098.00\",\n      \"imagem\": \"https://images-americanas.b2w.io/produtos/3072707478/imagens/sofa-3-lugares-retratil-e-reclinavel-cama-inbox-compact-1-80m-velusoft-cafe/3072707486_1_xlarge.jpg\",\n      \"id\": 3\n    }\n  ]\n}"
  },
  {
    "path": "Diversão/src/services/CarrinhoService/CarrinhoService.jsx",
    "content": "const API_URL = `http://localhost:3000/carrinho`;\n\nconst Get = async () => {\n  const response = await fetch(API_URL);\n  const data = await response.json();\n  return data;\n};\n\nconst Create = async (newData) => {\n  await fetch(API_URL, {\n    method: \"POST\",\n    body: JSON.stringify({\n      produto_id: newData.produto_id,\n      nome: newData.nome,\n      preço: newData.preço,\n      imagem: newData.imagem,\n      quantidade: 1,\n    }),\n    headers: {\n      \"Content-type\": \"application/json\",\n    },\n  })\n    .then((res) => {\n      alert(\"Cadastrado com sucesso\");\n    })\n    .catch((err) => {\n      alert(`Erro ao cadastrar ${err.message}`);\n    });\n};\n\nconst Delete = async (id) => {\n  await fetch(`http://localhost:3000/carrinho/${id}`, {\n    method: \"Delete\",\n    headers: {\n      \"Content-type\": \"application/json\",\n    },\n  });\n};\nexport const Compra = {\n  Get,\n  Create,\n  Delete,\n};\n"
  },
  {
    "path": "Diversão/src/services/ProdutosService/Produtos.jsx",
    "content": "const API_URL = `http://localhost:3000/produtos`;\n\nconst Get = async () => {\n  const response = await fetch(API_URL);\n  const data = await response.json();\n  return data;\n};\n\nexport const ListaDeProdutos = {\n  Get,\n};\n"
  },
  {
    "path": "Diversão/vite.config.js",
    "content": "import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [react()],\n})\n"
  },
  {
    "path": "README.md",
    "content": "\n"
  }
]