lesli_bell 1.0.1 → 1.1.2

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lesli
4
4
 
5
- Copyright (c) 2023, Lesli Technologies, S. A.
5
+ Copyright (c) 2026, Lesli Technologies, S. A.
6
6
 
7
7
  This program is free software: you can redistribute it and/or modify
8
8
  it under the terms of the GNU General Public License as published by
@@ -30,68 +30,148 @@ Building a better future, one line of code at a time.
30
30
  // ·
31
31
  %>
32
32
 
33
- <style>
34
- .notification.is-danger.is-light {
35
- border: 2px solid hsl(var(--bulma-notification-h), var(--bulma-notification-s), var(--bulma-notification-color-l))
36
- }
37
-
38
- .notification.is-warning.is-light {
39
- border: 2px solid hsl(var(--bulma-notification-h), var(--bulma-notification-s), var(--bulma-notification-color-l));
40
- }
41
-
42
- .notification.is-success.is-light {
43
- border: 2px solid hsl(var(--bulma-notification-h), var(--bulma-notification-s), var(--bulma-notification-color-l));
44
- }
45
-
46
- .notification.is-info.is-light {
47
- border: 2px solid hsl(var(--bulma-notification-h), var(--bulma-notification-s), var(--bulma-notification-color-l));
48
- }
49
- </style>
50
-
51
33
  <%= render(LesliView::Layout::Container.new("lesli-bell-notifications-index")) do %>
52
34
 
53
- <%= render(LesliView::Components::Header.new("Notifications")) do %>
54
- <%= render(LesliView::Elements::Button.new("mark all as read", icon:"check", solid: true)) %>
35
+ <%= render(LesliView::Components::Header.new(
36
+ "Notifications",
37
+ "Review important updates and mark them as read when you are done."
38
+ )) do %>
39
+ <span class="inline-flex w-fit items-center gap-2 rounded-full bg-sky-50 px-3 py-1.5 text-sm font-medium text-sky-700 ring-1 ring-inset ring-sky-200">
40
+ <span class="material-symbols text-lg leading-none" aria-hidden="true">notifications</span>
41
+ <%= pluralize(@notifications.dig(:pagination, :total) || @notifications[:records].size, "unread notification") %>
42
+ </span>
43
+ <%= render(LesliView::Elements::Button.new(
44
+ "Mark all as read",
45
+ url: mark_all_as_read_notifications_path,
46
+ icon: "done_all",
47
+ method: :put,
48
+ disabled: @notifications[:records].empty?,
49
+ data: { turbo_submits_with: "Marking all as read..." }
50
+ )) %>
55
51
  <% end %>
56
52
 
57
- <%= render(LesliView::Components::Toolbar.new) %>
58
-
59
- <% if @notifications.size == 0 %>
60
- <%= render(LesliView::Elements::Empty.new) %>
53
+ <% if @notifications[:records].empty? %>
54
+ <div class="overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-sm">
55
+ <%= render(LesliView::Elements::Empty.new(
56
+ text: "You're all caught up",
57
+ description: "New unread notifications will appear here."
58
+ )) %>
59
+ </div>
61
60
  <% else %>
