lesli_dashboard 1.1.0 → 1.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00e59b42120b5d7fea1690f6f25c9d901a78abb45075ff735c28240cd37f0755
4
- data.tar.gz: 374f8edac29b1c09b32937f4d27bb6a5fca9b572ad368045902c4cd65617980c
3
+ metadata.gz: 470a3490ccd8123513d348ba6b3dd443bf0e021dafe7b67470f584086da72d44
4
+ data.tar.gz: 16454047aebddbbed7c6a3788c4a4ecd15c0c5f9fd7d24b54f83a2b6e58094d9
5
5
  SHA512:
6
- metadata.gz: 6768515e1c68c02331b2c26b390db37b80e71114983604fab663b369c253bfc8059aea8e5664c73be3566cd74061b02f9cb7d3c1745297749d5b6cce8f6a0746
7
- data.tar.gz: de889af11479ddc2d33fbd745844a71c5df85a28a18df35469ac613b8da607515b60442eaace75b24b42deebd1b992287207677d63581ce9069478e6d0e25a1e
6
+ metadata.gz: 2258eb9725588b3387d8c49a9c8e2da000d9d712e8d5d2394af8843d9c20deb528782f191032ce4ee13eefe8f20bbea691ea62f28a7570a4ec0e06c81358a539
7
+ data.tar.gz: 57652dd6ee2d053e9232b36cfb3a9644b74b220ed64265fc999b71a4c21283b158e6664a9299df345d8e0aa14b288b581948bb47017e90167c6f31aa6df548aa
@@ -0,0 +1,33 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ /*!
3
+
4
+ Lesli
5
+
6
+ Copyright (c) 2026, Lesli Technologies, S. A.
7
+
8
+ This program is free software: you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation, either version 3 of the License, or
11
+ (at your option) any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program. If not, see http://www.gnu.org/licenses/.
20
+
21
+ Lesli · Ruby on Rails SaaS Development Framework.
22
+
23
+ Made with ♥ by LesliTech
24
+ Building a better future, one line of code at a time.
25
+
26
+ @contact hello@lesli.tech
27
+ @website https://www.lesli.tech
28
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
29
+
30
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
31
+ // ·
32
+ */
33
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer theme{:root,:host{--color-slate-50:oklch(98.4% .003 247.858);--color-slate-300:oklch(86.9% .022 252.894);--spacing:.25rem;--radius-2xl:1rem}}@layer utilities{.col-span-12{grid-column:span 12/span 12}.mt-6{margin-top:calc(var(--spacing) * 6)}.grid{display:grid}.h-full{height:100%}.w-full{width:100%}.min-w-0{min-width:0}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.items-stretch{align-items:stretch}.gap-4{gap:calc(var(--spacing) * 4)}.rounded-2xl{border-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-slate-300{border-color:var(--color-slate-300)}.bg-slate-50\/70{background-color:#f8fafcb3}@supports (color:color-mix(in lab, red, red)){.bg-slate-50\/70{background-color:color-mix(in oklab, var(--color-slate-50) 70%, transparent)}}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}@media (min-width:40rem){.sm\:gap-5{gap:calc(var(--spacing) * 5)}.sm\:py-16{padding-block:calc(var(--spacing) * 16)}}@media (min-width:48rem){.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-12{grid-column:span 12/span 12}}@media (min-width:64rem){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-11{grid-column:span 11/span 11}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:gap-6{gap:calc(var(--spacing) * 6)}}.\[\&_\.box\]\:h-full .box,.\[\&\>\*\]\:h-full>*{height:100%}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
@@ -1 +1,15 @@
1
- <%= render(LesliView::Widgets::Calendar.new) %>
1
+ <%
2
+ # Demo dates keep the widget populated until dashboard events come from the backend.
3
+ # Replace this array with the account's event dates when that integration is available.
4
+ calendar_date = Date.current
5
+ calendar_events = [8, 10, 27].map { |day| calendar_date.change(day: day) }
6
+ %>
7
+
8
+ <%= render(
9
+ LesliView::Widgets::Calendar.new(
10
+ date: calendar_date,
11
+ events: calendar_events,
12
+ selected_date: calendar_date,
13
+ week_starts_on: :sunday
14
+ )
15
+ ) %>
@@ -1,6 +1,5 @@
1
-
2
1
  <%= render(LesliView::Widgets::Chart.new("Priorities", {
3
2
  "High": 10,
4
- "Low": 16,
5
- "Medium": 4
6
- }, type: :bar))%>
3
+ "Medium": 4,
4
+ "Low": 16
5
+ }, type: :bar)) %>
@@ -1,8 +1,7 @@
1
-
2
1
  <%= render(LesliView::Widgets::Chart.new("Requests", {
3
- "1": 13,
4
- "2": 17,
5
- "3": 10,
6
- "4": 5,
7
- "5": 15,
8
- }, type: :line))%>
2
+ "Mon": 13,
3
+ "Tue": 17,
4
+ "Wed": 10,
5
+ "Thu": 5,
6
+ "Fri": 15
7
+ }, type: :line)) %>
@@ -1 +1,10 @@
1
- <%= render(LesliView::Widgets::Weather.new) %>
1
+ <%# Demo values; replace them with backend weather data when available. %>
2
+ <%= render(
3
+ LesliView::Widgets::Weather.new(
4
+ temperature: 26,
5
+ location: "Guatemala",
6
+ condition: "Showers",
7
+ unit: "C",
8
+ icon: "rainy"
9
+ )
10
+ ) %>
@@ -1,21 +1,32 @@
1
1
 
