120 lines
6.7 KiB
Plaintext
Executable File
120 lines
6.7 KiB
Plaintext
Executable File
<div class="min-h-screen bg-gray-50 py-12 px-4 sm:px-6 lg:px-8">
|
|
<div class="max-w-2xl mx-auto space-y-8">
|
|
<!-- Header -->
|
|
<div class="text-center">
|
|
<%= link_to "/" do %>
|
|
<div class="inline-flex items-center justify-center w-16 h-16 bg-gradient-to-br from-purple-600 to-blue-600 rounded-2xl mb-6 mx-auto">
|
|
<i data-lucide="calendar" class="w-8 h-8 text-white"></i>
|
|
</div>
|
|
<% end %>
|
|
<h2 class="text-3xl font-bold text-gray-900">Modifier votre compte</h2>
|
|
<p class="mt-2 text-gray-600">
|
|
Gérez vos informations et préférences
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Profile Form -->
|
|
<div class="bg-white py-8 px-6 shadow-xl rounded-2xl">
|
|
<h3 class="text-xl font-semibold text-gray-900 mb-6">Informations du compte</h3>
|
|
|
|
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, class: "space-y-6" }) do |f| %>
|
|
<%= render "devise/shared/error_messages", resource: resource %>
|
|
|
|
<div class="space-y-5">
|
|
<div>
|
|
<%= f.label :email, class: "block text-sm font-semibold text-gray-700 mb-2" %>
|
|
<div class="relative">
|
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
|
<i data-lucide="mail" class="w-5 h-5 text-gray-400"></i>
|
|
</div>
|
|
<%= f.email_field :email, autofocus: true, autocomplete: "email",
|
|
class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %>
|
|
</div>
|
|
</div>
|
|
|
|
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
|
|
<div class="text-sm text-gray-600 bg-yellow-50 border border-yellow-200 rounded-lg p-4">
|
|
<i data-lucide="alert-circle" class="w-5 h-5 text-yellow-500 inline mr-2"></i>
|
|
En attente de confirmation pour : <%= resource.unconfirmed_email %>
|
|
</div>
|
|
<% end %>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
<div>
|
|
<%= f.label :password, "Nouveau mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %>
|
|
<div class="relative">
|
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
|
<i data-lucide="lock" class="w-5 h-5 text-gray-400"></i>
|
|
</div>
|
|
<%= f.password_field :password, autocomplete: "new-password",
|
|
placeholder: "Laisser vide si vous ne souhaitez pas le changer",
|
|
class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %>
|
|
</div>
|
|
<% if @minimum_password_length %>
|
|
<p class="mt-2 text-sm text-gray-500"><%= t('devise.registrations.new.minimum_password_length', count: @minimum_password_length) %></p>
|
|
<% end %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= f.label :password_confirmation, "Confirmer le nouveau mot de passe", class: "block text-sm font-semibold text-gray-700 mb-2" %>
|
|
<div class="relative">
|
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
|
<i data-lucide="lock" class="w-5 h-5 text-gray-400"></i>
|
|
</div>
|
|
<%= f.password_field :password_confirmation, autocomplete: "new-password",
|
|
placeholder: "Confirmez votre nouveau mot de passe",
|
|
class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<%= f.label :current_password, "Mot de passe actuel", class: "block text-sm font-semibold text-gray-700 mb-2" %>
|
|
<div class="relative">
|
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
|
<i data-lucide="key" class="w-5 h-5 text-gray-400"></i>
|
|
</div>
|
|
<%= f.password_field :current_password, autocomplete: "current-password",
|
|
placeholder: "Requis pour confirmer vos changements",
|
|
class: "block w-full pl-10 pr-3 py-3 border border-gray-300 rounded-xl shadow-sm placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors" %>
|
|
</div>
|
|
<p class="mt-2 text-sm text-gray-500">Requis pour confirmer vos changements</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pt-4">
|
|
<%= f.button type: "submit", class: "group relative w-full flex justify-center items-center py-3 px-4 border border-transparent text-sm font-semibold rounded-xl text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5" do %>
|
|
<i data-lucide="save" class="w-4 h-4 mr-2"></i>
|
|
Mettre à jour
|
|
<% end %>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<!-- Delete Account Section -->
|
|
<div class="bg-white py-8 px-6 shadow-xl rounded-2xl">
|
|
<h3 class="text-xl font-semibold text-gray-900 mb-4">Supprimer mon compte</h3>
|
|
<p class="text-gray-600 mb-6">
|
|
<%= t('devise.registrations.edit.unhappy') %> Cette action est irréversible.
|
|
</p>
|
|
<%= button_to registration_path(resource_name),
|
|
data: {
|
|
confirm: t('devise.registrations.edit.confirm_delete'),
|
|
turbo_confirm: t('devise.registrations.edit.confirm_delete')
|
|
},
|
|
method: :delete,
|
|
class: "group relative w-full flex justify-center items-center py-3 px-4 border border-red-300 text-sm font-semibold rounded-xl text-red-700 bg-red-50 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 transition-all duration-200" do %>
|
|
<i data-lucide="trash-2" class="w-4 h-4 mr-2"></i>
|
|
<%= t('devise.registrations.edit.delete_account') %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<!-- Back Link -->
|
|
<div class="text-center">
|
|
<%= link_to :back, class: "inline-flex items-center text-purple-600 hover:text-purple-500 transition-colors" do %>
|
|
<i data-lucide="arrow-left" class="w-4 h-4 mr-2"></i>
|
|
<%= t('devise.registrations.edit.back') %>
|
|
<% end %>
|
|
</div>
|
|
</div>
|
|
</div> |