62
- <section class="notifications">
63
- <% @notifications[:records].each do |notification| %>
64
- <div class="notification is-<%= notification[:category] %> is-light mb-2">
65
-
66
- <!-- Close button -->
67
- <%= button_to(
68
- notification_path(notification[:id]),
69
- method: :put,
70
- class: "button is-small is-#{notification[:category]}",
71
- form: { class: "delete" }) do %>
72
- <span class="icon">
73
- <span class="material-symbols">close</span>
74
- </span>
75
- <% end %>
76
-
77
- <!-- Notification subject -->
78
- <strong><%= notification[:subject] %></strong>
79
-
80
- <!-- Notification body (optional) -->
81
- <% if notification[:body].present? %>
82
- <p><%= notification[:body] %></p>
83
- <% end %>
84
-
85
- <!-- Notification URL (optional) -->
86
- <% if notification[:url].present? %>
87
- <p>
88
- <a href="<%= notification[:url] %>" target="_blank" rel="noopener noreferrer">
89
- <%= notification[:url] %>
90
- </a>
91
- </p>
61
+ <section aria-label="Unread notifications">
62
+ <div class="overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-sm">
63
+ <ol class="divide-y divide-slate-200">
64
+ <% @notifications[:records].each do |notification| %>
65
+ <%
66
+ category_label, category_icon, accent_classes, icon_classes, badge_classes = case notification[:category].to_s
67
+ when "danger"
68
+ [
69
+ "Attention",
70
+ "error",
71
+ "bg-danger-500",
72
+ "bg-danger-50 text-danger-700",
73
+ "bg-danger-50 text-danger-700 ring-danger-200"
74
+ ]
75
+ when "warning"
76
+ [
77
+ "Warning",
78
+ "warning",
79
+ "bg-warning-500",
80
+ "bg-warning-50 text-warning-700",
81
+ "bg-warning-50 text-warning-700 ring-warning-200"
82
+ ]
83
+ when "success"
84
+ [
85
+ nil,
86
+ "check_circle",
87
+ "bg-success-500",
88
+ "bg-success-50 text-success-700",
89
+ nil
90
+ ]
91
+ when "info"
92
+ [
93
+ nil,
94
+ "info",
95
+ "bg-info-500",
96
+ "bg-info-50 text-info-700",
97
+ nil
98
+ ]
99
+ else
100
+ [
101
+ nil,
102
+ "notifications",
103
+ "bg-neutral-400",
104
+ "bg-neutral-50 text-neutral-700",
105
+ nil
106
+ ]
107
+ end
108
+ %>
109
+
110
+ <li>
111
+ <article class="group relative bg-white px-4 py-3.5 pr-14 transition-colors hover:bg-slate-50 sm:px-5 sm:py-4 sm:pr-16">
112
+ <span class="absolute inset-y-0 left-0 w-1 <%= accent_classes %>" aria-hidden="true"></span>
113
+
114
+ <%= button_to(
115
+ notification_path(notification[:id]),
116
+ method: :put,
117
+ class: "inline-flex size-8 shrink-0 items-center justify-center rounded-full border border-transparent bg-slate-100 text-slate-500 transition-colors hover:bg-sky-100 hover:text-sky-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-500/30 focus-visible:ring-offset-2",
118
+ form: { class: "absolute right-4 top-3.5 inline-flex sm:right-5 sm:top-4" },
119
+ data: { turbo_submits_with: "…" },
120
+ title: "Mark as read",
121
+ aria: { label: "Mark #{notification[:subject]} as read" }
122
+ ) do %>
123
+ <span class="material-symbols text-lg leading-none" aria-hidden="true">done</span>
124
+ <% end %>
125
+
126
+ <div class="flex items-start gap-3">
127
+ <div class="flex size-9 shrink-0 items-center justify-center rounded-lg <%= icon_classes %>">
128
+ <span class="material-symbols text-xl leading-none" aria-hidden="true"><%= category_icon %></span>
129
+ </div>
130
+
131
+ <div class="min-w-0 flex-1">
132
+ <div class="flex flex-wrap items-center gap-x-2 gap-y-1">
133
+ <h4 class="text-sm font-semibold leading-5 text-slate-800 sm:text-base">
134
+ <% if notification[:url].present? %>
135
+ <a
136
+ class="inline-flex items-center gap-1 rounded-md transition-colors hover:text-sky-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-500/30 focus-visible:ring-offset-2"
137
+ href="<%= notification[:url] %>"
138
+ target="_blank"
139
+ rel="noopener noreferrer">
140
+ <%= notification[:subject] %>
141
+ <span class="material-symbols text-base leading-none text-slate-400" aria-hidden="true">open_in_new</span>
142
+ </a>
143
+ <% else %>
144
+ <%= notification[:subject] %>
145
+ <% end %>
146
+ </h4>
147
+
148
+ <% if category_label.present? %>
149
+ <span class="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-semibold ring-1 ring-inset <%= badge_classes %>">
150
+ <%= category_label %>
151
+ </span>
152
+ <% end %>
153
+ </div>
154
+
155
+ <% if notification[:body].present? %>
156
+ <p class="mt-1 text-sm leading-5 text-slate-600 <%= "line-clamp-2" if notification[:url].present? %>">
157
+ <%= notification[:body] %>
158
+ </p>
159
+ <% end %>
160
+
161
+ <% if notification[:created_at].present? %>
162
+ <time
163
+ class="mt-1.5 block text-xs text-slate-400"
164
+ datetime="<%= notification[:created_at].iso8601 %>">
165
+ <%= time_ago_in_words(notification[:created_at]) %> ago
166
+ </time>
167
+ <% end %>
168
+ </div>
169
+ </div>
170
+ </article>
171
+ </li>
92
172
  <% end %>
