tybo 0.0.40 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe1a3a1cb71b4dee7e4f1b20f1c7f68cb255c5ee6ccb111c3c78a258946b93b6
4
- data.tar.gz: f5e0552c09e34de629338efc300f2f2dc7d9c480e34a9cdd54750af6f45e711c
3
+ metadata.gz: 137ef5fd100e4717b2e18d5d4172925f6fb46417c364edfdcf751825f744ea4f
4
+ data.tar.gz: feaa2b04193b920be1b6299f4ce56f4c8d9e3cf8c91ea78746556488ac5b0f45
5
5
  SHA512:
6
- metadata.gz: 80604e36494268cc561093a2b09f1cb8f31dde3e71a5b727d6f2b211245898ad08e1e6c2917506a467848daf77e55abbf4907b822c362aa626b23ab3b7fc68d3
7
- data.tar.gz: 0c5e58422f0e1a98bb7602a9c82f9617ea202e221fd5f9d3185e7f22691999652412c4599e3abf732558f6f42a70eedf41d4be466ea4ef5c92ae90891b82569c
6
+ metadata.gz: c4d303e6b853091ea43824107ef5c3d2705ed7062330aba03b37cc83fdc6338abe3801ac7a936164982d48d2e10cc5dada3b6feed336df65d2e7a9afc204d885
7
+ data.tar.gz: 1fb95391f3b3925847e32ac7c0da697ea689fa871ee9b9749dadfa0ba41ba4381569cb203120fe8a5dc3d940335e39e45076ae4f4eeca1a6ab643eba1fd5d047
@@ -1,6 +1,4 @@
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 %>
1
+ <%= link_to @path, class: "#{current_page?(@path) ? 'bg-tybo-800 text-white hover:bg-tybo-800' : ''} group flex items-center px-2 py-2 text-sm font-medium rounded-md hover:bg-tybo-800" do %>
4
2
  <%= render(@icon.new) %>
5
3
 
6
4
  <span class="flex-1 text-white">
@@ -3,7 +3,7 @@ module Tybo
3
3
  module FlashHelper
4
4
  def classes_for_flash(key)
5
5
  if %w[error alert].include?(key)
6
- 'bg-red-100 text-red-700'
6
+ 'bg-red-alert text-white'
7
7
  else
8
8
  'bg-tybo text-white'
9
9
  end
@@ -12,7 +12,7 @@
12
12
  required: true,
13
13
  class: 'block text-sm font-medium text-gray-700' %>
14
14
  <div class="mt-5">
15
- <%= f.button :submit, "Sauvegarder", class: "flex w-full justify-center rounded-md border border-transparent bg-tybo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2", data: { turbo: false } %>
15
+ <%= f.button :submit, I18n.t("bo.devise.save"), class: "flex w-full justify-center rounded-md border border-transparent bg-tybo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2", data: { turbo: false } %>
16
16
  </div>
17
17
  <% end %>
18
18
  <% end %>
@@ -9,7 +9,7 @@
9
9
  </div>
10
10
 
11
11
  <div class="mt-5">
12
- <%= f.button :submit, I18n.t("devise.passwords.new.send_me_reset_password_instructions"), class: "flex w-full justify-center rounded-md border border-transparent bg-tybo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2", data: { turbo: false } %>
12
+ <%= f.button :submit, I18n.t("bo.devise.send_me_reset_password_instructions"), class: "flex w-full justify-center rounded-md border border-transparent bg-tybo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2", data: { turbo: false } %>
13
13
  </div>
14
14
  <% end %>
15
15
  <% end %>
@@ -18,18 +18,18 @@
18
18
  <div class="flex items-center justify-between">
19
19
  <div class="flex items-center">
20
20
  <input id="remember_me" name="remember_me" type="checkbox" class="h-4 w-4 rounded border-gray-300 text-tybo-600 focus:ring-tybo-500">
21
- <label for="remember_me" class="ml-2 block text-sm text-gray-900"><%=I18n.t("activerecord.attributes.user.remember_me")%></label>
21
+ <label for="remember_me" class="ml-2 block text-sm text-gray-900"><%=I18n.t("bo.devise.remember_me")%></label>
22
22
  </div>
