lesli_view 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,19 @@
1
1
 
2
2
  <section
3
- class="mx-auto my-8 flex flex-col gap-5 sm:flex-row sm:items-start sm:justify-between"
3
+ class="mx-auto mt-14 mb-10 grid w-full grid-cols-1 gap-5 md:grid-cols-[minmax(0,1fr)_auto] md:items-start"
4
4
  <% if title.present? %>aria-labelledby="<%= title_id %>"<% end %>>
5
5
 
6
6
  <div class="min-w-0">
7
- <div class="flex items-start gap-4">
7
+ <div class="flex items-center gap-4">
8
8
 
9
9
  <% if back? %>
10
10
  <%= link_to(
11
11
  back_path,
12
- class: "mt-1 inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl border border-sky-600 bg-white text-sky-700 shadow-sm transition hover:bg-sky-50 hover:text-sky-800 focus:outline-none focus:ring-2 focus:ring-sky-500/30",
12
+ class: "inline-flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl border border-sky-600 bg-white text-sky-700 shadow-sm transition hover:bg-sky-50 hover:text-sky-800 focus:outline-none focus:ring-2 focus:ring-sky-500/30",
13
13
  aria: { label: I18n.t("actions.back", default: "Go back") },
14
14
  data: { turbo_frame: "_top" }
15
15
  ) do %>
16
- <span class="material-symbols-rounded text-[26px] leading-none" aria-hidden="true">arrow_back</span>
16
+ <span class="material-symbols text-[26px] leading-none" aria-hidden="true">arrow_back</span>
17
17
  <% end %>
18
18
  <% end %>
19
19
 
@@ -36,7 +36,7 @@
36
36
 
37
37
  <% if actions? %>
38
38
  <div
39
- class="flex shrink-0 flex-wrap items-center gap-3 sm:justify-end"
39
+ class="flex flex-wrap items-center gap-3 md:justify-self-end"
40
40
  role="group"
41
41
  aria-label="<%= I18n.t('actions.label', default: 'Page actions') %>">
42
42
  <% if new_path.present? %>
@@ -1,34 +1,67 @@
1
- <div
2
- class="lesli-tabs <%= 'is-vertical' if vertical%>"
3
- x-data="{ activeTab: '<%= active_tab || tabs[0].tab_id %>' }">
4
- <div class="tabs mb-0">
5
- <ul>
6
- <% tabs.each_with_index do |tab, index| %>
7
- <% tab.set_tab_id(tab.tab_id, index) %>
8
- <li :class="{ 'is-active': activeTab === '<%= tab.tab_id %>' }">
9
- <a @click="activeTab = '<%= tab.tab_id %>'" data-turbo="false">
10
- <% if tab.icon %>
11
- <span class="icon is-small">
12
- <span class="material-symbols-outlined">
13
- <%= tab.icon %>
14
- </span>
15
- </span>
16
- <% end %>
17
- <span>
18
- <%= tab.title %>
1
+ <% tabs.each_with_index { |tab, index| tab.set_tab_id(tab.tab_id, index) } %>
2
+ <% initial_tab = active_tab.presence || tabs.first&.tab_id %>
3
+
4
+ <div
5
+ class="lesli-tabs min-w-0<%= " flex items-start gap-6" if vertical %>"
6
+ x-data="{
7
+ activeTab: '<%= j(initial_tab.to_s) %>',
8
+ focusTab(event, offset) {
9
+ const tabs = Array.from(event.currentTarget.closest('[role=tablist]').querySelectorAll('[role=tab]'));
10
+ const currentIndex = tabs.indexOf(event.currentTarget);
11
+ const nextTab = tabs[(currentIndex + offset + tabs.length) % tabs.length];
12
+
13
+ nextTab.focus();
14
+ nextTab.click();
15
+ }
16
+ }">
17
+
18
+ <div class="<%= vertical ? "w-48 shrink-0" : "overflow-x-auto" %>">
19
+ <div
20
+ class="<%= vertical ? "flex w-full flex-col border-r border-slate-200" : "flex min-w-max border-b border-slate-200" %>"
21
+ role="tablist"
22
+ aria-orientation="<%= vertical ? "vertical" : "horizontal" %>">
23
+
24
+ <% tabs.each do |tab| %>
25
+ <button
26
+ id="<%= tab.tab_id %>-tab"
27
+ class="inline-flex min-h-11 cursor-pointer items-center gap-2 whitespace-nowrap px-4 py-2.5 text-sm font-medium transition-colors duration-150 focus:outline-none focus-visible:z-10 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-inset <%= vertical ? "-mr-px w-full border-r-2 text-left" : "-mb-px justify-center border-b-2" %>"
28
+ type="button"
29
+ role="tab"
30
+ aria-controls="<%= tab.tab_id %>"
31
+ :aria-selected="activeTab === '<%= j(tab.tab_id) %>'"
32
+ :tabindex="activeTab === '<%= j(tab.tab_id) %>' ? 0 : -1"
33
+ :class="{
34
+ 'border-blue-600 text-blue-700': activeTab === '<%= j(tab.tab_id) %>',
35
+ 'border-transparent text-slate-500 hover:text-slate-700': activeTab !== '<%= j(tab.tab_id) %>'
36
+ }"
37
+ @click="activeTab = '<%= j(tab.tab_id) %>'"
38
+ @keydown.right.prevent="focusTab($event, 1)"
39
+ @keydown.down.prevent="focusTab($event, 1)"
40
+ @keydown.left.prevent="focusTab($event, -1)"
41
+ @keydown.up.prevent="focusTab($event, -1)">
42
+
43
+ <% if tab.icon %>
44
+ <span class="material-symbols-outlined text-xl leading-none" aria-hidden="true">
45
+ <%= tab.icon %>
19
46
  </span>
