From e970aa7a26fecfa38041bb1cfa59a1d5f40a0194 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Fri, 23 Aug 2024 15:06:37 -0700 Subject: initial groundwork for interactivity via mdx --- src/components/FFXIVWorldSelector.tsx | 59 +++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/components/FFXIVWorldSelector.tsx (limited to 'src/components/FFXIVWorldSelector.tsx') diff --git a/src/components/FFXIVWorldSelector.tsx b/src/components/FFXIVWorldSelector.tsx new file mode 100644 index 0000000..f2dc4cc --- /dev/null +++ b/src/components/FFXIVWorldSelector.tsx @@ -0,0 +1,59 @@ +import React, { useState, useEffect } from 'react'; + +interface World { + id: number; + name: string; +} + +const FFXIVWorldSelector: React.FC = () => { + const [worlds, setWorlds] = useState([]); + const [selectedWorld, setSelectedWorld] = useState(null); + + useEffect(() => { + const fetchWorlds = async () => { + try { + const response = await fetch('https://universalis.app/api/v2/worlds'); + const data = await response.json(); + setWorlds(data); + } catch (error) { + console.error('Error fetching worlds:', error); + } + }; + + fetchWorlds(); + + // Load selected world from localStorage + const savedWorld = localStorage.getItem('selectedWorld'); + if (savedWorld) { + setSelectedWorld(savedWorld); + } + }, []); + + const handleWorldChange = (event: React.ChangeEvent) => { + const selectedWorld = event.target.value; + setSelectedWorld(selectedWorld); + localStorage.setItem('selectedWorld', selectedWorld); // Save to localStorage + }; + + const handleApplyClick = () => { + window.location.reload(); // Refresh the page + }; + + return ( +
+ + + {selectedWorld &&

Selected World: {selectedWorld}

} + +
+ ); +}; + +export default FFXIVWorldSelector; \ No newline at end of file -- cgit v1.2.3