23
23
 
24
24
  <div class="text-sm">
25
25
  <a href="<%= new_password_path(resource)%>" class="font-medium text-tybo-600 hover:text-tybo-500", data-turbo='false' >
26
- <%=I18n.t("devise.passwords.new.forgot_your_password")%>
26
+ <%=I18n.t("bo.devise.forgot_password")%>
27
27
  </a>
28
28
  </div>
29
29
  </div>
30
30
 
31
31
  <div class="mt-5">
32
- <%= f.button :submit, I18n.t("devise.sessions.new.sign_in"), class: "flex w-full justify-center rounded-md border border-transparent bg-tybo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2", data: { turbo: false } %>
32
+ <%= f.button :submit, I18n.t("bo.devise.sign_in"), class: "flex w-full justify-center rounded-md border border-transparent bg-tybo-600 py-2 px-4 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2", data: { turbo: false } %>
33
33
  </div>
34
34
  <% end %>
35
35
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <div class="space-y-1 mt-1">
2
2
  <%- if controller_name != 'sessions' %>
3
- <%= link_to I18n.t('devise.sessions.new.sign_in'), new_session_path(resource_name), class: "inline-flex w-full justify-center rounded-md border border-gray-300 bg-white py-2 px-4 text-sm font-medium text-gray-500 shadow-sm hover:bg-gray-50" %><br />
3
+ <%= link_to I18n.t('bo.devise.sign_in'), new_session_path(resource_name), class: "inline-flex w-full justify-center rounded-md border border-gray-300 bg-white py-2 px-4 text-sm font-medium text-gray-500 shadow-sm hover:bg-gray-50" %><br />
4
4
  <% end %>
5
5
 
6
6
  <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
@@ -1,16 +1,16 @@
1
- <div class="rounded-md bg-red-50 p-4 my-3" data-controller="flash">
1
+ <div class="rounded-md bg-red-alert text-white p-4 my-3" data-controller="flash">
2
2
  <div class="flex">
3
3
  <div class="flex-shrink-0">
4
- <svg class="h-5 w-5 text-red-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
4
+ <svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
5
5
  <path fill-rule="evenodd" d="M8.485 3.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 3.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd"/>
6
6
  </svg>
7
7
  </div>
8
8
  <div class="ml-3">
9
- <p class="text-sm font-medium text-red-800"><%= errors %></p>
9
+ <p class="text-sm font-medium"><%= errors %></p>
10
10
  </div>
11
11
  <div class="ml-auto pl-3">
12
12
  <div class="-mx-1.5 -my-1.5">
13
- <button type="button" data-action="flash#dismiss" class="inline-flex bg-red-50 rounded-md p-1.5 text-red-500 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-red-50 focus:ring-red-600">
13
+ <button type="button" data-action="flash#dismiss" class="inline-flex bg-red-50 rounded-md p-1.5 text-red-alert hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-red-50 focus:ring-red-600">
14
14
  <span class="sr-only">Dismiss</span>
15
15
  <svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
16
16
  <path d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"/>
@@ -19,4 +19,4 @@
19
19
  </div>
20
20
  </div>
21
21
  </div>
22
- </div>
22
+ </div>
@@ -1,26 +1,28 @@
1
1
  <% link = pagy_link_proc(pagy) -%>
2
2
  <nav class="mx-auto mt-6 flex max-w-7xl justify-between px-4 text-sm font-medium text-gray-700 sm:px-6 lg:px-8" role="navigation">
3
- <% if pagy.prev -%>
3
+
4
+ <% if pagy.prev -%>
4
5
  <div class="min-w-0 flex-1">
5
6
  <%== link.call(pagy.prev, I18n.t('bo.nav.prev'), 'aria-label="previous" class="inline-flex h-10 items-center rounded-md border border-gray-300 bg-white px-4 hover:bg-gray-100 focus:border-tybo-600 focus:outline-none focus:ring-2 focus:ring-tybo-600 focus:ring-opacity-25 focus:ring-offset-1 focus:ring-offset-tybo-600""') %>