20
- </a>
21
- </li>
47
+ <% end %>
48
+
49
+ <span><%= tab.title %></span>
50
+ </button>
22
51
  <% end %>
23
- </ul>
52
+ </div>
24
53
  </div>
25
- <div class="tab-items">
26
- <% tabs.each_with_index do |tab, index| %>
54
+
55
+ <div class="min-w-0 flex-1<%= " pt-5" unless vertical %>">
56
+ <% tabs.each do |tab| %>
27
57
  <div
28
58
  id="<%= tab.tab_id %>"
29
- class="tab-item"
30
- x-show="activeTab === '<%= tab.tab_id %>'"
31
- x-transition
59
+ class="min-w-0"
60
+ role="tabpanel"
61
+ aria-labelledby="<%= tab.tab_id %>-tab"
62
+ tabindex="0"
63
+ x-show="activeTab === '<%= j(tab.tab_id) %>'"
64
+ x-transition.opacity.duration.150ms
32
65
  x-cloak>
33
66
  <%= tab %>
34
67
  </div>
@@ -1,13 +1,13 @@
1
1
  =begin
2
- <%= render LesliView::Elements::Tabs.new(active_tab: "tab1") do |tabs| %>
3
- <% tabs.with_tab(tab_id: "tab1", title: "Tab 1") do %>
2
+ <%= render LesliView::Components::Tabs.new(active_tab: "tab1") do |tabs| %>
3
+ <% tabs.with_tab(id: "tab1", title: "Tab 1") do %>
4
4
  hola
5
5
  <% end %>
6
- <% tabs.with_tab(tab_id: "tab2", title: "Tab 2") %>
7
- <% tabs.with_tab(tab_id: "tab3", title: "Tab 3") %>
8
- <% tabs.with_tab(tab_id: "tab4", title: "Tab 4", icon: "save") %>
9
- <% tabs.with_tab(tab_id: "tab5", title: "Tab 5", icon: "edit") %>
10
- <% tabs.with_tab(tab_id: "tab6", title: "Tab 6", icon: "delete") %>
6
+ <% tabs.with_tab(id: "tab2", title: "Tab 2") %>
7
+ <% tabs.with_tab(id: "tab3", title: "Tab 3") %>
8
+ <% tabs.with_tab(id: "tab4", title: "Tab 4", icon: "save") %>
9
+ <% tabs.with_tab(id: "tab5", title: "Tab 5", icon: "edit") %>
10
+ <% tabs.with_tab(id: "tab6", title: "Tab 6", icon: "delete") %>
11
11
  <% end %>
12
12
  =end