2
2
  <%
3
+ date = Date2.new
4
+ hour = date.date.get.hour
3
5
 
4
- # Returns the hour (0–23) based on the app's timezone
5
- hour = Date2.new.date.get.hour
6
- welcome_options = ["Good morning", "Good afternoon", "Good evening"]
7
- welcome_text = ""
6
+ # Select the greeting using the application's configured time zone.
7
+ greeting_key =
8
+ case hour
9
+ when 0...12 then "morning"
10
+ when 12...18 then "afternoon"
11
+ else "evening"
12
+ end
8
13
 
9
- if hour < 12
10
- welcome_text = welcome_options.first
11
- elsif hour < 18
12
- welcome_text = welcome_options.second
13
- else
14
- welcome_text = welcome_options.third
15
- end
14
+ greeting_defaults = {
15
+ "morning" => "Good morning",
16
+ "afternoon" => "Good afternoon",
17
+ "evening" => "Good evening"
18
+ }.freeze
19
+
20
+ greeting = I18n.t(
21
+ "lesli_dashboard.greetings.#{greeting_key}",
22
+ default: greeting_defaults.fetch(greeting_key)
23
+ )
24
+
25
+ # Avoid a trailing comma when the current user or full name is unavailable.
26
+ title = [greeting, current_user&.full_name.presence].compact.join(", ")
16
27
  %>
17
28
 
18
29
  <%= render(LesliView::Components::Header.new(
19
- welcome_text + ', ' + current_user&.full_name,
20
- Date2.new.date_words_day
30
+ title,
31
+ date.date_words_day
21
32
  )) %>
@@ -29,45 +29,56 @@ Building a better future, one line of code at a time.
29
29
  // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
30
  // ·
31
31
  %>
32
- <style>
33
- .dashboard-components .column > div,
34
- .dashboard-components .column > div > .box{
35
- height: 100%;
36
- }
37
- </style>
38
- <%
39
-
40
- # Returns the hour (0–23) based on the app's timezone
41
- hour = Date2.new.date.get.hour
42
- welcome_options = ["Good morning", "Good afternoon", "Good evening"]
43
- welcome_text = ""
44
-
45
- if hour < 12
46
- welcome_text = welcome_options.first
47
- elsif hour < 18
48
- welcome_text = welcome_options.second
49
- else
50
- welcome_text = welcome_options.third
51
- end
52
- %>
53
32
 
54
- <% @dashboard ||= { :id=>0, :name=>"" } %>
55
33
  <% @components ||= [] %>