93
- </div>
94
- <% end %>
173
+ </ol>
174
+ </div>
95
175
  </section>
96
176
  <% end %>
97
177
  <% end %>
data/config/routes.rb CHANGED
@@ -32,6 +32,8 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  LesliBell::Engine.routes.draw do
34
34
  Lesli::Router.mount_lesli_engine_routes(self)
35
- resources :notifications, only: [:index, :new, :update]
35
+ resources :notifications, only: [:index, :new, :update] do
36
+ put :mark_all_as_read, on: :collection
37
+ end
36
38
  resources :announcements, only: [:index]
37
39
  end
@@ -47,6 +47,11 @@ class CreateLesliBellNotifications < ActiveRecord::Migration[7.0]
47
47
  end
48
48
 
49
49
  add_reference(:lesli_bell_notifications, :user, foreign_key: { to_table: :lesli_users })
50
- add_reference(:lesli_bell_notifications, :account, foreign_key: { to_table: :lesli_accounts })
50
+ add_reference(
51
+ :lesli_bell_notifications,
52
+ :account,
53
+ null: false,
54
+ foreign_key: { to_table: :lesli_bell_accounts }
55
+ )
51
56
  end
52
57
  end
@@ -49,6 +49,6 @@ class CreateLesliBellAnnouncements < ActiveRecord::Migration[6.0]
49
49
 
50
50
  add_reference(:lesli_bell_announcements, :user, foreign_key: { to_table: :lesli_users })
51
51
  add_reference(:lesli_bell_announcements, :role, foreign_key: { to_table: :lesli_roles })
52
- add_reference(:lesli_bell_announcements, :account, foreign_key: { to_table: :lesli_accounts })
52
+ add_reference(:lesli_bell_announcements, :account, null: false, foreign_key: { to_table: :lesli_bell_accounts })
53
53
  end
54
54
  end
data/db/seeds.rb CHANGED
@@ -31,7 +31,7 @@ Building a better future, one line of code at a time.
31
31
  =end
32
32
 
33
33
 
34
- L2.msg("LesliBell", "Version: #{LesliBell::VERSION}", "Build: #{LesliBell::BUILD}")
34
+ Termline.info("Loading seeds for: LesliBell #{LesliBell::VERSION} (#{LesliBell::BUILD})")
35
35
 
36
36
  # · load specific environment seeds
37
37
  if Rails.env.development? || Lesli.config.demo
@@ -4,9 +4,6 @@ module LesliBell
4
4
 
5
5
  initializer :lesli_bell do |app|
6
6
 
7
- # register assets manifest
8
- config.assets.precompile += %w[lesli_bell_manifest.js]
9
-
10
7
  # register engine migrations path
11
8
  unless app.root.to_s.match root.to_s
12
9
  config.paths["db/migrate"].expanded.each do |expanded_path|
@@ -1,4 +1,4 @@
1
1
  module LesliBell
2
- VERSION = "1.0.1"
3
- BUILD = "1771710537"
2
+ VERSION = "1.1.2"
3
+ BUILD = "1792716699"
4
4
  end
data/readme.md CHANGED
@@ -1,14 +1,17 @@
1
1
  <div align="center">
2
- <img width="100" alt="LesliBell logo" src="./app/assets/images/lesli_bell/bell-logo.svg" />
3
- <h3 align="center">Notifications & Announcements for the Lesli Framework.</h3>
2
+ <h1 align="center">
3
+ <img width="100" alt="LesliBell" src="./app/assets/images/lesli_bell/bell-logo.svg" />
4
+ </h1>
5
+ <h3 align="center">Notifications and announcements 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/LesliBell/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/LesliBell/actions/workflows/lesli-ci-engine.yaml">
12
+ <img
13
+ alt="LesliBell test status"
14
+ src="https://img.shields.io/github/actions/workflow/status/LesliTech/LesliBell/lesli-ci-engine.yaml?branch=master&style=for-the-badge&logo=github&label=tests">
12
15
  </a>