13
13
 
@@ -1,26 +1,29 @@
1
- <div class="lesli-timelines">
2
- <div class="py-6 pl-6">
3
- <ul class="lesli-timeline lesli-timeline-split">
4
- <% @activities.each do |activity| %>
5
- <li class="lesli-timeline-item">
6
- <div class="lesli-timeline-info">
7
- <span><%= activity['date'] %></span>
8
- </div>
9
- <div class="lesli-timeline-marker">
10
- <span class="material-symbols-outlined">
11
- <%= @icons.dig(activity['icon']&.to_sym) || 'radio_button_checked' %>
12
- </span>
13
- </div>
14
- <div class="lesli-timeline-content">
15
- <h6 class="lesli-timeline-title">
16
- <%= activity['operation'] %>
17
- </h6>
18
- <p>
19
- <%= activity['description'] %>
20
- </p>
21
- </div>
22
- </li>
23
- <% end %>
24
- </ul>
25
- </div>
1
+ <div class="lesli-timelines py-6">
2
+ <ul class="m-0 w-full list-none p-0">
3
+ <% activities.each do |activity| %>
4
+ <li class="group grid grid-cols-[1.5rem_minmax(0,1fr)] gap-x-4 md:grid-cols-[minmax(8rem,auto)_1.5rem_minmax(0,1fr)] md:gap-x-6">
5
+ <div class="col-start-2 mb-2 min-w-0 text-xs font-bold uppercase tracking-[0.2em] text-slate-500 md:col-start-1 md:row-start-1 md:mb-0 md:pt-1 md:text-right">
6
+ <span><%= activity['date'] %></span>
7
+ </div>
8
+
9
+ <div class="relative col-start-1 row-span-2 row-start-1 flex justify-center md:col-start-2">
10
+ <span
11
+ class="material-symbols-outlined relative z-10 bg-white text-xl leading-none text-[var(--lesli-color-primary)]"
12
+ aria-hidden="true">
13
+ <%= icons.dig(activity['icon']&.to_sym) || 'radio_button_checked' %>
14
+ </span>
15
+ <span class="absolute top-7 bottom-0 left-1/2 w-px -translate-x-1/2 bg-slate-300 group-last:hidden" aria-hidden="true"></span>
16
+ </div>
17
+
18
+ <div class="col-start-2 row-start-2 min-w-0 pb-10 md:col-start-3 md:row-start-1">
19
+ <h6 class="text-base font-semibold text-slate-800">
20
+ <%= activity['operation'] %>
21
+ </h6>
22
+ <p class="mt-1 text-sm leading-6 text-slate-600">
23
+ <%= activity['description'] %>
24
+ </p>
25
+ </div>
26
+ </li>
27
+ <% end %>
28
+ </ul>
26
29
  </div>
@@ -1,7 +1,7 @@
1
- <figure class="lesli-element-avatar has-background-grey-lighter" style="<%= avatar_style %>">
1
+ <figure class="lesli-element-avatar <%= avatar_size %> flex shrink-0 items-center justify-center overflow-hidden rounded-full border-[0.1px] border-slate-400 bg-slate-100">
2
2
  <% if image %>
3
- <img src="<%= image %>" alt="Avatar image">
3
+ <img class="h-full w-full object-cover" src="<%= image %>" alt="Avatar image">
4
4
  <% else %>
5
- <span class="has-text-weight-bold <%= font_size %>"><%= letter %></span>
5
+ <span class="font-bold text-slate-700 <%= font_size %>"><%= letter %></span>
6
6
  <% end %>
7
7
  </figure>
@@ -32,7 +32,7 @@ Building a better future, one line of code at a time.
32
32
  module LesliView
33
33
  module Elements
34
34
  class Avatar < ViewComponent::Base
35
- attr_reader :image, :name, :size, :letter, :font_size, :avatar_style
35
+ attr_reader :image, :name, :size, :letter, :font_size, :avatar_size
36
36
 
37
37
  def initialize(image: nil, name: "", size: "medium")
38
38
  @image = image
@@ -40,7 +40,7 @@ module LesliView
40
40
  @size = size
41
41
  @letter = ""
42
42
  @font_size = ""
