lesli_mailer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/Rakefile +5 -0
 - data/app/assets/config/lesli_mailer_manifest.js +1 -0
 - data/app/assets/images/lesli_mailer/mailer-logo.svg +7 -0
 - data/app/assets/stylesheets/lesli_mailer/application.css +15 -0
 - data/app/controllers/lesli_mailer/accounts_controller.rb +60 -0
 - data/app/controllers/lesli_mailer/application_controller.rb +4 -0
 - data/app/controllers/lesli_mailer/dashboards_controller.rb +4 -0
 - data/app/helpers/lesli_mailer/accounts_helper.rb +4 -0
 - data/app/helpers/lesli_mailer/application_helper.rb +4 -0
 - data/app/helpers/lesli_mailer/dashboards_helper.rb +4 -0
 - data/app/jobs/lesli_mailer/application_job.rb +4 -0
 - data/app/mailers/lesli_mailer/application_mailer.rb +6 -0
 - data/app/models/lesli_mailer/account.rb +12 -0
 - data/app/models/lesli_mailer/application_record.rb +5 -0
 - data/app/models/lesli_mailer/dashboard.rb +8 -0
 - data/app/views/lesli_mailer/accounts/_account.html.erb +2 -0
 - data/app/views/lesli_mailer/accounts/_form.html.erb +17 -0
 - data/app/views/lesli_mailer/accounts/edit.html.erb +10 -0
 - data/app/views/lesli_mailer/accounts/index.html.erb +14 -0
 - data/app/views/lesli_mailer/accounts/new.html.erb +9 -0
 - data/app/views/lesli_mailer/accounts/show.html.erb +10 -0
 - data/app/views/lesli_mailer/dashboards/_dashboard.html.erb +2 -0
 - data/app/views/lesli_mailer/dashboards/_form.html.erb +17 -0
 - data/app/views/lesli_mailer/dashboards/edit.html.erb +10 -0
 - data/app/views/lesli_mailer/dashboards/index.html.erb +14 -0
 - data/app/views/lesli_mailer/dashboards/new.html.erb +9 -0
 - data/app/views/lesli_mailer/dashboards/show.html.erb +1 -0
 - data/app/views/lesli_mailer/emails/lesli/devise/confirmation_instructions.html.erb +122 -0
 - data/app/views/lesli_mailer/emails/lesli/devise/reset_password_instructions.html.erb +122 -0
 - data/app/views/lesli_mailer/emails/lesli/devise/welcome.html.erb +122 -0
 - data/config/routes.rb +3 -0
 - data/db/migrate/0205000110_create_lesli_mailer_accounts.rb +5 -0
 - data/db/migrate/0205003010_create_lesli_mailer_dashboards.rb +5 -0
 - data/lib/lesli_mailer/engine.rb +57 -0
 - data/lib/lesli_mailer/version.rb +4 -0
 - data/lib/lesli_mailer.rb +6 -0
 - data/lib/lesli_mailer_builder/lesli/appstore.mjml +64 -0
 - data/lib/lesli_mailer_builder/lesli/copy.mjml +43 -0
 - data/lib/lesli_mailer_builder/lesli/debug.mjml +46 -0
 - data/lib/lesli_mailer_builder/lesli/devise/confirmation_instructions.mjml +70 -0
 - data/lib/lesli_mailer_builder/lesli/devise/reset_password_instructions.mjml +74 -0
 - data/lib/lesli_mailer_builder/lesli/devise/welcome.mjml +79 -0
 - data/lib/lesli_mailer_builder/lesli/footer.mjml +41 -0
 - data/lib/lesli_mailer_builder/lesli/head.mjml +53 -0
 - data/lib/lesli_mailer_builder/lesli/header.mjml +37 -0
 - data/lib/lesli_mailer_builder/lesli/logo.mjml +48 -0
 - data/lib/lesli_mailer_builder/lesli/social.mjml +50 -0
 - data/lib/lesli_mailer_emails/lesli/devise/confirmation_instructions.html +122 -0
 - data/lib/lesli_mailer_emails/lesli/devise/reset_password_instructions.html +122 -0
 - data/lib/lesli_mailer_emails/lesli/devise/welcome.html +122 -0
 - data/lib/lesli_mailer_previews/devise_mailer_preview.rb +54 -0
 - data/lib/tasks/lesli_mailer_tasks.rake +4 -0
 - data/license +674 -0
 - data/readme.md +83 -0
 - metadata +114 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 023a23cd774e4aec95498944c04ba0bfe633017b59ae90cb4eb672024cc5ef11
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: effa4c4d291d37cd90461c06dc367cdc59d11965fbbd811285f7686b75aabd97
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 62cd8c3073630f925b23995ef21edf7b47938a87238a72e15928767bb901fe9f129084b9c1debbdde1ff6f77bb32cdf5d77a69f39e25dae617913a91f88981db
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ebec777997607e8b74250eeb0e350f7b980a59513ac3ae2578a5dd72f7027c1c7fcb58be5707b953b501852d72a8a3ca9f3d48e9938ebfbadebb8a87a21bdac2
         
     | 
    
        data/Rakefile
    ADDED
    
    
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            //= link_directory ../stylesheets/lesli_mailer .css
         
     | 
