diff --git a/packages/website/src/components/OptionsSelector.module.css b/packages/website/src/components/OptionsSelector.module.css deleted file mode 100644 index a990748be47f..000000000000 --- a/packages/website/src/components/OptionsSelector.module.css +++ /dev/null @@ -1,75 +0,0 @@ -.optionLabel { - cursor: pointer; -} - -.optionItem, -.optionLabel { - align-items: center; - display: flex; - flex: 0 0 1.5rem; - flex-direction: row; - font-size: 0.75rem; - margin: 0 0; - padding: 0.4rem 0.8rem; - transition: background-color var(--ifm-transition-fast) - var(--ifm-transition-timing-default), - color var(--ifm-transition-fast) var(--ifm-transition-timing-default); - color: var(--ifm-font-color-secondary); - justify-content: space-between; - border: none; - background: transparent; - font-family: var(--ifm-font-family-base); - box-sizing: border-box; - line-height: var(--ifm-line-height-base); -} - -.optionLabel:hover { - background-color: var(--ifm-color-emphasis-100); - color: var(--ifm-font-color-primary); -} - -.optionInput { - display: block; - width: 90%; - padding: 0.4rem 0.6rem; - line-height: 1; - font-size: 0.8rem; - font-weight: 500; - font-family: inherit; - border-radius: 6px; - appearance: none; - color: var(--ifm-font-color-secondary); - border: 1px solid var(--ifm-color-emphasis-100); - background: var(--ifm-color-emphasis-200); - transition: border 0.3s ease; -} - -.optionInput::placeholder { - color: var(--ifm-color-emphasis-700); -} - -.optionInput:focus { - outline: none; - border-color: var(--ifm-color-primary); -} - -.optionSelect { - line-height: 1; - font-size: 0.8rem; - font-weight: 500; - border-radius: 6px; - font-family: inherit; - width: 50%; - box-shadow: none; - background-image: none; - padding: 0.4rem 0.6rem; - appearance: none; - color: var(--ifm-font-color-secondary); - border: 1px solid var(--ifm-color-emphasis-100); - background: var(--ifm-color-emphasis-200); - transition: border 0.3s ease; -} -.optionSelect:focus { - outline: none; - border-color: var(--ifm-color-primary); -} diff --git a/packages/website/src/components/OptionsSelector.tsx b/packages/website/src/components/OptionsSelector.tsx index 0588e88cb94f..3e3305d886da 100644 --- a/packages/website/src/components/OptionsSelector.tsx +++ b/packages/website/src/components/OptionsSelector.tsx @@ -1,18 +1,19 @@ -/* eslint-disable jsx-a11y/label-has-associated-control */ import { NavbarSecondaryMenuFiller, useWindowSize, } from '@docusaurus/theme-common'; import CopyIcon from '@site/src/icons/copy.svg'; +import IconExternalLink from '@theme/Icon/ExternalLink'; import React, { useCallback } from 'react'; -import useDebouncedToggle from './hooks/useDebouncedToggle'; +import { useClipboard } from '../hooks/useClipboard'; import Checkbox from './inputs/Checkbox'; import Dropdown from './inputs/Dropdown'; import Tooltip from './inputs/Tooltip'; +import ActionLabel from './layout/ActionLabel'; import Expander from './layout/Expander'; +import InputLabel from './layout/InputLabel'; import { createMarkdown, createMarkdownParams } from './lib/markdown'; -import styles from './OptionsSelector.module.css'; import type { ConfigModel } from './types'; export interface OptionsSelectorParams { @@ -28,8 +29,12 @@ function OptionsSelectorContent({ tsVersions, isLoading, }: OptionsSelectorParams): JSX.Element { - const [copyLink, setCopyLink] = useDebouncedToggle(false); - const [copyMarkdown, setCopyMarkdown] = useDebouncedToggle(false); + const [copyLink, copyLinkToClipboard] = useClipboard(() => + document.location.toString(), + ); + const [copyMarkdown, copyMarkdownToClipboard] = useClipboard(() => + createMarkdown(state), + ); const updateTS = useCallback( (version: string) => { @@ -38,23 +43,6 @@ function OptionsSelectorContent({ [setState], ); - const copyLinkToClipboard = useCallback(() => { - void navigator.clipboard - .writeText(document.location.toString()) - .then(() => { - setCopyLink(true); - }); - }, [setCopyLink]); - - const copyMarkdownToClipboard = useCallback(() => { - if (isLoading) { - return; - } - void navigator.clipboard.writeText(createMarkdown(state)).then(() => { - setCopyMarkdown(true); - }); - }, [isLoading, state, setCopyMarkdown]); - const openIssue = useCallback(() => { if (isLoading) { return; @@ -72,8 +60,7 @@ function OptionsSelectorContent({ return ( <> - - - + + {process.env.ESLINT_VERSION} + {process.env.TS_ESLINT_VERSION} - - + - - - + + + + ); diff --git a/packages/website/src/components/config/ConfigEditor.module.css b/packages/website/src/components/config/ConfigEditor.module.css index 93d34e5c3086..c25633dcaab7 100644 --- a/packages/website/src/components/config/ConfigEditor.module.css +++ b/packages/website/src/components/config/ConfigEditor.module.css @@ -1,7 +1,3 @@ -.search { - border-radius: 0.2rem; -} - .searchResult, .searchResultGroup { align-items: center; diff --git a/packages/website/src/components/config/ConfigEditor.tsx b/packages/website/src/components/config/ConfigEditor.tsx index c1e8e149feb8..9e2f690533f8 100644 --- a/packages/website/src/components/config/ConfigEditor.tsx +++ b/packages/website/src/components/config/ConfigEditor.tsx @@ -113,10 +113,9 @@ function ConfigEditor(props: ConfigEditorProps): JSX.Element {
diff --git a/packages/website/src/components/inputs/Dropdown.module.css b/packages/website/src/components/inputs/Dropdown.module.css new file mode 100644 index 000000000000..ae9233b69367 --- /dev/null +++ b/packages/website/src/components/inputs/Dropdown.module.css @@ -0,0 +1,20 @@ +.dropdown { + line-height: 1; + font-size: 0.8rem; + font-weight: 500; + border-radius: 6px; + font-family: inherit; + width: 50%; + box-shadow: none; + padding: 0.4rem 0.6rem; + appearance: none; + color: var(--ifm-font-color-secondary); + border: 1px solid var(--ifm-color-emphasis-100); + background: var(--ifm-color-emphasis-200); + transition: border 0.3s ease; +} + +.dropdown:focus { + outline: none; + border-color: var(--ifm-color-primary); +} diff --git a/packages/website/src/components/inputs/Dropdown.tsx b/packages/website/src/components/inputs/Dropdown.tsx index b0236c4d56e8..cb3f78cd0d9a 100644 --- a/packages/website/src/components/inputs/Dropdown.tsx +++ b/packages/website/src/components/inputs/Dropdown.tsx @@ -1,7 +1,7 @@ import clsx from 'clsx'; import React from 'react'; -import styles from '../OptionsSelector.module.css'; +import styles from './Dropdown.module.css'; export interface DropdownOption { readonly value: T; @@ -28,10 +28,10 @@ function Dropdown( return (