Packages

phoenix_kit

1.2.4
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib phoenix_kit_web live modules_live.html.heex
Raw

lib/phoenix_kit_web/live/modules_live.html.heex

<PhoenixKitWeb.Components.LayoutWrapper.app_layout
flash={@flash}
phoenix_kit_current_scope={assigns[:phoenix_kit_current_scope]}
page_title="{@project_title} Modules"
current_path={@current_path}
project_title={@project_title}
>
<div class="container flex flex-col mx-auto px-4 py-6">
<!-- Header Section -->
<header class="w-full relative mb-6">
<!-- Back Button (Left aligned) -->
<.link
navigate={PhoenixKit.Utils.Routes.path("/admin/dashboard")}
class="btn btn-outline btn-primary btn-sm absolute left-0 top-0 -mb-12"
>
<svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M10 19l-7-7m0 0l7-7m-7 7h18"
/>
</svg>
Back to Dashboard
</.link>
<!-- Title Section -->
<div class="text-center">
<h1 class="text-4xl font-bold text-base-content mb-3">Modules Management</h1>
<p class="text-lg text-base-content">Manage system modules and extensions</p>
</div>
</header>
<div class="card bg-base-100 shadow-xl">
<div class="card-body">
<h2 class="card-title text-xl mb-6">Available Modules</h2>
<%!-- Referral Codes Module --%>
<div class="border border-base-300 rounded-lg p-6 mb-4">
<div class="flex items-center justify-between mb-4">
<div class="flex items-center">
<div class="text-2xl mr-3">🎫</div>
<div>
<h3 class="text-lg font-semibold text-base-content">Referral Codes System</h3>
<p class="text-sm text-base-content/70">
Manage referral codes for user registration and tracking
</p>
</div>
</div>
<div class="form-control">
<label class="label cursor-pointer">
<input
type="checkbox"
class="toggle toggle-primary"
checked={@referral_codes_enabled}
phx-click="toggle_referral_codes"
phx-value-enabled="toggle"
/>
</label>
</div>
</div>
<%!-- Module Settings (shown when enabled) --%>
<%= if @referral_codes_enabled do %>
<div class="bg-base-200 rounded-lg p-4 mt-4">
<h4 class="font-medium text-base-content mb-3">Module Settings</h4>
<div class="flex items-center justify-between mb-4">
<div>
<span class="text-sm font-medium text-base-content">
Required for Registration
</span>
<p class="text-xs text-base-content/70">
When enabled, users must provide a valid referral code to register
</p>
</div>
<div class="form-control">
<label class="label cursor-pointer">
<input
type="checkbox"
class="toggle toggle-secondary toggle-sm"
checked={@referral_codes_required}
phx-click="toggle_referral_codes_required"
phx-value-required="toggle"
/>
</label>
</div>
</div>
<%!-- Max Codes Per User Setting --%>
<div class="flex items-center justify-between mb-4">
<div>
<span class="text-sm font-medium text-base-content">
Max Codes Per User
</span>
<p class="text-xs text-base-content/70">
Maximum number of referral codes each user can create
</p>
</div>
<div class="form-control">
<form phx-change="update_max_codes_per_user">
<input
type="number"
name="max_codes_per_user"
class="input input-bordered input-sm w-20 text-center"
value={@max_codes_per_user}
min="1"
max="1000"
phx-debounce="1000"
/>
</form>
</div>
</div>
<%!-- Max Uses Per Code Setting --%>
<div class="flex items-center justify-between mb-4">
<div>
<span class="text-sm font-medium text-base-content">
Max Uses Per Code
</span>
<p class="text-xs text-base-content/70">
Maximum number of times any single referral code can be used
</p>
</div>
<div class="form-control">
<form phx-change="update_max_uses_per_code">
<input
type="number"
name="max_uses_per_code"
class="input input-bordered input-sm w-20 text-center"
value={@max_uses_per_code}
min="1"
max="10000"
phx-debounce="1000"
/>
</form>
</div>
</div>
<div class="flex justify-between items-center mt-4">
<div class="text-xs text-base-content/60">
Status:
<span class="font-medium">
{if @referral_codes_required, do: "Required", else: "Optional"}
</span>
</div>
<.link
navigate="/phoenix_kit/admin/referral-codes"
class="btn btn-outline btn-primary btn-sm"
>
<svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"
/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
/>
</svg>
Manage Codes
</.link>
</div>
</div>
<% end %>
</div>
<%!-- Future Modules Placeholder --%>
<div class="border border-base-300 rounded-lg p-6 border-dashed">
<div class="flex items-center justify-between">
<div class="flex items-center">
<div class="text-2xl mr-3 opacity-50">📦</div>
<div>
<h3 class="text-lg font-semibold text-base-content/50">
More Modules Coming Soon
</h3>
<p class="text-sm text-base-content/40">
Additional system modules and extensions will be available here
</p>
</div>
</div>
<div class="form-control">
<label class="label cursor-pointer">
<input
type="checkbox"
class="toggle toggle-primary opacity-50"
disabled
/>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>