43
- @avatar_style = ""
43
+ @avatar_size = ""
44
44
  calculate_size
45
45
  get_letter unless @image
46
46
  end
@@ -51,14 +51,14 @@ module LesliView
51
51
  def calculate_size
52
52
  case size
53
53
  when "small"
54
- @font_size = "is-size-5"
55
- @avatar_style = "height: 60px; width: 60px;"
54
+ @font_size = "text-xl"
55
+ @avatar_size = "size-[60px]"
56
56
  when "medium"
57
- @font_size = "is-size-3"
58
- @avatar_style = "height: 120px; width: 120px;"
57
+ @font_size = "text-[2rem]"
58
+ @avatar_size = "size-[120px]"
59
59
  when "large"
60
- @font_size = "is-size-1"
61
- @avatar_style = "height: 180px; width: 180px;"
60
+ @font_size = "text-5xl"
61
+ @avatar_size = "size-[180px]"
62
62
  else
63
63
  raise ArgumentError, "Invalid size: #{size}"
64
64
  end
@@ -38,7 +38,6 @@ module LesliView
38
38
  def password_field(method, options = {})
39
39
  options = options.symbolize_keys
40
40
  options[:class] = merge_css_classes("lesli-form-input", options[:class])
41
- options[:value] = @object.public_send(method) if @object && !options.key?(:value)
42
41
  super(method, options)
43
42
  end
44
43
 
@@ -29,10 +29,8 @@ Building a better future, one line of code at a time.
29
29
  // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
30
  // ·
31
31
  %>
32
-
33
-
34
-
35
- <article class="lesli-items-activities" id="lesli-items-activities">
36
- <%= render(LesliView::Components::Timeline.new(activities:@activities, icons:@icons)) %>
32
+ <article
33
+ class="lesli-items-activities bg-white p-4 sm:p-8"
34
+ id="lesli-items-activities">
35
+ <%= render(LesliView::Components::Timeline.new(activities: @activities, icons: @icons)) %>
37
36
  </article>
38
-
@@ -1,9 +1,10 @@
1
- <div class="lesli-items-discussions-comments-comment is-flex mb-6">
2
- <div class="has-text-right">
3
- <strong>Luis Donis</strong> <br>
1
+ <li class="lesli-items-discussions-comments-comment flex flex-col gap-3 border-b border-slate-200 pb-6 last:border-b-0 last:pb-0 sm:flex-row sm:gap-4">
2
+ <div class="shrink-0 text-sm leading-5 text-slate-500 sm:w-40 sm:text-right">
3
+ <strong class="block font-semibold text-slate-800">Luis Donis</strong>
4
4
  <%= discussion['created_at_string'] || Date2.new.date_time %>
5
5
  </div>
6
- <div class="ml-4 is-fullwidth lexxy-content">
6
+
7
+ <div class="lexxy-content min-w-0 flex-1 break-words text-slate-700">
7
8
  <%== discussion.message %>
8
9
  </div>
9
- </div>
10
+ </li>
@@ -29,8 +29,8 @@ Building a better future, one line of code at a time.
29
29
  // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
30
  // ·
31
31
  %>
32
- <article class="lesli-items-discussions" id="lesli-items-discussions">
33
- <div class="lesli-items-discussions-form">
32
+ <article class="lesli-items-discussions bg-white p-4 sm:p-8" id="lesli-items-discussions">
33
+ <div class="lesli-items-discussions-form p-4">
34
34
  <% discussion_class = "#{@resource.class.name.deconstantize}::Items::Discussion".constantize %>
35
35
  <% scope_key = ActiveSupport::Inflector.underscore(discussion_class.name).tr("/", "_") %>
