diff --git a/src/assets/activities/cat.jpg b/src/assets/activities/cat.jpg new file mode 100644 index 0000000..378736d Binary files /dev/null and b/src/assets/activities/cat.jpg differ diff --git a/src/data/content.js b/src/data/content.js index 650b974..61515f2 100644 --- a/src/data/content.js +++ b/src/data/content.js @@ -11,11 +11,13 @@ import { RandomJoke } from "../pages/activities/RandomJoke"; import { RandomAnimeQuote } from "../pages/activities/RandomAnimeQuote"; import meme from "../assets/activities/meme.jpg" import dog from "../assets/activities/dogimage.jpeg" +import cat from "../assets/activities/cat.jpg" import numberblocs from "../assets/numberblocks.png" import wordleicon from "../assets/games/Wordle/wordlejpg.png" import flagger from "../assets/games/flag guess/flagger.png" import Calculator from "../pages/activities/Calculator" import { DogHttpCode } from "../pages/activities/DogHttpCode"; +import { CatHttpCode } from "../pages/activities/CatHttpCode"; export const activities = [ { @@ -74,6 +76,13 @@ export const activities = [ urlTerm: "dog-http-status", element: }, + { + title: "Cat Http Status Code", + description: "Get random cat images or meme", + icon: cat, + urlTerm: "cat-http-status", + element: + }, ]; export const games = [ diff --git a/src/pages/activities/CatHttpCode.js b/src/pages/activities/CatHttpCode.js new file mode 100644 index 0000000..7b11d15 --- /dev/null +++ b/src/pages/activities/CatHttpCode.js @@ -0,0 +1,42 @@ +import "../../styles/pages/activities/CatHttpCode.css" +import { useState } from "react"; + +export const CatHttpCode = () => { + const [httpCode, setHttpCode] = useState(""); + const [imageUrl, setImageUrl] = useState(""); + const [error, setError] = useState(""); + + const handleSubmit = (e) => { + e.preventDefault(); + + if (httpCode < 100 || httpCode > 599 || isNaN(httpCode)) { + setError("Please enter a valid HTTP status code (100-599)."); + setImageUrl(""); + } else { + setError(""); //Clear any existing error + setImageUrl(`https://http.cat/${httpCode}.jpg`); //Construct the image url + } + }; + + return ( +
+

Cat Http Status Code

+
+ setHttpCode(e.target.value)} /> + +
+ + {error &&

{error}

} + {imageUrl && ( +
+ {`Cat +
+ )} +
+ ) +} \ No newline at end of file diff --git a/src/styles/pages/activities/CatHttpCode.css b/src/styles/pages/activities/CatHttpCode.css new file mode 100644 index 0000000..7cc0919 --- /dev/null +++ b/src/styles/pages/activities/CatHttpCode.css @@ -0,0 +1,58 @@ +.cat-root { + display: flex; + flex-direction: column; + align-items: center; + margin-top: 20px; +} + +.cat-form { + display: flex; + flex-direction: row; + margin: 20px 0; +} + +.cat-input { + width: 25rem; + height: 5rem; + padding: 0.5rem; + font-size: 16px; + border: 1px solid #ccc; + border-radius: 8px; + margin-right: 10px; + transition: border-color 300ms; +} + +.cat-input:focus { + outline: none; + border-color: blue; +} + +.cat-submit { + font-size: 18px; + background-color: white; + border: 1px solid blue; + color: blue; + padding: 10px 15px; + border-radius: 10px; + transition: background-color 0.3s, transform 0.3s; +} + +.cat-submit:hover { + cursor: pointer; + background-color: rgb(10, 80, 193); + color: white; + transform: scale(1.1); +} + +.cat-error { + color: red; + font-size: 16px; + margin-top: 10px; +} + +.cat-image { + margin-top: 20px; + max-width: 30rem; + max-height: 30rem; + object-fit: contain; +}