diff --git a/src/app/slices/channels.js b/src/app/slices/channels.js index f99784a7..845a909f 100644 --- a/src/app/slices/channels.js +++ b/src/app/slices/channels.js @@ -54,12 +54,6 @@ const channelsSlice = createSlice({ const filtered = state.byId[id].members.filter( (id) => members.findIndex((uid) => uid == id) == -1 ); - console.log( - "remove member from channel", - filtered, - members, - state.byId[id].members - ); state.byId[id].members = filtered; } break; diff --git a/src/assets/icons/arrow.down.mini.svg b/src/assets/icons/arrow.down.mini.svg new file mode 100644 index 00000000..8b8bda4c --- /dev/null +++ b/src/assets/icons/arrow.down.mini.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/reaction.svg b/src/assets/icons/reaction.svg index bbe34f58..54bc3c6e 100644 --- a/src/assets/icons/reaction.svg +++ b/src/assets/icons/reaction.svg @@ -1,3 +1,3 @@ - + diff --git a/src/common/component/Channel.js b/src/common/component/Channel.js index bc566af5..2a28c56a 100644 --- a/src/common/component/Channel.js +++ b/src/common/component/Channel.js @@ -34,10 +34,17 @@ const StyledWrapper = styled.div` } .name { /* user-select: text; */ + display: flex; font-weight: 600; font-size: 14px; line-height: 20px; color: #52525b; + .txt { + max-width: 140px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } `; export default function Channel({ @@ -66,9 +73,10 @@ export default function Channel({ {!compact && ( - - {name} ({is_public ? totalMemberCount : members.length}) - +
+ {name} ( + {is_public ? totalMemberCount : members.length}) +
)} ); diff --git a/src/common/component/CurrentUser.js b/src/common/component/CurrentUser.js index 40914de1..27840878 100644 --- a/src/common/component/CurrentUser.js +++ b/src/common/component/CurrentUser.js @@ -6,14 +6,14 @@ import micIcon from "../../assets/icons/mic.on.svg?url"; import Avatar from "./Avatar"; // import UserGuide from "./UserGuide"; const StyledWrapper = styled.div` - background-color: #e5e5e5; + background-color: #f4f4f5; position: sticky; bottom: 16px; margin: 8px; width: 94%; width: -webkit-fill-available; border-radius: 25px; - padding: 7px 8px 7px 4px; + padding: 8px; display: flex; align-items: center; justify-content: space-between; diff --git a/src/common/component/InviteLink.js b/src/common/component/InviteLink.js index 5063481f..ba12cb85 100644 --- a/src/common/component/InviteLink.js +++ b/src/common/component/InviteLink.js @@ -54,12 +54,7 @@ export default function InviteLink() { Share this link to invite people to this server.
- + diff --git a/src/common/component/InviteModal/InviteByEmail.js b/src/common/component/InviteModal/InviteByEmail.js index a9ae714b..4a55b9e9 100644 --- a/src/common/component/InviteModal/InviteByEmail.js +++ b/src/common/component/InviteModal/InviteByEmail.js @@ -1,4 +1,4 @@ -import { useEffect } from "react"; +import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import styled from "styled-components"; import useInviteLink from "../../hook/useInviteLink"; @@ -67,6 +67,7 @@ const Styled = styled.div` import Button from "../styled/Button"; import Input from "../styled/Input"; export default function InviteByEmail({ cid = null }) { + const [email, setEmail] = useState(""); const { enableSMTP, linkCopied, @@ -80,20 +81,22 @@ export default function InviteByEmail({ cid = null }) { toast.success("Invite Link Copied!"); } }, [linkCopied]); - + const handleEmail = (evt) => { + setEmail(evt.target.value); + }; return (
-
@@ -103,7 +106,7 @@ export default function InviteByEmail({ cid = null }) {
diff --git a/src/common/component/ManageMembers.js b/src/common/component/ManageMembers.js index 1eb7eb00..f0fa60a2 100644 --- a/src/common/component/ManageMembers.js +++ b/src/common/component/ManageMembers.js @@ -16,7 +16,7 @@ import StyledMenu from "./styled/Menu"; import InviteLink from "./InviteLink"; import moreIcon from "../../assets/icons/more.svg?url"; import IconOwner from "../../assets/icons/owner.svg"; -import IconArrowDown from "../../assets/icons/arrow.down.svg"; +import IconArrowDown from "../../assets/icons/arrow.down.mini.svg"; import IconCheck from "../../assets/icons/check.sign.svg"; const StyledWrapper = styled.section` display: flex; @@ -44,7 +44,7 @@ const StyledWrapper = styled.section` .members { display: flex; flex-direction: column; - gap: 24px; + gap: 4px; width: 512px; margin-bottom: 176px; .member { @@ -52,7 +52,11 @@ const StyledWrapper = styled.section` display: flex; justify-content: space-between; align-items: center; - padding: 0; + padding: 8px 12px; + border-radius: var(--br); + &:hover { + background: #f9fafb; + } .left { display: flex; gap: 8px; @@ -89,12 +93,16 @@ const StyledWrapper = styled.section` display: flex; align-items: center; gap: 4px; - .icon { + > .icon { cursor: pointer; } /* override */ .menu { min-width: 120px; + .item .icon { + width: 16px; + height: 12px; + } } } .opts { diff --git a/src/common/component/Message/Commands.js b/src/common/component/Message/Commands.js index 4a8427e8..0ce3fbcc 100644 --- a/src/common/component/Message/Commands.js +++ b/src/common/component/Message/Commands.js @@ -5,7 +5,8 @@ import Tippy from "@tippyjs/react"; import { hideAll } from "tippy.js"; import { updateSelectMessages } from "../../../app/slices/ui"; import { addReplyingMessage } from "../../../app/slices/message"; -import StyledMenu from "../styled/Menu"; +// import StyledMenu from "../styled/Menu"; +import ContextMenu from "../ContextMenu"; import Tooltip from "../../component/Tooltip"; import useFavMessage from "../../hook/useFavMessage"; @@ -14,6 +15,10 @@ import replyIcon from "../../../assets/icons/reply.svg?url"; import reactIcon from "../../../assets/icons/reaction.svg?url"; import editIcon from "../../../assets/icons/edit.svg?url"; import IconBookmark from "../../../assets/icons/bookmark.add.svg"; +import IconPin from "../../../assets/icons/pin.svg"; +import IconForward from "../../../assets/icons/forward.svg"; +import IconSelect from "../../../assets/icons/select.svg"; +import IconDelete from "../../../assets/icons/delete.svg"; import moreIcon from "../../../assets/icons/more.svg?url"; import toast from "react-hot-toast"; import useMessageOperation from "./useMessageOperation"; @@ -164,30 +169,32 @@ export default function Commands({ placement="left-start" trigger="click" content={ - - {canPin && ( -
  • - {pinned ? `Unpin Message` : `Pin Message`} -
  • - )} -
  • - Forward -
  • -
  • - Reply -
  • -
  • - Select -
  • - {canDelete && ( -
  • - Delete Message -
  • - )} -
    + , + handler: pinned ? handleUnpin : togglePinModal, + }, + { + title: "Forward", + icon: , + handler: toggleForwardModal, + }, + { + title: "Select", + icon: , + handler: handleSelect.bind(null, mid), + }, + + canDelete && { + title: " Delete", + danger: true, + icon: , + handler: toggleDeleteModal, + }, + ]} + /> } >
  • diff --git a/src/common/component/Message/FavoritedMessage.js b/src/common/component/Message/FavoritedMessage.js index 012f5fdc..99f9cd93 100644 --- a/src/common/component/Message/FavoritedMessage.js +++ b/src/common/component/Message/FavoritedMessage.js @@ -23,7 +23,10 @@ const FavoritedMessage = ({ id }) => { const favorite_mids = messages.map(({ from_mid }) => from_mid) || []; setMsgs( - +
    {messages.map((msg, idx) => { const { diff --git a/src/common/component/styled/Button.js b/src/common/component/styled/Button.js index 0e61565e..d34e7f96 100644 --- a/src/common/component/styled/Button.js +++ b/src/common/component/styled/Button.js @@ -7,8 +7,8 @@ const StyledButton = styled.button` box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05); border-radius: var(--br, 4px); font-weight: 500; - font-size: 16px; - line-height: 24px; + font-size: 14px; + line-height: 20px; color: #fff; background-color: #22ccee; &.flex { diff --git a/src/common/component/styled/Input.js b/src/common/component/styled/Input.js index e1d8eeb5..7317bb7b 100644 --- a/src/common/component/styled/Input.js +++ b/src/common/component/styled/Input.js @@ -41,9 +41,6 @@ const StyledInput = styled.input` border: 1px solid #e5e7eb; box-shadow: 0px 1px 2px rgba(31, 41, 55, 0.08); } - &.higher { - padding: 12px 8px; - } &.large { font-weight: 400; font-size: 16px; diff --git a/src/common/component/styled/Menu.js b/src/common/component/styled/Menu.js index d0176525..06c508e5 100644 --- a/src/common/component/styled/Menu.js +++ b/src/common/component/styled/Menu.js @@ -10,9 +10,9 @@ const StyledMenu = styled.ul` border-radius: 12px; min-width: 200px; .item { + position: relative; display: flex; align-items: center; - gap: 14px; white-space: nowrap; cursor: pointer; @@ -44,7 +44,19 @@ const StyledMenu = styled.ul` } } &.underline { - border-bottom: 1px solid #e5e5e5; + margin-bottom: 9px; + &:before { + position: absolute; + content: ""; + left: 6px; + bottom: -4px; + display: block; + padding: 0 6px; + box-sizing: border-box; + width: calc(100% - 12px); + height: 1px; + background-color: #f2f4f7; + } } &.danger { color: #a11043; diff --git a/src/common/hook/useInviteLink.js b/src/common/hook/useInviteLink.js index 88c34b92..0d221224 100644 --- a/src/common/hook/useInviteLink.js +++ b/src/common/hook/useInviteLink.js @@ -23,11 +23,6 @@ export default function useInviteLink(cid = null) { const copyLink = () => { copy(finalLink); }; - const regenLink = cid - ? () => { - generateChannelInviteLink(cid); - } - : generateServerInviteLink; useEffect(() => { if (cid) { generateChannelInviteLink(cid); @@ -45,10 +40,15 @@ export default function useInviteLink(cid = null) { setFinalLink(tmpURL.href); } }, [serverInviteLink, channelInviteLink, smtpStatusFetchSuccess]); + const genServerLink = () => { + generateServerInviteLink(); + }; return { enableSMTP: SMTPEnabled, generating: cid ? generatingChannelLink : generatingServerLink, - generateNewLink: regenLink, + generateNewLink: cid + ? generateChannelInviteLink.bind(null, cid) + : genServerLink, link: finalLink, linkCopied, copyLink, diff --git a/src/routes/chat/Layout/Operations.js b/src/routes/chat/Layout/Operations.js index b60ea790..ef1fde47 100644 --- a/src/routes/chat/Layout/Operations.js +++ b/src/routes/chat/Layout/Operations.js @@ -28,6 +28,9 @@ const Styled = styled.div` &:disabled svg path { fill: #ccc; } + &:hover { + background: #eaecf0; + } } .close { cursor: pointer; diff --git a/src/routes/chat/Layout/styled.js b/src/routes/chat/Layout/styled.js index 5ba93015..8ad4d809 100644 --- a/src/routes/chat/Layout/styled.js +++ b/src/routes/chat/Layout/styled.js @@ -19,6 +19,7 @@ const Styled = styled.article` justify-content: space-between; position: relative; > .chat { + border-bottom-right-radius: 16px; width: 100%; background-color: #fff; display: flex; diff --git a/src/routes/favs/index.js b/src/routes/favs/index.js index 3b10a25a..61cbe605 100644 --- a/src/routes/favs/index.js +++ b/src/routes/favs/index.js @@ -157,7 +157,7 @@ function FavsPage() { ); return ( -
    +

    {tip} {dayjs(created_at).format("YYYY-MM-DD")} diff --git a/src/routes/favs/styled.js b/src/routes/favs/styled.js index d8099c6b..aa8cf9cc 100644 --- a/src/routes/favs/styled.js +++ b/src/routes/favs/styled.js @@ -45,11 +45,14 @@ const Styled = styled.div` flex-direction: column; gap: 32px; overflow-y: scroll; - .fav { + .container { max-width: 600px; display: flex; flex-direction: column; gap: 4px; + > .favorite { + background: #f2f4f7; + } .tip { display: inline-flex; align-items: center; diff --git a/src/routes/resources/Filter/Type.js b/src/routes/resources/Filter/Type.js index 2adc7fab..7999cfc8 100644 --- a/src/routes/resources/Filter/Type.js +++ b/src/routes/resources/Filter/Type.js @@ -34,6 +34,10 @@ const Styled = styled.div` align-items: center; gap: 8px; color: #616161; + font-weight: 600; + font-size: 14px; + line-height: 20px; + color: #475467; .icon { width: 15px; height: auto; diff --git a/src/routes/resources/View.js b/src/routes/resources/View.js index 0e91a062..55860675 100644 --- a/src/routes/resources/View.js +++ b/src/routes/resources/View.js @@ -16,6 +16,9 @@ const Styled = styled.ul` cursor: pointer; padding: 8px; box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; } &.item .item, &.grid .grid {