build(deps): bump phoenix_live_view from 1.0.0-rc.6 to 1.0.3 in /elixir (#7983)

Bumps
[phoenix_live_view](https://github.com/phoenixframework/phoenix_live_view)
from 1.0.0-rc.6 to 1.0.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/phoenixframework/phoenix_live_view/blob/v1.0.3/CHANGELOG.md">phoenix_live_view's
changelog</a>.</em></p>
<blockquote>
<h2>1.0.3 (2025-01-28)</h2>
<h3>Bug fixes</h3>
<ul>
<li>Fix regression where browser back/forward buttons used
<code>patch</code> instead of <code>navigate</code>, failing to update
the page (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3529">#3529</a>)</li>
<li>Fix client hooks inside streams that contain nested LiveViews (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3530">#3530</a>)</li>
<li>Fix LiveComponents in nested LiveViews not updating under certain
conditions (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3626">#3626</a>)</li>
<li>Fix client-side hooks not being cleared properly (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3628">#3628</a>)</li>
<li>Fix LiveUpload from client hook not auto uploading when immediately
followed by form event (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3647">#3647</a>)</li>
<li>Fix inputs being cleared in some cases when patching locked trees
(<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3647">#3647</a>)</li>
<li>Fix client hooks with dynamic IDs not being destroyed properly when
parts of the DOM are locked (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3651">#3651</a>)</li>
</ul>
<h3>Enhancements</h3>
<ul>
<li>Allow to configure if duplicate IDs / other detected errors should
warn or raise by passing <code>on_error</code> to
<code>Phoenix.LiveViewTest.live/3</code> /
<code>Phoenix.LiveViewTest.live_isolated/3</code> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3653">#3653</a>)</li>
<li>Also detect duplicate LiveComponents that are added dynamically to
the page in LiveViewTest (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3653">#3653</a>)</li>
<li>Log an error in the JavaScript console when detecting a stream
container with missing <code>phx-update=&quot;stream&quot;</code>
attribute (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3645">#3645</a>)</li>
<li>Update documentation to mention <code>:fun</code> and <code>{:fun,
arity}</code> as valid attribute types for
<code>Phoenix.Component.attr/3</code> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3635">#3635</a>)</li>
<li>Update documentation to mention ways for <a
href="https://hexdocs.pm/phoenix_live_view/1.0.3/Phoenix.Component.html#module-dynamic-component-rendering">dynamically
rendering function components</a> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3632">#3632</a>)</li>
<li>Update documentation to mention <code>{:inner, selector}</code> and
<code>{:closest, selector}</code> as <a
href="https://hexdocs.pm/phoenix_live_view/1.0.3/Phoenix.LiveView.JS.html#module-dom-selectors">valid
options for <code>to</code></a> in JS commands (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3638">#3638</a>)</li>
</ul>
<h2>1.0.2 (2025-01-09)</h2>
<h3>Bug fixes</h3>
<ul>
<li>Fix inconsistency between <code>mix format</code> and <code>mix
format --check-formatted</code> with new curly interpolation syntax (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3590">#3590</a>)</li>
<li>Fix unnecessary compile time dependencies when using
<code>attr</code> / <code>on_mount</code> / <code>live</code> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3592">#3592</a>)</li>
<li>Fix crash when testing LiveViews with embedded XML (e.g. SVGs) (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3594">#3594</a>)</li>
<li>Fix type warning when using <code>follow_redirect</code> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3581">#3581</a>)</li>
<li>Prevent <code>phx-trigger-action</code> from clashing with locked
forms (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3591">#3591</a>)</li>
<li>Fix form recovery sending wrong event name when using JS commands in
<code>phx-change</code> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3607">#3607</a>)</li>
</ul>
<h3>Enhancements</h3>
<ul>
<li>Deduplicate items on <code>stream/4</code> /
<code>steam_insert/4</code> (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3599">#3599</a>)</li>
<li>Restore scroll position on initial navigation (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3572">#3572</a>)</li>
<li>Change-track non existing keys in maps (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3584">#3584</a>)</li>
<li>Only warn instead of raising when detecting a duplicate ID in
LiveViewTest (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/pull/3603">#3603</a>)</li>
</ul>
<h2>1.0.1 (2024-12-13)</h2>
<h3>Bug fixes</h3>
<ul>
<li>Raise when duplicate DOM IDs are found when rendering a LiveView
during tests to avoid undefined behaviour</li>
<li>Fix live session verification causing logged errors, push_patch
failures, and failed mounts when a cold deploy occurs</li>
<li>Fix a bug where the <code>live_session</code>'s
<code>on_mount</code> hooks would be called for sticky live views on
connected mount. Now a <code>sticky</code> live view is consistently
marked as <code>:not_mounted_at_router</code></li>
</ul>
<h2>1.0.0 (2024-12-03) 🚀</h2>
<h2>1.0.0-rc.9 (2024-12-03)</h2>
<h3>Enhancements</h3>
<ul>
<li>Support <code>phx-no-curly-interpolation</code> to disable HEEx
curly interpolation in a specific tag body</li>
</ul>
<h2>1.0.0-rc.8 (2024-12-02)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8ea6b487de"><code>8ea6b48</code></a>
Release 1.0.3</li>
<li><a
href="e419029347"><code>e419029</code></a>
mix format</li>
<li><a
href="df82b86f4b"><code>df82b86</code></a>
small refactor of on_error tests</li>
<li><a
href="f1b9d2b492"><code>f1b9d2b</code></a>
only raise by default in later release</li>
<li><a
href="aee1b64972"><code>aee1b64</code></a>
update tests to not use deprecated struct update syntax</li>
<li><a
href="7a69ff77ec"><code>7a69ff7</code></a>
update changelog</li>
<li><a
href="6ca0b8b655"><code>6ca0b8b</code></a>
Update assets</li>
<li><a
href="f100c75de3"><code>f100c75</code></a>
fail early when hook element is not owned by view (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3618">#3618</a>)</li>
<li><a
href="a414c2cdd9"><code>a414c2c</code></a>
Update assets</li>
<li><a
href="07e4340c30"><code>07e4340</code></a>
remove replaceRootHistory (<a
href="https://redirect.github.com/phoenixframework/phoenix_live_view/issues/3625">#3625</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/phoenixframework/phoenix_live_view/compare/v1.0.0-rc.6...v1.0.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=phoenix_live_view&package-manager=hex&previous-version=1.0.0-rc.6&new-version=1.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
This commit is contained in:
dependabot[bot]
2025-02-04 14:18:00 +00:00
committed by GitHub
parent a44787cc13
commit bbbd6eded2
92 changed files with 457 additions and 453 deletions

View File

@@ -21,7 +21,7 @@ defmodule Web.CoreComponents do
<div class="mb-6">
<img src={~p"/images/logo.svg"} class="mx-auto pr-10 h-24" alt="Firezone Logo" />
<p class="text-center mt-4 text-3xl">
<%= @text %>
{@text}
</p>
</div>
"""
@@ -49,7 +49,7 @@ defmodule Web.CoreComponents do
"""
def p(assigns) do
~H"""
<p class="text-neutral-700"><%= render_slot(@inner_block) %></p>
<p class="text-neutral-700">{render_slot(@inner_block)}</p>
"""
end
@@ -207,7 +207,7 @@ defmodule Web.CoreComponents do
<%= if tab.icon do %>
<.icon name={tab.icon} class="h-4 w-4 mr-2" />
<% end %>
<%= tab.label %>
{tab.label}
</span>
</button>
</li>
@@ -222,7 +222,7 @@ defmodule Web.CoreComponents do
role="tabpanel"
aria-labelledby={"#{tab.id}-tab"}
>
<%= render_slot(tab) %>
{render_slot(tab)}
</div>
<% end %>
</div>
@@ -258,16 +258,16 @@ defmodule Web.CoreComponents do
<div class="col-span-full">
<div class="flex justify-between items-center">
<h2 class="text-2xl leading-none tracking-tight text-neutral-900">
<%= render_slot(@title) %>
{render_slot(@title)}
</h2>
<div class="inline-flex justify-between items-center space-x-2">
<%= render_slot(@actions) %>
{render_slot(@actions)}
</div>
</div>
</div>
</div>
<div :for={help <- @help} class="pt-3 text-neutral-400">
<%= render_slot(help) %>
{render_slot(help)}
</div>
</div>
"""
@@ -281,7 +281,7 @@ defmodule Web.CoreComponents do
<.flash kind={:info} flash={@flash} />
<.flash kind={:info} phx-mounted={show("#flash")}>Welcome Back!</.flash>
"""
attr :id, :string, default: "flash", doc: "the optional id of flash container"
attr :id, :string, default: nil, doc: "the optional id of flash container"
attr :flash, :map, default: %{}, doc: "the map of flash messages to display"
attr :title, :string, default: nil
@@ -315,9 +315,9 @@ defmodule Web.CoreComponents do
<p :if={@title} class="flex items-center gap-1.5 text-sm font-semibold leading-6">
<.icon :if={@kind == :info} name="hero-information-circle-mini" class="h-4 w-4" />
<.icon :if={@kind == :error} name="hero-exclamation-circle-mini" class="h-4 w-4" />
<%= @title %>
{@title}
</p>
<%= maybe_render_changeset_as_flash(msg) %>
{maybe_render_changeset_as_flash(msg)}
</div>
"""
end
@@ -326,10 +326,10 @@ defmodule Web.CoreComponents do
assigns = %{message: message, errors: errors}
~H"""
<%= @message %>:
{@message}:
<ul>
<li :for={{field, field_errors} <- @errors}>
<%= field %>: <%= Enum.join(field_errors, ", ") %>
{field}: {Enum.join(field_errors, ", ")}
</li>
</ul>
"""
@@ -375,7 +375,7 @@ defmodule Web.CoreComponents do
def label(assigns) do
~H"""
<label for={@for} class={["block text-sm text-neutral-900 mb-2", @class]}>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</label>
"""
end
@@ -400,7 +400,7 @@ defmodule Web.CoreComponents do
{@rest}
>
<.icon name="hero-exclamation-circle-mini" class="h-4 w-4 flex-none" />
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</p>
"""
end
@@ -428,7 +428,7 @@ defmodule Web.CoreComponents do
{@rest}
>
<.icon name="hero-exclamation-circle-mini" class="mt-0.5 h-5 w-5 flex-none" />
<%= translate_error(@error) %>
{translate_error(@error)}
</p>
"""
end
@@ -452,8 +452,8 @@ defmodule Web.CoreComponents do
<div class="mt-14">
<dl class="-my-4 divide-y divide-neutral-100">
<div :for={item <- @item} class="flex gap-4 py-4 text-sm leading-6 sm:gap-8">
<dt class="w-1/4 flex-none text-neutral-500"><%= item.title %></dt>
<dd class="text-neutral-700"><%= render_slot(item) %></dd>
<dt class="w-1/4 flex-none text-neutral-500">{item.title}</dt>
<dd class="text-neutral-700">{render_slot(item)}</dd>
</div>
</dl>
</div>
@@ -770,20 +770,20 @@ defmodule Web.CoreComponents do
def intersperse_blocks(assigns) do
~H"""
<%= if Enum.empty?(@item) do %>
<%= render_slot(@empty) %>
{render_slot(@empty)}
<% else %>
<%= for item <- Enum.intersperse(@item, :separator) do %>
<%= if item == :separator do %>
<%= render_slot(@separator) %>
{render_slot(@separator)}
<% else %>
<%= render_slot(
{render_slot(
item,
cond do
item == List.first(@item) -> :first
item == List.last(@item) -> :last
true -> :middle
end
) %>
)}
<% end %>
<% end %>
<% end %>
@@ -834,22 +834,22 @@ defmodule Web.CoreComponents do
~H"""
<div class="flex flex-wrap gap-y-2">
<%= if Enum.empty?(@peek.items) do %>
<%= render_slot(@empty) %>
{render_slot(@empty)}
<% else %>
<% items = if @separator, do: Enum.intersperse(@peek.items, :separator), else: @peek.items %>
<%= for item <- items do %>
<%= if item == :separator do %>
<%= render_slot(@separator) %>
{render_slot(@separator)}
<% else %>
<%= render_slot(@item, item) %>
{render_slot(@item, item)}
<% end %>
<% end %>
<%= if @peek.count > length(@peek.items) do %>
<%= render_slot(@tail, @peek.count - length(@peek.items)) %>
{render_slot(@tail, @peek.count - length(@peek.items))}
<% end %>
<%= render_slot(@call_to_action) %>
{render_slot(@call_to_action)}
<% end %>
</div>
"""
@@ -882,7 +882,7 @@ defmodule Web.CoreComponents do
]}
{@rest}
>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</span>
"""
end
@@ -932,7 +932,7 @@ defmodule Web.CoreComponents do
"text-xs rounded-l py-0.5 pl-2.5 pr-1.5",
@colors[@type]["dark"]
]}>
<%= render_slot(@left) %>
{render_slot(@left)}
</div>
<span class={[
"text-xs",
@@ -940,7 +940,7 @@ defmodule Web.CoreComponents do
"mr-2 py-0.5 pl-1.5 pr-2.5",
@colors[@type]["light"]
]}>
<%= render_slot(@right) %>
{render_slot(@right)}
</span>
</span>
"""
@@ -955,7 +955,7 @@ defmodule Web.CoreComponents do
def datetime(assigns) do
~H"""
<span title={@datetime}>
<%= Cldr.DateTime.to_string!(@datetime, Web.CLDR, format: @format) %>
{Cldr.DateTime.to_string!(@datetime, Web.CLDR, format: @format)}
</span>
"""
end
@@ -980,17 +980,17 @@ defmodule Web.CoreComponents do
"underline underline-offset-2 decoration-1 decoration-dotted",
DateTime.compare(@datetime, @relative_to) == :lt && @negative_class
]}>
<%= Cldr.DateTime.Relative.to_string!(@datetime, Web.CLDR, relative_to: @relative_to)
|> String.capitalize() %>
{Cldr.DateTime.Relative.to_string!(@datetime, Web.CLDR, relative_to: @relative_to)
|> String.capitalize()}
</span>
</:target>
<:content>
<%= @datetime %>
{@datetime}
</:content>
</.popover>
<span :if={not @popover}>
<%= Cldr.DateTime.Relative.to_string!(@datetime, Web.CLDR, relative_to: @relative_to)
|> String.capitalize() %>
{Cldr.DateTime.Relative.to_string!(@datetime, Web.CLDR, relative_to: @relative_to)
|> String.capitalize()}
</span>
<span :if={is_nil(@datetime)}>
Never
@@ -1017,7 +1017,7 @@ defmodule Web.CoreComponents do
data-popover-target-id={@target_id}
data-popover-placement={@placement}
>
<%= render_slot(@target) %>
{render_slot(@target)}
</span>
<div data-popover id={@target_id} role="tooltip" class={~w[
@@ -1027,7 +1027,7 @@ defmodule Web.CoreComponents do
rounded shadow-sm opacity-0
]}>
<div class="px-3 py-2">
<%= render_slot(@content) %>
{render_slot(@content)}
</div>
<div data-popper-arrow></div>
</div>
@@ -1055,7 +1055,7 @@ defmodule Web.CoreComponents do
else: "Never connected"
}
>
<%= if @schema.online?, do: "Online", else: "Offline" %>
{if @schema.online?, do: "Online", else: "Offline"}
</span>
</span>
"""
@@ -1184,7 +1184,7 @@ defmodule Web.CoreComponents do
class="text-accent-500 hover:underline"
navigate={~p"/#{@schema.account_id}/actors/#{@schema.verified_by_identity.actor_id}"}
>
<%= assigns.schema.verified_by_actor.name %>
{assigns.schema.verified_by_actor.name}
</.link>
</div>
"""
@@ -1202,7 +1202,7 @@ defmodule Web.CoreComponents do
def actor_link(%{actor: %Domain.Actors.Actor{type: :api_client}} = assigns) do
~H"""
<.link class={link_style()} navigate={~p"/#{@account}/settings/api_clients/#{@actor}"}>
<%= assigns.actor.name %>
{assigns.actor.name}
</.link>
"""
end
@@ -1210,7 +1210,7 @@ defmodule Web.CoreComponents do
def actor_link(assigns) do
~H"""
<.link class={link_style()} navigate={~p"/#{@account}/actors/#{@actor}"}>
<%= assigns.actor.name %>
{assigns.actor.name}
</.link>
"""
end
@@ -1248,7 +1248,7 @@ defmodule Web.CoreComponents do
bg-neutral-50
]}>
<span class="block truncate" title={get_identity_email(@identity)}>
<%= get_identity_email(@identity) %>
{get_identity_email(@identity)}
</span>
</span>
</span>
@@ -1310,7 +1310,7 @@ defmodule Web.CoreComponents do
bg-neutral-50
]}
>
<%= @group.name %>
{@group.name}
</.link>
</span>
"""
@@ -1324,15 +1324,15 @@ defmodule Web.CoreComponents do
def last_seen(assigns) do
~H"""
<span class="inline-block">
<%= @schema.last_seen_remote_ip %>
{@schema.last_seen_remote_ip}
</span>
<span class="inline-block">
<%= [
{[
Domain.Geo.country_common_name!(@schema.last_seen_remote_ip_location_region),
@schema.last_seen_remote_ip_location_city
]
|> Enum.reject(&is_nil/1)
|> Enum.join(", ") %>
|> Enum.join(", ")}
<a
:if={
@@ -1375,7 +1375,7 @@ defmodule Web.CoreComponents do
~H"""
<span data-value={@number} {@rest}>
<%= Web.CLDR.Number.Cardinal.pluralize(@number, :en, @opts) %>
{Web.CLDR.Number.Cardinal.pluralize(@number, :en, @opts)}
</span>
"""
end
@@ -1461,10 +1461,10 @@ defmodule Web.CoreComponents do
~H"""
<div class="mb-6">
<h2 class="mb-2 text-2xl tracking-tight font-medium text-neutral-900">
<%= render_slot(@title) %>
{render_slot(@title)}
</h2>
<div class="px-4">
<%= render_slot(@content) %>
{render_slot(@content)}
</div>
</div>
"""

View File

@@ -115,8 +115,8 @@ defmodule Web.FormComponents do
]}
{@rest}
/>
<%= @label %>
<%= if @inner_block, do: render_slot(@inner_block) %>
{@label}
{if @inner_block, do: render_slot(@inner_block)}
</label>
</div>
"""
@@ -167,10 +167,10 @@ defmodule Web.FormComponents do
]}
{@rest}
/>
<%= @label %>
{@label}
</label>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -179,7 +179,7 @@ defmodule Web.FormComponents do
def input(%{type: "group_select"} = assigns) do
~H"""
<div>
<.label :if={@label} for={@id}><%= @label %></.label>
<.label :if={@label} for={@id}>{@label}</.label>
<input
:if={not is_nil(@value) and @rest[:disabled] == true}
type="hidden"
@@ -199,20 +199,20 @@ defmodule Web.FormComponents do
multiple={@multiple}
{@rest}
>
<option :if={@prompt} value=""><%= @prompt %></option>
<option :if={@prompt} value="">{@prompt}</option>
<%= for {label, options} <- @options do %>
<%= if label == nil do %>
<%= Phoenix.HTML.Form.options_for_select(options, @value) %>
{Phoenix.HTML.Form.options_for_select(options, @value)}
<% else %>
<optgroup label={label}>
<%= Phoenix.HTML.Form.options_for_select(options, @value) %>
{Phoenix.HTML.Form.options_for_select(options, @value)}
</optgroup>
<% end %>
<% end %>
</select>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -221,7 +221,7 @@ defmodule Web.FormComponents do
def input(%{type: "select"} = assigns) do
~H"""
<div>
<.label :if={@label} for={@id}><%= @label %></.label>
<.label :if={@label} for={@id}>{@label}</.label>
<input
:if={@rest[:disabled] in [true, "true"] and not is_nil(@value)}
type="hidden"
@@ -241,11 +241,11 @@ defmodule Web.FormComponents do
multiple={@multiple}
{@rest}
>
<option :if={@prompt} value=""><%= @prompt %></option>
<%= Phoenix.HTML.Form.options_for_select(@options, @value) %>
<option :if={@prompt} value="">{@prompt}</option>
{Phoenix.HTML.Form.options_for_select(@options, @value)}
</select>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -254,7 +254,7 @@ defmodule Web.FormComponents do
def input(%{type: "textarea"} = assigns) do
~H"""
<div>
<.label :if={@label} for={@id}><%= @label %></.label>
<.label :if={@label} for={@id}>{@label}</.label>
<textarea
id={@id}
name={@name}
@@ -270,7 +270,7 @@ defmodule Web.FormComponents do
{@rest}
><%= Phoenix.HTML.Form.normalize_value("textarea", @value) %></textarea>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -291,9 +291,9 @@ defmodule Web.FormComponents do
def input(%{type: "readonly"} = assigns) do
~H"""
<div>
<.label :if={@label}><%= @label %></.label>
<.label :if={@label}>{@label}</.label>
<div class="border border-solid rounded p-2 text-sm text-neutral-500">
<%= assigns.value %>
{assigns.value}
</div>
<input
type="hidden"
@@ -304,7 +304,7 @@ defmodule Web.FormComponents do
/>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -313,7 +313,7 @@ defmodule Web.FormComponents do
def input(%{type: "text", prefix: prefix} = assigns) when not is_nil(prefix) do
~H"""
<div class={@inline_errors && "flex flex-row items-center"}>
<.label :if={@label} for={@id}><%= @label %></.label>
<.label :if={@label} for={@id}>{@label}</.label>
<div class={[
"flex",
"text-sm text-neutral-900 bg-neutral-50",
@@ -331,7 +331,7 @@ defmodule Web.FormComponents do
phx-hook="Refocus"
data-refocus={@id}
>
<%= @prefix %>
{@prefix}
</span>
<input
type={@type}
@@ -348,7 +348,7 @@ defmodule Web.FormComponents do
/>
</div>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -357,7 +357,7 @@ defmodule Web.FormComponents do
def input(assigns) do
~H"""
<div class={@inline_errors && "flex flex-row items-center"}>
<.label :if={@label} for={@id}><%= @label %></.label>
<.label :if={@label} for={@id}>{@label}</.label>
<input
type={@type}
name={@name}
@@ -376,7 +376,7 @@ defmodule Web.FormComponents do
{@rest}
/>
<.error :for={msg <- @errors} inline={@inline_errors} data-validation-error-for={@name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -417,7 +417,7 @@ defmodule Web.FormComponents do
<div class="relative bg-white rounded-lg shadow max-w-2xl">
<div class="flex items-center justify-between p-4 md:p-5 border-b rounded-t">
<h3 class="text-xl font-semibold text-neutral-900">
<%= render_slot(@dialog_title) %>
{render_slot(@dialog_title)}
</h3>
<button
class="text-neutral-400 bg-transparent hover:text-accent-900 ml-2"
@@ -429,7 +429,7 @@ defmodule Web.FormComponents do
</button>
</div>
<div class="p-4 md:p-5 text-neutral-500 text-base">
<%= render_slot(@dialog_content) %>
{render_slot(@dialog_content)}
</div>
<div class="flex items-center justify-end p-4 md:p-5 border-t border-gray-200 rounded-b">
<.button
@@ -439,7 +439,7 @@ defmodule Web.FormComponents do
style="info"
class="px-5 py-2.5"
>
<%= render_slot(@dialog_cancel_button) %>
{render_slot(@dialog_cancel_button)}
</.button>
<.button
data-dialog-action="confirm"
@@ -450,7 +450,7 @@ defmodule Web.FormComponents do
value="confirm"
class="py-2.5 px-5 ms-3"
>
<%= render_slot(@dialog_confirm_button) %>
{render_slot(@dialog_confirm_button)}
</.button>
</div>
</div>
@@ -465,7 +465,7 @@ defmodule Web.FormComponents do
disabled={@disabled}
phx-hook="ConfirmDialog"
>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.button>
"""
end
@@ -510,7 +510,7 @@ defmodule Web.FormComponents do
~H"""
<.link class={button_style(@style) ++ button_size(@size) ++ [@class]} navigate={@navigate} {@rest}>
<.icon :if={@icon} name={@icon} class="h-3.5 w-3.5 mr-2" />
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.link>
"""
end
@@ -519,7 +519,7 @@ defmodule Web.FormComponents do
~H"""
<button type={@type} class={button_style(@style) ++ button_size(@size) ++ [@class]} {@rest}>
<.icon :if={@icon} name={@icon} class={icon_size(@size)} />
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</button>
"""
end
@@ -542,7 +542,7 @@ defmodule Web.FormComponents do
~H"""
<div class="flex justify-end">
<.button type="submit" style={@style} {@rest}>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.button>
</div>
"""
@@ -564,7 +564,7 @@ defmodule Web.FormComponents do
def delete_button(assigns) do
~H"""
<.button style="danger" size={@size} icon="hero-trash-solid" {@rest}>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.button>
"""
end
@@ -585,7 +585,7 @@ defmodule Web.FormComponents do
def add_button(assigns) do
~H"""
<.button style="primary" class={@class} navigate={@navigate} icon="hero-plus">
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.button>
"""
end
@@ -605,7 +605,7 @@ defmodule Web.FormComponents do
def edit_button(assigns) do
~H"""
<.button style="primary" navigate={@navigate} icon="hero-pencil-solid">
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.button>
"""
end

View File

@@ -148,7 +148,7 @@ defmodule Web.Components.FormComponents.SelectWithGroups do
|> JS.set_attribute({"aria-expanded", "false"}, to: "##{@id}-input")
}
>
<.label :if={@label} for={"#{@id}-input"}><%= @label %></.label>
<.label :if={@label} for={"#{@id}-input"}>{@label}</.label>
<div class="relative group">
<input type="text" name={@name} value={@value} class="hidden" />
@@ -240,7 +240,7 @@ defmodule Web.Components.FormComponents.SelectWithGroups do
<%= if @no_search_results == [] do %>
Nothing has been found.
<% else %>
<%= render_slot(@no_search_results, @search_query) %>
{render_slot(@no_search_results, @search_query)}
<% end %>
</div>
<div
@@ -252,7 +252,7 @@ defmodule Web.Components.FormComponents.SelectWithGroups do
]}
>
<div>
<%= render_slot(@options_group, group) %>
{render_slot(@options_group, group)}
</div>
<div :for={{value, _name, slot_assigns} <- group_options}>
<label
@@ -289,7 +289,7 @@ defmodule Web.Components.FormComponents.SelectWithGroups do
class={["flex items-center"]}
>
<div class={["text-gray-800"]}>
<%= render_slot(@option, slot_assigns) %>
{render_slot(@option, slot_assigns)}
</div>
<div :if={value == @value} class="ml-auto">
<.icon name="hero-check" class="w-4 h-4" />
@@ -306,7 +306,7 @@ defmodule Web.Components.FormComponents.SelectWithGroups do
"py-2 px-4 text-sm text-neutral-400"
]}
>
<span class="font-semibold"><%= @metadata.count - @metadata.limit %></span>
<span class="font-semibold">{@metadata.count - @metadata.limit}</span>
more options available. Use the search to refine the list.
</div>
</div>
@@ -314,11 +314,11 @@ defmodule Web.Components.FormComponents.SelectWithGroups do
</div>
<.error :for={message <- @errors} data-validation-error-for={@name <> "_name"}>
<%= message %>
{message}
</.error>
<%= if @options == [] and is_nil(@value) and @no_options != [] and @search_query in [nil, ""] do %>
<%= render_slot(@no_options, @name <> "_name") %>
{render_slot(@no_options, @name <> "_name")}
<% end %>
</div>
"""

View File

@@ -100,7 +100,7 @@
<main class="lg:ml-64 h-auto pt-14">
<.flash :if={@account.warning} kind={:warning} class="m-1">
<%= @account.warning %>.
{@account.warning}.
<span :if={Domain.Billing.account_provisioned?(@account)}>
Please
<.link navigate={~p"/#{@account}/settings/billing"} class={link_style()}>
@@ -128,8 +128,8 @@
<% trial_ends_in_days = DateTime.diff(trial_ends_at, DateTime.utc_now(), :day) %>
<.flash :if={5 > trial_ends_in_days and trial_ends_in_days > 0} kind={:info} class="m-1">
Your Enterprise pilot period will expire in <%= trial_ends_in_days %>
<%= if trial_ends_in_days == 1, do: "day", else: "days" %>.
Your Enterprise pilot period will expire in {trial_ends_in_days}
{if trial_ends_in_days == 1, do: "day", else: "days"}.
Please contact your sales representative to extend it.
</.flash>
@@ -139,5 +139,5 @@
</.flash>
<% end %>
<%= @inner_content %>
{@inner_content}
</main>

View File

@@ -1,4 +1,4 @@
<.trackers />
<main class="h-auto pt-16">
<%= @inner_content %>
{@inner_content}
</main>

View File

@@ -11,7 +11,7 @@
<meta name="theme-color" content="#331700" />
<meta name="csrf-token" content={get_csrf_token()} />
<.live_title suffix=" · Firezone">
<%= assigns[:page_title] || "Firezone" %>
{assigns[:page_title] || "Firezone"}
</.live_title>
<link
phx-track-static
@@ -29,6 +29,6 @@
</script>
</head>
<body class="bg-neutral-50">
<%= @inner_content %>
{@inner_content}
</body>
</html>

View File

@@ -66,10 +66,10 @@ defmodule Web.NavigationComponents do
~H"""
<div class="py-3 px-4">
<span class="block text-sm font-medium text-neutral-900">
<%= @subject.actor.name %>
{@subject.actor.name}
</span>
<span class="block text-sm text-neutral-900 truncate">
<%= @subject.identity.provider_identifier %>
{@subject.identity.provider_identifier}
</span>
</div>
<ul class="py-1 text-neutral-700" aria-labelledby="user-menu-dropdown">
@@ -116,10 +116,10 @@ defmodule Web.NavigationComponents do
>
<div class="overflow-y-auto py-1 px-2 h-full bg-white">
<ul>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</ul>
</div>
<%= render_slot(@bottom) %>
{render_slot(@bottom)}
</aside>
"""
end
@@ -137,7 +137,7 @@ defmodule Web.NavigationComponents do
aria-expanded="false"
data-dropdown-toggle={"#{@id}-dropdown"}
>
<%= render_slot(@button) %>
{render_slot(@button)}
</button>
<div
class={[
@@ -148,7 +148,7 @@ defmodule Web.NavigationComponents do
]}
id={"#{@id}-dropdown"}
>
<%= render_slot(@dropdown) %>
{render_slot(@dropdown)}
</div>
"""
end
@@ -176,7 +176,7 @@ defmodule Web.NavigationComponents do
<.icon name={@icon} class={~w[
w-5 h-5
]} />
<span class="ml-3 text-lg"><%= render_slot(@inner_block) %></span>
<span class="ml-3 text-lg">{render_slot(@inner_block)}</span>
</.link>
</li>
"""
@@ -225,7 +225,7 @@ defmodule Web.NavigationComponents do
>
<.icon name={@icon} class={~w[
w-5 h-5 text-neutral-700]} />
<span class="flex-1 ml-3 text-left whitespace-nowrap"><%= render_slot(@name) %></span>
<span class="flex-1 ml-3 text-left whitespace-nowrap">{render_slot(@name)}</span>
<.icon name="hero-chevron-down-solid" class={~w[
w-5 h-5 text-neutral-700]} />
</button>
@@ -237,7 +237,7 @@ defmodule Web.NavigationComponents do
#{String.starts_with?(@current_path, item.navigate) && @active_class}
hover:text-neutral-900
hover:bg-neutral-100]}>
<%= render_slot(item) %>
{render_slot(item)}
</.link>
</li>
</ul>
@@ -267,7 +267,7 @@ defmodule Web.NavigationComponents do
<.icon name="hero-home-solid" class="w-3.5 h-3.5 mr-2" /> Home
</.link>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</li>
</ol>
</nav>
@@ -290,11 +290,11 @@ defmodule Web.NavigationComponents do
navigate={@path}
class="ml-1 text-neutral-700 hover:text-neutral-900 md:ml-2"
>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.link>
<span :if={is_nil(@path)} class="ml-1 text-sm text-neutral-700 hover:text-neutral-900 md:ml-2">
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</span>
</div>
</li>
@@ -319,7 +319,7 @@ defmodule Web.NavigationComponents do
class="text-sm font-semibold leading-6 text-neutral-900 hover:text-neutral-700"
>
<.icon name="hero-arrow-left-solid" class="h-3 w-3" />
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.link>
</div>
"""
@@ -347,7 +347,7 @@ defmodule Web.NavigationComponents do
target="_blank"
{@rest}
>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.link>
"""
end

View File

@@ -20,15 +20,15 @@ defmodule Web.PageComponents do
]}>
<.header>
<:title>
<%= render_slot(@title) %>
{render_slot(@title)}
</:title>
<:actions :for={action <- @action} :if={not Enum.empty?(@action)}>
<%= render_slot(action) %>
{render_slot(action)}
</:actions>
<:help :for={help <- @help} :if={not Enum.empty?(@help)}>
<%= render_slot(help) %>
{render_slot(help)}
</:help>
</.header>
@@ -37,7 +37,7 @@ defmodule Web.PageComponents do
<.flash kind={:info} flash={Map.get(content, :flash)} style="wide" />
<.flash kind={:error} flash={Map.get(content, :flash)} style="wide" />
</div>
<%= render_slot(content) %>
{render_slot(content)}
</section>
</div>
"""
@@ -55,11 +55,11 @@ defmodule Web.PageComponents do
<:title>Danger Zone</:title>
<:action :for={action <- @action} :if={not Enum.empty?(@action)}>
<%= render_slot(action) %>
{render_slot(action)}
</:action>
<:content :for={content <- @content}>
<%= render_slot(content) %>
{render_slot(content)}
</:content>
</.section>
"""

View File

@@ -22,7 +22,7 @@ defmodule Web.TableComponents do
:for={col <- @columns}
class={["px-4 py-3 font-medium whitespace-nowrap", Map.get(col, :class, "")]}
>
<%= col[:label] %>
{col[:label]}
<.table_header_order_buttons
:if={col[:field]}
field={col[:field]}
@@ -31,7 +31,7 @@ defmodule Web.TableComponents do
/>
</th>
<th :if={not Enum.empty?(@actions)} class="px-4 py-3">
<span class="sr-only"><%= gettext("Actions") %></span>
<span class="sr-only">{gettext("Actions")}</span>
</th>
</tr>
</thead>
@@ -90,7 +90,7 @@ defmodule Web.TableComponents do
@click && "hover:cursor-pointer"
]}
>
<%= render_slot(col, @mapper.(@row)) %>
{render_slot(col, @mapper.(@row))}
</td>
<% # this is a hack which allows to hide empty action dropdowns,
# because LiveView doesn't allow to do <:slot :let={x} :if={x} />
@@ -102,7 +102,7 @@ defmodule Web.TableComponents do
<td :if={@actions != [] and show_actions?} class="px-4 py-3">
<div class="flex space-x-1 items-center justify-end">
<span :for={action <- @actions}>
<%= render_slot(action, @mapper.(@row)) %>
{render_slot(action, @mapper.(@row))}
</span>
</div>
</td>
@@ -177,7 +177,7 @@ defmodule Web.TableComponents do
</tbody>
</table>
<div :if={Enum.empty?(@rows)} id={"#{@id}-empty"}>
<%= render_slot(@empty) %>
{render_slot(@empty)}
</div>
</div>
"""
@@ -237,7 +237,7 @@ defmodule Web.TableComponents do
<tbody :for={group <- @groups} data-group-id={@group_id && @group_id.(group)}>
<tr class="bg-neutral-100">
<td class="px-4 py-2" colspan={length(@col) + 1}>
<%= render_slot(@group, group) %>
{render_slot(@group, group)}
</td>
</tr>
@@ -253,7 +253,7 @@ defmodule Web.TableComponents do
</tbody>
</table>
<div :if={Enum.empty?(@groups)}>
<%= render_slot(@empty) %>
{render_slot(@empty)}
</div>
"""
end
@@ -292,7 +292,7 @@ defmodule Web.TableComponents do
~H"""
<table class={["w-full text-sm text-left text-neutral-500", @class]} {@rest}>
<tbody>
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</tbody>
</table>
"""
@@ -332,10 +332,10 @@ defmodule Web.TableComponents do
@label_class
]}
>
<%= render_slot(@label) %>
{render_slot(@label)}
</th>
<td class={["px-4 py-3", @value_class]}>
<%= render_slot(@value) %>
{render_slot(@value)}
</td>
</tr>
"""
@@ -351,7 +351,7 @@ defmodule Web.TableComponents do
def action_link(assigns) do
~H"""
<.link navigate={@navigate} class="block py-2 px-4 hover:bg-neutral-100">
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.link>
"""
end

View File

@@ -76,7 +76,7 @@ defmodule Web.HomeHTML do
border border-neutral-200
hover:bg-neutral-100 hover:text-neutral-900
]}>
<%= @account.name %>
{@account.name}
<span :if={@signed_in?} class="text-green-400 pl-1">
<.icon name="hero-shield-check" class="w-4 h-4" />

View File

@@ -17,7 +17,7 @@ defmodule Web.SignInHTML do
<meta name="theme-color" content="#331700" />
<meta name="csrf-token" content={get_csrf_token()} />
<.live_title suffix=" · Firezone">
<%= assigns[:page_title] || "Firezone" %>
{assigns[:page_title] || "Firezone"}
</.live_title>
<link
phx-track-static

View File

@@ -48,7 +48,7 @@ defmodule Web.Actors.Components do
navigate={actor_show_url(@account, @actor)}
class={["text-accent-500 hover:underline", @class]}
>
<%= @actor.name %>
{@actor.name}
</.link>
<span :if={@actor.type == :account_admin_user} class={["text-xs", @class]}>
(admin)

View File

@@ -31,7 +31,7 @@ defmodule Web.Actors.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/actors"}>Actors</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}/edit"}>
Edit
@@ -40,7 +40,7 @@ defmodule Web.Actors.Edit do
<.section>
<:title>
Edit <%= actor_type(@actor.type) %>: <code><%= @actor.name %></code>
Edit {actor_type(@actor.type)}: <code>{@actor.name}</code>
</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">

View File

@@ -54,7 +54,7 @@ defmodule Web.Actors.EditGroups do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/actors"}>Actors</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}/edit_groups"}>
Group Memberships
@@ -62,7 +62,7 @@ defmodule Web.Actors.EditGroups do
</.breadcrumbs>
<.section>
<:title>
Group Memberships: <%= @actor.name %>
Group Memberships: {@actor.name}
</:title>
<:help>
Add or remove Groups for a given Actor.
@@ -100,7 +100,7 @@ defmodule Web.Actors.EditGroups do
end ++ ["text-accent-500", "hover:underline"]
}
>
<%= group.name %>
{group.name}
</.link>
</:col>
<:col :let={group}>
@@ -149,7 +149,7 @@ defmodule Web.Actors.EditGroups do
>
<:dialog_title>Confirm changes to Actor Groups</:dialog_title>
<:dialog_content>
<%= confirm_message(@added, @removed) %>
{confirm_message(@added, @removed)}
</:dialog_content>
<:dialog_confirm_button>
Save

View File

@@ -48,11 +48,11 @@ defmodule Web.Actors.Index do
def render(assigns) do
~H"""
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/actors"}><%= @page_title %></.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors"}>{@page_title}</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:action>
<.docs_action path="/deploy/users" />
@@ -106,7 +106,7 @@ defmodule Web.Actors.Index do
link_style()
]}
>
<%= @actor_groups[actor.id].count %>
{@actor_groups[actor.id].count}
</.link>
</:target>
<:content>
@@ -123,7 +123,7 @@ defmodule Web.Actors.Index do
<:tail :let={count}>
<span class="inline-block whitespace-nowrap">
and <%= count %> more.
and {count} more.
</span>
</:tail>
</.peek>
@@ -155,7 +155,7 @@ defmodule Web.Actors.Index do
navigate={~p"/#{@account}/actors/#{actor}?#clients"}
class={["inline-flex ml-1", link_style()]}
>
<%= count %> more
{count} more
</.link>
<span>.</span>
</span>

View File

@@ -18,7 +18,7 @@ defmodule Web.Actors.New do
<.breadcrumb path={~p"/#{@account}/actors/new"}>Add</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<h2 class="mb-4 text-xl text-neutral-900">Choose type</h2>

View File

@@ -24,7 +24,7 @@ defmodule Web.Actors.ServiceAccounts.New do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<.flash kind={:error} flash={@flash} />

View File

@@ -32,7 +32,7 @@ defmodule Web.Actors.ServiceAccounts.NewIdentity do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/actors"}>Actors</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/service_accounts/#{@actor}/new_identity"}>
Create Token
@@ -40,7 +40,7 @@ defmodule Web.Actors.ServiceAccounts.NewIdentity do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div :if={is_nil(@encoded_token)} class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<.flash kind={:error} flash={@flash} />

View File

@@ -139,20 +139,20 @@ defmodule Web.Actors.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/actors"}>Actors</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
<%= actor_type(@actor.type) %>: <span class="font-medium"><%= @actor.name %></span>
{actor_type(@actor.type)}: <span class="font-medium">{@actor.name}</span>
<span :if={@actor.id == @subject.actor.id} class="text-sm text-neutral-400">(you)</span>
<span :if={Actors.actor_deleted?(@actor)} class="text-red-600">(deleted)</span>
<span :if={Actors.actor_disabled?(@actor)} class="text-red-600">(disabled)</span>
</:title>
<:action :if={is_nil(@actor.deleted_at)}>
<.edit_button navigate={~p"/#{@account}/actors/#{@actor}/edit"}>
Edit <%= actor_type(@actor.type) %>
Edit {actor_type(@actor.type)}
</.edit_button>
</:action>
<:action :if={is_nil(@actor.deleted_at) and not Actors.actor_disabled?(@actor)}>
@@ -165,15 +165,15 @@ defmodule Web.Actors.Show do
>
<:dialog_title>Confirm disabling the Actor</:dialog_title>
<:dialog_content>
Are you sure you want to disable this <%= String.downcase(actor_type(@actor.type)) %> and revoke all its tokens?
Are you sure you want to disable this {String.downcase(actor_type(@actor.type))} and revoke all its tokens?
</:dialog_content>
<:dialog_confirm_button>
Disable <%= actor_type(@actor.type) %>
Disable {actor_type(@actor.type)}
</:dialog_confirm_button>
<:dialog_cancel_button>
Cancel
</:dialog_cancel_button>
Disable <%= actor_type(@actor.type) %>
Disable {actor_type(@actor.type)}
</.button_with_confirmation>
</:action>
<:action :if={is_nil(@actor.deleted_at) and Actors.actor_disabled?(@actor)}>
@@ -186,15 +186,15 @@ defmodule Web.Actors.Show do
>
<:dialog_title>Confirm enabling the Actor</:dialog_title>
<:dialog_content>
Are you sure you want to enable this <%= String.downcase(actor_type(@actor.type)) %>?
Are you sure you want to enable this {String.downcase(actor_type(@actor.type))}?
</:dialog_content>
<:dialog_confirm_button>
Enable <%= actor_type(@actor.type) %>
Enable {actor_type(@actor.type)}
</:dialog_confirm_button>
<:dialog_cancel_button>
Cancel
</:dialog_cancel_button>
Enable <%= actor_type(@actor.type) %>
Enable {actor_type(@actor.type)}
</.button_with_confirmation>
</:action>
<:content flash={@flash}>
@@ -202,14 +202,14 @@ defmodule Web.Actors.Show do
<.vertical_table_row>
<:label>Name</:label>
<:value>
<%= @actor.name %>
{@actor.name}
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Role</:label>
<:value>
<%= actor_role(@actor.type) %>
{actor_role(@actor.type)}
</:value>
</.vertical_table_row>
@@ -378,7 +378,7 @@ defmodule Web.Actors.Show do
metadata={@tokens_metadata}
>
<:col :let={token} label="type" class="w-1/12">
<%= token.type %>
{token.type}
</:col>
<:col :let={token} :if={@actor.type != :service_account} label="identity" class="w-3/12">
<.identity_identifier account={@account} identity={token.identity} />
@@ -391,14 +391,14 @@ defmodule Web.Actors.Show do
<:item :for={client <- token.clients}>
<.link navigate={~p"/#{@account}/clients/#{client.id}"} class={[link_style()]}>
<%= client.name %>
{client.name}
</.link>
</:item>
</.intersperse_blocks>
<span :if={token.type != :client}>N/A</span>
</:col>
<:col :let={token} :if={@actor.type == :service_account} label="name" class="w-2/12">
<%= token.name %>
{token.name}
</:col>
<:col :let={token} label="created" class="w-2/12">
<.created_by account={@account} schema={token} />
@@ -482,7 +482,7 @@ defmodule Web.Actors.Show do
<:col :let={client} field={{:clients, :name}} label="name">
<div class="flex items-center space-x-1">
<.link navigate={~p"/#{@account}/clients/#{client.id}"} class={[link_style()]}>
<%= client.name %>
{client.name}
</.link>
<.icon
:if={not is_nil(client.verified_at)}
@@ -535,17 +535,17 @@ defmodule Web.Actors.Show do
</:col>
<:col :let={flow} label="client">
<.link navigate={~p"/#{@account}/clients/#{flow.client_id}"} class={link_style()}>
<%= flow.client.name %>
{flow.client.name}
</.link>
<br />
<code class="text-xs"><%= flow.client_remote_ip %></code>
<code class="text-xs">{flow.client_remote_ip}</code>
</:col>
<:col :let={flow} label="gateway">
<.link navigate={~p"/#{@account}/gateways/#{flow.gateway_id}"} class={[link_style()]}>
<%= flow.gateway.group.name %>-<%= flow.gateway.name %>
{flow.gateway.group.name}-{flow.gateway.name}
</.link>
<br />
<code class="text-xs"><%= flow.gateway_remote_ip %></code>
<code class="text-xs">{flow.gateway_remote_ip}</code>
</:col>
<:col :let={flow} :if={@flow_activities_enabled?} label="activity" class="w-1/12">
<.link navigate={~p"/#{@account}/flows/#{flow.id}"} class={[link_style()]}>
@@ -596,17 +596,17 @@ defmodule Web.Actors.Show do
icon="hero-trash-solid"
on_confirm="delete"
>
<:dialog_title>Confirm <%= actor_type(@actor.type) %> deletion</:dialog_title>
<:dialog_title>Confirm {actor_type(@actor.type)} deletion</:dialog_title>
<:dialog_content>
Are you sure you want to delete this <%= String.downcase(actor_type(@actor.type)) %> along with all associated identities?
Are you sure you want to delete this {String.downcase(actor_type(@actor.type))} along with all associated identities?
</:dialog_content>
<:dialog_confirm_button>
Delete <%= actor_type(@actor.type) %>
Delete {actor_type(@actor.type)}
</:dialog_confirm_button>
<:dialog_cancel_button>
Cancel
</:dialog_cancel_button>
Delete <%= actor_type(@actor.type) %>
Delete {actor_type(@actor.type)}
</.button_with_confirmation>
</:action>
</.danger_zone>

View File

@@ -24,7 +24,7 @@ defmodule Web.Actors.Users.New do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<.flash kind={:error} flash={@flash} />

View File

@@ -44,14 +44,14 @@ defmodule Web.Actors.Users.NewIdentity do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/actors"}>Actors</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/actors/users/#{@actor}/new_identity"}>
Add Identity
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<.flash kind={:error} flash={@flash} />

View File

@@ -6,7 +6,7 @@ defmodule Web.Clients.Components do
~H"""
<div class="flex items-center">
<span class="mr-1 mb-1"><.client_os_icon client={@client} /></span>
<%= get_client_os_name_and_version(@client.last_seen_user_agent) %>
{get_client_os_name_and_version(@client.last_seen_user_agent)}
</div>
"""
end
@@ -24,7 +24,7 @@ defmodule Web.Clients.Components do
def client_os_name_and_version(assigns) do
~H"""
<span>
<%= get_client_os_name_and_version(@client.last_seen_user_agent) %>
{get_client_os_name_and_version(@client.last_seen_user_agent)}
</span>
"""
end
@@ -37,7 +37,7 @@ defmodule Web.Clients.Components do
</:target>
<:content>
<div>
<%= @client.name %>
{@client.name}
<.icon
:if={not is_nil(@client.verified_at)}
name="hero-shield-check"

View File

@@ -25,7 +25,7 @@ defmodule Web.Clients.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/clients"}>Clients</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/clients/#{@client}"}>
<%= @client.name %>
{@client.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/clients/#{@client}/edit"}>
Edit
@@ -34,7 +34,7 @@ defmodule Web.Clients.Edit do
<.section>
<:title>
Editing client: <code><%= @client.name %></code>
Editing client: <code>{@client.name}</code>
</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">

View File

@@ -85,7 +85,7 @@ defmodule Web.Clients.Index do
<:col :let={client} field={{:clients, :name}} label="name">
<div class="flex items-center space-x-1">
<.link navigate={~p"/#{@account}/clients/#{client.id}"} class={[link_style()]}>
<%= client.name %>
{client.name}
</.link>
<.icon
:if={not is_nil(client.verified_at)}

View File

@@ -67,7 +67,7 @@ defmodule Web.Clients.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/clients"}>Clients</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/clients/#{@client.id}"}>
<%= @client.name %>
{@client.name}
</.breadcrumb>
</.breadcrumbs>
@@ -96,11 +96,11 @@ defmodule Web.Clients.Show do
</:content>
</.popover>
</:label>
<:value><%= @client.id %></:value>
<:value>{@client.id}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @client.name %></:value>
<:value>{@client.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -110,7 +110,7 @@ defmodule Web.Clients.Show do
<:label>Owner</:label>
<:value>
<.link navigate={~p"/#{@account}/actors/#{@client.actor.id}"} class={[link_style()]}>
<%= @client.actor.name %>
{@client.actor.name}
</.link>
</:value>
</.vertical_table_row>
@@ -136,7 +136,7 @@ defmodule Web.Clients.Show do
}
class={[link_style()]}
>
<%= @client.last_used_token.name %>
{@client.last_used_token.name}
</.link>
<span :if={not is_nil(@client.last_used_token.deleted_at)}>
(deleted)
@@ -146,12 +146,12 @@ defmodule Web.Clients.Show do
</.vertical_table_row>
<.vertical_table_row>
<:label>Version</:label>
<:value><%= @client.last_seen_version %></:value>
<:value>{@client.last_seen_version}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>User agent</:label>
<:value>
<%= @client.last_seen_user_agent %>
{@client.last_seen_user_agent}
</:value>
</.vertical_table_row>
<.vertical_table_row>
@@ -236,22 +236,22 @@ defmodule Web.Clients.Show do
</:content>
</.popover>
</:label>
<:value><%= @client.external_id %></:value>
<:value>{@client.external_id}</:value>
</.vertical_table_row>
<.vertical_table_row :for={{{title, helptext}, value} <- hardware_ids(@client)}>
<:label>
<.popover :if={not is_nil(helptext)}>
<:target>
<%= title %>
{title}
<.icon name="hero-question-mark-circle" class="w-3 h-3 mb-1 text-neutral-400" />
</:target>
<:content>
<%= helptext %>
{helptext}
</:content>
</.popover>
<span :if={is_nil(helptext)}><%= title %></span>
<span :if={is_nil(helptext)}>{title}</span>
</:label>
<:value><%= value %></:value>
<:value>{value}</:value>
</.vertical_table_row>
<.vertical_table_row>
@@ -307,7 +307,7 @@ defmodule Web.Clients.Show do
<.relative_datetime datetime={flow.inserted_at} />
</:col>
<:col :let={flow} label="remote ip" class="w-3/12">
<%= flow.client_remote_ip %>
{flow.client_remote_ip}
</:col>
<:col :let={flow} label="policy">
<.link navigate={~p"/#{@account}/policies/#{flow.policy_id}"} class={[link_style()]}>
@@ -316,10 +316,10 @@ defmodule Web.Clients.Show do
</:col>
<:col :let={flow} label="gateway" class="w-3/12">
<.link navigate={~p"/#{@account}/gateways/#{flow.gateway_id}"} class={[link_style()]}>
<%= flow.gateway.group.name %>-<%= flow.gateway.name %>
{flow.gateway.group.name}-{flow.gateway.name}
</.link>
<br />
<code class="text-xs"><%= flow.gateway_remote_ip %></code>
<code class="text-xs">{flow.gateway_remote_ip}</code>
</:col>
<:col :let={flow} :if={@flow_activities_enabled?} label="activity">
<.link navigate={~p"/#{@account}/flows/#{flow.id}"} class={[link_style()]}>

View File

@@ -63,13 +63,13 @@ defmodule Web.Flows.Show do
<.breadcrumbs account={@account}>
<.breadcrumb>Flows</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/flows/#{@flow.id}"}>
<%= @flow.client.name %> flow
{@flow.client.name} flow
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Flow for: <code><%= @flow.client.name %></code>
Flow for: <code>{@flow.client.name}</code>
</:title>
<:action>
<.button
@@ -105,20 +105,20 @@ defmodule Web.Flows.Show do
<:label>Client</:label>
<:value>
<.link navigate={~p"/#{@account}/clients/#{@flow.client_id}"} class={link_style()}>
<%= @flow.client.name %>
{@flow.client.name}
</.link>
<div>Remote IP: <%= @flow.client_remote_ip %></div>
<div>User Agent: <%= @flow.client_user_agent %></div>
<div>Remote IP: {@flow.client_remote_ip}</div>
<div>User Agent: {@flow.client_user_agent}</div>
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Gateway</:label>
<:value>
<.link navigate={~p"/#{@account}/gateways/#{@flow.gateway_id}"} class={link_style()}>
<%= @flow.gateway.group.name %>-<%= @flow.gateway.name %>
{@flow.gateway.group.name}-{@flow.gateway.name}
</.link>
<div>
Remote IP: <%= @flow.gateway_remote_ip %>
Remote IP: {@flow.gateway_remote_ip}
</div>
</:value>
</.vertical_table_row>
@@ -126,14 +126,14 @@ defmodule Web.Flows.Show do
<:label>Resource</:label>
<:value>
<.link navigate={~p"/#{@account}/resources/#{@flow.resource_id}"} class={link_style()}>
<%= @flow.resource.name %>
{@flow.resource.name}
</.link>
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Connectivity Type</:label>
<:value>
<%= @last_used_connectivity_type %>
{@last_used_connectivity_type}
</:value>
</.vertical_table_row>
</.vertical_table>
@@ -162,19 +162,19 @@ defmodule Web.Flows.Show do
<.relative_datetime datetime={activity.window_ended_at} />
</:col>
<:col :let={activity} label="destination">
<%= activity.destination %>
{activity.destination}
</:col>
<:col :let={activity} label="connectivity type">
<%= activity.connectivity_type %>
{activity.connectivity_type}
</:col>
<:col :let={activity} label="rx">
<%= Sizeable.filesize(activity.rx_bytes) %>
{Sizeable.filesize(activity.rx_bytes)}
</:col>
<:col :let={activity} label="tx">
<%= Sizeable.filesize(activity.tx_bytes) %>
{Sizeable.filesize(activity.tx_bytes)}
</:col>
<:col :let={activity} label="blocked tx">
<%= Sizeable.filesize(activity.blocked_tx_bytes) %>
{Sizeable.filesize(activity.blocked_tx_bytes)}
</:col>
<:empty>
<div class="text-center text-neutral-500 p-4">No metrics to display.</div>

View File

@@ -27,18 +27,18 @@ defmodule Web.Gateways.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/sites"}>Sites</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@gateway.group}"}>
<%= @gateway.group.name %>
{@gateway.group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@gateway.group}/gateways"}>
Gateways
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/gateways/#{@gateway}"}>
<%= @gateway.name %>
{@gateway.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Gateway: <code><%= @gateway.name %></code>
Gateway: <code>{@gateway.name}</code>
<span :if={not is_nil(@gateway.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
<:content>
@@ -50,13 +50,13 @@ defmodule Web.Gateways.Show do
navigate={~p"/#{@account}/sites/#{@gateway.group}"}
class={["font-medium", link_style()]}
>
<%= @gateway.group.name %>
{@gateway.group.name}
</.link>
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @gateway.name %></:value>
<:value>{@gateway.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -87,13 +87,13 @@ defmodule Web.Gateways.Show do
<.vertical_table_row>
<:label>Version</:label>
<:value>
<%= @gateway.last_seen_version %>
{@gateway.last_seen_version}
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>User agent</:label>
<:value>
<%= @gateway.last_seen_user_agent %>
{@gateway.last_seen_user_agent}
</:value>
</.vertical_table_row>
<!--

View File

@@ -31,7 +31,7 @@ defmodule Web.Groups.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/groups"}>Groups</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/groups/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/groups/#{@group}/edit"}>
Edit
@@ -39,7 +39,7 @@ defmodule Web.Groups.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Group: <code><%= @group.name %></code>
Edit Group: <code>{@group.name}</code>
</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">

View File

@@ -60,7 +60,7 @@ defmodule Web.Groups.EditActors do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/groups"}>Groups</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/groups/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/groups/#{@group}/edit_actors"}>
Edit Actors
@@ -69,7 +69,7 @@ defmodule Web.Groups.EditActors do
<.section>
<:title>
Edit Actors in Group: <code><%= @group.name %></code>
Edit Actors in Group: <code>{@group.name}</code>
</:title>
<:content>
<.live_table
@@ -153,7 +153,7 @@ defmodule Web.Groups.EditActors do
<:dialog_content>
<div class="mb-2">
You're about to apply the following membership changes for the
<strong><%= @group.name %></strong>
<strong>{@group.name}</strong>
group:
</div>
@@ -252,12 +252,12 @@ defmodule Web.Groups.EditActors do
<ul>
<li :for={{_id, name} <- @added} class="mb-2">
<.icon name="hero-plus" class="h-3.5 w-3.5 mr-2 text-green-500" />
<%= name %>
{name}
</li>
<li :for={{_id, name} <- @removed} class="mb-2">
<.icon name="hero-minus" class="h-3.5 w-3.5 mr-2 text-red-500" />
<%= name %>
{name}
</li>
</ul>
"""

View File

@@ -40,7 +40,7 @@ defmodule Web.Groups.Index do
def render(assigns) do
~H"""
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/groups"}><%= @page_title %></.breadcrumb>
<.breadcrumb path={~p"/#{@account}/groups"}>{@page_title}</.breadcrumb>
</.breadcrumbs>
<.section>
@@ -92,7 +92,7 @@ defmodule Web.Groups.Index do
<:item :let={actor}>
<.link navigate={~p"/#{@account}/actors/#{actor}"} class={[link_style()]}>
<%= actor.name %>
{actor.name}
</.link>
</:item>
@@ -103,7 +103,7 @@ defmodule Web.Groups.Index do
navigate={~p"/#{@account}/groups/#{group}?#actors"}
class={["inline-flex ml-1", link_style()]}
>
<%= count %> more
{count} more
</.link>
<span>.</span>
</span>

View File

@@ -21,7 +21,7 @@ defmodule Web.Groups.New do
<.breadcrumb path={~p"/#{@account}/groups/new"}>Add</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="py-8 px-4 mx-auto max-w-2xl lg:py-16">
<.form for={@form} phx-change={:change} phx-submit={:submit}>

View File

@@ -82,13 +82,13 @@ defmodule Web.Groups.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/groups"}>Groups</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/groups/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Group: <code><%= @group.name %></code>
Group: <code>{@group.name}</code>
<span :if={not is_nil(@group.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
<:action :if={is_nil(@group.deleted_at)}>
@@ -125,7 +125,7 @@ defmodule Web.Groups.Show do
<.vertical_table id="group">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @group.name %></:value>
<:value>{@group.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>
@@ -206,12 +206,12 @@ defmodule Web.Groups.Show do
>
<:col :let={policy} label="id">
<.link class={link_style()} navigate={~p"/#{@account}/policies/#{policy}"}>
<%= policy.id %>
{policy.id}
</.link>
</:col>
<:col :let={policy} label="resource">
<.link class={link_style()} navigate={~p"/#{@account}/resources/#{policy.resource_id}"}>
<%= policy.resource.name %>
{policy.resource.name}
</.link>
</:col>
<:col :let={policy} label="status">

View File

@@ -34,7 +34,7 @@ defmodule Web.Policies.Components do
attr(:policy, :map, required: true)
def policy_name(assigns) do
~H"<%= @policy.actor_group.name %> → <%= @policy.resource.name %>"
~H"{@policy.actor_group.name} → {@policy.resource.name}"
end
def maybe_drop_unsupported_conditions(attrs, socket) do
@@ -154,7 +154,7 @@ defmodule Web.Policies.Components do
<span :if={@operator == :is_in}>from</span>
<span :if={@operator == :is_not_in}>from any counties except</span>
<span class="font-medium">
<%= @values |> Enum.map(&Domain.Geo.country_common_name!/1) |> Enum.join(", ") %>
{@values |> Enum.map(&Domain.Geo.country_common_name!/1) |> Enum.join(", ")}
</span>
</span>
"""
@@ -165,7 +165,7 @@ defmodule Web.Policies.Components do
<span :if={@values != []} class="mr-1">
<span>from IP addresses that are</span> <span :if={@operator == :is_in_cidr}>in</span>
<span :if={@operator == :is_not_in_cidr}>not in</span>
<span class="font-medium"><%= Enum.join(@values, ", ") %></span>
<span class="font-medium">{Enum.join(@values, ", ")}</span>
</span>
"""
end
@@ -194,7 +194,7 @@ defmodule Web.Policies.Components do
<:item :for={provider <- @providers}>
<.link navigate={"/providers/#{provider.id}"} class={[link_style(), "font-medium"]}>
<%= provider.name %>
{provider.name}
</.link>
</:item>
</.intersperse_blocks>
@@ -241,12 +241,12 @@ defmodule Web.Policies.Components do
<:item :for={{day_of_week, tz_time_ranges} <- @tz_time_ranges_by_dow}>
<span class="ml-1 font-medium">
<%= day_of_week_name(day_of_week) <> "s" %>
{day_of_week_name(day_of_week) <> "s"}
<span :for={{timezone, time_ranges} <- tz_time_ranges}>
<%= "(" <>
{"(" <>
Enum.map_join(time_ranges, ", ", fn {from, to} ->
"#{from} - #{to}"
end) <> " #{timezone})" %>
end) <> " #{timezone})"}
</span>
</span>
</:item>
@@ -814,7 +814,7 @@ defmodule Web.Policies.Components do
<:separator>
<span class="mr-1">,</span>
</:separator>
<span><%= gateway_group.name %></span>
<span>{gateway_group.name}</span>
</.intersperse>
"""
end

View File

@@ -45,7 +45,7 @@ defmodule Web.Policies.Edit do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<legend class="mb-4 text-xl text-neutral-900">Details</legend>
@@ -67,11 +67,11 @@ defmodule Web.Policies.Edit do
required
>
<:options_group :let={options_group}>
<%= options_group %>
{options_group}
</:options_group>
<:option :let={group}>
<%= group.name %>
{group.name}
</:option>
<:no_options :let={name}>
@@ -110,7 +110,7 @@ defmodule Web.Policies.Edit do
required
>
<:options_group :let={group}>
<%= group %>
{group}
</:options_group>
<:option :let={resource}>
@@ -120,7 +120,7 @@ defmodule Web.Policies.Edit do
- <span class="text-red-800">upgrade to unlock</span>
</span>
<% else %>
<%= resource.name %>
{resource.name}
<% end %>
<span :if={resource.gateway_groups == []} class="text-red-800">

View File

@@ -45,11 +45,11 @@ defmodule Web.Policies.Index do
def render(assigns) do
~H"""
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/policies"}><%= @page_title %></.breadcrumb>
<.breadcrumb path={~p"/#{@account}/policies"}>{@page_title}</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:action>
<.docs_action path="/deploy/policies" />
</:action>
@@ -75,7 +75,7 @@ defmodule Web.Policies.Index do
<:col :let={policy} label="id" class="w-3/12">
<.link class={link_style()} navigate={~p"/#{@account}/policies/#{policy}"}>
<span class="block truncate">
<%= policy.id %>
{policy.id}
</span>
</.link>
</:col>
@@ -86,7 +86,7 @@ defmodule Web.Policies.Index do
</:col>
<:col :let={policy} label="resource" class="w-2/12">
<.link class={link_style()} navigate={~p"/#{@account}/resources/#{policy.resource_id}"}>
<%= policy.resource.name %>
{policy.resource.name}
</.link>
</:col>
<:col :let={policy} label="status">

View File

@@ -32,7 +32,7 @@ defmodule Web.Policies.New do
<.breadcrumb path={~p"/#{@account}/policies/new"}>Add Policy</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<legend class="mb-4 text-xl text-neutral-900">Details</legend>
@@ -55,11 +55,11 @@ defmodule Web.Policies.New do
required
>
<:options_group :let={options_group}>
<%= options_group %>
{options_group}
</:options_group>
<:option :let={group}>
<%= group.name %>
{group.name}
</:option>
<:no_options :let={name}>
@@ -99,7 +99,7 @@ defmodule Web.Policies.New do
required
>
<:options_group :let={group}>
<%= group %>
{group}
</:options_group>
<:option :let={resource}>
@@ -109,7 +109,7 @@ defmodule Web.Policies.New do
- <span class="text-red-800">upgrade to unlock</span>
</span>
<% else %>
<%= resource.name %>
{resource.name}
<% end %>
<span :if={resource.gateway_groups == []} class="text-red-800">

View File

@@ -144,7 +144,7 @@ defmodule Web.Policies.Show do
ID
</:label>
<:value>
<%= @policy.id %>
{@policy.id}
</:value>
</.vertical_table_row>
<.vertical_table_row :if={not is_nil(@policy.deleted_at)}>
@@ -152,7 +152,7 @@ defmodule Web.Policies.Show do
Persistent ID
</:label>
<:value>
<%= @policy.persistent_id %>
{@policy.persistent_id}
</:value>
</.vertical_table_row>
<.vertical_table_row :if={
@@ -202,7 +202,7 @@ defmodule Web.Policies.Show do
</:label>
<:value>
<.link navigate={~p"/#{@account}/resources/#{@policy.resource_id}"} class={link_style()}>
<%= @policy.resource.name %>
{@policy.resource.name}
</.link>
<span :if={not is_nil(@policy.resource.deleted_at)} class="text-red-600">
(deleted)
@@ -257,20 +257,20 @@ defmodule Web.Policies.Show do
</:col>
<:col :let={flow} label="client, actor" class="w-3/12">
<.link navigate={~p"/#{@account}/clients/#{flow.client_id}"} class={link_style()}>
<%= flow.client.name %>
{flow.client.name}
</.link>
owned by
<.link navigate={~p"/#{@account}/actors/#{flow.client.actor_id}"} class={link_style()}>
<%= flow.client.actor.name %>
{flow.client.actor.name}
</.link>
<%= flow.client_remote_ip %>
{flow.client_remote_ip}
</:col>
<:col :let={flow} label="gateway" class="w-3/12">
<.link navigate={~p"/#{@account}/gateways/#{flow.gateway_id}"} class={link_style()}>
<%= flow.gateway.group.name %>-<%= flow.gateway.name %>
{flow.gateway.group.name}-{flow.gateway.name}
</.link>
<br />
<code class="text-xs"><%= flow.gateway_remote_ip %></code>
<code class="text-xs">{flow.gateway_remote_ip}</code>
</:col>
<:col :let={flow} :if={@flow_activities_enabled?} label="activity">
<.link navigate={~p"/#{@account}/flows/#{flow.id}"} class={link_style()}>

View File

@@ -30,14 +30,14 @@ defmodule Web.RelayGroups.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/relay_groups"}>Relay Instance Groups</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relay_groups/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relay_groups/#{@group}/edit"}>Edit</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Edit Relay Instance Group <code><%= @group.name %></code>
Edit Relay Instance Group <code>{@group.name}</code>
</:title>
<:content>
<div class="py-8 px-4 mx-auto max-w-2xl lg:py-16">

View File

@@ -67,10 +67,10 @@ defmodule Web.RelayGroups.Index do
navigate={~p"/#{@account}/relay_groups/#{group.id}"}
class={["font-medium", link_style()]}
>
<%= group.name %>
{group.name}
</.link>
<span :if={is_nil(group.account_id)}>
<%= group.name %>
{group.name}
</span>
</:group>
@@ -81,27 +81,27 @@ defmodule Web.RelayGroups.Index do
class={[link_style()]}
>
<code :if={relay.name} class="block text-xs">
<%= relay.name %>
{relay.name}
</code>
<code :if={relay.ipv4} class="block text-xs">
<%= relay.ipv4 %>
{relay.ipv4}
</code>
<code :if={relay.ipv6} class="block text-xs">
<%= relay.ipv6 %>
{relay.ipv6}
</code>
</.link>
<div :if={is_nil(relay.account_id)}>
<code :if={relay.ipv4} class="block text-xs">
<%= relay.ipv4 %>
{relay.ipv4}
</code>
<code :if={relay.ipv6} class="block text-xs">
<%= relay.ipv6 %>
{relay.ipv6}
</code>
</div>
</:col>
<:col :let={relay} label="type">
<%= if relay.account_id, do: "self-hosted", else: "firezone-owned" %>
{if relay.account_id, do: "self-hosted", else: "firezone-owned"}
</:col>
<:col :let={relay} label="status">

View File

@@ -26,7 +26,7 @@ defmodule Web.RelayGroups.New do
<.breadcrumb path={~p"/#{@account}/relay_groups/new"}>Add</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="py-8 px-4 mx-auto max-w-2xl lg:py-16">
<.form for={@form} phx-change={:change} phx-submit={:submit}>

View File

@@ -38,7 +38,7 @@ defmodule Web.RelayGroups.NewToken do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/relay_groups"}>Relays</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relay_groups/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relay_groups/#{@group}/new_token"}>Deploy</.breadcrumb>
</.breadcrumbs>

View File

@@ -60,13 +60,13 @@ defmodule Web.RelayGroups.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/relay_groups"}>Relay Instance Groups</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relay_groups/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Relay Instance Group: <code><%= @group.name %></code>
Relay Instance Group: <code>{@group.name}</code>
<span :if={not is_nil(@group.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
<:action :if={not is_nil(@group.account_id) and is_nil(@group.deleted_at)}>
@@ -79,7 +79,7 @@ defmodule Web.RelayGroups.Show do
<.vertical_table id="group">
<.vertical_table_row>
<:label>Instance Group Name</:label>
<:value><%= @group.name %></:value>
<:value>{@group.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>
@@ -133,13 +133,13 @@ defmodule Web.RelayGroups.Show do
<:col :let={relay} label="instance">
<.link navigate={~p"/#{@account}/relays/#{relay.id}"} class={[link_style()]}>
<code :if={relay.name} class="block text-xs">
<%= relay.name %>
{relay.name}
</code>
<code :if={relay.ipv4} class="block text-xs">
<%= relay.ipv4 %>
{relay.ipv4}
</code>
<code :if={relay.ipv6} class="block text-xs">
<%= relay.ipv6 %>
{relay.ipv6}
</code>
</.link>
</:col>

View File

@@ -27,21 +27,21 @@ defmodule Web.Relays.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/relay_groups"}>Relay Instance Groups</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relay_groups/#{@relay.group}"}>
<%= @relay.group.name %>
{@relay.group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/relays/#{@relay}"}>
<%= @relay.name || @relay.ipv4 || @relay.ipv6 %>
{@relay.name || @relay.ipv4 || @relay.ipv6}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Relay: <span :if={@relay.name}><%= @relay.name %></span>
Relay: <span :if={@relay.name}>{@relay.name}</span>
<.intersperse_blocks :if={is_nil(@relay.name)}>
<:separator>,&nbsp;</:separator>
<:item :for={ip <- [@relay.ipv4, @relay.ipv6]} :if={not is_nil(ip)}>
<code><%= @relay.ipv4 %></code>
<code>{@relay.ipv4}</code>
</:item>
</.intersperse_blocks>
<span :if={not is_nil(@relay.deleted_at)} class="text-red-600">(deleted)</span>
@@ -51,11 +51,11 @@ defmodule Web.Relays.Show do
<.vertical_table id="relay">
<.vertical_table_row>
<:label>Instance Group Name</:label>
<:value><%= @relay.group.name %></:value>
<:value>{@relay.group.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @relay.name %></:value>
<:value>{@relay.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>
@@ -63,7 +63,7 @@ defmodule Web.Relays.Show do
<p class="text-xs">Set by <code>PUBLIC_IP4_ADDR</code></p>
</:label>
<:value>
<code><%= @relay.ipv4 %></code>
<code>{@relay.ipv4}</code>
</:value>
</.vertical_table_row>
<.vertical_table_row>
@@ -72,7 +72,7 @@ defmodule Web.Relays.Show do
<p class="text-xs">Set by <code>PUBLIC_IP6_ADDR</code></p>
</:label>
<:value>
<code><%= @relay.ipv6 %></code>
<code>{@relay.ipv6}</code>
</:value>
</.vertical_table_row>
<.vertical_table_row>
@@ -98,13 +98,13 @@ defmodule Web.Relays.Show do
<.vertical_table_row>
<:label>Version</:label>
<:value>
<%= @relay.last_seen_version %>
{@relay.last_seen_version}
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>User agent</:label>
<:value>
<%= @relay.last_seen_user_agent %>
{@relay.last_seen_user_agent}
</:value>
</.vertical_table_row>
</.vertical_table>

View File

@@ -226,7 +226,7 @@ defmodule Web.Resources.Components do
def filter_description(assigns) do
~H"""
<code><%= pretty_print_filter(@filter) %></code>
<code>{pretty_print_filter(@filter)}</code>
"""
end
@@ -294,7 +294,7 @@ defmodule Web.Resources.Components do
</p>
<.error :for={error <- @errors} data-validation-error-for="connections">
<%= error %>
{error}
</.error>
<div :for={gateway_group <- @gateway_groups}>
<% connected_gateway_group_ids = connected_gateway_group_ids(@form) %>
@@ -327,7 +327,7 @@ defmodule Web.Resources.Components do
class="font-medium text-accent-500 hover:underline"
target="_blank"
>
<%= gateway_group.name %>
{gateway_group.name}
</.link>
</div>
</div>

View File

@@ -35,7 +35,7 @@ defmodule Web.Resources.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/resources"}>Resources</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/resources/#{@resource.id}"}>
<%= @resource.name %>
{@resource.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/resources/#{@resource.id}/edit"}>
Edit

View File

@@ -78,12 +78,12 @@ defmodule Web.Resources.Index do
>
<:col :let={resource} field={{:resources, :name}} label="Name">
<.link navigate={~p"/#{@account}/resources/#{resource.id}"} class={link_style()}>
<%= resource.name %>
{resource.name}
</.link>
</:col>
<:col :let={resource} field={{:resources, :address}} label="Address">
<code :if={resource.type != :internet} class="block text-xs">
<%= resource.address %>
{resource.address}
</code>
<span :if={resource.type == :internet} class="block text-xs">
<code>0.0.0.0/0</code>, <code>::/0 </code>
@@ -96,7 +96,7 @@ defmodule Web.Resources.Index do
class={link_style()}
>
<.badge type="info">
<%= gateway_group.name %>
{gateway_group.name}
</.badge>
</.link>
</:col>
@@ -119,7 +119,7 @@ defmodule Web.Resources.Index do
<:tail :let={count}>
<span class="inline-block whitespace-nowrap">
and <%= count %> more.
and {count} more.
</span>
</:tail>
</.peek>

View File

@@ -28,7 +28,7 @@ defmodule Web.Resources.New do
<.breadcrumb path={~p"/#{@account}/resources/new"}>Add Resource</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">

View File

@@ -96,12 +96,12 @@ defmodule Web.Resources.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/resources"}>Resources</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/resources/#{@resource.id}"}>
<%= @resource.name %>
{@resource.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Resource: <code><%= @resource.name %></code>
Resource: <code>{@resource.name}</code>
<span
:if={not is_nil(@resource.deleted_at) and is_nil(@resource.replaced_by_resource_id)}
@@ -126,7 +126,7 @@ defmodule Web.Resources.Show do
ID
</:label>
<:value>
<%= @resource.id %>
{@resource.id}
</:value>
</.vertical_table_row>
<.vertical_table_row :if={not is_nil(@resource.deleted_at)}>
@@ -134,7 +134,7 @@ defmodule Web.Resources.Show do
Persistent ID
</:label>
<:value>
<%= @resource.persistent_id %>
{@resource.persistent_id}
</:value>
</.vertical_table_row>
<.vertical_table_row>
@@ -142,7 +142,7 @@ defmodule Web.Resources.Show do
Name
</:label>
<:value>
<%= @resource.name %>
{@resource.name}
</:value>
</.vertical_table_row>
<.vertical_table_row>
@@ -154,7 +154,7 @@ defmodule Web.Resources.Show do
0.0.0.0/0, ::/0
</span>
<span :if={@resource.type != :internet}>
<%= @resource.address %>
{@resource.address}
</span>
</:value>
</.vertical_table_row>
@@ -170,11 +170,11 @@ defmodule Web.Resources.Show do
<span :if={@resource.type != :internet}>
<%= if http_link?(@resource.address_description) do %>
<.link class={link_style()} navigate={@resource.address_description} target="_blank">
<%= @resource.address_description %>
{@resource.address_description}
<.icon name="hero-arrow-top-right-on-square" class="mb-3 w-3 h-3" />
</.link>
<% else %>
<%= @resource.address_description %>
{@resource.address_description}
<% end %>
</span>
</:value>
@@ -191,7 +191,7 @@ defmodule Web.Resources.Show do
class={[link_style()]}
>
<.badge type="info">
<%= gateway_group.name %>
{gateway_group.name}
</.badge>
</.link>
<span :if={@resource.gateway_groups == []}>
@@ -223,7 +223,7 @@ defmodule Web.Resources.Show do
navigate={~p"/#{@account}/resources/#{@resource.replaced_by_resource}"}
class={["text-accent-600"] ++ link_style()}
>
<%= @resource.replaced_by_resource.name %>
{@resource.replaced_by_resource.name}
</.link>
</:value>
</.vertical_table_row>
@@ -238,7 +238,7 @@ defmodule Web.Resources.Show do
navigate={~p"/#{@account}/resources/#{@resource.replaces_resource}"}
class={["text-accent-600"] ++ link_style()}
>
<%= @resource.replaces_resource.name %>
{@resource.replaces_resource.name}
</.link>
</:value>
</.vertical_table_row>
@@ -281,7 +281,7 @@ defmodule Web.Resources.Show do
>
<:col :let={policy} label="id">
<.link class={link_style()} navigate={~p"/#{@account}/policies/#{policy}"}>
<%= policy.id %>
{policy.id}
</.link>
</:col>
<:col :let={policy} label="group">
@@ -350,20 +350,20 @@ defmodule Web.Resources.Show do
</:col>
<:col :let={flow} label="client, actor" class="w-3/12">
<.link navigate={~p"/#{@account}/clients/#{flow.client_id}"} class={[link_style()]}>
<%= flow.client.name %>
{flow.client.name}
</.link>
owned by
<.link navigate={~p"/#{@account}/actors/#{flow.client.actor_id}"} class={[link_style()]}>
<%= flow.client.actor.name %>
{flow.client.actor.name}
</.link>
<%= flow.client_remote_ip %>
{flow.client_remote_ip}
</:col>
<:col :let={flow} label="gateway" class="w-3/12">
<.link navigate={~p"/#{@account}/gateways/#{flow.gateway_id}"} class={[link_style()]}>
<%= flow.gateway.group.name %>-<%= flow.gateway.name %>
{flow.gateway.group.name}-{flow.gateway.name}
</.link>
<br />
<code class="text-xs"><%= flow.gateway_remote_ip %></code>
<code class="text-xs">{flow.gateway_remote_ip}</code>
</:col>
<:col :let={flow} :if={@flow_activities_enabled?} label="activity">
<.link navigate={~p"/#{@account}/flows/#{flow.id}"} class={[link_style()]}>

View File

@@ -31,16 +31,16 @@ defmodule Web.Settings.Account do
<.vertical_table id="account">
<.vertical_table_row>
<:label>Account Name</:label>
<:value><%= @account.name %></:value>
<:value>{@account.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Account ID</:label>
<:value><%= @account.id %></:value>
<:value>{@account.id}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Account Slug</:label>
<:value>
<.copy id="account-slug"><%= @account.slug %></.copy>
<.copy id="account-slug">{@account.slug}</.copy>
</:value>
</.vertical_table_row>
</.vertical_table>
@@ -128,7 +128,7 @@ defmodule Web.Settings.Account do
defp notification_badge(assigns) do
~H"""
<.badge type={if @notification.enabled, do: "success", else: "neutral"}>
<%= if @notification.enabled, do: "Enabled", else: "Disabled" %>
{if @notification.enabled, do: "Enabled", else: "Disabled"}
</.badge>
"""
end

View File

@@ -26,7 +26,7 @@ defmodule Web.Settings.Account.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Account <%= @form.data.name %>
Edit Account {@form.data.name}
</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">

View File

@@ -55,6 +55,7 @@ defmodule Web.Settings.Account.Notifications.Edit do
</td>
<td class="px-6 py-4 text-center">
<.input
id="outdated_gateway_enabled_true"
class="mx-auto"
type="radio"
field={outdated_gateway[:enabled]}
@@ -64,6 +65,7 @@ defmodule Web.Settings.Account.Notifications.Edit do
</td>
<td class="px-6 py-4 text-center">
<.input
id="outdated_gateway_enabled_false"
class="mx-auto"
type="radio"
field={outdated_gateway[:enabled]}

View File

@@ -25,7 +25,7 @@ defmodule Web.Settings.ApiClients.Beta do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
API Clients are used to manage Firezone configuration through a REST API. See our
<.link navigate={"#{@api_url}/swaggerui"} class={link_style()} target="_blank">

View File

@@ -30,13 +30,13 @@ defmodule Web.Settings.ApiClients.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/settings/api_clients"}>API Clients</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/api_clients/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/api_clients/#{@actor}/edit"}>Edit</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<h2 class="mb-4 text-xl text-neutral-900">

View File

@@ -50,11 +50,11 @@ defmodule Web.Settings.ApiClients.Index do
def render(assigns) do
~H"""
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/settings/api_clients"}><%= @page_title %></.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/api_clients"}>{@page_title}</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
API Clients are used to manage Firezone configuration through a REST API. See our
<.link navigate={"#{@api_url}/swaggerui"} class={link_style()} target="_blank">
@@ -83,16 +83,16 @@ defmodule Web.Settings.ApiClients.Index do
>
<:col :let={actor} label="name">
<.link navigate={~p"/#{@account}/settings/api_clients/#{actor}"} class={link_style()}>
<%= actor.name %>
{actor.name}
</.link>
</:col>
<:col :let={actor} label="status">
<.badge type={badge_type(actor)}>
<%= status(actor) %>
{status(actor)}
</.badge>
</:col>
<:col :let={actor} label="created at">
<%= Cldr.DateTime.Formatter.date(actor.inserted_at, 1, "en", Web.CLDR, []) %>
{Cldr.DateTime.Formatter.date(actor.inserted_at, 1, "en", Web.CLDR, [])}
</:col>
<:empty>
<div class="flex justify-center text-center text-neutral-500 p-4">

View File

@@ -27,7 +27,7 @@ defmodule Web.Settings.ApiClients.New do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<h2 class="mb-4 text-xl text-neutral-900">

View File

@@ -30,7 +30,7 @@ defmodule Web.Settings.ApiClients.NewToken do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/settings/api_clients"}>API Clients</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/api_clients/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/api_clients/#{@actor}/new_token"}>
Add Token
@@ -38,7 +38,7 @@ defmodule Web.Settings.ApiClients.NewToken do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<div class="max-w-2xl px-4 py-8 mx-auto lg:py-16">
<div :if={is_nil(@encoded_token)}>

View File

@@ -48,13 +48,13 @@ defmodule Web.Settings.ApiClients.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/settings/api_clients"}>API Clients</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/api_clients/#{@actor}"}>
<%= @actor.name %>
{@actor.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
API Client: <span class="font-medium"><%= @actor.name %></span>
API Client: <span class="font-medium">{@actor.name}</span>
<span :if={Actors.actor_deleted?(@actor)} class="text-red-600">(deleted)</span>
</:title>
<:action :if={is_nil(@actor.deleted_at)}>
@@ -107,13 +107,13 @@ defmodule Web.Settings.ApiClients.Show do
<.vertical_table id="api-client">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @actor.name %></:value>
<:value>{@actor.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>
<:value>
<%= Cldr.DateTime.Formatter.date(@actor.inserted_at, 1, "en", Web.CLDR, []) %>
{Cldr.DateTime.Formatter.date(@actor.inserted_at, 1, "en", Web.CLDR, [])}
</:value>
</.vertical_table_row>
</.vertical_table>
@@ -164,24 +164,24 @@ defmodule Web.Settings.ApiClients.Show do
metadata={@tokens_metadata}
>
<:col :let={token} label="name">
<%= token.name %>
{token.name}
</:col>
<:col :let={token} label="expires at">
<%= Cldr.DateTime.Formatter.date(token.expires_at, 1, "en", Web.CLDR, []) %>
{Cldr.DateTime.Formatter.date(token.expires_at, 1, "en", Web.CLDR, [])}
</:col>
<:col :let={token} label="created by">
<.link
class={[link_style()]}
navigate={~p"/#{@account}/actors/#{token.created_by_actor_id}"}
>
<%= get_identity_email(token.created_by_identity) %>
{get_identity_email(token.created_by_identity)}
</.link>
</:col>
<:col :let={token} label="last used">
<.relative_datetime datetime={token.last_seen_at} />
</:col>
<:col :let={token} label="last used IP">
<%= token.last_seen_remote_ip %>
{token.last_seen_remote_ip}
</:col>
<:action :let={token}>
<.button_with_confirmation

View File

@@ -54,7 +54,7 @@ defmodule Web.Settings.Billing do
</:action>
<:content>
<.flash :if={@error} kind={:error}>
<p><%= @error %></p>
<p>{@error}</p>
<p>
If you need assistance, please <.link
@@ -74,21 +74,21 @@ defmodule Web.Settings.Billing do
<.vertical_table_row>
<:label>Current Plan</:label>
<:value>
<%= @account.metadata.stripe.product_name %>
{@account.metadata.stripe.product_name}
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Billing Email</:label>
<:value>
<%= @account.metadata.stripe.billing_email %>
{@account.metadata.stripe.billing_email}
</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Billing Name</:label>
<:value>
<%= @account.legal_name %>
{@account.legal_name}
</:value>
</.vertical_table_row>
</.vertical_table>
@@ -115,9 +115,9 @@ defmodule Web.Settings.Billing do
not is_nil(@users_count) and
@users_count > @account.limits.users_count && "text-red-500"
]}>
<%= @users_count %> used
{@users_count} used
</span>
/ <%= @account.limits.users_count %> allowed
/ {@account.limits.users_count} allowed
</:value>
</.vertical_table_row>
@@ -130,9 +130,9 @@ defmodule Web.Settings.Billing do
not is_nil(@active_users_count) and
@active_users_count > @account.limits.monthly_active_users_count && "text-red-500"
]}>
<%= @active_users_count %> used
{@active_users_count} used
</span>
/ <%= @account.limits.monthly_active_users_count %> allowed
/ {@account.limits.monthly_active_users_count} allowed
<p class="text-xs">Users that have signed in from a device within the last month</p>
</:value>
</.vertical_table_row>
@@ -146,9 +146,9 @@ defmodule Web.Settings.Billing do
not is_nil(@service_accounts_count) and
@service_accounts_count > @account.limits.service_accounts_count && "text-red-500"
]}>
<%= @service_accounts_count %> used
{@service_accounts_count} used
</span>
/ <%= @account.limits.service_accounts_count %> allowed
/ {@account.limits.service_accounts_count} allowed
</:value>
</.vertical_table_row>
@@ -161,9 +161,9 @@ defmodule Web.Settings.Billing do
not is_nil(@admins_count) and
@admins_count > @account.limits.account_admin_users_count && "text-red-500"
]}>
<%= @admins_count %> used
{@admins_count} used
</span>
/ <%= @account.limits.account_admin_users_count %> allowed
/ {@account.limits.account_admin_users_count} allowed
</:value>
</.vertical_table_row>
@@ -176,9 +176,9 @@ defmodule Web.Settings.Billing do
not is_nil(@gateway_groups_count) and
@gateway_groups_count > @account.limits.gateway_groups_count && "text-red-500"
]}>
<%= @gateway_groups_count %> used
{@gateway_groups_count} used
</span>
/ <%= @account.limits.gateway_groups_count %> allowed
/ {@account.limits.gateway_groups_count} allowed
</:value>
</.vertical_table_row>
</.vertical_table>