34
+ <%
35
+ # Dashboard component sizes use the same 12-column scale stored in the database.
36
+ # Components stack on small screens and retain their configured width on desktops.
37
+ component_width_classes = {
38
+ 1 => "md:col-span-6 lg:col-span-1",
39
+ 2 => "md:col-span-6 lg:col-span-2",
40
+ 3 => "md:col-span-6 lg:col-span-3",
41
+ 4 => "md:col-span-6 lg:col-span-4",
42
+ 5 => "md:col-span-6 lg:col-span-5",
43
+ 6 => "md:col-span-6 lg:col-span-6",
44
+ 7 => "md:col-span-12 lg:col-span-7",
45
+ 8 => "md:col-span-12 lg:col-span-8",
46
+ 9 => "md:col-span-12 lg:col-span-9",
47
+ 10 => "md:col-span-12 lg:col-span-10",
48
+ 11 => "md:col-span-12 lg:col-span-11",
49
+ 12 => "md:col-span-12 lg:col-span-12"
50
+ }.freeze
51
+ %>
56
52
 
57
53
  <%= render(LesliView::Layout::Container.new("dashboards-show", :dashboard => false)) do %>
58
54
 
59
55
  <%= render("lesli_dashboard/dashboards/shared/header") %>
60
56
 
61
- <%= render(LesliView::Elements::Empty.new(text: "Empty dashboard")) if @components.empty? %>
62
-
63
- <section class="container">
64
- <div class="columns is-multiline is-variable dashboard-components">
65
- <% @components.each do |component| %>
66
- <div class="column is-<%= component["size"] %>">
67
- <% component_path = "#{controller.controller_path}/component-#{component["component"].gsub('_','-')}"%>
68
- <%= render(component_path, { :component => component }) %>
69
- </div>
70
- <% end %>
71
- </div>
72
- </section>
57
+ <% if @components.empty? %>
58
+ <section
59
+ class="mt-6 rounded-2xl border border-dashed border-slate-300 bg-slate-50/70 px-6 py-12 sm:py-16"
60
+ aria-label="Empty dashboard">
61
+ <%= render(LesliView::Elements::Empty.new(text: "Empty dashboard")) %>
62
+ </section>
63
+ <% else %>
64
+ <section class="mt-6 w-full" aria-label="Dashboard widgets">
65
+ <div class="grid grid-cols-12 items-stretch gap-4 sm:gap-5 lg:gap-6">
66
+ <% @components.each do |component| %>
67
+ <%
68
+ component_size = component["size"].to_i
69
+ component_size = 4 unless component_width_classes.key?(component_size)
70
+ component_name = component["component"].to_s
71
+ component_path = "#{controller.controller_path}/component-#{component_name.dasherize}"
72
+ %>
73
+ <article
74
+ class="col-span-12 min-w-0 <%= component_width_classes.fetch(component_size) %>"
75
+ data-dashboard-component="<%= component_name %>">
76
+ <div class="h-full min-w-0 [&>*]:h-full [&_.box]:h-full">
77
+ <%= render(component_path, { :component => component }) %>
78
+ </div>
79
+ </article>
80
+ <% end %>
81
+ </div>
82
+ </section>
83
+ <% end %>
73
84
  <% end %>
@@ -1,2 +1,7 @@
1
1
  ---
2
- :en: {}
2
+ en:
3
+ lesli_dashboard:
4
+ greetings:
5
+ morning: Good morning
6
+ afternoon: Good afternoon
7
+ evening: Good evening
@@ -1,2 +1,7 @@
1
1
  ---
2
- :es: {}
2
+ es:
3
+ lesli_dashboard:
4
+ greetings:
5
+ morning: Buenos días
6
+ afternoon: Buenas tardes
7
+ evening: Buenas noches
@@ -1,2 +1,7 @@
1
1
  ---
