Todo Element

import { useState } from 'react';
import classnames from 'classnames';

import shoppingIcon from './assets/shopping-icon.svg'
import plusIcon from './assets/plus-icon.svg'
import minusIcon from './assets/minus-icon.svg'
import './App.css';

function App() {

  const [value, setValue] = useState('');
  const [todos, setTodos] = useState([
    {title: 'Nasi Goreng', count: 1},
    {title: 'Baso', count: 1},
    {title: 'Mie Ayam', count: 1}
  ]);


  return (
    <>
      <nav className='nav'>
        <img className='nav-icon' src={shoppingIcon} alt="shopping-icon" />
        <h1 className='nav-title'>Shopping List</h1>
      </nav>

      <section className='container'>
        <form className='form'>
          <input 
            onChange={(e) => {setValue(e.target.value)}}
            value={value}
            className='input'
            type='text'
            placeholder="List"
          />
          <button className='add-button' type='submit'>Add</button>
        </form>

        {todos.length > 0 ? (
          <div className="todos">
            {todos.map((todo, index, arr) => {
              return (
                <div key={index} className={`todo ${!(arr.length === index + 1) && 'todo-divider'}`}>
                  {todo.title}

                  <div className='todo-icon-wrapper'>
                    <div className='todo-count'>{todo.count}</div>

                    <button className='todo-action-button'>
                      <img src={minusIcon} alt="minus icon" />
                    </button>

                    <button className='todo-action-button'>
                      <img src={plusIcon} alt="plus icon" />
                    </button>
                  </div>
                </div>
              )
            })}
          </div>
        ) : (
          <div>Kosong</div>
        )}
      </section>

    </>
  );
}

export default App;

Last updated

Was this helpful?