From e970aa7a26fecfa38041bb1cfa59a1d5f40a0194 Mon Sep 17 00:00:00 2001
From: Pinapelz <yukais@pinapelz.com>
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<World[]>([]);
+  const [selectedWorld, setSelectedWorld] = useState<string | null>(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<HTMLSelectElement>) => {
+    const selectedWorld = event.target.value;
+    setSelectedWorld(selectedWorld);
+    localStorage.setItem('selectedWorld', selectedWorld); // Save to localStorage
+  };
+
+  const handleApplyClick = () => {
+    window.location.reload(); // Refresh the page
+  };
+
+  return (
+    <div>
+      <label htmlFor="world-select">Select a world: </label>
+      <select id="world-select" onChange={handleWorldChange} value={selectedWorld || ''}>
+        <option value="">--Please choose an option--</option>
+        {worlds.map((world) => (
+          <option key={world.id} value={world.name}>
+            {world.name}
+          </option>
+        ))}
+      </select>
+      {selectedWorld && <p>Selected World: {selectedWorld}</p>}
+      <button onClick={handleApplyClick}>Apply</button>
+    </div>
+  );
+};
+
+export default FFXIVWorldSelector;
\ No newline at end of file
-- 
cgit v1.2.3