6
7
  </div>
7
- <% else -%>
8
+ <% else -%>
8
9
  <div class="min-w-0 flex-1">
9
10
  <%== link.call(pagy.prev, I18n.t('bo.nav.prev'), 'aria-label="previous" class="hidden"') %>
10
11
  </div>
11
12
  <% end -%>
12
- <% pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
13
- <% if item.is_a?(Integer) -%>
14
- <%== link.call(item, item, 'class="inline-flex h-10 items-center rounded-md border border-gray-300 bg-white px-4 hover:bg-gray-100 focus:border-tybo-600 focus:outline-none focus:ring-2 focus:ring-tybo-600 focus:ring-opacity-25 focus:ring-offset-1 focus:ring-offset-tybo-600"') %>
15
- <% elsif item.is_a?(String) -%>
16
- <%== link.call(item, item, 'class="toto inline-flex h-10 items-center rounded-md border border-tybo-600 bg-white px-4 ring-1 ring-tybo-600 hover:bg-gray-100 focus:border-tybo-600 focus:outline-none focus:ring-2 focus:ring-tybo-600 focus:ring-opacity-25 focus:ring-offset-1 focus:ring-offset-tybo-600"') %>
17
- <% elsif item == :gap -%>
18
- <span class="inline-flex h-10 items-center px-1.5 text-gray-500">
19
- <%== I18n.t('bo.nav.gap') %>
20
- </span>
13
+ <% if pagy.next -%>
14
+ <% pagy.series.each do |item|
15
+ # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
16
+ <% if item.is_a?(Integer) -%>
17
+ <%== link.call(item, item, 'class="inline-flex h-10 items-center rounded-md border border-gray-300 bg-white px-4 hover:bg-gray-100 focus:border-tybo-600 focus:outline-none focus:ring-2 focus:ring-tybo-600 focus:ring-opacity-25 focus:ring-offset-1 focus:ring-offset-tybo-600"') %>
18
+ <% elsif item.is_a?(String) -%>
19
+ <%== link.call(item, item, 'class="inline-flex h-10 items-center rounded-md border border-tybo-600 bg-white px-4 ring-1 ring-tybo-600 hover:bg-gray-100 focus:border-tybo-600 focus:outline-none focus:ring-2 focus:ring-tybo-600 focus:ring-opacity-25 focus:ring-offset-1 focus:ring-offset-tybo-600"') %>
20
+ <% elsif item == :gap -%>
21
+ <span class="inline-flex h-10 items-center px-1.5 text-gray-500">
22
+ <%== I18n.t('bo.nav.gap') %>
23
+ </span>
24
+ <% end -%>
21
25
  <% end -%>
22
- <% end -%>
23
- <% if pagy.next -%>
24
26
  <div class="flex min-w-0 flex-1 justify-end">
25
27
  <%== link.call(pagy.next, I18n.t('bo.nav.next'), 'aria-label="next" class="inline-flex h-10 items-center rounded-md border border-gray-300 bg-white px-4 hover:bg-gray-100 focus:border-tybo-600 focus:outline-none focus:ring-2 focus:ring-tybo-600 focus:ring-opacity-25 focus:ring-offset-1 focus:ring-offset-tybo-600"') %>
26
28
  </div>
@@ -13,7 +13,7 @@
13
13
  <%- end -%>
14
14
  <%%= tr.with_td do %>
15
15
  <%%= link_to <%="#{options[:namespace]}_#{class_name.underscore}_path(#{class_name.underscore})"%>, class: "text-tybo-600 hover:text-tybo-900" do %>
16
- <%%= I18n.t('bo.details') %>
16
+ <%%= I18n.t('bo.show') %>
17
17
  <%% end %>
18
18
  <%% end %>
19
19
  <%%= tr.with_td do %>
@@ -21,5 +21,6 @@
21
21
  "to": "à",
22
22
  "next": "Suivant",
23
23
  "prev": "Précédent",
24
- "gap": "..."
24
+ "gap": "...",
25
+ "show ": "Détails"
25
26
  }