36
36
  <%= form_with(
@@ -45,13 +45,15 @@ Building a better future, one line of code at a time.
45
45
  <%= form.field_control_submit("Add comment") %>
46
46
  <% end %>
47
47
  </div>
48
- <hr />
49
- <div class="lesli-items-discussions-container">
50
- <ul id="<%="#{scope_key}-lesli-items-discussions-list"%>">
48
+ <hr class="my-6 border-0 border-t border-slate-200">
49
+
50
+ <div class="lesli-items-discussions-container p-4">
51
+ <ul
52
+ id="<%= "#{scope_key}-lesli-items-discussions-list" %>"
53
+ class="m-0 list-none space-y-6 p-0">
51
54
  <% @resource.discussions.order(created_at: :desc).each do |comment| %>
52
55
  <%= render(LesliView::Items::Discussion.new(comment)) %>
53
56
  <% end %>
54
57
  </ul>
55
58
  </div>
56
59
  </article>
57
-
@@ -30,9 +30,9 @@ Building a better future, one line of code at a time.
30
30
  // ·
31
31
  %>
32
32
 
33
- <li
33
+ <li
34
34
  id="<%= dom_id(@resource, @scope_key) %>"
35
- class="lesli-items-tasks-item is-flex mt-3 mb-3 <%= "lesli-items-tasks-task-done" if @resource.done %>">
35
+ class="lesli-items-tasks-item rounded-xl border transition-colors <%= @resource.done ? "lesli-items-tasks-task-done cursor-not-allowed border-slate-200 bg-slate-50" : "border-slate-200 hover:border-slate-300 hover:bg-slate-50" %>">
36
36
  <%= form_with(
37
37
  url: helpers.polymorphic_path(@resource),
38
38
  method: :patch,
@@ -40,16 +40,21 @@ Building a better future, one line of code at a time.
40
40
  local: true
41
41
  ) do |form| %>
42
42
  <%= form.hidden_field :id, value: @resource.id %>
43
- <%= form.button type: "submit", disabled: @resource.done? do %>
44
- <p class="icon-text">
45
- <span class="icon">
46
- <span class="material-symbols-outlined">
47
- <%= @resource.done ? "check_box" : "check_box_outline_blank" %>
48
- </span>
43
+ <%= form.button(
44
+ type: "submit",
45
+ disabled: @resource.done?,
46
+ class: "flex w-full cursor-pointer items-center rounded-xl px-4 py-3 text-left text-sm font-medium text-slate-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--lesli-color-primary)] disabled:cursor-not-allowed"
47
+ ) do %>
48
+ <span class="flex min-w-0 items-center gap-3">
49
+ <span
50
+ class="material-symbols-outlined shrink-0 text-xl leading-none <%= @resource.done ? "text-slate-400" : "text-[var(--lesli-color-primary)]" %>"
51
+ aria-hidden="true">
52
+ <%= @resource.done ? "check_box" : "check_box_outline_blank" %>
49
53
  </span>
50
- <span><%= @resource.title %></span>
51
- </p>
54
+ <span class="min-w-0 break-words <%= "text-slate-500 line-through" if @resource.done %>">
55
+ <%= @resource.title %>
56
+ </span>
57
+ </span>
52
58
  <% end %>
53
59
  <% end %>
54
60
  </li>
55
-
@@ -29,16 +29,9 @@ Building a better future, one line of code at a time.
29
29
  // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
30
  // ·
31
31
  %>
32
- <style>
33
- .lesli-items-tasks {
34
- .lesli-items-tasks-tasks-task-done p {
35
- text-decoration: line-through;
36
- opacity: 0.6;
37
- cursor: not-allowed;
38
- }
39
- }
40
- </style>
41
- <article class="lesli-items-tasks box p-6" id="<%= dom_id(@resource, :tasks) %>">
32
+ <article
33
+ class="lesli-items-tasks rounded-2xl border border-slate-200 bg-white p-6 shadow-sm"
34
+ id="<%= dom_id(@resource, :tasks) %>">
42
35
  <div class="lesli-items-tasks-form">
43
36
  <% task_class = "#{@resource.class.name.deconstantize}::Items::Task".constantize %>
44
37
  <% scope_key = ActiveSupport::Inflector.underscore(task_class.name).tr("/", "_") %>
@@ -54,13 +47,15 @@ Building a better future, one line of code at a time.
54
47
  <%= form.field_control_submit "Add task" %>
55
48
  <% end %>
56
49
  </div>
57
- <hr>
50
+ <hr class="my-6 border-0 border-t border-slate-200">
51
+
58
52
  <div class="lesli-items-tasks-container">
59
- <ul id="<%="#{scope_key}-lesli-items-tasks-list"%>">
53
+ <ul
54
+ id="<%= "#{scope_key}-lesli-items-tasks-list" %>"
55
+ class="m-0 list-none space-y-3 p-0">
60
56
  <% @resource.tasks.each do |task| %>
61
57
  <%= render(LesliView::Items::Task.new(task, scope_key)) %>
62
58
  <% end %>
63
59
  </ul>
64
60
  </div>
65
61
  </article>
66
-
@@ -1,51 +1,38 @@
1
-
2
- <style>
3
- .partial-engine-spec div {
4
- border-bottom: 1px solid silver;
5
- }
6
- .partial-engine-spec li {
7
- font-size: 1.1rem;
8
- margin-left: .4rem;
9
- }
10
- </style>
11
1
  <div class="partial-engine-spec">
12
- <div class="mb-3 pb-2">
13
- <h5 class="is-title is-size-5 has-text-weight-semibold"><%= engine[:name] %></h5>
14
- <p class="is-size-5"><%= engine[:summary] %></p>
2
+ <div class="mb-4 border-b border-slate-300 pb-3">
3
+ <h5 class="text-xl font-semibold text-slate-800"><%= engine[:name] %></h5>
4
+ <p class="mt-1 text-xl leading-7 text-slate-600"><%= engine[:summary] %></p>
15
5
  </div>
16
- <ul>
17
- <li class="mb-2">
18
- <span class="icon-text">
19
- <span class="material-symbols md-24">
20
- pest_control
21
- </span>
22
- <span></span>
6
+
7
+ <ul class="m-0 list-none space-y-2 p-0">
8
+ <li class="ml-1.5 flex items-center gap-2 text-[1.1rem] text-slate-600">
9
+ <span class="material-symbols shrink-0 text-2xl leading-none text-slate-400" aria-hidden="true">
10
+ pest_control
23
11
  </span>
24
- Version: <%= engine[:version] %>
12
+ <span>Version: <%= engine[:version] %></span>
25
13
  </li>
26
- <li class="mb-2">
27
- <span class="icon-text">
28
- <span class="material-symbols md-24">
29
- schedule
30
- </span>
31
- <span></span>
14
+
15
+ <li class="ml-1.5 flex items-center gap-2 text-[1.1rem] text-slate-600">
16
+ <span class="material-symbols shrink-0 text-2xl leading-none text-slate-400" aria-hidden="true">
17
+ schedule
32
18
  </span>
33
- Build: <%= LesliDate::Formatter.new(Time.at(engine[:build].to_i)).date_time %>
19
+ <span>Build: <%= LesliDate::Formatter.new(Time.at(engine[:build].to_i)).date_time %></span>
34
20
  </li>
35
- <li>
36
- <span class="icon-text">
37
- <span class="material-symbols md-24">
38
- library_books
39
- </span>
40
- <span></span>
21
+
22
+ <li class="ml-1.5 flex min-w-0 items-center gap-2 text-[1.1rem] text-slate-600">
23
+ <span class="material-symbols shrink-0 text-2xl leading-none text-slate-400" aria-hidden="true">
24
+ library_books
25
+ </span>
26
+ <span class="min-w-0 break-all">
27
+ <%= link_to_if(
28
+ engine.dig(:metadata, "documentation_uri"),
29
+ engine.dig(:metadata, "documentation_uri"),
30
+ engine.dig(:metadata, "documentation_uri"),
31
+ target: "_blank",
32
+ rel: "noopener noreferrer",
33
+ class: "font-sans text-[var(--lesli-color-primary)] underline-offset-4 hover:underline focus-visible:rounded-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--lesli-color-primary)]"
34
+ ) %>
41
35
  </span>
42
- <%= link_to_if(
43
- engine.dig(:metadata, "documentation_uri"),
44
- engine.dig(:metadata, "documentation_uri"),
45
- engine.dig(:metadata, "documentation_uri"),
46
- target: "_blank",
47
- class: "is-family-sans-serif"
48
- ) %>
49
36
  </li>
50
37
  </ul>
51
38
  </div>
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LesliView
4
- VERSION = "1.1.3"
5
- BUILD = "1789353654"
4
+ VERSION = "1.1.5"
5
+ BUILD = ""
6
6
  end