| 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 2" viewBox="0 0 48 48.34">
         
     | 
| 
      
 2 
     | 
    
         
            +
                <g data-name="Layer 1">
         
     | 
| 
      
 3 
     | 
    
         
            +
                    <path fill="#193d8d" d="M6.83 4.21v18.16L24 35.42l17.18-13.06V4.21zm2.85 2.98h14.59v2.02H9.68zm28.66 13.64H9.67v-2.02h28.66v2.02Zm0-5.81H9.67V13h28.66v2.02Zm3.99 6.6L48 17.31 42.33 13zM5.67 12.93 0 17.24l5.67 4.31zm22.51-9.75L24 0l-4.18 3.18z"/>
         
     | 
| 
      
 4 
     | 
    
         
            +
                    <path fill="#193d8d" d="M19.57 33.47 24 36.83l4.43-3.36L48 48.34H0z"/>
         
     | 
| 
      
 5 
     | 
    
         
            +
                    <path fill="#193d8d" d="M28.43 33.46v.01L48 48.34V18.59zm-8.86 0v.01L0 48.34V18.59z"/>
         
     | 
| 
      
 6 
     | 
    
         
            +
                </g>
         
     | 
| 
      
 7 
     | 
    
         
            +
            </svg>
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2 
     | 
    
         
            +
             * This is a manifest file that'll be compiled into application.css, which will include all the files
         
     | 
| 
      
 3 
     | 
    
         
            +
             * listed below.
         
     | 
| 
      
 4 
     | 
    
         
            +
             *
         
     | 
| 
      
 5 
     | 
    
         
            +
             * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
         
     | 
| 
      
 6 
     | 
    
         
            +
             * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
         
     | 
| 
      
 7 
     | 
    
         
            +
             *
         
     | 
| 
      
 8 
     | 
    
         
            +
             * You're free to add application-wide styles to this file and they'll appear at the bottom of the
         
     | 
| 
      
 9 
     | 
    
         
            +
             * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
         
     | 
| 
      
 10 
     | 
    
         
            +
             * files in this directory. Styles in this file should be added after the last require_* statement.
         
     | 
| 
      
 11 
     | 
    
         
            +
             * It is generally better to create a new file per style scope.
         
     | 
| 
      
 12 
     | 
    
         
            +
             *
         
     | 
| 
      
 13 
     | 
    
         
            +
             *= require_tree .
         
     | 
| 
      
 14 
     | 
    
         
            +
             *= require_self
         
     | 
| 
      
 15 
     | 
    
         
            +
             */
         
     | 
| 
         @@ -0,0 +1,60 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module LesliMailer
         
     | 
| 
      
 2 
     | 
    
         
            +
              class AccountsController < ApplicationController
         
     | 
| 
      
 3 
     | 
    
         
            +
                before_action :set_account, only: %i[ show edit update destroy ]
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                # GET /accounts
         
     | 
| 
      
 6 
     | 
    
         
            +
                def index
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @accounts = Account.all
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                # GET /accounts/1
         
     | 
| 
      
 11 
     | 
    
         
            +
                def show
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                # GET /accounts/new
         
     | 
| 
      
 15 
     | 
    
         
            +
                def new
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @account = Account.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                # GET /accounts/1/edit
         
     | 
