- <%= if submission.attendee_identifier do %>
-
<%= for res <- submission.response do %>
diff --git a/lib/claper_web/live/event_live/manage_floating_action_bar.ex b/lib/claper_web/live/event_live/manage_floating_action_bar.ex
index 770c1a6..81c7123 100644
--- a/lib/claper_web/live/event_live/manage_floating_action_bar.ex
+++ b/lib/claper_web/live/event_live/manage_floating_action_bar.ex
@@ -4,14 +4,16 @@ defmodule ClaperWeb.EventLive.ManageFloatingActionBar do
def render(assigns) do
~H"""
-
- <.link
+
+ <.action_item
patch={~p"/e/#{@event_code}/manage/add/poll"}
- class="flex items-center gap-x-2 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors text-gray-700"
+ title={gettext("Poll")}
+ label={gettext("Polls")}
+ description={gettext("Add a poll to gauge your audience's opinion.")}
>
-
{gettext("Polls")}
-
+
-
-
- <.link
+ <.action_item
patch={~p"/e/#{@event_code}/manage/add/form"}
- class="flex items-center gap-x-2 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors text-gray-700"
+ title={gettext("Form")}
+ label={gettext("Forms")}
+ description={gettext("Create a form to collect feedback from your audience.")}
>
-
{gettext("Forms")}
-
+
-
-
- <.link
+ <.action_item
patch={~p"/e/#{@event_code}/manage/add/embed"}
- class="flex items-center gap-x-2 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors text-gray-700"
+ title={gettext("Web Content")}
+ label={gettext("Web Content")}
+ description={gettext("Embed external web content into your presentation.")}
>
-
{gettext("Web Content")}
-
+
-
-
- <.link
+ <.action_item
patch={~p"/e/#{@event_code}/manage/add/quiz"}
- class="flex items-center gap-x-2 px-4 py-2 rounded-full hover:bg-gray-100 transition-colors text-gray-700"
+ title={gettext("Quiz")}
+ label={gettext("Quiz")}
+ description={gettext("Test your audience's knowledge with a quiz.")}
>
-
{gettext("Quiz")}
-
+
+
+
+ """
+ end
+
+ defp action_item(assigns) do
+ ~H"""
+
+ <.link
+ patch={@patch}
+ class="relative flex flex-col items-center justify-center gap-0.5 h-16 px-4 py-1.5 rounded-full text-gray-800 transition-all duration-200 hover:bg-primary-50 hover:border hover:border-primary-500 hover:text-primary-600 border border-transparent"
+ >
+
+ {render_slot(@inner_block)}
+
+
{@label}
+
+
+
+
+
{@title}
+
{@description}
+
"""
diff --git a/lib/claper_web/live/event_live/manage_interaction_list_component.ex b/lib/claper_web/live/event_live/manage_interaction_list_component.ex
index 7c6eba3..9e7638e 100644
--- a/lib/claper_web/live/event_live/manage_interaction_list_component.ex
+++ b/lib/claper_web/live/event_live/manage_interaction_list_component.ex
@@ -9,22 +9,20 @@ defmodule ClaperWeb.EventLive.ManageInteractionListComponent do
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
- viewBox="0 0 24 24"
+ viewBox="0 0 20 20"
fill="none"
class="shrink-0"
>
diff --git a/lib/claper_web/live/event_live/manage_interaction_options_component.ex b/lib/claper_web/live/event_live/manage_interaction_options_component.ex
new file mode 100644
index 0000000..7a9511f
--- /dev/null
+++ b/lib/claper_web/live/event_live/manage_interaction_options_component.ex
@@ -0,0 +1,214 @@
+defmodule ClaperWeb.EventLive.ManageInteractionOptionsComponent do
+ @moduledoc false
+ use Phoenix.Component
+ use Gettext, backend: ClaperWeb.Gettext
+
+ def render(assigns) do
+ assigns = assigns |> assign_new(:show_shortcut, fn -> true end)
+
+ ~H"""
+
+
+
+
{gettext("Current interaction options")}
+
+
+
+ <%= case @current_interaction do %>
+ <% %Claper.Polls.Poll{} -> %>
+
+
+
+
+
+
+
+ {gettext("Hide results on presentation")}
+
+
+ {gettext("Show results on presentation")}
+
+
+ z
+
+
+
+
+ <% %Claper.Quizzes.Quiz{} -> %>
+
+
+
+
+
+
+
+ {gettext("Hide results on presentation")}
+
+
+ {gettext("Show results on presentation")}
+
+
+ z
+
+
+
+
+
+
+
+
+ {gettext("Review questions")}
+
+
+
+
+
+
+
+
+
+ {gettext("Previous")}
+
+
+
+
+ {gettext("Next")}
+
+
+
+
+
+ <% nil -> %>
+
{gettext("No interaction enabled")}
+ <% _ -> %>
+
{gettext("No settings available for this interaction")}
+ <% end %>
+
+
+ """
+ end
+end
diff --git a/lib/claper_web/live/event_live/manage_presentation_options_component.ex b/lib/claper_web/live/event_live/manage_presentation_options_component.ex
new file mode 100644
index 0000000..ef72179
--- /dev/null
+++ b/lib/claper_web/live/event_live/manage_presentation_options_component.ex
@@ -0,0 +1,159 @@
+defmodule ClaperWeb.EventLive.ManagePresentationOptionsComponent do
+ @moduledoc false
+ use Phoenix.Component
+ use Gettext, backend: ClaperWeb.Gettext
+
+ def render(assigns) do
+ assigns = assigns |> assign_new(:show_shortcut, fn -> true end)
+
+ ~H"""
+
+
+
+
{gettext("Presentation Options")}
+
+
+
+ <.toggle_row
+ label={if @state.join_screen_visible, do: gettext("Hide instructions to join"), else: gettext("Show instructions to join")}
+ checked={@state.join_screen_visible}
+ key={:join_screen_visible}
+ shortcut={if @create == nil, do: "Q", else: nil}
+ show_shortcut={@show_shortcut}
+ >
+ <:icon>
+
+
+
+ <.toggle_row
+ label={if @state.chat_visible, do: gettext("Hide messages"), else: gettext("Show messages")}
+ checked={@state.chat_visible}
+ key={:chat_visible}
+ shortcut={if @create == nil, do: "W", else: nil}
+ show_shortcut={@show_shortcut}
+ >
+ <:icon>
+
+
+
+ <.toggle_row
+ label={if @state.show_only_pinned, do: gettext("Show all messages"), else: gettext("Show pinned messages")}
+ checked={@state.show_only_pinned}
+ key={:show_only_pinned}
+ shortcut={if @create == nil, do: "E", else: nil}
+ disabled={!@state.chat_visible}
+ show_shortcut={@show_shortcut}
+ >
+ <:icon>
+
+
+
+ <.toggle_row
+ label={if @state.chat_enabled, do: gettext("Disable messages"), else: gettext("Enable messages")}
+ checked={@state.chat_enabled}
+ key={:chat_enabled}
+ shortcut={if @create == nil, do: "A", else: nil}
+ show_shortcut={@show_shortcut}
+ >
+ <:icon>
+
+
+
+ <.toggle_row
+ label={if @state.anonymous_chat_enabled, do: gettext("Reject anonymous messages"), else: gettext("Allow anonymous messages")}
+ checked={@state.anonymous_chat_enabled}
+ key={:anonymous_chat_enabled}
+ shortcut={if @create == nil, do: "S", else: nil}
+ disabled={!@state.chat_enabled}
+ show_shortcut={@show_shortcut}
+ >
+ <:icon>
+
+
+
+
+
+ """
+ end
+
+ attr :label, :string, required: true
+ attr :checked, :boolean, required: true
+ attr :key, :atom, required: true
+ attr :shortcut, :string, default: nil
+ attr :disabled, :boolean, default: false
+ attr :show_shortcut, :boolean, default: true
+ slot :icon, required: true
+
+ defp toggle_row(assigns) do
+ ~H"""
+
+
+ {render_slot(@icon)}
+
+
+ {@label}
+
+
+
+ {@shortcut}
+
+
+
+
+ """
+ end
+end
diff --git a/lib/claper_web/live/event_live/manage_slide_preview_component.ex b/lib/claper_web/live/event_live/manage_slide_preview_component.ex
index 56ed52c..ea927b7 100644
--- a/lib/claper_web/live/event_live/manage_slide_preview_component.ex
+++ b/lib/claper_web/live/event_live/manage_slide_preview_component.ex
@@ -12,11 +12,11 @@ defmodule ClaperWeb.EventLive.ManageSlidePreviewComponent do
-
diff --git a/lib/claper_web/live/event_live/manage_slide_sidebar_component.ex b/lib/claper_web/live/event_live/manage_slide_sidebar_component.ex
index 1284ba3..45167c8 100644
--- a/lib/claper_web/live/event_live/manage_slide_sidebar_component.ex
+++ b/lib/claper_web/live/event_live/manage_slide_sidebar_component.ex
@@ -7,12 +7,12 @@ defmodule ClaperWeb.EventLive.ManageSlideSidebarComponent do
~H"""
-
-
-
+
+
+
- {gettext("Content")}
+ {gettext("Content")}