From a9932589c77ae0a9695ddee48aeaf73906f80b17 Mon Sep 17 00:00:00 2001 From: Hossein Mehrabi Date: Tue, 6 Jun 2023 12:27:14 +0330 Subject: [PATCH] feat: add poweredby mdx component --- .../components/mdx/PoweredBy/PoweredBy.scss | 52 +++++++++++++ .../components/mdx/PoweredBy/PoweredBy.tsx | 76 +++++++++++++++++++ .../client/components/mdx/PoweredBy/index.ts | 1 + .../src/client/components/mdx/index.ts | 1 + 4 files changed, 130 insertions(+) create mode 100644 packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.scss create mode 100644 packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.tsx create mode 100644 packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/index.ts diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.scss new file mode 100644 index 0000000..ae816bc --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.scss @@ -0,0 +1,52 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + +.mdx-powered-by { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0 1rem; +} + +.mdx-powered-by__card { + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 1.5rem 0; +} + +.mdx-powered-by__logo { + height: 40px; + width: auto; +} + +.mdx-powered-by__name { + margin-top: 1rem; +} + +.mdx-powered-by__description { + margin-top: 1.5rem; +} + +.mdx-powered-by__link { + margin-top: 1.5rem; + width: 100%; + + button { + width: 100%; + + & > span { + display: block; + width: 100%; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + } +} + +@include utils.responsive('lg', 'down') { + .mdx-powered-by { + grid-template-columns: 1fr; + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.tsx new file mode 100644 index 0000000..5a67595 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/PoweredBy.tsx @@ -0,0 +1,76 @@ +import { Button, PickIcon, Typography } from '@acid-info/lsd-react' +import { useColorMode } from '@docusaurus/theme-common' +import React from 'react' +import './PoweredBy.scss' + +export type PoweredByItem = { + logoSrc?: string + logoSrcDark?: string + name?: React.ReactNode + description?: React.ReactNode + link?: string + linkLabel?: string +} + +export type PoweredByProps = React.HTMLProps & { + items?: PoweredByItem[] +} + +export const PoweredBy: React.FC = ({ + items = [], + ...props +}) => { + const { colorMode } = useColorMode() + + return ( +
+ {items.map((item, index) => { + const logoSrc = item.logoSrc ?? item.logoSrcDark + + return ( +
+ {logoSrc && ( + {typeof + )} + + {item.name} + + + {item.description} + + {item.link && ( + + + + )} +
+ ) + })} +
+ ) +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/index.ts b/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/index.ts new file mode 100644 index 0000000..607305f --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/PoweredBy/index.ts @@ -0,0 +1 @@ +export * from './PoweredBy' 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 e5b8e6f..b8d58e2 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts @@ -9,5 +9,6 @@ export * from './HeroDescription' export * from './HeroInfo' export * from './HeroModel' export * from './HeroTitle' +export * from './PoweredBy' export * from './ScrollToBottom' export * from './Showcase'