| 
      
 20 
     | 
    
         
            +
                def edit
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # POST /accounts
         
     | 
| 
      
 24 
     | 
    
         
            +
                def create
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @account = Account.new(account_params)
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                  if @account.save
         
     | 
| 
      
 28 
     | 
    
         
            +
                    redirect_to @account, notice: "Account was successfully created."
         
     | 
| 
      
 29 
     | 
    
         
            +
                  else
         
     | 
| 
      
 30 
     | 
    
         
            +
                    render :new, status: :unprocessable_entity
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                # PATCH/PUT /accounts/1
         
     | 
| 
      
 35 
     | 
    
         
            +
                def update
         
     | 
| 
      
 36 
     | 
    
         
            +
                  if @account.update(account_params)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    redirect_to @account, notice: "Account was successfully updated.", status: :see_other
         
     | 
| 
      
 38 
     | 
    
         
            +
                  else
         
     | 
| 
      
 39 
     | 
    
         
            +
                    render :edit, status: :unprocessable_entity
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                # DELETE /accounts/1
         
     | 
| 
      
 44 
     | 
    
         
            +
                def destroy
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @account.destroy
         
     | 
| 
      
 46 
     | 
    
         
            +
                  redirect_to accounts_url, notice: "Account was successfully destroyed.", status: :see_other
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                private
         
     | 
| 
      
 50 
     | 
    
         
            +
                  # Use callbacks to share common setup or constraints between actions.
         
     | 
| 
      
 51 
     | 
    
         
            +
                  def set_account
         
     | 
| 
      
 52 
     | 
    
         
            +
                    @account = Account.find(params[:id])
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  # Only allow a list of trusted parameters through.
         
     | 
| 
      
 56 
     | 
    
         
            +
                  def account_params
         
     | 
| 
      
 57 
     | 
    
         
            +
                    params.fetch(:account, {})
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%= form_with(model: account) do |form| %>
         
     | 
| 
      
 2 
     | 
    
         
            +
              <% if account.errors.any? %>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div style="color: red">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <h2><%= pluralize(account.errors.count, "error") %> prohibited this account from being saved:</h2>
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  <ul>
         
     | 
| 
      
 7 
     | 
    
         
            +
                    <% account.errors.each do |error| %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                      <li><%= error.full_message %></li>
         
     | 
| 
      
 9 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  </ul>
         
     | 
| 
      
 11 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 12 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              <div>
         
     | 
| 
      
 15 
     | 
    
         
            +
                <%= form.submit %>
         
     | 
| 
      
 16 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 17 
     | 
    
         
            +
            <% end %>
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <p style="color: green"><%= notice %></p>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <h1>Accounts</h1>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <div id="accounts">
         
     | 
| 
      
 6 
     | 
    
         
            +
              <% @accounts.each do |account| %>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <%= render account %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                <p>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <%= link_to "Show this account", account %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 12 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            <%= link_to "New account", new_account_path %>
         
     | 
| 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <p style="color: green"><%= notice %></p>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <%= render @account %>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <div>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <%= link_to "Edit this account", edit_account_path(@account) %> |
         
     | 
| 
      
 7 
     | 
    
         
            +
              <%= link_to "Back to accounts", accounts_path %>
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              <%= button_to "Destroy this account", @account, method: :delete %>
         
     | 
| 
      
 10 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%= form_with(model: dashboard) do |form| %>
         
     | 
| 
      
 2 
     | 
    
         
            +
              <% if dashboard.errors.any? %>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <div style="color: red">
         
     | 
| 
      
 4 
     | 
    
         
            +
                  <h2><%= pluralize(dashboard.errors.count, "error") %> prohibited this dashboard from being saved:</h2>
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  <ul>
         
     | 
| 
      
 7 
     | 
    
         
            +
                    <% dashboard.errors.each do |error| %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                      <li><%= error.full_message %></li>
         
     | 
| 
      
 9 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  </ul>
         
     | 
| 
      
 11 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 12 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              <div>
         
     | 
| 
      
 15 
     | 
    
         
            +
                <%= form.submit %>
         
     | 
| 
      
 16 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 17 
     | 
    
         
            +
            <% end %>
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <p style="color: green"><%= notice %></p>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <h1>Dashboards</h1>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <div id="dashboards">
         
     | 
