Modal
Overlay dialogs and popups
Preview
Props Editor
Source Code
defmodule FeenixUiWeb.Components.ModalComponent do use Phoenix.Component def render(assigns) do assigns = assign_new(assigns, :title, fn -> "Modal Title" end) assigns = assign_new(assigns, :content, fn -> "Modal content goes here" end) assigns = assign_new(assigns, :open, fn -> false end) ~H""" <%= if @open do %> <div class="fixed inset-0 z-50 overflow-y-auto"> <div class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> <div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"></div> <span class="hidden sm:inline-block sm:align-middle sm:h-screen">​</span> <div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"> <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> <div class="sm:flex sm:items-start"> <div class="mt-3 text-center sm:mt-0 sm:text-left w-full"> <h3 class="text-lg leading-6 font-medium text-gray-900 mb-4"> <%= @title %> </h3> <div class="mt-2"> <p class="text-sm text-gray-500"> <%= @content %> </p> </div> </div> </div> </div> <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> <button type="button" class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-primary-600 text-base font-medium text-white hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 sm:ml-3 sm:w-auto sm:text-sm"> Confirm </button> <button type="button" class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"> Cancel </button> </div> </div> </div> </div> <% else %> <button class="px-4 py-2 bg-primary-600 text-white text-sm font-medium rounded-md hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500"> Open Modal </button> <% end %> """ end end