View File

@@ -120,7 +120,7 @@ defmodule Web.Settings.DNS do
:for={error <- dns_config_errors(@form.source.changes)}
data-validation-error-for="clients_upstream_dns"
>
<%= error %>
{error}
</.error>
</.inputs_for>
</div>

View File

@@ -303,7 +303,7 @@ defmodule Web.Settings.IdentityProviders.Components do
class={link_style()}
>
<% identities_count_by_provider_id = @identities_count_by_provider_id[@provider.id] || 0 %>
<%= identities_count_by_provider_id %>
{identities_count_by_provider_id}
<.cardinal_number
number={identities_count_by_provider_id}
one="identity"
@@ -316,7 +316,7 @@ defmodule Web.Settings.IdentityProviders.Components do
class={link_style()}
>
<% groups_count_by_provider_id = @groups_count_by_provider_id[@provider.id] || 0 %>
<%= groups_count_by_provider_id %>
{groups_count_by_provider_id}
<.cardinal_number number={groups_count_by_provider_id} one="group" other="groups" />
</.link>
@@ -344,7 +344,7 @@ defmodule Web.Settings.IdentityProviders.Components do
class={link_style()}
>
<% identities_count_by_provider_id = @identities_count_by_provider_id[@provider.id] || 0 %>
<%= identities_count_by_provider_id %>
{identities_count_by_provider_id}
<.cardinal_number
number={identities_count_by_provider_id}
one="identity"
@@ -357,7 +357,7 @@ defmodule Web.Settings.IdentityProviders.Components do
class={link_style()}
>
<% groups_count_by_provider_id = @groups_count_by_provider_id[@provider.id] || 0 %>
<%= groups_count_by_provider_id %>
{groups_count_by_provider_id}
<.cardinal_number number={groups_count_by_provider_id} one="group" other="groups" />
</.link>
</span>

