update deps
Some checks failed
continuous-integration/drone/tag Build is failing
continuous-integration/drone/push Build is failing

This commit is contained in:
shibao 2025-04-05 00:13:01 +00:00
parent 449a92e4b7
commit 37d101a71e
130 changed files with 1748 additions and 12180 deletions

View File

@ -17,7 +17,7 @@ steps:
- .mix - .mix
- name: test - name: test
image: elixir:1.18.1-otp-27-alpine image: elixir:1.18.3-otp-27-alpine
environment: environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/cannery_test TEST_DATABASE_URL: ecto://postgres:postgres@database/cannery_test
HOST: testing.example.tld HOST: testing.example.tld

9
.gitignore vendored
View File

@ -28,10 +28,11 @@ npm-debug.log
# The directory NPM downloads your dependencies sources to. # The directory NPM downloads your dependencies sources to.
/assets/node_modules/ /assets/node_modules/
# Since we are building assets from assets/, # Ignore assets that are produced by build tools.
# we ignore priv/static. You may want to comment /priv/static/assets/
# this depending on your deployment strategy.
/priv/static/ # Ignore digested assets cache.
/priv/static/cache_manifest.json
# vs code # vs code
.elixir_ls/ .elixir_ls/

View File

@ -1,3 +1,3 @@
elixir 1.18.1-otp-27 elixir 1.18.3-otp-27
erlang 27.2.1 erlang 27.3.1
nodejs 23.7.0 nodejs 23.10.0

View File

@ -1,3 +1,7 @@
# v0.9.14
- Update deps
- Fix wrapping issues with search bars
# v0.9.13 # v0.9.13
- Add button to resend email verification email - Add button to resend email verification email
- Move staging to container, rather than ammo - Move staging to container, rather than ammo

View File

@ -1,4 +1,4 @@
FROM elixir:1.18.1-otp-27-alpine AS build FROM elixir:1.18.3-otp-27-alpine AS build
# install build dependencies # install build dependencies
RUN apk add --no-cache build-base npm git python3 RUN apk add --no-cache build-base npm git python3

View File

@ -1,5 +0,0 @@
{
"presets": [
"@babel/preset-env"
]
}

View File

@ -1,16 +1,26 @@
@import "tailwindcss/base"; @import "tailwindcss" source("../..");
@import "tailwindcss/components";
@import "tailwindcss/utilities";
$fa-font-path: "@fortawesome/fontawesome-free/webfonts"; @theme {
@import "@fortawesome/fontawesome-free/scss/fontawesome"; --color-primary-50: oklch(0.985 0.002 247.839);
@import "@fortawesome/fontawesome-free/scss/regular"; --color-primary-100: oklch(0.967 0.003 264.542);
@import "@fortawesome/fontawesome-free/scss/solid"; --color-primary-200: oklch(0.928 0.006 264.531);
@import "@fortawesome/fontawesome-free/scss/brands"; --color-primary-300: oklch(0.872 0.01 258.338);
--color-primary-400: oklch(0.707 0.022 261.325);
--color-primary-500: oklch(0.551 0.027 264.364);
--color-primary-600: oklch(0.446 0.03 256.802);
--color-primary-700: oklch(0.373 0.034 259.733);
--color-primary-800: oklch(0.278 0.033 256.848);
--color-primary-900: oklch(0.21 0.034 264.665);
--color-primary-950: oklch(0.13 0.028 261.692);
@import "slim-select/styles"; }
@import "components"; @import "@fortawesome/fontawesome-free/css/fontawesome" source("../..");
@import "@fortawesome/fontawesome-free/css/regular" source("../..");
@import "@fortawesome/fontawesome-free/css/solid" source("../..");
@import "@fortawesome/fontawesome-free/css/brands" source("../..");
@import "slim-select/styles" source("../..");
/* fix firefox scrollbars */ /* fix firefox scrollbars */
* { * {
@ -155,18 +165,68 @@ $fa-font-path: "@fortawesome/fontawesome-free/webfonts";
100% { opacity: 0; } 100% { opacity: 0; }
} }
.ss-main { /* components */
@apply input; .input, .ss-main, .ss-content, .ss-search input[type="search"] {
@apply px-4 py-2 rounded-lg border focus:outline-hidden;
@apply shadow-sm focus:shadow-lg;
@apply transition-all duration-300 ease-in-out;
} }
.input-primary {
@apply border-primary-500 hover:border-primary-600 active:border-primary-600;
@apply text-black;
}
.checkbox {
-ms-transform: scale(1.5);
-moz-transform: scale(1.5);
-webkit-transform: scale(1.5);
-o-transform: scale(1.5);
transform: scale(1.5);
padding: 10px;
margin: 1em auto;
}
.title {
@apply tracking-wide leading-5;
}
.btn {
@apply px-4 py-2 rounded-lg focus:outline-hidden;
@apply shadow-sm focus:shadow-lg;
@apply transition-all duration-300 ease-in-out;
}
.btn-primary {
@apply bg-primary-500 focus:bg-primary-600 active:bg-primary-600;
@apply border-primary-500 focus:border-primary-600 active:border-primary-600;
@apply text-white;
}
.btn-alert {
@apply bg-rose-600 focus:bg-rose-700 active:bg-rose-800;
@apply border-rose-600 focus:border-rose-700 active:border-rose-800;
@apply text-white;
}
.hr {
@apply w-full max-w-2xl border border-primary-300;
}
.hr-light {
@apply w-full max-w-2xl border border-white;
}
.link {
@apply hover:underline;
@apply transition-colors duration-500 ease-in-out;
}
/* slim select */
.ss-main.input-primary { .ss-main.input-primary {
@apply border-primary-500 hover:border-primary-600 active:border-primary-600; @apply border-primary-500 hover:border-primary-600 active:border-primary-600;
} }
.ss-content {
@apply input;
}
.ss-content.input-primary { .ss-content.input-primary {
@apply border-primary-500 hover:border-primary-600 active:border-primary-600; @apply border-primary-500 hover:border-primary-600 active:border-primary-600;
} }
@ -181,10 +241,6 @@ $fa-font-path: "@fortawesome/fontawesome-free/webfonts";
border-top-right-radius: 0px; border-top-right-radius: 0px;
} }
.ss-search input[type="search"] {
@apply input;
}
.ss-content.input-primary .ss-search input[type="search"] { .ss-content.input-primary .ss-search input[type="search"] {
@apply border-primary-500 hover:border-primary-600 active:border-primary-600; @apply border-primary-500 hover:border-primary-600 active:border-primary-600;
} }

View File

@ -1,57 +0,0 @@
@layer components {
.input {
@apply rounded-lg px-4 py-2 border focus:outline-none;
@apply shadow-sm focus:shadow-lg;
@apply transition-all duration-300 ease-in-out;
}
.input-primary {
@apply border-primary-500 hover:border-primary-600 active:border-primary-600;
@apply text-black;
}
.checkbox {
-ms-transform: scale(1.5);
-moz-transform: scale(1.5);
-webkit-transform: scale(1.5);
-o-transform: scale(1.5);
transform: scale(1.5);
padding: 10px;
margin: 1em auto;
}
.title {
@apply leading-5 tracking-wide;
}
.btn {
@apply focus:outline-none px-4 py-2 rounded-lg;
@apply shadow-sm focus:shadow-lg;
@apply transition-all duration-300 ease-in-out;
}
.btn-primary {
@apply bg-primary-500 focus:bg-primary-600 active:bg-primary-600;
@apply border-primary-500 focus:border-primary-600 active:border-primary-600;
@apply text-white;
}
.btn-alert {
@apply bg-red-600 focus:bg-red-700 active:bg-red-800;
@apply border-red-600 focus:border-red-700 active:border-red-800;
@apply text-white;
}
.hr {
@apply border border-primary-300 w-full max-w-2xl;
}
.hr-light {
@apply border border-white w-full max-w-2xl;
}
.link {
@apply hover:underline;
@apply transition-colors duration-500 ease-in-out;
}
}

View File

@ -1,7 +1,3 @@
// We import the CSS which is extracted to its own file by esbuild.
// Remove this line if you add a your own CSS build pipeline (e.g postcss).
import '../css/app.scss'
// If you want to use Phoenix channels, run `mix help phx.gen.channel` // If you want to use Phoenix channels, run `mix help phx.gen.channel`
// to get started and then uncomment the line below. // to get started and then uncomment the line below.
// import "./user_socket.js" // import "./user_socket.js"

10401
assets/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,50 +1,21 @@
{ {
"repository": {},
"description": " ",
"license": "MIT",
"engines": { "engines": {
"node": "v23.7.0" "node": "v23.10.0"
}, },
"scripts": { "scripts": {
"deploy": "NODE_ENV=production webpack --mode production",
"watch": "webpack --mode development --watch --watch-options-stdin",
"format": "standard --fix", "format": "standard --fix",
"test": "standard" "test": "standard"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^6.7.2", "@fortawesome/fontawesome-free": "^6.7.2",
"chart.js": "^4.4.7", "chart.js": "^4.4.8",
"chartjs-adapter-date-fns": "^3.0.0", "chartjs-adapter-date-fns": "^3.0.0",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"phoenix": "file:../deps/phoenix", "slim-select": "^2.11.0",
"phoenix_html": "file:../deps/phoenix_html",
"phoenix_live_view": "file:../deps/phoenix_live_view",
"slim-select": "^2.10.0",
"topbar": "^3.0.0" "topbar": "^3.0.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.26.0", "npm-check-updates": "^17.1.16",
"@babel/preset-env": "^7.26.0", "standard": "^17.1.2"
"autoprefixer": "^10.4.20",
"babel-loader": "^9.2.1",
"copy-webpack-plugin": "^12.0.2",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.0",
"file-loader": "^6.2.0",
"glob": "^11.0.1",
"mini-css-extract-plugin": "^2.9.2",
"npm-check-updates": "^17.1.13",
"postcss": "^8.5.1",
"postcss-import": "^16.1.0",
"postcss-loader": "^8.1.1",
"postcss-preset-env": "^10.1.3",
"sass": "^1.83.1",
"sass-loader": "^16.0.4",
"standard": "^17.1.2",
"tailwindcss": "^3.4.17",
"terser-webpack-plugin": "^5.3.11",
"webpack": "^5.97.1",
"webpack-cli": "^6.0.1",
"webpack-dev-server": "^5.2.0"
} }
} }

View File

@ -1,7 +0,0 @@
module.exports = {
plugins: {
'postcss-import': {},
tailwindcss: {},
autoprefixer: {}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,43 +0,0 @@
const colors = require('tailwindcss/colors')
module.exports = {
content: [
'../lib/**/*.{ex,heex,leex,eex}',
'./js/**/*.js'
],
theme: {
colors: {
transparent: 'transparent',
current: 'currentColor',
primary: colors.gray,
black: colors.black,
white: colors.white,
gray: colors.neutral,
indigo: colors.indigo,
red: colors.rose,
yellow: colors.amber
},
extend: {
spacing: {
128: '32rem',
192: '48rem',
256: '64rem'
},
minWidth: {
4: '1rem',
8: '2rem',
12: '3rem',
16: '4rem',
20: '8rem'
},
maxWidth: {
4: '1rem',
8: '2rem',
12: '3rem',
16: '4rem',
20: '8rem'
}
}
},
plugins: []
}

View File

@ -1,57 +0,0 @@
const path = require('path')
const glob = require('glob')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const TerserPlugin = require('terser-webpack-plugin')
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = (env, options) => {
const devMode = options.mode !== 'production'
return {
optimization: {
minimizer: [
new TerserPlugin({ parallel: true, extractComments: true }),
new CssMinimizerPlugin({})
]
},
entry: {
app: glob.sync('./vendor/**/*.js').concat(['./js/app.js'])
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, '../priv/static/js'),
publicPath: '/js/'
},
devtool: devMode ? 'eval-cheap-module-source-map' : undefined,
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
},
{
test: /\.s?css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
'sass-loader'
]
},
{
test: /\.(woff(2)?|ttf|eot|svg|otf)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
type: 'asset/resource',
generator: { filename: 'fonts/[name].[ext]' }
}
]
},
plugins: [
new MiniCssExtractPlugin({ filename: '../css/app.css' }),
new CopyWebpackPlugin({ patterns: [{ from: 'static/', to: '../' }] })
]
}
}

View File

@ -10,12 +10,13 @@ import Config
config :cannery, config :cannery,
env: :dev, env: :dev,
ecto_repos: [Cannery.Repo], ecto_repos: [Cannery.Repo],
generators: [binary_id: true] generators: [binary_id: true, timestamp_type: :utc_datetime]
config :cannery, Cannery.Accounts, registration: System.get_env("REGISTRATION", "invite") config :cannery, Cannery.Accounts, registration: System.get_env("REGISTRATION", "invite")
# Configures the endpoint # Configures the endpoint
config :cannery, CanneryWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
adapter: Bandit.PhoenixAdapter,
url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"], url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"],
http: [port: String.to_integer(System.get_env("PORT") || "4000")], http: [port: String.to_integer(System.get_env("PORT") || "4000")],
secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I", secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I",
@ -55,14 +56,25 @@ config :cannery, Oban,
queues: [default: 10, mailers: 20] queues: [default: 10, mailers: 20]
# Configure esbuild (the version is required) # Configure esbuild (the version is required)
# config :esbuild, config :esbuild,
# version: "0.14.0", version: "0.17.11",
# default: [ cannery: [
# args: args:
# ~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*), ~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
# cd: Path.expand("../assets", __DIR__), cd: Path.expand("../assets", __DIR__),
# env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)} env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
# ] ]
# Configure tailwind (the version is required)
config :tailwind,
version: "4.0.0",
cannery: [
args: ~w(
--input=css/app.css
--output=../priv/static/assets/app.css
),
cd: Path.expand("../assets", __DIR__)
]
# Configures Elixir's Logger # Configures Elixir's Logger
config :logger, :console, config :logger, :console,

View File

@ -2,6 +2,7 @@ import Config
# Configure your database # Configure your database
config :cannery, Cannery.Repo, config :cannery, Cannery.Repo,
stacktrace: true,
show_sensitive_data_on_connection_error: true, show_sensitive_data_on_connection_error: true,
pool_size: 10 pool_size: 10
@ -12,21 +13,14 @@ config :cannery, Cannery.Repo,
# watchers to your application. For example, we use it # watchers to your application. For example, we use it
# with esbuild to bundle .js and .css sources. # with esbuild to bundle .js and .css sources.
config :cannery, CanneryWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
http: [ip: {0, 0, 0, 0}, port: 4000],
check_origin: false, check_origin: false,
code_reloader: true, code_reloader: true,
debug_errors: true, debug_errors: true,
secret_key_base: "dg2lccMgaY3+ZeKppR+ondk4ZRaANZGIN0LMZT1u1uzscH4jO5W9a9b9V9BkC+MW", secret_key_base: "dg2lccMgaY3+ZeKppR+ondk4ZRaANZGIN0LMZT1u1uzscH4jO5W9a9b9V9BkC+MW",
watchers: [ watchers: [
# Start the esbuild watcher by calling Esbuild.install_and_run(:default, args) esbuild: {Esbuild, :install_and_run, [:cannery, ~w(--sourcemap=inline --watch)]},
# esbuild: {Esbuild, :install_and_run, [:default, ~w(--sourcemap=inline --watch)]} tailwind: {Tailwind, :install_and_run, [:cannery, ~w(--watch)]}
node: [
"node_modules/webpack/bin/webpack.js",
"--mode",
"development",
"--watch",
"--watch-options-stdin",
cd: Path.expand("../assets", __DIR__)
]
] ]
# ## SSL Support # ## SSL Support
@ -57,7 +51,7 @@ config :cannery, CanneryWeb.Endpoint,
config :cannery, CanneryWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
live_reload: [ live_reload: [
patterns: [ patterns: [
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$", ~r"priv/static/(?!uploads/).*(js|css|png|jpeg|jpg|gif|svg)$",
~r"priv/gettext/.*(po)$", ~r"priv/gettext/.*(po)$",
~r"lib/cannery_web/*/.*(ex)$" ~r"lib/cannery_web/*/.*(ex)$"
] ]
@ -73,3 +67,9 @@ config :phoenix, :stacktrace_depth, 20
# Initialize plugs at runtime for faster development compilation # Initialize plugs at runtime for faster development compilation
config :phoenix, :plug_init_mode, :runtime config :phoenix, :plug_init_mode, :runtime
config :phoenix_live_view,
# Include HEEx debug annotations as HTML comments in rendered markup
debug_heex_annotations: true,
# Enable helpful, but potentially expensive runtime checks
enable_expensive_runtime_checks: true

View File

@ -7,13 +7,23 @@ import Config
# any compile-time configuration in here, as it won't be applied. # any compile-time configuration in here, as it won't be applied.
# The block below contains prod specific runtime configuration. # The block below contains prod specific runtime configuration.
# Start the phoenix server if environment is set and running in a release # ## Using releases
if System.get_env("PHX_SERVER") && System.get_env("RELEASE_NAME") do #
# If you use `mix release`, you need to explicitly enable the server
# by passing the PHX_SERVER=true when you start it:
#
# PHX_SERVER=true bin/cannery start
#
# Alternatively, you can use `mix phx.gen.release` to generate a `bin/server`
# script that automatically sets the env var above.
if System.get_env("PHX_SERVER") do
config :cannery, CanneryWeb.Endpoint, server: true config :cannery, CanneryWeb.Endpoint, server: true
end end
config :cannery, CanneryWeb.HTMLHelpers, shibao_mode: System.get_env("SHIBAO_MODE") == "true" config :cannery, CanneryWeb.HTMLHelpers, shibao_mode: System.get_env("SHIBAO_MODE") == "true"
config :cannery, :dns_cluster_query, System.get_env("DNS_CLUSTER_QUERY")
# Set default locale # Set default locale
config :gettext, :default_locale, System.get_env("LOCALE", "en_US") config :gettext, :default_locale, System.get_env("LOCALE", "en_US")

View File

@ -17,7 +17,7 @@ defmodule Cannery.Accounts.Invite do
has_many :users, User has_many :users, User
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -21,6 +21,7 @@ defmodule Cannery.Accounts.User do
field :email, :string field :email, :string
field :password, :string, virtual: true field :password, :string, virtual: true
field :hashed_password, :string field :hashed_password, :string
field :current_password, :string, virtual: true, redact: true
field :confirmed_at, :naive_datetime field :confirmed_at, :naive_datetime
field :role, Ecto.Enum, values: [:admin, :user], default: :user field :role, Ecto.Enum, values: [:admin, :user], default: :user
field :locale, :string field :locale, :string
@ -29,7 +30,7 @@ defmodule Cannery.Accounts.User do
belongs_to :invite, Invite belongs_to :invite, Invite
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %User{ @type t :: %User{
@ -193,6 +194,8 @@ defmodule Cannery.Accounts.User do
""" """
@spec validate_current_password(changeset(), String.t()) :: changeset() @spec validate_current_password(changeset(), String.t()) :: changeset()
def validate_current_password(changeset, password) do def validate_current_password(changeset, password) do
changeset = cast(changeset, %{current_password: password}, [:current_password])
if valid_password?(changeset.data, password), if valid_password?(changeset.data, password),
do: changeset, do: changeset,
else: changeset |> add_error(:current_password, dgettext("errors", "is not valid")) else: changeset |> add_error(:current_password, dgettext("errors", "is not valid"))

View File

@ -24,7 +24,7 @@ defmodule Cannery.ActivityLog.ShotRecord do
field :user_id, :binary_id field :user_id, :binary_id
field :pack_id, :binary_id field :pack_id, :binary_id
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -30,7 +30,7 @@ defmodule Cannery.Ammo.Pack do
field :container_id, :binary_id field :container_id, :binary_id
field :user_id, :binary_id field :user_id, :binary_id
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -90,7 +90,7 @@ defmodule Cannery.Ammo.Type do
field :user_id, :binary_id field :user_id, :binary_id
has_many :packs, Pack has_many :packs, Pack
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -15,6 +15,7 @@ defmodule Cannery.Application do
CanneryWeb.Telemetry, CanneryWeb.Telemetry,
# Start the PubSub system # Start the PubSub system
{Phoenix.PubSub, name: Cannery.PubSub}, {Phoenix.PubSub, name: Cannery.PubSub},
{DNSCluster, query: Application.get_env(:cannery, :dns_cluster_query) || :ignore},
# Start the Endpoint (http/https) # Start the Endpoint (http/https)
CanneryWeb.Endpoint, CanneryWeb.Endpoint,
# Add Oban # Add Oban

View File

@ -27,7 +27,7 @@ defmodule Cannery.Containers.Container do
many_to_many :tags, Tag, join_through: ContainerTag many_to_many :tags, Tag, join_through: ContainerTag
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -11,7 +11,7 @@ defmodule Cannery.Containers.ContainerTag do
belongs_to :container, Container belongs_to :container, Container
belongs_to :tag, Tag belongs_to :tag, Tag
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -20,7 +20,7 @@ defmodule Cannery.Containers.Tag do
field :user_id, :binary_id field :user_id, :binary_id
timestamps() timestamps(type: :utc_datetime)
end end
@type t :: %__MODULE__{ @type t :: %__MODULE__{

View File

@ -17,7 +17,7 @@ defmodule CanneryWeb do
those modules here. those modules here.
""" """
def static_paths, do: ~w(css js fonts images favicon.ico robots.txt) def static_paths, do: ~w(assets fonts images favicon.ico robots.txt webfonts)
def router do def router do
quote do quote do

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= gettext("Record shots") %> {gettext("Record shots")}
</h2> </h2>
<.form <.form
@ -16,47 +16,47 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> {changeset_errors(@changeset)}
</div> </div>
<%= label(f, :ammo_left, gettext("Rounds left"), class: "title text-lg text-primary-600") %> {label(f, :ammo_left, gettext("Rounds left"), class: "title text-lg text-primary-600")}
<%= number_input(f, :ammo_left, {number_input(f, :ammo_left,
min: 0, min: 0,
max: @pack.count - 1, max: @pack.count - 1,
placeholder: gettext("Rounds left"), placeholder: gettext("Rounds left"),
class: "input input-primary" class: "input input-primary"
) %> )}
<button <button
type="button" type="button"
class="mx-2 my-1 text-sm btn btn-primary" class="mx-2 my-1 text-sm btn btn-primary"
phx-click={JS.dispatch("cannery:set-zero", to: "#shot-record-form_ammo_left")} phx-click={JS.dispatch("cannery:set-zero", to: "#shot-record-form_ammo_left")}
> >
<%= gettext("Used up!") %> {gettext("Used up!")}
</button> </button>
<%= error_tag(f, :ammo_left, "col-span-3") %> {error_tag(f, :ammo_left, "col-span-3")}
<%= label(f, :notes, gettext("Notes"), class: "title text-lg text-primary-600") %> {label(f, :notes, gettext("Notes"), class: "title text-lg text-primary-600")}
<%= textarea(f, :notes, {textarea(f, :notes,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
id: "add-shot-record-form-notes", id: "add-shot-record-form-notes",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("Really great weather") placeholder: gettext("Really great weather")
) %> )}
<%= error_tag(f, :notes, "col-span-3") %> {error_tag(f, :notes, "col-span-3")}
<%= label(f, :date, gettext("Date"), class: "title text-lg text-primary-600") %> {label(f, :date, gettext("Date"), class: "title text-lg text-primary-600")}
<%= date_input(f, :date, {date_input(f, :date,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
phx_update: "ignore", phx_update: "ignore",
value: Date.utc_today() value: Date.utc_today()
) %> )}
<%= error_tag(f, :notes, "col-span-3") %> {error_tag(f, :notes, "col-span-3")}
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
class: "mx-auto btn btn-primary col-span-3", class: "mx-auto btn btn-primary col-span-3",
phx_disable_with: dgettext("prompts", "Saving...") phx_disable_with: dgettext("prompts", "Saving...")
) %> )}
</.form> </.form>
</div> </div>

View File

@ -135,7 +135,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
~H""" ~H"""
<div class="flex flex-wrap justify-center items-center"> <div class="flex flex-wrap justify-center items-center">
<.link navigate={~p"/container/#{@id}"} class="link"> <.link navigate={~p"/container/#{@id}"} class="link">
<%= @name %> {@name}
</.link> </.link>
</div> </div>
"""} """}
@ -154,7 +154,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
{staged, {staged,
~H""" ~H"""
<%= render_slot(@range, @container) %> {render_slot(@range, @container)}
"""} """}
end end
@ -172,7 +172,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
<div class="flex flex-wrap justify-center items-center"> <div class="flex flex-wrap justify-center items-center">
<.simple_tag_card :for={tag <- @container.tags} :if={@container.tags} tag={tag} /> <.simple_tag_card :for={tag <- @container.tags} :if={@container.tags} tag={tag} />
<%= render_slot(@tag_actions, @container) %> {render_slot(@tag_actions, @container)}
</div> </div>
"""} """}
end end
@ -181,7 +181,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
assigns = %{actions: actions, container: container} assigns = %{actions: actions, container: container}
~H""" ~H"""
<%= render_slot(@actions, @container) %> {render_slot(@actions, @container)}
""" """
end end

View File

@ -2,40 +2,40 @@
id={"container-#{@container.id}"} id={"container-#{@container.id}"}
class="overflow-hidden max-w-full mx-4 mb-4 px-8 py-4 class="overflow-hidden max-w-full mx-4 mb-4 px-8 py-4
flex flex-col justify-around items-center space-y-4 flex flex-col justify-around items-center space-y-4
border border-gray-400 rounded-lg shadow-lg hover:shadow-md border border-zinc-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out" transition-all duration-300 ease-in-out"
> >
<.link navigate={~p"/container/#{@container}"} class="link"> <.link navigate={~p"/container/#{@container}"} class="link">
<h1 class="px-4 py-2 rounded-lg title text-xl"> <h1 class="px-4 py-2 rounded-lg title text-xl">
<%= @container.name %> {@container.name}
</h1> </h1>
</.link> </.link>
<div class="flex flex-col justify-center items-center space-y-2"> <div class="flex flex-col justify-center items-center space-y-2">
<span :if={@container.desc} class="rounded-lg title text-lg"> <span :if={@container.desc} class="rounded-lg title text-lg">
<%= gettext("Description:") %> {gettext("Description:")}
<%= @container.desc %> {@container.desc}
</span> </span>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
<%= gettext("Type:") %> {gettext("Type:")}
<%= @container.type %> {@container.type}
</span> </span>
<span :if={@container.location} class="rounded-lg title text-lg"> <span :if={@container.location} class="rounded-lg title text-lg">
<%= gettext("Location:") %> {gettext("Location:")}
<%= @container.location %> {@container.location}
</span> </span>
<%= if Ammo.get_packs_count(@current_user, container_id: @container.id) != 0 do %> <%= if Ammo.get_packs_count(@current_user, container_id: @container.id) != 0 do %>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
<%= gettext("Packs:") %> {gettext("Packs:")}
<%= Ammo.get_packs_count(@current_user, container_id: @container.id) %> {Ammo.get_packs_count(@current_user, container_id: @container.id)}
</span> </span>
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
<%= gettext("Rounds:") %> {gettext("Rounds:")}
<%= Ammo.get_round_count(@current_user, container_id: @container.id) %> {Ammo.get_round_count(@current_user, container_id: @container.id)}
</span> </span>
<% end %> <% end %>
@ -45,7 +45,7 @@
> >
<.simple_tag_card :for={tag <- @container.tags} tag={tag} /> <.simple_tag_card :for={tag <- @container.tags} tag={tag} />
<%= if @tag_actions, do: render_slot(@tag_actions) %> {if @tag_actions, do: render_slot(@tag_actions)}
</div> </div>
</div> </div>
@ -53,6 +53,6 @@
:if={assigns |> Map.has_key?(:inner_block)} :if={assigns |> Map.has_key?(:inner_block)}
class="flex space-x-4 justify-center items-center" class="flex space-x-4 justify-center items-center"
> >
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</div> </div>
</div> </div>

View File

@ -1,3 +1,3 @@
<time :if={@date} id={@id} datetime={Date.to_iso8601(@date, :extended)} phx-hook="Date"> <time :if={@date} id={@id} datetime={Date.to_iso8601(@date, :extended)} phx-hook="Date">
<%= Date.to_iso8601(@date, :extended) %> {Date.to_iso8601(@date, :extended)}
</time> </time>

View File

@ -1,13 +1,13 @@
<div class="flex items-center mx-4 my-2 space-x-1"> <div class="flex items-center mx-4 my-2 space-x-1">
<input <input
class="w-36 text-center input input-primary" class="w-40 text-center input input-primary"
name={"#{@name}_start"} name={"#{@name}_start"}
type="date" type="date"
value={@start_date} value={@start_date}
/> />
<span>—</span> <span>—</span>
<input <input
class="w-36 text-center input input-primary" class="w-40 text-center input input-primary"
name={"#{@name}_end"} name={"#{@name}_end"}
type="date" type="date"
value={@end_date} value={@end_date}

View File

@ -1,3 +1,3 @@
<time :if={@datetime} id={@id} datetime={cast_datetime(@datetime)} phx-hook="DateTime"> <time :if={@datetime} id={@id} datetime={cast_datetime(@datetime)} phx-hook="DateTime">
<%= cast_datetime(@datetime) %> {cast_datetime(@datetime)}
</time> </time>

View File

@ -1,24 +1,24 @@
<div class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4 <div class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center space-y-4
border border-gray-400 rounded-lg shadow-lg hover:shadow-md border border-zinc-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out"> transition-all duration-300 ease-in-out">
<h1 class="title text-xl"> <h1 class="title text-xl">
<%= @invite.name %> {@invite.name}
</h1> </h1>
<%= if @invite.disabled_at |> is_nil() do %> <%= if @invite.disabled_at |> is_nil() do %>
<h2 class="title text-md"> <h2 class="title text-md">
<%= if @invite.uses_left do %> <%= if @invite.uses_left do %>
<%= gettext( {gettext(
"Uses Left: %{uses_left_count}", "Uses Left: %{uses_left_count}",
uses_left_count: @invite.uses_left uses_left_count: @invite.uses_left
) %> )}
<% else %> <% else %>
<%= gettext("Uses Left: Unlimited") %> {gettext("Uses Left: Unlimited")}
<% end %> <% end %>
</h2> </h2>
<% else %> <% else %>
<h2 class="title text-md"> <h2 class="title text-md">
<%= gettext("Invite Disabled") %> {gettext("Invite Disabled")}
</h2> </h2>
<% end %> <% end %>
@ -28,19 +28,19 @@
/> />
<h2 :if={@use_count && @use_count != 0} class="title text-md"> <h2 :if={@use_count && @use_count != 0} class="title text-md">
<%= gettext("Uses: %{uses_count}", uses_count: @use_count) %> {gettext("Uses: %{uses_count}", uses_count: @use_count)}
</h2> </h2>
<div class="flex flex-row flex-wrap justify-center items-center"> <div class="flex flex-row flex-wrap justify-center items-center">
<code <code
id={"code-#{@invite.id}"} id={"code-#{@invite.id}"}
class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all text-gray-100 bg-primary-800" class="mx-2 my-1 text-xs px-4 py-2 rounded-lg text-center break-all text-zinc-100 bg-primary-800"
phx-no-format phx-no-format
><%= url(CanneryWeb.Endpoint, ~p"/users/register?invite=#{@invite.token}") %></code> ><%= url(CanneryWeb.Endpoint, ~p"/users/register?invite=#{@invite.token}") %></code>
<%= if @code_actions, do: render_slot(@code_actions) %> {if @code_actions, do: render_slot(@code_actions)}
</div> </div>
<div :if={@inner_block} class="flex space-x-4 justify-center items-center"> <div :if={@inner_block} class="flex space-x-4 justify-center items-center">
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</div> </div>
</div> </div>

View File

@ -29,7 +29,7 @@
patch={@return_to} patch={@return_to}
id="close" id="close"
class="absolute top-8 right-10 class="absolute top-8 right-10
text-gray-500 hover:text-gray-800 text-zinc-500 hover:text-zinc-800
transition-all duration-500 ease-in-out" transition-all duration-500 ease-in-out"
phx-remove={hide_modal()} phx-remove={hide_modal()}
aria-label={gettext("Close modal")} aria-label={gettext("Close modal")}
@ -38,7 +38,7 @@
</.link> </.link>
<div class="overflow-x-hidden overflow-y-auto w-full p-8 flex flex-col space-y-4 justify-start items-center"> <div class="overflow-x-hidden overflow-y-auto w-full p-8 flex flex-col space-y-4 justify-start items-center">
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</div> </div>
</div> </div>
</div> </div>

View File

@ -2,66 +2,66 @@
id={"pack-#{@pack.id}"} id={"pack-#{@pack.id}"}
class="mx-4 my-2 px-8 py-4 class="mx-4 my-2 px-8 py-4
flex flex-col justify-center items-center flex flex-col justify-center items-center
border border-gray-400 rounded-lg shadow-lg hover:shadow-md border border-zinc-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out" transition-all duration-300 ease-in-out"
> >
<.link navigate={~p"/ammo/show/#{@pack}"} class="mb-2 link"> <.link navigate={~p"/ammo/show/#{@pack}"} class="mb-2 link">
<h1 class="title text-xl title-primary-500"> <h1 class="title text-xl title-primary-500">
<%= @pack.type.name %> {@pack.type.name}
</h1> </h1>
</.link> </.link>
<div class="flex flex-col justify-center items-center"> <div class="flex flex-col justify-center items-center">
<span class="rounded-lg title text-lg"> <span class="rounded-lg title text-lg">
<%= gettext("Count:") %> {gettext("Count:")}
<%= if @pack.count == 0, do: gettext("Empty"), else: @pack.count %> {if @pack.count == 0, do: gettext("Empty"), else: @pack.count}
</span> </span>
<span :if={@original_count && @original_count != @pack.count} class="rounded-lg title text-lg"> <span :if={@original_count && @original_count != @pack.count} class="rounded-lg title text-lg">
<%= gettext("Original Count:") %> {gettext("Original Count:")}
<%= @original_count %> {@original_count}
</span> </span>
<span :if={@pack.notes} class="rounded-lg title text-lg"> <span :if={@pack.notes} class="rounded-lg title text-lg">
<%= gettext("Notes:") %> {gettext("Notes:")}
<%= @pack.notes %> {@pack.notes}
</span> </span>
<span :if={@pack.purchased_on} class="rounded-lg title text-lg"> <span :if={@pack.purchased_on} class="rounded-lg title text-lg">
<%= gettext("Purchased on:") %> {gettext("Purchased on:")}
<.date id={"#{@pack.id}-purchased-on"} date={@pack.purchased_on} /> <.date id={"#{@pack.id}-purchased-on"} date={@pack.purchased_on} />
</span> </span>
<span :if={@last_used_date} class="rounded-lg title text-lg"> <span :if={@last_used_date} class="rounded-lg title text-lg">
<%= gettext("Last used on:") %> {gettext("Last used on:")}
<.date id={"#{@pack.id}-last-used-on"} date={@last_used_date} /> <.date id={"#{@pack.id}-last-used-on"} date={@last_used_date} />
</span> </span>
<span :if={@pack.price_paid} class="rounded-lg title text-lg"> <span :if={@pack.price_paid} class="rounded-lg title text-lg">
<%= gettext("Price paid:") %> {gettext("Price paid:")}
<%= gettext("$%{amount}", amount: display_currency(@pack.price_paid)) %> {gettext("$%{amount}", amount: display_currency(@pack.price_paid))}
</span> </span>
<span :if={@cpr} class="rounded-lg title text-lg"> <span :if={@cpr} class="rounded-lg title text-lg">
<%= gettext("CPR:") %> {gettext("CPR:")}
<%= gettext("$%{amount}", amount: display_currency(@cpr)) %> {gettext("$%{amount}", amount: display_currency(@cpr))}
</span> </span>
<span :if={@pack.lot_number} class="rounded-lg title text-lg"> <span :if={@pack.lot_number} class="rounded-lg title text-lg">
<%= gettext("Lot number:") %> {gettext("Lot number:")}
<%= @pack.lot_number %> {@pack.lot_number}
</span> </span>
<span :if={@container} class="rounded-lg title text-lg"> <span :if={@container} class="rounded-lg title text-lg">
<%= gettext("Container:") %> {gettext("Container:")}
<.link navigate={~p"/container/#{@container}"} class="link"> <.link navigate={~p"/container/#{@container}"} class="link">
<%= @container.name %> {@container.name}
</.link> </.link>
</span> </span>
</div> </div>
<div :if={@inner_block} class="mt-4 flex space-x-4 justify-center items-center"> <div :if={@inner_block} class="mt-4 flex space-x-4 justify-center items-center">
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</div> </div>
</div> </div>

View File

@ -2,5 +2,5 @@
class="inline-block break-all mx-2 my-1 px-4 py-2 rounded-lg title text-xl" class="inline-block break-all mx-2 my-1 px-4 py-2 rounded-lg title text-xl"
style={"color: #{@tag.text_color}; background-color: #{@tag.bg_color}"} style={"color: #{@tag.text_color}; background-color: #{@tag.bg_color}"}
> >
<%= @tag.name %> {@tag.name}
</h1> </h1>

View File

@ -1,9 +1,9 @@
<div <div
id={"tag-#{@tag.id}"} id={"tag-#{@tag.id}"}
class="mx-4 mb-4 px-8 py-4 space-x-4 flex justify-center items-center class="mx-4 mb-4 px-8 py-4 space-x-4 flex justify-center items-center
border border-gray-400 rounded-lg shadow-lg hover:shadow-md border border-zinc-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out" transition-all duration-300 ease-in-out"
> >
<.simple_tag_card tag={@tag} /> <.simple_tag_card tag={@tag} />
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</div> </div>

View File

@ -1,4 +1,4 @@
<label for={@id || @action} class="relative inline-flex items-center cursor-pointer"> <label for={@id || @action} class="inline-flex relative items-center cursor-pointer">
<input <input
id={@id || @action} id={@id || @action}
type="checkbox" type="checkbox"
@ -12,19 +12,17 @@
else: %{"phx-click": @action, "phx-value-value": @value} else: %{"phx-click": @action, "phx-value-value": @value}
} }
/> />
<div class="w-11 h-6 bg-gray-300 rounded-full peer <div class="w-11 h-6 bg-zinc-300 rounded-full peer
peer-focus:ring-4 peer-focus:ring-teal-300 dark:peer-focus:ring-teal-800 peer-checked:bg-zinc-600 peer-checked:after:translate-x-full peer-checked:after:border-white
peer-checked:bg-gray-600 after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-zinc-300
peer-checked:after:translate-x-full peer-checked:after:border-white
after:content-[''] after:absolute after:top-1 after:left-[2px] after:bg-white after:border-gray-300
after:border after:rounded-full after:h-5 after:w-5 after:border after:rounded-full after:h-5 after:w-5
after:transition-all after:duration-250 after:ease-in-out after:transition-all after:duration-250 after:ease-in-out
transition-colors duration-250 ease-in-out"> transition-colors duration-250 ease-in-out">
</div> </div>
<span <span
id={"#{@id || @action}-label"} id={"#{@id || @action}-label"}
class="ml-3 text-sm font-medium text-gray-900 dark:text-gray-300 whitespace-nowrap" class="ml-3 text-sm font-medium whitespace-nowrap text-zinc-900 dark:text-zinc-300"
> >
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</span> </span>
</label> </label>

