diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 288b9ab..f6ae8a9 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -13,3 +13,13 @@ *= require_tree . *= require_self */ + +.message-selected { + background-color: oklch(98.5% 0.002 247.839) !important; +} + +@media (prefers-color-scheme: dark) { + .message-selected { + background-color: oklch(40% 0.08 247.839) !important; + } +} diff --git a/app/decorators/message_decorator.rb b/app/decorators/message_decorator.rb index 51f008c..01fad73 100644 --- a/app/decorators/message_decorator.rb +++ b/app/decorators/message_decorator.rb @@ -4,4 +4,12 @@ module MessageDecorator def from super&.gsub(/@[a-zA-Z.\-]+/, '@...') end + + def first_line + body.lines.first&.strip + end + + def published_date + published_at.strftime('%Y/%m/%d') + end end diff --git a/app/javascript/controllers/message_list_controller.js b/app/javascript/controllers/message_list_controller.js new file mode 100644 index 0000000..06c9253 --- /dev/null +++ b/app/javascript/controllers/message_list_controller.js @@ -0,0 +1,17 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + select(event) { + // Remove highlight from previously selected message + const previousSelected = this.element.querySelector('.message-selected') + if (previousSelected) { + previousSelected.classList.remove('message-selected') + } + + // Add highlight to clicked message + const messageElement = event.currentTarget + if (messageElement) { + messageElement.classList.add('message-selected') + } + } +} diff --git a/app/views/messages/_thread.html.erb b/app/views/messages/_thread.html.erb index 1655865..64c8f5e 100644 --- a/app/views/messages/_thread.html.erb +++ b/app/views/messages/_thread.html.erb @@ -1,6 +1,6 @@
-