<div class="flex flex-col justify-start items-stretch space-y-4 h-full">
  <.form
    :let={f}
    for={@changeset}
    id="context-form"
    phx-target={@myself}
    phx-change="validate"
    phx-submit="save"
    phx-hook="CtrlEnter"
    class="flex flex-col justify-start items-stretch space-y-4"
  >
    <%= text_input(f, :slug,
      aria_label: gettext("slug"),
      class: "input input-primary",
      phx_debounce: 300,
      phx_hook: "SanitizeTitles",
      placeholder: gettext("slug"),
      required: true
    ) %>
    <%= error_tag(f, :slug) %>

    <%= textarea(f, :content,
      id: "context-form-content",
      class: "input input-primary h-64 min-h-64",
      phx_update: "ignore",
      placeholder:
        gettext("use [[note-slug]] to link to a note or [context-slug] to link to a context"),
      aria_label:
        gettext("use [[note-slug]] to link to a note or [context-slug] to link to a context"),
      phx_debounce: 300
    ) %>
    <%= error_tag(f, :content) %>

    <%= text_input(f, :tags_string,
      aria_label: gettext("tag1,tag2"),
      class: "input input-primary",
      id: "tags-input",
      phx_debounce: 300,
      phx_hook: "SanitizeTags",
      placeholder: gettext("tag1,tag2")
    ) %>
    <%= error_tag(f, :tags_string) %>

    <div class="flex justify-center items-stretch space-x-4">
      <%= select(f, :visibility, Ecto.Enum.values(Memex.Contexts.Context, :visibility),
        class: "grow input input-primary",
        prompt: gettext("select privacy"),
        aria_label: gettext("select privacy"),
        phx_debounce: 300
      ) %>

      <%= submit(dgettext("actions", "save"),
        phx_disable_with: gettext("saving..."),
        class: "mx-auto btn btn-primary"
      ) %>
    </div>
    <%= error_tag(f, :visibility) %>
  </.form>
</div>