View File

@ -14,7 +14,7 @@
<span class="mx-2 my-1"> <span class="mx-2 my-1">
| |
</span> </span>
<%= @title_content %> {@title_content}
<% end %> <% end %>
</div> </div>
@ -25,37 +25,37 @@
<%= if @current_user do %> <%= if @current_user do %>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link navigate={~p"/tags"} class="text-white hover:underline"> <.link navigate={~p"/tags"} class="text-white hover:underline">
<%= gettext("Tags") %> {gettext("Tags")}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link navigate={~p"/containers"} class="text-white hover:underline"> <.link navigate={~p"/containers"} class="text-white hover:underline">
<%= gettext("Containers") %> {gettext("Containers")}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link navigate={~p"/catalog"} class="text-white hover:underline"> <.link navigate={~p"/catalog"} class="text-white hover:underline">
<%= gettext("Catalog") %> {gettext("Catalog")}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link navigate={~p"/ammo"} class="text-white hover:underline"> <.link navigate={~p"/ammo"} class="text-white hover:underline">
<%= gettext("Ammo") %> {gettext("Ammo")}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link navigate={~p"/range"} class="text-white hover:underline"> <.link navigate={~p"/range"} class="text-white hover:underline">
<%= gettext("Range") %> {gettext("Range")}
</.link> </.link>
</li> </li>
<li :if={@current_user |> Accounts.already_admin?()} class="mx-2 my-1"> <li :if={@current_user |> Accounts.already_admin?()} class="mx-2 my-1">
<.link navigate={~p"/invites"} class="text-white hover:underline"> <.link navigate={~p"/invites"} class="text-white hover:underline">
<%= gettext("Invites") %> {gettext("Invites")}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link href={~p"/users/settings"} class="text-white hover:underline truncate"> <.link href={~p"/users/settings"} class="text-white hover:underline truncate">
<%= @current_user.email %> {@current_user.email}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
@ -86,12 +86,12 @@
<% else %> <% else %>
<li :if={Accounts.allow_registration?()} class="mx-2 my-1"> <li :if={Accounts.allow_registration?()} class="mx-2 my-1">
<.link href={~p"/users/register"} class="text-white hover:underline truncate"> <.link href={~p"/users/register"} class="text-white hover:underline truncate">
<%= dgettext("actions", "Register") %> {dgettext("actions", "Register")}
</.link> </.link>
</li> </li>
<li class="mx-2 my-1"> <li class="mx-2 my-1">
<.link href={~p"/users/log_in"} class="text-white hover:underline truncate"> <.link href={~p"/users/log_in"} class="text-white hover:underline truncate">
<%= dgettext("actions", "Log in") %> {dgettext("actions", "Log in")}
</.link> </.link>
</li> </li>
<% end %> <% end %>

View File

@ -1,36 +1,36 @@
<div <div
id={"user-#{@user.id}"} id={"user-#{@user.id}"}
class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center text-center class="mx-4 my-2 px-8 py-4 flex flex-col justify-center items-center text-center
border border-gray-400 rounded-lg shadow-lg hover:shadow-md border border-zinc-400 rounded-lg shadow-lg hover:shadow-md
transition-all duration-300 ease-in-out" transition-all duration-300 ease-in-out"
> >
<h1 class="px-4 py-2 rounded-lg title text-xl break-all"> <h1 class="px-4 py-2 rounded-lg title text-xl break-all">
<%= @user.email %> {@user.email}
</h1> </h1>
<h3 class="px-4 py-2 rounded-lg title text-lg"> <h3 class="px-4 py-2 rounded-lg title text-lg">
<p> <p>
<%= if @user.confirmed_at do %> <%= if @user.confirmed_at do %>
<%= gettext( {gettext(
"User was confirmed at%{confirmed_datetime}", "User was confirmed at%{confirmed_datetime}",
confirmed_datetime: "" confirmed_datetime: ""
) %> )}
<.datetime id={"#{@user.id}-confirmed-at"} datetime={@user.confirmed_at} /> <.datetime id={"#{@user.id}-confirmed-at"} datetime={@user.confirmed_at} />
<% else %> <% else %>
<%= gettext("Email unconfirmed") %> {gettext("Email unconfirmed")}
<% end %> <% end %>
</p> </p>
<p> <p>
<%= gettext( {gettext(
"User registered on%{registered_datetime}", "User registered on%{registered_datetime}",
registered_datetime: "" registered_datetime: ""
) %> )}
<.datetime id={"#{@user.id}-inserted-at"} datetime={@user.inserted_at} /> <.datetime id={"#{@user.id}-inserted-at"} datetime={@user.inserted_at} />
</p> </p>
</h3> </h3>
<div :if={@inner_block} class="px-4 py-2 flex space-x-4 justify-center items-center"> <div :if={@inner_block} class="px-4 py-2 flex space-x-4 justify-center items-center">
<%= render_slot(@inner_block) %> {render_slot(@inner_block)}
</div> </div>
</div> </div>

View File

@ -1,23 +1,23 @@
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;"> <div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
<span style="margin-bottom: 0.75em; font-size: 1.5em;"> <span style="margin-bottom: 0.75em; font-size: 1.5em;">
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> {dgettext("emails", "Hi %{email},", email: @user.email)}
</span> </span>
<br /> <br />
<span style="margin-bottom: 1em; font-size: 1.25em;"> <span style="margin-bottom: 1em; font-size: 1.25em;">
<%= dgettext("emails", "Welcome to Cannery") %> {dgettext("emails", "Welcome to Cannery")}
</span> </span>
<br /> <br />
<%= dgettext("emails", "You can confirm your account by visiting the URL below:") %> {dgettext("emails", "You can confirm your account by visiting the URL below:")}
<br /> <br />
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a> <a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}>{@url}</a>
<br /> <br />
<%= dgettext("emails", "If you didn't create an account at Cannery, please ignore this.") %> {dgettext("emails", "If you didn't create an account at Cannery, please ignore this.")}
</div> </div>

View File

@ -1,17 +1,17 @@
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;"> <div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
<span style="margin-bottom: 0.5em; font-size: 1.5em;"> <span style="margin-bottom: 0.5em; font-size: 1.5em;">
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> {dgettext("emails", "Hi %{email},", email: @user.email)}
</span> </span>
<br /> <br />
<%= dgettext("emails", "You can reset your password by visiting the URL below:") %> {dgettext("emails", "You can reset your password by visiting the URL below:")}
<br /> <br />
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a> <a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}>{@url}</a>
<br /> <br />
<%= dgettext("emails", "If you didn't request this change from Cannery, please ignore this.") %> {dgettext("emails", "If you didn't request this change from Cannery, please ignore this.")}
</div> </div>

View File

@ -1,20 +1,20 @@
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;"> <div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
<span style="margin-bottom: 0.5em; font-size: 1.5em;"> <span style="margin-bottom: 0.5em; font-size: 1.5em;">
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> {dgettext("emails", "Hi %{email},", email: @user.email)}
</span> </span>
<br /> <br />
<%= dgettext("emails", "You can change your email by visiting the URL below:") %> {dgettext("emails", "You can change your email by visiting the URL below:")}
<br /> <br />
<a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}><%= @url %></a> <a style="margin: 1em; color: rgb(31, 31, 31);" href={@url}>{@url}</a>
<br /> <br />
<%= dgettext( {dgettext(
"emails", "emails",
"If you didn't request this change from Cannery, please ignore this." "If you didn't request this change from Cannery, please ignore this."
) %> )}
</div> </div>

View File

@ -10,7 +10,7 @@
phx-click="lv:clear-flash" phx-click="lv:clear-flash"
phx-value-key="info" phx-value-key="info"
> >
<%= Phoenix.Flash.get(@flash, :info) %> {Phoenix.Flash.get(@flash, :info)}
</p> </p>
<p <p
@ -20,13 +20,13 @@
phx-click="lv:clear-flash" phx-click="lv:clear-flash"
phx-value-key="error" phx-value-key="error"
> >
<%= Phoenix.Flash.get(@flash, :error) %> {Phoenix.Flash.get(@flash, :error)}
</p> </p>
</div> </div>
</header> </header>
<div class="mx-4 sm:mx-8 md:mx-16 flex flex-col justify-center items-stretch"> <div class="mx-4 sm:mx-8 md:mx-16 flex flex-col justify-center items-stretch">
<%= @inner_content %> {@inner_content}
</div> </div>
</main> </main>
@ -40,6 +40,6 @@
<i class="fas fa-fade text-md fa-satellite-dish"></i> <i class="fas fa-fade text-md fa-satellite-dish"></i>
<h1 class="title text-md title-primary-500"> <h1 class="title text-md title-primary-500">
<%= gettext("Reconnecting...") %> {gettext("Reconnecting...")}
</h1> </h1>
</div> </div>

View File

@ -1,19 +1,19 @@
<html> <html>
<head> <head>
<title> <title>
<%= @email.subject %> {@email.subject}
</title> </title>
</head> </head>
<body style="padding: 2em; color: rgb(31, 31, 31); background-color: rgb(220, 220, 228); font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; text-align: center;"> <body style="padding: 2em; color: rgb(31, 31, 31); background-color: rgb(220, 220, 228); font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; text-align: center;">
<%= @inner_content %> {@inner_content}
<hr style="margin: 2em auto; border-width: 1px; border-color: rgb(212, 212, 216); width: 100%; max-width: 42rem;" /> <hr style="margin: 2em auto; border-width: 1px; border-color: rgb(212, 212, 216); width: 100%; max-width: 42rem;" />
<a style="color: rgb(31, 31, 31);" href={~p"/"}> <a style="color: rgb(31, 31, 31);" href={~p"/"}>
<%= dgettext( {dgettext(
"emails", "emails",
"This email was sent from Cannery, the self-hosted firearm tracker website." "This email was sent from Cannery, the self-hosted firearm tracker website."
) %> )}
</a> </a>
</body> </body>
</html> </html>

View File

@ -1 +1 @@
<%= @inner_block %> {@inner_block}

View File

@ -1,20 +1,19 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en" class="m-0 p-0 w-full h-full bg-white"> <html lang="en" class="p-0 m-0 w-full h-full bg-white [scrollbar-gutter:stable]">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="csrf-token" content={get_csrf_token()} />
<%= csrf_meta_tag() %>
<link rel="shortcut icon" type="image/jpg" href={~p"/images/cannery.svg"} /> <link rel="shortcut icon" type="image/jpg" href={~p"/images/cannery.svg"} />
<.live_title suffix={" | #{gettext("Cannery")}"}> <.live_title suffix={" | #{gettext("Cannery")}"}>
<%= assigns[:page_title] || gettext("Cannery") %> {assigns[:page_title] || gettext("Cannery")}
</.live_title> </.live_title>
<link phx-track-static rel="stylesheet" href={~p"/css/app.css"} /> <link phx-track-static rel="stylesheet" href={~p"/assets/app.css"} />
<script defer phx-track-static type="text/javascript" src={~p"/js/app.js"}> <script defer phx-track-static type="text/javascript" src={~p"/assets/app.js"}>
</script> </script>
</head> </head>
<body class="m-0 p-0 w-full h-full subpixel-antialiased"> <body class="p-0 m-0 w-full h-full subpixel-antialiased">
<%= @inner_content %> {@inner_content}
</body> </body>
</html> </html>

View File