2
- :fr: {}
2
+ fr:
3
+ lesli_dashboard:
4
+ greetings:
5
+ morning: Bonjour
6
+ afternoon: Bon après-midi
7
+ evening: Bonsoir
@@ -1,2 +1,7 @@
1
1
  ---
2
- :it: {}
2
+ it:
3
+ lesli_dashboard:
4
+ greetings:
5
+ morning: Buongiorno
6
+ afternoon: Buon pomeriggio
7
+ evening: Buonasera
@@ -1,2 +1,7 @@
1
1
  ---
2
- :pt: {}
2
+ pt:
3
+ lesli_dashboard:
4
+ greetings:
5
+ morning: Bom dia
6
+ afternoon: Boa tarde
7
+ evening: Boa noite
data/db/seeds.rb CHANGED
@@ -30,7 +30,7 @@ Building a better future, one line of code at a time.
30
30
  // ·
31
31
  =end
32
32
 
33
- L2.msg("LesliDashboard", "Version: #{LesliDashboard::VERSION}", "Build: #{LesliDashboard::BUILD}")
33
+ Termline.info("Loading seeds for: LesliDashboard #{LesliDashboard::VERSION} (#{LesliDashboard::BUILD})")
34
34
 
35
35
  # · load specific environment seeds
36
36
  if Rails.env.development? || Lesli.config.demo
@@ -1,4 +1,4 @@
1
1
  module LesliDashboard
2
- VERSION = "1.1.0"
3
- BUILD = "1774678451"
2
+ VERSION = "1.1.1"
3
+ BUILD = "1789353654"
4
4
  end
data/readme.md CHANGED
@@ -1,14 +1,15 @@
1
1
  <div align="center">
2
- <img width="100" alt="LesliDashboard logo" src="./app/assets/images/lesli_dashboard/dashboard-logo.svg" />
3
- <h3 align="center">Dashboard Manager for the Lesli Framework.</h3>
2
+ <h1 align="center">
3
+ <img width="100" alt="LesliDashboard" src="./app/assets/images/lesli_dashboard/dashboard-logo.svg" />
4
+ </h1>
5
+ <h3 align="center">Configurable dashboards for the Lesli Framework.</h3>
4
6
  </div>
5
7
 
6
8
  <br />
7
- <hr/>
8
9
 
9
10
  <div align="center">
10
- <a target="_blank" href="https://github.com/LesliTech/LesliDashboard/actions">
11
- <img alt="Tests passing" src="https://img.shields.io/badge/Tests-passing-green?style=for-the-badge&logo=github">
11
+ <a target="_blank" href="https://github.com/LesliTech/LesliDashboard/actions/workflows/lesli-ci.yaml">
12
+ <img alt="LesliDashboard test status" src="https://img.shields.io/github/actions/workflow/status/LesliTech/LesliDashboard/lesli-ci.yaml?branch=master&style=for-the-badge&logo=github&label=tests">
12
13
  </a>
13
14
  <a target="_blank" href="https://rubygems.org/gems/lesli_dashboard">
14
15
  <img alt="Gem Version" src="https://img.shields.io/gem/v/lesli_dashboard?style=for-the-badge&logo=ruby">
@@ -16,83 +17,148 @@
16
17
  <a target="_blank" href="https://codecov.io/github/LesliTech/LesliDashboard">
17
18
  <img alt="Codecov" src="https://img.shields.io/codecov/c/github/LesliTech/LesliDashboard?style=for-the-badge&logo=codecov">
18
19
  </a>
20
+ <a target="_blank" href="https://sonarcloud.io/project/overview?id=LesliTech_LesliDashboard">
21
+ <img alt="Sonar Quality Gate" src="https://img.shields.io/sonar/quality_gate/LesliTech_LesliDashboard?server=https%3A%2F%2Fsonarcloud.io&style=for-the-badge&logo=sonarqubecloud&label=Quality">
22
+ </a>
19
23
  </div>
20
24
 
21
- <hr/>
22
25
  <br />
23
26
 
24
27
  <div align="center">
25
28
  <img
26
29
  style="width:100%;max-width:800px;border-radius:6px;"
