diff --git a/app/assets/images/picture-double.svg b/app/assets/images/picture-double.svg
new file mode 100644
index 000000000..f3a34a736
--- /dev/null
+++ b/app/assets/images/picture-double.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/stylesheets/bubbles.css b/app/assets/stylesheets/bubbles.css
index 839de0224..46208c8d3 100644
--- a/app/assets/stylesheets/bubbles.css
+++ b/app/assets/stylesheets/bubbles.css
@@ -80,8 +80,9 @@
aspect-ratio: 6/9;
display: flex;
+ font-size: 6cqi;
inset: 70cqi 7cqi auto auto;
- min-inline-size: 7ch;
+ min-inline-size: 4.5ch;
padding: 0;
place-items: center;
transform: rotate(var(--rotation));
@@ -115,40 +116,14 @@
}
}
- &.bubble__tag {
- inset: auto auto -6cqi 15cqi;
-
- + & {
- inset: auto auto 8cqi 5cqi;
-
- + & {
- inset: auto auto 22cqi -2cqi;
- }
- }
-
- @media (hover: hover) {
- .windshield .bubble:hover & {
- transform: translate(-1rem, -1rem);
- }
-
- .windshield .bubble:hover & + & {
- transform: translate(-1.25rem, -1.25rem);
- }
-
- .windshield .bubble:hover & + & + & {
- transform: translate(-1.5rem, -1.5rem);
- }
- }
- }
-
&.bubble__assignee {
aspect-ratio: 1;
font-size: 4.5cqi;
- inset: 4cqb auto auto -2cqi;
+ inset: 6cqb auto auto -2cqi;
padding: 0.2em;
+ & {
- inset: 1cqb auto auto 10cqi;
+ inset: 1cqb auto auto 9cqi;
+ & {
inset: -1cqb auto auto 25cqi;
@@ -181,6 +156,20 @@
transform: translate(1.5rem, -0.5rem);;
}
}
+
+ .assignee__name {
+ display: none;
+
+ .bubble__perma & {
+ color: var(--bubble-color);
+ display: block;
+ font-size: var(--text-medium);
+ font-weight: normal;
+ inset: -2em auto auto auto;
+ position: absolute;
+ text-align: center;
+ }
+ }
}
&.bubble__date {
@@ -188,8 +177,9 @@
aspect-ratio: 5/7;
cursor: pointer;
- font-size: 4.5cqi;
+ font-size: 5cqi;
inset: 1cqb 1cqi auto auto;
+ text-align: center;
transform: rotate(var(--rotation));
.bubble__date-text {
@@ -311,6 +301,15 @@
max-inline-size: 100%;
}
+.bubble__tags{
+ font-size: var(--text-small);
+ margin-block-start: 0.3cqb;
+
+ .bubble__perma & {
+ font-size: var(--text-medium);
+ }
+}
+
.bubble__title {
-webkit-line-clamp: var(--lines, 5);
-webkit-box-orient: vertical;
diff --git a/app/assets/stylesheets/comments.css b/app/assets/stylesheets/comments.css
index df2a2689c..3d61ff712 100644
--- a/app/assets/stylesheets/comments.css
+++ b/app/assets/stylesheets/comments.css
@@ -1,9 +1,9 @@
.comments {
--avatar-size: 2.33em;
- --comment-padding-block: 1.2em;
- --comment-padding-inline: 1.5em;
+ --comment-padding-block: 0.65lh;
+ --comment-padding-inline: 2ch;
- max-inline-size: 70ch;
+ max-inline-size: 120ch;
row-gap: var(--comment-padding-block);
> :first-child {
@@ -11,6 +11,16 @@
}
}
+.comment {
+ max-inline-size: 66ch;
+ margin-block: var(--comment-padding-block);
+ margin-inline: 0 auto;
+
+ textarea {
+ padding: var(--comment-padding-block) var(--comment-padding-inline);
+ }
+}
+
.comment__avatar {
margin-block-start: calc(var(--comment-padding-block) * 0.5);
margin-inline: auto calc(var(--comment-padding-inline) * -0.75);
@@ -35,12 +45,11 @@
}
.comment__content {
- margin-inline: 0 var(--avatar-size);
+ margin-inline: auto var(--avatar-size);
padding: var(--comment-padding-block) var(--comment-padding-inline);
.comment--mine & {
- background-color: var(--color-selected);
- margin-inline: var(--avatar-size) 0;
+ margin-inline: var(--avatar-size) auto;
}
.comment:has(+ .event-summary) & {
@@ -50,6 +59,7 @@
.comment--mine {
flex-direction: row-reverse;
+ margin-inline: auto 0;
.comment__author {
flex-direction: row-reverse;
@@ -73,8 +83,9 @@
}
.event-summary {
+ color: var(--bubble-color);
font-weight: 600;
- margin-block: calc(var(--comment-padding-block) * -1);
- padding: calc(var(--comment-padding-block) * 0.5) var(--comment-padding-inline);
gap: 0.5ch;
+ /* margin-block: calc(var(--comment-padding-block) * -1); */
+ padding: calc(var(--comment-padding-block) * 0.5) var(--comment-padding-inline);
}
diff --git a/app/helpers/bubbles_helper.rb b/app/helpers/bubbles_helper.rb
index d56bc590f..bfb37b245 100644
--- a/app/helpers/bubbles_helper.rb
+++ b/app/helpers/bubbles_helper.rb
@@ -1,5 +1,5 @@
module BubblesHelper
- BUBBLE_ROTATION = %w[ 90 80 75 60 45 35 25 5 -45 -40 -75 ]
+ BUBBLE_ROTATION = %w[ 75 60 45 35 25 5 ]
def bubble_rotation(bubble)
value = BUBBLE_ROTATION[Zlib.crc32(bubble.to_param) % BUBBLE_ROTATION.size]
diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb
index e6c7f5df9..02808cc69 100644
--- a/app/helpers/comments_helper.rb
+++ b/app/helpers/comments_helper.rb
@@ -1,6 +1,6 @@
module CommentsHelper
def comment_tag(comment, &)
- tag.div id: dom_id(comment), class: "comment flex align-start full-width",
+ tag.div id: dom_id(comment), class: "comment flex-inline align-start full-width",
data: { creator_id: comment.creator_id, created_by_current_user_target: "creation" }, &
end
diff --git a/app/views/bubbles/_assignments.html.erb b/app/views/bubbles/_assignments.html.erb
index cb88d8fe3..b66972a63 100644
--- a/app/views/bubbles/_assignments.html.erb
+++ b/app/views/bubbles/_assignments.html.erb
@@ -1,17 +1,8 @@
<% bubble.assignees.each do |assignee| %>
-
-
-
- <%= avatar_image_tag assignee, loading: :lazy, class: "avatar flex-item-no-shrink" %>
- Assign to…
-
-
- <%= form_with url: bucket_bubble_assignment_swaps_path(bubble.bucket, bubble), data: { controller: "form" } do |form| %>
- <%= form.hidden_field :outgoing_assignee_id, value: assignee.id %>
- <%= form.combobox :incoming_assignee_id, bucket_bubble_users_path(bubble.bucket, bubble),
- id: dom_id(assignee, :assignment), required: true, preload: true,
- data: { controller: "autofocus", action: "hw-combobox:selection->form#submit" } %>
- <% end %>
-
-
+
+
+ <%= assignee.name %>
+ <%= avatar_image_tag assignee, loading: :lazy, class: "avatar flex-item-no-shrink" %>
+
+
<% end %>
diff --git a/app/views/bubbles/_bubble.html.erb b/app/views/bubbles/_bubble.html.erb
index 3ed355c04..0078e865d 100644
--- a/app/views/bubbles/_bubble.html.erb
+++ b/app/views/bubbles/_bubble.html.erb
@@ -4,11 +4,17 @@
data-controller="animation upload-preview"
data-animation-play-class="bubble--wobble" data-animation-play-on-load-value="true" data-action="mouseover->animation#play">
-
- <%= turbo_frame_tag bubble, :edit do %>
- <%= link_to bubble.title, edit_bucket_bubble_path(bubble.bucket, bubble), class: "txt-undecorated" %>
- <% end %>
-
+
+
+ <%= turbo_frame_tag bubble, :edit do %>
+ <%= link_to bubble.title, edit_bucket_bubble_path(bubble.bucket, bubble), class: "txt-undecorated" %>
+ <% end %>
+
+
+
+ <%= render "bubbles/tags", bubble: bubble %>
+
+
@@ -20,6 +26,5 @@
<%= render "bubbles/boosts", bubble: bubble %>
<%= render "bubbles/date", bubble: bubble %>
<%= render "bubbles/image", bubble: bubble %>
- <%= render "bubbles/tags", bubble: bubble %>
<% end %>
diff --git a/app/views/bubbles/_tags.html.erb b/app/views/bubbles/_tags.html.erb
index f7f2961b7..1783d87f3 100644
--- a/app/views/bubbles/_tags.html.erb
+++ b/app/views/bubbles/_tags.html.erb
@@ -1,16 +1,4 @@
-<% bubble.tags.last(3).each do |tag| %>
-
-
-
- <%= tag.hashtag %>
-
-
- <%= form_with url: bucket_bubble_tagging_swaps_path(bubble.bucket, bubble), data: { controller: "form" } do |form| %>
- <%= form.hidden_field :outgoing_tag_id, value: tag.id %>
- <%= form.combobox :incoming_tag_id, bucket_bubble_tags_path(bubble.bucket, bubble),
- id: dom_id(tag, :tagging), required: true, preload: true, name_when_new: "incoming_tag_title",
- data: { controller: "autofocus", action: "hw-combobox:selection->form#submit" } %>
- <% end %>
-
-
+<% bubble.tags.each do |tag| %>
+ <%= link_to tag.hashtag, bubbles_path(@filter.to_params.merge(tag_ids: [ tag.id ])),
+ class: "btn btn--plain fill-transparent", style: "color: #{bubble.color}" %>
<% end %>
diff --git a/app/views/bubbles/list/_bubble.html.erb b/app/views/bubbles/list/_bubble.html.erb
index ae1763177..fe135da9f 100644
--- a/app/views/bubbles/list/_bubble.html.erb
+++ b/app/views/bubbles/list/_bubble.html.erb
@@ -7,11 +7,8 @@
<%= bubble.title %>
<% end %>
-
- <% bubble.tags.each do |tag| %>
- <%= link_to tag.hashtag, bubbles_path(@filter.to_params.merge(tag_ids: [ tag.id ])),
- class: "btn btn--plain txt-small fill-transparent", style: "color: #{bubble.color}" %>
- <% end %>
+
+ <%= render "bubbles/tags", bubble: bubble %>
@@ -30,6 +27,4 @@
DUE: <%= bubble.due_on.strftime("%b %d") %>
<% end %>
-
-
diff --git a/app/views/bubbles/show.html.erb b/app/views/bubbles/show.html.erb
index c2e4fdf04..f6475cdcc 100644
--- a/app/views/bubbles/show.html.erb
+++ b/app/views/bubbles/show.html.erb
@@ -1,26 +1,24 @@
<% @page_title = @bubble.title %>
+<% @filter ||= Current.user.filters.first || Filter.persist!({}) %>
+
<% content_for :header do %>
<% end %>