From 604d4a9c30b76de33716d93ea12170a270b7040e Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 4 Dec 2025 13:55:07 +0530 Subject: [PATCH] feat: Update conversation side panel layout and styling (#12983) --- .../dashboard/assets/scss/_woot.scss | 4 +- .../components/ContactNoteItem.vue | 42 +- .../Contacts/VoiceCallButton.vue | 1 + .../ConversationCardCompact.vue | 2 +- .../ConversationCardExpanded.vue | 2 +- .../Conversation/SidepanelSwitch.vue | 8 +- .../Conversation/Sla/SLACardLabel.vue | 2 +- .../CustomAttributes/CheckboxAttribute.vue | 35 +- .../CustomAttributes/DateAttribute.vue | 39 +- .../CustomAttributes/ListAttribute.vue | 65 ++- .../CustomAttributes/OtherAttribute.vue | 58 +-- .../components-next/SidebarActionsHeader.vue | 9 +- .../components-next/avatar/Avatar.vue | 6 +- .../avatar/AvatarGroup.vue} | 16 +- .../components-next/button/Button.vue | 2 +- .../dropdown-menu/DropdownMenu.vue | 84 ++-- .../components/Accordion/AccordionItem.vue | 58 +-- .../dashboard/components/ConversationList.vue | 2 +- .../dashboard/components/CustomAttribute.vue | 351 --------------- .../components/buttons/ResolveAction.vue | 52 +-- .../components/copilot/CopilotContainer.vue | 2 +- app/javascript/dashboard/components/index.js | 4 - .../components/ui/HelperTextPopup.vue | 14 +- .../widgets/conversation/ConversationBox.vue | 1 + .../conversation/ConversationHeader.vue | 34 +- .../conversation/ConversationSidebar.vue | 2 +- .../conversation/ShopifyOrdersList.vue | 9 +- .../BulkTeamActions.vue | 2 +- .../conversation/linear/IssuesList.vue | 19 +- .../widgets/mentions/MentionBox.vue | 6 +- .../specs/useDropdownPosition.spec.js | 284 ++++++++++++ .../composables/useDropdownPosition.js | 63 +++ .../dashboard/i18n/locale/en/contact.json | 15 +- .../i18n/locale/en/conversation.json | 20 +- .../dashboard/i18n/locale/en/macros.json | 1 + .../conversation/AgentAssignment.vue | 264 +++++++++++ .../conversation/ContactConversations.vue | 20 +- .../conversation/ContactDetailsItem.vue | 33 +- .../dashboard/conversation/ContactPanel.vue | 51 ++- .../conversation/ConversationAction.vue | 294 +------------ .../conversation/ConversationInfo.vue | 62 ++- .../conversation/ConversationParticipant.vue | 229 ---------- .../conversation/LabelAssignment.vue | 213 +++++++++ .../dashboard/conversation/Macros/List.vue | 12 +- .../conversation/Macros/MacroItem.vue | 49 ++- .../conversation/Macros/MacroPreview.vue | 43 +- .../conversation/ParticipantAssignment.vue | 249 +++++++++++ .../conversation/PriorityAssignment.vue | 195 ++++++++ .../conversation/SidePanelEmptyState.vue | 14 + .../dashboard/conversation/TeamAssignment.vue | 181 ++++++++ .../conversation/contact/ContactInfo.vue | 416 ++++++++---------- .../conversation/contact/ContactInfoRow.vue | 125 +++--- .../conversation/contact/ContactNotes.vue | 19 +- .../customAttributes/CustomAttributes.vue | 239 +++++----- .../conversation/labels/LabelBox.vue | 139 ------ .../settings/attributes/AddAttribute.vue | 5 +- .../settings/attributes/EditAttribute.vue | 5 +- .../components/ui/MultiselectDropdown.vue | 122 ----- .../ui/MultiselectDropdownItems.vue | 151 ------- .../components/ui/dropdown/AddLabel.vue | 20 - .../ui/dropdown/DropdownDivider.vue | 11 - .../components/ui/dropdown/DropdownHeader.vue | 22 - .../components/ui/dropdown/DropdownItem.vue | 46 -- .../components/ui/dropdown/DropdownMenu.vue | 66 --- .../ui/dropdown/DropdownSubMenu.vue | 27 -- .../components/ui/label/LabelDropdown.vue | 184 -------- .../components/ui/label/LabelDropdownItem.vue | 59 --- theme/icons.js | 10 + 68 files changed, 2336 insertions(+), 2553 deletions(-) rename app/javascript/dashboard/{components/widgets/ThumbnailGroup.vue => components-next/avatar/AvatarGroup.vue} (75%) delete mode 100644 app/javascript/dashboard/components/CustomAttribute.vue create mode 100644 app/javascript/dashboard/composables/specs/useDropdownPosition.spec.js create mode 100644 app/javascript/dashboard/composables/useDropdownPosition.js create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/AgentAssignment.vue delete mode 100644 app/javascript/dashboard/routes/dashboard/conversation/ConversationParticipant.vue create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/LabelAssignment.vue create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/ParticipantAssignment.vue create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/PriorityAssignment.vue create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/SidePanelEmptyState.vue create mode 100644 app/javascript/dashboard/routes/dashboard/conversation/TeamAssignment.vue delete mode 100644 app/javascript/dashboard/routes/dashboard/conversation/labels/LabelBox.vue delete mode 100644 app/javascript/shared/components/ui/MultiselectDropdown.vue delete mode 100644 app/javascript/shared/components/ui/MultiselectDropdownItems.vue delete mode 100644 app/javascript/shared/components/ui/dropdown/AddLabel.vue delete mode 100644 app/javascript/shared/components/ui/dropdown/DropdownDivider.vue delete mode 100644 app/javascript/shared/components/ui/dropdown/DropdownHeader.vue delete mode 100644 app/javascript/shared/components/ui/dropdown/DropdownItem.vue delete mode 100644 app/javascript/shared/components/ui/dropdown/DropdownMenu.vue delete mode 100644 app/javascript/shared/components/ui/dropdown/DropdownSubMenu.vue delete mode 100644 app/javascript/shared/components/ui/label/LabelDropdown.vue delete mode 100644 app/javascript/shared/components/ui/label/LabelDropdownItem.vue diff --git a/app/javascript/dashboard/assets/scss/_woot.scss b/app/javascript/dashboard/assets/scss/_woot.scss index 40ca7b436..36e1b2341 100644 --- a/app/javascript/dashboard/assets/scss/_woot.scss +++ b/app/javascript/dashboard/assets/scss/_woot.scss @@ -46,14 +46,14 @@ body { } .custom-dashed-border { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%23E2E3E7' stroke-width='2' stroke-dasharray='6, 8' stroke-dashoffset='0' stroke-linecap='round'/%3E%3C/svg%3E"); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect x='1' y='1' width='calc(100%25 - 2px)' height='calc(100%25 - 2px)' fill='none' rx='12' ry='12' stroke='%23E2E3E7' stroke-width='1.5' stroke-dasharray='6 4' stroke-linecap='butt'/%3E%3C/svg%3E"); background-position: center; background-repeat: no-repeat; background-size: 100% 100%; } .dark .custom-dashed-border { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect x='0' y='0' width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%23343434' stroke-width='2' stroke-dasharray='6, 8' stroke-dashoffset='0' stroke-linecap='round'/%3E%3C/svg%3E"); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect x='1' y='1' width='calc(100%25 - 2px)' height='calc(100%25 - 2px)' fill='none' rx='12' ry='12' stroke='%23343434' stroke-width='1.5' stroke-dasharray='6 4' stroke-linecap='butt'/%3E%3C/svg%3E"); } @layer utilities { diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/ContactNoteItem.vue b/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/ContactNoteItem.vue index c11fa2d9d..1c9f253b0 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/ContactNoteItem.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsSidebar/components/ContactNoteItem.vue @@ -48,10 +48,26 @@ onMounted(() => {