<PhoenixKitWeb.Components.LayoutWrapper.app_layout
  flash={@flash}
  phoenix_kit_current_scope={assigns[:phoenix_kit_current_scope]}
  page_title="User Management"
  current_path={@url_path}
  project_title={@project_title}
  current_locale={@current_locale}
>
  <div class="container flex-col mx-auto px-4 py-6">
    <.admin_page_header
      back={PhoenixKit.Utils.Routes.path("/admin")}
      title="User Management"
      subtitle="Manage user accounts and roles"
    />

    <%!-- Role Management Modal --%>
    <%= if @show_role_modal && @managing_user do %>
      <div class="modal modal-open">
        <div class="modal-box max-w-2xl">
          <h3 class="font-bold text-xl mb-4">
            Manage Roles for {@managing_user.email}
          </h3>

          <form phx-submit="sync_user_roles" class="space-y-4">
            <div class="space-y-2">
              <%= for role <- @all_roles do %>
                <% owner_role? = role.name == PhoenixKit.Users.Role.system_roles().owner %>
                <div class="form-control">
                  <label
                    class={[
                      "label justify-start gap-3",
                      owner_role? && "cursor-not-allowed opacity-70"
                    ]}
                    title={if owner_role?, do: "Owner role cannot be modified", else: nil}
                  >
                    <input
                      type="checkbox"
                      name={"roles[#{role.name}]"}
                      value={role.name}
                      class="checkbox"
                      checked={role.name in @user_roles}
                      disabled={owner_role?}
                    />
                    <div class="flex flex-wrap items-center gap-2">
                      <.role_badge role={role} size={:sm} />
                      <%= if role.is_system_role do %>
                        <span class="badge badge-outline badge-xs h-auto">System</span>
                      <% end %>
                      <%= if role.description do %>
                        <span class="text-sm text-base-content/70">- {role.description}</span>
                      <% end %>
                    </div>
                  </label>
                </div>
              <% end %>
            </div>

            <%= if Enum.empty?(@all_roles) do %>
              <div class="text-center py-8 text-base-content/70">
                <p>No roles available. Create roles first in Role Management.</p>
              </div>
            <% end %>

            <div class="modal-action">
              <button type="submit" class="btn btn-primary">
                Update Roles
              </button>
              <button type="button" phx-click="hide_role_management" class="btn btn-outline">
                Cancel
              </button>
            </div>
          </form>
        </div>
      </div>
    <% end %>

    <%!-- Users Table --%>
    <div class="bg-base-100">
      <.table_default
        id="users-table"
        variant="zebra"
        class="w-full"
        toggleable={true}
        items={@users}
        card_title={fn user -> user.email end}
        card_fields={
          fn user ->
            build_card_fields(
              user,
              @selected_columns,
              @phoenix_kit_current_user,
              @date_time_settings
            )
          end
        }
      >
        <:toolbar_title>
          <form phx-change="search" class="contents">
            <label class="input input-sm w-full md:w-80 lg:w-96 min-w-0">
              <.icon name="hero-magnifying-glass" class="h-4 w-4 opacity-50" />
              <input
                type="search"
                name="search"
                value={@search_query}
                placeholder="Search by email, username, or name..."
                class="grow"
                phx-debounce="300"
              />
            </label>
          </form>
        </:toolbar_title>
        <:toolbar_actions>
          <%!-- Role Filter --%>
          <span class="text-sm text-base-content/70 whitespace-nowrap">Role:</span>
          <form phx-change="filter_by_role" class="contents">
            <select name="role" class="select select-sm w-36 min-w-0">
              <option value="all" selected={@filter_role == "all"}>All Users</option>
              <option value="Owner" selected={@filter_role == "Owner"}>Owners Only</option>
              <option value="Admin" selected={@filter_role == "Admin"}>Admins Only</option>
              <option value="User" selected={@filter_role == "User"}>Regular Users</option>
            </select>
          </form>
          <%!-- Account Type Filter --%>
          <%= if @org_accounts_enabled do %>
            <span class="text-sm text-base-content/70 whitespace-nowrap">
              {gettext("Account type:")}
            </span>
            <form phx-change="filter_by_account_type" class="contents">
              <select
                class="select select-sm w-40 min-w-0"
                name="account_type"
                value={@filter_account_type}
              >
                <option value="all" selected={@filter_account_type == "all"}>
                  {gettext("All Types")}
                </option>
                <option value="person" selected={@filter_account_type == "person"}>
                  {gettext("Person")}
                </option>
                <option value="organization" selected={@filter_account_type == "organization"}>
                  {gettext("Organization")}
                </option>
              </select>
            </form>
          <% end %>
          <button
            class="btn btn-sm btn-info"
            phx-click="show_column_modal"
            title="Customize columns"
          >
            <.icon name="hero-view-columns" class="h-4 w-4" />
          </button>
          <.link
            navigate={PhoenixKit.Utils.Routes.path("/admin/users/new")}
            class="btn btn-sm btn-primary"
          >
            <PhoenixKitWeb.Components.Core.Icons.icon_user_add class="h-4 w-4" /> Add New User
          </.link>
        </:toolbar_actions>
        <:card_header :let={user}>
          <div class="flex items-center gap-3">
            <.user_avatar user={user} size="sm" />
            <div class="flex flex-col gap-0.5 min-w-0">
              <div class="flex flex-wrap items-center gap-2">
                <span class="font-medium text-sm truncate">{user.email}</span>
                <%= if user.uuid == @phoenix_kit_current_user.uuid do %>
                  <span class="badge badge-info badge-xs h-auto">you</span>
                <% end %>
                <%= if User.full_name(user) && User.full_name(user) != "" do %>
                  <span class="text-sm text-base-content/60">{User.full_name(user)}</span>
                <% end %>
              </div>
              <%= if user.username do %>
                <div class="text-xs text-base-content/50">@{user.username}</div>
              <% end %>
            </div>
          </div>
        </:card_header>
        <.table_default_header>
          <.table_default_row>
            <%= for column_id <- @selected_columns do %>
              <%= if should_render_column?(column_id) do %>
                <.table_default_header_cell>
                  {render_column_header(column_id)}
                </.table_default_header_cell>
              <% end %>
            <% end %>
          </.table_default_row>
        </.table_default_header>

        <.table_default_body>
          <%= if @users == [] do %>
            <.table_default_row>
              <.table_default_cell colspan={
                Enum.count(@selected_columns, &should_render_column?/1)
              }>
                <div class="text-center py-12">
                  <PhoenixKitWeb.Components.Core.Icons.icon_users_multiple class="h-16 w-16 mx-auto text-base-content/40 mb-4" />
                  <h3 class="text-lg font-medium text-base-content mb-2">
                    No users found
                  </h3>
                  <% filters_active? =
                    @search_query != "" or @filter_role != "all" or
                      @filter_account_type != "all" %>
                  <p class="text-base-content/70 mb-4">
                    <%= if filters_active? do %>
                      Try adjusting your search or filter criteria.
                    <% else %>
                      No users are registered yet.
                    <% end %>
                  </p>
                  <%= if filters_active? do %>
                    <button class="btn btn-outline btn-sm" phx-click="clear_filters">
                      Clear Filters
                    </button>
                  <% end %>
                </div>
              </.table_default_cell>
            </.table_default_row>
          <% else %>
            <%= for user <- @users do %>
              <.table_default_row>
                <%= for column_id <- @selected_columns do %>
                  <%= if should_render_column?(column_id) do %>
                    <.table_default_cell>
                      <%= cond do %>
                        <% column_id == "email" -> %>
                          <.link
                            navigate={
                              PhoenixKit.Utils.Routes.path("/admin/users/view/#{user.uuid}")
                            }
                            class="flex items-center gap-3 hover:opacity-80 transition-opacity"
                          >
                            <.user_avatar user={user} size="sm" />
                            <div class="flex flex-col gap-1">
                              <div class="flex flex-wrap items-center gap-2">
                                <span class="font-medium link link-hover">{user.email}</span>
                                <%= if user.uuid == @phoenix_kit_current_user.uuid do %>
                                  <span class="badge badge-info badge-xs h-auto">you</span>
                                <% end %>
                                <%= if @org_accounts_enabled && user.account_type == "organization" do %>
                                  <span class="badge badge-primary badge-xs h-auto">
                                    {gettext("Org")}
                                  </span>
                                <% end %>
                              </div>
                              <%= if user.username do %>
                                <div class="text-sm text-base-content/60">
                                  @{user.username}
                                </div>
                              <% end %>
                            </div>
                          </.link>
                        <% column_id == "full_name" -> %>
                          <div class="flex flex-col gap-1">
                            <%= if user.first_name || user.last_name || user.organization_name do %>
                              <div>{PhoenixKit.Users.Auth.User.full_name(user)}</div>
                            <% else %>
                              <div class="text-base-content/50">-</div>
                            <% end %>
                            <%= if @org_accounts_enabled && user.organization do %>
                              <div class="text-xs text-base-content/60">
                                {user.organization.organization_name}
                              </div>
                            <% end %>
                          </div>
                        <% column_id == "role" -> %>
                          <% user_roles = get_user_roles(user) %>
                          <div class="flex flex-wrap gap-1">
                            <%= for role_name <- user_roles do %>
                              <.role_badge
                                role={%{name: role_name, is_system_role: false}}
                                size={:sm}
                              />
                            <% end %>
                            <%= if Enum.empty?(user_roles) do %>
                              <span class="badge badge-ghost badge-sm h-auto">No roles</span>
                            <% end %>
                          </div>
                        <% column_id == "status" -> %>
                          <div class="flex flex-col gap-1">
                            <%= if user.confirmed_at do %>
                              <span class="badge badge-success badge-sm h-auto">Confirmed</span>
                            <% else %>
                              <span class="badge badge-warning badge-sm h-auto">Pending</span>
                            <% end %>
                            <%= if user.is_active do %>
                              <span class="badge badge-outline badge-xs h-auto">
                                {gettext("Active")}
                              </span>
                            <% else %>
                              <span class="badge badge-error badge-xs h-auto">
                                {gettext("Inactive")}
                              </span>
                            <% end %>
                          </div>
                        <% column_id == "registered" -> %>
                          <div class="text-sm">
                            <div class="flex flex-col gap-1">
                              <div>
                                {UtilsDate.format_date_with_user_timezone_cached(
                                  user.inserted_at,
                                  @phoenix_kit_current_user,
                                  @date_time_settings
                                )}
                              </div>
                              <div class="text-xs text-base-content/70">
                                {UtilsDate.format_time_with_user_timezone_cached(
                                  user.inserted_at,
                                  @phoenix_kit_current_user,
                                  @date_time_settings
                                )}
                              </div>
                            </div>
                          </div>
                        <% column_id == "location" -> %>
                          <div class="text-sm">
                            <div class="flex flex-col gap-1">
                              <%= if user.registration_country || user.registration_region || user.registration_city || user.registration_ip do %>
                                <%= if user.registration_country do %>
                                  <div class="flex items-center gap-1">
                                    <span class="badge badge-outline badge-xs h-auto">
                                      {user.registration_country}
                                    </span>
                                  </div>
                                <% end %>
                                <%= if user.registration_region || user.registration_city do %>
                                  <div class="text-xs text-base-content/70">
                                    <%= if user.registration_region && user.registration_city do %>
                                      {user.registration_region}, {user.registration_city}
                                    <% else %>
                                      {user.registration_region || user.registration_city}
                                    <% end %>
                                  </div>
                                <% end %>
                                <%= if user.registration_ip do %>
                                  <div class="text-xs text-base-content/50 font-mono">
                                    {user.registration_ip}
                                  </div>
                                <% end %>
                              <% else %>
                                <div class="text-xs text-base-content/50">No data</div>
                              <% end %>
                            </div>
                          </div>
                        <% column_id == "last_confirmed" -> %>
                          <div class="text-sm">
                            <div class="flex flex-col gap-1">
                              <%= if user.confirmed_at do %>
                                <div>
                                  {UtilsDate.format_date_with_user_timezone_cached(
                                    user.confirmed_at,
                                    @phoenix_kit_current_user,
                                    @date_time_settings
                                  )}
                                </div>
                                <div class="text-xs text-base-content/70">
                                  {UtilsDate.format_time_with_user_timezone_cached(
                                    user.confirmed_at,
                                    @phoenix_kit_current_user,
                                    @date_time_settings
                                  )}
                                </div>
                              <% else %>
                                <div>Never</div>
                              <% end %>
                            </div>
                          </div>
                        <% column_id == "actions" -> %>
                          <.table_row_menu
                            id={"user-menu-#{user.uuid}"}
                            label={gettext("User actions")}
                          >
                            <%!-- View --%>
                            <.table_row_menu_link
                              navigate={
                                PhoenixKit.Utils.Routes.path("/admin/users/view/#{user.uuid}")
                              }
                              icon="hero-eye"
                              label={gettext("View")}
                            />
                            <%!-- Edit --%>
                            <.table_row_menu_link
                              navigate={
                                PhoenixKit.Utils.Routes.path("/admin/users/edit/#{user.uuid}")
                              }
                              icon="hero-pencil"
                              label={gettext("Edit")}
                              variant="secondary"
                            />
                            <%!-- Role Management --%>
                            <%= if user.uuid != @phoenix_kit_current_user.uuid do %>
                              <.table_row_menu_button
                                phx-click="show_role_management"
                                phx-value-user_uuid={user.uuid}
                                icon="hero-user-group"
                                label={gettext("Roles")}
                                variant="primary"
                              />
                            <% end %>
                            <%!-- Current user: Settings --%>
                            <%= if user.uuid == @phoenix_kit_current_user.uuid do %>
                              <.table_row_menu_link
                                navigate={PhoenixKit.Utils.Routes.path("/dashboard/settings")}
                                icon="hero-cog-6-tooth"
                                label={gettext("Settings")}
                                variant="info"
                              />
                            <% end %>
                            <%!-- Non-owner actions: confirmation, status, delete --%>
                            <%= if user.uuid != @phoenix_kit_current_user.uuid && get_primary_role_name_unsafe(user) != "Owner" do %>
                              <.table_row_menu_divider />
                              <.table_row_menu_button
                                phx-click="request_confirmation_toggle"
                                phx-value-user_uuid={user.uuid}
                                phx-value-is_confirmed={to_string(!!user.confirmed_at)}
                                icon={
                                  if user.confirmed_at,
                                    do: "hero-envelope-open",
                                    else: "hero-envelope"
                                }
                                label={
                                  if user.confirmed_at,
                                    do: gettext("Unconfirm"),
                                    else: gettext("Confirm")
                                }
                                variant={if user.confirmed_at, do: "success", else: "warning"}
                              />
                              <.table_row_menu_button
                                phx-click="request_status_toggle"
                                phx-value-user_uuid={user.uuid}
                                phx-value-is_active={to_string(user.is_active)}
                                icon={
                                  if user.is_active,
                                    do: "hero-check-circle",
                                    else: "hero-x-circle"
                                }
                                label={
                                  if user.is_active,
                                    do: gettext("Deactivate"),
                                    else: gettext("Activate")
                                }
                                variant={if user.is_active, do: "success", else: "warning"}
                              />
                              <%= if Auth.can_delete_user?(user, @phoenix_kit_current_user) do %>
                                <.table_row_menu_divider />
                                <.table_row_menu_button
                                  phx-click="request_delete_user"
                                  phx-value-user_uuid={user.uuid}
                                  data-confirm="Are you sure you want to delete this user? This action cannot be undone."
                                  icon="hero-trash"
                                  label={gettext("Delete")}
                                  variant="error"
                                />
                              <% end %>
                            <% end %>
                          </.table_row_menu>
                        <% true -> %>
                          <%!-- Handle custom fields and other columns --%>
                          {render_column_cell(
                            user,
                            column_id,
                            @phoenix_kit_current_user,
                            @date_time_settings
                          )}
                      <% end %>
                    </.table_default_cell>
                  <% end %>
                <% end %>
              </.table_default_row>
            <% end %>
          <% end %>
        </.table_default_body>
        <:card_actions :let={user}>
          <.table_row_menu id={"user-card-menu-#{user.uuid}"} label={gettext("User actions")}>
            <.table_row_menu_link
              navigate={PhoenixKit.Utils.Routes.path("/admin/users/view/#{user.uuid}")}
              icon="hero-eye"
              label={gettext("View")}
            />
            <.table_row_menu_link
              navigate={PhoenixKit.Utils.Routes.path("/admin/users/edit/#{user.uuid}")}
              icon="hero-pencil"
              label={gettext("Edit")}
              variant="secondary"
            />
            <%= if user.uuid != @phoenix_kit_current_user.uuid do %>
              <.table_row_menu_button
                phx-click="show_role_management"
                phx-value-user_uuid={user.uuid}
                icon="hero-user-group"
                label={gettext("Roles")}
                variant="primary"
              />
            <% end %>
            <%= if user.uuid == @phoenix_kit_current_user.uuid do %>
              <.table_row_menu_link
                navigate={PhoenixKit.Utils.Routes.path("/dashboard/settings")}
                icon="hero-cog-6-tooth"
                label={gettext("Settings")}
                variant="info"
              />
            <% end %>
            <%= if user.uuid != @phoenix_kit_current_user.uuid && get_primary_role_name_unsafe(user) != "Owner" do %>
              <.table_row_menu_divider />
              <.table_row_menu_button
                phx-click="request_confirmation_toggle"
                phx-value-user_uuid={user.uuid}
                phx-value-is_confirmed={to_string(!!user.confirmed_at)}
                icon={if user.confirmed_at, do: "hero-envelope-open", else: "hero-envelope"}
                label={if user.confirmed_at, do: gettext("Unconfirm"), else: gettext("Confirm")}
                variant={if user.confirmed_at, do: "success", else: "warning"}
              />
              <.table_row_menu_button
                phx-click="request_status_toggle"
                phx-value-user_uuid={user.uuid}
                phx-value-is_active={to_string(user.is_active)}
                icon={if user.is_active, do: "hero-check-circle", else: "hero-x-circle"}
                label={if user.is_active, do: gettext("Deactivate"), else: gettext("Activate")}
                variant={if user.is_active, do: "success", else: "warning"}
              />
              <%= if Auth.can_delete_user?(user, @phoenix_kit_current_user) do %>
                <.table_row_menu_divider />
                <.table_row_menu_button
                  phx-click="request_delete_user"
                  phx-value-user_uuid={user.uuid}
                  data-confirm="Are you sure you want to delete this user? This action cannot be undone."
                  icon="hero-trash"
                  label={gettext("Delete")}
                  variant="error"
                />
              <% end %>
            <% end %>
          </.table_row_menu>
        </:card_actions>
      </.table_default>

      <%!-- Pagination --%>
      <%= if @users != [] && @total_pages > 1 do %>
        <div class="flex justify-center p-4 border-t border-base-300">
          <div class="join">
            <%= for page <- 1..@total_pages do %>
              <button
                class={"join-item btn btn-sm #{if page == @page, do: "btn-active", else: ""}"}
                phx-click="change_page"
                phx-value-page={page}
              >
                {page}
              </button>
            <% end %>
          </div>
        </div>
      <% end %>
    </div>

    <%!-- Enhanced Stats --%>
    <div class="mt-8">
      <h3 class="text-lg font-semibold text-base-content mb-6">User Statistics</h3>

      <%!-- Main Role Stats --%>
      <div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="xl"
          value={@total_users}
          title="Total Users"
          subtitle="All registered accounts"
        >
          <:icon>
            <.icon name="hero-users" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>

        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="xl"
          value={@total_owners}
          title="System Owners"
          subtitle="Complete system authority"
        >
          <:icon>
            <.icon name="hero-shield-check" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>

        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="xl"
          value={@total_admins}
          title="Administrators"
          subtitle="Management privileges"
        >
          <:icon>
            <.icon name="hero-star" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>

        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="xl"
          value={@total_regular_users}
          title="Regular Users"
          subtitle="Standard access level"
        >
          <:icon>
            <.icon name="hero-user" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>
      </div>

      <%!-- Secondary Stats --%>
      <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
        <%!-- Active Users --%>
        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="2xl"
          value={@active_users}
          title="Active Users"
          subtitle="Currently online"
        >
          <:icon>
            <.icon name="hero-check-circle-solid" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>

        <%!-- Inactive Users --%>
        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="2xl"
          value={@inactive_users}
          title="Inactive Users"
          subtitle="Disabled accounts"
        >
          <:icon>
            <.icon name="hero-x-circle-solid" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>

        <%!-- Confirmed Users --%>
        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="2xl"
          value={@confirmed_users}
          title="Email Confirmed"
          subtitle="Verified emails"
        >
          <:icon>
            <.icon name="hero-envelope" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>

        <%!-- Pending Users --%>
        <PhoenixKitWeb.Components.Core.StatCard.stat_card
          compact={true}
          rounded="2xl"
          value={@pending_users}
          title="Pending Email"
          subtitle="Awaiting confirmation"
        >
          <:icon>
            <.icon name="hero-information-circle-solid" class="w-5 h-5" />
          </:icon>
        </PhoenixKitWeb.Components.Core.StatCard.stat_card>
      </div>
    </div>

    <%!-- Column Selection Modal --%>
    <%= if @show_column_modal do %>
      <div class="modal modal-open" id="column-modal">
        <div class="modal-box max-w-5xl max-h-[90vh] overflow-hidden">
          <h3 class="font-bold text-xl mb-4">Customize Table Columns</h3>
          <p class="text-base-content/70 mb-6">
            Drag to reorder selected columns above, or add new columns from the options below. Actions column is always included.
          </p>

          <form phx-submit="update_table_columns" id="column-form">
            <%!-- Hidden input to store the column order for form submission --%>
            <input
              type="hidden"
              name="column_order"
              id="column-order-input"
              value={Enum.join(@temp_selected_columns || @selected_columns, ",")}
            />

            <div class="flex flex-col lg:flex-row gap-6 mb-6">
              <%!-- Selected Columns Section (Left/Top) --%>
              <div class="flex-1">
                <div class="flex items-center justify-between mb-3">
                  <h4 class="text-sm font-semibold text-base-content/80 uppercase tracking-wide">
                    Selected Columns
                  </h4>
                  <span class="text-xs text-base-content/60">
                    Drag to reorder
                  </span>
                </div>
                <.draggable_list
                  id="selected-columns-container"
                  items={
                    Enum.reject(@temp_selected_columns || @selected_columns, &(&1 == "actions"))
                  }
                  item_id={fn col_id -> col_id end}
                  on_reorder="reorder_selected_columns"
                  layout={:list}
                  gap="space-y-2"
                  class="min-h-[200px] max-h-[400px] overflow-y-auto border-2 border-dashed border-base-300 rounded-lg p-3 bg-base-50"
                  item_class="flex items-center p-3 rounded-lg bg-primary/10 border border-primary/30 hover:bg-primary/20 transition-colors"
                >
                  <:item :let={column_id}>
                    <% column_meta = PhoenixKit.Users.TableColumns.get_column_metadata(column_id) %>
                    <div class="drag-handle text-primary/60 mr-3">
                      <.icon name="hero-bars-3" class="h-5 w-5" />
                    </div>
                    <div class="flex flex-col flex-1">
                      <span class="label-text font-medium text-base-content">
                        {(column_meta && column_meta.label) || column_id}
                      </span>
                    </div>
                    <button
                      type="button"
                      class="btn btn-ghost btn-xs btn-circle text-error/60 hover:text-error hover:bg-error/10"
                      phx-click="remove_column"
                      phx-value-column_id={column_id}
                      title="Remove column"
                    >
                      <.icon name="hero-x-mark" class="h-4 w-4" />
                    </button>
                  </:item>
                </.draggable_list>

                <%!-- Empty state for selected columns --%>
                <%= if length(Enum.reject(@temp_selected_columns || @selected_columns, &(&1 == "actions"))) == 0 do %>
                  <div class="text-center py-12 text-base-content/40 border-2 border-dashed border-base-300 rounded-lg mt-2">
                    <.icon name="hero-clipboard-document-list" class="h-12 w-12 mx-auto mb-3" />
                    <p class="text-sm">No columns selected yet</p>
                    <p class="text-xs mt-1">Add columns from the options below</p>
                  </div>
                <% end %>
              </div>

              <%!-- Available Fields Section (Right/Bottom) --%>
              <div class="flex-1">
                <div class="flex items-center justify-between mb-3">
                  <h4 class="text-sm font-semibold text-base-content/80 uppercase tracking-wide">
                    Available Fields
                  </h4>
                  <span class="text-xs text-base-content/60">
                    Click to add
                  </span>
                </div>
                <div class="max-h-[400px] overflow-y-auto border border-base-200 rounded-lg bg-base-100">
                  <%!-- Standard Fields Section --%>
                  <%= if map_size(@available_columns.standard) > 0 do %>
                    <div class="p-3">
                      <h5 class="text-xs font-semibold text-base-content/60 mb-2 uppercase tracking-wide">
                        Standard Fields
                      </h5>
                      <div class="space-y-1">
                        <%= for {column_id, column_meta} <- @available_columns.standard do %>
                          <%= unless column_id in (@temp_selected_columns || @selected_columns) or column_id == "actions" do %>
                            <button
                              type="button"
                              class="available-field w-full flex items-center p-2 rounded-lg hover:bg-base-200 transition-colors text-left border border-transparent hover:border-base-300"
                              phx-click="add_column"
                              phx-value-column_id={column_id}
                              data-column-id={column_id}
                              data-section="available-standard"
                            >
                              <div class="flex flex-col flex-1">
                                <span class="label-text font-medium text-sm text-base-content">
                                  {column_meta.label}
                                </span>
                              </div>
                              <div class="text-success/60">
                                <svg
                                  xmlns="http://www.w3.org/2000/svg"
                                  class="h-4 w-4"
                                  fill="none"
                                  viewBox="0 0 24 24"
                                  stroke="currentColor"
                                >
                                  <path
                                    stroke-linecap="round"
                                    stroke-linejoin="round"
                                    stroke-width="2"
                                    d="M12 4v16m8-8H4"
                                  />
                                </svg>
                              </div>
                            </button>
                          <% end %>
                        <% end %>
                      </div>
                    </div>
                  <% end %>

                  <%!-- Separator Line --%>
                  <%= if map_size(@available_columns.standard) > 0 and map_size(@available_columns.custom) > 0 do %>
                    <div class="border-t border-base-200"></div>
                  <% end %>

                  <%!-- Custom Fields Section --%>
                  <%= if map_size(@available_columns.custom) > 0 do %>
                    <div class="p-3">
                      <h5 class="text-xs font-semibold text-base-content/60 mb-2 uppercase tracking-wide">
                        Custom Fields
                      </h5>
                      <div class="space-y-1">
                        <%= for {column_id, column_meta} <- @available_columns.custom do %>
                          <%= unless column_id in (@temp_selected_columns || @selected_columns) do %>
                            <button
                              type="button"
                              class="available-field w-full flex items-center p-2 rounded-lg hover:bg-base-200 transition-colors text-left border border-transparent hover:border-base-300"
                              phx-click="add_column"
                              phx-value-column_id={column_id}
                              data-column-id={column_id}
                              data-section="available-custom"
                            >
                              <div class="flex flex-col flex-1">
                                <span class="label-text font-medium text-sm text-base-content">
                                  {column_meta.label}
                                </span>
                              </div>
                              <div class="text-success/60">
                                <svg
                                  xmlns="http://www.w3.org/2000/svg"
                                  class="h-4 w-4"
                                  fill="none"
                                  viewBox="0 0 24 24"
                                  stroke="currentColor"
                                >
                                  <path
                                    stroke-linecap="round"
                                    stroke-linejoin="round"
                                    stroke-width="2"
                                    d="M12 4v16m8-8H4"
                                  />
                                </svg>
                              </div>
                            </button>
                          <% end %>
                        <% end %>
                      </div>
                    </div>
                  <% end %>

                  <%!-- No Available Fields Message --%>
                  <%= if get_available_fields_count(@available_columns, @temp_selected_columns || @selected_columns) == 0 do %>
                    <div class="text-center py-8 text-base-content/40">
                      <p class="text-sm">All fields are already selected</p>
                    </div>
                  <% end %>
                </div>
              </div>
            </div>

            <div class="modal-action">
              <button type="submit" class="btn btn-primary">
                Apply Changes
              </button>
              <button type="button" class="btn btn-outline" phx-click="reset_to_defaults">
                Default
              </button>
              <button type="button" class="btn btn-ghost" phx-click="hide_column_modal">
                Cancel
              </button>
            </div>
          </form>
        </div>
        <div class="modal-backdrop" phx-click="hide_column_modal"></div>
      </div>
    <% end %>

    <%!-- Confirmation Modal --%>
    <%= if assigns[:confirmation_modal] && @confirmation_modal.show do %>
      <div class="modal modal-open">
        <div class="modal-box">
          <h3 class="font-bold text-lg">{@confirmation_modal.title}</h3>
          <p class="py-4">{@confirmation_modal.message}</p>
          <div class="modal-action">
            <button class="btn btn-ghost" phx-click="cancel_confirmation">
              Cancel
            </button>
            <button
              class="btn btn-primary"
              phx-click="confirm_action"
              phx-value-action={@confirmation_modal.action}
              phx-value-user_uuid={@confirmation_modal.user_uuid}
            >
              {@confirmation_modal.button_text}
            </button>
          </div>
        </div>
      </div>
    <% end %>
  </div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>
