Packages
phoenix_kit
2.0.0
2.0.1
2.0.0
1.7.236
1.7.235
1.7.234
1.7.233
1.7.232
1.7.231
1.7.230
1.7.229
1.7.228
1.7.227
1.7.226
1.7.225
1.7.224
1.7.223
1.7.222
1.7.221
1.7.220
1.7.219
1.7.218
1.7.217
1.7.216
1.7.215
1.7.214
1.7.213
1.7.212
1.7.211
1.7.210
1.7.209
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
Current section
Files
lib/phoenix_kit_web/live/settings/seo.html.heex
<PhoenixKitWeb.Components.LayoutWrapper.app_layout
socket={@socket}
flash={@flash}
phoenix_kit_current_scope={assigns[:phoenix_kit_current_scope]}
page_title={gettext("SEO Settings")}
page_subtitle={
gettext(
"Configure environment-wide search optimization defaults and metadata directives from a single place."
)
}
current_path={@current_path}
project_title={@project_title}
current_locale={@current_locale}
>
<div class="px-4 py-6 space-y-6">
<div class="card bg-base-100 shadow-xl border border-base-200">
<div class="card-body space-y-4">
<div class="flex items-start justify-between gap-4">
<div>
<p class="text-sm uppercase tracking-wide text-primary font-semibold">
{gettext("Robots Directive")}
</p>
<h2 class="text-2xl font-bold">{gettext("Noindex · Nofollow")}</h2>
<p class="text-base text-base-content/70">
{gettext("Adds")}
<code class="font-mono text-sm bg-base-200 rounded px-1.5 py-0.5">
<meta name="robots" content="noindex,nofollow">
</code>
{gettext(
"to every PhoenixKit layout, blocking crawlers from indexing or following links."
)}
</p>
</div>
<label class="flex items-center gap-2 cursor-pointer">
<span class="text-sm font-semibold text-base-content/70">
{if @no_index_enabled, do: gettext("Enabled"), else: gettext("Disabled")}
</span>
<input
type="checkbox"
class="toggle toggle-primary toggle-lg"
checked={@no_index_enabled}
phx-click="toggle_no_index"
/>
</label>
</div>
<div class={[
"alert",
if(@no_index_enabled, do: "alert-warning", else: "alert-info"),
"bg-base-200/70"
]}>
<.icon
name={
if @no_index_enabled, do: "hero-no-symbol", else: "hero-magnifying-glass-circle"
}
class="w-6 h-6"
/>
<div class="text-sm leading-relaxed">
<%= if @no_index_enabled do %>
{gettext(
"Search engines are instructed to skip this environment. Remove this before launch."
)}
<% else %>
{gettext(
"Crawlers are allowed to index the site. Enable the toggle to hide staging deployments."
)}
<% end %>
</div>
</div>
</div>
</div>
<%!-- robots.txt: reported, never written. See the LiveView moduledoc for
why PhoenixKit does not generate this file. --%>
<div class="card bg-base-100 shadow-xl border border-base-200">
<div class="card-body space-y-4">
<div>
<p class="text-sm uppercase tracking-wide text-primary font-semibold">
{gettext("Crawler Instructions")}
</p>
<h2 class="text-2xl font-bold">robots.txt</h2>
<p class="text-base text-base-content/70">
{gettext(
"PhoenixKit does not generate this file — it is yours, and your web server serves it from priv/static before any route is consulted. The one thing worth adding is a pointer to your sitemap, which crawlers otherwise have to guess at."
)}
</p>
</div>
<div>
<p class="text-sm font-medium mb-2">
{gettext("Add this line to priv/static/robots.txt:")}
</p>
<div class="flex items-center gap-2">
<code
id="pk-robots-sitemap-line"
class="font-mono text-sm bg-base-200 rounded px-3 py-2 grow overflow-x-auto whitespace-nowrap"
>Sitemap: {@sitemap_url}</code>
<button
type="button"
class="btn btn-sm btn-outline shrink-0"
phx-hook="CopyToClipboard"
id="pk-robots-sitemap-copy"
data-copy-target="#pk-robots-sitemap-line"
>
<.icon name="hero-clipboard-document" class="w-4 h-4" />
<span data-copy-idle>{gettext("Copy")}</span>
<span data-copy-feedback class="hidden">{gettext("Copied!")}</span>
</button>
</div>
</div>
<div class={[
"alert bg-base-200/70",
if(@robots_txt_present? and @robots_txt_references_sitemap?,
do: "alert-success",
else: "alert-info"
)
]}>
<.icon
name={
if @robots_txt_present? and @robots_txt_references_sitemap?,
do: "hero-check-circle",
else: "hero-information-circle"
}
class="w-6 h-6"
/>
<div class="text-sm leading-relaxed">
<%= cond do %>
<% not @robots_txt_present? -> %>
{gettext(
"No priv/static/robots.txt found. Without one, crawlers assume everything is allowed — which is usually fine, but they will not learn where your sitemap is."
)}
<% not @robots_txt_references_sitemap? -> %>
{gettext(
"priv/static/robots.txt exists but has no Sitemap: line. Add the line above so crawlers are told where to look."
)}
<% true -> %>
{gettext("priv/static/robots.txt points crawlers at your sitemap.")}
<% end %>
</div>
</div>
<p class="text-xs text-base-content/60">
{gettext(
"The noindex toggle above and robots.txt are separate mechanisms: noindex is a per-page meta tag that tells crawlers not to index what they fetched, while robots.txt tells them what not to fetch at all. A staging site usually wants both."
)}
</p>
</div>
</div>
</div>
</PhoenixKitWeb.Components.LayoutWrapper.app_layout>