From 4ccfab3e5e4a9d2201d710830243c8276fd4956b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Tue, 28 Mar 2023 17:42:16 +0200 Subject: [PATCH] Move Lexical styles to tailwind MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- .../plugins/floating-link-editor-plugin.tsx | 14 +- .../floating-text-format-toolbar-plugin.tsx | 169 +++++---- app/styles/application.scss | 1 - app/styles/components/lexical.scss | 326 ------------------ 4 files changed, 91 insertions(+), 419 deletions(-) delete mode 100644 app/styles/components/lexical.scss diff --git a/app/soapbox/features/compose/editor/plugins/floating-link-editor-plugin.tsx b/app/soapbox/features/compose/editor/plugins/floating-link-editor-plugin.tsx index fe83ce9017..e94d43b8f4 100644 --- a/app/soapbox/features/compose/editor/plugins/floating-link-editor-plugin.tsx +++ b/app/soapbox/features/compose/editor/plugins/floating-link-editor-plugin.tsx @@ -157,11 +157,15 @@ const FloatingLinkEditor = ({ }, [isEditMode]); return ( -
-
+
+
{isEditMode ? ( <> { @@ -188,7 +192,7 @@ const FloatingLinkEditor = ({ }} />
event.preventDefault()} @@ -201,11 +205,11 @@ const FloatingLinkEditor = ({ ) : ( <> - + {linkUrl}
event.preventDefault()} diff --git a/app/soapbox/features/compose/editor/plugins/floating-text-format-toolbar-plugin.tsx b/app/soapbox/features/compose/editor/plugins/floating-text-format-toolbar-plugin.tsx index 07db51541c..d0d95b37e5 100644 --- a/app/soapbox/features/compose/editor/plugins/floating-text-format-toolbar-plugin.tsx +++ b/app/soapbox/features/compose/editor/plugins/floating-text-format-toolbar-plugin.tsx @@ -80,6 +80,24 @@ const blockTypeToBlockName = { quote: 'Quote', }; +interface IToolbarButton extends React.HTMLAttributes { + active?: boolean + icon: string +} + +const ToolbarButton: React.FC = ({ active, icon, ...props }) => ( + +); + const BlockTypeDropdown = ({ editor, anchorElem, blockType, icon }: { editor: LexicalEditor anchorElem: HTMLElement @@ -172,70 +190,56 @@ const BlockTypeDropdown = ({ editor, anchorElem, blockType, icon }: { <> - - - - - - - + active={blockType === 'code'} + icon={blockTypeToIcon.code} + />
)} @@ -344,7 +348,10 @@ const TextFormatFloatingToolbar = ({ }, [editor, updateTextFormatFloatingToolbar]); return ( -
+
{editor.isEditable() && ( <> - - - - - - + icon={require('@tabler/icons/link.svg')} + /> )}
diff --git a/app/styles/application.scss b/app/styles/application.scss index 31b07eea83..d54785550f 100644 --- a/app/styles/application.scss +++ b/app/styles/application.scss @@ -27,7 +27,6 @@ @import 'components/crypto-donate'; @import 'components/aliases'; @import 'components/icon'; -@import 'components/lexical'; @import 'forms'; @import 'utilities'; @import 'components/datepicker'; diff --git a/app/styles/components/lexical.scss b/app/styles/components/lexical.scss deleted file mode 100644 index 999352e7c6..0000000000 --- a/app/styles/components/lexical.scss +++ /dev/null @@ -1,326 +0,0 @@ -.lexical { - .floating-text-format-popup { - @apply flex h-[38px] p-1 absolute top-0 left-0 bg-white dark:bg-gray-900 z-10 rounded-lg shadow-lg opacity-0 transition-[opacity]; - } - - .floating-text-format-popup button.popup-item { - border: 0; - display: flex; - background: none; - border-radius: 10px; - padding: 5px; - cursor: pointer; - vertical-align: middle; - } - - .floating-text-format-popup button.popup-item:disabled { - cursor: not-allowed; - } - - .floating-text-format-popup button.popup-item.spaced { - margin-right: 2px; - } - - .floating-text-format-popup button.popup-item i.format { - background-size: contain; - height: 18px; - width: 18px; - margin-top: 2px; - vertical-align: -0.25em; - display: flex; - opacity: 0.6; - } - - .floating-text-format-popup button.popup-item:disabled i.format { - opacity: 0.2; - } - - .floating-text-format-popup button.popup-item.active { - background-color: rgba(223, 232, 250, 0.3); - } - - .floating-text-format-popup button.popup-item.active i { - opacity: 1; - } - - .floating-text-format-popup button.popup-item svg { - @apply h-5 w-5; - } - - .floating-text-format-popup .popup-item:not([disabled]) { - @apply hover:bg-gray-100 hover:dark:bg-primary-700; - } - - .floating-text-format-popup select.popup-item { - border: 0; - display: flex; - background: none; - border-radius: 10px; - padding: 8px; - vertical-align: middle; - width: 70px; - font-size: 14px; - color: #777; - text-overflow: ellipsis; - } - - .floating-text-format-popup select.code-language { - text-transform: capitalize; - width: 130px; - } - - .floating-text-format-popup .popup-item .text { - display: flex; - line-height: 20px; - vertical-align: middle; - font-size: 14px; - color: #777; - text-overflow: ellipsis; - width: 70px; - overflow: hidden; - height: 20px; - text-align: left; - } - - .floating-text-format-popup .popup-item .icon { - display: flex; - width: 20px; - height: 20px; - user-select: none; - margin-right: 8px; - line-height: 16px; - background-size: contain; - } - - .floating-text-format-popup i.chevron-down { - margin-top: 3px; - width: 16px; - height: 16px; - display: flex; - user-select: none; - } - - .floating-text-format-popup i.chevron-down.inside { - width: 16px; - height: 16px; - display: flex; - margin-left: -25px; - margin-top: 11px; - margin-right: 10px; - pointer-events: none; - } - - .floating-text-format-popup .divider { - width: 1px; - background-color: #eee; - margin: 0 4px; - } - - .link-editor { - position: absolute; - top: 0; - left: 0; - z-index: 10; - max-width: 400px; - width: 100%; - opacity: 0; - background-color: #fff; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - border-radius: 8px; - transition: opacity 0.5s; - will-change: transform; - } - - .link-editor .button { - width: 20px; - height: 20px; - display: inline-block; - padding: 6px; - border-radius: 8px; - cursor: pointer; - margin: 0 2px; - } - - .link-editor .button.hovered { - width: 20px; - height: 20px; - display: inline-block; - background-color: #eee; - } - - .link-editor .button i, - .actions i { - background-size: contain; - display: inline-block; - height: 20px; - width: 20px; - vertical-align: -0.25em; - } - - .link-editor .button.active, - .toolbar .button.active { - background-color: rgb(223, 232, 250); - } - - .link-editor .link-input { - display: block; - width: calc(100% - 24px); - box-sizing: border-box; - margin: 8px 12px; - padding: 8px 12px; - border-radius: 15px; - background-color: #eee; - font-size: 15px; - color: rgb(5, 5, 5); - border: 0; - outline: 0; - position: relative; - font-family: inherit; - } - - .link-editor .link-input input { - width: 100%; - margin: -8px -12px; - padding: 8px 12px; - background: transparent; - font-size: 15px; - color: rgb(5, 5, 5); - border: 0; - outline: 0; - } - - .link-editor div.link-edit { - display: flex; - align-items: center; - justify-content: center; - width: 36px; - position: absolute; - right: 0; - top: 0; - bottom: 0; - cursor: pointer; - } - - .link-editor .link-input a { - color: rgb(33, 111, 219); - text-decoration: none; - display: block; - white-space: nowrap; - overflow: hidden; - margin-right: 30px; - text-overflow: ellipsis; - } - - .link-editor .link-input a:hover { - text-decoration: underline; - } - - .link-editor .font-size-wrapper, - .link-editor .font-family-wrapper { - display: flex; - margin: 0 4px; - } - - .link-editor select { - padding: 6px; - border: none; - background-color: rgba(0, 0, 0, 0.075); - border-radius: 4px; - } -} - -.typeahead-popover { - background: #fff; - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); - border-radius: 8px; - margin-top: 25px; -} - -.typeahead-popover ul { - padding: 0; - list-style: none; - margin: 0; - border-radius: 8px; - max-height: 200px; - overflow-y: scroll; -} - -.typeahead-popover ul::-webkit-scrollbar { - display: none; -} - -.typeahead-popover ul { - -ms-overflow-style: none; - scrollbar-width: none; -} - -.typeahead-popover ul li { - margin: 0; - min-width: 180px; - font-size: 14px; - outline: none; - cursor: pointer; - border-radius: 8px; -} - -.typeahead-popover ul li.selected { - background: #eee; -} - -.typeahead-popover li { - margin: 0 8px; - padding: 8px; - color: #050505; - cursor: pointer; - line-height: 16px; - font-size: 15px; - display: flex; - align-content: center; - flex-direction: row; - flex-shrink: 0; - background-color: #fff; - border-radius: 8px; - border: 0; -} - -.typeahead-popover li.active { - display: flex; - width: 20px; - height: 20px; - background-size: contain; -} - -.typeahead-popover li:first-child { - border-radius: 8px 8px 0 0; -} - -.typeahead-popover li:last-child { - border-radius: 0 0 8px 8px; -} - -.typeahead-popover li:hover { - background-color: #eee; -} - -.typeahead-popover li .text { - display: flex; - line-height: 20px; - flex-grow: 1; - min-width: 150px; -} - -.typeahead-popover li .icon { - display: flex; - width: 20px; - height: 20px; - user-select: none; - margin-right: 8px; - line-height: 16px; - background-size: contain; - background-repeat: no-repeat; - background-position: center; -} - -.mentions-menu { - width: 250px; -}