tybo 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/app/components/attachment_card_component.html.erb +26 -0
- data/lib/app/components/attachment_card_component.rb +9 -0
- data/lib/app/components/attachments_list_component.html.erb +9 -0
- data/lib/app/components/attachments_list_component.rb +5 -0
- data/lib/app/components/current_user_mini_card_component.html.erb +8 -0
- data/lib/app/components/current_user_mini_card_component.rb +7 -0
- data/lib/app/components/form_component.html.erb +36 -0
- data/lib/app/components/form_component.rb +14 -0
- data/lib/app/components/forms/breadcrumb_component.html.erb +18 -0
- data/lib/app/components/forms/breadcrumb_component.rb +9 -0
- data/lib/app/components/forms/delete_button_component.html.erb +3 -0
- data/lib/app/components/forms/delete_button_component.rb +9 -0
- data/lib/app/components/forms/divider_component.html.erb +8 -0
- data/lib/app/components/forms/divider_component.rb +9 -0
- data/lib/app/components/forms/submit_button_component.html.erb +7 -0
- data/lib/app/components/forms/submit_button_component.rb +6 -0
- data/lib/app/components/forms/subtitle_component.html.erb +5 -0
- data/lib/app/components/forms/subtitle_component.rb +9 -0
- data/lib/app/components/forms/title_component.html.erb +3 -0
- data/lib/app/components/forms/title_component.rb +9 -0
- data/lib/app/components/icons/collection_component.html.erb +3 -0
- data/lib/app/components/icons/collection_component.rb +6 -0
- data/lib/app/components/icons/home_component.html.erb +3 -0
- data/lib/app/components/icons/home_component.rb +6 -0
- data/lib/app/components/icons/mic_component.html.erb +3 -0
- data/lib/app/components/icons/mic_component.rb +6 -0
- data/lib/app/components/icons/news_paper_component.html.erb +3 -0
- data/lib/app/components/icons/news_paper_component.rb +6 -0
- data/lib/app/components/icons/office_building_component.html.erb +3 -0
- data/lib/app/components/icons/office_building_component.rb +6 -0
- data/lib/app/components/icons/question_mark_circle_component.html.erb +3 -0
- data/lib/app/components/icons/question_mark_circle_component.rb +7 -0
- data/lib/app/components/icons/trash_component.html.erb +3 -0
- data/lib/app/components/icons/trash_component.rb +6 -0
- data/lib/app/components/icons/users_component.html.erb +3 -0
- data/lib/app/components/icons/users_component.rb +6 -0
- data/lib/app/components/index_component.html.erb +9 -0
- data/lib/app/components/index_component.rb +5 -0
- data/lib/app/components/index_header_add_component.html.erb +3 -0
- data/lib/app/components/index_header_add_component.rb +7 -0
- data/lib/app/components/index_header_component.html.erb +15 -0
- data/lib/app/components/index_header_component.rb +10 -0
- data/lib/app/components/input/file_component.html.erb +11 -0
- data/lib/app/components/input/file_component.rb +29 -0
- data/lib/app/components/sidebar_component.html.erb +23 -0
- data/lib/app/components/sidebar_component.rb +6 -0
- data/lib/app/components/sidebar_item_component.html.erb +9 -0
- data/lib/app/components/sidebar_item_component.rb +9 -0
- data/lib/app/components/sign_out_button_component.html.erb +5 -0
- data/lib/app/components/sign_out_button_component.rb +4 -0
- data/lib/app/components/tables/table_component.html.erb +21 -0
- data/lib/app/components/tables/table_component.rb +8 -0
- data/lib/app/components/tables/tbody_component.html.erb +5 -0
- data/lib/app/components/tables/tbody_component.rb +7 -0
- data/lib/app/components/tables/td_component.html.erb +3 -0
- data/lib/app/components/tables/td_component.rb +6 -0
- data/lib/app/components/tables/th_component.html.erb +3 -0
- data/lib/app/components/tables/th_component.rb +6 -0
- data/lib/app/components/tables/thead_component.html.erb +7 -0
- data/lib/app/components/tables/thead_component.rb +7 -0
- data/lib/app/components/tables/tr_component.html.erb +6 -0
- data/lib/app/components/tables/tr_component.rb +11 -0
- data/lib/app/helpers/application_helper.rb +5 -0
- data/lib/app/helpers/flash_helper.rb +16 -0
- data/lib/app/javascript/controllers/flash_controller.js +7 -0
- data/lib/tybo.rb +45 -0
- metadata +179 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9897851e74a06c11d9a138fd37ce454356f3d7d9df8735e481fafa40a45ecde1
|
4
|
+
data.tar.gz: fbd99b2a4e4ffae5ee374e8a2bf69623ca80dcc20512e717d8cfb68d360f4710
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c029d94231d4e20fe1b5498e3aac4f9f16c3d4c70b16316c0de63e55f3be79767e3ca174e1e90563d98b61d96ba505809440d95ca6bbda23cb69c4b68b63214
|
7
|
+
data.tar.gz: dcec0696f8fa822cc8898e761836eda344d030f1156eb31034f88d2127b6edd679516bb663302075575d0939acef606eda66b92d2f1b2997dec8b02d69a60c94
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%= turbo_frame_tag @attachment do %>
|
2
|
+
<li class="col-span-1 flex rounded-md shadow-sm">
|
3
|
+
<div class="flex-shrink-0 flex items-center justify-center w-16 bg-gray-100 text-gray-500 text-sm font-medium rounded-l-md border-t border-r border-b border-gray-200 ">
|
4
|
+
|
5
|
+
<% if @attachment.image? %>
|
6
|
+
<%= image_tag @attachment %>
|
7
|
+
<% else %>
|
8
|
+
<%= @attachment.blob.filename.extension.upcase %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="flex flex-1 items-center justify-between truncate rounded-r-md border-t border-r border-b border-gray-200 bg-white">
|
14
|
+
<div class="flex-1 truncate px-4 py-2 text-sm">
|
15
|
+
<span href="#" class="font-medium text-gray-900 hover:text-gray-600" title="<%= @attachment.blob.filename %>"><%= @attachment.blob.filename %></span>
|
16
|
+
<p class="text-gray-500"><%= (@attachment.blob.byte_size.to_f / 1000000).round(2) %> Mb</p>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div class="flex-shrink-0 pr-2">
|
20
|
+
<%= button_tag type: :button, data: { controller: "attachments", attachments_method_value: 'delete', attachments_url_value: remove_attachment_admin_thematic_path(@attachment.record), attachments_attachment_id_value: @attachment.id, action: "click->attachments#toggle" } do %>
|
21
|
+
<span class="sr-only">Delete</span>
|
22
|
+
<%= render(Icons::TrashComponent.new) %>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
</li>
|
26
|
+
<% end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="flex-shrink-0 flex justify-between items-center border-t border-sidebar-200 p-4">
|
2
|
+
<div class="flex items-center">
|
3
|
+
<p class="text-sm ml-3 font-medium text-white">
|
4
|
+
<%= "#{@user.first_name} #{@user.last_name}" %>
|
5
|
+
</p>
|
6
|
+
</div>
|
7
|
+
<%= render(SignOutButtonComponent.new) %>
|
8
|
+
</div>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
2
|
+
<div class="max-w-2xl mx-auto ">
|
3
|
+
|
4
|
+
<% if breadcrumb? %>
|
5
|
+
<%= breadcrumb %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<div class="my-5 mb-10">
|
9
|
+
<div class="mt-2 md:flex md:items-center md:justify-between">
|
10
|
+
|
11
|
+
<% if title? %>
|
12
|
+
<%= title %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% if delete_button? %>
|
16
|
+
<%= delete_button %>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<% if @nav_bar %>
|
23
|
+
<%= render(@nav_bar) %>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<% if item.is_a?(ApplicationRecord) && item.errors.any? %>
|
27
|
+
<div class="error-message">
|
28
|
+
<%= render('layouts/errors', errors: item.errors.full_messages.to_sentence.capitalize) %>
|
29
|
+
</div>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<div class="px-4 py-5 bg-white space-y-6 sm:p-6 shadow sm:rounded-md sm:overflow-hidden">
|
33
|
+
<%= content %>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class FormComponent < ViewComponent::Base
|
4
|
+
renders_one :breadcrumb, Forms::BreadcrumbComponent
|
5
|
+
renders_one :title, Forms::TitleComponent
|
6
|
+
renders_one :delete_button, Forms::DeleteButtonComponent
|
7
|
+
|
8
|
+
def initialize(item:, nav_bar: nil)
|
9
|
+
@item = item
|
10
|
+
@nav_bar = nav_bar
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :item
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<ol role="list" class="flex items-center space-x-4">
|
2
|
+
|
3
|
+
<% @items.each.with_index do |item, i| %>
|
4
|
+
<li>
|
5
|
+
<div class="flex items-center">
|
6
|
+
<% if i.positive? %>
|
7
|
+
<!-- Heroicon name: solid/chevron-right -->
|
8
|
+
<svg class="flex-shrink-0 h-5 w-5 text-gray-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
9
|
+
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" />
|
10
|
+
</svg>
|
11
|
+
<% end %>
|
12
|
+
<a href="<%= item[:path] %>" class="<%= 'ml-4' unless i.zero? %> text-sm font-medium text-gray-500 hover:text-gray-700">
|
13
|
+
<%= item[:label] %>
|
14
|
+
</a>
|
15
|
+
</div>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
</ol>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<button type="button" class="inline-flex items-center px-3 py-2 border border-gray-300 shadow-sm text-sm leading-4 font-medium rounded-md text-gray-700 bg-white hover:bg-red-400 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" type="delete">
|
2
|
+
<%= link_to "Supprimer", @path, data: { "turbo-method": :delete, turbo_confirm: 'Êtes vous sûr ?' } %>
|
3
|
+
</button>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="relative">
|
2
|
+
<div class="absolute inset-0 flex items-center" aria-hidden="true">
|
3
|
+
<div class="w-full border-t border-gray-300"></div>
|
4
|
+
</div>
|
5
|
+
<div class="relative flex justify-center">
|
6
|
+
<span class="bg-white px-2 text-sm text-gray-500"><%= @title %></span>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<div class="pt-5">
|
2
|
+
<div class="flex justify-end">
|
3
|
+
<button type="submit" class="ml-3 inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
4
|
+
Sauvegarder
|
5
|
+
</button>
|
6
|
+
</div>
|
7
|
+
</div>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M11 5.882V19.24a1.76 1.76 0 01-3.417.592l-2.147-6.15M18 13a3 3 0 100-6M5.436 13.683A4.001 4.001 0 017 6h1.832c4.1 0 7.625-1.234 9.168-3v14c-1.543-1.766-5.067-3-9.168-3H7a3.988 3.988 0 01-1.564-.317z" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6v-3z" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6" xmlns="http://www.w3.org/2000/svg" className="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
2
|
+
<path strokeLinecap="round" strokeLinejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
2
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"/>
|
3
|
+
</svg>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<div class="mt-4 sm:mt-0 sm:ml-16 sm:flex-none">
|
2
|
+
<%= link_to '+', @path, class: "inline-flex items-center justify-center rounded-md border border-transparent bg-indigo-600 px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 sm:w-auto" %>
|
3
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="sm:flex sm:items-center">
|
2
|
+
<div class="sm:flex-auto">
|
3
|
+
<h1 class="text-xl font-semibold text-gray-900">
|
4
|
+
<%= @title %>
|
5
|
+
</h1>
|
6
|
+
<p class="mt-2 text-sm text-gray-700">
|
7
|
+
<%= @subtitle %>
|
8
|
+
</p>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<% if add_button? %>
|
12
|
+
<%= add_button %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div>
|
2
|
+
<label class="block my-5 block text-sm font-medium text-gray-700 string optional text-sm font-medium text-gray-600">
|
3
|
+
<%= label %>
|
4
|
+
<% if @object.attached? && object.variable? %>
|
5
|
+
<%= image_tag @picture, class: 'border-2 border-dashed border-gray-300 mb-4' %>
|
6
|
+
<% elsif @object.attached? %>
|
7
|
+
<div><%= link_to @object.filename, url_for(@object) %></div>
|
8
|
+
<% end %>
|
9
|
+
<%= @form.file_field @field, class: "font-normal block text-sm text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 file:mr-5 file:py-2 file:px-6 file:border-0 pr-5" %>
|
10
|
+
</label>
|
11
|
+
</div>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Input
|
4
|
+
class FileComponent < ViewComponent::Base
|
5
|
+
def initialize(item:, field:, form:, variant: nil)
|
6
|
+
@item = item
|
7
|
+
@field = field
|
8
|
+
@form = form
|
9
|
+
@label = label
|
10
|
+
@variant = variant
|
11
|
+
@picture = picture
|
12
|
+
@object = object
|
13
|
+
end
|
14
|
+
|
15
|
+
def label
|
16
|
+
I18n.t("#{@item.class.name.downcase}.attributes.#{@field}")
|
17
|
+
end
|
18
|
+
|
19
|
+
def picture
|
20
|
+
return object unless @variant
|
21
|
+
|
22
|
+
object.variant(@variant)
|
23
|
+
end
|
24
|
+
|
25
|
+
def object
|
26
|
+
@item.send(@field)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class=" md:flex md:w-64 md:flex-col md:fixed md:inset-y-0">
|
2
|
+
<div class="flex-1 flex flex-col min-h-0 bg-sidebar">
|
3
|
+
<div class="flex-1 flex flex-col pt-5 pb-4 overflow-y-auto">
|
4
|
+
<div class="flex items-center flex-shrink-0 px-4">
|
5
|
+
<%= image_tag("https://tymate.com/assets/logos/logo-full-tymate-white-44c399f36de12ec8b69a86ec02ab13fc5c80842dd2333117658ead762ff15f93.svg", alt: "logo rif", class: 'mx-auto h-15 w-auto') %>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<nav class="mt-5 flex-1 px-2 space-y-1" aria-label="Sidebar">
|
9
|
+
|
10
|
+
<% items.each do |item| %>
|
11
|
+
<%= item %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
</nav>
|
15
|
+
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<% if current_user_card? %>
|
19
|
+
<%= current_user_card %>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
</div>
|
23
|
+
</div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% current_class = current_page?(@path) ? 'bg-sidebar-900 text-white hover:bg-sidebar-900' : '' %>
|
2
|
+
|
3
|
+
<%= link_to @path, class: "#{current_class} group flex items-center px-2 py-2 text-sm font-medium rounded-md hover:bg-sidebar-200" do %>
|
4
|
+
<%= render(@icon.new) %>
|
5
|
+
|
6
|
+
<span class="flex-1 text-white">
|
7
|
+
<%= @label %>
|
8
|
+
</span>
|
9
|
+
<% end %>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= button_to sign_out_path, class:"flex items-center", method: :delete do %>
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="white" stroke-width="2">
|
3
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
4
|
+
</svg>
|
5
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
<div class="mt-8 flex flex-col">
|
3
|
+
<div class="-my-2 -mx-4 overflow-x-auto sm:-mx-6 lg:-mx-8">
|
4
|
+
<div class="inline-block min-w-full py-2 align-middle md:px-6 lg:px-8">
|
5
|
+
<div class="overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg">
|
6
|
+
<table class="min-w-full divide-y divide-gray-300">
|
7
|
+
|
8
|
+
<% if thead? %>
|
9
|
+
<%= thead %>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% if tbody? %>
|
13
|
+
<%= tbody %>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
</table>
|
17
|
+
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module FlashHelper
|
4
|
+
# todo remove me and create a custom administrator authentification
|
5
|
+
def current_user
|
6
|
+
OpenStruct.new(email: "michel@tymate.com")
|
7
|
+
end
|
8
|
+
|
9
|
+
def classes_for_flash(key)
|
10
|
+
if %w[error alert].include?(key)
|
11
|
+
'red'
|
12
|
+
else
|
13
|
+
'green'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/tybo.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
autoload 'AttachmentCardComponent', 'app/components/attachment_card_component'
|
2
|
+
autoload 'AttachmentsListComponent', 'app/components/attachments_list_component'
|
3
|
+
autoload 'CurrentUserMiniCardComponent', 'app/components/current_user_mini_card_component'
|
4
|
+
autoload 'FormComponent', 'app/components/form_component'
|
5
|
+
autoload 'IndexComponent', 'app/components/index_component'
|
6
|
+
autoload 'IndexHeaderAddComponent', 'app/components/index_header_add_component'
|
7
|
+
autoload 'IndexHeaderComponent', 'app/components/index_header_component'
|
8
|
+
autoload 'SidebarComponent', 'app/components/sidebar_component'
|
9
|
+
autoload 'SidebarItemComponent', 'app/components/sidebar_item_component'
|
10
|
+
autoload 'SignOutButtonComponent', 'app/components/sign_out_button_component'
|
11
|
+
autoload 'ModalComponent', 'app/components/modal_component'
|
12
|
+
|
13
|
+
module Forms
|
14
|
+
autoload 'BreadcrumbComponent', 'app/components/forms/breadcrumb_component'
|
15
|
+
autoload 'DeleteButtonComponent', 'app/components/forms/delete_button_component'
|
16
|
+
autoload 'DividerComponent', 'app/components/forms/divider_component'
|
17
|
+
autoload 'SubmitButtonComponent', 'app/components/forms/submit_button_component'
|
18
|
+
autoload 'SubtitleComponent', 'app/components/forms/subtitle_component'
|
19
|
+
autoload 'TitleComponent', 'app/components/forms/title_component'
|
20
|
+
end
|
21
|
+
|
22
|
+
module Icons
|
23
|
+
autoload 'CollectionComponent', 'app/components/icons/collection_component'
|
24
|
+
autoload 'HomeComponent', 'app/components/icons/home_component'
|
25
|
+
autoload 'MicComponent', 'app/components/icons/mic_component'
|
26
|
+
autoload 'NewsPaperComponent', 'app/components/icons/news_paper_component'
|
27
|
+
autoload 'OfficeBuildingComponent', 'app/components/icons/office_building_component'
|
28
|
+
autoload 'QuestionMarkCircleComponent', 'app/components/icons/question_mark_circle_component'
|
29
|
+
autoload 'TrashComponent', 'app/components/icons/trash_component'
|
30
|
+
autoload 'UsersComponent', 'app/components/icons/users_component'
|
31
|
+
end
|
32
|
+
|
33
|
+
module Input
|
34
|
+
autoload 'FileComponent', 'app/components/input/file_component'
|
35
|
+
end
|
36
|
+
|
37
|
+
module Tables
|
38
|
+
autoload 'TableComponent', 'app/components/tables/table_component'
|
39
|
+
autoload 'TbodyComponent', 'app/components/tables/tbody_component'
|
40
|
+
autoload 'TdComponent', 'app/components/tables/td_component'
|
41
|
+
autoload 'ThComponent', 'app/components/tables/th_component'
|
42
|
+
autoload 'TheadComponent', 'app/components/tables/thead_component'
|
43
|
+
autoload 'TrComponent', 'app/components/tables/tr_component'
|
44
|
+
autoload 'ActiveRecordTotoComponent', 'app/components/tables/active_record_toto_component'
|
45
|
+
end
|
metadata
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tybo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Julien Camblan
|
8
|
+
- Michel Delpierre
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2022-12-06 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: turbo-rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 1.1.1
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.1.1
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: stimulus-rails
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 1.1.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 1.1.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: view_component
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 2.62.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 2.62.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: tailwindcss-rails
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '2.0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '2.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: ransack
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
description: Collection of ViewComponents objects for backoffice
|
85
|
+
email: tech@tymate.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- lib/app/components/attachment_card_component.html.erb
|
91
|
+
- lib/app/components/attachment_card_component.rb
|
92
|
+
- lib/app/components/attachments_list_component.html.erb
|
93
|
+
- lib/app/components/attachments_list_component.rb
|
94
|
+
- lib/app/components/current_user_mini_card_component.html.erb
|
95
|
+
- lib/app/components/current_user_mini_card_component.rb
|
96
|
+
- lib/app/components/form_component.html.erb
|
97
|
+
- lib/app/components/form_component.rb
|
98
|
+
- lib/app/components/forms/breadcrumb_component.html.erb
|
99
|
+
- lib/app/components/forms/breadcrumb_component.rb
|
100
|
+
- lib/app/components/forms/delete_button_component.html.erb
|
101
|
+
- lib/app/components/forms/delete_button_component.rb
|
102
|
+
- lib/app/components/forms/divider_component.html.erb
|
103
|
+
- lib/app/components/forms/divider_component.rb
|
104
|
+
- lib/app/components/forms/submit_button_component.html.erb
|
105
|
+
- lib/app/components/forms/submit_button_component.rb
|
106
|
+
- lib/app/components/forms/subtitle_component.html.erb
|
107
|
+
- lib/app/components/forms/subtitle_component.rb
|
108
|
+
- lib/app/components/forms/title_component.html.erb
|
109
|
+
- lib/app/components/forms/title_component.rb
|
110
|
+
- lib/app/components/icons/collection_component.html.erb
|
111
|
+
- lib/app/components/icons/collection_component.rb
|
112
|
+
- lib/app/components/icons/home_component.html.erb
|
113
|
+
- lib/app/components/icons/home_component.rb
|
114
|
+
- lib/app/components/icons/mic_component.html.erb
|
115
|
+
- lib/app/components/icons/mic_component.rb
|
116
|
+
- lib/app/components/icons/news_paper_component.html.erb
|
117
|
+
- lib/app/components/icons/news_paper_component.rb
|
118
|
+
- lib/app/components/icons/office_building_component.html.erb
|
119
|
+
- lib/app/components/icons/office_building_component.rb
|
120
|
+
- lib/app/components/icons/question_mark_circle_component.html.erb
|
121
|
+
- lib/app/components/icons/question_mark_circle_component.rb
|
122
|
+
- lib/app/components/icons/trash_component.html.erb
|
123
|
+
- lib/app/components/icons/trash_component.rb
|
124
|
+
- lib/app/components/icons/users_component.html.erb
|
125
|
+
- lib/app/components/icons/users_component.rb
|
126
|
+
- lib/app/components/index_component.html.erb
|
127
|
+
- lib/app/components/index_component.rb
|
128
|
+
- lib/app/components/index_header_add_component.html.erb
|
129
|
+
- lib/app/components/index_header_add_component.rb
|
130
|
+
- lib/app/components/index_header_component.html.erb
|
131
|
+
- lib/app/components/index_header_component.rb
|
132
|
+
- lib/app/components/input/file_component.html.erb
|
133
|
+
- lib/app/components/input/file_component.rb
|
134
|
+
- lib/app/components/sidebar_component.html.erb
|
135
|
+
- lib/app/components/sidebar_component.rb
|
136
|
+
- lib/app/components/sidebar_item_component.html.erb
|
137
|
+
- lib/app/components/sidebar_item_component.rb
|
138
|
+
- lib/app/components/sign_out_button_component.html.erb
|
139
|
+
- lib/app/components/sign_out_button_component.rb
|
140
|
+
- lib/app/components/tables/table_component.html.erb
|
141
|
+
- lib/app/components/tables/table_component.rb
|
142
|
+
- lib/app/components/tables/tbody_component.html.erb
|
143
|
+
- lib/app/components/tables/tbody_component.rb
|
144
|
+
- lib/app/components/tables/td_component.html.erb
|
145
|
+
- lib/app/components/tables/td_component.rb
|
146
|
+
- lib/app/components/tables/th_component.html.erb
|
147
|
+
- lib/app/components/tables/th_component.rb
|
148
|
+
- lib/app/components/tables/thead_component.html.erb
|
149
|
+
- lib/app/components/tables/thead_component.rb
|
150
|
+
- lib/app/components/tables/tr_component.html.erb
|
151
|
+
- lib/app/components/tables/tr_component.rb
|
152
|
+
- lib/app/helpers/application_helper.rb
|
153
|
+
- lib/app/helpers/flash_helper.rb
|
154
|
+
- lib/app/javascript/controllers/flash_controller.js
|
155
|
+
- lib/tybo.rb
|
156
|
+
homepage: https://rubygems.org/gems/backoffice-components
|
157
|
+
licenses:
|
158
|
+
- MIT
|
159
|
+
metadata: {}
|
160
|
+
post_install_message:
|
161
|
+
rdoc_options: []
|
162
|
+
require_paths:
|
163
|
+
- lib
|
164
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
169
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
requirements: []
|
175
|
+
rubygems_version: 3.2.32
|
176
|
+
signing_key:
|
177
|
+
specification_version: 4
|
178
|
+
summary: ''
|
179
|
+
test_files: []
|