diff --git a/packages/logos-docusaurus-theme/src/client/components/Icon/Icon.tsx b/packages/logos-docusaurus-theme/src/client/components/Icon/Icon.tsx index 0d4dbd9..782c58f 100644 --- a/packages/logos-docusaurus-theme/src/client/components/Icon/Icon.tsx +++ b/packages/logos-docusaurus-theme/src/client/components/Icon/Icon.tsx @@ -1,18 +1,22 @@ import { useColorMode } from '@docusaurus/theme-common' import { clsx } from 'clsx' -import React, { CSSProperties } from 'react' +import React from 'react' import styles from './style.module.scss' +import AddSvg from '../../static/icons/add.svg' import ArrowLCircleSvg from '../../static/icons/arrow-left-circle.svg' import ArrowL from '../../static/icons/arrow-left.svg' import ArrowRCircleSvg from '../../static/icons/arrow-right-circle.svg' import ArrowR from '../../static/icons/arrow-right.svg' +import Avatar from '../../static/icons/avatar.svg' import CloseSvg from '../../static/icons/close.svg' import CopySvg from '../../static/icons/copy.svg' +import DiscordWhiteSvg from '../../static/icons/discord-white.svg' import DiscordSvg from '../../static/icons/discord.svg' import DiscourseSvg from '../../static/icons/discourse.svg' import DotSvg from '../../static/icons/dot.svg' +import DownloadSvg from '../../static/icons/download.svg' import DropdownSvg from '../../static/icons/dropdown.svg' import EditSvg from '../../static/icons/edit.svg' import ExternalLinkSvg from '../../static/icons/external-link.svg' @@ -23,15 +27,13 @@ import GithubWhiteSvg from '../../static/icons/github-white.svg' import GScholarSvg from '../../static/icons/gscholar.svg' import HistorySvg from '../../static/icons/history.svg' import LinkedinSvg from '../../static/icons/linkedin.svg' +import RemoveSvg from '../../static/icons/remove.svg' import SearchSvg from '../../static/icons/search.svg' import StatusSvg from '../../static/icons/status.svg' +import TelegramWhiteSvg from '../../static/icons/telegram-white.svg' import TelegramSvg from '../../static/icons/telegram.svg' import TwitterSvg from '../../static/icons/twitter.svg' -import DiscordWhiteSvg from '../../static/icons/discord-white.svg' -import TelegramWhiteSvg from '../../static/icons/telegram-white.svg' import XWhiteSvg from '../../static/icons/x-white.svg' -import Avatar from '../../static/icons/avatar.svg' -import DownloadSvg from '../../static/icons/download.svg' type TIconProps = { size?: 's' | 'm' | 'l' @@ -40,7 +42,8 @@ type TIconProps = { type TProps = { children?: JSX.Element - fill?: string + fill?: boolean + stroke?: boolean } & TIconProps export const Icon = (props: TProps): JSX.Element => { @@ -53,6 +56,8 @@ export const Icon = (props: TProps): JSX.Element => { styles.icon, colorMode === 'dark' ? styles.dark : styles.light, styles[size], + props.stroke && styles.stroke, + props.fill && styles.fill, props.className && props.className, )} > @@ -234,3 +239,15 @@ export const IconDownload = (props: TIconProps): JSX.Element => ( ) + +export const IconAdd = (props: TIconProps): JSX.Element => ( + + + +) + +export const IconRemove = (props: TIconProps): JSX.Element => ( + + + +) diff --git a/packages/logos-docusaurus-theme/src/client/components/Icon/style.module.scss b/packages/logos-docusaurus-theme/src/client/components/Icon/style.module.scss index 63efbd5..0eb5a65 100644 --- a/packages/logos-docusaurus-theme/src/client/components/Icon/style.module.scss +++ b/packages/logos-docusaurus-theme/src/client/components/Icon/style.module.scss @@ -17,13 +17,31 @@ } &.dark { - .fill { - fill: var(--ifm-color-black); + &.fill { + &, + * { + fill: var(--ifm-color-white); + } } - .stroke { - stroke: var(--ifm-color-white); + &.stroke { + svg, + svg * { + stroke: var(--ifm-color-white); + } } } &.light { + &.fill { + &, + * { + fill: var(--ifm-color-black); + } + } + &.stroke { + svg, + svg * { + stroke: var(--ifm-color-black); + } + } } } diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/AccordionItem.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/AccordionItem.scss new file mode 100644 index 0000000..66afb48 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/AccordionItem.scss @@ -0,0 +1,45 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + +.mdx-accordion-item { + border-bottom: 1px solid rgb(var(--lsd-border-primary)); + + > input { + display: none; + } +} + +.mdx-accordion-item__header { + min-height: 88px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: 16px 0; + gap: 0 16px; + + &, + * { + cursor: pointer; + } +} + +.mdx-accordion-item__content-wrapper { + overflow: hidden; + height: auto; +} + +.mdx-accordion-item__content { + height: 0; + transition: 0.3s ease; +} + +.mdx-accordion-item--open { + .mdx-accordion-item__content { + height: auto; + padding-bottom: 1.875rem; + } +} + +@include utils.responsive('lg', 'down') { +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/AccordionItem.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/AccordionItem.tsx new file mode 100644 index 0000000..80fb32a --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/AccordionItem.tsx @@ -0,0 +1,72 @@ +import clsx from 'clsx' +import React, { useEffect, useState } from 'react' +import './AccordionItem.scss' +import { Typography } from '@acid-info/lsd-react' +import { IconAdd, IconRemove } from '../../Icon' +import uniqueId from 'lodash/uniqueId' + +export type AccordionItemProps = Omit< + React.HTMLProps, + 'title' +> & { + open?: boolean + title: React.ReactNode + onToggle?: (open: boolean) => void +} + +export const AccordionItem: React.FC = ({ + open: openProp, + onToggle, + title, + className, + children, + ...props +}) => { + const id = uniqueId('accordion-item-') + const [open, setOpen] = useState(openProp ?? false) + + if (typeof openProp !== 'undefined' && openProp !== open) { + setOpen(openProp) + } + + const handleToggle = () => { + if (typeof openProp !== 'undefined') { + onToggle && onToggle(!open) + } else { + setOpen((val) => !val) + } + } + + return ( +
+ +
handleToggle()} + > + + {title} + +
+ {open ? : } +
+
+
+
{children}
+
+
+ ) +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/index.ts b/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/index.ts new file mode 100644 index 0000000..61f1abb --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/AccordionItem/index.ts @@ -0,0 +1 @@ +export * from './AccordionItem' diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts b/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts index d07a10b..f4f6faa 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts @@ -1,3 +1,4 @@ +export * from './AccordionItem' export * from './AppCard' export * from './AssetCard' export * from './Box' diff --git a/packages/logos-docusaurus-theme/src/client/static/icons/add.svg b/packages/logos-docusaurus-theme/src/client/static/icons/add.svg new file mode 100644 index 0000000..a75d367 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/static/icons/add.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/logos-docusaurus-theme/src/client/static/icons/remove.svg b/packages/logos-docusaurus-theme/src/client/static/icons/remove.svg new file mode 100644 index 0000000..6129138 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/static/icons/remove.svg @@ -0,0 +1,3 @@ + + +