@@ -15,11 +15,17 @@ def create_translations
15
15
  'created' => find_existing_translation('created', local),
16
16
  'updated' => find_existing_translation('updated', local),
17
17
  'destroyed' => find_existing_translation('destroyed', local),
18
- 'nav' => {
19
- 'prev' => find_existing_translation('prev', local),
20
- 'next' => find_existing_translation('next', local),
21
- 'gap' => find_existing_translation('gap', local)
22
- }
18
+ 'show' => find_existing_translation('show', local),
19
+ },
20
+ 'nav' => {
21
+ 'prev' => find_existing_translation('prev', local),
22
+ 'next' => find_existing_translation('next', local),
23
+ 'gap' => find_existing_translation('gap', local)
24
+ },
25
+ 'devise' => {
26
+ 'password' => find_existing_translation('password', local),
27
+ 'new' => find_existing_translation('new', local),
28
+ 'forgot_password' => find_existing_translation('forgot_password', local),
23
29
  }
24
30
  }
25
31
  }
@@ -50,7 +56,7 @@ def model_attributes(data, local)
50
56
  end
51
57
 
52
58
  def find_existing_translation(col, local)
53
- return col.to_s.humanize.downcase if local == 'en'
59
+ return col.to_s.humanize.capitalize if local == 'en'
54
60
 
55
61
  json = JSON.parse(File.read("#{__dir__}/files/#{local}.json"))
56
62
  json[col.to_s]
@@ -2,7 +2,8 @@
2
2
 
3
3
  class BoNamespaceGenerator < Rails::Generators::NamedBase
4
4
  source_root File.expand_path("templates", __dir__)
5
-
5
+ require_relative "./utils/translations.rb"
6
+
6
7
  def create_bo_namespace_files
7
8
  run "bundle exec rails g devise #{file_name.capitalize}"
8
9
  run 'bundle exec rails db:migrate'
@@ -11,6 +12,7 @@ class BoNamespaceGenerator < Rails::Generators::NamedBase
11
12
  template 'admin_controller.rb', File.join('app/controllers/', "#{singular_name}_controller.rb")
12
13
  template 'seeds.rb', File.join('db/seeds/', "#{plural_name}.rb")
13
14
  template 'side_bar.html.erb', File.join('app/views/', "#{plural_name}/layouts/_side_bar.html.erb")
15
+ create_translations
14
16
  remove_devise_registration
15
17
  end
16
18
 
@@ -0,0 +1,4 @@
1
+ {
2
+ "sign_in_as_administator": "Sign in as administator",
3
+ "sign_in_as_user": "Sign in as user"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "sign_in_as_administator": "Espace Administrateur",
3
+ "sign_in_as_user": "Espace Utilisateurs"
4
+ }
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ def create_translations
4
+ %w[en fr].each do |local|
5
+ locale_file = "config/locales/bo.#{local}.yml"
6
+ yaml_string = File.open locale_file
7
+ data = YAML.load yaml_string
8
+ if data[local]['bo']['devise']['sign_in_as']
9
+ data[local]['bo']['devise']['sign_in_as'].merge!(
10
+ {
11
+ "#{singular_name}" => find_existing_translation("sign_in_as_#{singular_name.downcase}", local)
12
+ }
13
+ )
14
+ else
15
+ data[local]['bo']['devise'].merge!(
16
+ 'sign_in_as' => {
17
+ "#{singular_name}" => find_existing_translation("sign_in_as_#{singular_name.downcase}", local)
18
+ }
19
+ )
20
+ end
21
+
22
+ output = YAML.dump data
23
+ File.write(locale_file, output)
24
+ end
25
+ end
26
+
27
+ def find_existing_translation(col, local)
28
+ json = {
29
+ sign_in_as_administrator:{
30
+ fr: "Espace administrateur",
31
+ en: "Namespace administrator"
32
+ },
33
+ sign_in_as_user: {
34
+ fr: "Espace user",
35
+ en: "Namespace user"
36
+ }
37
+ }
38
+ json.dig(col.to_sym, local.to_sym)
39
+ end
@@ -45,10 +45,10 @@ SimpleForm.setup do |config|
45
45
  b.optional :pattern