View File

@@ -122,7 +122,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Components do
Click <strong>ADD OR REMOVE SCOPES</strong> and ensure the following scopes are added:
</p>
<.code_block
id="oauth-scopes"
id="oauth-scopes-2"
class="w-full text-xs mb-4 whitespace-pre-line rounded"
phx-no-format
><%= Enum.join(GoogleWorkspace.Settings.scope(), "\n") %></.code_block>
@@ -232,7 +232,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Components do
and paste the <strong>Unique ID</strong>
from the previous step to the <strong>Client ID</strong>
field and add the following scopes: <.code_block
id="oauth-scopes"
id="oauth-scopes-1"
class="w-full text-xs mb-4 whitespace-pre-line rounded"
phx-no-format
><%= Enum.join(GoogleWorkspace.Settings.scope(), ",\n") %></.code_block>

View File

@@ -34,7 +34,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Identity Provider <%= @form.data.name %>
Edit Identity Provider {@form.data.name}
</:title>
<:content>
<.provider_form account={@account} id={@form.data.id} form={@form} />

View File

@@ -37,7 +37,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.New do
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
For a more detailed guide on setting up Firezone with Google Workspace, please <.link
href="https://www.firezone.dev/kb/authenticate/google"

View File

@@ -35,13 +35,13 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/google_workspace/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Identity Provider: <code><%= @provider.name %></code>
Identity Provider: <code>{@provider.name}</code>
<span :if={not is_nil(@provider.disabled_at)} class="text-primary-600">(disabled)</span>
<span :if={not is_nil(@provider.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
@@ -128,7 +128,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
<.flash_group flash={@flash} />
<.flash :if={@safe_to_delete_actors_count > 0} kind={:warning}>
You have <%= @safe_to_delete_actors_count %> Actor(s) that were synced from this provider and do not have any other identities.
You have {@safe_to_delete_actors_count} Actor(s) that were synced from this provider and do not have any other identities.
<.button_with_confirmation
id="delete_stale_actors"
style="danger"
@@ -154,7 +154,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
<.vertical_table id="provider">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @provider.name %></:value>
<:value>{@provider.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -184,7 +184,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
IdP provider reported an error during the last sync:
</p>
<div class="flex items-center mt-1">
<span class="text-red-500 font-mono"><%= @provider.last_sync_error %></span>
<span class="text-red-500 font-mono">{@provider.last_sync_error}</span>
</div>
</div>
</:value>
@@ -192,7 +192,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
<.vertical_table_row>
<:label>Client ID</:label>
<:value><%= @provider.adapter_config["client_id"] %></:value>
<:value>{@provider.adapter_config["client_id"]}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>

View File

@@ -80,11 +80,11 @@ defmodule Web.Settings.IdentityProviders.Index do
>
<:col :let={provider} field={{:providers, :name}} label="Name" class="w-2/12">
<.link navigate={view_provider(@account, provider)} class={[link_style()]}>
<%= provider.name %>
{provider.name}
</.link>
</:col>
<:col :let={provider} label="Type" class="w-2/12">
<%= adapter_name(provider.adapter) %>
{adapter_name(provider.adapter)}
</:col>
<:col :let={provider} label="Status" class="w-2/12">
<.status provider={provider} />

View File

@@ -27,7 +27,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Edit do
Identity Providers Settings
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/jumpcloud/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/jumpcloud/#{@form.data}/edit"}>
Edit
@@ -35,7 +35,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Identity Provider <%= @form.data.name %>
Edit Identity Provider {@form.data.name}
</:title>
<:content>
<.provider_form account={@account} id={@form.data.id} form={@form} />

View File

@@ -37,7 +37,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.New do
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
For a more detailed guide on setting up Firezone with JumpCloud, please <.link
href="https://www.firezone.dev/kb/authenticate/jumpcloud"

View File

@@ -37,13 +37,13 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/jumpcloud/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Identity Provider: <code><%= @provider.name %></code>
Identity Provider: <code>{@provider.name}</code>
<span :if={not is_nil(@provider.disabled_at)} class="text-primary-600">(disabled)</span>
<span :if={not is_nil(@provider.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
@@ -128,7 +128,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
<.flash_group flash={@flash} />
<.flash :if={@safe_to_delete_actors_count > 0} kind={:warning}>
You have <%= @safe_to_delete_actors_count %> Actor(s) that were synced from this provider and do not have any other identities.
You have {@safe_to_delete_actors_count} Actor(s) that were synced from this provider and do not have any other identities.
<.button_with_confirmation
id="delete_stale_actors"
style="danger"
@@ -154,7 +154,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
<.vertical_table id="provider">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @provider.name %></:value>
<:value>{@provider.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -194,7 +194,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
IdP provider reported an error during the last sync:
</p>
<div class="flex items-center mt-1">
<span class="text-red-500 font-mono"><%= @provider.last_sync_error %></span>
<span class="text-red-500 font-mono">{@provider.last_sync_error}</span>
</div>
</div>
</div>
@@ -203,7 +203,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
<.vertical_table_row>
<:label>Client ID</:label>
<:value><%= @provider.adapter_config["client_id"] %></:value>
<:value>{@provider.adapter_config["client_id"]}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>
@@ -316,7 +316,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
defp sync_portal_button(assigns) do
~H"""
<.button size="xs" phx-click="setup_sync">
<%= render_slot(@inner_block) %>
{render_slot(@inner_block)}
</.button>
"""
end

View File

@@ -34,7 +34,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Identity Provider <%= @form.data.name %>
Edit Identity Provider {@form.data.name}
</:title>
<:content>
<.provider_form account={@account} id={@form.data.id} form={@form} />

View File

@@ -37,7 +37,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.New do
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
For a more detailed guide on setting up Firezone with Microsoft Entra ID, please <.link
href="https://www.firezone.dev/kb/authenticate/entra"

View File

@@ -35,13 +35,13 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/microsoft_entra/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Identity Provider: <code><%= @provider.name %></code>
Identity Provider: <code>{@provider.name}</code>
<span :if={not is_nil(@provider.disabled_at)} class="text-primary-600">(disabled)</span>
<span :if={not is_nil(@provider.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
@@ -128,7 +128,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
<.flash_group flash={@flash} />
<.flash :if={@safe_to_delete_actors_count > 0} kind={:warning}>
You have <%= @safe_to_delete_actors_count %> Actor(s) that were synced from this provider and do not have any other identities.
You have {@safe_to_delete_actors_count} Actor(s) that were synced from this provider and do not have any other identities.
<.button_with_confirmation
id="delete_stale_actors"
style="danger"
@@ -154,7 +154,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
<.vertical_table id="provider">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @provider.name %></:value>
<:value>{@provider.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -184,7 +184,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
IdP provider reported an error during the last sync:
</p>
<div class="flex items-center mt-1">
<span class="text-red-500 font-mono"><%= @provider.last_sync_error %></span>
<span class="text-red-500 font-mono">{@provider.last_sync_error}</span>
</div>
</div>
</:value>
@@ -192,7 +192,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
<.vertical_table_row>
<:label>Client ID</:label>
<:value><%= @provider.adapter_config["client_id"] %></:value>
<:value>{@provider.adapter_config["client_id"]}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>

View File

@@ -33,7 +33,7 @@ defmodule Web.Settings.IdentityProviders.New do
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
Set up SSO authentication using your own identity provider. Directory sync
also available for certain providers. <br /> Learn more about
@@ -79,7 +79,7 @@ defmodule Web.Settings.IdentityProviders.New do
>
<div class="w-full">
<.provider_icon adapter={@adapter} class="w-10 h-10 inline-block mr-2" />
<span class="inline-block"><%= pretty_print_provider(@adapter) %></span>
<span class="inline-block">{pretty_print_provider(@adapter)}</span>
</div>
<div :if={@opts[:sync] == true} class="w-1/2 flex justify-end">

View File

@@ -32,7 +32,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Identity Provider <%= @form.data.name %>
Edit Identity Provider {@form.data.name}
</:title>
<:content>
<.provider_form account={@account} id={@form.data.id} form={@form} />

View File

@@ -37,7 +37,7 @@ defmodule Web.Settings.IdentityProviders.Okta.New do
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:help>
For a more detailed guide on setting up Firezone with Okta, please <.link
href="https://www.firezone.dev/kb/authenticate/okta"

View File

@@ -35,13 +35,13 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/okta/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Identity Provider: <code><%= @provider.name %></code>
Identity Provider: <code>{@provider.name}</code>
<span :if={not is_nil(@provider.disabled_at)} class="text-primary-600">(disabled)</span>
<span :if={not is_nil(@provider.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
@@ -126,7 +126,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
<.flash_group flash={@flash} />
<.flash :if={@safe_to_delete_actors_count > 0} kind={:warning}>
You have <%= @safe_to_delete_actors_count %> Actor(s) that were synced from this provider and do not have any other identities.
You have {@safe_to_delete_actors_count} Actor(s) that were synced from this provider and do not have any other identities.
<.button_with_confirmation
id="delete_stale_actors"
style="danger"
@@ -152,7 +152,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
<.vertical_table id="provider">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @provider.name %></:value>
<:value>{@provider.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -182,7 +182,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
IdP provider reported an error during the last sync:
</p>
<div class="flex items-center mt-1">
<span class="text-red-500 font-mono"><%= @provider.last_sync_error %></span>
<span class="text-red-500 font-mono">{@provider.last_sync_error}</span>
</div>
</div>
</:value>
@@ -190,7 +190,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
<.vertical_table_row>
<:label>Client ID</:label>
<:value><code><%= @provider.adapter_config["client_id"] %></code></:value>
<:value><code>{@provider.adapter_config["client_id"]}</code></:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Callback URLs</:label>

View File

@@ -62,7 +62,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Components do
</div>
<.inputs_for :let={adapter_config_form} field={@form[:adapter_config]}>
<%= # TODO: Can these be removed? %>
{# TODO: Can these be removed?}
<.input type="hidden" field={adapter_config_form[:response_type]} value="code" />
<.input type="hidden" field={adapter_config_form[:scope]} />

View File

@@ -27,7 +27,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Edit do
Identity Providers Settings
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/openid_connect/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
<.breadcrumb path={
~p"/#{@account}/settings/identity_providers/openid_connect/#{@form.data}/edit"
@@ -37,7 +37,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Edit do
</.breadcrumbs>
<.section>
<:title>
Edit Identity Provider <%= @form.data.name %>
Edit Identity Provider {@form.data.name}
</:title>
<:content>
<.provider_form account={@account} id={@form.data.id} form={@form} />

View File

@@ -38,7 +38,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.New do
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<.provider_form account={@account} id={@id} form={@form} show_sync_msg={!!@provider} />
</:content>

View File

@@ -30,13 +30,13 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
Identity Providers Settings
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/settings/identity_providers/openid_connect/#{@provider}"}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Identity Provider: <code><%= @provider.name %></code>
Identity Provider: <code>{@provider.name}</code>
<span :if={not is_nil(@provider.disabled_at)} class="text-primary-600">(disabled)</span>
<span :if={not is_nil(@provider.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
@@ -108,7 +108,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
<.flash_group flash={@flash} />
<.flash :if={@safe_to_delete_actors_count > 0} kind={:warning}>
You have <%= @safe_to_delete_actors_count %> Actor(s) that were synced from this provider and do not have any other identities.
You have {@safe_to_delete_actors_count} Actor(s) that were synced from this provider and do not have any other identities.
<.button_with_confirmation
id="delete_stale_actors"
style="danger"
@@ -134,7 +134,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
<.vertical_table id="provider">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @provider.name %></:value>
<:value>{@provider.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>
@@ -152,21 +152,21 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
</.vertical_table_row>
<.vertical_table_row>
<:label>Response Type</:label>
<:value><%= @provider.adapter_config["response_type"] %></:value>
<:value>{@provider.adapter_config["response_type"]}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Scope</:label>
<:value><%= @provider.adapter_config["scope"] %></:value>
<:value>{@provider.adapter_config["scope"]}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Client ID</:label>
<:value><%= @provider.adapter_config["client_id"] %></:value>
<:value>{@provider.adapter_config["client_id"]}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Discovery URL</:label>
<:value>
<a href={@provider.adapter_config["discovery_document_uri"]} target="_blank">
<%= @provider.adapter_config["discovery_document_uri"] %>
{@provider.adapter_config["discovery_document_uri"]}
<.icon name="hero-arrow-top-right-on-square" class="relative bottom-1 w-3 h-3" />
</a>
</:value>

View File

@@ -27,13 +27,13 @@ defmodule Web.Settings.IdentityProviders.System.Show do
<.breadcrumb path={
~p"/#{@account}/settings/identity_providers/google_workspace//DF43E951-7DFB-4921-8F7F-BF0F8D31FA89"
}>
<%= @provider.name %>
{@provider.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Identity Provider: <code><%= @provider.name %></code>
Identity Provider: <code>{@provider.name}</code>
<span :if={not is_nil(@provider.disabled_at)} class="text-primary-600">(disabled)</span>
<span :if={not is_nil(@provider.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
@@ -91,7 +91,7 @@ defmodule Web.Settings.IdentityProviders.System.Show do
<.vertical_table id="provider">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @provider.name %></:value>
<:value>{@provider.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Status</:label>

View File

@@ -241,7 +241,7 @@ defmodule Web.SignIn do
href={~p"/#{@account}/sign_in/providers/#{@provider}/redirect?#{@params}"}
>
<.provider_icon adapter={@provider.adapter} class="w-5 h-5 mr-2" /> Sign in with
<strong><%= @provider.name %></strong>
<strong>{@provider.name}</strong>
</a>
"""
end

View File

@@ -65,7 +65,7 @@ defmodule Web.SignIn.Email do
<div>
<p>
If <strong><%= @provider_identifier %></strong>
If <strong>{@provider_identifier}</strong>
is registered, a sign-in token has been sent.
</p>
<form
@@ -184,7 +184,7 @@ defmodule Web.SignIn.Email do
"hover:text-neutral-900 hover:bg-neutral-100"
]}
>
Open <%= @name %>
Open {@name}
</a>
"""
end

View File

@@ -145,7 +145,7 @@ defmodule Web.SignUp do
Account Name:
</td>
<td class={~w[border-b border-neutral-100 py-4 text-neutral-900]}>
<%= @account.name %>
{@account.name}
</td>
</tr>
<tr>
@@ -153,7 +153,7 @@ defmodule Web.SignUp do
Account Slug:
</td>
<td class={~w[border-b border-neutral-100 py-4 text-neutral-900]}>
<%= @account.slug %>
{@account.slug}
</td>
</tr>
<tr>
@@ -162,7 +162,7 @@ defmodule Web.SignUp do
</td>
<td class={~w[border-b border-neutral-100 py-4 text-neutral-900]}>
<.link class={[link_style()]} navigate={~p"/#{@account}"}>
<%= url(~p"/#{@account}") %>
{url(~p"/#{@account}")}
</.link>
</td>
</tr>

View File

@@ -29,13 +29,13 @@ defmodule Web.Sites.Edit do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/sites"}>Sites</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}/edit"}>Edit</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>Edit Site: <code><%= @group.name %></code></:title>
<:title>Edit Site: <code>{@group.name}</code></:title>
<:content>
<div class="py-8 px-4 mx-auto max-w-2xl lg:py-16">
<.form for={@form} phx-change={:change} phx-submit={:submit}>

View File

@@ -54,7 +54,7 @@ defmodule Web.Sites.Gateways.Index do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/sites"}>Sites</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}/gateways"}>
Gateways
@@ -63,7 +63,7 @@ defmodule Web.Sites.Gateways.Index do
<.section>
<:title>
Site <code><%= @group.name %></code> Gateways
Site <code>{@group.name}</code> Gateways
</:title>
<:help>
Deploy gateways to terminate connections to your site's resources. All
@@ -81,16 +81,16 @@ defmodule Web.Sites.Gateways.Index do
>
<:col :let={gateway} field={{:gateways, :name}} label="instance">
<.link navigate={~p"/#{@account}/gateways/#{gateway.id}"} class={[link_style()]}>
<%= gateway.name %>
{gateway.name}
</.link>
</:col>
<:col :let={gateway} label="remote ip">
<code>
<%= gateway.last_seen_remote_ip %>
{gateway.last_seen_remote_ip}
</code>
</:col>
<:col :let={gateway} label="version">
<%= gateway.last_seen_version %>
{gateway.last_seen_version}
</:col>
<:col :let={gateway} label="status">
<.connection_status schema={gateway} />

View File

@@ -77,7 +77,7 @@ defmodule Web.Sites.Index do
>
<:col :let={group} field={{:groups, :name}} label="site" class="w-1/6">
<.link navigate={~p"/#{@account}/sites/#{group}"} class={[link_style()]}>
<%= group.name %>
{group.name}
</.link>
</:col>
@@ -110,7 +110,7 @@ defmodule Web.Sites.Index do
navigate={~p"/#{@account}/sites/#{group}?#resources"}
class={["font-medium", link_style()]}
>
<%= count %> more.
{count} more.
</.link>
</span>
</:tail>
@@ -149,7 +149,7 @@ defmodule Web.Sites.Index do
navigate={~p"/#{@account}/sites/#{group}?#gateways"}
class={["font-medium", link_style()]}
>
<%= count %> more.
{count} more.
</.link>
</span>
</:tail>

View File

@@ -16,7 +16,7 @@ defmodule Web.Sites.New do
</.breadcrumbs>
<.section>
<:title><%= @page_title %></:title>
<:title>{@page_title}</:title>
<:content>
<.flash kind={:error} flash={@flash} />
<div class="py-8 px-4 mx-auto max-w-2xl lg:py-16">

View File

@@ -44,7 +44,7 @@ defmodule Web.Sites.NewToken do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/sites"}>Sites</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}/new_token"}>Deploy</.breadcrumb>
</.breadcrumbs>

View File

@@ -91,13 +91,13 @@ defmodule Web.Sites.Show do
<.breadcrumbs account={@account}>
<.breadcrumb path={~p"/#{@account}/sites"}>Sites</.breadcrumb>
<.breadcrumb path={~p"/#{@account}/sites/#{@group}"}>
<%= @group.name %>
{@group.name}
</.breadcrumb>
</.breadcrumbs>
<.section>
<:title>
Site: <code><%= @group.name %></code>
Site: <code>{@group.name}</code>
<span :if={not is_nil(@group.deleted_at)} class="text-red-600">(deleted)</span>
</:title>
<:action :if={is_nil(@group.deleted_at)}>
@@ -110,7 +110,7 @@ defmodule Web.Sites.Show do
<.vertical_table id="group">
<.vertical_table_row>
<:label>Name</:label>
<:value><%= @group.name %></:value>
<:value>{@group.name}</:value>
</.vertical_table_row>
<.vertical_table_row>
<:label>Created</:label>
@@ -184,17 +184,17 @@ defmodule Web.Sites.Show do
>
<:col :let={gateway} label="instance">
<.link navigate={~p"/#{@account}/gateways/#{gateway.id}"} class={[link_style()]}>
<%= gateway.name %>
{gateway.name}
</.link>
</:col>
<:col :let={gateway} label="remote ip">
<code>
<%= gateway.last_seen_remote_ip %>
{gateway.last_seen_remote_ip}
</code>
</:col>
<:col :let={gateway} label="version">
<.version_status outdated={Gateways.gateway_outdated?(gateway)} />
<%= gateway.last_seen_version %>
{gateway.last_seen_version}
</:col>
<:col :let={gateway} label="status">
<.connection_status schema={gateway} />
@@ -246,12 +246,12 @@ defmodule Web.Sites.Show do
navigate={~p"/#{@account}/resources/#{resource}?site_id=#{@group}"}
class={[link_style()]}
>
<%= resource.name %>
{resource.name}
</.link>
</:col>
<:col :let={resource} label="address" field={{:resources, :address}}>
<code class="block text-xs">
<%= resource.address %>
{resource.address}
</code>
</:col>
<:col :let={resource} label="Authorized groups">
@@ -278,7 +278,7 @@ defmodule Web.Sites.Show do
<:tail :let={count}>
<span class="inline-block whitespace-nowrap">
and <%= count %> more.
and {count} more.
</span>
</:tail>
</.peek>

View File

@@ -60,7 +60,7 @@ defmodule Web.LiveTable do
</tbody>
</table>
<div :if={Enum.empty?(@rows) and not has_filter?(@filter, @filters)} id={"#{@id}-empty"}>
<%= render_slot(@empty) %>
{render_slot(@empty)}
</div>
<div :if={Enum.empty?(@rows) and has_filter?(@filter, @filters)} id={"#{@id}-empty"}>
<div class="flex justify-center text-center text-neutral-500 p-4">
@@ -125,7 +125,7 @@ defmodule Web.LiveTable do
]}
/>
<.error :for={msg <- @field.errors} data-validation-error-for={@field.name}>
<%= msg %>
{msg}
</.error>
</div>
"""
@@ -210,7 +210,7 @@ defmodule Web.LiveTable do
:for={msg <- @form[@filter.name].errors}
data-validation-error-for={@form[@filter.name].name}
>
<%= msg %>
{msg}
</.error>
</div>
</div>
@@ -243,7 +243,7 @@ defmodule Web.LiveTable do
:for={msg <- @form[@filter.name].errors}
data-validation-error-for={@form[@filter.name].name}
>
<%= msg %>
{msg}
</.error>
</div>
</div>
@@ -318,7 +318,7 @@ defmodule Web.LiveTable do
checked={@form[@filter.name].value == value}
class="hidden"
/>
<%= label %>
{label}
</label>
</:item>
</.intersperse_blocks>
@@ -378,7 +378,7 @@ defmodule Web.LiveTable do
checked={@form[@filter.name].value && value in @form[@filter.name].value}
class="hidden"
/>
<%= label %>
{label}
</label>
</:item>
</.intersperse_blocks>
@@ -411,8 +411,8 @@ defmodule Web.LiveTable do
aria-label="Table navigation"
>
<span class="text-sm text-neutral-500">
Showing <span class="font-medium text-neutral-900"><%= @rows_count %></span>
of <span class="font-medium text-neutral-900"><%= @metadata.count %></span>
Showing <span class="font-medium text-neutral-900">{@rows_count}</span>
of <span class="font-medium text-neutral-900">{@metadata.count}</span>
</span>
<ul class="inline-flex items-stretch -space-x-px">
<li>

View File

@@ -1121,7 +1121,8 @@ defmodule Web.AuthTest do
assert is_nil(updated_socket.assigns.subject)
assert updated_socket.redirected == {:redirect, %{to: ~p"/#{subject.account.slug}"}}
assert updated_socket.redirected ==
{:redirect, %{status: 302, to: ~p"/#{subject.account.slug}"}}
end
test "redirects to login page if there isn't a session_token", %{
@@ -1136,7 +1137,8 @@ defmodule Web.AuthTest do
assert is_nil(updated_socket.assigns.subject)
assert updated_socket.redirected == {:redirect, %{to: ~p"/#{subject.account.slug}"}}
assert updated_socket.redirected ==
{:redirect, %{status: 302, to: ~p"/#{subject.account.slug}"}}
end
end
@@ -1175,7 +1177,7 @@ defmodule Web.AuthTest do
assert {:halt, updated_socket} =
on_mount(:redirect_if_user_is_authenticated, params, session, socket)
assert updated_socket.redirected == {:redirect, %{to: ~p"/#{account}/sites"}}
assert updated_socket.redirected == {:redirect, %{status: 302, to: ~p"/#{account}/sites"}}
end
test "doesn't redirect if there is no authenticated user", %{

View File

@@ -77,11 +77,11 @@
"opentelemetry_telemetry": {:hex, :opentelemetry_telemetry, "1.1.2", "410ab4d76b0921f42dbccbe5a7c831b8125282850be649ee1f70050d3961118a", [:mix, :rebar3], [{:opentelemetry_api, "~> 1.3", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "641ab469deb181957ac6d59bce6e1321d5fe2a56df444fc9c19afcad623ab253"},
"otel_http": {:hex, :otel_http, "0.2.0", "b17385986c7f1b862f5d577f72614ecaa29de40392b7618869999326b9a61d8a", [:rebar3], [], "hexpm", "f2beadf922c8cfeb0965488dd736c95cc6ea8b9efce89466b3904d317d7cc717"},
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
"phoenix": {:hex, :phoenix, "1.7.14", "a7d0b3f1bc95987044ddada111e77bd7f75646a08518942c72a8440278ae7825", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "c7859bc56cc5dfef19ecfc240775dae358cbaa530231118a9e014df392ace61a"},
"phoenix": {:hex, :phoenix, "1.7.19", "36617efe5afbd821099a8b994ff4618a340a5bfb25531a1802c4d4c634017a57", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "ba4dc14458278773f905f8ae6c2ec743d52c3a35b6b353733f64f02dfe096cd6"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.6.3", "f686701b0499a07f2e3b122d84d52ff8a31f5def386e03706c916f6feddf69ef", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.1", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "909502956916a657a197f94cc1206d9a65247538de8a5e186f7537c895d95764"},
"phoenix_html": {:hex, :phoenix_html, "4.2.0", "83a4d351b66f472ebcce242e4ae48af1b781866f00ef0eb34c15030d4e2069ac", [:mix], [], "hexpm", "9713b3f238d07043583a94296cc4bbdceacd3b3a6c74667f4df13971e7866ec8"},
"phoenix_live_reload": {:hex, :phoenix_live_reload, "1.5.3", "f2161c207fda0e4fb55165f650f7f8db23f02b29e3bff00ff7ef161d6ac1f09d", [:mix], [{:file_system, "~> 0.3 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "b4ec9cd73cb01ff1bd1cac92e045d13e7030330b74164297d1aee3907b54803c"},
"phoenix_live_view": {:hex, :phoenix_live_view, "1.0.0-rc.6", "47d2669995ea326e5c71f5c1bc9177109cebf211385c638faa7b5862a401e516", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e56e4f1642a0b20edc2488cab30e5439595e0d8b5b259f76ef98b1c4e2e5b527"},
"phoenix_live_view": {:hex, :phoenix_live_view, "1.0.3", "33914a5d47345c7bde056054bca05c0bbbda5ce94a3ee734cb20a4d5d361e20d", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "157d93a5a7c79b836d9b7b5d55c7dd021435139d6160112f0e630f0686b8ea88"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"phoenix_swoosh": {:hex, :phoenix_swoosh, "1.2.1", "b74ccaa8046fbc388a62134360ee7d9742d5a8ae74063f34eb050279de7a99e1", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "4000eeba3f9d7d1a6bf56d2bd56733d5cadf41a7f0d8ffe5bb67e7d667e204a2"},
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
@@ -109,7 +109,7 @@
"wallaby": {:hex, :wallaby, "0.30.10", "574afb8796521252daf49a4cd76a1c389d53cae5897f2d4b5f55dfae159c8e50", [:mix], [{:ecto_sql, ">= 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}, {:httpoison, "~> 0.12 or ~> 1.0 or ~> 2.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_ecto, ">= 3.0.0", [hex: :phoenix_ecto, repo: "hexpm", optional: true]}, {:web_driver_client, "~> 0.2.0", [hex: :web_driver_client, repo: "hexpm", optional: false]}], "hexpm", "a8f89b92d8acce37a94b5dfae6075c2ef00cb3689d6333f5f36c04b381c077b2"},
"web_driver_client": {:hex, :web_driver_client, "0.2.0", "63b76cd9eb3b0716ec5467a0f8bead73d3d9612e63f7560d21357f03ad86e31a", [:mix], [{:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:tesla, "~> 1.3", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm", "83cc6092bc3e74926d1c8455f0ce927d5d1d36707b74d9a65e38c084aab0350f"},
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
"websock_adapter": {:hex, :websock_adapter, "0.5.7", "65fa74042530064ef0570b75b43f5c49bb8b235d6515671b3d250022cb8a1f9e", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "d0f478ee64deddfec64b800673fd6e0c8888b079d9f3444dd96d2a98383bdbd1"},
"websock_adapter": {:hex, :websock_adapter, "0.5.8", "3b97dc94e407e2d1fc666b2fb9acf6be81a1798a2602294aac000260a7c4a47d", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "315b9a1865552212b5f35140ad194e67ce31af45bcee443d4ecb96b5fd3f3782"},
"workos": {:hex, :workos, "1.1.0", "b64de032a254ebfb86b90b274e5d8865042afda6389e3c4d2d889ee0f4bd7735", [:mix], [{:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.4.1", [hex: :jason, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:tesla, "~> 1.4", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm", "88034983748821353cc28660278e0fd1886378bd4888ea77651889c0d126f3d5"},
"yamerl": {:hex, :yamerl, "0.10.0", "4ff81fee2f1f6a46f1700c0d880b24d193ddb74bd14ef42cb0bcf46e81ef2f8e", [:rebar3], [], "hexpm", "346adb2963f1051dc837a2364e4acf6eb7d80097c0f53cbdc3046ec8ec4b4e6e"},
"yaml_elixir": {:hex, :yaml_elixir, "2.11.0", "9e9ccd134e861c66b84825a3542a1c22ba33f338d82c07282f4f1f52d847bd50", [:mix], [{:yamerl, "~> 0.10", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm", "53cc28357ee7eb952344995787f4bb8cc3cecbf189652236e9b163e8ce1bc242"},