diff --git a/client/components/Breadcrumbs/Breadcrumbs.stories.js b/client/components/Breadcrumbs/Breadcrumbs.stories.js new file mode 100644 index 0000000000000..01e0c93962d4e --- /dev/null +++ b/client/components/Breadcrumbs/Breadcrumbs.stories.js @@ -0,0 +1,54 @@ +import React from 'react'; + +import Breadcrumbs from '.'; + +export default { + title: 'components/Breadcrumbs', + component: Breadcrumbs, +}; + +const { Item, Icon, Text, Link, Separator } = Breadcrumbs; + +export const Default = () => + + + + design + + + + + rc-design + + ; + +export const AsTeamMember = () => + + + + design + + + + + rc-design + + ; + +export const WithDiscussion = () => + + + + design + + + + + rc-design + + + + + storybook + + ; diff --git a/client/components/Breadcrumbs/index.js b/client/components/Breadcrumbs/index.js new file mode 100644 index 0000000000000..3c46d5773d43c --- /dev/null +++ b/client/components/Breadcrumbs/index.js @@ -0,0 +1,39 @@ +import React from 'react'; +import { Box, Icon } from '@rocket.chat/fuselage'; +import colors from '@rocket.chat/fuselage-tokens/colors'; +import { css } from '@rocket.chat/css-in-js'; + +const BreadcrumbsSeparator = () => /; +const BreadcrumbsIcon = ({ name, color, children }) => {name ? : children}; + +const BreadcrumbsLink = (props) => ; + +const BreadcrumbsText = (props) => ; + +const BreadcrumbsItem = (props) => ; + +const Breadcrumbs = ({ children }) => {children}; + +Object.assign(Breadcrumbs, { + Text: BreadcrumbsText, + Link: BreadcrumbsLink, + Icon: BreadcrumbsIcon, + Separator: BreadcrumbsSeparator, + Item: BreadcrumbsItem, +}); + +export default Breadcrumbs; diff --git a/client/hooks/useRoomIcon.tsx b/client/hooks/useRoomIcon.tsx index f3ba9fa166c00..dd3df78be422e 100644 --- a/client/hooks/useRoomIcon.tsx +++ b/client/hooks/useRoomIcon.tsx @@ -11,10 +11,14 @@ export const colors = { offline: 'neutral-600', }; -export const useRoomIcon = (room: IRoom): JSX.Element | { name: string; color?: string } | null => { +export const useRoomIcon = (room: IRoom, small = true): JSX.Element | { name: string; color?: string } | null => { + if (room.prid) { + return { name: 'baloons' }; + } + switch (room.t) { case 'p': - return { name: 'lock' }; + return { name: 'hashtag-lock' }; case 'c': return { name: 'hash' }; case 'l': @@ -22,10 +26,10 @@ export const useRoomIcon = (room: IRoom): JSX.Element | { name: string; color?: case 'd': const direct = room as unknown as IDirectMessageRoom; if (direct.uids && direct.uids.length > 2) { - return { name: 'team' }; + return { name: 'baloon-arrow-left' }; } if (direct.uids && direct.uids.length > 0) { - return uid !== room.u._id)[0] || room.u._id } as any } />; + return uid !== room.u._id)[0] || room.u._id } as any } />; } return { name: 'at' }; default: diff --git a/client/sidebar/RoomList.js b/client/sidebar/RoomList.js index 7c7159a404956..b8d5e28d25f7d 100644 --- a/client/sidebar/RoomList.js +++ b/client/sidebar/RoomList.js @@ -6,7 +6,6 @@ import memoize from 'memoize-one'; import { usePreventDefault } from './hooks/usePreventDefault'; import { filterMarkdown } from '../../app/markdown/lib/markdown'; -import { ReactiveUserStatus, colors } from '../components/UserStatus'; import { useTranslation } from '../contexts/TranslationContext'; import { roomTypes } from '../../app/utils'; import { useUserPreference, useUserId } from '../contexts/UserContext'; @@ -17,6 +16,7 @@ import { useTemplateByViewMode } from './hooks/useTemplateByViewMode'; import { useShortcutOpenMenu } from './hooks/useShortcutOpenMenu'; import { useAvatarTemplate } from './hooks/useAvatarTemplate'; import { useRoomList } from './hooks/useRoomList'; +import { useRoomIcon } from '../hooks/useRoomIcon'; import { useSidebarPaletteColor } from './hooks/useSidebarPaletteColor'; import { escapeHTML } from '../../lib/escapeHTML'; import ScrollableContentWrapper from '../components/ScrollableContentWrapper'; @@ -38,24 +38,11 @@ export const itemSizeMap = (sidebarViewMode) => { }; const SidebarIcon = ({ room, small }) => { - switch (room.t) { - case 'p': - case 'c': - return