46
46
  b.optional :min_max
47
47
  b.optional :readonly
48
- b.use :label, class: 'block text-sm font-medium text-gray-700', error_class: 'text-red-500'
48
+ b.use :label, class: 'block text-sm font-medium text-gray-700', error_class: 'text-red-alert'
49
49
  b.use :input,
50
50
  class: 'mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-tybo-500 focus:border-tybo-500 sm:text-sm', error_class: 'border-red-500', valid_class: 'border-green-400'
51
- b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
51
+ b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-alert text-xs italic' }
52
52
  b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
53
53
  end
54
54
 
@@ -61,9 +61,9 @@ SimpleForm.setup do |config|
61
61
  class: 'focus:ring-2 focus:ring-tybo-500:focus ring-offset-2 h-4 w-4 text-tybo-600 border-gray-300 rounded'
62
62
  end
63
63
  b.wrapper tag: 'div', class: 'ml-3 text-sm' do |bb|
64
- bb.use :label, class: 'block', error_class: 'text-red-500'
64
+ bb.use :label, class: 'block', error_class: 'text-red-alert'
65
65
  bb.use :hint, wrap_with: { tag: 'p', class: 'block text-grey-700 text-xs italic' }
66
- bb.use :full_error, wrap_with: { tag: 'p', class: 'block text-red-500 text-xs italic' }
66
+ bb.use :full_error, wrap_with: { tag: 'p', class: 'block text-red-alert text-xs italic' }
67
67
  end
68
68
  end
69
69
 
@@ -73,12 +73,12 @@ SimpleForm.setup do |config|
73
73
  b.use :html5
74
74
  b.optional :readonly
75
75
  b.wrapper :legend_tag, tag: 'legend', class: 'text-sm font-medium text-gray-600',
76
- error_class: 'text-red-500' do |ba|
76
+ error_class: 'text-red-alert' do |ba|
77
77
  ba.use :label_text
78
78
  end
79
79
  b.use :input,
80
- class: 'focus:ring-2 focus:ring-tybo-500 ring-offset-2 h-4 w-4 text-tybo-600 border-gray-300 rounded', error_class: 'text-red-500', valid_class: 'text-green-400'
81
- b.use :full_error, wrap_with: { tag: 'p', class: 'block mt-2 text-red-500 text-xs italic' }
80
+ class: 'focus:ring-2 focus:ring-tybo-500 ring-offset-2 h-4 w-4 text-tybo-600 border-gray-300 rounded', error_class: 'text-red-alert', valid_class: 'text-green-400'
81
+ b.use :full_error, wrap_with: { tag: 'p', class: 'block mt-2 text-red-alert text-xs italic' }
82
82
  b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
83
83
  end
84
84
 
@@ -89,10 +89,10 @@ SimpleForm.setup do |config|
89
89
  b.optional :maxlength
90
90
  b.optional :minlength
91
91
  b.optional :readonly
92
- b.use :label, class: 'text-sm font-medium text-gray-600 block', error_class: 'text-red-500'
93
- b.use :input, class: 'w-full text-gray-500 px-3 py-2 border rounded', error_class: 'text-red-500 border-red-500',
92
+ b.use :label, class: 'text-sm font-medium text-gray-600 block', error_class: 'text-red-alert'
93
+ b.use :input, class: 'w-full text-gray-500 px-3 py-2 border rounded', error_class: 'text-red-alert border-red-500',
94
94
  valid_class: 'text-green-400'
95
- b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
95
+ b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-alert text-xs italic' }
96
96
  b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
97
97
  end
98
98
 
@@ -101,31 +101,31 @@ SimpleForm.setup do |config|
101
101
  b.use :html5
102
102
  b.optional :readonly
103
103
  b.wrapper :legend_tag, tag: 'legend', class: 'text-sm font-medium text-gray-600',
104
- error_class: 'text-red-500' do |ba|
104
+ error_class: 'text-red-alert' do |ba|
105
105
  ba.use :label_text
106
106
  end
107
107
  b.wrapper tag: 'div', class: 'inline-flex space-x-1' do |ba|