13
16
  <a target="_blank" href="https://rubygems.org/gems/lesli_bell">
14
17
  <img alt="Gem Version" src="https://img.shields.io/gem/v/lesli_bell?style=for-the-badge&logo=ruby">
@@ -16,83 +19,200 @@
16
19
  <a target="_blank" href="https://codecov.io/github/LesliTech/LesliBell">
17
20
  <img alt="Codecov" src="https://img.shields.io/codecov/c/github/LesliTech/LesliBell?style=for-the-badge&logo=codecov">
18
21
  </a>
22
+ <a target="_blank" href="https://sonarcloud.io/project/overview?id=LesliTech_LesliBell">
23
+ <img alt="Sonar Quality Gate" src="https://img.shields.io/sonar/quality_gate/LesliTech_LesliBell?server=https%3A%2F%2Fsonarcloud.io&style=for-the-badge&logo=sonarqubecloud&label=Quality">
24
+ </a>
19
25
  </div>
20
26
 
21
- <hr/>
22
27
  <br />
23
28
 
24
29
  <div align="center">
25
30
  <img
26
31
  style="width:100%;max-width:800px;border-radius:6px;"
27
- alt="Lesli screenshot" src="./docs/images/screenshot.png" />
32
+ alt="LesliBell notifications and announcements"
33
+ src="./docs/images/screenshot.png" />
28
34
  </div>
29
35
 
36
+ ---
37
+
30
38
  <br />
