<div id="root"></div>
body {
  height: 100vh;
  margin: 0;
  display: grid;
  place-items: center;
}
.box {
  width: 300px;
  h1 {
    font-size: 20px;
    margin: 0 0 1rem 0;
  }
}
View Compiled
import React, { useState } from "https://esm.sh/react@18";
import ReactDOM from "https://esm.sh/react-dom@18";

const App = () => {
  const [data, setData] = useState({
    name: "Chris",
    email: "chris@email.test",
    presence: false,
    diet: ""
  });

  const setField = (field) => (event) =>
    setData((currentData) => ({ ...currentData, [field]: event.target.value }));

  const action = () => console.log("Saving...", data);

  return (
    <div className="App">
      <form>
        <fieldset>
          <legend>Identity</legend>
          <div>
            <label for="name">Name : </label>
            <input
              type="text"
              id="name"
              value={data.name}
              onChange={setField("name")}
            />
          </div>
          <div>
            <label for="email">Email : </label>
            <input
              id="email"
              type="email"
              value={data.email}
              onChange={setField("email")}
            />
          </div>
        </fieldset>

        <fieldset>
          <legend>Event</legend>
          <div>
            <label for="presence">Presence : </label>
            <input
              type="checkbox"
              id="presence"
              value={data.presence}
              onChange={setField("presence")}
            />
          </div>
          <div>
            <label for="diet">Diet : </label>
            <input
              id="diet"
              value={data.diet}
              onChange={setField("diet")}
              disabled={!data.presence}
            />
          </div>
        </fieldset>

        <button onClick={action} type="button">
          {" "}
          Submit{" "}
        </button>
      </form>
    </div>
  );
};

ReactDOM.render(<App />, document.getElementById("root"));
View Compiled

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css

External JavaScript

This Pen doesn't use any external JavaScript resources.