polivalente 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/app/assets/build/css/components/_bookmarks.scss +20 -0
- data/app/assets/build/css/components/_colors.scss +104 -0
- data/app/assets/build/css/components/_forms.scss +23 -0
- data/app/assets/build/css/components/_pagination.scss +75 -0
- data/app/assets/build/css/components/_player.scss +148 -0
- data/app/assets/build/css/components/_tags.scss +29 -0
- data/app/assets/build/css/components/_themes.scss +69 -0
- data/app/assets/build/css/components/_tribute.scss +25 -0
- data/app/assets/build/css/components/plyr.css +1 -0
- data/app/assets/build/css/components/trix/_clipboard.scss +27 -0
- data/app/assets/build/css/components/trix/_trix.scss +181 -0
- data/app/assets/build/css/index.css +19 -0
- data/app/assets/build/js/application.js +2 -0
- data/app/assets/build/js/controllers/accordion_controller.js +21 -0
- data/app/assets/build/js/controllers/dynamic_select_controller.js +22 -0
- data/app/assets/build/js/controllers/index.js +33 -0
- data/app/assets/build/js/controllers/offline_controller.js +19 -0
- data/app/assets/build/js/controllers/reactive_text_controller.js +15 -0
- data/app/assets/build/js/controllers/text_counter_controller.js +38 -0
- data/app/assets/build/js/controllers/theme_controller.js +36 -0
- data/app/assets/build/js/controllers/trix_attachment_blocker_controller.js +15 -0
- data/app/assets/build/js/controllers/trix_autocomplete_controller.js +86 -0
- data/app/assets/build/js/controllers/trix_blockcode_controller.js +41 -0
- data/app/assets/build/js/controllers/trix_clipboard_controller.js +50 -0
- data/app/assets/build/js/controllers/trix_color_controller.js +49 -0
- data/app/assets/build/js/controllers/trix_highlight_controller.js +55 -0
- data/app/assets/build/js/controllers/trix_plyr_controller.js +86 -0
- data/app/assets/build/js/controllers/trix_toolbar_controller.js +48 -0
- data/app/assets/config/polivalente_manifest.js +1 -0
- data/app/assets/javascripts/polivalente/application.js +173 -0
- data/app/assets/stylesheets/polivalente/application.css +3 -14
- data/app/assets/stylesheets/polivalente/styles.css +1928 -0
- data/app/controllers/polivalente/application_controller.rb +2 -0
- data/app/controllers/polivalente/archives_controller.rb +18 -0
- data/app/controllers/polivalente/autocomplete_controller.rb +2 -3
- data/app/controllers/polivalente/comments_controller.rb +27 -0
- data/app/controllers/polivalente/trashes_controller.rb +18 -0
- data/app/controllers/polivalente/users_controller.rb +42 -0
- data/app/helpers/polivalente/gravatar_helper.rb +0 -4
- data/app/models/polivalente/tag.rb +1 -0
- data/app/views/layouts/polivalente/application.html.erb +9 -3
- data/app/views/polivalente/archives/_archive.html.erb +2 -0
- data/app/views/polivalente/archives/index.html.erb +3 -0
- data/app/views/polivalente/archives/show.html.erb +3 -0
- data/app/views/polivalente/autocomplete/tags.json.jbuilder +1 -0
- data/app/views/polivalente/autocomplete/users.json.jbuilder +1 -0
- data/app/views/polivalente/shared/_notices.html.erb +10 -0
- data/app/views/polivalente/shared/_offline_indicator.html.erb +10 -0
- data/app/views/polivalente/shared/_theme_toggle.html.erb +1 -0
- data/app/views/polivalente/tags/_cloud.html.erb +7 -0
- data/app/views/polivalente/tags/_list.html.erb +5 -0
- data/app/views/polivalente/tags/_tag.html.erb +1 -0
- data/app/views/polivalente/tags/_tag.json.jbuilder +4 -0
- data/app/views/polivalente/trashes/_trash.html.erb +2 -0
- data/app/views/polivalente/trashes/index.html.erb +3 -0
- data/app/views/polivalente/trashes/show.html.erb +3 -0
- data/app/views/polivalente/users/_form.html.erb +38 -0
- data/app/views/polivalente/users/_user.html.erb +4 -0
- data/app/views/polivalente/users/_user.json.jbuilder +4 -0
- data/app/views/polivalente/users/activities/_activity.html.erb +12 -0
- data/app/views/polivalente/users/activities/_recent.html.erb +17 -0
- data/app/views/polivalente/users/edit.html.erb +13 -0
- data/app/views/polivalente/users/related/_user.html.erb +14 -0
- data/app/views/polivalente/users/related/_users.html.erb +14 -0
- data/app/views/polivalente/users/show.html.erb +180 -0
- data/config/locales/en.yml +72 -0
- data/config/locales/es.yml +72 -0
- data/config/locales/fr.yml +74 -0
- data/config/locales/pt.yml +72 -0
- data/config/routes.rb +6 -0
- data/lib/generators/polivalente/install/install_generator.rb +1 -1
- data/lib/generators/polivalente/locales/locales_generator.rb +11 -0
- data/lib/generators/polivalente/templates/user.rb +3 -0
- data/lib/polivalente/engine.rb +1 -0
- data/lib/polivalente/version.rb +1 -1
- data/lib/polivalente.rb +3 -0
- metadata +107 -2
@@ -0,0 +1,18 @@
|
|
1
|
+
module Polivalente
|
2
|
+
class ArchivesController < ApplicationController
|
3
|
+
before_action :set_archive, only: [:show]
|
4
|
+
|
5
|
+
def index
|
6
|
+
@archives = Archive.latest
|
7
|
+
end
|
8
|
+
|
9
|
+
def show
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def set_archive
|
15
|
+
@archive = Archive.find(params[:id])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -4,14 +4,13 @@ module Polivalente
|
|
4
4
|
|
5
5
|
def tags
|
6
6
|
@tags = Tag.all.latest
|
7
|
-
render
|
7
|
+
render "polivalente/autocomplete/tags"
|
8
8
|
end
|
9
9
|
|
10
10
|
def users
|
11
11
|
user_class = Polivalente.config.user_class.constantize
|
12
|
-
|
13
12
|
@users = user_class.all.latest
|
14
|
-
render
|
13
|
+
render "polivalente/autocomplete/users"
|
15
14
|
end
|
16
15
|
|
17
16
|
protected
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Polivalente
|
2
|
+
class CommentsController < ApplicationController
|
3
|
+
def create
|
4
|
+
@comment = @commentable.comments.new(comment_params)
|
5
|
+
@comment.user = current_user
|
6
|
+
@comment.save
|
7
|
+
redirect_to @commentable, notice: "Your comment was successfully posted."
|
8
|
+
end
|
9
|
+
|
10
|
+
def destroy
|
11
|
+
@comment = Comment.where(user_id: current_user.id).find(params[:id])
|
12
|
+
|
13
|
+
@comment.destroy if @comment
|
14
|
+
|
15
|
+
respond_to do |format|
|
16
|
+
format.html { redirect_back(fallback_location: @commentable) }
|
17
|
+
format.json { head :no_content }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def comment_params
|
24
|
+
params.require(:comment).permit(:content)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Polivalente
|
2
|
+
class TrashesController < ApplicationController
|
3
|
+
before_action :set_trash, only: [:show]
|
4
|
+
|
5
|
+
def index
|
6
|
+
@trash = Trash.latest
|
7
|
+
end
|
8
|
+
|
9
|
+
def show
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def set_trash
|
15
|
+
@trash = Trash.find(params[:id])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Polivalente
|
2
|
+
class UsersController < ApplicationController
|
3
|
+
before_action :set_user, except: [:index, :create, :new]
|
4
|
+
|
5
|
+
def index
|
6
|
+
end
|
7
|
+
|
8
|
+
def show
|
9
|
+
@recent_activities = []
|
10
|
+
|
11
|
+
# Sudo-random list of user suggestions
|
12
|
+
@related_users = @user_class.all
|
13
|
+
.where(id: 10.times.map { rand(@user_class.first.id...@user_class.last.id) })
|
14
|
+
.where.not(id: @user.id)
|
15
|
+
.latest
|
16
|
+
.first(4)
|
17
|
+
end
|
18
|
+
|
19
|
+
def edit
|
20
|
+
end
|
21
|
+
|
22
|
+
def update
|
23
|
+
if @user.update(user_params)
|
24
|
+
render :show
|
25
|
+
else
|
26
|
+
render :edit
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def set_user
|
33
|
+
@user_class = Polivalente.config.user_class.constantize
|
34
|
+
@user = @user_class.find(params[:id])
|
35
|
+
@page_title = @user.name
|
36
|
+
end
|
37
|
+
|
38
|
+
def user_params
|
39
|
+
params.require(:user).permit(:first_name, :last_name, :photo)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,14 +1,20 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
|
-
<html>
|
2
|
+
<html data-controller="theme" data-theme-target="theme">
|
3
3
|
<head>
|
4
|
-
<title>
|
4
|
+
<title>
|
5
|
+
<%= @page_title.nil? ? "" : "#{@page_title} | " %><%= Rails.application.class %>
|
6
|
+
</title>
|
5
7
|
<%= csrf_meta_tags %>
|
6
8
|
<%= csp_meta_tag %>
|
7
9
|
|
8
|
-
<%= stylesheet_link_tag
|
10
|
+
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track": "reload" %>
|
11
|
+
<%= javascript_include_tag "polivalente/application", media: "all", "data-turbolinks-track": "reload" %>
|
9
12
|
</head>
|
10
13
|
<body>
|
11
14
|
|
15
|
+
<%= render 'polivalente/shared/offline_indicator' %>
|
16
|
+
<%= render 'polivalente/shared/notices' %>
|
17
|
+
|
12
18
|
<%= yield %>
|
13
19
|
|
14
20
|
</body>
|
@@ -0,0 +1 @@
|
|
1
|
+
json.array! @tags, partial: "polivalente/tags/tag", as: :tag
|
@@ -0,0 +1 @@
|
|
1
|
+
json.array! @users, partial: "polivalente/users/user", as: :user
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% flash.each do |message_type, message| %>
|
2
|
+
<div class="my-2 max-w-2xl mx-auto border border-tertiary rounded-md text-primary px-4 py-3 shadow-sm mb-3" role="alert">
|
3
|
+
<div class="flex items-center space-x-2">
|
4
|
+
<svg class="w-5 h-5" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
5
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
6
|
+
</svg>
|
7
|
+
<p class="text-sm"><%= message %></p>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<nav data-controller="offline" class="fixed bottom-0 right-5 z-10 text-red-600 dark:text-red-500 font-semibold">
|
2
|
+
<div data-offline-target="indicator" class="w-full bg-primary my-2 max-w-2xl mx-auto hidden border border-tertiary rounded-md px-4 py-3 shadow-md mb-3" role="alert">
|
3
|
+
<div class="flex items-center space-x-2">
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
5
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.111 16.404a5.5 5.5 0 017.778 0M12 20h.01m-7.08-7.071c3.904-3.905 10.236-3.905 14.141 0M1.394 9.393c5.857-5.857 15.355-5.857 21.213 0" />
|
6
|
+
</svg>
|
7
|
+
<p class="text-sm"><%= t("views.errors.offline") %></p>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
</nav>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= select_tag :theme, options_for_select(%w[Light Dark]), { class: 'mb-4 rounded-md bg-secondary', prompt_text: 'Select a theme', data: {action: 'input->theme#toggleTheme'}} %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<div class="tag-cloud">
|
2
|
+
<%= link_to "all", articles_path, class: class_names('all', { active: current_page?(articles_path) }) %>
|
3
|
+
|
4
|
+
<% tag_cloud(collection, %w{s m l}) do |tag, css_class| %>
|
5
|
+
<%= link_to "##{tag.name}", tag_path(tag.name), class: class_names(css_class, 'tag', { active: current_page?(tag_path(tag.name)) }) %>
|
6
|
+
<% end %>
|
7
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p class="mention inline-flex bg-amber-400"><%= tag.name %></p>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<%= form_with(model: user, :html => {class: 'form flex flex-col text-primary'}) do |form| %>
|
2
|
+
<% if user.errors.any? %>
|
3
|
+
<div id="error_explanation" class="text-primary">
|
4
|
+
<h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% user.errors.each do |error| %>
|
8
|
+
<li><%= error.full_message %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="my-2">
|
15
|
+
<%= form.text_field :first_name, class: "input-base bg-primary text-secondary-x border-tertiary text-2xl leading-8 font-extrabold tracking-tight sm:text-4xl" %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="my-2">
|
19
|
+
<%= form.text_field :last_name, class: "input-base bg-primary text-secondary-x border-tertiary text-2xl leading-8 font-extrabold tracking-tight sm:text-4xl" %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="my-2">
|
23
|
+
<%= form.file_field :photo, class: "input-base bg-primary text-secondary-x border-tertiary text-2xl leading-8 font-extrabold tracking-tight sm:text-4xl" %>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
|
27
|
+
<div class="actions">
|
28
|
+
<div class="flex justify-between">
|
29
|
+
<%= form.submit nil, class: "py-2 px-4 mb-6 bg-green-600 hover:bg-green-800 text-white text-sm font-bold rounded transition duration-200" %>
|
30
|
+
|
31
|
+
<div class="flex space-x-3">
|
32
|
+
<%= link_to 'Cancel', user.new_record? ? users_url : user_url, class: "py-2 px-4 mb-6 bg-secondary border-2 hover:bg-tertiary text-primary text-sm font-bold rounded transition duration-200" %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
<% end %>
|
38
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<li class="py-5">
|
2
|
+
<div class="relative focus-within:ring-2 focus-within:ring-cyan-500">
|
3
|
+
<h3 class="text-sm font-semibold text-gray-800">
|
4
|
+
<a href="#" class="hover:underline focus:outline-none">
|
5
|
+
<!-- Extend touch target to entire panel -->
|
6
|
+
<span class="absolute inset-0" aria-hidden="true"></span>
|
7
|
+
<%= activity.title %>
|
8
|
+
</a>
|
9
|
+
</h3>
|
10
|
+
<p class="mt-1 text-sm text-gray-600 line-clamp-2"><%= activity.description %></p>
|
11
|
+
</div>
|
12
|
+
</li>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<section aria-labelledby="recent-activities-title">
|
2
|
+
<div class="rounded-lg bg-white overflow-hidden shadow">
|
3
|
+
<div class="p-6">
|
4
|
+
<h2 class="text-base font-medium text-gray-900" id="recent-activities-title">Recent Activities</h2>
|
5
|
+
<div class="flow-root mt-6">
|
6
|
+
<ul role="list" class="-my-5 divide-y divide-gray-200">
|
7
|
+
<% activities.each do |activity| %>
|
8
|
+
<%= render "polivalente/users/activities/activity", activity: activity %>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<div class="mt-6">
|
13
|
+
<a href="#" class="w-full flex justify-center items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"> View all </a>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</section>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h2 class="text-3xl font-semibold pb-4"><%= @user.name %></h2>
|
2
|
+
|
3
|
+
<section class="max-w-3xl">
|
4
|
+
<%= rich_text_area :content,
|
5
|
+
class: "input-base bg-primary border-tertiary",
|
6
|
+
data: { controller: "trix-autocomplete autocomplete trix-attachment-blocker",
|
7
|
+
trix_autocomplete_url_value: autocomplete_users_path,
|
8
|
+
trix_autocomplete_trigger_value: "@"
|
9
|
+
}
|
10
|
+
%>
|
11
|
+
<!-- <span class="absolute text-sm border border-tertiary bg-primary rounded px-2 right-2 bottom-2" data-text-counter-target="output"></span> -->
|
12
|
+
<%#= render "form", user: @user %>
|
13
|
+
</section>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<li class="py-4">
|
2
|
+
<div class="flex items-center space-x-4">
|
3
|
+
<div class="flex-shrink-0">
|
4
|
+
<%= image_tag main_app.url_for(user_avatar(user)), class: "h-8 w-8 rounded-full", alt: user.name %>
|
5
|
+
</div>
|
6
|
+
<div class="flex-1 min-w-0">
|
7
|
+
<p class="text-sm font-medium text-gray-900 truncate"><%= user.name %></p>
|
8
|
+
<p class="text-sm text-gray-500 truncate"><%= "#{user.name}" %></p>
|
9
|
+
</div>
|
10
|
+
<div>
|
11
|
+
<%= link_to "View", user, class: "inline-flex items-center shadow-sm px-2.5 py-0.5 border border-gray-300 text-sm leading-5 font-medium rounded-full text-gray-700 bg-white hover:bg-gray-50" %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</li>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<section aria-labelledby="recent-hires-title">
|
2
|
+
<div class="rounded-lg bg-white overflow-hidden shadow">
|
3
|
+
<div class="p-6">
|
4
|
+
<h2 class="text-base font-medium text-gray-900" id="recent-hires-title">Related Users</h2>
|
5
|
+
<div class="flow-root mt-6">
|
6
|
+
<ul role="list" class="-my-5 divide-y divide-gray-200">
|
7
|
+
<% users.each do |user| %>
|
8
|
+
<%= render "polivalente/users/related/user", user: user %>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</section>
|
@@ -0,0 +1,180 @@
|
|
1
|
+
<main class="h-full bg-gray-100">
|
2
|
+
<section class="h-full">
|
3
|
+
<div class="min-h-full">
|
4
|
+
<header class="pb-24 bg-gradient-to-r from-sky-800 to-cyan-600">
|
5
|
+
<div class="max-w-3xl mx-auto px-4 sm:px-6 lg:max-w-7xl lg:px-8">
|
6
|
+
<div class="relative flex flex-wrap items-center justify-center lg:justify-between">
|
7
|
+
<div class="w-full py-5 lg:border-t lg:border-white lg:border-opacity-20">
|
8
|
+
<div class="lg:grid lg:grid-cols-3 lg:gap-8 lg:items-center">
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<!-- Mobile menu, show/hide based on mobile menu state. -->
|
15
|
+
</header>
|
16
|
+
<main class="-mt-24 pb-8">
|
17
|
+
<div class="max-w-3xl mx-auto px-4 sm:px-6 lg:max-w-7xl lg:px-8">
|
18
|
+
<h1 class="sr-only">Profile</h1>
|
19
|
+
<!-- Main 3 column grid -->
|
20
|
+
<div class="grid grid-cols-1 gap-4 items-start lg:grid-cols-3 lg:gap-8">
|
21
|
+
<!-- Left column -->
|
22
|
+
<div class="grid grid-cols-1 gap-4 lg:col-span-2">
|
23
|
+
<!-- Welcome panel -->
|
24
|
+
<section aria-labelledby="profile-overview-title">
|
25
|
+
<div class="rounded-lg bg-white overflow-hidden shadow">
|
26
|
+
<h2 class="sr-only" id="profile-overview-title">Profile Overview</h2>
|
27
|
+
<div class="bg-white p-6">
|
28
|
+
<div class="sm:flex sm:items-center sm:justify-between">
|
29
|
+
<div class="sm:flex sm:space-x-5">
|
30
|
+
<div class="flex-shrink-0">
|
31
|
+
<%= image_tag main_app.url_for(user_avatar(@user)), class: "mx-auto h-20 w-20 rounded-full" %>
|
32
|
+
</div>
|
33
|
+
<div class="mt-4 text-center sm:mt-0 sm:pt-1 sm:text-left">
|
34
|
+
<p class="text-sm font-medium text-gray-600">#</p>
|
35
|
+
<p class="text-xl font-bold text-gray-900 sm:text-2xl"><%= @user.name %></p>
|
36
|
+
<p class="text-sm font-medium text-gray-600">
|
37
|
+
<%= t("member_since") %> <%= time_ago_in_words @user.confirmed_at %>
|
38
|
+
</p>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
</section>
|
44
|
+
|
45
|
+
<!-- Actions panel -->
|
46
|
+
<section aria-labelledby="quick-links-title">
|
47
|
+
<div class="rounded-lg bg-gray-200 overflow-hidden shadow divide-y divide-gray-200 sm:divide-y-0 sm:grid sm:grid-cols-2 sm:gap-px">
|
48
|
+
<h2 class="sr-only" id="quick-links-title">Quick links</h2>
|
49
|
+
|
50
|
+
<div class="rounded-tl-lg rounded-tr-lg sm:rounded-tr-none relative group bg-white p-6 focus-within:ring-2 focus-within:ring-inset focus-within:ring-cyan-500">
|
51
|
+
<div>
|
52
|
+
<span class="rounded-lg inline-flex p-3 bg-teal-50 text-teal-700 ring-4 ring-white">
|
53
|
+
<!-- Heroicon name: outline/clock -->
|
54
|
+
<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">
|
55
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
|
56
|
+
</svg>
|
57
|
+
</span>
|
58
|
+
</div>
|
59
|
+
<div class="mt-8">
|
60
|
+
<h3 class="text-lg font-medium">
|
61
|
+
<a href="#" class="focus:outline-none">
|
62
|
+
<!-- Extend touch target to entire panel -->
|
63
|
+
<span class="absolute inset-0" aria-hidden="true"></span>
|
64
|
+
Request time off
|
65
|
+
</a>
|
66
|
+
</h3>
|
67
|
+
<p class="mt-2 text-sm text-gray-500">Doloribus dolores nostrum quia qui natus officia quod et dolorem. Sit repellendus qui ut at blanditiis et quo et molestiae.</p>
|
68
|
+
</div>
|
69
|
+
<span class="pointer-events-none absolute top-6 right-6 text-gray-300 group-hover:text-gray-400" aria-hidden="true">
|
70
|
+
<svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24">
|
71
|
+
<path d="M20 4h1a1 1 0 00-1-1v1zm-1 12a1 1 0 102 0h-2zM8 3a1 1 0 000 2V3zM3.293 19.293a1 1 0 101.414 1.414l-1.414-1.414zM19 4v12h2V4h-2zm1-1H8v2h12V3zm-.707.293l-16 16 1.414 1.414 16-16-1.414-1.414z" />
|
72
|
+
</svg>
|
73
|
+
</span>
|
74
|
+
</div>
|
75
|
+
|
76
|
+
<div class="sm:rounded-tr-lg relative group bg-white p-6 focus-within:ring-2 focus-within:ring-inset focus-within:ring-cyan-500">
|
77
|
+
<div>
|
78
|
+
<span class="rounded-lg inline-flex p-3 bg-purple-50 text-purple-700 ring-4 ring-white">
|
79
|
+
<!-- Heroicon name: outline/badge-check -->
|
80
|
+
<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">
|
81
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z" />
|
82
|
+
</svg>
|
83
|
+
</span>
|
84
|
+
</div>
|
85
|
+
<div class="mt-8">
|
86
|
+
<h3 class="text-lg font-medium">
|
87
|
+
<a href="#" class="focus:outline-none">
|
88
|
+
<!-- Extend touch target to entire panel -->
|
89
|
+
<span class="absolute inset-0" aria-hidden="true"></span>
|
90
|
+
Benefits
|
91
|
+
</a>
|
92
|
+
</h3>
|
93
|
+
<p class="mt-2 text-sm text-gray-500">Doloribus dolores nostrum quia qui natus officia quod et dolorem. Sit repellendus qui ut at blanditiis et quo et molestiae.</p>
|
94
|
+
</div>
|
95
|
+
<span class="pointer-events-none absolute top-6 right-6 text-gray-300 group-hover:text-gray-400" aria-hidden="true">
|
96
|
+
<svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24">
|
97
|
+
<path d="M20 4h1a1 1 0 00-1-1v1zm-1 12a1 1 0 102 0h-2zM8 3a1 1 0 000 2V3zM3.293 19.293a1 1 0 101.414 1.414l-1.414-1.414zM19 4v12h2V4h-2zm1-1H8v2h12V3zm-.707.293l-16 16 1.414 1.414 16-16-1.414-1.414z" />
|
98
|
+
</svg>
|
99
|
+
</span>
|
100
|
+
</div>
|
101
|
+
|
102
|
+
<div class="relative group bg-white p-6 focus-within:ring-2 focus-within:ring-inset focus-within:ring-cyan-500">
|
103
|
+
<div>
|
104
|
+
<span class="rounded-lg inline-flex p-3 bg-sky-50 text-sky-700 ring-4 ring-white">
|
105
|
+
<!-- Heroicon name: outline/users -->
|
106
|
+
<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">
|
107
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" />
|
108
|
+
</svg>
|
109
|
+
</span>
|
110
|
+
</div>
|
111
|
+
<div class="mt-8">
|
112
|
+
<h3 class="text-lg font-medium">
|
113
|
+
<a href="#" class="focus:outline-none">
|
114
|
+
<!-- Extend touch target to entire panel -->
|
115
|
+
<span class="absolute inset-0" aria-hidden="true"></span>
|
116
|
+
Schedule a one-on-one
|
117
|
+
</a>
|
118
|
+
</h3>
|
119
|
+
<p class="mt-2 text-sm text-gray-500">Doloribus dolores nostrum quia qui natus officia quod et dolorem. Sit repellendus qui ut at blanditiis et quo et molestiae.</p>
|
120
|
+
</div>
|
121
|
+
<span class="pointer-events-none absolute top-6 right-6 text-gray-300 group-hover:text-gray-400" aria-hidden="true">
|
122
|
+
<svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24">
|
123
|
+
<path d="M20 4h1a1 1 0 00-1-1v1zm-1 12a1 1 0 102 0h-2zM8 3a1 1 0 000 2V3zM3.293 19.293a1 1 0 101.414 1.414l-1.414-1.414zM19 4v12h2V4h-2zm1-1H8v2h12V3zm-.707.293l-16 16 1.414 1.414 16-16-1.414-1.414z" />
|
124
|
+
</svg>
|
125
|
+
</span>
|
126
|
+
</div>
|
127
|
+
|
128
|
+
<div class="rounded-bl-lg rounded-br-lg sm:rounded-bl-none relative group bg-white p-6 focus-within:ring-2 focus-within:ring-inset focus-within:ring-cyan-500">
|
129
|
+
<div>
|
130
|
+
<span class="rounded-lg inline-flex p-3 bg-indigo-50 text-indigo-700 ring-4 ring-white">
|
131
|
+
<!-- Heroicon name: outline/academic-cap -->
|
132
|
+
<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">
|
133
|
+
<path d="M12 14l9-5-9-5-9 5 9 5z" />
|
134
|
+
<path d="M12 14l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14z" />
|
135
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 14l9-5-9-5-9 5 9 5zm0 0l6.16-3.422a12.083 12.083 0 01.665 6.479A11.952 11.952 0 0012 20.055a11.952 11.952 0 00-6.824-2.998 12.078 12.078 0 01.665-6.479L12 14zm-4 6v-7.5l4-2.222" />
|
136
|
+
</svg>
|
137
|
+
</span>
|
138
|
+
</div>
|
139
|
+
<div class="mt-8">
|
140
|
+
<h3 class="text-lg font-medium">
|
141
|
+
<a href="#" class="focus:outline-none">
|
142
|
+
<!-- Extend touch target to entire panel -->
|
143
|
+
<span class="absolute inset-0" aria-hidden="true"></span>
|
144
|
+
Training
|
145
|
+
</a>
|
146
|
+
</h3>
|
147
|
+
<p class="mt-2 text-sm text-gray-500">Doloribus dolores nostrum quia qui natus officia quod et dolorem. Sit repellendus qui ut at blanditiis et quo et molestiae.</p>
|
148
|
+
</div>
|
149
|
+
<span class="pointer-events-none absolute top-6 right-6 text-gray-300 group-hover:text-gray-400" aria-hidden="true">
|
150
|
+
<svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24">
|
151
|
+
<path d="M20 4h1a1 1 0 00-1-1v1zm-1 12a1 1 0 102 0h-2zM8 3a1 1 0 000 2V3zM3.293 19.293a1 1 0 101.414 1.414l-1.414-1.414zM19 4v12h2V4h-2zm1-1H8v2h12V3zm-.707.293l-16 16 1.414 1.414 16-16-1.414-1.414z" />
|
152
|
+
</svg>
|
153
|
+
</span>
|
154
|
+
</div>
|
155
|
+
</div>
|
156
|
+
</section>
|
157
|
+
</div>
|
158
|
+
|
159
|
+
<%# Right column %>
|
160
|
+
<div class="grid grid-cols-1 gap-4">
|
161
|
+
<%# recent-activities %>
|
162
|
+
<% unless @recent_activities.empty? %>
|
163
|
+
<%= render "polivalente/users/activities/recent", activities: @recent_activities %>
|
164
|
+
<% end %>
|
165
|
+
|
166
|
+
<%# Related Users %>
|
167
|
+
<%= render "polivalente/users/related/users", users: @related_users %>
|
168
|
+
</div>
|
169
|
+
</div>
|
170
|
+
</div>
|
171
|
+
|
172
|
+
</main>
|
173
|
+
<footer>
|
174
|
+
<div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 lg:max-w-7xl">
|
175
|
+
<div class="border-t border-gray-200 py-8 text-sm text-gray-500 text-center sm:text-left"><span class="block sm:inline">© 2022 Polivalente Gem.</span> <span class="block sm:inline">All rights reserved.</span></div>
|
176
|
+
</div>
|
177
|
+
</footer>
|
178
|
+
</div>
|
179
|
+
</section>
|
180
|
+
</main>
|