27
- alt="Lesli screenshot" src="./docs/images/screenshot.png" />
30
+ alt="LesliDashboard configurable dashboards"
31
+ src="./docs/images/screenshot.png" />
28
32
  </div>
29
33
 
34
+ ---
35
+
36
+ <br />
37
+
38
+ ## Introduction
39
+
40
+ LesliDashboard is the official dashboard engine for the [Lesli Framework](https://github.com/LesliTech/Lesli).
41
+
42
+ It lets applications compose reusable, configurable dashboards from account-scoped components.
43
+
30
44
  <br />
31
- <hr/>
45
+
46
+ ## Features
47
+
48
+ - Multiple account-scoped dashboards
49
+ - Reusable dashboard components
50
+ - Configurable component position and size
51
+ - Component-specific configuration
52
+ - Shared dashboards for teams and workflows
53
+
54
+ <br />
55
+
56
+ ## Try LesliDashboard
57
+
58
+ - [Try the online demo](https://demo.lesli.dev/)
59
+ - [Run the Docker demo](https://github.com/LesliTech/lesli-docker-demo)
60
+
32
61
  <br />
33
62
 
34
- ### Installation
63
+ ## Quick Start
64
+
65
+ ### Requirements
66
+
67
+ - A Rails application with [Lesli](https://rubygems.org/gems/lesli)
68
+ - SQLite by default, or PostgreSQL when preferred by the host application
69
+
70
+ ### Install LesliDashboard
71
+
72
+ Add the engine to the host Rails application and prepare its database:
35
73
 
36
74
  ```shell
37
- # Add LesliDashboard engine gem
38
75
  bundle add lesli_dashboard
76
+ bin/rails db:prepare
77
+ ```
78
+
79
+ ### Mount the engine
39
80
 
40
- # Setup & initialize the database
41
- rake lesli:db:setup
81
+ Applications using Lesli's standard router mount LesliDashboard automatically at `/dashboard`:
82
+
83
+ ```ruby
84
+ # config/routes.rb
85
+ Rails.application.routes.draw do
86
+ Lesli::Router.mount(self)
87
+ end
42
88
  ```
43
89
 
90
+ If the application does not use the standard Lesli router, mount the engine directly:
91
+
44
92
  ```ruby
45
- # Load LesliDashboard engine
93
+ # config/routes.rb
46
94
  Rails.application.routes.draw do
47
95
  mount LesliDashboard::Engine => "/dashboard"
48
96
  end
49
97
  ```
50
98
 
51
- <br />
52
- <hr/>
99
+ Start Rails and visit [http://127.0.0.1:3000/dashboard](http://127.0.0.1:3000/dashboard):
100
+
101
+ ```shell
102
+ bin/rails server
103
+ ```
104
+
53
105
  <br />
54
106
 
55
- ### Development
107
+ ## Development
108
+
109
+ Clone LesliDashboard into the host application's `engines` directory:
56
110
 
57
111
  ```shell
58
- # clone the lesli repo inside your engine folder: RailsApp/engines
59
- git clone https://github.com/LesliTech/LesliDashboard.git
112
+ cd RailsApp
113
+ mkdir -p engines
114
+ git clone https://github.com/LesliTech/LesliDashboard.git engines/LesliDashboard
115
+ ```
60
116
 
61
- # Load LesliDashboard as a Gem
62
- gem "lesli", path: "engines/LesliDashboard"
117
+ Reference the local engine from the host application's `Gemfile`:
63
118
 
64
- # Install the necessary Gems to run LesliDashboard
119
+ ```ruby
120
+ gem "lesli_dashboard", path: "engines/LesliDashboard"
121
+ ```
122
+
123
+ Install dependencies, prepare the host database, and start Rails:
124
+
125
+ ```shell
65
126
  bundle install
127
+ bin/rails db:prepare
128
+ bin/rails server
129
+ ```
130
+
131
+ ### Tests
66
132
 
67
- # Setup & initialize the database
68
- rake lesli:db:setup
133
+ From a complete Lesli development workspace, run the engine test suite from the LesliDashboard directory:
69
134
 
135
+ ```shell
136
+ cd engines/LesliDashboard
137
+ bin/rails test
70
138
  ```
71
139
 
72
140
  <br />
73
- <hr/>
74
- <br />
75
-
76
- ### Demo
77
141
 
78
- * [online demo](https://demo.lesli.dev/)
79
- * [docker demo](https://github.com/LesliTech/lesli-docker-demo)
142
+ ## Documentation
80
143
 
144
+ - [Lesli website](https://www.lesli.dev/)
145
+ - [Documentation](https://www.lesli.dev/engines/dashboard)
146
+ - [Release notes](https://github.com/LesliTech/LesliDashboard/releases)
147
+ - [Issue tracker](https://github.com/LesliTech/LesliDashboard/issues)
148
+ - [Source code](https://github.com/LesliTech/LesliDashboard)
81
149
 
82
- ### Documentation
83
- * [website](https://www.lesli.dev/)
84
- * [documentation](https://www.lesli.dev/engines/dashboard)
150
+ <br />
85
151
 
152
+ ## Community
86
153
 
87
- ### Connect with Lesli
154
+ - [X: @LesliTech](https://x.com/LesliTech)
155
+ - [hello@lesli.tech](mailto:hello@lesli.tech)
156
+ - [https://www.lesli.tech](https://www.lesli.tech)
88
157
 
89
- * [X: @LesliTech](https://x.com/LesliTech)
90
- * [Email: hello@lesli.tech](hello@lesli.tech)
91
- * [Website: https://www.lesli.tech](https://www.lesli.tech)
158
+ <br />
92
159
 
160
+ ## License
93
161
 
94
- ### License
95
- -------
96
162
  Copyright (c) 2026, Lesli Technologies, S. A.
97
163
 
98
164
  This program is free software: you can redistribute it and/or modify
@@ -106,19 +172,16 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
106
172
  GNU General Public License for more details.
107
173
 
108
174
  You should have received a copy of the GNU General Public License
109
- along with this program. If not, see http://www.gnu.org/licenses/.
175
+ along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).
110
176
 
111
- <br />
112
- <hr />
113
- <br />
114
- <br />
177
+ The complete license text is available in the [license file](./license).
115
178
 
116
- <div align="center" class="has-text-centered">
117
- <img width="200" alt="Lesli logo" src="https://cdn.lesli.tech/lesli/brand/app-logo.svg" />
118
- <h3 align="center" class="mt-0">
119
- The Open-Source SaaS Development Framework for Ruby on Rails.
120
- </h3>
121
- </div>
179
+ ---
122
180
 
123
181
  <br />
124
182
  <br />
183
+
184
+ <div align="center">
185
+ <img width="80" alt="Lesli icon" src="https://cdn.lesli.tech/lesli/brand/app-icon.svg" />
186
+ <h3 align="center">The Open-Source SaaS Development Framework for Ruby on Rails.</h3>
187
+ </div>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lesli_dashboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Lesli Development Team
@@ -23,7 +23,10 @@ dependencies:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: 5.1.0
26
- description: Dashboard Manager for the Lesli Framework
26
+ description: |
27
+ Provides dashboard management capabilities for The Lesli Framework,
28
+ including configurable dashboards, widgets, metrics, and visual summaries
29
+ for monitoring business and system information.
27
30
  email:
28
31
  - hello@lesli.tech
29
32
  executables: []
@@ -35,6 +38,7 @@ files:
35
38
  - app/assets/images/lesli_dashboard/dashboard-logo.svg
36
39
  - app/assets/javascripts/lesli_dashboard/application.js
37
40
  - app/assets/stylesheets/lesli_dashboard/application.css
41
+ - app/assets/stylesheets/lesli_dashboard/application.tailwind.css
38
42
  - app/controllers/lesli_dashboard/application_controller.rb
39
43
  - app/controllers/lesli_dashboard/components_controller.rb
40
44
  - app/controllers/lesli_dashboard/dashboard/components_controller.rb