| 
      
 6 
     | 
    
         
            +
              <% @dashboards.each do |dashboard| %>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <%= render dashboard %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                <p>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <%= link_to "Show this dashboard", dashboard %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <% end %>
         
     | 
| 
      
 12 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            <%= link_to "New dashboard", new_dashboard_path %>
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%= render("/lesli/shared/dashboards/show") %>
         
     | 
| 
         @@ -0,0 +1,122 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!doctype html><html lang="und" dir="auto" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title></title><!--[if !mso]><!--><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if mso]>
         
     | 
| 
      
 2 
     | 
    
         
            +
                <noscript>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <xml>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <o:OfficeDocumentSettings>
         
     | 
| 
      
 5 
     | 
    
         
            +
                  <o:AllowPNG/>
         
     | 
| 
      
 6 
     | 
    
         
            +
                  <o:PixelsPerInch>96</o:PixelsPerInch>
         
     | 
| 
      
 7 
     | 
    
         
            +
                </o:OfficeDocumentSettings>
         
     | 
| 
      
 8 
     | 
    
         
            +
                </xml>
         
     | 
| 
      
 9 
     | 
    
         
            +
                </noscript>
         
     | 
| 
      
 10 
     | 
    
         
            +
                <![endif]--><!--[if lte mso 11]>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <style type="text/css">
         
     | 
| 
      
 12 
     | 
    
         
            +
                  .mj-outlook-group-fix { width:100% !important; }
         
     | 
| 
      
 13 
     | 
    
         
            +
                </style>
         
     | 
| 
      
 14 
     | 
    
         
            +
                <![endif]--><!--[if !mso]><!--><!--<![endif]--></head><body style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #ebecf0; margin: 0; padding: 0; word-spacing: normal;"><div style="background-color:#ebecf0;" lang="und" dir="auto"><!-- Email header --><!-- Lesli
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 19 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 20 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 21 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 24 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 25 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 26 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 29 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 34 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 37 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 38 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 41 
     | 
    
         
            +
            // · --><!-- Lesli header --><!-- Lesli
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 46 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 47 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 48 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 51 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 52 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 53 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 56 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 61 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 64 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 65 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 68 
     | 
    
         
            +
            // · --><!-- Lesli logo --><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"><tbody><tr><td style="border-collapse: collapse; direction: ltr; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 20px 0; text-align: center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; vertical-align: top;" width="100%"><tbody><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 0px; padding-bottom: 0px; padding-left: 5px; padding-top: 60px; word-break: break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; border-spacing: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt;"><tbody><tr><td style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 125px;"><img alt src="https://cdn.lesli.tech/leslicloud/brand/app-logo.png" style="-ms-interpolation-mode: bicubic; border: 0; display: block; font-size: 13px; height: auto; line-height: 100%; outline: none; text-decoration: none; width: 100%;" width="125" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--><div style="height:5px;line-height:5px;"> </div><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#4a5056;"><h1>Welcome to Lesli</h1></div><!-- Email content --><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="background:#ffffff;background-color:#ffffff;margin:0px auto;border-radius:15px;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background: #ffffff; background-color: #ffffff; border-collapse: collapse; border-radius: 15px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"><tbody><tr><td style="border-collapse: collapse; direction: ltr; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 40px; text-align: center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:520px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; vertical-align: top;" width="100%"><tbody><tr><td align="left" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:16px;line-height:1.2;text-align:left;color:#4a5056;">Please take a moment to validate your email address so that we know it's you.</div></td></tr><tr><td style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:10px;line-height:10px;"> </div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: separate; line-height: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;"><tbody><tr><td align="center" bgcolor="#eef6fc" role="presentation" style="background: #eef6fc; border: 1px solid #209cee; border-collapse: collapse; border-radius: 5px; cursor: auto; mso-padding-alt: 10px 25px; mso-table-lspace: 0pt; mso-table-rspace: 0pt;" valign="middle"><a href="<%= @params[:url] %>" style="display:inline-block;background:#eef6fc;color:#209cee;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:5px;" target="_blank">Confirm my account</a></td></tr></tbody></table></td></tr><tr><td style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:20px;line-height:20px;"> </div></td></tr><tr><td style="background: #95a3ab; border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:1px;line-height:1px;"> </div></td></tr><tr><td style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:20px;line-height:20px;"> </div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:14px;line-height:1.2;text-align:center;color:#4a5056;">Please keep in mind that this link is valid for only 3 hours.</div></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--> <!-- Email footer --><!-- Lesli
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 73 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 74 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 75 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 78 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 79 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 80 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 83 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 88 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 91 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 92 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 95 
     | 
    
         
            +
            // · --><!-- Lesli footer --><!-- <mj-spacer height="30px" /> --><!-- <mj-include path="social.mjml" /> --><!-- <mj-include path="appstore.mjml" /> --><!-- <mj-spacer height="10px" /> --><!-- Lesli
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 100 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 101 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 102 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 105 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 106 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 107 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 110 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 115 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 118 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 119 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 122 
     | 
    
         
            +
            // · --><!-- Copyright --><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"><tbody><tr><td style="border-collapse: collapse; direction: ltr; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 20px 0; text-align: center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; vertical-align: top;" width="100%"><tbody><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 4px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#666666;">Copyright © 2025 Lesli</div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 4px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#666666;">Guatemala.</div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 4px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#666666;">All rights reserved.</div></td></tr><!-- <mj-text align="center" color="#666666" padding="4px" padding-top="20px">The Lesli Team</mj-text> --></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></div></body></html>
         
     | 