108
- # ba.use :input, class: 'flex w-auto w-auto text-gray-500 text-sm border-gray-300 rounded p-2', error_class: 'text-red-500', valid_class: 'text-green-400'
108
+ # ba.use :input, class: 'flex w-auto w-auto text-gray-500 text-sm border-gray-300 rounded p-2', error_class: 'text-red-alert', valid_class: 'text-green-400'
109
109
  ba.use :input,
110
110
  class: 'flex w-auto w-auto shadow appearance-none border border-gray-300 rounded w-full p-2 bg-white focus:outline-none focus:border-blue-500 text-gray-400 leading-4 transition-colors duration-200 ease-in-out'
111
111
  end
112
- b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
112
+ b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-alert text-xs italic' }
113
113
  b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
114
114
  end
115
115
 
116
116
  # vertical range input
117
- config.wrappers :vertical_range, tag: 'div', class: 'my-4', error_class: 'text-red-500',
117
+ config.wrappers :vertical_range, tag: 'div', class: 'my-4', error_class: 'text-red-alert',
118
118
  valid_class: 'text-green-400' do |b|
119
119
  b.use :html5
120
120
  b.use :placeholder
121
121
  b.optional :readonly
122
122
  b.optional :step
123
- b.use :label, class: 'text-sm font-medium text-gray-600 block', error_class: 'text-red-500'
123
+ b.use :label, class: 'text-sm font-medium text-gray-600 block', error_class: 'text-red-alert'
124
124
  b.wrapper tag: 'div', class: 'flex items-center h-5 my-100' do |ba|
125
125
  ba.use :input, class: 'rounded-lg overflow-hidden appearance-none bg-gray-400 h-3 w-full text-gray-300',
126
- error_class: 'text-red-500', valid_class: 'text-green-400'
126
+ error_class: 'text-red-alert', valid_class: 'text-green-400'
127
127
  end
128
- b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-500 text-xs italic' }
128
+ b.use :full_error, wrap_with: { tag: 'p', class: 'mt-2 text-red-alert text-xs italic' }
129
129
  b.use :hint, wrap_with: { tag: 'p', class: 'mt-2 text-grey-700 text-xs italic' }
130
130
  end
131
131
 
@@ -18,17 +18,32 @@ module.exports = {
18
18
  },
19
19
  colors: {
20
20
  tybo: {
21
- DEFAULT: '#11072C',
22
- 50: '#e9ebff',
23
- 100: '#d8d9ff',
24
- 200: '#b8b8ff',
25
- 300: '#918eff',
26
- 400: '#7561ff',
27
- 500: '#653dff',
28
- 600: '#5f1cff',
29
- 700: '#5611f1',
30
- 800: '#4512c1',
31
- 900: '#11072c'
21
+ DEFAULT: '#5626d9',
22
+ '50': '#f4f3ff',
23
+ '100': '#eae9fe',
24
+ '200': '#d8d6fe',
25
+ '300': '#bbb5fd',
26
+ '400': '#998bfa',
27
+ '500': '#785cf6',
28
+ '600': '#663aed',
29
+ '700': '#5626d9',
30
+ '800': '#4921b6',
31
+ '900': '#3d1d95',
32
+ '950': '#241065',
33
+ },
34
+ 'red-alert': {
35
+ DEFAULT: '#D0342C',
36
+ '50': '#fdf3f3',
37
+ '100': '#fde4e3',
38
+ '200': '#fbcfcd',
39
+ '300': '#f8ada9',
40
+ '400': '#f17e78',
41
+ '500': '#e7544c',
42
+ '600': '#d0342c',
43
+ '700': '#b12b24',
44
+ '800': '#932721',
45
+ '900': '#7a2622',
46
+ '950': '#42100d',
32
47
  }
33
48
  }
34
49
  },
@@ -3,7 +3,7 @@
3
3
  Tybo.configure do |config|
4
4
  # customise logo and cover url
5
5
  # should be an external url or image should be present in (app/assets/images)