@ -74,17 +74,17 @@ defmodule CanneryWeb.Components.MovePackComponent do
~H""" ~H"""
<div class="w-full flex flex-col space-y-8 justify-center items-center"> <div class="w-full flex flex-col space-y-8 justify-center items-center">
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= dgettext("actions", "Move ammo") %> {dgettext("actions", "Move ammo")}
</h2> </h2>
<%= if @containers |> Enum.empty?() do %> <%= if @containers |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600"> <h2 class="title text-xl text-primary-600">
<%= gettext("No other containers") %> {gettext("No other containers")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<.link navigate={~p"/containers/new"} class="btn btn-primary"> <.link navigate={~p"/containers/new"} class="btn btn-primary">
<%= dgettext("actions", "Add another container!") %> {dgettext("actions", "Add another container!")}
</.link> </.link>
<% else %> <% else %>
<.live_component <.live_component
@ -120,7 +120,7 @@ defmodule CanneryWeb.Components.MovePackComponent do
phx-target={@myself} phx-target={@myself}
phx-value-container_id={@container.id} phx-value-container_id={@container.id}
> >
<%= dgettext("actions", "Select") %> {dgettext("actions", "Select")}
</button> </button>
</div> </div>
""" """

View File

@ -170,7 +170,7 @@ defmodule CanneryWeb.Components.PackTableComponent do
{type_name, {type_name,
~H""" ~H"""
<%= render_slot(@type_block, @type) %> {render_slot(@type_block, @type)}
"""} """}
end end
@ -196,7 +196,7 @@ defmodule CanneryWeb.Components.PackTableComponent do
<%= if @last_used_date do %> <%= if @last_used_date do %>
<.date id={"#{@id}-last-used-date"} date={@last_used_date} /> <.date id={"#{@id}-last-used-date"} date={@last_used_date} />
<% else %> <% else %>
<%= gettext("Never used") %> {gettext("Never used")}
<% end %> <% end %>
"""} """}
end end
@ -205,7 +205,7 @@ defmodule CanneryWeb.Components.PackTableComponent do
assigns = %{range: range, pack: pack} assigns = %{range: range, pack: pack}
~H""" ~H"""
<%= render_slot(@range, @pack) %> {render_slot(@range, @pack)}
""" """
end end
@ -222,7 +222,7 @@ defmodule CanneryWeb.Components.PackTableComponent do
assigns = %{actions: actions, pack: pack} assigns = %{actions: actions, pack: pack}
~H""" ~H"""
<%= render_slot(@actions, @pack) %> {render_slot(@actions, @pack)}
""" """
end end
@ -243,7 +243,7 @@ defmodule CanneryWeb.Components.PackTableComponent do
{container_name, {container_name,
~H""" ~H"""
<%= render_slot(@container_block, {@pack, @container}) %> {render_slot(@container_block, {@pack, @container})}
"""} """}
end end

View File

@ -99,7 +99,7 @@ defmodule CanneryWeb.Components.ShotRecordTableComponent do
{pack.type.name, {pack.type.name,
~H""" ~H"""
<.link navigate={~p"/ammo/show/#{@pack}"} class="link"> <.link navigate={~p"/ammo/show/#{@pack}"} class="link">
<%= @pack.type.name %> {@pack.type.name}
</.link> </.link>
"""} """}
end end
@ -115,7 +115,7 @@ defmodule CanneryWeb.Components.ShotRecordTableComponent do
assigns = %{actions: actions, shot_record: shot_record} assigns = %{actions: actions, shot_record: shot_record}
~H""" ~H"""
<%= render_slot(@actions, @shot_record) %> {render_slot(@actions, @shot_record)}
""" """
end end

View File

@ -76,7 +76,7 @@ defmodule CanneryWeb.Components.TableComponent do
sort_mode: initial_sort_mode sort_mode: initial_sort_mode
) )
|> assign_new(:row_class, fn -> "bg-white" end) |> assign_new(:row_class, fn -> "bg-white" end)
|> assign_new(:alternate_row_class, fn -> "bg-gray-200" end) |> assign_new(:alternate_row_class, fn -> "bg-zinc-200" end)
{:ok, socket} {:ok, socket}
end end

View File

@ -1,4 +1,4 @@
<div id={@id} class="w-full overflow-x-auto border border-gray-600 rounded-lg shadow-lg bg-white"> <div id={@id} class="w-full overflow-x-auto border border-zinc-600 rounded-lg shadow-lg bg-white">
<table class="min-w-full table-auto text-center bg-white"> <table class="min-w-full table-auto text-center bg-white">
<thead class="border-b border-primary-600"> <thead class="border-b border-primary-600">
<tr> <tr>
@ -12,7 +12,7 @@
phx-target={@myself} phx-target={@myself}
> >
<i class="w-0 float-right fas fa-sm fa-chevron-up opacity-0"></i> <i class="w-0 float-right fas fa-sm fa-chevron-up opacity-0"></i>
<span class={if @last_sort_key == key, do: "underline"}><%= label %></span> <span class={if @last_sort_key == key, do: "underline"}>{label}</span>
<%= if @last_sort_key == key do %> <%= if @last_sort_key == key do %>
<%= case @sort_mode do %> <%= case @sort_mode do %>
<% :asc -> %> <% :asc -> %>
@ -27,7 +27,7 @@
</th> </th>
<% else %> <% else %>
<th class={["p-2 cursor-not-allowed", column[:class]]}> <th class={["p-2 cursor-not-allowed", column[:class]]}>
<%= label %> {label}
</th> </th>
<% end %> <% end %>
<% end %> <% end %>
@ -41,9 +41,9 @@
<td :for={%{key: key} = value <- @columns} class={["p-2", value[:class]]}> <td :for={%{key: key} = value <- @columns} class={["p-2", value[:class]]}>
<%= case values |> Map.get(key) do %> <%= case values |> Map.get(key) do %>
<% {_custom_sort_value, value} -> %> <% {_custom_sort_value, value} -> %>
<%= value %> {value}
<% value -> %> <% value -> %>
<%= value %> {value}
<% end %> <% end %>
</td> </td>
</tr> </tr>

View File

@ -278,7 +278,7 @@ defmodule CanneryWeb.Components.TypeTableComponent do
{type_name, {type_name,
~H""" ~H"""
<.link navigate={~p"/type/#{@id}"} class="link"> <.link navigate={~p"/type/#{@id}"} class="link">
<%= @name %> {@name}
</.link> </.link>
"""} """}
end end
@ -287,7 +287,7 @@ defmodule CanneryWeb.Components.TypeTableComponent do
assigns = %{actions: actions, type: type} assigns = %{actions: actions, type: type}
~H""" ~H"""
<%= render_slot(@actions, @type) %> {render_slot(@actions, @type)}
""" """
end end

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title> <title>
<%= dgettext("errors", "Error") %> | <%= gettext("Cannery") %> {dgettext("errors", "Error")} | {gettext("Cannery")}
</title> </title>
<link rel="stylesheet" href="/css/app.css" /> <link rel="stylesheet" href="/css/app.css" />
<script defer type="text/javascript" src="/js/app.js"> <script defer type="text/javascript" src="/js/app.js">
@ -19,13 +19,13 @@
<div class="pb-8 w-full flex flex-col justify-center items-center text-center"> <div class="pb-8 w-full flex flex-col justify-center items-center text-center">
<div class="p-8 sm:p-16 w-full flex flex-col justify-center items-center space-y-4 max-w-3xl"> <div class="p-8 sm:p-16 w-full flex flex-col justify-center items-center space-y-4 max-w-3xl">
<h1 class="title text-primary-600 text-3xl"> <h1 class="title text-primary-600 text-3xl">
<%= @error_string %> {@error_string}
</h1> </h1>
<hr class="w-full hr" /> <hr class="w-full hr" />
<.link href={~p"/"} class="link title text-primary-600 text-lg"> <.link href={~p"/"} class="link title text-primary-600 text-lg">
<%= dgettext("errors", "Go back home") %> {dgettext("errors", "Go back home")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-600 text-xl"> <h1 class="title text-primary-600 text-xl">
<%= dgettext("actions", "Resend confirmation instructions") %> {dgettext("actions", "Resend confirmation instructions")}
</h1> </h1>
<.form <.form
@ -10,22 +10,22 @@
action={~p"/users/confirm"} action={~p"/users/confirm"}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %> {label(f, :email, gettext("Email"), class: "title text-lg text-primary-600")}
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> {email_input(f, :email, required: true, class: "input input-primary col-span-2")}
<%= submit(dgettext("actions", "Resend confirmation instructions"), {submit(dgettext("actions", "Resend confirmation instructions"),
class: "mx-auto btn btn-primary col-span-3" class: "mx-auto btn btn-primary col-span-3"
) %> )}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
<div class="flex flex-row justify-center items-center space-x-4"> <div class="flex flex-row justify-center items-center space-x-4">
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary"> <.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
<%= dgettext("actions", "Register") %> {dgettext("actions", "Register")}
</.link> </.link>
<.link href={~p"/users/log_in"} class="btn btn-primary"> <.link href={~p"/users/log_in"} class="btn btn-primary">
<%= dgettext("actions", "Log in") %> {dgettext("actions", "Log in")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-600 text-xl"> <h1 class="title text-primary-600 text-xl">
<%= dgettext("actions", "Register") %> {dgettext("actions", "Register")}
</h1> </h1>
<.form <.form
@ -10,23 +10,23 @@
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<p :if={@changeset.action && not @changeset.valid?} class="alert alert-danger col-span-3"> <p :if={@changeset.action && not @changeset.valid?} class="alert alert-danger col-span-3">
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> {dgettext("errors", "Oops, something went wrong! Please check the errors below.")}
</p> </p>
<%= if @invite_token do %> <%= if @invite_token do %>
<%= hidden_input(f, :invite_token, value: @invite_token) %> {hidden_input(f, :invite_token, value: @invite_token)}
<% end %> <% end %>
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %> {label(f, :email, gettext("Email"), class: "title text-lg text-primary-600")}
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> {email_input(f, :email, required: true, class: "input input-primary col-span-2")}
<%= error_tag(f, :email, "col-span-3") %> {error_tag(f, :email, "col-span-3")}
<%= label(f, :password, gettext("Password"), class: "title text-lg text-primary-600") %> {label(f, :password, gettext("Password"), class: "title text-lg text-primary-600")}
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %> {password_input(f, :password, required: true, class: "input input-primary col-span-2")}
<%= error_tag(f, :password, "col-span-3") %> {error_tag(f, :password, "col-span-3")}
<%= label(f, :locale, gettext("Language"), class: "title text-lg text-primary-600") %> {label(f, :locale, gettext("Language"), class: "title text-lg text-primary-600")}
<%= select( {select(
f, f,
:locale, :locale,
[ [
@ -36,20 +36,20 @@
{"Español", "es"} {"Español", "es"}
], ],
class: "input input-primary col-span-2" class: "input input-primary col-span-2"
) %> )}
<%= error_tag(f, :locale) %> {error_tag(f, :locale)}
<%= submit(dgettext("actions", "Register"), class: "mx-auto btn btn-primary col-span-3") %> {submit(dgettext("actions", "Register"), class: "mx-auto btn btn-primary col-span-3")}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
<div class="flex flex-row justify-center items-center space-x-4"> <div class="flex flex-row justify-center items-center space-x-4">
<.link href={~p"/users/log_in"} class="btn btn-primary"> <.link href={~p"/users/log_in"} class="btn btn-primary">
<%= dgettext("actions", "Log in") %> {dgettext("actions", "Log in")}
</.link> </.link>
<.link href={~p"/users/reset_password"} class="btn btn-primary"> <.link href={~p"/users/reset_password"} class="btn btn-primary">
<%= dgettext("actions", "Forgot your password?") %> {dgettext("actions", "Forgot your password?")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-600 text-xl"> <h1 class="title text-primary-600 text-xl">
<%= dgettext("actions", "Reset password") %> {dgettext("actions", "Reset password")}
</h1> </h1>
<.form <.form
@ -10,35 +10,35 @@
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<p :if={@changeset.action && not @changeset.valid?} class="alert alert-danger col-span-3"> <p :if={@changeset.action && not @changeset.valid?} class="alert alert-danger col-span-3">
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> {dgettext("errors", "Oops, something went wrong! Please check the errors below.")}
</p> </p>
<%= label(f, :password, gettext("New password"), class: "title text-lg text-primary-600") %> {label(f, :password, gettext("New password"), class: "title text-lg text-primary-600")}
<%= password_input(f, :password, required: true, class: "input input-primary col-span-2") %> {password_input(f, :password, required: true, class: "input input-primary col-span-2")}
<%= error_tag(f, :password, "col-span-3") %> {error_tag(f, :password, "col-span-3")}
<%= label(f, :password_confirmation, gettext("Confirm new password"), {label(f, :password_confirmation, gettext("Confirm new password"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= password_input(f, :password_confirmation, {password_input(f, :password_confirmation,
required: true, required: true,
class: "input input-primary col-span-2" class: "input input-primary col-span-2"
) %> )}
<%= error_tag(f, :password_confirmation, "col-span-3") %> {error_tag(f, :password_confirmation, "col-span-3")}
<%= submit(dgettext("actions", "Reset password"), {submit(dgettext("actions", "Reset password"),
class: "mx-auto btn btn-primary col-span-3" class: "mx-auto btn btn-primary col-span-3"
) %> )}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
<div class="flex flex-row justify-center items-center space-x-4"> <div class="flex flex-row justify-center items-center space-x-4">
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary"> <.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
<%= dgettext("actions", "Register") %> {dgettext("actions", "Register")}
</.link> </.link>
<.link href={~p"/users/log_in"} class="btn btn-primary"> <.link href={~p"/users/log_in"} class="btn btn-primary">
<%= dgettext("actions", "Log in") %> {dgettext("actions", "Log in")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-600 text-xl"> <h1 class="title text-primary-600 text-xl">
<%= dgettext("actions", "Forgot your password?") %> {dgettext("actions", "Forgot your password?")}
</h1> </h1>
<.form <.form
@ -10,22 +10,22 @@
action={~p"/users/reset_password"} action={~p"/users/reset_password"}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %> {label(f, :email, gettext("Email"), class: "title text-lg text-primary-600")}
<%= email_input(f, :email, required: true, class: "input input-primary col-span-2") %> {email_input(f, :email, required: true, class: "input input-primary col-span-2")}
<%= submit(dgettext("actions", "Send instructions to reset password"), {submit(dgettext("actions", "Send instructions to reset password"),
class: "mx-auto btn btn-primary col-span-3" class: "mx-auto btn btn-primary col-span-3"
) %> )}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
<div class="flex flex-row justify-center items-center space-x-4"> <div class="flex flex-row justify-center items-center space-x-4">
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary"> <.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
<%= dgettext("actions", "Register") %> {dgettext("actions", "Register")}
</.link> </.link>
<.link href={~p"/users/log_in"} class="btn btn-primary"> <.link href={~p"/users/log_in"} class="btn btn-primary">
<%= dgettext("actions", "Log in") %> {dgettext("actions", "Log in")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4"> <div class="mx-auto pb-8 max-w-2xl flex flex-col justify-center items-center space-y-4">
<h1 class="title text-primary-600 text-xl"> <h1 class="title text-primary-600 text-xl">
<%= dgettext("actions", "Log in") %> {dgettext("actions", "Log in")}
</h1> </h1>
<.form <.form
@ -11,39 +11,39 @@
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center"
> >
<p :if={@error_message} class="alert alert-danger col-span-3"> <p :if={@error_message} class="alert alert-danger col-span-3">
<%= @error_message %> {@error_message}
</p> </p>
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %> {label(f, :email, gettext("Email"), class: "title text-lg text-primary-600")}
<%= email_input(f, :email, {email_input(f, :email,
autocomplete: :email, autocomplete: :email,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
required: true required: true
) %> )}
<%= label(f, :password, gettext("Password"), class: "title text-lg text-primary-600") %> {label(f, :password, gettext("Password"), class: "title text-lg text-primary-600")}
<%= password_input(f, :password, {password_input(f, :password,
autocomplete: "current-password", autocomplete: "current-password",
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
required: true required: true
) %> )}
<%= label(f, :remember_me, gettext("Keep me logged in for 60 days"), {label(f, :remember_me, gettext("Keep me logged in for 60 days"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= checkbox(f, :remember_me, class: "checkbox col-span-2") %> {checkbox(f, :remember_me, class: "checkbox col-span-2")}
<%= submit(dgettext("actions", "Log in"), class: "mx-auto btn btn-primary col-span-3") %> {submit(dgettext("actions", "Log in"), class: "mx-auto btn btn-primary col-span-3")}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
<div class="flex flex-row justify-center items-center space-x-4"> <div class="flex flex-row justify-center items-center space-x-4">
<.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary"> <.link :if={Accounts.allow_registration?()} href={~p"/users/register"} class="btn btn-primary">
<%= dgettext("actions", "Register") %> {dgettext("actions", "Register")}
</.link> </.link>
<.link href={~p"/users/reset_password"} class="btn btn-primary"> <.link href={~p"/users/reset_password"} class="btn btn-primary">
<%= dgettext("actions", "Forgot your password?") %> {dgettext("actions", "Forgot your password?")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="mx-auto pb-8 max-w-3xl flex flex-col justify-center items-center text-right space-y-4"> <div class="flex flex-col justify-center items-center pb-8 mx-auto space-y-4 max-w-3xl text-right">
<h1 class="pb-4 title text-primary-600 text-2xl text-center"> <h1 class="pb-4 text-2xl text-center title text-primary-600">
<%= gettext("Settings") %> {gettext("Settings")}
</h1> </h1>
<hr class="hr" /> <hr class="hr" />
@ -9,40 +9,40 @@
:let={f} :let={f}
for={@email_changeset} for={@email_changeset}
action={~p"/users/settings"} action={~p"/users/settings"}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col justify-center items-center space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4"
> >
<h3 class="title text-primary-600 text-lg text-center col-span-3"> <h3 class="col-span-3 text-lg text-center title text-primary-600">
<%= dgettext("actions", "Change email") %> {dgettext("actions", "Change email")}
</h3> </h3>
<div <div
:if={@email_changeset.action && not @email_changeset.valid?} :if={@email_changeset.action && not @email_changeset.valid?}
class="alert alert-danger col-span-3" class="col-span-3 alert alert-danger"
> >
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> {dgettext("errors", "Oops, something went wrong! Please check the errors below.")}
</div> </div>
<%= hidden_input(f, :action, name: "action", value: "update_email") %> {hidden_input(f, :action, name: "action", value: "update_email")}
<%= label(f, :email, gettext("Email"), class: "title text-lg text-primary-600") %> {label(f, :email, gettext("Email"), class: "title text-lg text-primary-600")}
<%= email_input(f, :email, required: true, class: "mx-2 my-1 input input-primary col-span-2") %> {email_input(f, :email, required: true, class: "mx-2 my-1 input input-primary col-span-2")}
<%= error_tag(f, :email, "col-span-3") %> {error_tag(f, :email, "col-span-3")}
<%= label(f, :current_password, gettext("Current password"), {label(f, :current_password, gettext("Current password"),
for: "current_password_for_email", for: "current_password_for_email",
class: "mx-2 my-1 title text-lg text-primary-600" class: "mx-2 my-1 title text-lg text-primary-600"
) %> )}
<%= password_input(f, :current_password, {password_input(f, :current_password,
required: true, required: true,
name: "current_password", name: "current_password",
id: "current_password_for_email", id: "current_password_for_email",
class: "mx-2 my-1 input input-primary col-span-2" class: "mx-2 my-1 input input-primary col-span-2"
) %> )}
<%= error_tag(f, :current_password, "col-span-3") %> {error_tag(f, :current_password, "col-span-3")}
<%= submit(dgettext("actions", "Change email"), {submit(dgettext("actions", "Change email"),
class: "mx-auto btn btn-primary col-span-3" class: "mx-auto btn btn-primary col-span-3"
) %> )}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
@ -51,52 +51,52 @@
:let={f} :let={f}
for={@password_changeset} for={@password_changeset}
action={~p"/users/settings"} action={~p"/users/settings"}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col justify-center items-center space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4"
> >
<h3 class="title text-primary-600 text-lg text-center col-span-3"> <h3 class="col-span-3 text-lg text-center title text-primary-600">
<%= dgettext("actions", "Change password") %> {dgettext("actions", "Change password")}
</h3> </h3>
<div <div
:if={@password_changeset.action && not @password_changeset.valid?} :if={@password_changeset.action && not @password_changeset.valid?}
class="alert alert-danger col-span-3" class="col-span-3 alert alert-danger"
> >
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> {dgettext("errors", "Oops, something went wrong! Please check the errors below.")}
</div> </div>
<%= hidden_input(f, :action, name: "action", value: "update_password") %> {hidden_input(f, :action, name: "action", value: "update_password")}
<%= label(f, :password, gettext("New password"), class: "title text-lg text-primary-600") %> {label(f, :password, gettext("New password"), class: "title text-lg text-primary-600")}
<%= password_input(f, :password, {password_input(f, :password,
required: true, required: true,
class: "mx-2 my-1 input input-primary col-span-2" class: "mx-2 my-1 input input-primary col-span-2"
) %> )}
<%= error_tag(f, :password, "col-span-3") %> {error_tag(f, :password, "col-span-3")}
<%= label(f, :password_confirmation, gettext("Confirm new password"), {label(f, :password_confirmation, gettext("Confirm new password"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= password_input(f, :password_confirmation, {password_input(f, :password_confirmation,
required: true, required: true,
class: "mx-2 my-1 input input-primary col-span-2" class: "mx-2 my-1 input input-primary col-span-2"
) %> )}
<%= error_tag(f, :password_confirmation, "col-span-3") %> {error_tag(f, :password_confirmation, "col-span-3")}
<%= label(f, :current_password, gettext("Current password"), {label(f, :current_password, gettext("Current password"),
for: "current_password_for_password", for: "current_password_for_password",
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= password_input(f, :current_password, {password_input(f, :current_password,
required: true, required: true,
name: "current_password", name: "current_password",
id: "current_password_for_password", id: "current_password_for_password",
class: "mx-2 my-1 input input-primary col-span-2" class: "mx-2 my-1 input input-primary col-span-2"
) %> )}
<%= error_tag(f, :current_password, "col-span-3") %> {error_tag(f, :current_password, "col-span-3")}
<%= submit(dgettext("actions", "Change password"), {submit(dgettext("actions", "Change password"),
class: "mx-auto btn btn-primary col-span-3" class: "mx-auto btn btn-primary col-span-3"
) %> )}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
@ -105,22 +105,22 @@
:let={f} :let={f}
for={@locale_changeset} for={@locale_changeset}
action={~p"/users/settings"} action={~p"/users/settings"}
class="flex flex-col space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4 justify-center items-center" class="flex flex-col justify-center items-center space-y-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4"
> >
<%= label(f, :locale, dgettext("actions", "Change Language"), {label(f, :locale, dgettext("actions", "Change Language"),
class: "title text-primary-600 text-lg text-center col-span-3" class: "title text-primary-600 text-lg text-center col-span-3"
) %> )}
<div <div
:if={@locale_changeset.action && not @locale_changeset.valid?} :if={@locale_changeset.action && not @locale_changeset.valid?}
class="alert alert-danger col-span-3" class="col-span-3 alert alert-danger"
> >
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> {dgettext("errors", "Oops, something went wrong! Please check the errors below.")}
</div> </div>
<%= hidden_input(f, :action, name: "action", value: "update_locale") %> {hidden_input(f, :action, name: "action", value: "update_locale")}
<%= select( {select(
f, f,
:locale, :locale,
[ [
@ -129,21 +129,21 @@
{"Français", "fr"}, {"Français", "fr"},
{"Español", "es"} {"Español", "es"}
], ],
class: "my-1 min-w-md input input-primary col-span-3" class: "my-1 min-w-20 input input-primary col-span-3"
) %> )}
<%= error_tag(f, :locale, "col-span-3") %> {error_tag(f, :locale, "col-span-3")}
<%= submit(dgettext("actions", "Change language"), {submit(dgettext("actions", "Change language"),
class: "whitespace-nowrap mx-auto btn btn-primary col-span-3", class: "whitespace-nowrap mx-auto btn btn-primary col-span-3",
data: [qa: dgettext("prompts", "Are you sure you want to change your language?")] data: [qa: dgettext("prompts", "Are you sure you want to change your language?")]
) %> )}
</.form> </.form>
<hr class="hr" /> <hr class="hr" />
<div class="flex justify-center items-center"> <div class="flex justify-center items-center">
<.link href={~p"/export/json"} class="mx-4 my-2 btn btn-primary" target="_blank"> <.link href={~p"/export/json"} class="mx-4 my-2 btn btn-primary" target="_blank">
<%= dgettext("actions", "Export Data as JSON") %> {dgettext("actions", "Export Data as JSON")}
</.link> </.link>
<.link <.link
@ -152,7 +152,7 @@
class="mx-4 my-2 btn btn-alert" class="mx-4 my-2 btn btn-alert"
data-confirm={dgettext("prompts", "Are you sure you want to delete your account?")} data-confirm={dgettext("prompts", "Are you sure you want to delete your account?")}
> >
<%= dgettext("actions", "Delete User") %> {dgettext("actions", "Delete User")}
</.link> </.link>
</div> </div>
</div> </div>

View File

@ -4,7 +4,7 @@ defmodule CanneryWeb.ErrorHelpers do
""" """
use PhoenixHTMLHelpers use PhoenixHTMLHelpers
import Phoenix.{Component, HTML.Form} import Phoenix.Component
alias Ecto.Changeset alias Ecto.Changeset
alias Phoenix.{HTML.Form, LiveView.Rendered} alias Phoenix.{HTML.Form, LiveView.Rendered}
@ -19,10 +19,10 @@ defmodule CanneryWeb.ErrorHelpers do
~H""" ~H"""
<span <span
:for={error <- Keyword.get_values(@form.errors, @field)} :for={error <- Keyword.get_values(@form.errors, @field)}
:if={used_input?(@form[@field])}
class={["invalid-feedback", @extra_class]} class={["invalid-feedback", @extra_class]}
phx-feedback-for={input_name(@form, @field)}
> >
<%= translate_error(error) %> {translate_error(error)}
</span> </span>
""" """
end end

View File

@ -1,6 +1,6 @@
<div class="flex flex-col justify-center items-center text-center space-y-8"> <div class="flex flex-col justify-center items-center text-center space-y-8">
<h2 class="title text-xl text-primary-600"> <h2 class="title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<div class="flex flex-wrap justify-center items-center"> <div class="flex flex-wrap justify-center items-center">
@ -21,13 +21,13 @@
) )
} }
> >
<%= tag.name %> {tag.name}
<i class="fa-fw fa-sm fas fa-trash"></i> <i class="fa-fw fa-sm fas fa-trash"></i>
</.link> </.link>
<h2 :if={@container.tags |> Enum.empty?()} class="title text-xl text-primary-600"> <h2 :if={@container.tags |> Enum.empty?()} class="title text-xl text-primary-600">
<%= gettext("No tags") %> {gettext("No tags")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
</div> </div>
@ -43,17 +43,17 @@
phx-target={@myself} phx-target={@myself}
phx-submit="save" phx-submit="save"
> >
<%= select(f, :tag_id, tag_options(@tags, @container), {select(f, :tag_id, tag_options(@tags, @container),
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
id: "#{@id}-tag-select", id: "#{@id}-tag-select",
phx_hook: "SlimSelect" phx_hook: "SlimSelect"
) %> )}
<%= error_tag(f, :tag_id, "col-span-3 text-center") %> {error_tag(f, :tag_id, "col-span-3 text-center")}
<%= submit(dgettext("actions", "Add"), {submit(dgettext("actions", "Add"),
class: "mx-auto btn btn-primary", class: "mx-auto btn btn-primary",
phx_disable_with: dgettext("prompts", "Adding...") phx_disable_with: dgettext("prompts", "Adding...")
) %> )}
</.form> </.form>
<% end %> <% end %>
</div> </div>

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<.form <.form
:let={f} :let={f}
@ -15,50 +15,50 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> {changeset_errors(@changeset)}
</div> </div>
<%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-600") %> {label(f, :name, gettext("Name"), class: "title text-lg text-primary-600")}
<%= text_input(f, :name, {text_input(f, :name,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("My cool ammo can") placeholder: gettext("My cool ammo can")
) %> )}
<%= error_tag(f, :name, "col-span-3 text-center") %> {error_tag(f, :name, "col-span-3 text-center")}
<%= label(f, :desc, gettext("Description"), class: "title text-lg text-primary-600") %> {label(f, :desc, gettext("Description"), class: "title text-lg text-primary-600")}
<%= textarea(f, :desc, {textarea(f, :desc,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
id: "container-form-desc", id: "container-form-desc",
phx_debounce: 300, phx_debounce: 300,
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("Metal ammo can with the anime girl sticker") placeholder: gettext("Metal ammo can with the anime girl sticker")
) %> )}
<%= error_tag(f, :desc, "col-span-3 text-center") %> {error_tag(f, :desc, "col-span-3 text-center")}
<%= label(f, :type, gettext("Type"), class: "title text-lg text-primary-600") %> {label(f, :type, gettext("Type"), class: "title text-lg text-primary-600")}
<%= text_input(f, :type, {text_input(f, :type,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Magazine, Clip, Ammo Box, etc") placeholder: gettext("Magazine, Clip, Ammo Box, etc")
) %> )}
<%= error_tag(f, :type, "col-span-3 text-center") %> {error_tag(f, :type, "col-span-3 text-center")}
<%= label(f, :location, gettext("Location"), class: "title text-lg text-primary-600") %> {label(f, :location, gettext("Location"), class: "title text-lg text-primary-600")}
<%= textarea(f, :location, {textarea(f, :location,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
id: "container-form-location", id: "container-form-location",
phx_debounce: 300, phx_debounce: 300,
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("On the bookshelf") placeholder: gettext("On the bookshelf")
) %> )}
<%= error_tag(f, :location, "col-span-3 text-center") %> {error_tag(f, :location, "col-span-3 text-center")}
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
class: "mx-auto btn btn-primary col-span-3", class: "mx-auto btn btn-primary col-span-3",
phx_disable_with: dgettext("prompts", "Saving...") phx_disable_with: dgettext("prompts", "Saving...")
) %> )}
</.form> </.form>
</div> </div>

View File

@ -1,23 +1,23 @@
<div class="flex flex-col justify-center items-center space-y-8"> <div class="flex flex-col justify-center items-center space-y-8">
<h1 class="text-2xl title title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= gettext("Containers") %> {gettext("Containers")}
</h1> </h1>
<%= if @containers |> Enum.empty?() and @search |> is_nil() do %> <%= if @containers |> Enum.empty?() and @search |> is_nil() do %>
<h2 class="text-xl title text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No containers") %> {gettext("No containers")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<.link patch={~p"/containers/new"} class="btn btn-primary"> <.link patch={~p"/containers/new"} class="btn btn-primary">
<%= dgettext("actions", "Add your first container!") %> {dgettext("actions", "Add your first container!")}
</.link> </.link>
<% else %> <% else %>
<.link patch={~p"/containers/new"} class="btn btn-primary"> <.link patch={~p"/containers/new"} class="btn btn-primary">
<%= dgettext("actions", "New Container") %> {dgettext("actions", "New Container")}
</.link> </.link>
<div class="flex flex-col justify-center items-center space-y-4 w-full max-w-2xl sm:flex-row sm:space-y-0 sm:space-x-4"> <div class="flex flex-col flex-wrap justify-center items-center space-y-4 w-full sm:flex-row sm:space-y-0 sm:space-x-4">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
@ -26,26 +26,26 @@
phx-submit="search" phx-submit="search"
class="flex items-center grow" class="flex items-center grow"
> >
<%= text_input(f, :search_term, {text_input(f, :search_term,
class: "grow input input-primary", class: "grow input input-primary",
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Search containers"), placeholder: gettext("Search containers"),
role: "search", role: "search",
value: @search value: @search
) %> )}
</.form> </.form>
<.toggle_button action="toggle_table" value={@view_table}> <.toggle_button action="toggle_table" value={@view_table}>
<span class="text-lg title text-primary-600"> <span class="text-lg title text-primary-600">
<%= gettext("View as table") %> {gettext("View as table")}
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>
<%= if @containers |> Enum.empty?() do %> <%= if @containers |> Enum.empty?() do %>
<h2 class="text-xl title text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No containers") %> {gettext("No containers")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<% else %> <% else %>
<%= if @view_table do %> <%= if @view_table do %>
@ -57,16 +57,16 @@
current_user={@current_user} current_user={@current_user}
> >
<:range :let={container}> <:range :let={container}>
<div class="flex justify-center items-center px-4 py-2 h-full min-w-20 flex-wrap"> <div class="flex flex-wrap justify-center items-center px-4 py-2 h-full min-w-20">
<button <button
type="button" type="button"
class="mx-2 my-1 text-sm btn btn-primary" class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged" phx-click="toggle_staged"
phx-value-container_id={container.id} phx-value-container_id={container.id}
> >
<%= if container.staged, {if container.staged,
do: dgettext("actions", "Unstage"), do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %> else: dgettext("actions", "Stage")}
</button> </button>
</div> </div>
</:range> </:range>

View File

@ -1,31 +1,31 @@
<div class="flex flex-col justify-center items-center space-y-4"> <div class="flex flex-col justify-center items-center space-y-4">
<h1 class="text-2xl title title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= @container.name %> {@container.name}
</h1> </h1>
<span :if={@container.desc} class="text-lg rounded-lg title"> <span :if={@container.desc} class="text-lg rounded-lg title">
<%= gettext("Description:") %> {gettext("Description:")}
<%= @container.desc %> {@container.desc}
</span> </span>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Type:") %> {gettext("Type:")}
<%= @container.type %> {@container.type}
</span> </span>
<span :if={@container.location} class="text-lg rounded-lg title"> <span :if={@container.location} class="text-lg rounded-lg title">
<%= gettext("Location:") %> {gettext("Location:")}
<%= @container.location %> {@container.location}
</span> </span>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Packs:") %> {gettext("Packs:")}
<%= @packs_count %> {@packs_count}
</span> </span>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Rounds:") %> {gettext("Rounds:")}
<%= @round_count %> {@round_count}
</span> </span>
<div class="flex justify-center items-center space-x-4 text-primary-600"> <div class="flex justify-center items-center space-x-4 text-primary-600">
@ -54,9 +54,9 @@
<div class="flex flex-wrap justify-center items-center text-primary-600"> <div class="flex flex-wrap justify-center items-center text-primary-600">
<button type="button" class="mx-4 my-2 btn btn-primary" phx-click="toggle_staged"> <button type="button" class="mx-4 my-2 btn btn-primary" phx-click="toggle_staged">
<%= if @container.staged, {if @container.staged,
do: dgettext("actions", "Unstage from range"), do: dgettext("actions", "Unstage from range"),
else: dgettext("actions", "Stage for range") %> else: dgettext("actions", "Stage for range")}
</button> </button>
</div> </div>
@ -65,12 +65,12 @@
<%= if @container.tags |> Enum.empty?() do %> <%= if @container.tags |> Enum.empty?() do %>
<div class="flex flex-row justify-center items-center space-x-4"> <div class="flex flex-row justify-center items-center space-x-4">
<h2 class="text-lg title text-primary-600"> <h2 class="text-lg title text-primary-600">
<%= gettext("No tags for this container") %> {gettext("No tags for this container")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<.link patch={~p"/container/edit_tags/#{@container}"} class="btn btn-primary"> <.link patch={~p"/container/edit_tags/#{@container}"} class="btn btn-primary">
<%= dgettext("actions", "Why not add one?") %> {dgettext("actions", "Why not add one?")}
</.link> </.link>
</div> </div>
<% else %> <% else %>
@ -96,9 +96,9 @@
phx-submit="change_class" phx-submit="change_class"
class="flex items-center" class="flex items-center"
> >
<%= label(f, :class, gettext("Class"), class: "title text-primary-600 text-lg text-center") %> {label(f, :class, gettext("Class"), class: "title text-primary-600 text-lg text-center")}
<%= select( {select(
f, f,
:class, :class,
[ [
@ -107,14 +107,14 @@
{gettext("Shotgun"), :shotgun}, {gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol} {gettext("Pistol"), :pistol}
], ],
class: "mx-2 my-1 min-w-md input input-primary", class: "mx-2 my-1 min-w-20 input input-primary",
value: @class value: @class
) %> )}
</.form> </.form>
<.toggle_button action="toggle_table" value={@view_table}> <.toggle_button action="toggle_table" value={@view_table}>
<span class="text-lg title text-primary-600"> <span class="text-lg title text-primary-600">
<%= gettext("View as table") %> {gettext("View as table")}
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>
@ -122,7 +122,7 @@
<div class="p-4 w-full"> <div class="p-4 w-full">
<%= if @packs |> Enum.empty?() do %> <%= if @packs |> Enum.empty?() do %>
<h2 class="mx-4 text-lg text-center title text-primary-600"> <h2 class="mx-4 text-lg text-center title text-primary-600">
<%= gettext("No ammo in this container") %> {gettext("No ammo in this container")}
</h2> </h2>
<% else %> <% else %>
<%= if @view_table do %> <%= if @view_table do %>
@ -135,7 +135,7 @@
> >
<:type :let={%{name: type_name} = type}> <:type :let={%{name: type_name} = type}>
<.link navigate={~p"/type/#{type}"} class="link"> <.link navigate={~p"/type/#{type}"} class="link">
<%= type_name %> {type_name}
</.link> </.link>
</:type> </:type>
<:actions :let={%{count: pack_count} = pack}> <:actions :let={%{count: pack_count} = pack}>

View File

@ -7,11 +7,11 @@
/> />
<h1 class="title text-primary-600 text-2xl"> <h1 class="title text-primary-600 text-2xl">
<%= gettext("Welcome to Cannery") %> {gettext("Welcome to Cannery")}
</h1> </h1>
<h2 class="title text-primary-600 text-lg"> <h2 class="title text-primary-600 text-lg">
<%= gettext("The self-hosted firearm tracker website") %> {gettext("The self-hosted firearm tracker website")}
</h2> </h2>
<hr class="hr" /> <hr class="hr" />
@ -19,29 +19,29 @@
<ul class="flex flex-col space-y-4 text-center"> <ul class="flex flex-col space-y-4 text-center">
<li class="flex flex-col justify-center items-center space-y-2"> <li class="flex flex-col justify-center items-center space-y-2">
<b class="whitespace-nowrap"> <b class="whitespace-nowrap">
<%= gettext("Easy to Use:") %> {gettext("Easy to Use:")}
</b> </b>
<p> <p>
<%= gettext( {gettext(
"Cannery lets you easily keep an eye on your ammo levels before and after range day" "Cannery lets you easily keep an eye on your ammo levels before and after range day"
) %> )}
</p> </p>
</li> </li>
<li class="flex flex-col justify-center items-center space-y-2"> <li class="flex flex-col justify-center items-center space-y-2">
<b class="whitespace-nowrap"> <b class="whitespace-nowrap">
<%= gettext("Secure:") %> {gettext("Secure:")}
</b> </b>
<p> <p>
<%= gettext("Self-host your own instance, or use an instance from someone you trust.") %> {gettext("Self-host your own instance, or use an instance from someone you trust.")}
<%= gettext("Your data stays with you, period") %> {gettext("Your data stays with you, period")}
</p> </p>
</li> </li>
<li class="flex flex-col justify-center items-center space-y-2"> <li class="flex flex-col justify-center items-center space-y-2">
<b class="whitespace-nowrap"> <b class="whitespace-nowrap">
<%= gettext("Simple:") %> {gettext("Simple:")}
</b> </b>
<p> <p>
<%= gettext("Access from any internet-capable device") %> {gettext("Access from any internet-capable device")}
</p> </p>
</li> </li>
</ul> </ul>
@ -50,17 +50,17 @@
<ul class="flex flex-col space-y-2 text-center justify-center"> <ul class="flex flex-col space-y-2 text-center justify-center">
<h2 class="title text-primary-600 text-lg"> <h2 class="title text-primary-600 text-lg">
<%= gettext("Instance Information") %> {gettext("Instance Information")}
</h2> </h2>
<li class="flex flex-col justify-center space-x-2"> <li class="flex flex-col justify-center space-x-2">
<b> <b>
<%= gettext("Admins:") %> {gettext("Admins:")}
</b> </b>
<p> <p>
<%= if @admins |> Enum.empty?() do %> <%= if @admins |> Enum.empty?() do %>
<.link href={~p"/users/register"} class="hover:underline"> <.link href={~p"/users/register"} class="hover:underline">
<%= dgettext("prompts", "Register to setup Cannery") %> {dgettext("prompts", "Register to setup Cannery")}
</.link> </.link>
<% else %> <% else %>
<div class="flex flex-wrap justify-center space-x-2"> <div class="flex flex-wrap justify-center space-x-2">
@ -69,7 +69,7 @@
class="hover:underline" class="hover:underline"
href={"mailto:#{email}"} href={"mailto:#{email}"}
> >
<%= email %> {email}
</.link> </.link>
</div> </div>
<% end %> <% end %>
@ -77,17 +77,17 @@
</li> </li>
<li class="flex flex-row justify-center space-x-2"> <li class="flex flex-row justify-center space-x-2">
<b><%= gettext("Registration:") %></b> <b>{gettext("Registration:")}</b>
<p> <p>
<%= case Accounts.registration_mode() do {case Accounts.registration_mode() do
:public -> gettext("Public Signups") :public -> gettext("Public Signups")
:invite_only -> gettext("Invite Only") :invite_only -> gettext("Invite Only")
end %> end}
</p> </p>
</li> </li>
<li class="flex flex-row justify-center items-center space-x-2"> <li class="flex flex-row justify-center items-center space-x-2">
<b><%= gettext("Version:") %></b> <b>{gettext("Version:")}</b>
<.link <.link
href="https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/CHANGELOG.md" href="https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/CHANGELOG.md"
class="flex flex-row justify-center items-center space-x-2 hover:underline" class="flex flex-row justify-center items-center space-x-2 hover:underline"
@ -95,7 +95,7 @@
rel="noopener noreferrer" rel="noopener noreferrer"
> >
<p> <p>
<%= @version %> {@version}
</p> </p>
<i class="fas fa-md fa-info-circle"></i> <i class="fas fa-md fa-info-circle"></i>
</.link> </.link>
@ -106,7 +106,7 @@
<ul class="flex flex-col space-y-2 text-center justify-center"> <ul class="flex flex-col space-y-2 text-center justify-center">
<h2 class="title text-primary-600 text-lg"> <h2 class="title text-primary-600 text-lg">
<%= gettext("Get involved!") %> {gettext("Get involved!")}
</h2> </h2>
<li class="flex flex-col justify-center space-x-2"> <li class="flex flex-col justify-center space-x-2">
@ -116,7 +116,7 @@
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
<p><%= gettext("View the source code") %></p> <p>{gettext("View the source code")}</p>
<i class="fas fa-md fa-code"></i> <i class="fas fa-md fa-code"></i>
</.link> </.link>
</li> </li>
@ -127,7 +127,7 @@
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
<p><%= gettext("Help translate") %></p> <p>{gettext("Help translate")}</p>
<i class="fas fa-md fa-language"></i> <i class="fas fa-md fa-language"></i>
</.link> </.link>
</li> </li>
@ -138,7 +138,7 @@
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
<p><%= gettext("Report bugs or request features") %></p> <p>{gettext("Report bugs or request features")}</p>
<i class="fas fa-md fa-spider"></i> <i class="fas fa-md fa-spider"></i>
</.link> </.link>
</li> </li>

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<.form <.form
:let={f} :let={f}
@ -15,29 +15,29 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> {changeset_errors(@changeset)}
</div> </div>
<%= label(f, :name, gettext("Name"), {label(f, :name, gettext("Name"),
class: "title text-lg text-primary-600", class: "title text-lg text-primary-600",
maxlength: 255 maxlength: 255
) %> )}
<%= text_input(f, :name, {text_input(f, :name,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :name, "col-span-3") %> {error_tag(f, :name, "col-span-3")}
<%= label(f, :uses_left, gettext("Uses left"), class: "title text-lg text-primary-600") %> {label(f, :uses_left, gettext("Uses left"), class: "title text-lg text-primary-600")}
<%= number_input(f, :uses_left, min: 0, class: "input input-primary col-span-2") %> {number_input(f, :uses_left, min: 0, class: "input input-primary col-span-2")}
<%= error_tag(f, :uses_left, "col-span-3") %> {error_tag(f, :uses_left, "col-span-3")}
<span class="col-span-3 text-primary-400 italic text-center"> <span class="col-span-3 text-primary-400 italic text-center">
<%= gettext(~s/Leave "Uses left" blank to make invite unlimited/) %> {gettext(~s/Leave "Uses left" blank to make invite unlimited/)}
</span> </span>
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
class: "mx-auto btn btn-primary col-span-3", class: "mx-auto btn btn-primary col-span-3",
phx_disable_with: dgettext("prompts", "Saving...") phx_disable_with: dgettext("prompts", "Saving...")
) %> )}
</.form> </.form>
</div> </div>

View File

@ -1,20 +1,20 @@
<div class="flex flex-col justify-center items-center mx-auto space-y-4 max-w-3xl"> <div class="flex flex-col justify-center items-center mx-auto space-y-4 max-w-3xl">
<h1 class="text-2xl title title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= gettext("Invites") %> {gettext("Invites")}
</h1> </h1>
<%= if @invites |> Enum.empty?() do %> <%= if @invites |> Enum.empty?() do %>
<h1 class="text-xl title text-primary-600"> <h1 class="text-xl title text-primary-600">
<%= gettext("No invites") %> {gettext("No invites")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h1> </h1>
<.link patch={~p"/invites/new"} class="btn btn-primary"> <.link patch={~p"/invites/new"} class="btn btn-primary">
<%= dgettext("actions", "Invite someone new!") %> {dgettext("actions", "Invite someone new!")}
</.link> </.link>
<% else %> <% else %>
<.link patch={~p"/invites/new"} class="btn btn-primary"> <.link patch={~p"/invites/new"} class="btn btn-primary">
<%= dgettext("actions", "Create Invite") %> {dgettext("actions", "Create Invite")}
</.link> </.link>
<% end %> <% end %>
@ -35,7 +35,7 @@
dgettext("actions", "Copy invite link for %{invite_name}", invite_name: invite.name) dgettext("actions", "Copy invite link for %{invite_name}", invite_name: invite.name)
} }
> >
<%= dgettext("actions", "Copy to clipboard") %> {dgettext("actions", "Copy to clipboard")}
</button> </button>
</form> </form>
</:code_actions> </:code_actions>
@ -72,7 +72,7 @@
phx-click={if invite.disabled_at, do: "enable_invite", else: "disable_invite"} phx-click={if invite.disabled_at, do: "enable_invite", else: "disable_invite"}
phx-value-id={invite.id} phx-value-id={invite.id}
> >
<%= if invite.disabled_at, do: gettext("Enable"), else: gettext("Disable") %> {if invite.disabled_at, do: gettext("Enable"), else: gettext("Disable")}
</.link> </.link>
<.link <.link
@ -87,7 +87,7 @@
) )
} }
> >
<%= dgettext("actions", "Set Unlimited") %> {dgettext("actions", "Set Unlimited")}
</.link> </.link>
</.invite_card> </.invite_card>
</div> </div>
@ -96,7 +96,7 @@
<hr class="hr" /> <hr class="hr" />
<h1 class="text-2xl title text-primary-600"> <h1 class="text-2xl title text-primary-600">
<%= gettext("Admins") %> {gettext("Admins")}
</h1> </h1>
<div class="flex flex-col justify-center items-stretch space-y-4"> <div class="flex flex-col justify-center items-stretch space-y-4">
@ -124,7 +124,7 @@
<hr class="hr" /> <hr class="hr" />
<h1 class="text-2xl title text-primary-600"> <h1 class="text-2xl title text-primary-600">
<%= gettext("Users") %> {gettext("Users")}
</h1> </h1>
<div class="flex flex-col justify-center items-stretch space-y-4"> <div class="flex flex-col justify-center items-stretch space-y-4">

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<.form <.form
@ -16,11 +16,11 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> {changeset_errors(@changeset)}
</div> </div>
<%= label(f, :class, gettext("Class"), class: "title text-lg text-primary-600") %> {label(f, :class, gettext("Class"), class: "title text-lg text-primary-600")}
<%= select( {select(
f, f,
:class, :class,
[ [
@ -31,86 +31,86 @@
], ],
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
value: @class value: @class
) %> )}
<%= error_tag(f, :class, "col-span-3 text-center") %> {error_tag(f, :class, "col-span-3 text-center")}
<%= label(f, :type_id, gettext("Type"), class: "title text-lg text-primary-600") %> {label(f, :type_id, gettext("Type"), class: "title text-lg text-primary-600")}
<%= select(f, :type_id, type_options(@types, @class), {select(f, :type_id, type_options(@types, @class),
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
id: "pack-form-type-select", id: "pack-form-type-select",
phx_hook: "SlimSelect" phx_hook: "SlimSelect"
) %> )}
<%= error_tag(f, :type_id, "col-span-3 text-center") %> {error_tag(f, :type_id, "col-span-3 text-center")}
<%= label(f, :count, gettext("Count"), class: "title text-lg text-primary-600") %> {label(f, :count, gettext("Count"), class: "title text-lg text-primary-600")}
<%= number_input(f, :count, {number_input(f, :count,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
min: 0 min: 0
) %> )}
<%= error_tag(f, :count, "col-span-3 text-center") %> {error_tag(f, :count, "col-span-3 text-center")}
<%= label(f, :price_paid, gettext("Price paid"), class: "title text-lg text-primary-600") %> {label(f, :price_paid, gettext("Price paid"), class: "title text-lg text-primary-600")}
<%= number_input(f, :price_paid, {number_input(f, :price_paid,
step: 0.01, step: 0.01,
class: "text-center col-span-2 input input-primary" class: "text-center col-span-2 input input-primary"
) %> )}
<%= error_tag(f, :price_paid, "col-span-3 text-center") %> {error_tag(f, :price_paid, "col-span-3 text-center")}
<%= label(f, :lot_number, gettext("Lot number"), class: "title text-lg text-primary-600") %> {label(f, :lot_number, gettext("Lot number"), class: "title text-lg text-primary-600")}
<%= text_input(f, :lot_number, {text_input(f, :lot_number,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :price_paid, "col-span-3 text-center") %> {error_tag(f, :price_paid, "col-span-3 text-center")}
<%= label(f, :purchased_on, gettext("Purchased on"), class: "title text-lg text-primary-600") %> {label(f, :purchased_on, gettext("Purchased on"), class: "title text-lg text-primary-600")}
<%= date_input(f, :purchased_on, {date_input(f, :purchased_on,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
phx_update: "ignore", phx_update: "ignore",
value: @changeset |> Changeset.get_field(:purchased_on) || Date.utc_today() value: @changeset |> Changeset.get_field(:purchased_on) || Date.utc_today()
) %> )}
<%= error_tag(f, :purchased_on, "col-span-3 text-center") %> {error_tag(f, :purchased_on, "col-span-3 text-center")}
<%= label(f, :notes, gettext("Notes"), class: "title text-lg text-primary-600") %> {label(f, :notes, gettext("Notes"), class: "title text-lg text-primary-600")}
<%= textarea(f, :notes, {textarea(f, :notes,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
id: "pack-form-notes", id: "pack-form-notes",
phx_debounce: 300, phx_debounce: 300,
phx_update: "ignore" phx_update: "ignore"
) %> )}
<%= error_tag(f, :notes, "col-span-3 text-center") %> {error_tag(f, :notes, "col-span-3 text-center")}
<%= label(f, :container, gettext("Container"), class: "title text-lg text-primary-600") %> {label(f, :container, gettext("Container"), class: "title text-lg text-primary-600")}
<%= select(f, :container_id, container_options(@containers), {select(f, :container_id, container_options(@containers),
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
id: "pack-form-container-select", id: "pack-form-container-select",
phx_hook: "SlimSelect" phx_hook: "SlimSelect"
) %> )}
<%= error_tag(f, :container_id, "col-span-3 text-center") %> {error_tag(f, :container_id, "col-span-3 text-center")}
<%= case @action do %> <%= case @action do %>
<% action when action in [:new, :clone] -> %> <% action when action in [:new, :clone] -> %>
<hr class="hr col-span-3" /> <hr class="hr col-span-3" />
<%= label(f, :multiplier, gettext("Copies"), class: "title text-lg text-primary-600") %> {label(f, :multiplier, gettext("Copies"), class: "title text-lg text-primary-600")}
<%= number_input(f, :multiplier, {number_input(f, :multiplier,
class: "text-center input input-primary", class: "text-center input input-primary",
value: 1, value: 1,
phx_update: "ignore" phx_update: "ignore"
) %> )}
<%= submit(dgettext("actions", "Create"), {submit(dgettext("actions", "Create"),
phx_disable_with: dgettext("prompts", "Creating..."), phx_disable_with: dgettext("prompts", "Creating..."),
class: "mx-auto btn btn-primary" class: "mx-auto btn btn-primary"
) %> )}
<%= error_tag(f, :multiplier, "col-span-3 text-center") %> {error_tag(f, :multiplier, "col-span-3 text-center")}
<% :edit -> %> <% :edit -> %>
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
phx_disable_with: dgettext("prompts", "Saving..."), phx_disable_with: dgettext("prompts", "Saving..."),
class: "mx-auto col-span-3 btn btn-primary" class: "mx-auto col-span-3 btn btn-primary"
) %> )}
<% end %> <% end %>
</.form> </.form>
</div> </div>

View File

@ -1,44 +1,44 @@
<div class="flex flex-col justify-center items-center space-y-8"> <div class="flex flex-col justify-center items-center space-y-8">
<h1 class="text-2xl title title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= gettext("Ammo") %> {gettext("Ammo")}
</h1> </h1>
<%= cond do %> <%= cond do %>
<% @containers_count == 0 -> %> <% @containers_count == 0 -> %>
<div class="flex justify-center items-center"> <div class="flex justify-center items-center">
<h2 class="m-2 title text-md text-primary-600"> <h2 class="m-2 title text-md text-primary-600">
<%= dgettext("prompts", "You'll need to") %> {dgettext("prompts", "You'll need to")}
</h2> </h2>
<.link navigate={~p"/containers/new"} class="btn btn-primary"> <.link navigate={~p"/containers/new"} class="btn btn-primary">
<%= dgettext("actions", "add a container first") %> {dgettext("actions", "add a container first")}
</.link> </.link>
</div> </div>
<% @types_count == 0 -> %> <% @types_count == 0 -> %>
<div class="flex justify-center items-center"> <div class="flex justify-center items-center">
<h2 class="m-2 title text-md text-primary-600"> <h2 class="m-2 title text-md text-primary-600">
<%= dgettext("prompts", "You'll need to") %> {dgettext("prompts", "You'll need to")}
</h2> </h2>
<.link navigate={~p"/catalog/new"} class="btn btn-primary"> <.link navigate={~p"/catalog/new"} class="btn btn-primary">
<%= dgettext("actions", "add a type first") %> {dgettext("actions", "add a type first")}
</.link> </.link>
</div> </div>
<% @packs_count == 0 -> %> <% @packs_count == 0 -> %>
<h2 class="text-xl title text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No ammo") %> {gettext("No ammo")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<.link patch={~p"/ammo/new"} class="btn btn-primary"> <.link patch={~p"/ammo/new"} class="btn btn-primary">
<%= dgettext("actions", "Add your first box!") %> {dgettext("actions", "Add your first box!")}
</.link> </.link>
<% true -> %> <% true -> %>
<.link patch={~p"/ammo/new"} class="btn btn-primary"> <.link patch={~p"/ammo/new"} class="btn btn-primary">
<%= dgettext("actions", "Add Ammo") %> {dgettext("actions", "Add Ammo")}
</.link> </.link>
<div class="flex flex-col justify-center items-center space-y-4 w-full max-w-2xl sm:flex-row sm:space-y-0 sm:space-x-4"> <div class="flex flex-col flex-wrap justify-center items-center space-y-4 w-full sm:flex-row sm:space-y-0 sm:space-x-4">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
@ -47,11 +47,9 @@
phx-submit="change_class" phx-submit="change_class"
class="flex items-center" class="flex items-center"
> >
<%= label(f, :class, gettext("Class"), {label(f, :class, gettext("Class"), class: "title text-primary-600 text-lg text-center")}
class: "title text-primary-600 text-lg text-center"
) %>
<%= select( {select(
f, f,
:class, :class,
[ [
@ -60,9 +58,9 @@
{gettext("Shotgun"), :shotgun}, {gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol} {gettext("Pistol"), :pistol}
], ],
class: "mx-2 my-1 min-w-md input input-primary", class: "mx-2 my-1 min-w-20 input input-primary",
value: @class value: @class
) %> )}
</.form> </.form>
<.form <.form
@ -73,26 +71,26 @@
phx-submit="search" phx-submit="search"
class="flex items-center grow" class="flex items-center grow"
> >
<%= text_input(f, :search_term, {text_input(f, :search_term,
class: "grow input input-primary", class: "grow input input-primary",
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Search ammo"), placeholder: gettext("Search ammo"),
role: "search", role: "search",
value: @search value: @search
) %> )}
</.form> </.form>
<.toggle_button action="toggle_show_used" value={@show_used}> <.toggle_button action="toggle_show_used" value={@show_used}>
<span class="text-lg title text-primary-600"> <span class="text-lg title text-primary-600">
<%= gettext("Show used") %> {gettext("Show used")}
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>
<%= if @packs |> Enum.empty?() do %> <%= if @packs |> Enum.empty?() do %>
<h2 class="text-xl title text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No Ammo") %> {gettext("No Ammo")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<% else %> <% else %>
<.live_component <.live_component
@ -104,7 +102,7 @@
> >
<:type :let={%{name: type_name} = type}> <:type :let={%{name: type_name} = type}>
<.link navigate={~p"/type/#{type}"} class="link"> <.link navigate={~p"/type/#{type}"} class="link">
<%= type_name %> {type_name}
</.link> </.link>
</:type> </:type>
<:range :let={pack}> <:range :let={pack}>
@ -113,18 +111,18 @@
patch={~p"/ammo/add_shot_record/#{pack}"} patch={~p"/ammo/add_shot_record/#{pack}"}
class="mx-2 my-1 text-sm btn btn-primary" class="mx-2 my-1 text-sm btn btn-primary"
> >
<%= dgettext("actions", "Record shots") %> {dgettext("actions", "Record shots")}
</.link> </.link>
</div> </div>
</:range> </:range>
<:container :let={{pack, %{name: container_name} = container}}> <:container :let={{pack, %{name: container_name} = container}}>
<div class="flex flex-wrap justify-center items-center px-4 py-2 h-full min-w-20"> <div class="flex flex-wrap justify-center items-center px-4 py-2 h-full min-w-20">
<.link navigate={~p"/container/#{container}"} class="mx-2 my-1 link"> <.link navigate={~p"/container/#{container}"} class="mx-2 my-1 link">
<%= container_name %> {container_name}
</.link> </.link>
<.link patch={~p"/ammo/move/#{pack}"} class="mx-2 my-1 text-sm btn btn-primary"> <.link patch={~p"/ammo/move/#{pack}"} class="mx-2 my-1 text-sm btn btn-primary">
<%= dgettext("actions", "Move ammo") %> {dgettext("actions", "Move ammo")}
</.link> </.link>
</div> </div>
</:container> </:container>

View File

@ -1,47 +1,47 @@
<div class="flex flex-col justify-center items-center mx-auto space-y-4 max-w-3xl"> <div class="flex flex-col justify-center items-center mx-auto space-y-4 max-w-3xl">
<h1 class="text-2xl title title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= @pack.type.name %> {@pack.type.name}
</h1> </h1>
<div class="flex flex-col justify-center items-center space-y-2"> <div class="flex flex-col justify-center items-center space-y-2">
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Count:") %> {gettext("Count:")}
<%= @pack.count %> {@pack.count}
</span> </span>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Original count:") %> {gettext("Original count:")}
<%= @original_count %> {@original_count}
</span> </span>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Percentage left:") %> {gettext("Percentage left:")}
<%= gettext("%{percentage}%", percentage: @percentage_remaining) %> {gettext("%{percentage}%", percentage: @percentage_remaining)}
</span> </span>
<%= if @pack.notes do %> <%= if @pack.notes do %>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Notes:") %> {gettext("Notes:")}
<%= @pack.notes %> {@pack.notes}
</span> </span>
<% end %> <% end %>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Purchased on:") %> {gettext("Purchased on:")}
<.date id={"#{@pack.id}-purchased-on"} date={@pack.purchased_on} /> <.date id={"#{@pack.id}-purchased-on"} date={@pack.purchased_on} />
</span> </span>
<%= if @pack.price_paid do %> <%= if @pack.price_paid do %>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Original cost:") %> {gettext("Original cost:")}
<%= gettext("$%{amount}", amount: display_currency(@pack.price_paid)) %> {gettext("$%{amount}", amount: display_currency(@pack.price_paid))}
</span> </span>
<span class="text-lg rounded-lg title"> <span class="text-lg rounded-lg title">
<%= gettext("Current value:") %> {gettext("Current value:")}
<%= gettext("$%{amount}", {gettext("$%{amount}",
amount: display_currency(@pack.price_paid * @percentage_remaining / 100) amount: display_currency(@pack.price_paid * @percentage_remaining / 100)
) %> )}
</span> </span>
<% end %> <% end %>
</div> </div>
@ -49,7 +49,7 @@
<div class="flex flex-col justify-center items-center"> <div class="flex flex-col justify-center items-center">
<div class="flex flex-wrap justify-center items-center text-primary-600"> <div class="flex flex-wrap justify-center items-center text-primary-600">
<.link navigate={~p"/type/#{@pack.type}"} class="mx-4 my-2 btn btn-primary"> <.link navigate={~p"/type/#{@pack.type}"} class="mx-4 my-2 btn btn-primary">
<%= dgettext("actions", "View in Catalog") %> {dgettext("actions", "View in Catalog")}
</.link> </.link>
<.link <.link
@ -77,11 +77,11 @@
<div class="flex flex-wrap justify-center items-center text-primary-600"> <div class="flex flex-wrap justify-center items-center text-primary-600">
<.link patch={~p"/ammo/show/move/#{@pack}"} class="btn btn-primary"> <.link patch={~p"/ammo/show/move/#{@pack}"} class="btn btn-primary">
<%= dgettext("actions", "Move ammo") %> {dgettext("actions", "Move ammo")}
</.link> </.link>
<.link patch={~p"/ammo/show/add_shot_record/#{@pack}"} class="mx-4 my-2 btn btn-primary"> <.link patch={~p"/ammo/show/add_shot_record/#{@pack}"} class="mx-4 my-2 btn btn-primary">
<%= dgettext("actions", "Record shots") %> {dgettext("actions", "Record shots")}
</.link> </.link>
</div> </div>
</div> </div>
@ -91,12 +91,12 @@
<div> <div>
<%= if @container do %> <%= if @container do %>
<h1 class="px-4 py-2 mb-4 text-xl text-center rounded-lg title"> <h1 class="px-4 py-2 mb-4 text-xl text-center rounded-lg title">
<%= gettext("Stored in") %> {gettext("Stored in")}
</h1> </h1>
<.container_card container={@container} current_user={@current_user} /> <.container_card container={@container} current_user={@current_user} />
<% else %> <% else %>
<%= gettext("This ammo is not in a container") %> {gettext("This ammo is not in a container")}
<% end %> <% end %>
</div> </div>
@ -104,7 +104,7 @@
<hr class="mb-4 w-full" /> <hr class="mb-4 w-full" />
<h1 class="px-4 py-2 mb-4 text-xl text-center rounded-lg title"> <h1 class="px-4 py-2 mb-4 text-xl text-center rounded-lg title">
<%= gettext("Rounds used") %> {gettext("Rounds used")}
</h1> </h1>
<.live_component <.live_component

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<.form <.form
@ -16,35 +16,35 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> {changeset_errors(@changeset)}
</div> </div>
<%= label(f, :count, gettext("Shots fired"), class: "title text-lg text-primary-600") %> {label(f, :count, gettext("Shots fired"), class: "title text-lg text-primary-600")}
<%= number_input(f, :count, {number_input(f, :count,
min: 1, min: 1,
max: @shot_record.count + @pack.count, max: @shot_record.count + @pack.count,
class: "input input-primary col-span-2" class: "input input-primary col-span-2"
) %> )}
<%= error_tag(f, :count, "col-span-3") %> {error_tag(f, :count, "col-span-3")}
<%= label(f, :notes, gettext("Notes"), class: "title text-lg text-primary-600") %> {label(f, :notes, gettext("Notes"), class: "title text-lg text-primary-600")}
<%= textarea(f, :notes, {textarea(f, :notes,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
id: "shot-record-form-notes", id: "shot-record-form-notes",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
phx_update: "ignore", phx_update: "ignore",
placeholder: gettext("Really great weather") placeholder: gettext("Really great weather")
) %> )}
<%= error_tag(f, :notes, "col-span-3") %> {error_tag(f, :notes, "col-span-3")}
<%= label(f, :date, gettext("Date"), class: "title text-lg text-primary-600") %> {label(f, :date, gettext("Date"), class: "title text-lg text-primary-600")}
<%= date_input(f, :date, class: "input input-primary col-span-2") %> {date_input(f, :date, class: "input input-primary col-span-2")}
<%= error_tag(f, :notes, "col-span-3") %> {error_tag(f, :notes, "col-span-3")}
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
class: "mx-auto btn btn-primary col-span-3", class: "mx-auto btn btn-primary col-span-3",
phx_disable_with: dgettext("prompts", "Saving...") phx_disable_with: dgettext("prompts", "Saving...")
) %> )}
</.form> </.form>
</div> </div>

View File

@ -1,20 +1,20 @@
<div class="flex flex-col justify-center items-center space-y-8"> <div class="flex flex-col justify-center items-center space-y-8">
<h1 class="text-2xl title title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= gettext("Range day") %> {gettext("Range day")}
</h1> </h1>
<%= if @containers |> Enum.empty?() do %> <%= if @containers |> Enum.empty?() do %>
<h1 class="text-xl title text-primary-600"> <h1 class="text-xl title text-primary-600">
<%= gettext("No containers staged") %> {gettext("No containers staged")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h1> </h1>
<.link navigate={~p"/containers"} class="btn btn-primary"> <.link navigate={~p"/containers"} class="btn btn-primary">
<%= dgettext("actions", "Why not get some ready to shoot?") %> {dgettext("actions", "Why not get some ready to shoot?")}
</.link> </.link>
<% else %> <% else %>
<.link navigate={~p"/containers"} class="btn btn-primary"> <.link navigate={~p"/containers"} class="btn btn-primary">
<%= dgettext("actions", "Stage containers") %> {dgettext("actions", "Stage containers")}
</.link> </.link>
<div class="flex flex-row flex-wrap justify-center items-stretch w-full"> <div class="flex flex-row flex-wrap justify-center items-stretch w-full">
@ -30,9 +30,9 @@
phx-click="toggle_staged" phx-click="toggle_staged"
phx-value-container_id={container_id} phx-value-container_id={container_id}
> >
<%= if container.staged, {if container.staged,
do: dgettext("actions", "Unstage"), do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %> else: dgettext("actions", "Stage")}
</button> </button>
</div> </div>
</.container_card> </.container_card>
@ -51,7 +51,7 @@
container={Map.fetch!(@containers, container_id)} container={Map.fetch!(@containers, container_id)}
> >
<.link patch={~p"/range/add_shot_record/#{pack}"} class="btn btn-primary"> <.link patch={~p"/range/add_shot_record/#{pack}"} class="btn btn-primary">
<%= dgettext("actions", "Record shots") %> {dgettext("actions", "Record shots")}
</.link> </.link>
</.pack_card> </.pack_card>
</div> </div>
@ -61,12 +61,12 @@
<%= if @shot_record_count == 0 do %> <%= if @shot_record_count == 0 do %>
<h1 class="text-xl title text-primary-600"> <h1 class="text-xl title text-primary-600">
<%= gettext("No shots recorded") %> {gettext("No shots recorded")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h1> </h1>
<% else %> <% else %>
<h1 class="text-2xl title text-primary-600"> <h1 class="text-2xl title text-primary-600">
<%= gettext("Shot log") %> {gettext("Shot log")}
</h1> </h1>
<canvas <canvas
@ -80,10 +80,10 @@
aria-label={gettext("Rounds shot chart")} aria-label={gettext("Rounds shot chart")}
role="img" role="img"
> >
<%= dgettext("errors", "Your browser does not support the canvas element.") %> {dgettext("errors", "Your browser does not support the canvas element.")}
</canvas> </canvas>
<div class="flex flex-col justify-center items-center space-y-4 w-full max-w-2xl sm:flex-row sm:space-y-0 sm:space-x-4"> <div class="flex flex-col flex-wrap justify-center items-center space-y-4 w-full sm:flex-row sm:space-y-0 sm:space-x-4">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
@ -92,11 +92,9 @@
phx-submit="change_class" phx-submit="change_class"
class="flex items-center" class="flex items-center"
> >
<%= label(f, :class, gettext("Class"), {label(f, :class, gettext("Class"), class: "title text-primary-600 text-lg text-center")}
class: "title text-primary-600 text-lg text-center"
) %>
<%= select( {select(
f, f,
:class, :class,
[ [
@ -105,9 +103,9 @@
{gettext("Shotgun"), :shotgun}, {gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol} {gettext("Pistol"), :pistol}
], ],
class: "mx-2 my-1 min-w-md input input-primary", class: "mx-2 my-1 min-w-20 input input-primary",
value: @class value: @class
) %> )}
</.form> </.form>
<.form <.form
@ -118,13 +116,13 @@
phx-submit="search" phx-submit="search"
class="flex items-center grow" class="flex items-center grow"
> >
<%= text_input(f, :search_term, {text_input(f, :search_term,
class: "grow input input-primary", class: "grow input input-primary",
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Search shot records"), placeholder: gettext("Search shot records"),
role: "search", role: "search",
value: @search value: @search
) %> )}
</.form> </.form>
<.form <.form
@ -135,9 +133,9 @@
phx-submit="change_dates" phx-submit="change_dates"
class="flex items-center" class="flex items-center"
> >
<%= label(f, :dates_start, gettext("Dates"), {label(f, :dates_start, gettext("Dates"),
class: "title text-primary-600 text-lg text-center" class: "title text-primary-600 text-lg text-center"
) %> )}
<.date_range name="dates" /> <.date_range name="dates" />
</.form> </.form>
@ -145,8 +143,8 @@
<%= if @shot_records |> Enum.empty?() do %> <%= if @shot_records |> Enum.empty?() do %>
<h1 class="text-xl title text-primary-600"> <h1 class="text-xl title text-primary-600">
<%= gettext("No shots recorded") %> {gettext("No shots recorded")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h1> </h1>
<% else %> <% else %>
<.live_component <.live_component

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<.form <.form
:let={f} :let={f}
@ -15,32 +15,32 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= changeset_errors(@changeset) %> {changeset_errors(@changeset)}
</div> </div>
<%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-600") %> {label(f, :name, gettext("Name"), class: "title text-lg text-primary-600")}
<%= text_input(f, :name, {text_input(f, :name,
class: "input input-primary col-span-2", class: "input input-primary col-span-2",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :name, "col-span-3") %> {error_tag(f, :name, "col-span-3")}
<%= label(f, :bg_color, gettext("Background color"), class: "title text-lg text-primary-600") %> {label(f, :bg_color, gettext("Background color"), class: "title text-lg text-primary-600")}
<span id="tag-bg-color-input" class="mx-auto col-span-2" phx-update="ignore"> <span id="tag-bg-color-input" class="mx-auto col-span-2" phx-update="ignore">
<%= color_input(f, :bg_color) %> {color_input(f, :bg_color)}
</span> </span>
<%= error_tag(f, :bg_color, "col-span-3") %> {error_tag(f, :bg_color, "col-span-3")}
<%= label(f, :text_color, gettext("Text color"), class: "title text-lg text-primary-600") %> {label(f, :text_color, gettext("Text color"), class: "title text-lg text-primary-600")}
<span id="tag-text-color-input" class="mx-auto col-span-2" phx-update="ignore"> <span id="tag-text-color-input" class="mx-auto col-span-2" phx-update="ignore">
<%= color_input(f, :text_color) %> {color_input(f, :text_color)}
</span> </span>
<%= error_tag(f, :text_color, "col-span-3") %> {error_tag(f, :text_color, "col-span-3")}
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
class: "mx-auto btn btn-primary col-span-3", class: "mx-auto btn btn-primary col-span-3",
phx_disable_with: dgettext("prompts", "Saving...") phx_disable_with: dgettext("prompts", "Saving...")
) %> )}
</.form> </.form>
</div> </div>

View File

@ -1,47 +1,47 @@
<div class="flex flex-col space-y-8 justify-center items-center"> <div class="flex flex-col justify-center items-center space-y-8">
<h1 class="title text-2xl title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= gettext("Tags") %> {gettext("Tags")}
</h1> </h1>
<p class="title text-md text-primary-600"> <p class="title text-md text-primary-600">
<%= gettext("Tags can be added to your containers to help you organize") %> {gettext("Tags can be added to your containers to help you organize")}
</p> </p>
<%= if @tags |> Enum.empty?() and @search |> is_nil() do %> <%= if @tags |> Enum.empty?() and @search |> is_nil() do %>
<h2 class="title text-xl text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No tags") %> {gettext("No tags")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<.link patch={~p"/tags/new"} class="btn btn-primary"> <.link patch={~p"/tags/new"} class="btn btn-primary">
<%= dgettext("actions", "Make your first tag!") %> {dgettext("actions", "Make your first tag!")}
</.link> </.link>
<% else %> <% else %>
<.link patch={~p"/tags/new"} class="btn btn-primary"> <.link patch={~p"/tags/new"} class="btn btn-primary">
<%= dgettext("actions", "New Tag") %> {dgettext("actions", "New Tag")}
</.link> </.link>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl"> <div class="flex flex-col flex-wrap justify-center items-center space-y-4 w-full sm:flex-row sm:space-y-0 sm:space-x-4">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
as={:search} as={:search}
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow flex items-center" class="flex items-center grow"
> >
<%= text_input(f, :search_term, {text_input(f, :search_term,
class: "grow input input-primary", class: "grow input input-primary",
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Search tags"), placeholder: gettext("Search tags"),
role: "search", role: "search",
value: @search value: @search
) %> )}
</.form> </.form>
</div> </div>
<%= if @tags |> Enum.empty?() do %> <%= if @tags |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No tags") %> {gettext("No tags")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<% else %> <% else %>
<div class="flex flex-row flex-wrap justify-center items-stretch"> <div class="flex flex-row flex-wrap justify-center items-stretch">

View File

@ -1,6 +1,6 @@
<div> <div>
<h2 class="mb-8 text-center title text-xl text-primary-600"> <h2 class="mb-8 text-center title text-xl text-primary-600">
<%= @title %> {@title}
</h2> </h2>
<.form <.form
:let={f} :let={f}
@ -15,11 +15,11 @@
:if={@changeset.action && not @changeset.valid?} :if={@changeset.action && not @changeset.valid?}
class="invalid-feedback col-span-3 text-center" class="invalid-feedback col-span-3 text-center"
> >
<%= dgettext("errors", "Oops, something went wrong! Please check the errors below.") %> {dgettext("errors", "Oops, something went wrong! Please check the errors below.")}
</div> </div>
<%= label(f, :class, gettext("Class"), class: "title text-lg text-primary-600") %> {label(f, :class, gettext("Class"), class: "title text-lg text-primary-600")}
<%= select( {select(
f, f,
:class, :class,
[ [
@ -29,44 +29,44 @@
], ],
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255 maxlength: 255
) %> )}
<%= error_tag(f, :class, "col-span-3 text-center") %> {error_tag(f, :class, "col-span-3 text-center")}
<%= label(f, :name, gettext("Name"), class: "title text-lg text-primary-600") %> {label(f, :name, gettext("Name"), class: "title text-lg text-primary-600")}
<%= text_input(f, :name, {text_input(f, :name,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :name, "col-span-3 text-center") %> {error_tag(f, :name, "col-span-3 text-center")}
<%= label(f, :desc, gettext("Description"), class: "title text-lg text-primary-600") %> {label(f, :desc, gettext("Description"), class: "title text-lg text-primary-600")}
<%= textarea(f, :desc, {textarea(f, :desc,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
id: "type-form-desc", id: "type-form-desc",
phx_debounce: 300, phx_debounce: 300,
phx_update: "ignore" phx_update: "ignore"
) %> )}
<%= error_tag(f, :desc, "col-span-3 text-center") %> {error_tag(f, :desc, "col-span-3 text-center")}
<h2 class="text-center title text-lg text-primary-600 col-span-3"> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Dimensions") %> {gettext("Dimensions")}
</h2> </h2>
<%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %> <%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %>
<%= label(f, :cartridge, gettext("Cartridge"), class: "title text-lg text-primary-600") %> {label(f, :cartridge, gettext("Cartridge"), class: "title text-lg text-primary-600")}
<%= text_input(f, :cartridge, {text_input(f, :cartridge,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("5.56x46mm NATO") placeholder: gettext("5.56x46mm NATO")
) %> )}
<%= error_tag(f, :cartridge, "col-span-3 text-center") %> {error_tag(f, :cartridge, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :cartridge, value: nil) %> {hidden_input(f, :cartridge, value: nil)}
<% end %> <% end %>
<%= label( {label(
f, f,
:caliber, :caliber,
if(Changeset.get_field(@changeset, :class) == :shotgun, if(Changeset.get_field(@changeset, :class) == :shotgun,
@ -74,66 +74,62 @@
else: gettext("Caliber") else: gettext("Caliber")
), ),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= text_input(f, :caliber, {text_input(f, :caliber,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext(".223") placeholder: gettext(".223")
) %> )}
<%= error_tag(f, :caliber, "col-span-3 text-center") %> {error_tag(f, :caliber, "col-span-3 text-center")}
<%= if Changeset.get_field(@changeset, :class) == :shotgun do %> <%= if Changeset.get_field(@changeset, :class) == :shotgun do %>
<%= label(f, :unfired_length, gettext("Unfired shell length"), {label(f, :unfired_length, gettext("Unfired shell length"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= text_input(f, :unfired_length, {text_input(f, :unfired_length,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :unfired_length, "col-span-3 text-center") %> {error_tag(f, :unfired_length, "col-span-3 text-center")}
<%= label(f, :brass_height, gettext("Brass height"), {label(f, :brass_height, gettext("Brass height"), class: "title text-lg text-primary-600")}
class: "title text-lg text-primary-600" {text_input(f, :brass_height,
) %>
<%= text_input(f, :brass_height,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :brass_height, "col-span-3 text-center") %> {error_tag(f, :brass_height, "col-span-3 text-center")}
<%= label(f, :chamber_size, gettext("Chamber size"), {label(f, :chamber_size, gettext("Chamber size"), class: "title text-lg text-primary-600")}
class: "title text-lg text-primary-600" {text_input(f, :chamber_size,
) %>
<%= text_input(f, :chamber_size,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :chamber_size, "col-span-3 text-center") %> {error_tag(f, :chamber_size, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :unfired_length, value: nil) %> {hidden_input(f, :unfired_length, value: nil)}
<%= hidden_input(f, :brass_height, value: nil) %> {hidden_input(f, :brass_height, value: nil)}
<%= hidden_input(f, :chamber_size, value: nil) %> {hidden_input(f, :chamber_size, value: nil)}
<% end %> <% end %>
<h2 class="text-center title text-lg text-primary-600 col-span-3"> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Projectile") %> {gettext("Projectile")}
</h2> </h2>
<%= label(f, :grains, gettext("Grains"), class: "title text-lg text-primary-600") %> {label(f, :grains, gettext("Grains"), class: "title text-lg text-primary-600")}
<%= number_input(f, :grains, {number_input(f, :grains,
step: "1", step: "1",
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
min: 1 min: 1
) %> )}
<%= error_tag(f, :grains, "col-span-3 text-center") %> {error_tag(f, :grains, "col-span-3 text-center")}
<%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %> <%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %>
<%= label f, :bullet_type, class: "flex title text-lg text-primary-600 space-x-2" do %> <%= label f, :bullet_type, class: "flex title text-lg text-primary-600 space-x-2" do %>
<p><%= gettext("Bullet type") %></p> <p>{gettext("Bullet type")}</p>
<.link <.link
href="https://shootersreference.com/reloadingdata/bullet_abbreviations/" href="https://shootersreference.com/reloadingdata/bullet_abbreviations/"
@ -144,18 +140,18 @@
<i class="fas fa-md fa-external-link-alt"></i> <i class="fas fa-md fa-external-link-alt"></i>
</.link> </.link>
<% end %> <% end %>
<%= text_input(f, :bullet_type, {text_input(f, :bullet_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("FMJ") placeholder: gettext("FMJ")
) %> )}
<%= error_tag(f, :bullet_type, "col-span-3 text-center") %> {error_tag(f, :bullet_type, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :bullet_type, value: nil) %> {hidden_input(f, :bullet_type, value: nil)}
<% end %> <% end %>
<%= label( {label(
f, f,
:bullet_core, :bullet_core,
if(Changeset.get_field(@changeset, :class) == :shotgun, if(Changeset.get_field(@changeset, :class) == :shotgun,
@ -163,229 +159,225 @@
else: gettext("Bullet core") else: gettext("Bullet core")
), ),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= text_input(f, :bullet_core, {text_input(f, :bullet_core,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Steel") placeholder: gettext("Steel")
) %> )}
<%= error_tag(f, :bullet_core, "col-span-3 text-center") %> {error_tag(f, :bullet_core, "col-span-3 text-center")}
<%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %> <%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %>
<%= label(f, :jacket_type, gettext("Jacket type"), class: "title text-lg text-primary-600") %> {label(f, :jacket_type, gettext("Jacket type"), class: "title text-lg text-primary-600")}
<%= text_input(f, :jacket_type, {text_input(f, :jacket_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Bimetal") placeholder: gettext("Bimetal")
) %> )}
<%= error_tag(f, :jacket_type, "col-span-3 text-center") %> {error_tag(f, :jacket_type, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :jacket_type, value: nil) %> {hidden_input(f, :jacket_type, value: nil)}
<% end %> <% end %>
<%= label(f, :case_material, gettext("Case material"), {label(f, :case_material, gettext("Case material"), class: "title text-lg text-primary-600")}
class: "title text-lg text-primary-600" {text_input(f, :case_material,
) %>
<%= text_input(f, :case_material,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Brass") placeholder: gettext("Brass")
) %> )}
<%= error_tag(f, :case_material, "col-span-3 text-center") %> {error_tag(f, :case_material, "col-span-3 text-center")}
<%= if Changeset.get_field(@changeset, :class) == :shotgun do %> <%= if Changeset.get_field(@changeset, :class) == :shotgun do %>
<%= label(f, :wadding, gettext("Wadding"), class: "title text-lg text-primary-600") %> {label(f, :wadding, gettext("Wadding"), class: "title text-lg text-primary-600")}
<%= text_input(f, :wadding, {text_input(f, :wadding,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :wadding, "col-span-3 text-center") %> {error_tag(f, :wadding, "col-span-3 text-center")}
<%= label(f, :shot_type, gettext("Shot type"), class: "title text-lg text-primary-600") %> {label(f, :shot_type, gettext("Shot type"), class: "title text-lg text-primary-600")}
<%= text_input(f, :shot_type, {text_input(f, :shot_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Target, bird, buck, etc") placeholder: gettext("Target, bird, buck, etc")
) %> )}
<%= error_tag(f, :shot_type, "col-span-3 text-center") %> {error_tag(f, :shot_type, "col-span-3 text-center")}
<%= label(f, :shot_material, gettext("Shot material"), {label(f, :shot_material, gettext("Shot material"), class: "title text-lg text-primary-600")}
class: "title text-lg text-primary-600" {text_input(f, :shot_material,
) %>
<%= text_input(f, :shot_material,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :shot_material, "col-span-3 text-center") %> {error_tag(f, :shot_material, "col-span-3 text-center")}
<%= label(f, :shot_size, gettext("Shot size"), class: "title text-lg text-primary-600") %> {label(f, :shot_size, gettext("Shot size"), class: "title text-lg text-primary-600")}
<%= text_input(f, :shot_size, {text_input(f, :shot_size,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :shot_size, "col-span-3 text-center") %> {error_tag(f, :shot_size, "col-span-3 text-center")}
<%= label(f, :load_grains, gettext("Load grains"), class: "title text-lg text-primary-600") %> {label(f, :load_grains, gettext("Load grains"), class: "title text-lg text-primary-600")}
<%= number_input(f, :load_grains, {number_input(f, :load_grains,
step: "1", step: "1",
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
min: 1 min: 1
) %> )}
<%= error_tag(f, :load_grains, "col-span-3 text-center") %> {error_tag(f, :load_grains, "col-span-3 text-center")}
<%= label(f, :shot_charge_weight, gettext("Shot charge weight"), {label(f, :shot_charge_weight, gettext("Shot charge weight"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= text_input(f, :shot_charge_weight, {text_input(f, :shot_charge_weight,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :shot_charge_weight, "col-span-3 text-center") %> {error_tag(f, :shot_charge_weight, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :wadding, value: nil) %> {hidden_input(f, :wadding, value: nil)}
<%= hidden_input(f, :shot_type, value: nil) %> {hidden_input(f, :shot_type, value: nil)}
<%= hidden_input(f, :shot_material, value: nil) %> {hidden_input(f, :shot_material, value: nil)}
<%= hidden_input(f, :shot_size, value: nil) %> {hidden_input(f, :shot_size, value: nil)}
<%= hidden_input(f, :load_grains, value: nil) %> {hidden_input(f, :load_grains, value: nil)}
<%= hidden_input(f, :shot_charge_weight, value: nil) %> {hidden_input(f, :shot_charge_weight, value: nil)}
<% end %> <% end %>
<h2 class="text-center title text-lg text-primary-600 col-span-3"> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Powder") %> {gettext("Powder")}
</h2> </h2>
<%= label(f, :powder_type, gettext("Powder type"), class: "title text-lg text-primary-600") %> {label(f, :powder_type, gettext("Powder type"), class: "title text-lg text-primary-600")}
<%= text_input(f, :powder_type, {text_input(f, :powder_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :powder_type, "col-span-3 text-center") %> {error_tag(f, :powder_type, "col-span-3 text-center")}
<%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %> <%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %>
<%= label(f, :powder_grains_per_charge, gettext("Powder grains per charge"), {label(f, :powder_grains_per_charge, gettext("Powder grains per charge"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= number_input(f, :powder_grains_per_charge, {number_input(f, :powder_grains_per_charge,
step: "1", step: "1",
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
min: 1 min: 1
) %> )}
<%= error_tag(f, :powder_grains_per_charge, "col-span-3 text-center") %> {error_tag(f, :powder_grains_per_charge, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :powder_grains_per_charge, value: nil) %> {hidden_input(f, :powder_grains_per_charge, value: nil)}
<% end %> <% end %>
<%= label(f, :pressure, gettext("Pressure"), class: "title text-lg text-primary-600") %> {label(f, :pressure, gettext("Pressure"), class: "title text-lg text-primary-600")}
<%= text_input(f, :pressure, {text_input(f, :pressure,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("+P") placeholder: gettext("+P")
) %> )}
<%= error_tag(f, :pressure, "col-span-3 text-center") %> {error_tag(f, :pressure, "col-span-3 text-center")}
<%= if Changeset.get_field(@changeset, :class) == :shotgun do %> <%= if Changeset.get_field(@changeset, :class) == :shotgun do %>
<%= label(f, :dram_equivalent, gettext("Dram equivalent"), {label(f, :dram_equivalent, gettext("Dram equivalent"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= text_input(f, :dram_equivalent, {text_input(f, :dram_equivalent,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :dram_equivalent, "col-span-3 text-center") %> {error_tag(f, :dram_equivalent, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :dram_equivalent, value: nil) %> {hidden_input(f, :dram_equivalent, value: nil)}
<% end %> <% end %>
<%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %> <%= if Changeset.get_field(@changeset, :class) in [:rifle, :pistol] do %>
<%= label(f, :muzzle_velocity, gettext("Muzzle velocity"), {label(f, :muzzle_velocity, gettext("Muzzle velocity"),
class: "title text-lg text-primary-600" class: "title text-lg text-primary-600"
) %> )}
<%= number_input(f, :muzzle_velocity, {number_input(f, :muzzle_velocity,
step: "1", step: "1",
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
min: 1 min: 1
) %> )}
<%= error_tag(f, :muzzle_velocity, "col-span-3 text-center") %> {error_tag(f, :muzzle_velocity, "col-span-3 text-center")}
<% else %> <% else %>
<%= hidden_input(f, :muzzle_velocity, value: nil) %> {hidden_input(f, :muzzle_velocity, value: nil)}
<% end %> <% end %>
<h2 class="text-center title text-lg text-primary-600 col-span-3"> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Primer") %> {gettext("Primer")}
</h2> </h2>
<%= label(f, :primer_type, gettext("Primer type"), class: "title text-lg text-primary-600") %> {label(f, :primer_type, gettext("Primer type"), class: "title text-lg text-primary-600")}
<%= text_input(f, :primer_type, {text_input(f, :primer_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Boxer") placeholder: gettext("Boxer")
) %> )}
<%= error_tag(f, :primer_type, "col-span-3 text-center") %> {error_tag(f, :primer_type, "col-span-3 text-center")}
<%= label(f, :firing_type, gettext("Firing type"), class: "title text-lg text-primary-600") %> {label(f, :firing_type, gettext("Firing type"), class: "title text-lg text-primary-600")}
<%= text_input(f, :firing_type, {text_input(f, :firing_type,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Centerfire") placeholder: gettext("Centerfire")
) %> )}
<%= error_tag(f, :firing_type, "col-span-3 text-center") %> {error_tag(f, :firing_type, "col-span-3 text-center")}
<h2 class="text-center title text-lg text-primary-600 col-span-3"> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Attributes") %> {gettext("Attributes")}
</h2> </h2>
<%= label(f, :tracer, gettext("Tracer"), class: "title text-lg text-primary-600") %> {label(f, :tracer, gettext("Tracer"), class: "title text-lg text-primary-600")}
<%= checkbox(f, :tracer, class: "text-center col-span-2 checkbox") %> {checkbox(f, :tracer, class: "text-center col-span-2 checkbox")}
<%= error_tag(f, :tracer, "col-span-3 text-center") %> {error_tag(f, :tracer, "col-span-3 text-center")}
<%= label(f, :incendiary, gettext("Incendiary"), class: "title text-lg text-primary-600") %> {label(f, :incendiary, gettext("Incendiary"), class: "title text-lg text-primary-600")}
<%= checkbox(f, :incendiary, class: "text-center col-span-2 checkbox") %> {checkbox(f, :incendiary, class: "text-center col-span-2 checkbox")}
<%= error_tag(f, :incendiary, "col-span-3 text-center") %> {error_tag(f, :incendiary, "col-span-3 text-center")}
<%= label(f, :blank, gettext("Blank"), class: "title text-lg text-primary-600") %> {label(f, :blank, gettext("Blank"), class: "title text-lg text-primary-600")}
<%= checkbox(f, :blank, class: "text-center col-span-2 checkbox") %> {checkbox(f, :blank, class: "text-center col-span-2 checkbox")}
<%= error_tag(f, :blank, "col-span-3 text-center") %> {error_tag(f, :blank, "col-span-3 text-center")}
<%= label(f, :corrosive, gettext("Corrosive"), class: "title text-lg text-primary-600") %> {label(f, :corrosive, gettext("Corrosive"), class: "title text-lg text-primary-600")}
<%= checkbox(f, :corrosive, class: "text-center col-span-2 checkbox") %> {checkbox(f, :corrosive, class: "text-center col-span-2 checkbox")}
<%= error_tag(f, :corrosive, "col-span-3 text-center") %> {error_tag(f, :corrosive, "col-span-3 text-center")}
<h2 class="text-center title text-lg text-primary-600 col-span-3"> <h2 class="text-center title text-lg text-primary-600 col-span-3">
<%= gettext("Manufacturer") %> {gettext("Manufacturer")}
</h2> </h2>
<%= label(f, :manufacturer, gettext("Manufacturer"), class: "title text-lg text-primary-600") %> {label(f, :manufacturer, gettext("Manufacturer"), class: "title text-lg text-primary-600")}
<%= text_input(f, :manufacturer, {text_input(f, :manufacturer,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :manufacturer, "col-span-3 text-center") %> {error_tag(f, :manufacturer, "col-span-3 text-center")}
<%= label(f, :upc, gettext("UPC"), class: "title text-lg text-primary-600") %> {label(f, :upc, gettext("UPC"), class: "title text-lg text-primary-600")}
<%= text_input(f, :upc, {text_input(f, :upc,
class: "text-center col-span-2 input input-primary", class: "text-center col-span-2 input input-primary",
maxlength: 255, maxlength: 255,
phx_debounce: 300 phx_debounce: 300
) %> )}
<%= error_tag(f, :upc, "col-span-3 text-center") %> {error_tag(f, :upc, "col-span-3 text-center")}
<%= submit(dgettext("actions", "Save"), {submit(dgettext("actions", "Save"),
phx_disable_with: dgettext("prompts", "Saving..."), phx_disable_with: dgettext("prompts", "Saving..."),
class: "mx-auto col-span-3 btn btn-primary" class: "mx-auto col-span-3 btn btn-primary"
) %> )}
</.form> </.form>
</div> </div>

View File

@ -1,23 +1,23 @@
<div class="flex flex-col space-y-8 justify-center items-center"> <div class="flex flex-col justify-center items-center space-y-8">
<h1 class="title text-2xl title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= gettext("Catalog") %> {gettext("Catalog")}
</h1> </h1>
<%= if @types_count == 0 do %> <%= if @types_count == 0 do %>
<h2 class="title text-xl text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No Types") %> {gettext("No Types")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<.link patch={~p"/catalog/new"} class="btn btn-primary"> <.link patch={~p"/catalog/new"} class="btn btn-primary">
<%= dgettext("actions", "Add your first type!") %> {dgettext("actions", "Add your first type!")}
</.link> </.link>
<% else %> <% else %>
<.link patch={~p"/catalog/new"} class="btn btn-primary"> <.link patch={~p"/catalog/new"} class="btn btn-primary">
<%= dgettext("actions", "New Type") %> {dgettext("actions", "New Type")}
</.link> </.link>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl"> <div class="flex flex-col flex-wrap justify-center items-center space-y-4 w-full sm:flex-row sm:space-y-0 sm:space-x-4">
<.form <.form
:let={f} :let={f}
for={%{}} for={%{}}
@ -26,11 +26,9 @@
phx-submit="change_class" phx-submit="change_class"
class="flex items-center" class="flex items-center"
> >
<%= label(f, :class, gettext("Class"), {label(f, :class, gettext("Class"), class: "title text-primary-600 text-lg text-center")}
class: "title text-primary-600 text-lg text-center"
) %>
<%= select( {select(
f, f,
:class, :class,
[ [
@ -39,9 +37,9 @@
{gettext("Shotgun"), :shotgun}, {gettext("Shotgun"), :shotgun},
{gettext("Pistol"), :pistol} {gettext("Pistol"), :pistol}
], ],
class: "mx-2 my-1 min-w-md input input-primary", class: "mx-2 my-1 min-w-20 input input-primary",
value: @class value: @class
) %> )}
</.form> </.form>
<.form <.form
@ -50,28 +48,28 @@
as={:search} as={:search}
phx-change="search" phx-change="search"
phx-submit="search" phx-submit="search"
class="grow flex items-center" class="flex items-center grow"
> >
<%= text_input(f, :search_term, {text_input(f, :search_term,
class: "grow input input-primary", class: "grow input input-primary",
phx_debounce: 300, phx_debounce: 300,
placeholder: gettext("Search catalog"), placeholder: gettext("Search catalog"),
role: "search", role: "search",
value: @search value: @search
) %> )}
</.form> </.form>
<.toggle_button action="toggle_show_used" value={@show_used}> <.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600"> <span class="text-lg title text-primary-600">
<%= gettext("Show used") %> {gettext("Show used")}
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>
<%= if @types |> Enum.empty?() do %> <%= if @types |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600"> <h2 class="text-xl title text-primary-600">
<%= gettext("No Types") %> {gettext("No Types")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<% else %> <% else %>
<.live_component <.live_component
@ -84,7 +82,7 @@
class={@class} class={@class}
> >
<:actions :let={type}> <:actions :let={type}>
<div class="px-4 py-2 space-x-4 flex justify-center items-center"> <div class="flex justify-center items-center px-4 py-2 space-x-4">
<.link <.link
navigate={~p"/type/#{type}"} navigate={~p"/type/#{type}"}
class="text-primary-600 link" class="text-primary-600 link"

View File

@ -1,18 +1,16 @@
<div class="space-y-4 flex flex-col justify-center items-center"> <div class="flex flex-col justify-center items-center space-y-4">
<h1 class="title text-2xl title-primary-500"> <h1 class="text-2xl title title-primary-500">
<%= @type.name %> {@type.name}
</h1> </h1>
<span <span
:if={@type.desc} :if={@type.desc}
class="max-w-2xl w-full px-8 py-4 rounded-lg class="px-8 py-4 w-full max-w-2xl text-lg text-center rounded-lg border title border-primary-600"
text-center title text-lg
border border-primary-600"
> >
<%= @type.desc %> {@type.desc}
</span> </span>
<div class="flex space-x-4 justify-center items-center text-primary-600"> <div class="flex justify-center items-center space-x-4 text-primary-600">
<.link <.link
patch={~p"/type/#{@type}/edit"} patch={~p"/type/#{@type}/edit"}
class="text-primary-600 link" class="text-primary-600 link"
@ -41,36 +39,36 @@
<hr class="hr" /> <hr class="hr" />
<%= if @type.class || @custom_fields? do %> <%= if @type.class || @custom_fields? do %>
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center"> <div class="grid gap-4 justify-center items-center text-center sm:grid-cols-2">
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Class") %> {gettext("Class")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= case @type.class do %> <%= case @type.class do %>
<% :shotgun -> %> <% :shotgun -> %>
<%= gettext("Shotgun") %> {gettext("Shotgun")}
<% :rifle -> %> <% :rifle -> %>
<%= gettext("Rifle") %> {gettext("Rifle")}
<% :pistol -> %> <% :pistol -> %>
<%= gettext("Pistol") %> {gettext("Pistol")}
<% _ -> %> <% _ -> %>
<%= gettext("None specified") %> {gettext("None specified")}
<% end %> <% end %>
</span> </span>
<%= for %{label: label, key: key, type: type} <- @fields_to_display do %> <%= for %{label: label, key: key, type: type} <- @fields_to_display do %>
<%= if @type |> Map.get(key) do %> <%= if @type |> Map.get(key) do %>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= label %> {label}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= case type do %> <%= case type do %>
<% :boolean -> %> <% :boolean -> %>
<%= @type |> Map.get(key) |> humanize() %> {@type |> Map.get(key) |> humanize()}
<% _ -> %> <% _ -> %>
<%= @type |> Map.get(key) %> {@type |> Map.get(key)}
<% end %> <% end %>
</span> </span>
<% end %> <% end %>
@ -80,61 +78,61 @@
<hr class="hr" /> <hr class="hr" />
<% end %> <% end %>
<div class="grid sm:grid-cols-2 gap-4 text-center justify-center items-center"> <div class="grid gap-4 justify-center items-center text-center sm:grid-cols-2">
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Rounds:") %> {gettext("Rounds:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= @rounds %> {@rounds}
</span> </span>
<%= if @show_used do %> <%= if @show_used do %>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Used rounds:") %> {gettext("Used rounds:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= @used_rounds %> {@used_rounds}
</span> </span>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Total ever rounds:") %> {gettext("Total ever rounds:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= @historical_round_count %> {@historical_round_count}
</span> </span>
<% end %> <% end %>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Packs:") %> {gettext("Packs:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= @packs_count %> {@packs_count}
</span> </span>
<%= if @show_used do %> <%= if @show_used do %>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Used packs:") %> {gettext("Used packs:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= @used_packs_count %> {@used_packs_count}
</span> </span>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Total ever packs:") %> {gettext("Total ever packs:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= @historical_packs_count %> {@historical_packs_count}
</span> </span>
<% end %> <% end %>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Added on:") %> {gettext("Added on:")}
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
@ -142,16 +140,16 @@
</span> </span>
<%= if @avg_cost_per_round do %> <%= if @avg_cost_per_round do %>
<h3 class="title text-lg"> <h3 class="text-lg title">
<%= gettext("Average CPR") %>: {gettext("Average CPR")}:
</h3> </h3>
<span class="text-primary-600"> <span class="text-primary-600">
<%= gettext("$%{amount}", amount: display_currency(@avg_cost_per_round)) %> {gettext("$%{amount}", amount: display_currency(@avg_cost_per_round))}
</span> </span>
<% else %> <% else %>
<h3 class="mx-8 my-4 title text-lg text-primary-600 col-span-2"> <h3 class="col-span-2 mx-8 my-4 text-lg title text-primary-600">
<%= gettext("No cost information") %> {gettext("No cost information")}
</h3> </h3>
<% end %> <% end %>
</div> </div>
@ -160,23 +158,23 @@
<div class="flex justify-center items-center space-x-4"> <div class="flex justify-center items-center space-x-4">
<.toggle_button action="toggle_show_used" value={@show_used}> <.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600"> <span class="text-lg title text-primary-600">
<%= gettext("Show used") %> {gettext("Show used")}
</span> </span>
</.toggle_button> </.toggle_button>
<.toggle_button action="toggle_table" value={@view_table}> <.toggle_button action="toggle_table" value={@view_table}>
<span class="title text-lg text-primary-600"> <span class="text-lg title text-primary-600">
<%= gettext("View as table") %> {gettext("View as table")}
</span> </span>
</.toggle_button> </.toggle_button>
</div> </div>
<div class="w-full p-4"> <div class="p-4 w-full">
<%= if @packs |> Enum.empty?() do %> <%= if @packs |> Enum.empty?() do %>
<h2 class="px-4 title text-lg text-primary-600"> <h2 class="px-4 text-lg title text-primary-600">
<%= gettext("No ammo for this type") %> {gettext("No ammo for this type")}
<%= display_emoji("😔") %> {display_emoji("😔")}
</h2> </h2>
<% else %> <% else %>
<%= if @view_table do %> <%= if @view_table do %>
@ -189,11 +187,11 @@
> >
<:container :let={{_pack, %{name: container_name} = container}}> <:container :let={{_pack, %{name: container_name} = container}}>
<.link navigate={~p"/container/#{container}"} class="mx-2 my-1 link"> <.link navigate={~p"/container/#{container}"} class="mx-2 my-1 link">
<%= container_name %> {container_name}
</.link> </.link>
</:container> </:container>
<:actions :let={%{count: pack_count} = pack}> <:actions :let={%{count: pack_count} = pack}>
<div class="py-2 px-4 h-full space-x-4 flex justify-center items-center"> <div class="flex justify-center items-center px-4 py-2 space-x-4 h-full">
<.link <.link
navigate={~p"/ammo/show/#{pack}"} navigate={~p"/ammo/show/#{pack}"}
class="text-primary-600 link" class="text-primary-600 link"

35
mix.exs
View File

@ -5,7 +5,7 @@ defmodule Cannery.MixProject do
[ [
app: :cannery, app: :cannery,
version: "0.9.13", version: "0.9.13",
elixir: "1.18.1", elixir: "1.18.3",
elixirc_paths: elixirc_paths(Mix.env()), elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod, start_permanent: Mix.env() == :prod,
aliases: aliases(), aliases: aliases(),
@ -46,13 +46,15 @@ defmodule Cannery.MixProject do
# Type `mix help deps` for examples and options. # Type `mix help deps` for examples and options.
defp deps do defp deps do
[ [
{:bandit, "~> 1.5"},
{:bcrypt_elixir, "~> 3.0"}, {:bcrypt_elixir, "~> 3.0"},
{:credo, "~> 1.5", only: [:dev, :test], runtime: false}, {:credo, "~> 1.5", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
{:dns_cluster, "~> 0.2"},
{:ecto_psql_extras, "~> 0.6"}, {:ecto_psql_extras, "~> 0.6"},
{:ecto_sql, "~> 3.6"}, {:ecto_sql, "~> 3.6"},
{:eqrcode, "~> 0.1.10"}, {:eqrcode, "~> 0.2"},
# {:esbuild, "~> 0.3", runtime: Mix.env() == :dev}, {:esbuild, "~> 0.8", runtime: Mix.env() == :dev},
{:ex_doc, "~> 0.27", only: :dev, runtime: false}, {:ex_doc, "~> 0.27", only: :dev, runtime: false},
{:floki, ">= 0.30.0", only: :test}, {:floki, ">= 0.30.0", only: :test},
{:gen_smtp, "~> 1.0"}, {:gen_smtp, "~> 1.0"},
@ -62,14 +64,15 @@ defmodule Cannery.MixProject do
{:phoenix_ecto, "~> 4.4"}, {:phoenix_ecto, "~> 4.4"},
{:phoenix_html_helpers, "~> 1.0"}, {:phoenix_html_helpers, "~> 1.0"},
{:phoenix_html, "~> 4.0"}, {:phoenix_html, "~> 4.0"},
{:phoenix_live_dashboard, "~> 0.8"}, {:phoenix_live_dashboard, "~> 0.8.3"},
{:phoenix_live_reload, "~> 1.2", only: :dev}, {:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_view, "~> 0.20.0"}, {:phoenix_live_view, "~> 1.0.0"},
{:phoenix, "~> 1.7.11"}, {:phoenix, "~> 1.7.19"},
{:plug_cowboy, "~> 2.7"}, {:plug_cowboy, "~> 2.7"},
{:postgrex, ">= 0.0.0"}, {:postgrex, ">= 0.0.0"},
{:swoosh, "~> 1.6"}, {:swoosh, "~> 1.6"},
{:telemetry_metrics, "~> 0.6"}, {:tailwind, "~> 0.2", runtime: Mix.env() == :dev},
{:telemetry_metrics, "~> 1.1"},
{:telemetry_poller, "~> 1.0"} {:telemetry_poller, "~> 1.0"}
] ]
end end
@ -82,17 +85,23 @@ defmodule Cannery.MixProject do
# See the documentation for `Mix` for more info on aliases. # See the documentation for `Mix` for more info on aliases.
defp aliases do defp aliases do
[ [
setup: ["deps.get", "compile", "ecto.setup", "cmd npm install --prefix assets"], "assets.build": ["tailwind cannery", "esbuild cannery"],
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], "assets.deploy": [
"tailwind cannery --minify",
"esbuild cannery --minify",
"phx.digest"
],
"assets.setup": ["tailwind.install --if-missing", "esbuild.install --if-missing"],
"ecto.reset": ["ecto.drop", "ecto.setup"], "ecto.reset": ["ecto.drop", "ecto.setup"],
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"format.all": [ "format.all": [
"cmd npm run format --prefix assets", "assets.build",
"format", "format",
"gettext.extract --merge", "gettext.extract --merge",
"gettext.merge --no-fuzzy priv/gettext" "gettext.merge --no-fuzzy priv/gettext"
], ],
"test.all": [ "test.all": [
"cmd npm run test --prefix assets", "assets.build",
"dialyzer", "dialyzer",
"credo --strict", "credo --strict",
"format --check-formatted", "format --check-formatted",
@ -101,7 +110,9 @@ defmodule Cannery.MixProject do
"ecto.create --quiet", "ecto.create --quiet",
"ecto.migrate --quiet", "ecto.migrate --quiet",
"test" "test"
] ],
setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"],
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"]
] ]
end end
end end

View File

@ -1,54 +1,60 @@
%{ %{
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.2.0", "feab711974beba4cb348147170346fe097eea2e840db4e012a145e180ed4ab75", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "563e92a6c77d667b19c5f4ba17ab6d440a085696bdf4c68b9b0f5b30bc5422b8"}, "bandit": {:hex, :bandit, "1.6.10", "ec218849b753b84ed52fb7f19f42bec4ab8b1ff3f74806c6525e4b53eafcad60", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "5c5e1d155cbdf98610197d2814934ef431e70b5fd4f487b19c341d9b49cc19a2"},
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.2.1", "e361261a0401d82dadc1ab7b969f91d250bf7577283e933fe8c5b72f8f5b3c46", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "81170177d5c2e280d12141a0b9d9e299bf731535e2d959982bdcd4cfe3c82865"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
"castore": {:hex, :castore, "1.0.11", "4bbd584741601eb658007339ea730b082cc61f3554cf2e8f39bf693a11b49073", [:mix], [], "hexpm", "e03990b4db988df56262852f20de0f659871c35154691427a5047f4967a16a62"}, "castore": {:hex, :castore, "1.0.12", "053f0e32700cbec356280c0e835df425a3be4bc1e0627b714330ad9d0f05497f", [:mix], [], "hexpm", "3dca286b2186055ba0c9449b4e95b97bf1b57b47c1f2644555879e659960c224"},
"comeonin": {:hex, :comeonin, "5.5.0", "364d00df52545c44a139bad919d7eacb55abf39e86565878e17cebb787977368", [:mix], [], "hexpm", "6287fc3ba0aad34883cbe3f7949fc1d1e738e5ccdce77165bc99490aa69f47fb"}, "comeonin": {:hex, :comeonin, "5.5.1", "5113e5f3800799787de08a6e0db307133850e635d34e9fab23c70b6501669510", [:mix], [], "hexpm", "65aac8f19938145377cee73973f192c5645873dcf550a8a6b18187d17c13ccdb"},
"cowboy": {:hex, :cowboy, "2.12.0", "f276d521a1ff88b2b9b4c54d0e753da6c66dd7be6c9fca3d9418b561828a3731", [:make, :rebar3], [{:cowlib, "2.13.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "8a7abe6d183372ceb21caa2709bec928ab2b72e18a3911aa1771639bef82651e"}, "cowboy": {:hex, :cowboy, "2.13.0", "09d770dd5f6a22cc60c071f432cd7cb87776164527f205c5a6b0f24ff6b38990", [:make, :rebar3], [{:cowlib, ">= 2.14.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, ">= 1.8.0 and < 3.0.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "e724d3a70995025d654c1992c7b11dbfea95205c047d86ff9bf1cda92ddc5614"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.13.0", "db8f7505d8332d98ef50a3ef34b34c1afddec7506e4ee4dd4a3a266285d282ca", [:make, :rebar3], [], "hexpm", "e1e1284dc3fc030a64b1ad0d8382ae7e99da46c3246b815318a4b848873800a4"}, "cowlib": {:hex, :cowlib, "2.14.0", "623791c56c1cc9df54a71a9c55147a401549917f00a2e48a6ae12b812c586ced", [:make, :rebar3], [], "hexpm", "0af652d1550c8411c3b58eed7a035a7fb088c0b86aff6bc504b0bc3b7f791aa2"},
"credo": {:hex, :credo, "1.7.11", "d3e805f7ddf6c9c854fd36f089649d7cf6ba74c42bc3795d587814e3c9847102", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "56826b4306843253a66e47ae45e98e7d284ee1f95d53d1612bb483f88a8cf219"}, "credo": {:hex, :credo, "1.7.11", "d3e805f7ddf6c9c854fd36f089649d7cf6ba74c42bc3795d587814e3c9847102", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "56826b4306843253a66e47ae45e98e7d284ee1f95d53d1612bb483f88a8cf219"},
"db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"},
"decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"},
"dialyxir": {:hex, :dialyxir, "1.4.5", "ca1571ac18e0f88d4ab245f0b60fa31ff1b12cbae2b11bd25d207f865e8ae78a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b0fb08bb8107c750db5c0b324fa2df5ceaa0f9307690ee3c1f6ba5b9eb5d35c3"}, "dialyxir": {:hex, :dialyxir, "1.4.5", "ca1571ac18e0f88d4ab245f0b60fa31ff1b12cbae2b11bd25d207f865e8ae78a", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b0fb08bb8107c750db5c0b324fa2df5ceaa0f9307690ee3c1f6ba5b9eb5d35c3"},
"earmark_parser": {:hex, :earmark_parser, "1.4.42", "f23d856f41919f17cd06a493923a722d87a2d684f143a1e663c04a2b93100682", [:mix], [], "hexpm", "6915b6ca369b5f7346636a2f41c6a6d78b5af419d61a611079189233358b8b8b"}, "dns_cluster": {:hex, :dns_cluster, "0.2.0", "aa8eb46e3bd0326bd67b84790c561733b25c5ba2fe3c7e36f28e88f384ebcb33", [:mix], [], "hexpm", "ba6f1893411c69c01b9e8e8f772062535a4cf70f3f35bcc964a324078d8c8240"},
"earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"},
"ecto": {:hex, :ecto, "3.12.5", "4a312960ce612e17337e7cefcf9be45b95a3be6b36b6f94dfb3d8c361d631866", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6eb18e80bef8bb57e17f5a7f068a1719fbda384d40fc37acb8eb8aeca493b6ea"}, "ecto": {:hex, :ecto, "3.12.5", "4a312960ce612e17337e7cefcf9be45b95a3be6b36b6f94dfb3d8c361d631866", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6eb18e80bef8bb57e17f5a7f068a1719fbda384d40fc37acb8eb8aeca493b6ea"},
"ecto_psql_extras": {:hex, :ecto_psql_extras, "0.8.3", "0c1df205bd051eaf599b3671e75356b121aa71eac09b63ecf921cb1a080c072e", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "> 0.16.0 and < 0.20.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1 or ~> 4.0.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "d0e35ea160359e759a2993a00c3a5389a9ca7ece6df5d0753fa927f988c7351a"}, "ecto_psql_extras": {:hex, :ecto_psql_extras, "0.8.7", "49943fe6bce07281fe3adfc2a23d3794e2acc644dfe98411cb5712ffecb6ad1a", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "> 0.16.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1 or ~> 4.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "ac0a0bce57ffe36b30fac2a2d0d427b04de016e6af5db6f4b41afa1241f39cda"},
"ecto_sql": {:hex, :ecto_sql, "3.12.1", "c0d0d60e85d9ff4631f12bafa454bc392ce8b9ec83531a412c12a0d415a3a4d0", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.12", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.19 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "aff5b958a899762c5f09028c847569f7dfb9cc9d63bdb8133bff8a5546de6bf5"}, "ecto_sql": {:hex, :ecto_sql, "3.12.1", "c0d0d60e85d9ff4631f12bafa454bc392ce8b9ec83531a412c12a0d415a3a4d0", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.12", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.19 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "aff5b958a899762c5f09028c847569f7dfb9cc9d63bdb8133bff8a5546de6bf5"},
"elixir_make": {:hex, :elixir_make, "0.9.0", "6484b3cd8c0cee58f09f05ecaf1a140a8c97670671a6a0e7ab4dc326c3109726", [:mix], [], "hexpm", "db23d4fd8b757462ad02f8aa73431a426fe6671c80b200d9710caf3d1dd0ffdb"}, "elixir_make": {:hex, :elixir_make, "0.9.0", "6484b3cd8c0cee58f09f05ecaf1a140a8c97670671a6a0e7ab4dc326c3109726", [:mix], [], "hexpm", "db23d4fd8b757462ad02f8aa73431a426fe6671c80b200d9710caf3d1dd0ffdb"},
"eqrcode": {:hex, :eqrcode, "0.1.10", "6294fece9d68ad64eef1c3c92cf111cfd6469f4fbf230a2d4cc905a682178f3f", [:mix], [], "hexpm", "da30e373c36a0fd37ab6f58664b16029919896d6c45a68a95cc4d713e81076f1"}, "eqrcode": {:hex, :eqrcode, "0.2.1", "d12838813e8fc87b8940cc05f9baadb189031f6009facdc56ff074375ec73b6e", [:mix], [], "hexpm", "d5828a222b904c68360e7dc2a40c3ef33a1328b7c074583898040f389f928025"},
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
"ex_doc": {:hex, :ex_doc, "0.36.1", "4197d034f93e0b89ec79fac56e226107824adcce8d2dd0a26f5ed3a95efc36b1", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "d7d26a7cf965dacadcd48f9fa7b5953d7d0cfa3b44fa7a65514427da44eafd89"}, "esbuild": {:hex, :esbuild, "0.9.0", "f043eeaca4932ca8e16e5429aebd90f7766f31ac160a25cbd9befe84f2bc068f", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b415027f71d5ab57ef2be844b2a10d0c1b5a492d431727f43937adce22ba45ae"},
"ex_doc": {:hex, :ex_doc, "0.37.3", "f7816881a443cd77872b7d6118e8a55f547f49903aef8747dbcb345a75b462f9", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "e6aebca7156e7c29b5da4daa17f6361205b2ae5f26e5c7d8ca0d3f7e18972233"},
"expo": {:hex, :expo, "1.1.0", "f7b9ed7fb5745ebe1eeedf3d6f29226c5dd52897ac67c0f8af62a07e661e5c75", [:mix], [], "hexpm", "fbadf93f4700fb44c331362177bdca9eeb8097e8b0ef525c9cc501cb9917c960"}, "expo": {:hex, :expo, "1.1.0", "f7b9ed7fb5745ebe1eeedf3d6f29226c5dd52897ac67c0f8af62a07e661e5c75", [:mix], [], "hexpm", "fbadf93f4700fb44c331362177bdca9eeb8097e8b0ef525c9cc501cb9917c960"},
"file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"},
"floki": {:hex, :floki, "0.37.0", "b83e0280bbc6372f2a403b2848013650b16640cd2470aea6701f0632223d719e", [:mix], [], "hexpm", "516a0c15a69f78c47dc8e0b9b3724b29608aa6619379f91b1ffa47109b5d0dd3"}, "floki": {:hex, :floki, "0.37.1", "d7aaee758c8a5b4a7495799a4260754fec5530d95b9c383c03b27359dea117cf", [:mix], [], "hexpm", "673d040cb594d31318d514590246b6dd587ed341d3b67e17c1c0eb8ce7ca6f04"},
"gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"}, "gen_smtp": {:hex, :gen_smtp, "1.2.0", "9cfc75c72a8821588b9b9fe947ae5ab2aed95a052b81237e0928633a13276fd3", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "5ee0375680bca8f20c4d85f58c2894441443a743355430ff33a783fe03296779"},
"gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"}, "gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"},
"hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
"makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"},
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"}, "mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"}, "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
"oban": {:hex, :oban, "2.18.3", "1608c04f8856c108555c379f2f56bc0759149d35fa9d3b825cb8a6769f8ae926", [:mix], [{:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "36ca6ca84ef6518f9c2c759ea88efd438a3c81d667ba23b02b062a0aa785475e"}, "oban": {:hex, :oban, "2.19.4", "045adb10db1161dceb75c254782f97cdc6596e7044af456a59decb6d06da73c1", [:mix], [{:ecto_sql, "~> 3.10", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ecto_sqlite3, "~> 0.9", [hex: :ecto_sqlite3, repo: "hexpm", optional: true]}, {:igniter, "~> 0.5", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5fcc6219e6464525b808d97add17896e724131f498444a292071bf8991c99f97"},
"phoenix": {:hex, :phoenix, "1.7.18", "5310c21443514be44ed93c422e15870aef254cf1b3619e4f91538e7529d2b2e4", [: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", "1797fcc82108442a66f2c77a643a62980f342bfeb63d6c9a515ab8294870004e"}, "phoenix": {:hex, :phoenix, "1.7.21", "14ca4f1071a5f65121217d6b57ac5712d1857e40a0833aff7a691b7870fc9a3b", [: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", "336dce4f86cba56fed312a7d280bf2282c720abb6074bdb1b61ec8095bdd0bc9"},
"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_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_html": {:hex, :phoenix_html, "4.2.1", "35279e2a39140068fc03f8874408d58eef734e488fc142153f055c5454fd1c08", [:mix], [], "hexpm", "cff108100ae2715dd959ae8f2a8cef8e20b593f8dfd031c9cba92702cf23e053"},
"phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"}, "phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.6", "7b1f0327f54c9eb69845fd09a77accf922f488c549a7e7b8618775eb603a62c7", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "1681ab813ec26ca6915beb3414aa138f298e17721dc6a2bde9e6eb8a62360ff6"}, "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.6", "7b1f0327f54c9eb69845fd09a77accf922f488c549a7e7b8618775eb603a62c7", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "1681ab813ec26ca6915beb3414aa138f298e17721dc6a2bde9e6eb8a62360ff6"},
"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_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, "0.20.17", "f396bbdaf4ba227b82251eb75ac0afa6b3da5e509bc0d030206374237dfc9450", [: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", "a61d741ffb78c85fdbca0de084da6a48f8ceb5261a79165b5a0b59e5f65ce98b"}, "phoenix_live_view": {:hex, :phoenix_live_view, "1.0.9", "4dc5e535832733df68df22f9de168b11c0c74bca65b27b088a10ac36dfb75d04", [: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", "1dccb04ec8544340e01608e108f32724458d0ac4b07e551406b3b920c40ba2e5"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
"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"}, "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"},
"plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"}, "plug": {:hex, :plug, "1.17.0", "a0832e7af4ae0f4819e0c08dd2e7482364937aea6a8a997a679f2cbb7e026b2e", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6692046652a69a00a5a21d0b7e11fcf401064839d59d6b8787f23af55b1e6bc"},
"plug_cowboy": {:hex, :plug_cowboy, "2.7.2", "fdadb973799ae691bf9ecad99125b16625b1c6039999da5fe544d99218e662e4", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "245d8a11ee2306094840c000e8816f0cbed69a23fc0ac2bcf8d7835ae019bb2f"}, "plug_cowboy": {:hex, :plug_cowboy, "2.7.3", "1304d36752e8bdde213cea59ef424ca932910a91a07ef9f3874be709c4ddb94b", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "77c95524b2aa5364b247fa17089029e73b951ebc1adeef429361eab0bb55819d"},
"plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"}, "plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"},
"postgrex": {:hex, :postgrex, "0.19.3", "a0bda6e3bc75ec07fca5b0a89bffd242ca209a4822a9533e7d3e84ee80707e19", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "d31c28053655b78f47f948c85bb1cf86a9c1f8ead346ba1aa0d0df017fa05b61"}, "postgrex": {:hex, :postgrex, "0.20.0", "363ed03ab4757f6bc47942eff7720640795eb557e1935951c1626f0d303a3aed", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "d36ef8b36f323d29505314f704e21a1a038e2dc387c6409ee0cd24144e187c0f"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, "ranch": {:hex, :ranch, "2.2.0", "25528f82bc8d7c6152c57666ca99ec716510fe0925cb188172f41ce93117b1b0", [:make, :rebar3], [], "hexpm", "fa0b99a1780c80218a4197a59ea8d3bdae32fbff7e88527d7d8a4787eff4f8e7"},
"swoosh": {:hex, :swoosh, "1.17.6", "27ff070f96246e35b7105ab1c52b2b689f523a3cb83ed9faadb2f33bd653ccba", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mua, "~> 0.2.3", [hex: :mua, repo: "hexpm", optional: true]}, {:multipart, "~> 0.4", [hex: :multipart, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.5 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9798f3e72165f40c950f6762c06dab68afcdcf616138fc4a07965c09c250e1e2"}, "swoosh": {:hex, :swoosh, "1.18.3", "ca12197550bd7456654179055b1446168cc0f55067f784a3707e0e4462e269f5", [:mix], [{:bandit, ">= 1.0.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mua, "~> 0.2.3", [hex: :mua, repo: "hexpm", optional: true]}, {:multipart, "~> 0.4", [hex: :multipart, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:req, "~> 0.5.10 or ~> 0.6 or ~> 1.0", [hex: :req, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a533daccea84e887a061a919295212b37f4f2c7916436037eb8be7f1265bacba"},
"table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"}, "table_rex": {:hex, :table_rex, "4.1.0", "fbaa8b1ce154c9772012bf445bfb86b587430fb96f3b12022d3f35ee4a68c918", [:mix], [], "hexpm", "95932701df195d43bc2d1c6531178fc8338aa8f38c80f098504d529c43bc2601"},
"tailwind": {:hex, :tailwind, "0.3.1", "a89d2835c580748c7a975ad7dd3f2ea5e63216dc16d44f9df492fbd12c094bed", [:mix], [], "hexpm", "98a45febdf4a87bc26682e1171acdedd6317d0919953c353fcd1b4f9f4b676a2"},
"telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.2", "2caabe9344ec17eafe5403304771c3539f3b6e2f7fb6a6f602558c825d0d0bfb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9b43db0dc33863930b9ef9d27137e78974756f5f198cae18409970ed6fa5b561"}, "telemetry_metrics": {:hex, :telemetry_metrics, "1.1.0", "5bd5f3b5637e0abea0426b947e3ce5dd304f8b3bc6617039e2b5a008adc02f8f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e7b79e8ddfde70adb6db8a6623d1778ec66401f366e9a8f5dd0955c56bc8ce67"},
"telemetry_poller": {:hex, :telemetry_poller, "1.1.0", "58fa7c216257291caaf8d05678c8d01bd45f4bdbc1286838a28c4bb62ef32999", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9eb9d9cbfd81cbd7cdd24682f8711b6e2b691289a0de6826e58452f28c103c8f"}, "telemetry_poller": {:hex, :telemetry_poller, "1.2.0", "ba82e333215aed9dd2096f93bd1d13ae89d249f82760fcada0850ba33bac154b", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7216e21a6c326eb9aa44328028c34e9fd348fb53667ca837be59d0aa2a0156e8"},
"thousand_island": {:hex, :thousand_island, "1.3.12", "590ff651a6d2a59ed7eabea398021749bdc664e2da33e0355e6c64e7e1a2ef93", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "55d0b1c868b513a7225892b8a8af0234d7c8981a51b0740369f3125f7c99a549"},
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
"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"}, "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"},
} }

View File

@ -121,7 +121,7 @@ msgstr ""
#: lib/cannery_web/live/pack_live/form_component.html.heex:110 #: lib/cannery_web/live/pack_live/form_component.html.heex:110
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:41 #: lib/cannery_web/live/tag_live/form_component.html.heex:41
#: lib/cannery_web/live/type_live/form_component.html.heex:386 #: lib/cannery_web/live/type_live/form_component.html.heex:378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -146,7 +146,7 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:116 #: lib/cannery_web/live/pack_live/index.html.heex:114
#: lib/cannery_web/live/pack_live/show.html.heex:84 #: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54 #: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -194,7 +194,7 @@ msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77 #: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:127 #: lib/cannery_web/live/pack_live/index.html.heex:125
#: lib/cannery_web/live/pack_live/show.html.heex:80 #: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -283,55 +283,55 @@ msgstr ""
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:161 #: lib/cannery_web/live/pack_live/index.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone pack of %{pack_count} bullets" msgid "Clone pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:176 #: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:71 #: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete pack of %{pack_count} bullets" msgid "Delete pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:149 #: lib/cannery_web/live/pack_live/index.html.heex:147
#: lib/cannery_web/live/pack_live/show.html.heex:59 #: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit pack of %{pack_count} bullets" msgid "Edit pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:147 #: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137 #: lib/cannery_web/live/pack_live/index.html.heex:135
#: lib/cannery_web/live/type_live/show.html.heex:201 #: lib/cannery_web/live/type_live/show.html.heex:199
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View pack of %{pack_count} bullets" msgid "View pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:149 #: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181 #: lib/cannery_web/live/range_live/index.html.heex:179
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_record_count} shots" msgid "Delete shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:134 #: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164 #: lib/cannery_web/live/range_live/index.html.heex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_record_count} shots" msgid "Edit shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:107 #: lib/cannery_web/live/type_live/index.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Clone %{type_name}" msgid "Clone %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:124 #: lib/cannery_web/live/type_live/index.html.heex:122
#: lib/cannery_web/live/type_live/show.html.heex:35 #: lib/cannery_web/live/type_live/show.html.heex:33
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Delete %{type_name}" msgid "Delete %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:99 #: lib/cannery_web/live/type_live/index.html.heex:97
#: lib/cannery_web/live/type_live/show.html.heex:19 #: lib/cannery_web/live/type_live/show.html.heex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit %{type_name}" msgid "Edit %{type_name}"
msgstr "" msgstr ""
@ -341,7 +341,7 @@ msgstr ""
msgid "New Type" msgid "New Type"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:91 #: lib/cannery_web/live/type_live/index.html.heex:89
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View %{type_name}" msgid "View %{type_name}"
msgstr "" msgstr ""

View File

@ -134,7 +134,7 @@ msgstr "Passwort zurücksetzen"
#: lib/cannery_web/live/pack_live/form_component.html.heex:110 #: lib/cannery_web/live/pack_live/form_component.html.heex:110
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:41 #: lib/cannery_web/live/tag_live/form_component.html.heex:41
#: lib/cannery_web/live/type_live/form_component.html.heex:386 #: lib/cannery_web/live/type_live/form_component.html.heex:378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
@ -159,7 +159,7 @@ msgstr "Hinzufügen"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?" msgstr "Warum nicht einige für den Schießstand auswählen?"
#: lib/cannery_web/live/pack_live/index.html.heex:116 #: lib/cannery_web/live/pack_live/index.html.heex:114
#: lib/cannery_web/live/pack_live/show.html.heex:84 #: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54 #: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -207,7 +207,7 @@ msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77 #: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:127 #: lib/cannery_web/live/pack_live/index.html.heex:125
#: lib/cannery_web/live/pack_live/show.html.heex:80 #: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -296,55 +296,55 @@ msgstr ""
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:161 #: lib/cannery_web/live/pack_live/index.html.heex:159
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets" msgid "Clone pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:176 #: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:71 #: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets" msgid "Delete pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:149 #: lib/cannery_web/live/pack_live/index.html.heex:147
#: lib/cannery_web/live/pack_live/show.html.heex:59 #: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets" msgid "Edit pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:147 #: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137 #: lib/cannery_web/live/pack_live/index.html.heex:135
#: lib/cannery_web/live/type_live/show.html.heex:201 #: lib/cannery_web/live/type_live/show.html.heex:199
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets" msgid "View pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:149 #: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181 #: lib/cannery_web/live/range_live/index.html.heex:179
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots" msgid "Delete shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:134 #: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164 #: lib/cannery_web/live/range_live/index.html.heex:162
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots" msgid "Edit shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:107 #: lib/cannery_web/live/type_live/index.html.heex:105
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{type_name}" msgid "Clone %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:124 #: lib/cannery_web/live/type_live/index.html.heex:122
#: lib/cannery_web/live/type_live/show.html.heex:35 #: lib/cannery_web/live/type_live/show.html.heex:33
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{type_name}" msgid "Delete %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:99 #: lib/cannery_web/live/type_live/index.html.heex:97
#: lib/cannery_web/live/type_live/show.html.heex:19 #: lib/cannery_web/live/type_live/show.html.heex:17
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{type_name}" msgid "Edit %{type_name}"
msgstr "" msgstr ""
@ -354,7 +354,7 @@ msgstr ""
msgid "New Type" msgid "New Type"
msgstr "Neue Munitionsart" msgstr "Neue Munitionsart"
#: lib/cannery_web/live/type_live/index.html.heex:91 #: lib/cannery_web/live/type_live/index.html.heex:89
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View %{type_name}" msgid "View %{type_name}"
msgstr "" msgstr ""

View File

@ -44,24 +44,24 @@ msgid "Background color"
msgstr "Hintergrundfarbe" msgstr "Hintergrundfarbe"
#: lib/cannery_web/components/type_table_component.ex:86 #: lib/cannery_web/components/type_table_component.ex:86
#: lib/cannery_web/live/type_live/form_component.html.heex:358 #: lib/cannery_web/live/type_live/form_component.html.heex:350
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "Knallpatrone" msgstr "Knallpatrone"
#: lib/cannery_web/live/type_live/form_component.html.heex:195 #: lib/cannery_web/live/type_live/form_component.html.heex:189
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "Messing" msgstr "Messing"
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:163 #: lib/cannery_web/live/type_live/form_component.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "Projektilkern" msgstr "Projektilkern"
#: lib/cannery_web/components/type_table_component.ex:59 #: lib/cannery_web/components/type_table_component.ex:59
#: lib/cannery_web/live/type_live/form_component.html.heex:136 #: lib/cannery_web/live/type_live/form_component.html.heex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "Patronenart" msgstr "Patronenart"
@ -79,7 +79,7 @@ msgid "Cartridge"
msgstr "Patrone" msgstr "Patrone"
#: lib/cannery_web/components/type_table_component.ex:66 #: lib/cannery_web/components/type_table_component.ex:66
#: lib/cannery_web/live/type_live/form_component.html.heex:188 #: lib/cannery_web/live/type_live/form_component.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "Gehäusematerial" msgstr "Gehäusematerial"
@ -100,7 +100,7 @@ msgid "Containers"
msgstr "Behälter" msgstr "Behälter"
#: lib/cannery_web/components/type_table_component.ex:87 #: lib/cannery_web/components/type_table_component.ex:87
#: lib/cannery_web/live/type_live/form_component.html.heex:362 #: lib/cannery_web/live/type_live/form_component.html.heex:354
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "Korrosiv" msgstr "Korrosiv"
@ -145,19 +145,19 @@ msgstr "Einladung bearbeiten"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Tag bearbeiten" msgstr "Tag bearbeiten"
#: lib/cannery_web/live/type_live/form_component.html.heex:151 #: lib/cannery_web/live/type_live/form_component.html.heex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "VM" msgstr "VM"
#: lib/cannery_web/components/type_table_component.ex:58 #: lib/cannery_web/components/type_table_component.ex:58
#: lib/cannery_web/live/type_live/form_component.html.heex:126 #: lib/cannery_web/live/type_live/form_component.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "Körner" msgstr "Körner"
#: lib/cannery_web/components/type_table_component.ex:85 #: lib/cannery_web/components/type_table_component.ex:85
#: lib/cannery_web/live/type_live/form_component.html.heex:354 #: lib/cannery_web/live/type_live/form_component.html.heex:346
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "Brandmunition" msgstr "Brandmunition"
@ -208,8 +208,8 @@ msgid "Magazine, Clip, Ammo Box, etc"
msgstr "Magazin, Ladestreifen, Munitionskiste usw." msgstr "Magazin, Ladestreifen, Munitionskiste usw."
#: lib/cannery_web/components/type_table_component.ex:88 #: lib/cannery_web/components/type_table_component.ex:88
#: lib/cannery_web/live/type_live/form_component.html.heex:367 #: lib/cannery_web/live/type_live/form_component.html.heex:359
#: lib/cannery_web/live/type_live/form_component.html.heex:370 #: lib/cannery_web/live/type_live/form_component.html.heex:362
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Hersteller" msgstr "Hersteller"
@ -250,12 +250,12 @@ msgstr "Neue Einladung"
msgid "New Tag" msgid "New Tag"
msgstr "Neuer Tag" msgstr "Neuer Tag"
#: lib/cannery_web/live/pack_live/index.html.heex:94 #: lib/cannery_web/live/pack_live/index.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Keine Munition" msgstr "Keine Munition"
#: lib/cannery_web/live/type_live/show.html.heex:178 #: lib/cannery_web/live/type_live/show.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "Keine Munition dieser Art" msgstr "Keine Munition dieser Art"
@ -299,7 +299,7 @@ msgid "On the bookshelf"
msgstr "Auf dem Bücherregal" msgstr "Auf dem Bücherregal"
#: lib/cannery_web/components/type_table_component.ex:79 #: lib/cannery_web/components/type_table_component.ex:79
#: lib/cannery_web/live/type_live/form_component.html.heex:287 #: lib/cannery_web/live/type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "Druck" msgstr "Druck"
@ -316,7 +316,7 @@ msgid "Price paid:"
msgstr "Kaufpreis:" msgstr "Kaufpreis:"
#: lib/cannery_web/components/type_table_component.ex:82 #: lib/cannery_web/components/type_table_component.ex:82
#: lib/cannery_web/live/type_live/form_component.html.heex:328 #: lib/cannery_web/live/type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "Zündertyp" msgstr "Zündertyp"
@ -349,7 +349,7 @@ msgstr "Einstellungen"
msgid "Simple:" msgid "Simple:"
msgstr "Einfach:" msgstr "Einfach:"
#: lib/cannery_web/live/type_live/form_component.html.heex:171 #: lib/cannery_web/live/type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "Stahl" msgstr "Stahl"
@ -384,7 +384,7 @@ msgid "The self-hosted firearm tracker website"
msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen" msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen"
#: lib/cannery_web/components/type_table_component.ex:84 #: lib/cannery_web/components/type_table_component.ex:84
#: lib/cannery_web/live/type_live/form_component.html.heex:350 #: lib/cannery_web/live/type_live/form_component.html.heex:342
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "Leuchtspur" msgstr "Leuchtspur"
@ -458,7 +458,7 @@ msgid "Record shots"
msgstr "Schüsse dokumentieren" msgstr "Schüsse dokumentieren"
#: lib/cannery_web/live/range_live/index.html.heex:64 #: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148 #: lib/cannery_web/live/range_live/index.html.heex:146
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "Keine Schüsse dokumentiert" msgstr "Keine Schüsse dokumentiert"
@ -492,41 +492,41 @@ msgstr "Schießkladde"
#: lib/cannery_web/components/type_table_component.ex:273 #: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37 #: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42 #: lib/cannery_web/live/pack_live/show.html.heex:42
#: lib/cannery_web/live/type_live/show.html.heex:150 #: lib/cannery_web/live/type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "$%{amount}" msgstr "$%{amount}"
#: lib/cannery_web/live/type_live/form_component.html.heex:181 #: lib/cannery_web/live/type_live/form_component.html.heex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "Bimetall" msgstr "Bimetall"
#: lib/cannery_web/components/type_table_component.ex:65 #: lib/cannery_web/components/type_table_component.ex:65
#: lib/cannery_web/live/type_live/form_component.html.heex:176 #: lib/cannery_web/live/type_live/form_component.html.heex:172
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "Patronenhülse" msgstr "Patronenhülse"
#: lib/cannery_web/components/type_table_component.ex:81 #: lib/cannery_web/components/type_table_component.ex:81
#: lib/cannery_web/live/type_live/form_component.html.heex:311 #: lib/cannery_web/live/type_live/form_component.html.heex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "Mündungsgeschwindigkeit" msgstr "Mündungsgeschwindigkeit"
#: lib/cannery_web/components/type_table_component.ex:75 #: lib/cannery_web/components/type_table_component.ex:75
#: lib/cannery_web/live/type_live/form_component.html.heex:274 #: lib/cannery_web/live/type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "Pulverkörner pro Ladung" msgstr "Pulverkörner pro Ladung"
#: lib/cannery_web/components/type_table_component.ex:73 #: lib/cannery_web/components/type_table_component.ex:73
#: lib/cannery_web/live/type_live/form_component.html.heex:265 #: lib/cannery_web/live/type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "Pulverart" msgstr "Pulverart"
#: lib/cannery_web/live/type_live/form_component.html.heex:378 #: lib/cannery_web/live/type_live/form_component.html.heex:370
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
@ -550,7 +550,7 @@ msgid "New password"
msgstr "Neues Passwort" msgstr "Neues Passwort"
#: lib/cannery_web/components/type_table_component.ex:83 #: lib/cannery_web/components/type_table_component.ex:83
#: lib/cannery_web/live/type_live/form_component.html.heex:337 #: lib/cannery_web/live/type_live/form_component.html.heex:329
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "Patronenhülsenform" msgstr "Patronenhülsenform"
@ -574,7 +574,7 @@ msgstr "Editiere %{name} Tags"
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#: lib/cannery_web/live/type_live/show.html.heex:85 #: lib/cannery_web/live/type_live/show.html.heex:83
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "Patronen:" msgstr "Patronen:"
@ -582,7 +582,7 @@ msgstr "Patronen:"
#: lib/cannery_web/components/pack_table_component.ex:178 #: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:259 #: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272 #: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154 #: lib/cannery_web/live/type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "Keine Preisinformationen" msgstr "Keine Preisinformationen"
@ -654,7 +654,7 @@ msgstr "Schüsse dokumentieren"
msgid "Copies" msgid "Copies"
msgstr "Kopien" msgstr "Kopien"
#: lib/cannery_web/live/type_live/show.html.heex:137 #: lib/cannery_web/live/type_live/show.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Hinzugefügt am:" msgstr "Hinzugefügt am:"
@ -719,7 +719,7 @@ msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/container_live/show.html.heex:22 #: lib/cannery_web/live/container_live/show.html.heex:22
#: lib/cannery_web/live/type_live/show.html.heex:111 #: lib/cannery_web/live/type_live/show.html.heex:109
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -745,9 +745,9 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Behälter" msgstr "Behälter"
#: lib/cannery_web/live/pack_live/index.html.heex:87 #: lib/cannery_web/live/pack_live/index.html.heex:85
#: lib/cannery_web/live/type_live/index.html.heex:66 #: lib/cannery_web/live/type_live/index.html.heex:64
#: lib/cannery_web/live/type_live/show.html.heex:164 #: lib/cannery_web/live/type_live/show.html.heex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -777,7 +777,7 @@ msgstr "Patronen:"
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:117 #: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170 #: lib/cannery_web/live/type_live/show.html.heex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
@ -787,7 +787,7 @@ msgstr ""
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:128 #: lib/cannery_web/live/type_live/show.html.heex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
@ -797,7 +797,7 @@ msgstr ""
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "Summe aller Patronen" msgstr "Summe aller Patronen"
#: lib/cannery_web/live/type_live/show.html.heex:102 #: lib/cannery_web/live/type_live/show.html.heex:100
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "Summe abgegebener Schüsse:" msgstr "Summe abgegebener Schüsse:"
@ -807,7 +807,7 @@ msgstr "Summe abgegebener Schüsse:"
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:120 #: lib/cannery_web/live/type_live/show.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
@ -817,7 +817,7 @@ msgstr ""
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:94 #: lib/cannery_web/live/type_live/show.html.heex:92
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -923,7 +923,7 @@ msgid "UPC:"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/components/type_table_component.ex:101 #: lib/cannery_web/components/type_table_component.ex:101
#: lib/cannery_web/live/type_live/show.html.heex:146 #: lib/cannery_web/live/type_live/show.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
@ -991,12 +991,12 @@ msgstr ""
msgid "Edit ammo" msgid "Edit ammo"
msgstr "Munitionstyp bearbeiten" msgstr "Munitionstyp bearbeiten"
#: lib/cannery_web/live/type_live/index.html.heex:58 #: lib/cannery_web/live/type_live/index.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:79 #: lib/cannery_web/live/pack_live/index.html.heex:77
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1011,14 +1011,14 @@ msgstr ""
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:124 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/components/layouts.ex:15 #: lib/cannery_web/components/layouts.ex:15
#: lib/cannery_web/components/layouts/root.html.heex:8
#: lib/cannery_web/components/layouts/root.html.heex:9 #: lib/cannery_web/components/layouts/root.html.heex:9
#: lib/cannery_web/components/layouts/root.html.heex:10
#: lib/cannery_web/controllers/error_html/error.html.heex:8 #: lib/cannery_web/controllers/error_html/error.html.heex:8
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cannery" msgid "Cannery"
@ -1115,7 +1115,7 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:292 #: lib/cannery_web/live/type_live/form_component.html.heex:284
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
@ -1130,12 +1130,12 @@ msgstr ""
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:333 #: lib/cannery_web/live/type_live/form_component.html.heex:325
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:342 #: lib/cannery_web/live/type_live/form_component.html.heex:334
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1178,14 +1178,14 @@ msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58 #: lib/cannery_web/live/pack_live/index.html.heex:56
#: lib/cannery_web/live/range_live/index.html.heex:103 #: lib/cannery_web/live/range_live/index.html.heex:101
#: lib/cannery_web/live/type_live/index.html.heex:37 #: lib/cannery_web/live/type_live/index.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All" msgid "All"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:347 #: lib/cannery_web/live/type_live/form_component.html.heex:339
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Attributes" msgid "Attributes"
msgstr "" msgstr ""
@ -1202,7 +1202,7 @@ msgid "Brass height:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:57 #: lib/cannery_web/components/type_table_component.ex:57
#: lib/cannery_web/live/type_live/form_component.html.heex:107 #: lib/cannery_web/live/type_live/form_component.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Chamber size" msgid "Chamber size"
msgstr "" msgstr ""
@ -1218,7 +1218,7 @@ msgid "Dimensions"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:80 #: lib/cannery_web/components/type_table_component.ex:80
#: lib/cannery_web/live/type_live/form_component.html.heex:297 #: lib/cannery_web/live/type_live/form_component.html.heex:289
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Dram equivalent" msgid "Dram equivalent"
msgstr "" msgstr ""
@ -1240,7 +1240,7 @@ msgid "Gauge:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:71 #: lib/cannery_web/components/type_table_component.ex:71
#: lib/cannery_web/live/type_live/form_component.html.heex:235 #: lib/cannery_web/live/type_live/form_component.html.heex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load grains" msgid "Load grains"
msgstr "" msgstr ""
@ -1255,50 +1255,50 @@ msgstr ""
msgid "No ammo" msgid "No ammo"
msgstr "Keine Munition" msgstr "Keine Munition"
#: lib/cannery_web/live/type_live/show.html.heex:58 #: lib/cannery_web/live/type_live/show.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "None specified" msgid "None specified"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:108 #: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30 #: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61 #: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:106 #: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:28 #: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40 #: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:56 #: lib/cannery_web/live/type_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pistol" msgid "Pistol"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:262 #: lib/cannery_web/live/type_live/form_component.html.heex:254
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder" msgid "Powder"
msgstr "Pulverart" msgstr "Pulverart"
#: lib/cannery_web/live/type_live/form_component.html.heex:325 #: lib/cannery_web/live/type_live/form_component.html.heex:317
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer" msgid "Primer"
msgstr "Zündertyp" msgstr "Zündertyp"
#: lib/cannery_web/live/type_live/form_component.html.heex:123 #: lib/cannery_web/live/type_live/form_component.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Projectile" msgid "Projectile"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:106 #: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28 #: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59 #: lib/cannery_web/live/pack_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:104 #: lib/cannery_web/live/range_live/index.html.heex:102
#: lib/cannery_web/live/type_live/form_component.html.heex:26 #: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38 #: lib/cannery_web/live/type_live/index.html.heex:36
#: lib/cannery_web/live/type_live/show.html.heex:54 #: lib/cannery_web/live/type_live/show.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rifle" msgid "Rifle"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:72 #: lib/cannery_web/components/type_table_component.ex:72
#: lib/cannery_web/live/type_live/form_component.html.heex:243 #: lib/cannery_web/live/type_live/form_component.html.heex:235
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot charge weight" msgid "Shot charge weight"
msgstr "" msgstr ""
@ -1309,7 +1309,7 @@ msgid "Shot charge weight:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:69 #: lib/cannery_web/components/type_table_component.ex:69
#: lib/cannery_web/live/type_live/form_component.html.heex:217 #: lib/cannery_web/live/type_live/form_component.html.heex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot material" msgid "Shot material"
msgstr "" msgstr ""
@ -1320,7 +1320,7 @@ msgid "Shot material:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:70 #: lib/cannery_web/components/type_table_component.ex:70
#: lib/cannery_web/live/type_live/form_component.html.heex:227 #: lib/cannery_web/live/type_live/form_component.html.heex:219
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Shot size" msgid "Shot size"
msgstr "Schüsse abgegeben" msgstr "Schüsse abgegeben"
@ -1331,7 +1331,7 @@ msgid "Shot size:"
msgstr "Schüsse abgegeben" msgstr "Schüsse abgegeben"
#: lib/cannery_web/components/type_table_component.ex:68 #: lib/cannery_web/components/type_table_component.ex:68
#: lib/cannery_web/live/type_live/form_component.html.heex:208 #: lib/cannery_web/live/type_live/form_component.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot type" msgid "Shot type"
msgstr "" msgstr ""
@ -1343,22 +1343,22 @@ msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:107 #: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29 #: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60 #: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:105 #: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/form_component.html.heex:27 #: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39 #: lib/cannery_web/live/type_live/index.html.heex:37
#: lib/cannery_web/live/type_live/show.html.heex:52 #: lib/cannery_web/live/type_live/show.html.heex:50
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shotgun" msgid "Shotgun"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:162 #: lib/cannery_web/live/type_live/form_component.html.heex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Slug core" msgid "Slug core"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:213 #: lib/cannery_web/live/type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc" msgid "Target, bird, buck, etc"
msgstr "" msgstr ""
@ -1375,7 +1375,7 @@ msgid "Unfired shell length"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:67 #: lib/cannery_web/components/type_table_component.ex:67
#: lib/cannery_web/live/type_live/form_component.html.heex:200 #: lib/cannery_web/live/type_live/form_component.html.heex:194
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Wadding" msgid "Wadding"
msgstr "" msgstr ""
@ -1392,7 +1392,7 @@ msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:95 #: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21 #: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29 #: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46 #: lib/cannery_web/live/type_live/show.html.heex:44
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Class" msgid "Class"
msgstr "" msgstr ""
@ -1427,7 +1427,7 @@ msgid "New Type"
msgstr "Neuer Munitionstyp" msgstr "Neuer Munitionstyp"
#: lib/cannery_web/live/type_live/index.html.heex:8 #: lib/cannery_web/live/type_live/index.html.heex:8
#: lib/cannery_web/live/type_live/index.html.heex:73 #: lib/cannery_web/live/type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Types" msgid "No Types"
msgstr "Art" msgstr "Art"
@ -1448,7 +1448,7 @@ msgstr ""
msgid "Any" msgid "Any"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138 #: lib/cannery_web/live/range_live/index.html.heex:136
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Dates" msgid "Dates"
msgstr "Datum" msgstr "Datum"

View File

@ -115,22 +115,22 @@ msgstr "Nutzerkonto Bestätigungslink ist ungültig oder abgelaufen."
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "Sie sind nicht berechtigt, diese Seite aufzurufen." msgstr "Sie sind nicht berechtigt, diese Seite aufzurufen."
#: lib/cannery/accounts/user.ex:140 #: lib/cannery/accounts/user.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "hat sich nicht geändert" msgstr "hat sich nicht geändert"
#: lib/cannery/accounts/user.ex:161 #: lib/cannery/accounts/user.ex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "Passwort stimmt nicht überein" msgstr "Passwort stimmt nicht überein"
#: lib/cannery/accounts/user.ex:198 #: lib/cannery/accounts/user.ex:201
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "is not valid" msgid "is not valid"
msgstr "ist nicht gültig" msgstr "ist nicht gültig"
#: lib/cannery/accounts/user.ex:95 #: lib/cannery/accounts/user.ex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "Muss ein @ Zeichen und keine Leerzeichen haben" msgstr "Muss ein @ Zeichen und keine Leerzeichen haben"

View File

@ -73,7 +73,7 @@ msgstr ""
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?" msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
#: lib/cannery_web/live/pack_live/index.html.heex:174 #: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/show.html.heex:69 #: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -134,7 +134,7 @@ msgstr "Bitte überprüfen Sie ihre Mailbox und bestätigen Sie das Nutzerkonto"
#: lib/cannery_web/live/pack_live/form_component.html.heex:111 #: lib/cannery_web/live/pack_live/form_component.html.heex:111
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:43 #: lib/cannery_web/live/tag_live/form_component.html.heex:43
#: lib/cannery_web/live/type_live/form_component.html.heex:387 #: lib/cannery_web/live/type_live/form_component.html.heex:379
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "Speichere..." msgstr "Speichere..."
@ -172,7 +172,7 @@ msgid "Shots recorded successfully"
msgstr "Schüsse erfolgreich dokumentiert" msgstr "Schüsse erfolgreich dokumentiert"
#: lib/cannery_web/live/pack_live/show.ex:147 #: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178 #: lib/cannery_web/live/range_live/index.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?" msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"
@ -247,8 +247,8 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Munitionsgruppe erfolgreich aktualisiert" msgstr[0] "Munitionsgruppe erfolgreich aktualisiert"
msgstr[1] "Munitionsgruppe erfolgreich aktualisiert" msgstr[1] "Munitionsgruppe erfolgreich aktualisiert"
#: lib/cannery_web/live/type_live/index.html.heex:118 #: lib/cannery_web/live/type_live/index.html.heex:116
#: lib/cannery_web/live/type_live/show.html.heex:29 #: lib/cannery_web/live/type_live/show.html.heex:27
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?" msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"

View File

@ -40,24 +40,24 @@ msgid "Background color"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:86 #: lib/cannery_web/components/type_table_component.ex:86
#: lib/cannery_web/live/type_live/form_component.html.heex:358 #: lib/cannery_web/live/type_live/form_component.html.heex:350
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:195 #: lib/cannery_web/live/type_live/form_component.html.heex:189
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:163 #: lib/cannery_web/live/type_live/form_component.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:59 #: lib/cannery_web/components/type_table_component.ex:59
#: lib/cannery_web/live/type_live/form_component.html.heex:136 #: lib/cannery_web/live/type_live/form_component.html.heex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "" msgstr ""
@ -75,7 +75,7 @@ msgid "Cartridge"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:66 #: lib/cannery_web/components/type_table_component.ex:66
#: lib/cannery_web/live/type_live/form_component.html.heex:188 #: lib/cannery_web/live/type_live/form_component.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
@ -96,7 +96,7 @@ msgid "Containers"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:87 #: lib/cannery_web/components/type_table_component.ex:87
#: lib/cannery_web/live/type_live/form_component.html.heex:362 #: lib/cannery_web/live/type_live/form_component.html.heex:354
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
@ -141,19 +141,19 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:151 #: lib/cannery_web/live/type_live/form_component.html.heex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:58 #: lib/cannery_web/components/type_table_component.ex:58
#: lib/cannery_web/live/type_live/form_component.html.heex:126 #: lib/cannery_web/live/type_live/form_component.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:85 #: lib/cannery_web/components/type_table_component.ex:85
#: lib/cannery_web/live/type_live/form_component.html.heex:354 #: lib/cannery_web/live/type_live/form_component.html.heex:346
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "" msgstr ""
@ -204,8 +204,8 @@ msgid "Magazine, Clip, Ammo Box, etc"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:88 #: lib/cannery_web/components/type_table_component.ex:88
#: lib/cannery_web/live/type_live/form_component.html.heex:367 #: lib/cannery_web/live/type_live/form_component.html.heex:359
#: lib/cannery_web/live/type_live/form_component.html.heex:370 #: lib/cannery_web/live/type_live/form_component.html.heex:362
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -246,12 +246,12 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:94 #: lib/cannery_web/live/pack_live/index.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:178 #: lib/cannery_web/live/type_live/show.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "" msgstr ""
@ -295,7 +295,7 @@ msgid "On the bookshelf"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:79 #: lib/cannery_web/components/type_table_component.ex:79
#: lib/cannery_web/live/type_live/form_component.html.heex:287 #: lib/cannery_web/live/type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
@ -312,7 +312,7 @@ msgid "Price paid:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:82 #: lib/cannery_web/components/type_table_component.ex:82
#: lib/cannery_web/live/type_live/form_component.html.heex:328 #: lib/cannery_web/live/type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "" msgstr ""
@ -343,7 +343,7 @@ msgstr ""
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:171 #: lib/cannery_web/live/type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
@ -378,7 +378,7 @@ msgid "The self-hosted firearm tracker website"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:84 #: lib/cannery_web/components/type_table_component.ex:84
#: lib/cannery_web/live/type_live/form_component.html.heex:350 #: lib/cannery_web/live/type_live/form_component.html.heex:342
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "" msgstr ""
@ -452,7 +452,7 @@ msgid "Record shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64 #: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148 #: lib/cannery_web/live/range_live/index.html.heex:146
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -486,41 +486,41 @@ msgstr ""
#: lib/cannery_web/components/type_table_component.ex:273 #: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37 #: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42 #: lib/cannery_web/live/pack_live/show.html.heex:42
#: lib/cannery_web/live/type_live/show.html.heex:150 #: lib/cannery_web/live/type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:181 #: lib/cannery_web/live/type_live/form_component.html.heex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:65 #: lib/cannery_web/components/type_table_component.ex:65
#: lib/cannery_web/live/type_live/form_component.html.heex:176 #: lib/cannery_web/live/type_live/form_component.html.heex:172
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:81 #: lib/cannery_web/components/type_table_component.ex:81
#: lib/cannery_web/live/type_live/form_component.html.heex:311 #: lib/cannery_web/live/type_live/form_component.html.heex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:75 #: lib/cannery_web/components/type_table_component.ex:75
#: lib/cannery_web/live/type_live/form_component.html.heex:274 #: lib/cannery_web/live/type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:73 #: lib/cannery_web/components/type_table_component.ex:73
#: lib/cannery_web/live/type_live/form_component.html.heex:265 #: lib/cannery_web/live/type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:378 #: lib/cannery_web/live/type_live/form_component.html.heex:370
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -544,7 +544,7 @@ msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:83 #: lib/cannery_web/components/type_table_component.ex:83
#: lib/cannery_web/live/type_live/form_component.html.heex:337 #: lib/cannery_web/live/type_live/form_component.html.heex:329
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "" msgstr ""
@ -568,7 +568,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#: lib/cannery_web/live/type_live/show.html.heex:85 #: lib/cannery_web/live/type_live/show.html.heex:83
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
@ -576,7 +576,7 @@ msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:178 #: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:259 #: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272 #: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154 #: lib/cannery_web/live/type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "" msgstr ""
@ -648,7 +648,7 @@ msgstr ""
msgid "Copies" msgid "Copies"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:137 #: lib/cannery_web/live/type_live/show.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
@ -713,7 +713,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/container_live/show.html.heex:22 #: lib/cannery_web/live/container_live/show.html.heex:22
#: lib/cannery_web/live/type_live/show.html.heex:111 #: lib/cannery_web/live/type_live/show.html.heex:109
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -739,9 +739,9 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:87 #: lib/cannery_web/live/pack_live/index.html.heex:85
#: lib/cannery_web/live/type_live/index.html.heex:66 #: lib/cannery_web/live/type_live/index.html.heex:64
#: lib/cannery_web/live/type_live/show.html.heex:164 #: lib/cannery_web/live/type_live/show.html.heex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -771,7 +771,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:117 #: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170 #: lib/cannery_web/live/type_live/show.html.heex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
@ -781,7 +781,7 @@ msgstr ""
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:128 #: lib/cannery_web/live/type_live/show.html.heex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
@ -791,7 +791,7 @@ msgstr ""
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:102 #: lib/cannery_web/live/type_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "" msgstr ""
@ -801,7 +801,7 @@ msgstr ""
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:120 #: lib/cannery_web/live/type_live/show.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
@ -811,7 +811,7 @@ msgstr ""
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:94 #: lib/cannery_web/live/type_live/show.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -917,7 +917,7 @@ msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:101 #: lib/cannery_web/components/type_table_component.ex:101
#: lib/cannery_web/live/type_live/show.html.heex:146 #: lib/cannery_web/live/type_live/show.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
@ -985,12 +985,12 @@ msgstr ""
msgid "Edit ammo" msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:58 #: lib/cannery_web/live/type_live/index.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:79 #: lib/cannery_web/live/pack_live/index.html.heex:77
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1005,14 +1005,14 @@ msgstr ""
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:124 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/components/layouts.ex:15 #: lib/cannery_web/components/layouts.ex:15
#: lib/cannery_web/components/layouts/root.html.heex:8
#: lib/cannery_web/components/layouts/root.html.heex:9 #: lib/cannery_web/components/layouts/root.html.heex:9
#: lib/cannery_web/components/layouts/root.html.heex:10
#: lib/cannery_web/controllers/error_html/error.html.heex:8 #: lib/cannery_web/controllers/error_html/error.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Cannery" msgid "Cannery"
@ -1098,7 +1098,7 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:292 #: lib/cannery_web/live/type_live/form_component.html.heex:284
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
@ -1113,12 +1113,12 @@ msgstr ""
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:333 #: lib/cannery_web/live/type_live/form_component.html.heex:325
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:342 #: lib/cannery_web/live/type_live/form_component.html.heex:334
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1161,14 +1161,14 @@ msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58 #: lib/cannery_web/live/pack_live/index.html.heex:56
#: lib/cannery_web/live/range_live/index.html.heex:103 #: lib/cannery_web/live/range_live/index.html.heex:101
#: lib/cannery_web/live/type_live/index.html.heex:37 #: lib/cannery_web/live/type_live/index.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All" msgid "All"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:347 #: lib/cannery_web/live/type_live/form_component.html.heex:339
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Attributes" msgid "Attributes"
msgstr "" msgstr ""
@ -1185,7 +1185,7 @@ msgid "Brass height:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:57 #: lib/cannery_web/components/type_table_component.ex:57
#: lib/cannery_web/live/type_live/form_component.html.heex:107 #: lib/cannery_web/live/type_live/form_component.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Chamber size" msgid "Chamber size"
msgstr "" msgstr ""
@ -1201,7 +1201,7 @@ msgid "Dimensions"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:80 #: lib/cannery_web/components/type_table_component.ex:80
#: lib/cannery_web/live/type_live/form_component.html.heex:297 #: lib/cannery_web/live/type_live/form_component.html.heex:289
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Dram equivalent" msgid "Dram equivalent"
msgstr "" msgstr ""
@ -1223,7 +1223,7 @@ msgid "Gauge:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:71 #: lib/cannery_web/components/type_table_component.ex:71
#: lib/cannery_web/live/type_live/form_component.html.heex:235 #: lib/cannery_web/live/type_live/form_component.html.heex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load grains" msgid "Load grains"
msgstr "" msgstr ""
@ -1238,50 +1238,50 @@ msgstr ""
msgid "No ammo" msgid "No ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:58 #: lib/cannery_web/live/type_live/show.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "None specified" msgid "None specified"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:108 #: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30 #: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61 #: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:106 #: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:28 #: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40 #: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:56 #: lib/cannery_web/live/type_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pistol" msgid "Pistol"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:262 #: lib/cannery_web/live/type_live/form_component.html.heex:254
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder" msgid "Powder"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:325 #: lib/cannery_web/live/type_live/form_component.html.heex:317
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer" msgid "Primer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:123 #: lib/cannery_web/live/type_live/form_component.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Projectile" msgid "Projectile"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:106 #: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28 #: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59 #: lib/cannery_web/live/pack_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:104 #: lib/cannery_web/live/range_live/index.html.heex:102
#: lib/cannery_web/live/type_live/form_component.html.heex:26 #: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38 #: lib/cannery_web/live/type_live/index.html.heex:36
#: lib/cannery_web/live/type_live/show.html.heex:54 #: lib/cannery_web/live/type_live/show.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rifle" msgid "Rifle"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:72 #: lib/cannery_web/components/type_table_component.ex:72
#: lib/cannery_web/live/type_live/form_component.html.heex:243 #: lib/cannery_web/live/type_live/form_component.html.heex:235
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot charge weight" msgid "Shot charge weight"
msgstr "" msgstr ""
@ -1292,7 +1292,7 @@ msgid "Shot charge weight:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:69 #: lib/cannery_web/components/type_table_component.ex:69
#: lib/cannery_web/live/type_live/form_component.html.heex:217 #: lib/cannery_web/live/type_live/form_component.html.heex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot material" msgid "Shot material"
msgstr "" msgstr ""
@ -1303,7 +1303,7 @@ msgid "Shot material:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:70 #: lib/cannery_web/components/type_table_component.ex:70
#: lib/cannery_web/live/type_live/form_component.html.heex:227 #: lib/cannery_web/live/type_live/form_component.html.heex:219
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot size" msgid "Shot size"
msgstr "" msgstr ""
@ -1314,7 +1314,7 @@ msgid "Shot size:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:68 #: lib/cannery_web/components/type_table_component.ex:68
#: lib/cannery_web/live/type_live/form_component.html.heex:208 #: lib/cannery_web/live/type_live/form_component.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot type" msgid "Shot type"
msgstr "" msgstr ""
@ -1326,22 +1326,22 @@ msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:107 #: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29 #: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60 #: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:105 #: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/form_component.html.heex:27 #: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39 #: lib/cannery_web/live/type_live/index.html.heex:37
#: lib/cannery_web/live/type_live/show.html.heex:52 #: lib/cannery_web/live/type_live/show.html.heex:50
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shotgun" msgid "Shotgun"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:162 #: lib/cannery_web/live/type_live/form_component.html.heex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Slug core" msgid "Slug core"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:213 #: lib/cannery_web/live/type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc" msgid "Target, bird, buck, etc"
msgstr "" msgstr ""
@ -1358,7 +1358,7 @@ msgid "Unfired shell length"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:67 #: lib/cannery_web/components/type_table_component.ex:67
#: lib/cannery_web/live/type_live/form_component.html.heex:200 #: lib/cannery_web/live/type_live/form_component.html.heex:194
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Wadding" msgid "Wadding"
msgstr "" msgstr ""
@ -1375,7 +1375,7 @@ msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:95 #: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21 #: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29 #: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46 #: lib/cannery_web/live/type_live/show.html.heex:44
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Class" msgid "Class"
msgstr "" msgstr ""
@ -1410,7 +1410,7 @@ msgid "New Type"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:8 #: lib/cannery_web/live/type_live/index.html.heex:8
#: lib/cannery_web/live/type_live/index.html.heex:73 #: lib/cannery_web/live/type_live/index.html.heex:71
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Types" msgid "No Types"
msgstr "" msgstr ""
@ -1431,7 +1431,7 @@ msgstr ""
msgid "Any" msgid "Any"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138 #: lib/cannery_web/live/range_live/index.html.heex:136
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Dates" msgid "Dates"
msgstr "" msgstr ""

View File

@ -121,7 +121,7 @@ msgstr ""
#: lib/cannery_web/live/pack_live/form_component.html.heex:110 #: lib/cannery_web/live/pack_live/form_component.html.heex:110
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:41 #: lib/cannery_web/live/tag_live/form_component.html.heex:41
#: lib/cannery_web/live/type_live/form_component.html.heex:386 #: lib/cannery_web/live/type_live/form_component.html.heex:378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "" msgstr ""
@ -146,7 +146,7 @@ msgstr ""
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:116 #: lib/cannery_web/live/pack_live/index.html.heex:114
#: lib/cannery_web/live/pack_live/show.html.heex:84 #: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54 #: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -194,7 +194,7 @@ msgid "View in Catalog"
msgstr "" msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77 #: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:127 #: lib/cannery_web/live/pack_live/index.html.heex:125
#: lib/cannery_web/live/pack_live/show.html.heex:80 #: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -283,55 +283,55 @@ msgstr ""
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:161 #: lib/cannery_web/live/pack_live/index.html.heex:159
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets" msgid "Clone pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:176 #: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:71 #: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets" msgid "Delete pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:149 #: lib/cannery_web/live/pack_live/index.html.heex:147
#: lib/cannery_web/live/pack_live/show.html.heex:59 #: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets" msgid "Edit pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:147 #: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137 #: lib/cannery_web/live/pack_live/index.html.heex:135
#: lib/cannery_web/live/type_live/show.html.heex:201 #: lib/cannery_web/live/type_live/show.html.heex:199
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets" msgid "View pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:149 #: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181 #: lib/cannery_web/live/range_live/index.html.heex:179
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots" msgid "Delete shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:134 #: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164 #: lib/cannery_web/live/range_live/index.html.heex:162
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots" msgid "Edit shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:107 #: lib/cannery_web/live/type_live/index.html.heex:105
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{type_name}" msgid "Clone %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:124 #: lib/cannery_web/live/type_live/index.html.heex:122
#: lib/cannery_web/live/type_live/show.html.heex:35 #: lib/cannery_web/live/type_live/show.html.heex:33
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{type_name}" msgid "Delete %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:99 #: lib/cannery_web/live/type_live/index.html.heex:97
#: lib/cannery_web/live/type_live/show.html.heex:19 #: lib/cannery_web/live/type_live/show.html.heex:17
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{type_name}" msgid "Edit %{type_name}"
msgstr "" msgstr ""
@ -341,7 +341,7 @@ msgstr ""
msgid "New Type" msgid "New Type"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:91 #: lib/cannery_web/live/type_live/index.html.heex:89
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View %{type_name}" msgid "View %{type_name}"
msgstr "" msgstr ""

View File

@ -40,24 +40,24 @@ msgid "Background color"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:86 #: lib/cannery_web/components/type_table_component.ex:86
#: lib/cannery_web/live/type_live/form_component.html.heex:358 #: lib/cannery_web/live/type_live/form_component.html.heex:350
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:195 #: lib/cannery_web/live/type_live/form_component.html.heex:189
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:163 #: lib/cannery_web/live/type_live/form_component.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:59 #: lib/cannery_web/components/type_table_component.ex:59
#: lib/cannery_web/live/type_live/form_component.html.heex:136 #: lib/cannery_web/live/type_live/form_component.html.heex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "" msgstr ""
@ -75,7 +75,7 @@ msgid "Cartridge"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:66 #: lib/cannery_web/components/type_table_component.ex:66
#: lib/cannery_web/live/type_live/form_component.html.heex:188 #: lib/cannery_web/live/type_live/form_component.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "" msgstr ""
@ -96,7 +96,7 @@ msgid "Containers"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:87 #: lib/cannery_web/components/type_table_component.ex:87
#: lib/cannery_web/live/type_live/form_component.html.heex:362 #: lib/cannery_web/live/type_live/form_component.html.heex:354
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "" msgstr ""
@ -141,19 +141,19 @@ msgstr ""
msgid "Edit Tag" msgid "Edit Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:151 #: lib/cannery_web/live/type_live/form_component.html.heex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:58 #: lib/cannery_web/components/type_table_component.ex:58
#: lib/cannery_web/live/type_live/form_component.html.heex:126 #: lib/cannery_web/live/type_live/form_component.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:85 #: lib/cannery_web/components/type_table_component.ex:85
#: lib/cannery_web/live/type_live/form_component.html.heex:354 #: lib/cannery_web/live/type_live/form_component.html.heex:346
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "" msgstr ""
@ -204,8 +204,8 @@ msgid "Magazine, Clip, Ammo Box, etc"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:88 #: lib/cannery_web/components/type_table_component.ex:88
#: lib/cannery_web/live/type_live/form_component.html.heex:367 #: lib/cannery_web/live/type_live/form_component.html.heex:359
#: lib/cannery_web/live/type_live/form_component.html.heex:370 #: lib/cannery_web/live/type_live/form_component.html.heex:362
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -246,12 +246,12 @@ msgstr ""
msgid "New Tag" msgid "New Tag"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:94 #: lib/cannery_web/live/pack_live/index.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:178 #: lib/cannery_web/live/type_live/show.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "" msgstr ""
@ -295,7 +295,7 @@ msgid "On the bookshelf"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:79 #: lib/cannery_web/components/type_table_component.ex:79
#: lib/cannery_web/live/type_live/form_component.html.heex:287 #: lib/cannery_web/live/type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "" msgstr ""
@ -312,7 +312,7 @@ msgid "Price paid:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:82 #: lib/cannery_web/components/type_table_component.ex:82
#: lib/cannery_web/live/type_live/form_component.html.heex:328 #: lib/cannery_web/live/type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "" msgstr ""
@ -343,7 +343,7 @@ msgstr ""
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:171 #: lib/cannery_web/live/type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "" msgstr ""
@ -378,7 +378,7 @@ msgid "The self-hosted firearm tracker website"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:84 #: lib/cannery_web/components/type_table_component.ex:84
#: lib/cannery_web/live/type_live/form_component.html.heex:350 #: lib/cannery_web/live/type_live/form_component.html.heex:342
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "" msgstr ""
@ -452,7 +452,7 @@ msgid "Record shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:64 #: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148 #: lib/cannery_web/live/range_live/index.html.heex:146
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "" msgstr ""
@ -486,41 +486,41 @@ msgstr ""
#: lib/cannery_web/components/type_table_component.ex:273 #: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37 #: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42 #: lib/cannery_web/live/pack_live/show.html.heex:42
#: lib/cannery_web/live/type_live/show.html.heex:150 #: lib/cannery_web/live/type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:181 #: lib/cannery_web/live/type_live/form_component.html.heex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:65 #: lib/cannery_web/components/type_table_component.ex:65
#: lib/cannery_web/live/type_live/form_component.html.heex:176 #: lib/cannery_web/live/type_live/form_component.html.heex:172
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:81 #: lib/cannery_web/components/type_table_component.ex:81
#: lib/cannery_web/live/type_live/form_component.html.heex:311 #: lib/cannery_web/live/type_live/form_component.html.heex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:75 #: lib/cannery_web/components/type_table_component.ex:75
#: lib/cannery_web/live/type_live/form_component.html.heex:274 #: lib/cannery_web/live/type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:73 #: lib/cannery_web/components/type_table_component.ex:73
#: lib/cannery_web/live/type_live/form_component.html.heex:265 #: lib/cannery_web/live/type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:378 #: lib/cannery_web/live/type_live/form_component.html.heex:370
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -544,7 +544,7 @@ msgid "New password"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:83 #: lib/cannery_web/components/type_table_component.ex:83
#: lib/cannery_web/live/type_live/form_component.html.heex:337 #: lib/cannery_web/live/type_live/form_component.html.heex:329
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "" msgstr ""
@ -568,7 +568,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#: lib/cannery_web/live/type_live/show.html.heex:85 #: lib/cannery_web/live/type_live/show.html.heex:83
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Rounds:" msgid "Rounds:"
msgstr "" msgstr ""
@ -576,7 +576,7 @@ msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:178 #: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:259 #: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272 #: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154 #: lib/cannery_web/live/type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "" msgstr ""
@ -648,7 +648,7 @@ msgstr ""
msgid "Copies" msgid "Copies"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:137 #: lib/cannery_web/live/type_live/show.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "" msgstr ""
@ -713,7 +713,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/container_live/show.html.heex:22 #: lib/cannery_web/live/container_live/show.html.heex:22
#: lib/cannery_web/live/type_live/show.html.heex:111 #: lib/cannery_web/live/type_live/show.html.heex:109
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "" msgstr ""
@ -739,9 +739,9 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:87 #: lib/cannery_web/live/pack_live/index.html.heex:85
#: lib/cannery_web/live/type_live/index.html.heex:66 #: lib/cannery_web/live/type_live/index.html.heex:64
#: lib/cannery_web/live/type_live/show.html.heex:164 #: lib/cannery_web/live/type_live/show.html.heex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -771,7 +771,7 @@ msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:117 #: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170 #: lib/cannery_web/live/type_live/show.html.heex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
@ -781,7 +781,7 @@ msgstr ""
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:128 #: lib/cannery_web/live/type_live/show.html.heex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
@ -791,7 +791,7 @@ msgstr ""
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:102 #: lib/cannery_web/live/type_live/show.html.heex:100
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "" msgstr ""
@ -801,7 +801,7 @@ msgstr ""
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:120 #: lib/cannery_web/live/type_live/show.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
@ -811,7 +811,7 @@ msgstr ""
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:94 #: lib/cannery_web/live/type_live/show.html.heex:92
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -917,7 +917,7 @@ msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:101 #: lib/cannery_web/components/type_table_component.ex:101
#: lib/cannery_web/live/type_live/show.html.heex:146 #: lib/cannery_web/live/type_live/show.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
@ -985,12 +985,12 @@ msgstr ""
msgid "Edit ammo" msgid "Edit ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:58 #: lib/cannery_web/live/type_live/index.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:79 #: lib/cannery_web/live/pack_live/index.html.heex:77
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1005,14 +1005,14 @@ msgstr ""
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:124 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/components/layouts.ex:15 #: lib/cannery_web/components/layouts.ex:15
#: lib/cannery_web/components/layouts/root.html.heex:8
#: lib/cannery_web/components/layouts/root.html.heex:9 #: lib/cannery_web/components/layouts/root.html.heex:9
#: lib/cannery_web/components/layouts/root.html.heex:10
#: lib/cannery_web/controllers/error_html/error.html.heex:8 #: lib/cannery_web/controllers/error_html/error.html.heex:8
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cannery" msgid "Cannery"
@ -1098,7 +1098,7 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:292 #: lib/cannery_web/live/type_live/form_component.html.heex:284
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
@ -1113,12 +1113,12 @@ msgstr ""
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:333 #: lib/cannery_web/live/type_live/form_component.html.heex:325
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:342 #: lib/cannery_web/live/type_live/form_component.html.heex:334
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1161,14 +1161,14 @@ msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58 #: lib/cannery_web/live/pack_live/index.html.heex:56
#: lib/cannery_web/live/range_live/index.html.heex:103 #: lib/cannery_web/live/range_live/index.html.heex:101
#: lib/cannery_web/live/type_live/index.html.heex:37 #: lib/cannery_web/live/type_live/index.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All" msgid "All"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:347 #: lib/cannery_web/live/type_live/form_component.html.heex:339
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Attributes" msgid "Attributes"
msgstr "" msgstr ""
@ -1185,7 +1185,7 @@ msgid "Brass height:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:57 #: lib/cannery_web/components/type_table_component.ex:57
#: lib/cannery_web/live/type_live/form_component.html.heex:107 #: lib/cannery_web/live/type_live/form_component.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Chamber size" msgid "Chamber size"
msgstr "" msgstr ""
@ -1201,7 +1201,7 @@ msgid "Dimensions"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:80 #: lib/cannery_web/components/type_table_component.ex:80
#: lib/cannery_web/live/type_live/form_component.html.heex:297 #: lib/cannery_web/live/type_live/form_component.html.heex:289
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Dram equivalent" msgid "Dram equivalent"
msgstr "" msgstr ""
@ -1223,7 +1223,7 @@ msgid "Gauge:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:71 #: lib/cannery_web/components/type_table_component.ex:71
#: lib/cannery_web/live/type_live/form_component.html.heex:235 #: lib/cannery_web/live/type_live/form_component.html.heex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load grains" msgid "Load grains"
msgstr "" msgstr ""
@ -1238,50 +1238,50 @@ msgstr ""
msgid "No ammo" msgid "No ammo"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:58 #: lib/cannery_web/live/type_live/show.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "None specified" msgid "None specified"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:108 #: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30 #: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61 #: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:106 #: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:28 #: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40 #: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:56 #: lib/cannery_web/live/type_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pistol" msgid "Pistol"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:262 #: lib/cannery_web/live/type_live/form_component.html.heex:254
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder" msgid "Powder"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:325 #: lib/cannery_web/live/type_live/form_component.html.heex:317
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer" msgid "Primer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:123 #: lib/cannery_web/live/type_live/form_component.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Projectile" msgid "Projectile"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:106 #: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28 #: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59 #: lib/cannery_web/live/pack_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:104 #: lib/cannery_web/live/range_live/index.html.heex:102
#: lib/cannery_web/live/type_live/form_component.html.heex:26 #: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38 #: lib/cannery_web/live/type_live/index.html.heex:36
#: lib/cannery_web/live/type_live/show.html.heex:54 #: lib/cannery_web/live/type_live/show.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rifle" msgid "Rifle"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:72 #: lib/cannery_web/components/type_table_component.ex:72
#: lib/cannery_web/live/type_live/form_component.html.heex:243 #: lib/cannery_web/live/type_live/form_component.html.heex:235
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot charge weight" msgid "Shot charge weight"
msgstr "" msgstr ""
@ -1292,7 +1292,7 @@ msgid "Shot charge weight:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:69 #: lib/cannery_web/components/type_table_component.ex:69
#: lib/cannery_web/live/type_live/form_component.html.heex:217 #: lib/cannery_web/live/type_live/form_component.html.heex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot material" msgid "Shot material"
msgstr "" msgstr ""
@ -1303,7 +1303,7 @@ msgid "Shot material:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:70 #: lib/cannery_web/components/type_table_component.ex:70
#: lib/cannery_web/live/type_live/form_component.html.heex:227 #: lib/cannery_web/live/type_live/form_component.html.heex:219
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Shot size" msgid "Shot size"
msgstr "" msgstr ""
@ -1314,7 +1314,7 @@ msgid "Shot size:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:68 #: lib/cannery_web/components/type_table_component.ex:68
#: lib/cannery_web/live/type_live/form_component.html.heex:208 #: lib/cannery_web/live/type_live/form_component.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot type" msgid "Shot type"
msgstr "" msgstr ""
@ -1326,22 +1326,22 @@ msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:107 #: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29 #: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60 #: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:105 #: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/form_component.html.heex:27 #: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39 #: lib/cannery_web/live/type_live/index.html.heex:37
#: lib/cannery_web/live/type_live/show.html.heex:52 #: lib/cannery_web/live/type_live/show.html.heex:50
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shotgun" msgid "Shotgun"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:162 #: lib/cannery_web/live/type_live/form_component.html.heex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Slug core" msgid "Slug core"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:213 #: lib/cannery_web/live/type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc" msgid "Target, bird, buck, etc"
msgstr "" msgstr ""
@ -1358,7 +1358,7 @@ msgid "Unfired shell length"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:67 #: lib/cannery_web/components/type_table_component.ex:67
#: lib/cannery_web/live/type_live/form_component.html.heex:200 #: lib/cannery_web/live/type_live/form_component.html.heex:194
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Wadding" msgid "Wadding"
msgstr "" msgstr ""
@ -1375,7 +1375,7 @@ msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:95 #: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21 #: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29 #: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46 #: lib/cannery_web/live/type_live/show.html.heex:44
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Class" msgid "Class"
msgstr "" msgstr ""
@ -1410,7 +1410,7 @@ msgid "New Type"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:8 #: lib/cannery_web/live/type_live/index.html.heex:8
#: lib/cannery_web/live/type_live/index.html.heex:73 #: lib/cannery_web/live/type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Types" msgid "No Types"
msgstr "" msgstr ""
@ -1431,7 +1431,7 @@ msgstr ""
msgid "Any" msgid "Any"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138 #: lib/cannery_web/live/range_live/index.html.heex:136
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Dates" msgid "Dates"
msgstr "" msgstr ""

View File

@ -101,23 +101,23 @@ msgstr ""
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:140 #: lib/cannery/accounts/user.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:161 #: lib/cannery/accounts/user.ex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "" msgstr ""
## From Ecto.Changeset.put_change/3 ## From Ecto.Changeset.put_change/3
#: lib/cannery/accounts/user.ex:198 #: lib/cannery/accounts/user.ex:201
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "is not valid" msgid "is not valid"
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:95 #: lib/cannery/accounts/user.ex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "" msgstr ""

View File

@ -58,7 +58,7 @@ msgstr ""
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:174 #: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/show.html.heex:69 #: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -115,7 +115,7 @@ msgstr ""
#: lib/cannery_web/live/pack_live/form_component.html.heex:111 #: lib/cannery_web/live/pack_live/form_component.html.heex:111
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:43 #: lib/cannery_web/live/tag_live/form_component.html.heex:43
#: lib/cannery_web/live/type_live/form_component.html.heex:387 #: lib/cannery_web/live/type_live/form_component.html.heex:379
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
@ -151,7 +151,7 @@ msgid "Shots recorded successfully"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:147 #: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178 #: lib/cannery_web/live/range_live/index.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "" msgstr ""
@ -226,8 +226,8 @@ msgid_plural "Ammo added successfully"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: lib/cannery_web/live/type_live/index.html.heex:118 #: lib/cannery_web/live/type_live/index.html.heex:116
#: lib/cannery_web/live/type_live/show.html.heex:29 #: lib/cannery_web/live/type_live/show.html.heex:27
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "" msgstr ""

View File

@ -101,22 +101,22 @@ msgstr ""
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:140 #: lib/cannery/accounts/user.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:161 #: lib/cannery/accounts/user.ex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:198 #: lib/cannery/accounts/user.ex:201
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "is not valid" msgid "is not valid"
msgstr "" msgstr ""
#: lib/cannery/accounts/user.ex:95 #: lib/cannery/accounts/user.ex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "" msgstr ""

View File

@ -134,7 +134,7 @@ msgstr "Resetear contraseña"
#: lib/cannery_web/live/pack_live/form_component.html.heex:110 #: lib/cannery_web/live/pack_live/form_component.html.heex:110
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:41 #: lib/cannery_web/live/tag_live/form_component.html.heex:41
#: lib/cannery_web/live/type_live/form_component.html.heex:386 #: lib/cannery_web/live/type_live/form_component.html.heex:378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "Guardar" msgstr "Guardar"
@ -159,7 +159,7 @@ msgstr "Añadir"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "¿Por qué no preparar parte para disparar?" msgstr "¿Por qué no preparar parte para disparar?"
#: lib/cannery_web/live/pack_live/index.html.heex:116 #: lib/cannery_web/live/pack_live/index.html.heex:114
#: lib/cannery_web/live/pack_live/show.html.heex:84 #: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54 #: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -207,7 +207,7 @@ msgid "View in Catalog"
msgstr "Ver en Catalogo" msgstr "Ver en Catalogo"
#: lib/cannery_web/components/move_pack_component.ex:77 #: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:127 #: lib/cannery_web/live/pack_live/index.html.heex:125
#: lib/cannery_web/live/pack_live/show.html.heex:80 #: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -296,55 +296,55 @@ msgstr ""
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:161 #: lib/cannery_web/live/pack_live/index.html.heex:159
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets" msgid "Clone pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:176 #: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:71 #: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets" msgid "Delete pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:149 #: lib/cannery_web/live/pack_live/index.html.heex:147
#: lib/cannery_web/live/pack_live/show.html.heex:59 #: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets" msgid "Edit pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:147 #: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137 #: lib/cannery_web/live/pack_live/index.html.heex:135
#: lib/cannery_web/live/type_live/show.html.heex:201 #: lib/cannery_web/live/type_live/show.html.heex:199
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets" msgid "View pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:149 #: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181 #: lib/cannery_web/live/range_live/index.html.heex:179
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots" msgid "Delete shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:134 #: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164 #: lib/cannery_web/live/range_live/index.html.heex:162
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots" msgid "Edit shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:107 #: lib/cannery_web/live/type_live/index.html.heex:105
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{type_name}" msgid "Clone %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:124 #: lib/cannery_web/live/type_live/index.html.heex:122
#: lib/cannery_web/live/type_live/show.html.heex:35 #: lib/cannery_web/live/type_live/show.html.heex:33
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{type_name}" msgid "Delete %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:99 #: lib/cannery_web/live/type_live/index.html.heex:97
#: lib/cannery_web/live/type_live/show.html.heex:19 #: lib/cannery_web/live/type_live/show.html.heex:17
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{type_name}" msgid "Edit %{type_name}"
msgstr "" msgstr ""
@ -354,7 +354,7 @@ msgstr ""
msgid "New Type" msgid "New Type"
msgstr "Nuevo tipo de Munición" msgstr "Nuevo tipo de Munición"
#: lib/cannery_web/live/type_live/index.html.heex:91 #: lib/cannery_web/live/type_live/index.html.heex:89
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View %{type_name}" msgid "View %{type_name}"
msgstr "" msgstr ""

View File

@ -44,24 +44,24 @@ msgid "Background color"
msgstr "Color de fondo" msgstr "Color de fondo"
#: lib/cannery_web/components/type_table_component.ex:86 #: lib/cannery_web/components/type_table_component.ex:86
#: lib/cannery_web/live/type_live/form_component.html.heex:358 #: lib/cannery_web/live/type_live/form_component.html.heex:350
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "Fogueo" msgstr "Fogueo"
#: lib/cannery_web/live/type_live/form_component.html.heex:195 #: lib/cannery_web/live/type_live/form_component.html.heex:189
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "Latón" msgstr "Latón"
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:163 #: lib/cannery_web/live/type_live/form_component.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "Núcleo de bala" msgstr "Núcleo de bala"
#: lib/cannery_web/components/type_table_component.ex:59 #: lib/cannery_web/components/type_table_component.ex:59
#: lib/cannery_web/live/type_live/form_component.html.heex:136 #: lib/cannery_web/live/type_live/form_component.html.heex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "Tipo de bala" msgstr "Tipo de bala"
@ -79,7 +79,7 @@ msgid "Cartridge"
msgstr "Cartucho" msgstr "Cartucho"
#: lib/cannery_web/components/type_table_component.ex:66 #: lib/cannery_web/components/type_table_component.ex:66
#: lib/cannery_web/live/type_live/form_component.html.heex:188 #: lib/cannery_web/live/type_live/form_component.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "Material del casquillo" msgstr "Material del casquillo"
@ -100,7 +100,7 @@ msgid "Containers"
msgstr "Contenedores" msgstr "Contenedores"
#: lib/cannery_web/components/type_table_component.ex:87 #: lib/cannery_web/components/type_table_component.ex:87
#: lib/cannery_web/live/type_live/form_component.html.heex:362 #: lib/cannery_web/live/type_live/form_component.html.heex:354
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "Corrosiva" msgstr "Corrosiva"
@ -145,19 +145,19 @@ msgstr "Editar Invitación"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Editar Etiqueta" msgstr "Editar Etiqueta"
#: lib/cannery_web/live/type_live/form_component.html.heex:151 #: lib/cannery_web/live/type_live/form_component.html.heex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "Bala encamisada" msgstr "Bala encamisada"
#: lib/cannery_web/components/type_table_component.ex:58 #: lib/cannery_web/components/type_table_component.ex:58
#: lib/cannery_web/live/type_live/form_component.html.heex:126 #: lib/cannery_web/live/type_live/form_component.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "Grano" msgstr "Grano"
#: lib/cannery_web/components/type_table_component.ex:85 #: lib/cannery_web/components/type_table_component.ex:85
#: lib/cannery_web/live/type_live/form_component.html.heex:354 #: lib/cannery_web/live/type_live/form_component.html.heex:346
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "Incendiaria" msgstr "Incendiaria"
@ -208,8 +208,8 @@ msgid "Magazine, Clip, Ammo Box, etc"
msgstr "Cargador, Clip, Caja de Munición, etc" msgstr "Cargador, Clip, Caja de Munición, etc"
#: lib/cannery_web/components/type_table_component.ex:88 #: lib/cannery_web/components/type_table_component.ex:88
#: lib/cannery_web/live/type_live/form_component.html.heex:367 #: lib/cannery_web/live/type_live/form_component.html.heex:359
#: lib/cannery_web/live/type_live/form_component.html.heex:370 #: lib/cannery_web/live/type_live/form_component.html.heex:362
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Fabricante" msgstr "Fabricante"
@ -250,12 +250,12 @@ msgstr "Nueva Invitación"
msgid "New Tag" msgid "New Tag"
msgstr "Nueva Etiqueta" msgstr "Nueva Etiqueta"
#: lib/cannery_web/live/pack_live/index.html.heex:94 #: lib/cannery_web/live/pack_live/index.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Sin Munición" msgstr "Sin Munición"
#: lib/cannery_web/live/type_live/show.html.heex:178 #: lib/cannery_web/live/type_live/show.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "Sin munición para este tipo" msgstr "Sin munición para este tipo"
@ -299,7 +299,7 @@ msgid "On the bookshelf"
msgstr "En la estantería" msgstr "En la estantería"
#: lib/cannery_web/components/type_table_component.ex:79 #: lib/cannery_web/components/type_table_component.ex:79
#: lib/cannery_web/live/type_live/form_component.html.heex:287 #: lib/cannery_web/live/type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "Presión" msgstr "Presión"
@ -316,7 +316,7 @@ msgid "Price paid:"
msgstr "Precio pagado:" msgstr "Precio pagado:"
#: lib/cannery_web/components/type_table_component.ex:82 #: lib/cannery_web/components/type_table_component.ex:82
#: lib/cannery_web/live/type_live/form_component.html.heex:328 #: lib/cannery_web/live/type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "Tipo de espoleta" msgstr "Tipo de espoleta"
@ -349,7 +349,7 @@ msgstr "Ajustes"
msgid "Simple:" msgid "Simple:"
msgstr "Simple:" msgstr "Simple:"
#: lib/cannery_web/live/type_live/form_component.html.heex:171 #: lib/cannery_web/live/type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "Acero" msgstr "Acero"
@ -385,7 +385,7 @@ msgid "The self-hosted firearm tracker website"
msgstr "La página de seguimiento de armas autogestionada" msgstr "La página de seguimiento de armas autogestionada"
#: lib/cannery_web/components/type_table_component.ex:84 #: lib/cannery_web/components/type_table_component.ex:84
#: lib/cannery_web/live/type_live/form_component.html.heex:350 #: lib/cannery_web/live/type_live/form_component.html.heex:342
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "Trazadora" msgstr "Trazadora"
@ -459,7 +459,7 @@ msgid "Record shots"
msgstr "Tiros récord" msgstr "Tiros récord"
#: lib/cannery_web/live/range_live/index.html.heex:64 #: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148 #: lib/cannery_web/live/range_live/index.html.heex:146
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "No se han grabado tiros" msgstr "No se han grabado tiros"
@ -493,41 +493,41 @@ msgstr "Registro de tiros"
#: lib/cannery_web/components/type_table_component.ex:273 #: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37 #: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42 #: lib/cannery_web/live/pack_live/show.html.heex:42
#: lib/cannery_web/live/type_live/show.html.heex:150 #: lib/cannery_web/live/type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "$%{amount}" msgstr "$%{amount}"
#: lib/cannery_web/live/type_live/form_component.html.heex:181 #: lib/cannery_web/live/type_live/form_component.html.heex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "Bimetal" msgstr "Bimetal"
#: lib/cannery_web/components/type_table_component.ex:65 #: lib/cannery_web/components/type_table_component.ex:65
#: lib/cannery_web/live/type_live/form_component.html.heex:176 #: lib/cannery_web/live/type_live/form_component.html.heex:172
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "Tipo de camisa" msgstr "Tipo de camisa"
#: lib/cannery_web/components/type_table_component.ex:81 #: lib/cannery_web/components/type_table_component.ex:81
#: lib/cannery_web/live/type_live/form_component.html.heex:311 #: lib/cannery_web/live/type_live/form_component.html.heex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "Velocidad de boca" msgstr "Velocidad de boca"
#: lib/cannery_web/components/type_table_component.ex:75 #: lib/cannery_web/components/type_table_component.ex:75
#: lib/cannery_web/live/type_live/form_component.html.heex:274 #: lib/cannery_web/live/type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "Granos de polvora por carga" msgstr "Granos de polvora por carga"
#: lib/cannery_web/components/type_table_component.ex:73 #: lib/cannery_web/components/type_table_component.ex:73
#: lib/cannery_web/live/type_live/form_component.html.heex:265 #: lib/cannery_web/live/type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "Tipo de polvora" msgstr "Tipo de polvora"
#: lib/cannery_web/live/type_live/form_component.html.heex:378 #: lib/cannery_web/live/type_live/form_component.html.heex:370
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "" msgstr ""
@ -551,7 +551,7 @@ msgid "New password"
msgstr "Nueva contraseña" msgstr "Nueva contraseña"
#: lib/cannery_web/components/type_table_component.ex:83 #: lib/cannery_web/components/type_table_component.ex:83
#: lib/cannery_web/live/type_live/form_component.html.heex:337 #: lib/cannery_web/live/type_live/form_component.html.heex:329
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "Tipo de fuego" msgstr "Tipo de fuego"
@ -575,7 +575,7 @@ msgstr "Editar etiquetas de %{name}"
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#: lib/cannery_web/live/type_live/show.html.heex:85 #: lib/cannery_web/live/type_live/show.html.heex:83
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "Balas:" msgstr "Balas:"
@ -583,7 +583,7 @@ msgstr "Balas:"
#: lib/cannery_web/components/pack_table_component.ex:178 #: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:259 #: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272 #: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154 #: lib/cannery_web/live/type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "No hay información de coste" msgstr "No hay información de coste"
@ -655,7 +655,7 @@ msgstr "Tiros Récord"
msgid "Copies" msgid "Copies"
msgstr "Copias" msgstr "Copias"
#: lib/cannery_web/live/type_live/show.html.heex:137 #: lib/cannery_web/live/type_live/show.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Añadido en:" msgstr "Añadido en:"
@ -720,7 +720,7 @@ msgstr "Esta munición no está en un contenedor"
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/container_live/show.html.heex:22 #: lib/cannery_web/live/container_live/show.html.heex:22
#: lib/cannery_web/live/type_live/show.html.heex:111 #: lib/cannery_web/live/type_live/show.html.heex:109
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "Paquetes:" msgstr "Paquetes:"
@ -747,9 +747,9 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Contenedor:" msgstr "Contenedor:"
#: lib/cannery_web/live/pack_live/index.html.heex:87 #: lib/cannery_web/live/pack_live/index.html.heex:85
#: lib/cannery_web/live/type_live/index.html.heex:66 #: lib/cannery_web/live/type_live/index.html.heex:64
#: lib/cannery_web/live/type_live/show.html.heex:164 #: lib/cannery_web/live/type_live/show.html.heex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "Mostrar usadas" msgstr "Mostrar usadas"
@ -779,7 +779,7 @@ msgstr "Balas"
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:117 #: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170 #: lib/cannery_web/live/type_live/show.html.heex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "Ver como tabla" msgstr "Ver como tabla"
@ -789,7 +789,7 @@ msgstr "Ver como tabla"
msgid "Total ever packs" msgid "Total ever packs"
msgstr "Paquetes totales" msgstr "Paquetes totales"
#: lib/cannery_web/live/type_live/show.html.heex:128 #: lib/cannery_web/live/type_live/show.html.heex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "Paquetes totales:" msgstr "Paquetes totales:"
@ -799,7 +799,7 @@ msgstr "Paquetes totales:"
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "Balas totales" msgstr "Balas totales"
#: lib/cannery_web/live/type_live/show.html.heex:102 #: lib/cannery_web/live/type_live/show.html.heex:100
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "Balas totales:" msgstr "Balas totales:"
@ -809,7 +809,7 @@ msgstr "Balas totales:"
msgid "Used packs" msgid "Used packs"
msgstr "Paquetes usados" msgstr "Paquetes usados"
#: lib/cannery_web/live/type_live/show.html.heex:120 #: lib/cannery_web/live/type_live/show.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "Paquetes usados:" msgstr "Paquetes usados:"
@ -819,7 +819,7 @@ msgstr "Paquetes usados:"
msgid "Used rounds" msgid "Used rounds"
msgstr "Balas usadas" msgstr "Balas usadas"
#: lib/cannery_web/live/type_live/show.html.heex:94 #: lib/cannery_web/live/type_live/show.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used rounds:" msgid "Used rounds:"
msgstr "Balas usadas:" msgstr "Balas usadas:"
@ -925,7 +925,7 @@ msgid "UPC:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:101 #: lib/cannery_web/components/type_table_component.ex:101
#: lib/cannery_web/live/type_live/show.html.heex:146 #: lib/cannery_web/live/type_live/show.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
@ -993,12 +993,12 @@ msgstr "Comprada en:"
msgid "Edit ammo" msgid "Edit ammo"
msgstr "Editar munición" msgstr "Editar munición"
#: lib/cannery_web/live/type_live/index.html.heex:58 #: lib/cannery_web/live/type_live/index.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:79 #: lib/cannery_web/live/pack_live/index.html.heex:77
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1013,14 +1013,14 @@ msgstr ""
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:124 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/components/layouts.ex:15 #: lib/cannery_web/components/layouts.ex:15
#: lib/cannery_web/components/layouts/root.html.heex:8
#: lib/cannery_web/components/layouts/root.html.heex:9 #: lib/cannery_web/components/layouts/root.html.heex:9
#: lib/cannery_web/components/layouts/root.html.heex:10
#: lib/cannery_web/controllers/error_html/error.html.heex:8 #: lib/cannery_web/controllers/error_html/error.html.heex:8
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cannery" msgid "Cannery"
@ -1117,7 +1117,7 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:292 #: lib/cannery_web/live/type_live/form_component.html.heex:284
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
@ -1132,12 +1132,12 @@ msgstr ""
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:333 #: lib/cannery_web/live/type_live/form_component.html.heex:325
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:342 #: lib/cannery_web/live/type_live/form_component.html.heex:334
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1180,14 +1180,14 @@ msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58 #: lib/cannery_web/live/pack_live/index.html.heex:56
#: lib/cannery_web/live/range_live/index.html.heex:103 #: lib/cannery_web/live/range_live/index.html.heex:101
#: lib/cannery_web/live/type_live/index.html.heex:37 #: lib/cannery_web/live/type_live/index.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All" msgid "All"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:347 #: lib/cannery_web/live/type_live/form_component.html.heex:339
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Attributes" msgid "Attributes"
msgstr "" msgstr ""
@ -1204,7 +1204,7 @@ msgid "Brass height:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:57 #: lib/cannery_web/components/type_table_component.ex:57
#: lib/cannery_web/live/type_live/form_component.html.heex:107 #: lib/cannery_web/live/type_live/form_component.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Chamber size" msgid "Chamber size"
msgstr "" msgstr ""
@ -1220,7 +1220,7 @@ msgid "Dimensions"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:80 #: lib/cannery_web/components/type_table_component.ex:80
#: lib/cannery_web/live/type_live/form_component.html.heex:297 #: lib/cannery_web/live/type_live/form_component.html.heex:289
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Dram equivalent" msgid "Dram equivalent"
msgstr "" msgstr ""
@ -1242,7 +1242,7 @@ msgid "Gauge:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:71 #: lib/cannery_web/components/type_table_component.ex:71
#: lib/cannery_web/live/type_live/form_component.html.heex:235 #: lib/cannery_web/live/type_live/form_component.html.heex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load grains" msgid "Load grains"
msgstr "" msgstr ""
@ -1257,50 +1257,50 @@ msgstr ""
msgid "No ammo" msgid "No ammo"
msgstr "Sin Munición" msgstr "Sin Munición"
#: lib/cannery_web/live/type_live/show.html.heex:58 #: lib/cannery_web/live/type_live/show.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "None specified" msgid "None specified"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:108 #: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30 #: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61 #: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:106 #: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:28 #: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40 #: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:56 #: lib/cannery_web/live/type_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pistol" msgid "Pistol"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:262 #: lib/cannery_web/live/type_live/form_component.html.heex:254
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder" msgid "Powder"
msgstr "Tipo de polvora" msgstr "Tipo de polvora"
#: lib/cannery_web/live/type_live/form_component.html.heex:325 #: lib/cannery_web/live/type_live/form_component.html.heex:317
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer" msgid "Primer"
msgstr "Tipo de espoleta" msgstr "Tipo de espoleta"
#: lib/cannery_web/live/type_live/form_component.html.heex:123 #: lib/cannery_web/live/type_live/form_component.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Projectile" msgid "Projectile"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:106 #: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28 #: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59 #: lib/cannery_web/live/pack_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:104 #: lib/cannery_web/live/range_live/index.html.heex:102
#: lib/cannery_web/live/type_live/form_component.html.heex:26 #: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38 #: lib/cannery_web/live/type_live/index.html.heex:36
#: lib/cannery_web/live/type_live/show.html.heex:54 #: lib/cannery_web/live/type_live/show.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rifle" msgid "Rifle"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:72 #: lib/cannery_web/components/type_table_component.ex:72
#: lib/cannery_web/live/type_live/form_component.html.heex:243 #: lib/cannery_web/live/type_live/form_component.html.heex:235
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot charge weight" msgid "Shot charge weight"
msgstr "" msgstr ""
@ -1311,7 +1311,7 @@ msgid "Shot charge weight:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:69 #: lib/cannery_web/components/type_table_component.ex:69
#: lib/cannery_web/live/type_live/form_component.html.heex:217 #: lib/cannery_web/live/type_live/form_component.html.heex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot material" msgid "Shot material"
msgstr "" msgstr ""
@ -1322,7 +1322,7 @@ msgid "Shot material:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:70 #: lib/cannery_web/components/type_table_component.ex:70
#: lib/cannery_web/live/type_live/form_component.html.heex:227 #: lib/cannery_web/live/type_live/form_component.html.heex:219
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Shot size" msgid "Shot size"
msgstr "Tiros disparados" msgstr "Tiros disparados"
@ -1333,7 +1333,7 @@ msgid "Shot size:"
msgstr "Tiros disparados" msgstr "Tiros disparados"
#: lib/cannery_web/components/type_table_component.ex:68 #: lib/cannery_web/components/type_table_component.ex:68
#: lib/cannery_web/live/type_live/form_component.html.heex:208 #: lib/cannery_web/live/type_live/form_component.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot type" msgid "Shot type"
msgstr "" msgstr ""
@ -1345,22 +1345,22 @@ msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:107 #: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29 #: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60 #: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:105 #: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/form_component.html.heex:27 #: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39 #: lib/cannery_web/live/type_live/index.html.heex:37
#: lib/cannery_web/live/type_live/show.html.heex:52 #: lib/cannery_web/live/type_live/show.html.heex:50
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shotgun" msgid "Shotgun"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:162 #: lib/cannery_web/live/type_live/form_component.html.heex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Slug core" msgid "Slug core"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:213 #: lib/cannery_web/live/type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc" msgid "Target, bird, buck, etc"
msgstr "" msgstr ""
@ -1377,7 +1377,7 @@ msgid "Unfired shell length"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:67 #: lib/cannery_web/components/type_table_component.ex:67
#: lib/cannery_web/live/type_live/form_component.html.heex:200 #: lib/cannery_web/live/type_live/form_component.html.heex:194
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Wadding" msgid "Wadding"
msgstr "" msgstr ""
@ -1394,7 +1394,7 @@ msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:95 #: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21 #: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29 #: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46 #: lib/cannery_web/live/type_live/show.html.heex:44
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Class" msgid "Class"
msgstr "" msgstr ""
@ -1429,7 +1429,7 @@ msgid "New Type"
msgstr "Nuevo tipo de Munición" msgstr "Nuevo tipo de Munición"
#: lib/cannery_web/live/type_live/index.html.heex:8 #: lib/cannery_web/live/type_live/index.html.heex:8
#: lib/cannery_web/live/type_live/index.html.heex:73 #: lib/cannery_web/live/type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Types" msgid "No Types"
msgstr "Tipo" msgstr "Tipo"
@ -1450,7 +1450,7 @@ msgstr ""
msgid "Any" msgid "Any"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138 #: lib/cannery_web/live/range_live/index.html.heex:136
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Dates" msgid "Dates"
msgstr "Fecha" msgstr "Fecha"

View File

@ -117,22 +117,22 @@ msgstr "El enlace de confirmación de usuario no es válido o ha caducado."
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "No está autorizado a ver esta página." msgstr "No está autorizado a ver esta página."
#: lib/cannery/accounts/user.ex:140 #: lib/cannery/accounts/user.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "no cambió" msgstr "no cambió"
#: lib/cannery/accounts/user.ex:161 #: lib/cannery/accounts/user.ex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "no coincide con la contraseña" msgstr "no coincide con la contraseña"
#: lib/cannery/accounts/user.ex:198 #: lib/cannery/accounts/user.ex:201
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "is not valid" msgid "is not valid"
msgstr "no es válido" msgstr "no es válido"
#: lib/cannery/accounts/user.ex:95 #: lib/cannery/accounts/user.ex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "debe tener el signo @ y no contener espacios" msgstr "debe tener el signo @ y no contener espacios"

View File

@ -73,7 +73,7 @@ msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!"
msgid "Are you sure you want to delete %{name}?" msgid "Are you sure you want to delete %{name}?"
msgstr "Está seguro que desea eliminar %{name}?" msgstr "Está seguro que desea eliminar %{name}?"
#: lib/cannery_web/live/pack_live/index.html.heex:174 #: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/show.html.heex:69 #: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?" msgid "Are you sure you want to delete this ammo?"
@ -134,7 +134,7 @@ msgstr "Por favor chequea el correo para verificar tu cuenta"
#: lib/cannery_web/live/pack_live/form_component.html.heex:111 #: lib/cannery_web/live/pack_live/form_component.html.heex:111
#: lib/cannery_web/live/range_live/form_component.html.heex:47 #: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:43 #: lib/cannery_web/live/tag_live/form_component.html.heex:43
#: lib/cannery_web/live/type_live/form_component.html.heex:387 #: lib/cannery_web/live/type_live/form_component.html.heex:379
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "Guardando..." msgstr "Guardando..."
@ -171,7 +171,7 @@ msgid "Shots recorded successfully"
msgstr "Tiros registrados exitosamente" msgstr "Tiros registrados exitosamente"
#: lib/cannery_web/live/pack_live/show.ex:147 #: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178 #: lib/cannery_web/live/range_live/index.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?" msgid "Are you sure you want to delete this shot record?"
msgstr "¿Está segure que quiere borrar este récord de disparos?" msgstr "¿Está segure que quiere borrar este récord de disparos?"
@ -246,8 +246,8 @@ msgid_plural "Ammo added successfully"
msgstr[0] "Munición añadida exitosamente" msgstr[0] "Munición añadida exitosamente"
msgstr[1] "Municiones añadidas exitosamente" msgstr[1] "Municiones añadidas exitosamente"
#: lib/cannery_web/live/type_live/index.html.heex:118 #: lib/cannery_web/live/type_live/index.html.heex:116
#: lib/cannery_web/live/type_live/show.html.heex:29 #: lib/cannery_web/live/type_live/show.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!" msgid "Are you sure you want to delete %{name}? This will delete all %{name} type ammo as well!"
msgstr "" msgstr ""

View File

@ -134,7 +134,7 @@ msgstr "Réinitialisé le mot de passe"
#: lib/cannery_web/live/pack_live/form_component.html.heex:110 #: lib/cannery_web/live/pack_live/form_component.html.heex:110
#: lib/cannery_web/live/range_live/form_component.html.heex:45 #: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:41 #: lib/cannery_web/live/tag_live/form_component.html.heex:41
#: lib/cannery_web/live/type_live/form_component.html.heex:386 #: lib/cannery_web/live/type_live/form_component.html.heex:378
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "Sauvegarder" msgstr "Sauvegarder"
@ -159,7 +159,7 @@ msgstr "Ajouter"
msgid "Why not get some ready to shoot?" msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?" msgstr "Pourquoi pas en préparer pour tirer?"
#: lib/cannery_web/live/pack_live/index.html.heex:116 #: lib/cannery_web/live/pack_live/index.html.heex:114
#: lib/cannery_web/live/pack_live/show.html.heex:84 #: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54 #: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
@ -207,7 +207,7 @@ msgid "View in Catalog"
msgstr "Voir en catalogue" msgstr "Voir en catalogue"
#: lib/cannery_web/components/move_pack_component.ex:77 #: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:127 #: lib/cannery_web/live/pack_live/index.html.heex:125
#: lib/cannery_web/live/pack_live/show.html.heex:80 #: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Move ammo" msgid "Move ammo"
@ -296,55 +296,55 @@ msgstr ""
msgid "Unstage" msgid "Unstage"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:161 #: lib/cannery_web/live/pack_live/index.html.heex:159
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets" msgid "Clone pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:176 #: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:71 #: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets" msgid "Delete pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:149 #: lib/cannery_web/live/pack_live/index.html.heex:147
#: lib/cannery_web/live/pack_live/show.html.heex:59 #: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets" msgid "Edit pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:147 #: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137 #: lib/cannery_web/live/pack_live/index.html.heex:135
#: lib/cannery_web/live/type_live/show.html.heex:201 #: lib/cannery_web/live/type_live/show.html.heex:199
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets" msgid "View pack of %{pack_count} bullets"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:149 #: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181 #: lib/cannery_web/live/range_live/index.html.heex:179
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots" msgid "Delete shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:134 #: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164 #: lib/cannery_web/live/range_live/index.html.heex:162
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots" msgid "Edit shot record of %{shot_record_count} shots"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:107 #: lib/cannery_web/live/type_live/index.html.heex:105
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Clone %{type_name}" msgid "Clone %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:124 #: lib/cannery_web/live/type_live/index.html.heex:122
#: lib/cannery_web/live/type_live/show.html.heex:35 #: lib/cannery_web/live/type_live/show.html.heex:33
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Delete %{type_name}" msgid "Delete %{type_name}"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/index.html.heex:99 #: lib/cannery_web/live/type_live/index.html.heex:97
#: lib/cannery_web/live/type_live/show.html.heex:19 #: lib/cannery_web/live/type_live/show.html.heex:17
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Edit %{type_name}" msgid "Edit %{type_name}"
msgstr "" msgstr ""
@ -354,7 +354,7 @@ msgstr ""
msgid "New Type" msgid "New Type"
msgstr "Nouveau type de munition" msgstr "Nouveau type de munition"
#: lib/cannery_web/live/type_live/index.html.heex:91 #: lib/cannery_web/live/type_live/index.html.heex:89
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "View %{type_name}" msgid "View %{type_name}"
msgstr "" msgstr ""

View File

@ -44,24 +44,24 @@ msgid "Background color"
msgstr "Couleur de fond" msgstr "Couleur de fond"
#: lib/cannery_web/components/type_table_component.ex:86 #: lib/cannery_web/components/type_table_component.ex:86
#: lib/cannery_web/live/type_live/form_component.html.heex:358 #: lib/cannery_web/live/type_live/form_component.html.heex:350
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Blank" msgid "Blank"
msgstr "Vide" msgstr "Vide"
#: lib/cannery_web/live/type_live/form_component.html.heex:195 #: lib/cannery_web/live/type_live/form_component.html.heex:189
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Brass" msgid "Brass"
msgstr "Cuivre" msgstr "Cuivre"
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:163 #: lib/cannery_web/live/type_live/form_component.html.heex:159
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet core" msgid "Bullet core"
msgstr "Noyau de balle" msgstr "Noyau de balle"
#: lib/cannery_web/components/type_table_component.ex:59 #: lib/cannery_web/components/type_table_component.ex:59
#: lib/cannery_web/live/type_live/form_component.html.heex:136 #: lib/cannery_web/live/type_live/form_component.html.heex:132
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bullet type" msgid "Bullet type"
msgstr "Type de balle" msgstr "Type de balle"
@ -79,7 +79,7 @@ msgid "Cartridge"
msgstr "Cartouche" msgstr "Cartouche"
#: lib/cannery_web/components/type_table_component.ex:66 #: lib/cannery_web/components/type_table_component.ex:66
#: lib/cannery_web/live/type_live/form_component.html.heex:188 #: lib/cannery_web/live/type_live/form_component.html.heex:184
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Case material" msgid "Case material"
msgstr "Matériau de la caisse" msgstr "Matériau de la caisse"
@ -100,7 +100,7 @@ msgid "Containers"
msgstr "Conteneurs" msgstr "Conteneurs"
#: lib/cannery_web/components/type_table_component.ex:87 #: lib/cannery_web/components/type_table_component.ex:87
#: lib/cannery_web/live/type_live/form_component.html.heex:362 #: lib/cannery_web/live/type_live/form_component.html.heex:354
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Corrosive" msgid "Corrosive"
msgstr "Corrosive" msgstr "Corrosive"
@ -145,19 +145,19 @@ msgstr "Modifier linvitation"
msgid "Edit Tag" msgid "Edit Tag"
msgstr "Modifier le tag" msgstr "Modifier le tag"
#: lib/cannery_web/live/type_live/form_component.html.heex:151 #: lib/cannery_web/live/type_live/form_component.html.heex:147
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "FMJ" msgid "FMJ"
msgstr "FMJ" msgstr "FMJ"
#: lib/cannery_web/components/type_table_component.ex:58 #: lib/cannery_web/components/type_table_component.ex:58
#: lib/cannery_web/live/type_live/form_component.html.heex:126 #: lib/cannery_web/live/type_live/form_component.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Grains" msgid "Grains"
msgstr "Graines" msgstr "Graines"
#: lib/cannery_web/components/type_table_component.ex:85 #: lib/cannery_web/components/type_table_component.ex:85
#: lib/cannery_web/live/type_live/form_component.html.heex:354 #: lib/cannery_web/live/type_live/form_component.html.heex:346
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Incendiary" msgid "Incendiary"
msgstr "Incendiaire" msgstr "Incendiaire"
@ -208,8 +208,8 @@ msgid "Magazine, Clip, Ammo Box, etc"
msgstr "Chargeur, lame-chargeur, boite de munition, etc." msgstr "Chargeur, lame-chargeur, boite de munition, etc."
#: lib/cannery_web/components/type_table_component.ex:88 #: lib/cannery_web/components/type_table_component.ex:88
#: lib/cannery_web/live/type_live/form_component.html.heex:367 #: lib/cannery_web/live/type_live/form_component.html.heex:359
#: lib/cannery_web/live/type_live/form_component.html.heex:370 #: lib/cannery_web/live/type_live/form_component.html.heex:362
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Fabricant" msgstr "Fabricant"
@ -250,12 +250,12 @@ msgstr "Nouvelle invitation"
msgid "New Tag" msgid "New Tag"
msgstr "Nouveau tag" msgstr "Nouveau tag"
#: lib/cannery_web/live/pack_live/index.html.heex:94 #: lib/cannery_web/live/pack_live/index.html.heex:92
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No Ammo" msgid "No Ammo"
msgstr "Aucune munition" msgstr "Aucune munition"
#: lib/cannery_web/live/type_live/show.html.heex:178 #: lib/cannery_web/live/type_live/show.html.heex:176
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No ammo for this type" msgid "No ammo for this type"
msgstr "Aucune munition pour ce type" msgstr "Aucune munition pour ce type"
@ -299,7 +299,7 @@ msgid "On the bookshelf"
msgstr "Sur létagère" msgstr "Sur létagère"
#: lib/cannery_web/components/type_table_component.ex:79 #: lib/cannery_web/components/type_table_component.ex:79
#: lib/cannery_web/live/type_live/form_component.html.heex:287 #: lib/cannery_web/live/type_live/form_component.html.heex:279
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pressure" msgid "Pressure"
msgstr "Pression" msgstr "Pression"
@ -316,7 +316,7 @@ msgid "Price paid:"
msgstr "Prix payé:" msgstr "Prix payé:"
#: lib/cannery_web/components/type_table_component.ex:82 #: lib/cannery_web/components/type_table_component.ex:82
#: lib/cannery_web/live/type_live/form_component.html.heex:328 #: lib/cannery_web/live/type_live/form_component.html.heex:320
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Primer type" msgid "Primer type"
msgstr "Type damorce" msgstr "Type damorce"
@ -349,7 +349,7 @@ msgstr "Paramètres"
msgid "Simple:" msgid "Simple:"
msgstr "Simple:" msgstr "Simple:"
#: lib/cannery_web/live/type_live/form_component.html.heex:171 #: lib/cannery_web/live/type_live/form_component.html.heex:167
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Steel" msgid "Steel"
msgstr "Acier" msgstr "Acier"
@ -386,7 +386,7 @@ msgid "The self-hosted firearm tracker website"
msgstr "Le site web de suivi darme à feux auto-hébergé" msgstr "Le site web de suivi darme à feux auto-hébergé"
#: lib/cannery_web/components/type_table_component.ex:84 #: lib/cannery_web/components/type_table_component.ex:84
#: lib/cannery_web/live/type_live/form_component.html.heex:350 #: lib/cannery_web/live/type_live/form_component.html.heex:342
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Tracer" msgid "Tracer"
msgstr "Traceuse" msgstr "Traceuse"
@ -460,7 +460,7 @@ msgid "Record shots"
msgstr "Tirs enregistrés" msgstr "Tirs enregistrés"
#: lib/cannery_web/live/range_live/index.html.heex:64 #: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148 #: lib/cannery_web/live/range_live/index.html.heex:146
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No shots recorded" msgid "No shots recorded"
msgstr "Aucun tir enregistré" msgstr "Aucun tir enregistré"
@ -494,41 +494,41 @@ msgstr "Évènements de tir"
#: lib/cannery_web/components/type_table_component.ex:273 #: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37 #: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42 #: lib/cannery_web/live/pack_live/show.html.heex:42
#: lib/cannery_web/live/type_live/show.html.heex:150 #: lib/cannery_web/live/type_live/show.html.heex:148
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "$%{amount}" msgid "$%{amount}"
msgstr "%{amount}$" msgstr "%{amount}$"
#: lib/cannery_web/live/type_live/form_component.html.heex:181 #: lib/cannery_web/live/type_live/form_component.html.heex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Bimetal" msgid "Bimetal"
msgstr "Bi-métal" msgstr "Bi-métal"
#: lib/cannery_web/components/type_table_component.ex:65 #: lib/cannery_web/components/type_table_component.ex:65
#: lib/cannery_web/live/type_live/form_component.html.heex:176 #: lib/cannery_web/live/type_live/form_component.html.heex:172
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Jacket type" msgid "Jacket type"
msgstr "Type de douille" msgstr "Type de douille"
#: lib/cannery_web/components/type_table_component.ex:81 #: lib/cannery_web/components/type_table_component.ex:81
#: lib/cannery_web/live/type_live/form_component.html.heex:311 #: lib/cannery_web/live/type_live/form_component.html.heex:303
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Muzzle velocity" msgid "Muzzle velocity"
msgstr "Vélocité du canon" msgstr "Vélocité du canon"
#: lib/cannery_web/components/type_table_component.ex:75 #: lib/cannery_web/components/type_table_component.ex:75
#: lib/cannery_web/live/type_live/form_component.html.heex:274 #: lib/cannery_web/live/type_live/form_component.html.heex:266
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder grains per charge" msgid "Powder grains per charge"
msgstr "Graines de poudre par charge" msgstr "Graines de poudre par charge"
#: lib/cannery_web/components/type_table_component.ex:73 #: lib/cannery_web/components/type_table_component.ex:73
#: lib/cannery_web/live/type_live/form_component.html.heex:265 #: lib/cannery_web/live/type_live/form_component.html.heex:257
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Powder type" msgid "Powder type"
msgstr "Type de poudre" msgstr "Type de poudre"
#: lib/cannery_web/live/type_live/form_component.html.heex:378 #: lib/cannery_web/live/type_live/form_component.html.heex:370
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "UPC" msgid "UPC"
msgstr "UPC" msgstr "UPC"
@ -552,7 +552,7 @@ msgid "New password"
msgstr "Nouveau mot de passe" msgstr "Nouveau mot de passe"
#: lib/cannery_web/components/type_table_component.ex:83 #: lib/cannery_web/components/type_table_component.ex:83
#: lib/cannery_web/live/type_live/form_component.html.heex:337 #: lib/cannery_web/live/type_live/form_component.html.heex:329
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Firing type" msgid "Firing type"
msgstr "Type dallumage" msgstr "Type dallumage"
@ -576,7 +576,7 @@ msgstr "Éditer les tags de %{name}"
#: lib/cannery_web/components/core_components/container_card.html.heex:37 #: lib/cannery_web/components/core_components/container_card.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:27 #: lib/cannery_web/live/container_live/show.html.heex:27
#: lib/cannery_web/live/type_live/show.html.heex:85 #: lib/cannery_web/live/type_live/show.html.heex:83
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rounds:" msgid "Rounds:"
msgstr "Cartouches:" msgstr "Cartouches:"
@ -584,7 +584,7 @@ msgstr "Cartouches:"
#: lib/cannery_web/components/pack_table_component.ex:178 #: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:259 #: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272 #: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154 #: lib/cannery_web/live/type_live/show.html.heex:152
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No cost information" msgid "No cost information"
msgstr "Aucune information de prix" msgstr "Aucune information de prix"
@ -656,7 +656,7 @@ msgstr "Enregistrer des tirs"
msgid "Copies" msgid "Copies"
msgstr "Exemplaires" msgstr "Exemplaires"
#: lib/cannery_web/live/type_live/show.html.heex:137 #: lib/cannery_web/live/type_live/show.html.heex:135
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Added on:" msgid "Added on:"
msgstr "Ajouté le:" msgstr "Ajouté le:"
@ -721,7 +721,7 @@ msgstr "Ce groupe de munition nest pas dans un conteneur"
#: lib/cannery_web/components/core_components/container_card.html.heex:32 #: lib/cannery_web/components/core_components/container_card.html.heex:32
#: lib/cannery_web/live/container_live/show.html.heex:22 #: lib/cannery_web/live/container_live/show.html.heex:22
#: lib/cannery_web/live/type_live/show.html.heex:111 #: lib/cannery_web/live/type_live/show.html.heex:109
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Packs:" msgid "Packs:"
msgstr "Packages:" msgstr "Packages:"
@ -748,9 +748,9 @@ msgstr ""
msgid "Container:" msgid "Container:"
msgstr "Conteneur" msgstr "Conteneur"
#: lib/cannery_web/live/pack_live/index.html.heex:87 #: lib/cannery_web/live/pack_live/index.html.heex:85
#: lib/cannery_web/live/type_live/index.html.heex:66 #: lib/cannery_web/live/type_live/index.html.heex:64
#: lib/cannery_web/live/type_live/show.html.heex:164 #: lib/cannery_web/live/type_live/show.html.heex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Show used" msgid "Show used"
msgstr "" msgstr ""
@ -780,7 +780,7 @@ msgstr "Cartouches:"
#: lib/cannery_web/live/container_live/index.html.heex:40 #: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:117 #: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170 #: lib/cannery_web/live/type_live/show.html.heex:168
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View as table" msgid "View as table"
msgstr "" msgstr ""
@ -790,7 +790,7 @@ msgstr ""
msgid "Total ever packs" msgid "Total ever packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:128 #: lib/cannery_web/live/type_live/show.html.heex:126
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Total ever packs:" msgid "Total ever packs:"
msgstr "" msgstr ""
@ -800,7 +800,7 @@ msgstr ""
msgid "Total ever rounds" msgid "Total ever rounds"
msgstr "Quantité de cartouches" msgstr "Quantité de cartouches"
#: lib/cannery_web/live/type_live/show.html.heex:102 #: lib/cannery_web/live/type_live/show.html.heex:100
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Total ever rounds:" msgid "Total ever rounds:"
msgstr "Nombre totale de cartouches tirées:" msgstr "Nombre totale de cartouches tirées:"
@ -810,7 +810,7 @@ msgstr "Nombre totale de cartouches tirées:"
msgid "Used packs" msgid "Used packs"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:120 #: lib/cannery_web/live/type_live/show.html.heex:118
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Used packs:" msgid "Used packs:"
msgstr "" msgstr ""
@ -820,7 +820,7 @@ msgstr ""
msgid "Used rounds" msgid "Used rounds"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/show.html.heex:94 #: lib/cannery_web/live/type_live/show.html.heex:92
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Used rounds:" msgid "Used rounds:"
msgstr "" msgstr ""
@ -926,7 +926,7 @@ msgid "UPC:"
msgstr "UPC" msgstr "UPC"
#: lib/cannery_web/components/type_table_component.ex:101 #: lib/cannery_web/components/type_table_component.ex:101
#: lib/cannery_web/live/type_live/show.html.heex:146 #: lib/cannery_web/live/type_live/show.html.heex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Average CPR" msgid "Average CPR"
msgstr "" msgstr ""
@ -994,12 +994,12 @@ msgstr ""
msgid "Edit ammo" msgid "Edit ammo"
msgstr "Éditer le type de munition" msgstr "Éditer le type de munition"
#: lib/cannery_web/live/type_live/index.html.heex:58 #: lib/cannery_web/live/type_live/index.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search catalog" msgid "Search catalog"
msgstr "" msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:79 #: lib/cannery_web/live/pack_live/index.html.heex:77
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Search ammo" msgid "Search ammo"
msgstr "" msgstr ""
@ -1014,14 +1014,14 @@ msgstr ""
msgid "Search tags" msgid "Search tags"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:124 #: lib/cannery_web/live/range_live/index.html.heex:122
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Search shot records" msgid "Search shot records"
msgstr "" msgstr ""
#: lib/cannery_web/components/layouts.ex:15 #: lib/cannery_web/components/layouts.ex:15
#: lib/cannery_web/components/layouts/root.html.heex:8
#: lib/cannery_web/components/layouts/root.html.heex:9 #: lib/cannery_web/components/layouts/root.html.heex:9
#: lib/cannery_web/components/layouts/root.html.heex:10
#: lib/cannery_web/controllers/error_html/error.html.heex:8 #: lib/cannery_web/controllers/error_html/error.html.heex:8
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Cannery" msgid "Cannery"
@ -1118,7 +1118,7 @@ msgstr ""
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:292 #: lib/cannery_web/live/type_live/form_component.html.heex:284
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "+P" msgid "+P"
msgstr "" msgstr ""
@ -1133,12 +1133,12 @@ msgstr ""
msgid "5.56x46mm NATO" msgid "5.56x46mm NATO"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:333 #: lib/cannery_web/live/type_live/form_component.html.heex:325
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Boxer" msgid "Boxer"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:342 #: lib/cannery_web/live/type_live/form_component.html.heex:334
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Centerfire" msgid "Centerfire"
msgstr "" msgstr ""
@ -1181,14 +1181,14 @@ msgid "Close modal"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:105 #: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58 #: lib/cannery_web/live/pack_live/index.html.heex:56
#: lib/cannery_web/live/range_live/index.html.heex:103 #: lib/cannery_web/live/range_live/index.html.heex:101
#: lib/cannery_web/live/type_live/index.html.heex:37 #: lib/cannery_web/live/type_live/index.html.heex:35
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "All" msgid "All"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:347 #: lib/cannery_web/live/type_live/form_component.html.heex:339
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Attributes" msgid "Attributes"
msgstr "" msgstr ""
@ -1205,7 +1205,7 @@ msgid "Brass height:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:57 #: lib/cannery_web/components/type_table_component.ex:57
#: lib/cannery_web/live/type_live/form_component.html.heex:107 #: lib/cannery_web/live/type_live/form_component.html.heex:105
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Chamber size" msgid "Chamber size"
msgstr "" msgstr ""
@ -1221,7 +1221,7 @@ msgid "Dimensions"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:80 #: lib/cannery_web/components/type_table_component.ex:80
#: lib/cannery_web/live/type_live/form_component.html.heex:297 #: lib/cannery_web/live/type_live/form_component.html.heex:289
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Dram equivalent" msgid "Dram equivalent"
msgstr "" msgstr ""
@ -1243,7 +1243,7 @@ msgid "Gauge:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:71 #: lib/cannery_web/components/type_table_component.ex:71
#: lib/cannery_web/live/type_live/form_component.html.heex:235 #: lib/cannery_web/live/type_live/form_component.html.heex:227
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Load grains" msgid "Load grains"
msgstr "" msgstr ""
@ -1258,50 +1258,50 @@ msgstr ""
msgid "No ammo" msgid "No ammo"
msgstr "Aucune munition" msgstr "Aucune munition"
#: lib/cannery_web/live/type_live/show.html.heex:58 #: lib/cannery_web/live/type_live/show.html.heex:56
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "None specified" msgid "None specified"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:108 #: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30 #: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61 #: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:106 #: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:28 #: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40 #: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:56 #: lib/cannery_web/live/type_live/show.html.heex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Pistol" msgid "Pistol"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:262 #: lib/cannery_web/live/type_live/form_component.html.heex:254
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Powder" msgid "Powder"
msgstr "Type de poudre" msgstr "Type de poudre"
#: lib/cannery_web/live/type_live/form_component.html.heex:325 #: lib/cannery_web/live/type_live/form_component.html.heex:317
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Primer" msgid "Primer"
msgstr "Type damorce" msgstr "Type damorce"
#: lib/cannery_web/live/type_live/form_component.html.heex:123 #: lib/cannery_web/live/type_live/form_component.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Projectile" msgid "Projectile"
msgstr "" msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:106 #: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28 #: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59 #: lib/cannery_web/live/pack_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:104 #: lib/cannery_web/live/range_live/index.html.heex:102
#: lib/cannery_web/live/type_live/form_component.html.heex:26 #: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38 #: lib/cannery_web/live/type_live/index.html.heex:36
#: lib/cannery_web/live/type_live/show.html.heex:54 #: lib/cannery_web/live/type_live/show.html.heex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Rifle" msgid "Rifle"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:72 #: lib/cannery_web/components/type_table_component.ex:72
#: lib/cannery_web/live/type_live/form_component.html.heex:243 #: lib/cannery_web/live/type_live/form_component.html.heex:235
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot charge weight" msgid "Shot charge weight"
msgstr "" msgstr ""
@ -1312,7 +1312,7 @@ msgid "Shot charge weight:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:69 #: lib/cannery_web/components/type_table_component.ex:69
#: lib/cannery_web/live/type_live/form_component.html.heex:217 #: lib/cannery_web/live/type_live/form_component.html.heex:211
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot material" msgid "Shot material"
msgstr "" msgstr ""
@ -1323,7 +1323,7 @@ msgid "Shot material:"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:70 #: lib/cannery_web/components/type_table_component.ex:70
#: lib/cannery_web/live/type_live/form_component.html.heex:227 #: lib/cannery_web/live/type_live/form_component.html.heex:219
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Shot size" msgid "Shot size"
msgstr "Tirs réalisés" msgstr "Tirs réalisés"
@ -1334,7 +1334,7 @@ msgid "Shot size:"
msgstr "Tirs réalisés" msgstr "Tirs réalisés"
#: lib/cannery_web/components/type_table_component.ex:68 #: lib/cannery_web/components/type_table_component.ex:68
#: lib/cannery_web/live/type_live/form_component.html.heex:208 #: lib/cannery_web/live/type_live/form_component.html.heex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shot type" msgid "Shot type"
msgstr "" msgstr ""
@ -1346,22 +1346,22 @@ msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:107 #: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29 #: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60 #: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:105 #: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/form_component.html.heex:27 #: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39 #: lib/cannery_web/live/type_live/index.html.heex:37
#: lib/cannery_web/live/type_live/show.html.heex:52 #: lib/cannery_web/live/type_live/show.html.heex:50
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shotgun" msgid "Shotgun"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:61 #: lib/cannery_web/components/type_table_component.ex:61
#: lib/cannery_web/live/type_live/form_component.html.heex:162 #: lib/cannery_web/live/type_live/form_component.html.heex:158
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Slug core" msgid "Slug core"
msgstr "" msgstr ""
#: lib/cannery_web/live/type_live/form_component.html.heex:213 #: lib/cannery_web/live/type_live/form_component.html.heex:207
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Target, bird, buck, etc" msgid "Target, bird, buck, etc"
msgstr "" msgstr ""
@ -1378,7 +1378,7 @@ msgid "Unfired shell length"
msgstr "" msgstr ""
#: lib/cannery_web/components/type_table_component.ex:67 #: lib/cannery_web/components/type_table_component.ex:67
#: lib/cannery_web/live/type_live/form_component.html.heex:200 #: lib/cannery_web/live/type_live/form_component.html.heex:194
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Wadding" msgid "Wadding"
msgstr "" msgstr ""
@ -1395,7 +1395,7 @@ msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:95 #: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21 #: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29 #: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46 #: lib/cannery_web/live/type_live/show.html.heex:44
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Class" msgid "Class"
msgstr "" msgstr ""
@ -1430,7 +1430,7 @@ msgid "New Type"
msgstr "Nouveau type de munition" msgstr "Nouveau type de munition"
#: lib/cannery_web/live/type_live/index.html.heex:8 #: lib/cannery_web/live/type_live/index.html.heex:8
#: lib/cannery_web/live/type_live/index.html.heex:73 #: lib/cannery_web/live/type_live/index.html.heex:71
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "No Types" msgid "No Types"
msgstr "Type" msgstr "Type"
@ -1451,7 +1451,7 @@ msgstr ""
msgid "Any" msgid "Any"
msgstr "" msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138 #: lib/cannery_web/live/range_live/index.html.heex:136
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Dates" msgid "Dates"
msgstr "Date" msgstr "Date"

View File

@ -116,22 +116,22 @@ msgstr "Le lien de confirmation dutilisateur·ice est invalide ou a expiré."
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "Vous nêtes pas autorisé·e à voir cette page." msgstr "Vous nêtes pas autorisé·e à voir cette page."
#: lib/cannery/accounts/user.ex:140 #: lib/cannery/accounts/user.ex:141
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "est inchangé" msgstr "est inchangé"
#: lib/cannery/accounts/user.ex:161 #: lib/cannery/accounts/user.ex:162
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "le mot de passe ne correspond pas" msgstr "le mot de passe ne correspond pas"
#: lib/cannery/accounts/user.ex:198 #: lib/cannery/accounts/user.ex:201
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "is not valid" msgid "is not valid"
msgstr "nest pas valide" msgstr "nest pas valide"
#: lib/cannery/accounts/user.ex:95 #: lib/cannery/accounts/user.ex:96
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "doit contenir le symbole @ et aucune espace" msgstr "doit contenir le symbole @ et aucune espace"

Some files were not shown because too many files have changed in this diff Show More