| 
         @@ -0,0 +1,122 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!doctype html><html lang="und" dir="auto" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><title></title><!--[if !mso]><!--><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]--><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if mso]>
         
     | 
| 
      
 2 
     | 
    
         
            +
                <noscript>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <xml>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <o:OfficeDocumentSettings>
         
     | 
| 
      
 5 
     | 
    
         
            +
                  <o:AllowPNG/>
         
     | 
| 
      
 6 
     | 
    
         
            +
                  <o:PixelsPerInch>96</o:PixelsPerInch>
         
     | 
| 
      
 7 
     | 
    
         
            +
                </o:OfficeDocumentSettings>
         
     | 
| 
      
 8 
     | 
    
         
            +
                </xml>
         
     | 
| 
      
 9 
     | 
    
         
            +
                </noscript>
         
     | 
| 
      
 10 
     | 
    
         
            +
                <![endif]--><!--[if lte mso 11]>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <style type="text/css">
         
     | 
| 
      
 12 
     | 
    
         
            +
                  .mj-outlook-group-fix { width:100% !important; }
         
     | 
| 
      
 13 
     | 
    
         
            +
                </style>
         
     | 
| 
      
 14 
     | 
    
         
            +
                <![endif]--><!--[if !mso]><!--><!--<![endif]--></head><body style="-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; background-color: #ebecf0; margin: 0; padding: 0; word-spacing: normal;"><div style="background-color:#ebecf0;" lang="und" dir="auto"><!-- Email header --><!-- Lesli
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 19 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 20 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 21 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 24 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 25 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 26 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 29 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 34 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 37 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 38 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 41 
     | 
    
         
            +
            // · --><!-- Lesli header --><!-- Lesli
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 46 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 47 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 48 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 51 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 52 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 53 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 56 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 61 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 64 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 65 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 68 
     | 
    
         
            +
            // · --><!-- Lesli logo --><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"><tbody><tr><td style="border-collapse: collapse; direction: ltr; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 20px 0; text-align: center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; vertical-align: top;" width="100%"><tbody><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 0px; padding-bottom: 0px; padding-left: 5px; padding-top: 60px; word-break: break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; border-spacing: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt;"><tbody><tr><td style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 125px;"><img alt src="https://cdn.lesli.tech/leslicloud/brand/app-logo.png" style="-ms-interpolation-mode: bicubic; border: 0; display: block; font-size: 13px; height: auto; line-height: 100%; outline: none; text-decoration: none; width: 100%;" width="125" height="auto"></td></tr></tbody></table></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--><div style="height:5px;line-height:5px;"> </div><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#4a5056;"><h1>Hello <%= @params[:full_name] %></h1></div><!-- Email content --><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="background:#ffffff;background-color:#ffffff;margin:0px auto;border-radius:15px;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background: #ffffff; background-color: #ffffff; border-collapse: collapse; border-radius: 15px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"><tbody><tr><td style="border-collapse: collapse; direction: ltr; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 40px; text-align: center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:520px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; vertical-align: top;" width="100%"><tbody><tr><td align="left" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:16px;line-height:1.2;text-align:left;color:#4a5056;">We've received a request to reset your password.</div></td></tr><tr><td align="left" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:16px;line-height:1.2;text-align:left;color:#4a5056;">If you didn't make the request, please ignore this message. Otherwise, you can reset your password using this link:</div></td></tr><tr><td style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:10px;line-height:10px;"> </div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: separate; line-height: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt;"><tbody><tr><td align="center" bgcolor="#eef6fc" role="presentation" style="background: #eef6fc; border: 1px solid #209cee; border-collapse: collapse; border-radius: 5px; cursor: auto; mso-padding-alt: 10px 25px; mso-table-lspace: 0pt; mso-table-rspace: 0pt;" valign="middle"><a href="<%= @params[:url] %>" style="display:inline-block;background:#eef6fc;color:#209cee;font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:16px;font-weight:normal;line-height:120%;margin:0;text-decoration:none;text-transform:none;padding:10px 25px;mso-padding-alt:0px;border-radius:5px;" target="_blank">Click here to reset password</a></td></tr></tbody></table></td></tr><tr><td style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:20px;line-height:20px;"> </div></td></tr><tr><td style="background: #95a3ab; border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:1px;line-height:1px;"> </div></td></tr><tr><td style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; word-break: break-word;"><div style="height:20px;line-height:20px;"> </div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 10px 25px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:14px;line-height:1.2;text-align:center;color:#4a5056;">Please keep in mind that this link is valid for only 3 hours.</div></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--> <!-- Email footer --><!-- Lesli
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 73 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 74 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 75 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 78 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 79 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 80 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 83 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 88 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 91 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 92 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 95 
     | 
    
         
            +
            // · --><!-- Lesli footer --><!-- <mj-spacer height="30px" /> --><!-- <mj-include path="social.mjml" /> --><!-- <mj-include path="appstore.mjml" /> --><!-- <mj-spacer height="10px" /> --><!-- Lesli
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            Copyright (c) 2025, Lesli Technologies, S. A.
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            This program is free software: you can redistribute it and/or modify
         
     | 
