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 %> diff --git a/app/views/bubbles/stage_pickers/new.html.erb b/app/views/bubbles/stage_pickers/new.html.erb index d3826ddaa..9fed5653f 100644 --- a/app/views/bubbles/stage_pickers/new.html.erb +++ b/app/views/bubbles/stage_pickers/new.html.erb @@ -1,9 +1,9 @@ <%= turbo_frame_tag dom_id(@bubble, :stage_picker) do %> <% if @selected_workflow %> -