6
- config.logo_url = 'https://www.datocms-assets.com/33962/1667497145-logo-colored.svg'
7
- config.nav_logo_url = 'https://www.datocms-assets.com/33962/1667497145-logo-colored.svg'
8
- config.cover_url = 'https://tymate.com/_next/image?url=https%3A%2F%2Fwww.datocms-assets.com%2F33962%2F1671032522-natif-2.jpg%3Fw%3D1600&w=3840&q=75'
6
+ config.logo_url = 'logo.svg'
7
+ config.nav_logo_url = 'nav_logo.png'
8
+ config.cover_url = 'cover.svg'
9
9
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  class TyboInstallGenerator < Rails::Generators::Base
4
4
  source_root File.expand_path("templates", __dir__)
5
+ require_relative "./utils/translations.rb"
5
6
 
6
7
  def install_dependencies
7
8
  gem 'tailwindcss-rails', '~> 2.0', '>= 2.0.21' unless Bundler.locked_gems.specs.any? { |gem| gem.name == 'tailwindcss-rails' }
@@ -12,6 +13,7 @@ class TyboInstallGenerator < Rails::Generators::Base
12
13
  end
13
14
 
14
15
  def create_configuration_files
16
+ create_base_translation_files
15
17
  template 'application.tailwind.css', File.join('app/assets/stylesheets/application.tailwind.css'), force: true
16
18
  template 'tailwind.config.js', File.join('config/tailwind.config.js'), force: true
17
19
  template 'tom-select.css', File.join('app/assets/stylesheets/tom-select.css')
@@ -29,6 +31,8 @@ class TyboInstallGenerator < Rails::Generators::Base
29
31
  route "mount Tybo::Engine => \"/tybo\""
30
32
  end
31
33
 
34
+
35
+
32
36
  def install_administrators
33
37
  run 'rails g bo_namespace Administrator'
34
38
  end
@@ -42,5 +46,7 @@ class TyboInstallGenerator < Rails::Generators::Base
42
46
  "application.register('dropdown', Dropdown)\napplication.register('flash', Flash)\napplication.register('search-form', SearchForm)\napplication.register('ts--search', TsSearch)\napplication.register('ts--select', TsSelect)\n"
43
47
  end
44
48
  end
49
+
50
+ private
45
51
  end
46
52
 