31
- <hr/>
39
+
40
+ ## Introduction
41
+
42
+ LesliBell is the official notifications and announcements engine for the [Lesli Framework](https://github.com/LesliTech/Lesli).
43
+
44
+ It provides account-scoped communication tools that integrate with Lesli users, permissions, navigation, and shared application infrastructure.
45
+
32
46
  <br />
33
47
 
34
- ### Installation
48
+ ## Features
49
+
50
+ - User notification feeds with unread counts and read status
51
+ - Notification categories for informational, success, warning, and danger messages
52
+ - Delivery-channel metadata for web, push, email, dialog, and mobile notifications
53
+ - Account-scoped announcements
54
+ - Announcement metadata for paths, date ranges, links, and dismissible presentation
55
+ - Pagination and integration with the standard Lesli interface
56
+
57
+ <br />
58
+
59
+ ## Try LesliBell
60
+
61
+ - [Try the online demo](https://demo.lesli.dev/)
62
+ - [Run the Docker demo](https://github.com/LesliTech/lesli-docker-demo)
63
+
64
+ <br />
65
+
66
+ ## Quick Start
67
+
68
+ ### Requirements
69
+
70
+ - A Rails application with [Lesli](https://rubygems.org/gems/lesli) 5.1 or newer
71
+ - SQLite by default, or PostgreSQL when preferred by the host application
72
+
73
+ ### Install LesliBell
74
+
75
+ Add the engine to the host Rails application and prepare its database:
35
76
 
36
77
  ```shell
37
- # Add LesliBell engine gem
38
78
  bundle add lesli_bell
79
+ bin/rails lesli:db:prepare
80
+ ```
81
+
82
+ ### Mount the engine
39
83
 
40
- # Setup & initialize the database
41
- rake lesli:db:setup
84
+ Applications using Lesli's standard router mount LesliBell automatically at `/bell`:
85
+
86
+ ```ruby
87
+ # config/routes.rb
88
+ Rails.application.routes.draw do
89
+ Lesli::Router.mount(self)
90
+ end
42
91
  ```
43
92
 
93
+ If the application does not use the standard Lesli router, mount the engine directly:
94
+
44
95
  ```ruby
45
- # Load LesliBell engine
96
+ # config/routes.rb
46
97
  Rails.application.routes.draw do
47
98
  mount LesliBell::Engine => "/bell"
48
99
  end
49
100
  ```
50
101
 
102
+ Start Rails and visit [http://127.0.0.1:3000/bell](http://127.0.0.1:3000/bell):
103
+
104
+ ```shell
105
+ bin/rails server
106
+ ```
107
+
51
108
  <br />
52
- <hr/>
109
+
110
+ ## Usage
111
+
112
+ ### Create a notification for the current user
113
+
114
+ LesliBell creates notifications through an account-scoped service. Pass a signed-in Lesli user to the service:
115
+
116
+ ```ruby
117
+ LesliBell::NotificationService.new(current_user).create_for_me(
118
+ subject: "Your report is ready",
119
+ body: "Open the report to review the latest results.",
120
+ category: :success,
121
+ channel: :web,
122
+ url: "/reports/weekly"
123
+ )
124
+ ```
125
+
126
+ ### Notify multiple users
127
+
128
+ Use user IDs that belong to the current account:
129
+
130
+ ```ruby
131
+ user_ids = current_user.account.users.pluck(:id)
132
+
133
+ LesliBell::NotificationService.new(current_user).create(
134
+ {
135
+ subject: "Scheduled maintenance",
136
+ category: :warning,
137
+ channel: :web
138
+ },
139
+ send_to_user_ids: user_ids
140
+ )
141
+ ```
142
+
143
+ Unknown categories fall back to `info`; unknown channels fall back to `web`. The notification feed displays `created`, `sent`, and legacy records without a status. Updating `/bell/notifications/:id` marks that notification as read for the current user.
144
+
145
+ See [Notifications](https://www.lesli.dev/engines/bell/notifications/overview/) and [Announcements](https://www.lesli.dev/engines/bell/announcements/overview/) for the data contracts, service behavior, and current route surface.
146
+
53
147
  <br />
54
148
 
55
- ### Development
149
+ ## Development
150
+
151
+ Clone LesliBell into the host application's `engines` directory:
56
152
 
57
153
  ```shell
58
- # clone the lesli repo inside your engine folder: RailsApp/engines
59
- git clone https://github.com/LesliTech/LesliBell.git
154
+ cd RailsApp
155
+ mkdir -p engines
156
+ git clone https://github.com/LesliTech/LesliBell.git engines/LesliBell
157
+ ```
158
+
159
+ Reference the local engine from the host application's `Gemfile`:
160
+
161
+ ```ruby
162
+ gem "lesli_bell", path: "engines/LesliBell"
163
+ ```
60
164
 
61
- # Load LesliBell as a Gem
62
- gem "lesli", path: "engines/LesliBell"
165
+ Install dependencies, prepare the host database, and start Rails:
63
166
 
64
- # Install the necessary Gems to run LesliBell
167
+ ```shell
65
168
  bundle install
169
+ bin/rails lesli:db:prepare
170
+ bin/rails server
171
+ ```
66
172
 
67
- # Setup & initialize the database
68
- rake lesli:db:setup
173
+ ### Tests
69
174
 
175
+ From a complete Lesli development workspace, run the engine test suite from the LesliBell directory:
176
+
177
+ ```shell
178
+ cd engines/LesliBell
179
+ bin/rails test
70
180
  ```
71
181
 
72
- <br />
73
- <hr/>
74
- <br />
182
+ Run the same suite with the engine coverage profile enabled:
75
183
 
76
- ### Demo
184
+ ```shell
185
+ COVERAGE=true bin/rails test
186
+ ```
77
187
 
78
- * [online demo](https://demo.lesli.dev/)
79
- * [docker demo](https://github.com/LesliTech/lesli-docker-demo)
188
+ <br />
80
189
 
190
+ ## Documentation
81
191
 
82
- ### Documentation
83
- * [website](https://www.lesli.dev/)
84
- * [documentation](https://www.lesli.dev/engines/bell)
192
+ - [Lesli website](https://www.lesli.dev/)
193
+ - [LesliBell documentation](https://www.lesli.dev/engines/bell/)
194
+ - [Installation](https://www.lesli.dev/engines/bell/about/installation/)
195
+ - [Notifications](https://www.lesli.dev/engines/bell/notifications/overview/)
196
+ - [Announcements](https://www.lesli.dev/engines/bell/announcements/overview/)
197
+ - [Database](https://www.lesli.dev/engines/bell/about/database/)
198
+ - [Translations](https://www.lesli.dev/engines/bell/about/translations/)
199
+ - [Frontend](https://www.lesli.dev/engines/bell/about/frontend/)
200
+ - [Release notes](https://github.com/LesliTech/LesliBell/releases)
201
+ - [Issue tracker](https://github.com/LesliTech/LesliBell/issues)
202
+ - [Source code](https://github.com/LesliTech/LesliBell)
85
203
 
204
+ <br />
86
205
 
87
- ### Connect with Lesli
206
+ ## Community
88
207
 
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)
208
+ - [X: @LesliTech](https://x.com/LesliTech)
209
+ - [hello@lesli.tech](mailto:hello@lesli.tech)
210
+ - [https://www.lesli.tech](https://www.lesli.tech)
92
211
 
212
+ <br />
213
+
214
+ ## License
93
215
 
94
- ### License
95
- -------
96
216
  Copyright (c) 2026, Lesli Technologies, S. A.
97
217
 
98
218
  This program is free software: you can redistribute it and/or modify
@@ -106,19 +226,16 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
106
226
  GNU General Public License for more details.
107
227
 
108
228
  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/.
229
+ along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).
110
230
 
111
- <br />
112
- <hr />
113
- <br />
114
- <br />
231
+ The complete license text is available in the [license file](./license).
115
232
 
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>
233
+ ---
122
234
 
123
235
  <br />
124
236
  <br />
237
+
238
+ <div align="center">
239
+ <img width="80" alt="Lesli icon" src="https://cdn.lesli.tech/lesli/brand/app-icon.svg" />
240
+ <h3 align="center">The Open-Source SaaS Development Framework for Ruby on Rails.</h3>
241
+ </div>
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lesli_bell
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Lesli Development Team
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-10-23 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: lesli
@@ -15,14 +16,14 @@ dependencies:
15
16
  requirements:
16
17
  - - "~>"
17
18
  - !ruby/object:Gem::Version
18
- version: '5.0'
19
+ version: 5.1.0
19
20
  type: :runtime
20
21
  prerelease: false
21
22
  version_requirements: !ruby/object:Gem::Requirement
22
23
  requirements:
23
24
  - - "~>"
24
25
  - !ruby/object:Gem::Version
25
- version: '5.0'
26
+ version: 5.1.0
26
27
  description: Notifications & Announcements System for the Lesli Framework.
27
28
  email:
28
29
  - hello@lesli.tech
@@ -31,7 +32,6 @@ extensions: []
31
32
  extra_rdoc_files: []
32
33
  files:
33
34
  - Rakefile
34
- - app/assets/config/lesli_bell_manifest.js
35
35
  - app/assets/images/lesli_bell/bell-logo.svg
36
36
  - app/assets/javascripts/lesli_bell/application.js
37
37
  - app/assets/javascripts/lesli_bell/application.js.LICENSE.txt
@@ -91,18 +91,7 @@ files:
91
91
  - lib/lesli_bell.rb
92
92
  - lib/lesli_bell/engine.rb
93
93
  - lib/lesli_bell/version.rb
94
- - lib/scss/application.scss
95
94
  - lib/tasks/lesli_bell_tasks.rake
96
- - lib/vue/application.js
97
- - lib/vue/apps/announcements/components/form.vue
98
- - lib/vue/apps/announcements/index.vue
99
- - lib/vue/apps/announcements/new.vue
100
- - lib/vue/apps/notifications/components/notification-form.vue
101
- - lib/vue/apps/notifications/index.vue
102
- - lib/vue/apps/notifications/new.vue
103
- - lib/vue/stores/announcement.js
104
- - lib/vue/stores/notification.js
105
- - lib/vue/stores/translations.json
106
95
  - license
107
96
  - readme.md
108
97
  homepage: https://www.lesli.dev/
@@ -112,6 +101,7 @@ metadata:
112
101
  homepage_uri: https://www.lesli.dev/
113
102
  changelog_uri: https://github.com/LesliTech/LesliBell
114
103
  source_code_uri: https://github.com/LesliTech/LesliBell
104
+ post_install_message:
115
105
  rdoc_options: []
116
106
  require_paths:
117
107
  - lib
@@ -126,7 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
116
  - !ruby/object:Gem::Version
127
117
  version: '0'
128
118
  requirements: []
129
- rubygems_version: 3.7.1
119
+ rubygems_version: 3.5.16
120
+ signing_key:
130
121
  specification_version: 4
131
122
  summary: Notifications & Announcements System for the Lesli Framework.
132
123
  test_files: []