| 
      
 100 
     | 
    
         
            +
            it under the terms of the GNU General Public License as published by
         
     | 
| 
      
 101 
     | 
    
         
            +
            the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
      
 102 
     | 
    
         
            +
            (at your option) any later version.
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            This program is distributed in the hope that it will be useful,
         
     | 
| 
      
 105 
     | 
    
         
            +
            but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
      
 106 
     | 
    
         
            +
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         
     | 
| 
      
 107 
     | 
    
         
            +
            GNU General Public License for more details.
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            You should have received a copy of the GNU General Public License
         
     | 
| 
      
 110 
     | 
    
         
            +
            along with this program. If not, see http://www.gnu.org/licenses/.
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
            Lesli · Ruby on Rails SaaS Development Framework.
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            Made with ♥ by LesliTech
         
     | 
| 
      
 115 
     | 
    
         
            +
            Building a better future, one line of code at a time.
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            @contact  hello@lesli.tech
         
     | 
| 
      
 118 
     | 
    
         
            +
            @website  https://www.lesli.tech
         
     | 
| 
      
 119 
     | 
    
         
            +
            @license  GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
            // · ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~     ~·~
         
     | 
| 
      
 122 
     | 
    
         
            +
            // · --><!-- Copyright --><!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" role="presentation" style="width:600px;" width="600" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]--><div style="margin:0px auto;max-width:600px;"><table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;"><tbody><tr><td style="border-collapse: collapse; direction: ltr; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 20px 0; text-align: center;"><!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:600px;" ><![endif]--><div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;"><table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; vertical-align: top;" width="100%"><tbody><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 4px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#666666;">Copyright © 2025 Lesli</div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 4px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#666666;">Guatemala.</div></td></tr><tr><td align="center" style="border-collapse: collapse; font-size: 0px; mso-table-lspace: 0pt; mso-table-rspace: 0pt; padding: 4px; word-break: break-word;"><div style="font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:center;color:#666666;">All rights reserved.</div></td></tr><!-- <mj-text align="center" color="#666666" padding="4px" padding-top="20px">The Lesli Team</mj-text> --></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></div></body></html>
         
     |