'use client'; import { useState} from 'react'; import type { Meta, StoryObj } from "@storybook/react"; import { getPublicClient } from "../api"; const client = getPublicClient('f5d86791-d513-48de-8fd2-b6dbdd4abe9b'); const TodoListGenerator = () => { const [task, setTask] = useState(''); const [todos, setTodos] = useState([]) as any; const [inputError, setInputError] = useState(''); const [newTaskText, setNewTaskText] = useState(''); const [isLoading, setIsLoading] = useState(false); const handleTaskChange = (e: any) => { setTask(e.target.value); setInputError(''); // Reset error message when user starts typing again. }; const handleNewTaskChange = (e: any) => { setNewTaskText(e.target.value); }; const addNewTask = () => { if (!newTaskText.trim()) { return; // Don't add empty tasks } const newTodo = { id: todos.length, text: newTaskText, completed: false }; setTodos([...todos, newTodo]); setNewTaskText(''); // Reset input after adding }; const generateTodoList = async () => { if (!task.trim()) { setInputError('Please enter a valid task description.'); return; } setIsLoading(true); try { const response = await client?.getCompletion({ model: 'gpt-3.5-turbo', messages: [{ role: 'system', content: `Generate a to-do list for the task: ${task}` }], }); if (response && response.choices && response.choices.length > 0) { const todoItems = response.choices[0].message.content.split('\n').filter((item: any) => item.trim() !== ''); setTodos((oldTodos: any) => [...oldTodos, ...todoItems.map((item: any, index: number) => ({ id: todos.length + index, text: item, completed: false }))]); } } catch (error) { console.error("Error generating to-do list:", error); setInputError('Failed to generate to-do list. Please try again.'); } setIsLoading(false); }; const toggleTodoCompletion = (id: any) => { setTodos(todos.map((todo: any) => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); }; const removeTodo = (id: any) => { setTodos(todos.filter((todo: any) => todo.id !== id)); }; return (
{inputError &&

{inputError}

}
); }; function TextCompleterStory() { return (

To Do List Generator

); } //👇 This default export determines where your story goes in the story list const meta: Meta = { component: TextCompleterStory, }; export default meta; export const DefaultStory: StoryObj = { // harded code values for now 😬 args: {}, };