Skip to main content

lib/phoenix_kit_referrals/web/settings.html.heex

<div class="container flex flex-col mx-auto px-4 py-6">
  <.admin_page_header
    back={PhoenixKit.Utils.Routes.path("/admin/settings")}
    title={gettext("Referrals Settings")}
    subtitle={gettext("Configure referrals behavior and limits")}
  />

  <%!-- Main Content --%>
  <div class="space-y-8">
    <%!-- Status Card --%>
    <div class="card bg-base-100 shadow-xl">
      <div class="card-body">
        <h2 class="card-title text-2xl mb-4">
          <.icon name="hero-cog-6-tooth" class="w-6 h-6" /> {gettext("Status")}
        </h2>

        <%= if @referral_codes_enabled do %>
          <div class="divider"></div>

          <div class="form-control">
            <label class="label cursor-pointer">
              <span class="label-text text-lg">
                <span class="font-semibold">{gettext("Require Referrals")}</span>
                <div class="text-sm text-base-content/70 mt-1">
                  {gettext("Make referrals mandatory for user registration")}
                </div>
              </span>
              <input
                type="checkbox"
                class="toggle toggle-secondary"
                checked={@referral_codes_required}
                phx-click="toggle_referral_codes_required"
              />
            </label>
          </div>
        <% end %>
      </div>
    </div>

    <%= if @referral_codes_enabled do %>
      <%!-- Usage Limits Card --%>
      <div class="card bg-base-100 shadow-xl">
        <div class="card-body">
          <h2 class="card-title text-2xl mb-4">
            <.icon name="hero-scale" class="w-6 h-6" /> {gettext("Usage Limits")}
          </h2>

          <%!-- Max Uses Per Referral --%>
          <div class="form-control mb-4">
            <label class="label">
              <span class="label-text text-lg font-semibold">{gettext("Maximum Uses Per Referral")}</span>
            </label>
            <div class="input-group">
              <input
                type="number"
                placeholder={gettext("Enter max uses")}
                class="input input-bordered w-full max-w-xs"
                value={@max_uses_per_code}
                min="1"
                max="10000"
                phx-blur="update_max_uses_per_code"
                phx-value-max_uses_per_code={assigns[:max_uses_per_code]}
              />
              <span class="bg-base-200 px-4 py-3 text-sm">{gettext("uses")}</span>
            </div>
            <label class="label">
              <span class="label-text-alt text-base-content/70">
                {gettext("How many times each referral can be used (1-10,000)")}
              </span>
            </label>
          </div>

          <%!-- Max Referrals Per User --%>
          <div class="form-control">
            <label class="label">
              <span class="label-text text-lg font-semibold">{gettext("Maximum Referrals Per User")}</span>
            </label>
            <div class="input-group">
              <input
                type="number"
                placeholder={gettext("Enter max referrals")}
                class="input input-bordered w-full max-w-xs"
                value={@max_codes_per_user}
                min="1"
                max="1000"
                phx-blur="update_max_codes_per_user"
                phx-value-max_codes_per_user={assigns[:max_codes_per_user]}
              />
              <span class="bg-base-200 px-4 py-3 text-sm">{gettext("referrals")}</span>
            </div>
            <label class="label">
              <span class="label-text-alt text-base-content/70">
                {gettext("How many referrals each user can create (1-1,000)")}
              </span>
            </label>
          </div>
        </div>
      </div>

      <%!-- Current Configuration Summary --%>
      <div class="alert alert-info">
        <.icon name="hero-information-circle" class="w-5 h-5" />
        <div>
          <h3 class="font-bold">{gettext("Current Configuration")}</h3>
          <div class="text-sm mt-1">
            <p>
              {gettext("Status:")}
              <span class="font-semibold">
                {if @referral_codes_enabled, do: gettext("Enabled"), else: gettext("Disabled")}
              </span>
            </p>
            <%= if @referral_codes_enabled do %>
              <p>
                {gettext("Required:")}
                <span class="font-semibold">
                  {if @referral_codes_required, do: gettext("Yes"), else: gettext("No")}
                </span>
              </p>
              <p>
                {gettext("Max uses per referral:")}
                <span class="font-semibold">{@max_uses_per_code}</span>
              </p>
              <p>
                {gettext("Max referrals per user:")}
                <span class="font-semibold">{@max_codes_per_user}</span>
              </p>
            <% end %>
          </div>
        </div>
      </div>
    <% else %>
      <%!-- Disabled State Information --%>
      <div class="alert alert-warning">
        <.icon name="hero-exclamation-triangle" class="w-5 h-5" />
        <div>
          <h3 class="font-bold">{gettext("Referrals Disabled")}</h3>
          <p class="text-sm mt-1">
            {gettext(
              "Enable referrals above to access configuration options and allow users to create referrals."
            )}
          </p>
        </div>
      </div>
    <% end %>
  </div>
</div>