diff --git a/packages/web/src/javascripts/Components/Button/RoundIconButton.tsx b/packages/web/src/javascripts/Components/Button/RoundIconButton.tsx index 175b92527..2d53045be 100644 --- a/packages/web/src/javascripts/Components/Button/RoundIconButton.tsx +++ b/packages/web/src/javascripts/Components/Button/RoundIconButton.tsx @@ -1,32 +1,37 @@ -import { FunctionComponent, MouseEventHandler } from 'react' +import { ForwardedRef, forwardRef, MouseEventHandler } from 'react' import Icon from '@/Components/Icon/Icon' import { IconType } from '@standardnotes/snjs' - -type ButtonType = 'normal' | 'primary' +import { classNames } from '@/Utils/ConcatenateClassNames' type Props = { onClick: () => void - type: ButtonType className?: string icon: IconType + iconClassName?: string + label: string + id?: string } -const RoundIconButton: FunctionComponent = ({ onClick, type, className, icon: iconType }) => { - const click: MouseEventHandler = (e) => { - e.preventDefault() - onClick() - } - const classes = type === 'primary' ? 'info ' : '' - return ( - - ) -} +const RoundIconButton = forwardRef( + ({ onClick, className, icon: iconType, iconClassName, id }: Props, ref: ForwardedRef) => { + const click: MouseEventHandler = (e) => { + e.preventDefault() + onClick() + } + return ( + + ) + }, +) export default RoundIconButton diff --git a/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorButton.tsx b/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorButton.tsx index 6d0914a25..d60981655 100644 --- a/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorButton.tsx +++ b/packages/web/src/javascripts/Components/ChangeEditor/ChangeEditorButton.tsx @@ -2,9 +2,9 @@ import { WebApplication } from '@/Application/Application' import { ViewControllerManager } from '@/Controllers/ViewControllerManager' import { observer } from 'mobx-react-lite' import { FunctionComponent, useCallback, useRef, useState } from 'react' -import Icon from '@/Components/Icon/Icon' import ChangeEditorMenu from './ChangeEditorMenu' import Popover from '../Popover/Popover' +import RoundIconButton from '../Button/RoundIconButton' type Props = { application: WebApplication @@ -38,15 +38,13 @@ const ChangeEditorButton: FunctionComponent = ({ return (
- + icon={selectedEditorIcon} + iconClassName={`text-accessory-tint-${selectedEditorIconTint}`} + />
- + icon="sort-descending" + label="Display options menu" + />
diff --git a/packages/web/src/javascripts/Components/ContentListView/Header/StyledDisplayOptionsButton.tsx b/packages/web/src/javascripts/Components/ContentListView/Header/StyledDisplayOptionsButton.tsx deleted file mode 100644 index 5f8b3cf2e..000000000 --- a/packages/web/src/javascripts/Components/ContentListView/Header/StyledDisplayOptionsButton.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { DisclosureButton } from '@reach/disclosure' -import styled from 'styled-components' - -const StyledDisplayOptionsButton = styled(DisclosureButton).attrs(() => ({ - className: - 'flex justify-center items-center min-w-8 h-8 bg-text-padding hover:bg-contrast focus:bg-contrast text-neutral border border-solid border-border rounded-full cursor-pointer', -}))<{ - $pressed: boolean -}>` - background-color: ${(props) => (props.$pressed ? 'var(--sn-stylekit-contrast-background-color)' : 'transparent')}; -` - -export default StyledDisplayOptionsButton diff --git a/packages/web/src/javascripts/Components/FileContextMenu/FileOptionsPanel.tsx b/packages/web/src/javascripts/Components/FileContextMenu/FileOptionsPanel.tsx index 5aef6bfa1..52a731f46 100644 --- a/packages/web/src/javascripts/Components/FileContextMenu/FileOptionsPanel.tsx +++ b/packages/web/src/javascripts/Components/FileContextMenu/FileOptionsPanel.tsx @@ -1,10 +1,10 @@ -import Icon from '@/Components/Icon/Icon' import { useCallback, useRef, useState } from 'react' import { observer } from 'mobx-react-lite' import FileMenuOptions from './FileMenuOptions' import { FilesController } from '@/Controllers/FilesController' import { SelectedItemsController } from '@/Controllers/SelectedItemsController' import Popover from '../Popover/Popover' +import RoundIconButton from '../Button/RoundIconButton' type Props = { filesController: FilesController @@ -19,15 +19,7 @@ const FilesOptionsPanel = ({ filesController, selectionController }: Props) => { return ( <> - + - + icon="info" + /> - + = ({ application }) => {
- + label="Go to items list" + icon="chevron-left" + /> - + label="Go to account menu" + icon="account-circle" + /> {hasPasscode && ( - + label="Locks application and wipes unencrypted data from memory." + className="ml-2.5 bg-default" + icon="lock-filled" + /> )} - - + label="Go to quick settings menu" + icon="themes" + />
{panelElement && ( diff --git a/packages/web/src/javascripts/Components/NavigationMenu/NavigationMenu.tsx b/packages/web/src/javascripts/Components/NavigationMenu/NavigationMenu.tsx index 01f87820e..64297bfef 100644 --- a/packages/web/src/javascripts/Components/NavigationMenu/NavigationMenu.tsx +++ b/packages/web/src/javascripts/Components/NavigationMenu/NavigationMenu.tsx @@ -1,4 +1,4 @@ -import Icon from '../Icon/Icon' +import RoundIconButton from '../Button/RoundIconButton' import { AppPaneId } from '../ResponsivePane/AppPaneMetadata' import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider' @@ -6,8 +6,8 @@ export const NavigationMenuButton = () => { const { selectedPane, toggleAppPane } = useResponsiveAppPane() return ( - + label="Open navigation menu" + icon="menu-variant" + /> ) } diff --git a/packages/web/src/javascripts/Components/NoteGroupView/MobileItemsListButton.tsx b/packages/web/src/javascripts/Components/NoteGroupView/MobileItemsListButton.tsx index bde380916..3061a331c 100644 --- a/packages/web/src/javascripts/Components/NoteGroupView/MobileItemsListButton.tsx +++ b/packages/web/src/javascripts/Components/NoteGroupView/MobileItemsListButton.tsx @@ -1,8 +1,8 @@ import { AppPaneId } from '../ResponsivePane/AppPaneMetadata' -import Icon from '../Icon/Icon' import { useResponsiveAppPane } from '../ResponsivePane/ResponsivePaneProvider' import { useMediaQuery, MediaQueryBreakpoints } from '@/Hooks/useMediaQuery' import { IconType } from '@standardnotes/snjs' +import RoundIconButton from '../Button/RoundIconButton' const MobileItemsListButton = () => { const { toggleAppPane, isNotesListVisibleOnTablets, toggleNotesListOnTablets } = useResponsiveAppPane() @@ -18,8 +18,8 @@ const MobileItemsListButton = () => { : 'Go to items list' return ( - + label={label} + icon={iconType} + /> ) } diff --git a/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx b/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx index 1d8735775..027449751 100644 --- a/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx +++ b/packages/web/src/javascripts/Components/NotesOptions/NotesOptionsPanel.tsx @@ -1,4 +1,3 @@ -import Icon from '@/Components/Icon/Icon' import { useCallback, useRef, useState } from 'react' import { observer } from 'mobx-react-lite' import NotesOptions from './NotesOptions' @@ -8,6 +7,7 @@ import { NavigationController } from '@/Controllers/Navigation/NavigationControl import { HistoryModalController } from '@/Controllers/NoteHistory/HistoryModalController' import Popover from '../Popover/Popover' import { LinkingController } from '@/Controllers/LinkingController' +import RoundIconButton from '../Button/RoundIconButton' type Props = { application: WebApplication @@ -39,15 +39,7 @@ const NotesOptionsPanel = ({ return ( <> - + = ({ className = '', notesControll return (