feat: Super admin design improvements (#8517)

- Revamp the super admin design
- Introduce a new settings page for support and billing settings
- Move the access tokens into users, agent bots and platform app show pages


Co-authored-by: Sojan <sojan@pepalo.com>
Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
Nithin David Thomas
2023-12-08 19:40:35 -08:00
committed by GitHub
parent b1a68759cf
commit f002870c6a
39 changed files with 577 additions and 348 deletions

View File

@@ -6,88 +6,57 @@ By default, the navigation contains navigation links
for all resources in the admin dashboard,
as defined by the routes in the `admin/` namespace
%>
<%= javascript_pack_tag 'superadmin_pages' %>
<%= stylesheet_pack_tag 'superadmin_pages' %>
<%
sidebar_icons = {
accounts: 'ion ion-briefcase',
users: 'ion ion-person-stalker',
super_admins: 'ion ion-unlocked',
access_tokens: 'ion-key',
platform_apps: 'ion ion-social-buffer',
installation_configs: 'ion ion-settings',
agent_bots: 'ion ion-social-android',
accounts: 'icon-building-4-line',
users: 'icon-user-follow-line',
platform_apps: 'icon-apps-2-line',
agent_bots: 'icon-robot-line',
}
%>
<div class="navigation" role="navigation">
<div class="logo-brand">
<%= link_to image_tag('/brand-assets/logo.svg', alt: 'Chatwoot Admin Dashboard'), super_admin_root_url %>
<div class="app-version">v<%= Chatwoot.config[:version] %></div>
<div class="border-slate-100 border-r w-56 flex-shrink-0 justify-between h-full flex flex-col" role="navigation">
<div>
<div class="flex mx-4 mb-4 border-slate-100 border-b py-6">
<%= link_to image_tag('/brand-assets/logo_thumbnail.svg', alt: 'Chatwoot Admin Dashboard', class: 'h-10'), super_admin_root_url %>
<div class="flex flex-col ml-3">
<div class="text-sm">Chatwoot <%= Chatwoot.config[:version] %></div>
<div class="text-xs text-slate-700 mt-0.5">Super Admin Console</div>
</div>
</div>
<ul class="my-4">
<%= render partial: "nav_item", locals: { icon: 'icon-grid-line', url: super_admin_root_url, label: 'Dashboard' } %>
<% Administrate::Namespace.new(namespace).resources.each do |resource| %>
<% next if ["account_users", "access_tokens", "installation_configs", "dashboard", "devise/sessions", "app_configs", "instance_statuses", "responses", "response_sources", "response_documents" , "settings"].include? resource.resource %>
<%= render partial: "nav_item", locals: {
icon: sidebar_icons[resource.resource.to_sym],
url: resource_index_route(resource),
label: display_resource_name(resource),
}
%>
<% end %>
<hr class="border-slate-100 border-t my-5 mx-4"/>
<% if InstallationConfig.find_by(name: 'DEPLOYMENT_ENV')&.value == 'cloud' || Rails.env.development? %>
<%= render partial: "nav_item", locals: { icon: 'icon-folder-3-line', url: super_admin_response_sources_url, label: 'Sources' } %>
<%= render partial: "nav_item", locals: { icon: 'icon-draft-line', url: super_admin_response_documents_url, label: 'Documents' } %>
<%= render partial: "nav_item", locals: { icon: 'icon-reply-line', url: super_admin_responses_url, label: 'Responses' } %>
<% end %>
</ul>
</div>
<div>
<ul class="my-4">
<% if ChatwootApp.enterprise? %>
<%= render partial: "nav_item", locals: { icon: 'icon-settings-2-line', url: super_admin_settings_url, label: 'Settings' } %>
<% end %>
<%= render partial: "nav_item", locals: { icon: 'icon-mist-fill', url: sidekiq_web_url, label: 'Sidekiq Dashboard' } %>
<%= render partial: "nav_item", locals: { icon: 'icon-health-book-line', url: super_admin_instance_status_url, label: 'Instance Health' } %>
<%= render partial: "nav_item", locals: { icon: 'icon-dashboard-line', url: '/', label: 'Agent Dashboard' } %>
<%= render partial: "nav_item", locals: { icon: 'icon-logout-circle-r-line', url: super_admin_logout_url, label: 'Logout' } %>
</ul>
</div>
<ul>
<li class="navigation__link">
<i class="ion ion-ios-keypad"></i>
<%= link_to "Dashboard", super_admin_root_url %>
</li>
<li class="navigation__link">
<i class="ion ion-android-settings"></i>
<%= link_to "App Config", super_admin_app_config_url %>
</li>
<% Administrate::Namespace.new(namespace).resources.each do |resource| %>
<% next if ["account_users", "dashboard", "devise/sessions", "app_configs", "instance_statuses", "responses", "response_sources", "response_documents" ].include? resource.resource %>
<li class="navigation__link navigation__link--<%= nav_link_state(resource) %>">
<i class="<%= sidebar_icons[resource.resource.to_sym] %>"></i>
<%= link_to(
display_resource_name(resource),
resource_index_route(resource)
) if existing_action? resource, :index %>
</li>
<% end %>
<% if InstallationConfig.find_by(name: 'DEPLOYMENT_ENV')&.value == 'cloud' || Rails.env.development? %>
<hr/>
<li class="navigation__link">
<i class="ion ion-help-buoy"></i>
<%= link_to "Sources", super_admin_response_sources_url %>
</li>
<li class="navigation__link">
<i class="ion ion-document-text"></i>
<%= link_to "Documents", super_admin_response_documents_url %>
</li>
<li class="navigation__link">
<i class="ion ion-help"></i>
<%= link_to "Responses", super_admin_responses_url %>
</li>
<hr/>
<% end %>
<li class="navigation__link">
<i class="ion ion-medkit"></i>
<%= link_to "Instance Health", super_admin_instance_status_url %>
</li>
<li class="navigation__link">
<i class="ion ion ion-network"></i>
<%= link_to "Sidekiq", sidekiq_web_url, { target: "_blank" } %>
</li>
</ul>
<ul class="logout">
<li class="navigation__link">
<i class="ion ion-log-out"></i>
<%= link_to "Logout", super_admin_logout_url %>
</li>
<li class="navigation__link">
<i class="ion ion-android-contacts"></i>
<%= link_to "Agent Dashboard", '/' %>
</li>
</ul>
</div>