Port admin to new layout
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Basti 2022-02-20 11:13:07 -06:00
parent 4f2b35ccb9
commit 2e301c3019
Signed by untrusted user: basti
GPG Key ID: 9F88009D31D99C72
19 changed files with 507 additions and 473 deletions

View File

@ -8,6 +8,13 @@ body {
background-attachment: fixed; background-attachment: fixed;
} }
body#admin-panel {
background: linear-gradient(35deg, rgba(255,0,255,0.2) 0, rgba(153,12,14,0.9) 100%),
url('/img/bg-1.jpg');
background-size: cover;
background-attachment: fixed;
}
.ks-site-icon { .ks-site-icon {
svg { svg {
display: inline-block; display: inline-block;
@ -60,30 +67,6 @@ body {
} }
} }
body#admin-panel {
#wrapper {
> header {
background: $color-red-bright;
background: linear-gradient(35deg, rgba(255,0,255,0.2) 0, rgba(153,12,14,0.9) 100%),
url('/img/bg-1.jpg');
}
}
#main-nav {
ul {
grid-template-columns: repeat(4, 1fr);
li {
a {
&.active {
border-bottom: 2px solid $color-red-bright;
}
}
}
}
}
}
.flash-msg { .flash-msg {
width: 100%; width: 100%;
text-align: center; text-align: center;
@ -123,14 +106,6 @@ main {
table { table {
width: 100%; width: 100%;
th, td {
&.hide-small {
@include media-max(small) {
display: none;
}
}
}
th { th {
color: $text-color-discreet; color: $text-color-discreet;
font-weight: normal; font-weight: normal;

View File

@ -1,3 +1,7 @@
<p class="text-center"> <%= render partial: "components/header", locals: { page_title: "Admin Panel" } %>
With great power comes great responsibility.
</p> <%= render layout: "components/main_simple" do %>
<p class="text-center">
With great power comes great responsibility.
</p>
<% end %>

View File

@ -1,8 +1,12 @@
<h2>Editing Donation</h2> <%= render partial: "components/header", locals: { page_title: "Donations" } %>
<%= render 'form', donation: @donation, url: admin_donation_path(@donation) %> <%= render layout: "components/main_simple" do %>
<h2>Editing Donation</h2>
<p class="mt-8"> <%= render 'form', donation: @donation, url: admin_donation_path(@donation) %>
<%= link_to 'Show', admin_donation_path(@donation), class: 'ks-text-link' %> |
<%= link_to 'Back', admin_donations_path, class: 'ks-text-link' %> <p class="mt-8">
<p> <%= link_to 'Show', admin_donation_path(@donation), class: 'ks-text-link' %> |
<%= link_to 'Back', admin_donations_path, class: 'ks-text-link' %>
<p>
<% end %>

View File

@ -1,41 +1,43 @@
<h2>Donations</h2> <%= render partial: "components/header", locals: { page_title: "Donations" } %>
<% if @donations.any? %> <%= render layout: "components/main_simple" do %>
<table> <% if @donations.any? %>
<thead> <table class="w-full">
<tr> <thead>
<th>User</th> <tr class="text-left">
<th>Amount BTC</th> <th>User</th>
<th>in EUR</th> <th>Amount BTC</th>
<th>in USD</th> <th>in EUR</th>
<th>Public name</th> <th>in USD</th>
<th>Date</th> <th>Public name</th>
<th colspan="3"></th> <th>Date</th>
</tr> <th colspan="3"></th>
</thead>
<tbody>
<% @donations.each do |donation| %>
<tr>
<td><%= donation.user.cn %></td>
<td><%= sats_to_btc donation.amount_sats %> BTC</td>
<td><%= number_to_currency donation.amount_eur / 100, unit: "" %></td>
<td><%= number_to_currency donation.amount_usd / 100, unit: "" %></td>
<td><%= donation.public_name %></td>
<td><%= donation.paid_at ? donation.paid_at.strftime("%Y-%m-%d") : "" %></td>
<td><%= link_to 'Show', admin_donation_path(donation), class: 'btn btn-sm btn-gray' %></td>
<td><%= link_to 'Edit', edit_admin_donation_path(donation), class: 'btn btn-sm btn-gray' %></td>
<td><%= link_to 'Destroy', admin_donation_path(donation), class: 'btn btn-sm btn-red', method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr> </tr>
<% end %> </thead>
</tbody>
</table> <tbody>
<% else %> <% @donations.each do |donation| %>
<p> <tr>
No donations yet. <td><%= donation.user.address %></td>
<td><%= sats_to_btc donation.amount_sats %> BTC</td>
<td><%= number_to_currency donation.amount_eur / 100, unit: "" %></td>
<td><%= number_to_currency donation.amount_usd / 100, unit: "" %></td>
<td><%= donation.public_name %></td>
<td><%= donation.paid_at ? donation.paid_at.strftime("%Y-%m-%d") : "" %></td>
<td><%= link_to 'Show', admin_donation_path(donation), class: 'btn btn-sm btn-gray' %></td>
<td><%= link_to 'Edit', edit_admin_donation_path(donation), class: 'btn btn-sm btn-gray' %></td>
<td><%= link_to 'Destroy', admin_donation_path(donation), class: 'btn btn-sm btn-red', method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p>
No donations yet.
</p>
<% end %>
<p class="mt-12">
<%= link_to 'Record an out-of-system donation', new_admin_donation_path, class: 'btn-md btn-gray' %>
</p> </p>
<% end %> <% end %>
<p class="mt-12">
<%= link_to 'Record an out-of-system donation', new_admin_donation_path, class: 'btn-md btn-gray' %>
</p>

View File

@ -1,7 +1,11 @@
<h2>New Donation</h2> <%= render partial: "components/header", locals: { page_title: "Donations" } %>
<%= render 'form', donation: @donation, url: admin_donations_path %> <%= render layout: "components/main_simple" do %>
<h2>New Donation</h2>
<p class="mt-8"> <%= render 'form', donation: @donation, url: admin_donations_path %>
<%= link_to 'Back', admin_donations_path, class: 'ks-text-link' %>
</p> <p class="mt-8">
<%= link_to 'Back', admin_donations_path, class: 'ks-text-link' %>
</p>
<% end %>

View File

@ -1,36 +1,40 @@
<p id="notice"><%= notice %></p> <%= render partial: "components/header", locals: { page_title: "Donations" } %>
<p> <%= render layout: "components/main_simple" do %>
<strong>User:</strong> <p id="notice"><%= notice %></p>
<%= @donation.user_id %>
</p>
<p> <p>
<strong>Amount sats:</strong> <strong>User:</strong>
<%= @donation.amount_sats %> <%= @donation.user.address %>
</p> </p>
<p> <p>
<strong>Amount eur:</strong> <strong>Amount sats:</strong>
<%= @donation.amount_eur %> <%= @donation.amount_sats %>
</p> </p>
<p> <p>
<strong>Amount usd:</strong> <strong>Amount eur:</strong>
<%= @donation.amount_usd %> <%= @donation.amount_eur %>
</p> </p>
<p> <p>
<strong>Public name:</strong> <strong>Amount usd:</strong>
<%= @donation.public_name %> <%= @donation.amount_usd %>
</p> </p>
<p> <p>
<strong>Date:</strong> <strong>Public name:</strong>
<%= @donation.paid_at %> <%= @donation.public_name %>
</p> </p>
<p class="mt-8"> <p>
<%= link_to 'Edit', edit_admin_donation_path(@donation), class: 'ks-text-link' %> | <strong>Date:</strong>
<%= link_to 'Back', admin_donations_path, class: 'ks-text-link' %> <%= @donation.paid_at %>
</p> </p>
<p class="mt-8">
<%= link_to 'Edit', edit_admin_donation_path(@donation), class: 'ks-text-link' %> |
<%= link_to 'Back', admin_donations_path, class: 'ks-text-link' %>
</p>
<% end %>

View File

@ -1,32 +1,35 @@
<section> <%= render partial: "components/header", locals: { page_title: "Invitations" } %>
<h2>Invitations</h2>
<p> <%= render layout: "components/main_simple" do %>
There are currently <strong><%= @invitations_unused_count %>
unused invitations</strong> available to existing users.
<strong><%= @users_with_referrals_count %> users</strong> have successfully
invited new users.
</p>
</section>
<% if @invitations_used.any? %>
<section> <section>
<h3>Accepted (<%= @invitations_used.length %>)</h3> <p>
<table> There are currently <strong><%= @invitations_unused_count %>
<thead> unused invitations</strong> available to existing users.
<tr> <strong><%= @users_with_referrals_count %> users</strong> have successfully
<th>Token</th> invited new users.
<th>Accepted</th> </p>
<th>Invited user</th>
</tr>
</thead>
<tbody>
<% @invitations_used.each do |invitation| %>
<tr>
<td class="overflow-ellipsis"><%= invitation.token %></td>
<td><%= invitation.used_at.strftime("%Y-%m-%d") %></td>
<td><%= User.find(invitation.invited_user_id).address %></td>
</tr>
<% end %>
</tbody>
</table>
</section> </section>
<% if @invitations_used.any? %>
<section>
<h3>Accepted (<%= @invitations_used.length %>)</h3>
<table>
<thead>
<tr class="text-left">
<th>Token</th>
<th>Accepted</th>
<th>Invited user</th>
</tr>
</thead>
<tbody>
<% @invitations_used.each do |invitation| %>
<tr>
<td class="overflow-ellipsis font-mono"><%= invitation.token %></td>
<td><%= invitation.used_at.strftime("%Y-%m-%d") %></td>
<td><%= User.find(invitation.invited_user_id).address %></td>
</tr>
<% end %>
</tbody>
</table>
</section>
<% end %>
<% end %> <% end %>

View File

@ -1,32 +1,34 @@
<h2>LDAP users: <%= @ou %></h2> <%= render partial: "components/header", locals: { page_title: "LDAP Users: #{@ou}" } %>
<h3 class="hidden">Domains</h3> <%= render layout: "components/main_simple" do %>
<ul class="mb-10"> <h3 class="hidden">Domains</h3>
<li class="inline-block"> <ul class="mb-10">
<%= link_to 'kosmos.org', admin_ldap_users_path, class: "ks-text-link" %> <li class="inline-block">
</li> <%= link_to 'kosmos.org', admin_ldap_users_path, class: "ks-text-link" %>
<li class="inline-block ml-6"> </li>
<%= link_to '5apps.com', admin_ldap_users_path(ou: '5apps.com'), class: "ks-text-link" %> <li class="inline-block ml-6">
</li> <%= link_to '5apps.com', admin_ldap_users_path(ou: '5apps.com'), class: "ks-text-link" %>
</ul> </li>
</ul>
<table> <table>
<thead> <thead>
<tr> <tr class="text-left">
<th>UID</th> <th>UID</th>
<th>E-Mail</th> <th>E-Mail</th>
<th>Admin</th> <th>Admin</th>
<!-- <th>Password</th> --> <!-- <th>Password</th> -->
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<% @entries.each do |entry| %> <% @entries.each do |entry| %>
<tr> <tr>
<td><%= entry[:uid] %></td> <td><%= entry[:uid] %></td>
<td><%= entry[:mail] %></td> <td><%= entry[:mail] %></td>
<td><%= entry[:admin] %></td> <td><%= entry[:admin] %></td>
<!-- <td><%= entry[:password] %></td> --> <!-- <td><%= entry[:password] %></td> -->
</tr> </tr>
<% end %> <% end %>
</tbody> </tbody>
</table> </table>
<% end %>

View File

@ -0,0 +1,5 @@
<main class="w-full max-w-6xl mx-auto pb-12 px-4 sm:px-6 lg:px-8">
<div class="bg-white rounded-lg shadow px-6 py-12 sm:px-12">
<%= yield %>
</div>
</main>

View File

@ -1,63 +1,61 @@
<%= render partial: "components/header", locals: { page_title: "Services" } %> <%= render partial: "components/header", locals: { page_title: "Services" } %>
<main class="w-full max-w-6xl mx-auto pb-12 px-4 sm:px-6 lg:px-8"> <%= render layout: "components/main_simple" do %>
<div class="bg-white rounded-lg shadow px-6 py-12 sm:px-12"> <section>
<section> <p>
<p> Your Kosmos account and password currently give you access to these
Your Kosmos account and password currently give you access to these services:
services: </p>
</p> <div class="grid services mt-12">
<div class="grid services mt-12"> <div>
<div> <h3 class="mb-3.5">
<h3 class="mb-3.5"> <%= link_to "Chat", "https://wiki.kosmos.org/Services:Chat", class: "ks-text-link" %>
<%= link_to "Chat", "https://wiki.kosmos.org/Services:Chat", class: "ks-text-link" %> </h3>
</h3> <p class="text-gray-500">
<p class="text-gray-500"> Chat rooms and instant messaging (XMPP/Jabber)
Chat rooms and instant messaging (XMPP/Jabber) </p>
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Discourse", "https://community.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Kosmos community forums and user support/help site
</p>
</div>
<div>
<h3 class="mb-3.5">
<span class="text-yellow-500">🗲</span>
<%= link_to "Lightning Wallet", wallet_path, class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Send and receive sats over the Bitcoin Lightning Network
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Wiki", "https://wiki.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Kosmos documentation and knowledge base
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Gitea", "https://gitea.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Code hosting and collaboration for software projects
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Drone CI", "https://drone.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Continuous integration for software projects on Gitea
</p>
</div>
</div> </div>
</section> <div>
</div> <h3 class="mb-3.5">
</main> <%= link_to "Discourse", "https://community.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Kosmos community forums and user support/help site
</p>
</div>
<div>
<h3 class="mb-3.5">
<span class="text-yellow-500">🗲</span>
<%= link_to "Lightning Wallet", wallet_path, class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Send and receive sats over the Bitcoin Lightning Network
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Wiki", "https://wiki.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Kosmos documentation and knowledge base
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Gitea", "https://gitea.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Code hosting and collaboration for software projects
</p>
</div>
<div>
<h3 class="mb-3.5">
<%= link_to "Drone CI", "https://drone.kosmos.org", class: "ks-text-link" %>
</h3>
<p class="text-gray-500">
Continuous integration for software projects on Gitea
</p>
</div>
</div>
</section>
<% end %>

View File

@ -1,46 +1,44 @@
<%= render partial: "components/header", locals: { page_title: "Donations" } %> <%= render partial: "components/header", locals: { page_title: "Donations" } %>
<main class="w-full max-w-6xl mx-auto pb-12 px-4 sm:px-6 lg:px-8"> <%= render layout: "components/main_simple" do %>
<div class="bg-white rounded-lg shadow px-6 py-12 sm:px-12"> <section>
<section> <p>
<p> Your financial contributions to the development and upkeep of Kosmos
Your financial contributions to the development and upkeep of Kosmos software and services.
software and services. </p>
</p> </section>
</section>
<section> <section>
<% if @donations.any? %> <% if @donations.any? %>
<ul class="donations list-none"> <ul class="donations list-none">
<% @donations.each do |donation| %> <% @donations.each do |donation| %>
<li class="mb-8 grid gap-y-2 gap-x-8 grid-cols-2 items-center"> <li class="mb-8 grid gap-y-2 gap-x-8 grid-cols-2 items-center">
<h3 class="mb-0"> <h3 class="mb-0">
<%= donation.paid_at.strftime("%B %d, %Y") %> <%= donation.paid_at.strftime("%B %d, %Y") %>
</h3> </h3>
<p class="row-span-2 font-mono text-right mb-0"> <p class="row-span-2 font-mono text-right mb-0">
<span class="text-xl"> <span class="text-xl">
<%= number_with_delimiter donation.amount_sats %> sats <%= number_with_delimiter donation.amount_sats %> sats
</span> </span>
<br> <br>
<span class="text-sm text-gray-500"> <span class="text-sm text-gray-500">
(~ <%= number_to_currency donation.amount_eur / 100, unit: "" %> EUR) (~ <%= number_to_currency donation.amount_eur / 100, unit: "" %> EUR)
</span> </span>
</p> </p>
<p class="mb-0"> <p class="mb-0">
<% if donation.public_name.present? %> <% if donation.public_name.present? %>
Public name: <%= donation.public_name %> Public name: <%= donation.public_name %>
<% else %> <% else %>
Anonymous Anonymous
<% end %> <% end %>
</p> </p>
</li> </li>
<% end %> <% end %>
</ul> </ul>
<% else %> <% else %>
<p> <p>
No donations to show. No donations to show.
</p> </p>
<% end %> <% end %>
</section> </section>
</div> <% end %>
</main>

View File

@ -1,61 +1,59 @@
<%= render partial: "components/header", locals: { page_title: "Invitations" } %> <%= render partial: "components/header", locals: { page_title: "Invitations" } %>
<main class="w-full max-w-6xl mx-auto pb-12 px-4 sm:px-6 lg:px-8"> <%= render layout: "components/main_simple" do %>
<div class="bg-white rounded-lg shadow px-6 py-12 sm:px-12"> <section>
<section> <% if @invitations_unused.any? %>
<% if @invitations_unused.any? %> <p>
<p> Invite your friends to a Kosmos account by sharing an invitation URL with them:
Invite your friends to a Kosmos account by sharing an invitation URL with them: </p>
</p>
<% end %>
</section>
<section>
<% if @invitations_unused.any? %>
<table>
<thead>
<tr class="text-left">
<th>URL</th>
</tr>
</thead>
<tbody>
<% @invitations_unused.each do |invitation| %>
<tr>
<td class="font-mono"><%= invitation_url(invitation.token) %></td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p>
You do not have any invitations to give away yet. All good
things come in time.
</p>
<% end %>
</section>
<% if @invitations_used.any? %>
<section>
<h3>Accepted Invitations</h3>
<table>
<thead>
<tr>
<th class="hide-small">ID</th>
<th>Accepted</th>
<th>Invited user</th>
</tr>
</thead>
<tbody>
<% @invitations_used.each do |invitation| %>
<tr>
<td class="hide-small"><%= invitation.token %></td>
<td><%= invitation.used_at.strftime("%Y-%m-%d") %></td>
<td><%= User.find(invitation.invited_user_id).address %></td>
</tr>
<% end %>
</tbody>
</table>
</section>
<% end %> <% end %>
</div> </section>
</main>
<section>
<% if @invitations_unused.any? %>
<table>
<thead>
<tr class="text-left">
<th>URL</th>
</tr>
</thead>
<tbody>
<% @invitations_unused.each do |invitation| %>
<tr>
<td class="font-mono"><%= invitation_url(invitation.token) %></td>
</tr>
<% end %>
</tbody>
</table>
<% else %>
<p>
You do not have any invitations to give away yet. All good
things come in time.
</p>
<% end %>
</section>
<% if @invitations_used.any? %>
<section>
<h3>Accepted Invitations</h3>
<table>
<thead>
<tr class="text-left">
<th class="hidden md:block">ID</th>
<th>Accepted</th>
<th>Invited user</th>
</tr>
</thead>
<tbody>
<% @invitations_used.each do |invitation| %>
<tr>
<td class="hidden md:block font-mono"><%= invitation.token %></td>
<td><%= invitation.used_at.strftime("%Y-%m-%d") %></td>
<td><%= User.find(invitation.invited_user_id).address %></td>
</tr>
<% end %>
</tbody>
</table>
</section>
<% end %>
<% end %>

View File

@ -10,30 +10,71 @@
<%= stylesheet_link_tag 'application', "data-turbo-track": "reload" %> <%= stylesheet_link_tag 'application', "data-turbo-track": "reload" %>
<%= javascript_importmap_tags %> <%= javascript_importmap_tags %>
</head> </head>
<body id="admin-panel"> <body id="admin-panel" class="bg-red-500">
<div class="">
<nav class="">
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
<div class="border-b border-gray-200/10">
<div class="flex items-center justify-between h-16 px-4 sm:px-0">
<div class="flex items-center">
<div class="ks-site-icon flex-shrink-0">
<%= render partial: "shared/icons/comet" %>
<!-- <img class="h&#45;8 w&#45;8" src="https://tailwindui.com/img/logos/workflow&#45;mark&#45;indigo&#45;500.svg" alt="Workflow"> -->
</div>
<div class="hidden md:block">
<div class="ml-10 flex items-baseline space-x-4">
<% if user_signed_in? && current_user.is_admin? %>
<%= render partial: 'shared/admin_nav' %>
<% end %>
</div>
</div>
</div>
<div class="hidden md:block">
<%= render partial: 'shared/header_account' %>
</div>
</div>
</div>
</div>
<!-- Mobile menu, show/hide based on menu state. -->
<div class="border-b border-gray-700 md:hidden" id="mobile-menu">
<div class="pt-4 pb-3 border-t border-gray-700">
<div class="flex items-center px-5">
<div class="flex-shrink-0">
<img class="h-10 w-10 rounded-full" src="" alt="">
</div>
<div class="ml-3">
<div class="text-base font-medium leading-none text-white">Tom Cook</div>
<div class="text-sm font-medium leading-none text-gray-400">tom@example.com</div>
</div>
<button type="button" class="ml-auto bg-gray-800 flex-shrink-0 p-1 text-gray-400 rounded-full hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-800 focus:ring-white">
<span class="sr-only">View notifications</span>
<!-- Heroicon name: outline/bell -->
<svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" />
</svg>
</button>
</div>
<div class="mt-3 px-2 space-y-1">
<a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700">Your Profile</a>
<a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700">Settings</a>
<a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700">Sign out</a>
</div>
</div>
</div>
</nav>
<%= yield %>
</div>
<div id="wrapper"> <div id="wrapper">
<header>
<h1>
<span class ="icon"><%= render partial: "shared/icons/comet" %></span>
<span class ="project-name">Kosmos</span>
<span class ="site-name">Accounts</span>
</h1>
<%= render partial: 'shared/header_account' %>
</header>
<% if user_signed_in? && current_user.confirmed? %>
<%= render partial: 'shared/admin_nav' %>
<% end %>
<% flash.each do |type, msg| %> <% flash.each do |type, msg| %>
<div class="flash-msg <%= type %>"> <div class="flash-msg <%= type %>">
<p><%= msg %></p> <p><%= msg %></p>
</div> </div>
<% end %> <% end %>
<main>
<%= yield %>
</main>
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,18 +1,16 @@
<%= render partial: "components/header", locals: { page_title: "Account" } %> <%= render partial: "components/header", locals: { page_title: "Account" } %>
<main class="w-full max-w-6xl mx-auto pb-12 px-4 sm:px-6 lg:px-8"> <%= render layout: "components/main_simple" do %>
<div class="bg-white rounded-lg shadow px-6 py-12 sm:px-12"> <section>
<section> <h2>Security</h2>
<h2>Security</h2> </section>
</section>
<section> <section>
<h3>Password change</h3> <h3>Password change</h3>
<p> <p>
<%= form_with(url: settings_reset_password_path, method: :post) do %> <%= form_with(url: settings_reset_password_path, method: :post) do %>
<%= submit_tag("Send me a password reset link", class: 'btn-md btn-gray') %> <%= submit_tag("Send me a password reset link", class: 'btn-md btn-gray') %>
<% end %> <% end %>
</p> </p>
</section> </section>
</div> <% end %>
</main>

View File

@ -1,22 +1,8 @@
<nav id="main-nav"> <%= link_to "Dashboard", admin_root_path,
<div class="wrapper"> class: main_nav_class(@current_section, :dashboard) %>
<ul class="pages"> <%= link_to "Invitations", admin_invitations_path,
<li> class: main_nav_class(@current_section, :invitations) %>
<%= link_to "Dashboard", admin_root_path, <%= link_to "Donations", admin_donations_path,
class: @current_section == :dashboard ? "active" : nil %> class: main_nav_class(@current_section, :contributions) %>
</li> <%= link_to "LDAP Users", admin_ldap_users_path,
<li> class: main_nav_class(@current_section, :ldap_users) %>
<%= link_to "Invitations", admin_invitations_path,
class: @current_section == :invitations ? "active" : nil %>
</li>
<li>
<%= link_to "Donations", admin_donations_path,
class: @current_section == :donations ? "active" : nil %>
</li>
<li>
<%= link_to "LDAP Users", admin_ldap_users_path,
class: @current_section == :ldap_users ? "active" : nil %>
</li>
</ul>
</div>
</nav>

View File

@ -1,2 +1,6 @@
<h2>Access forbidden</h2> <%= render partial: "components/header", locals: { page_title: "403" } %>
<p>Sorry, you're not allowed to access this page.</p>
<%= render layout: "components/main_simple" do %>
<h2>Access forbidden</h2>
<p>Sorry, you're not allowed to access this page.</p>
<% end %>

View File

@ -1,2 +1,6 @@
<h2>Not found</h2> <%= render partial: "components/header", locals: { page_title: "404" } %>
<p>Sorry, this page does not exist.</p>
<%= render layout: "components/main_simple" do %>
<h2>Not found</h2>
<p>Sorry, this page does not exist.</p>
<% end %>

View File

@ -0,0 +1,6 @@
<%= render partial: "components/header", locals: { page_title: "401" } %>
<%= render layout: "components/main_simple" do %>
<h2>Unauthorized</h2>
<p>This page needs authorization to access.</p>
<% end %>

View File

@ -1,92 +1,90 @@
<%= render partial: "components/header", locals: { page_title: "Wallet" } %> <%= render partial: "components/header", locals: { page_title: "Wallet" } %>
<main class="w-full max-w-6xl mx-auto pb-12 px-4 sm:px-6 lg:px-8"> <%= render layout: "components/main_simple" do %>
<div class="bg-white rounded-lg shadow px-6 py-12 sm:px-12"> <section class="w-full grid grid-cols-1 md:grid-cols-12 md:mb-0">
<section class="w-full grid grid-cols-1 md:grid-cols-12 md:mb-0"> <div class="md:col-span-8">
<div class="md:col-span-8">
<p>
Send and receive sats via the Bitcoin Lightning Network.
</p>
</div>
<div class="md:col-span-4 mt-4 md:mt-0">
<p class="font-mono md:text-right mb-0 p-4 border border-gray-300 rounded-lg overflow-hidden">
<% if @balance %>
<span class="text-xl"><%= number_with_delimiter @balance %> sats</span><br>
<span class="text-sm text-gray-500">Available balance</span>
<% else %>
<span class="text-xl">n/a sats</span><br>
<span class="text-sm text-gray-500">Balance unavailable</span>
<% end %>
</p>
</div>
</section>
<section>
<h3>Lightning Address</h3>
<p> <p>
Your Kosmos user address is also a Send and receive sats via the Bitcoin Lightning Network.
<a class="ks-text-link" href="https://lightningaddress.com/" target="_blank">Lightning Address</a>!
The easiest way to receive sats is by just giving out your address:
</p> </p>
<p> </div>
<strong><%= current_user.address %></strong> <div class="md:col-span-4 mt-4 md:mt-0">
<p class="font-mono md:text-right mb-0 p-4 border border-gray-300 rounded-lg overflow-hidden">
<% if @balance %>
<span class="text-xl"><%= number_with_delimiter @balance %> sats</span><br>
<span class="text-sm text-gray-500">Available balance</span>
<% else %>
<span class="text-xl">n/a sats</span><br>
<span class="text-sm text-gray-500">Balance unavailable</span>
<% end %>
</p> </p>
</section> </div>
</section>
<section> <section>
<h3>Wallet Apps</h3> <h3>Lightning Address</h3>
<p> <p>
You can connect various wallet apps to your Kosmos account. This allows Your Kosmos user address is also a
you to both receive and send sats. Any wallet that supports <a class="ks-text-link" href="https://lightningaddress.com/" target="_blank">Lightning Address</a>!
<a href="https://bluewallet.io/lndhub/" class="ks-text-link" target="_blank">LNDHub</a> The easiest way to receive sats is by just giving out your address:
accounts should be able to add/import your account using our setup </p>
code/URL: <p>
</p> <strong><%= current_user.address %></strong>
<p class="my-6 text-center md:text-left"> </p>
<button id="copy-setup-code" class="btn-md btn-blue">Copy setup code/URL</button> </section>
<span class="mx-2 my-2 md:my-0 block md:inline">or</span>
<button id="show-setup-code" class="btn-md btn-blue">Show setup QR code</button>
<button id="hide-setup-code" class="btn-md btn-blue hidden">Hide setup QR code</button>
</p>
<p id="setup-code" class="hidden my-10 w-full text-center">
<%= raw @svg %>
</p>
</section>
<section> <section>
<h3>Recommended Apps</h3> <h3>Wallet Apps</h3>
<div class="w-full grid grid-cols-1 gap-y-4 md:grid-cols-12 <p>
md:gap-y-6 md:gap-x-4 md:items-center"> You can connect various wallet apps to your Kosmos account. This allows
<h4 class="md:col-span-3"> you to both receive and send sats. Any wallet that supports
<a href="https://bluewallet.io" class="ks-text-link text-xl" <a href="https://bluewallet.io/lndhub/" class="ks-text-link" target="_blank">LNDHub</a>
title="Blue Wallet" target="_blank"> accounts should be able to add/import your account using our setup
<%= image_tag("/img/logos/bluewallet.svg", class: 'h-16') %> code/URL:
</a> </p>
</h4> <p class="my-6 text-center md:text-left">
<p class="md:col-span-4 mb-0 text-gray-500"> <button id="copy-setup-code" class="btn-md btn-blue">Copy setup code/URL</button>
Android / iOS / macOS <span class="mx-2 my-2 md:my-0 block md:inline">or</span>
</p> <button id="show-setup-code" class="btn-md btn-blue">Show setup QR code</button>
<p class="md:col-span-5 mb-0"> <button id="hide-setup-code" class="btn-md btn-blue hidden">Hide setup QR code</button>
When adding a wallet, choose "Import wallet" on the bottom of the screen, </p>
then scan the setup QR code. <p id="setup-code" class="hidden my-10 w-full text-center">
</p> <%= raw @svg %>
<h4 class="md:col-span-3"> </p>
<a href="https://getalby.com/" class="ks-text-link text-xl" </section>
title="Alby" target="_blank">
<%= image_tag("/img/logos/alby.svg", class: 'h-16') %> <section>
</a> <h3>Recommended Apps</h3>
</h4> <div class="w-full grid grid-cols-1 gap-y-4 md:grid-cols-12
<p class="md:col-span-4 mb-0 text-gray-500"> md:gap-y-6 md:gap-x-4 md:items-center">
Firefox / Chrome (Opera, Brave, Chromium-based browsers) <h4 class="md:col-span-3">
</p> <a href="https://bluewallet.io" class="ks-text-link text-xl"
<p class="md:col-span-5 mb-0"> title="Blue Wallet" target="_blank">
Choose "LNDHub (Bluewallet)" in the connect dialog and paste the setup <%= image_tag("/img/logos/bluewallet.svg", class: 'h-16') %>
URL in the "LNDHub Export URI" field. </a>
</p> </h4>
</div> <p class="md:col-span-4 mb-0 text-gray-500">
</section> Android / iOS / macOS
</div> </p>
</main> <p class="md:col-span-5 mb-0">
When adding a wallet, choose "Import wallet" on the bottom of the screen,
then scan the setup QR code.
</p>
<h4 class="md:col-span-3">
<a href="https://getalby.com/" class="ks-text-link text-xl"
title="Alby" target="_blank">
<%= image_tag("/img/logos/alby.svg", class: 'h-16') %>
</a>
</h4>
<p class="md:col-span-4 mb-0 text-gray-500">
Firefox / Chrome (Opera, Brave, Chromium-based browsers)
</p>
<p class="md:col-span-5 mb-0">
Choose "LNDHub (Bluewallet)" in the connect dialog and paste the setup
URL in the "LNDHub Export URI" field.
</p>
</div>
</section>
<% end %>
<script type="text/javascript"> <script type="text/javascript">
(function () { (function () {