@@ -0,0 +1,31 @@
1
+ {
2
+ "id": "Identifier",
3
+ "email": "Email",
4
+ "password": "Password",
5
+ "created_at": "Creation date",
6
+ "updated_at": "Modification date",
7
+ "title": "Title",
8
+ "content": "Content",
9
+ "description": "Description",
10
+ "name": "Name",
11
+ "position": "Position",
12
+ "first_name": "First name",
13
+ "last_name": "Last name",
14
+ "full_name": "Full name",
15
+ "updated": "Updated",
16
+ "created": "Created",
17
+ "destroyed": "Destroyed",
18
+ "filters": "Filters",
19
+ "confirm_delete": "Are you sure?",
20
+ "details": "Details",
21
+ "to": "to",
22
+ "next": "Next",
23
+ "prev": "Previous",
24
+ "show": "Show",
25
+ "gap": "...",
26
+ "forgot_password": "Forgot password?",
27
+ "remember_me": "Remember me?",
28
+ "sign_in": "Sign in",
29
+ "send_me_reset_password_instructions": "Send me reset password instructions",
30
+ "save": "Save"
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "id": "Identifiant",
3
+ "email": "Email",
4
+ "password": "Mot de passe",
5
+ "created_at": "Date de création",
6
+ "updated_at": "Date de modification",
7
+ "title": "Titre",
8
+ "content": "Contenu",
9
+ "description": "Description",
10
+ "name": "Nom",
11
+ "position": "Position",
12
+ "first_name": "Prénom",
13
+ "last_name": "Nom",
14
+ "full_name": "Nom complet",
15
+ "updated": "Modification effectuée",
16
+ "created": "Création effectuée",
17
+ "destroyed": "Suppression effectuée",
18
+ "filters": "Filtres",
19
+ "confirm_delete": "Êtes-vous sûr ?",
20
+ "details": "Détails",
21
+ "to": "à",
22
+ "next": "Suivant",
23
+ "prev": "Précédent",
24
+ "gap": "...",
25
+ "show": "Détails",
26
+ "forgot_password": "Mot de passe oublié ?",
27
+ "remember_me": "Se souvenir de moi ?",
28
+ "sign_in": "Connexion",
29
+ "send_me_reset_password_instructions": "Réinitialiser mon mot de passe",
30
+ "save": "Sauvegarder"
31
+ }
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ def create_base_translation_files
4
+ %w[en fr].each do |local|
5
+ locale_file = "config/locales/bo.#{local}.yml"
6
+ File.write(locale_file, {
7
+ local => {
8
+ 'bo' => {
9
+ 'filters' => find_existing_translation('filters', local),
10
+ 'show' => find_existing_translation('show', local),
11
+ 'to' => find_existing_translation('to', local),
12
+ 'confirm_delete' => find_existing_translation('confirm_delete', local),
13
+ 'record' => {
14
+ 'created' => find_existing_translation('created', local),
15
+ 'updated' => find_existing_translation('updated', local),
16
+ 'destroyed' => find_existing_translation('destroyed', local),
17
+ },
18
+ 'nav' => {
19
+ 'prev' => find_existing_translation('prev', local),
20
+ 'next' => find_existing_translation('next', local),
21
+ 'gap' => find_existing_translation('gap', local)
22
+ },
23
+ 'devise' => {
24
+ 'password' => find_existing_translation('password', local),
25
+ 'forgot_password' => find_existing_translation('forgot_password', local),
26
+ 'reset_password_instructions' => find_existing_translation('reset_password_instructions', local),
27
+ 'remember_me' => find_existing_translation('remember_me', local),
28
+ 'sign_in' => find_existing_translation('sign_in', local),
29
+ 'send_me_reset_password_instructions' => find_existing_translation('send_me_reset_password_instructions', local),
30
+ 'save' => find_existing_translation('save', local),
31
+ }
32
+ }
33
+ }
34
+ }.to_yaml
35
+ )
36
+ end
37
+ end
38
+
39
+ def find_existing_translation(col, local)
40
+ json = JSON.parse(File.read("#{__dir__}/files/#{local}.json"))
41
+ json[col.to_s]
42
+ end
43
+
data/lib/tybo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tybo
2
- VERSION = '0.0.40'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tybo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.40
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michel Delpierre
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-04-17 00:00:00.000000000 Z
12
+ date: 2023-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -264,12 +264,18 @@ files:
264
264
  - lib/generators/bo_namespace/templates/policy.rb
265
265
  - lib/generators/bo_namespace/templates/seeds.rb
266
266
  - lib/generators/bo_namespace/templates/side_bar.html.erb
267
+ - lib/generators/bo_namespace/utils/files/en.json
268
+ - lib/generators/bo_namespace/utils/files/fr.json
269
+ - lib/generators/bo_namespace/utils/translations.rb
267
270
  - lib/generators/tybo_install/templates/application.tailwind.css
268
271
  - lib/generators/tybo_install/templates/simple_form_tailwind.rb
269
272
  - lib/generators/tybo_install/templates/tailwind.config.js
270
273
  - lib/generators/tybo_install/templates/tom-select.css
271
274
  - lib/generators/tybo_install/templates/tybo_config.rb
272
275
  - lib/generators/tybo_install/tybo_install_generator.rb
276
+ - lib/generators/tybo_install/utils/files/en.json
277
+ - lib/generators/tybo_install/utils/files/fr.json
278
+ - lib/generators/tybo_install/utils/translations.rb
273
279
  - lib/tybo.rb
274
280
  - lib/tybo/configuration.rb
275
281
  - lib/tybo/engine.rb
@@ -294,7 +300,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
294
300
  - !ruby/object:Gem::Version
295
301
  version: '0'
296
302
  requirements: []
297
- rubygems_version: 3.3.7
303
+ rubygems_version: 3.0.3.1
298
304
  signing_key:
299
305
  specification_version: 4
300
306
  summary: A tailwind custom admin engine for Ruby on Rails