From c667313338663efd21496de2fc48c398ae3abba3 Mon Sep 17 00:00:00 2001 From: Hossein Mehrabi Date: Thu, 14 Dec 2023 18:17:22 +0330 Subject: [PATCH] feat: implement LogoCarousel component --- .../mdx/LogoCarousel/LogoCarousel.scss | 33 ++++++++++ .../mdx/LogoCarousel/LogoCarousel.tsx | 64 +++++++++++++++++++ .../components/mdx/LogoCarousel/index.ts | 1 + .../src/client/components/mdx/index.ts | 1 + 4 files changed, 99 insertions(+) create mode 100644 packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.scss create mode 100644 packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.tsx create mode 100644 packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/index.ts diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.scss new file mode 100644 index 0000000..de08584 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.scss @@ -0,0 +1,33 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + +.mdx-logo-carousel { + .mdx-section-header__title { + flex-basis: 100%; + } + + .mdx-section-header__extra { + margin-left: auto; + } + + .mdx-logo-carousel__inner { + margin-top: 100px; + } + + .mdx-logo-carousel__item { + flex-shrink: 0; + } + + .mdx-logo-carousel__logo { + height: 86px; + width: auto; + } +} + +@include utils.responsive('lg', 'down') { + .mdx-logo-carousel { + .mdx-logo-carousel__inner { + margin-top: 64px; + } + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.tsx new file mode 100644 index 0000000..f0bd9ad --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/LogoCarousel.tsx @@ -0,0 +1,64 @@ +import { Typography } from '@acid-info/lsd-react' +import ThemedImage from '@theme/ThemedImage' +import clsx from 'clsx' +import React, { useRef } from 'react' +import './LogoCarousel.scss' +import { Grid, SectionHeader } from '..' +import { ScrollButtons } from '../ScrollButtons' +import { useHydrated } from '../../../lib/useHydrated' + +export type LogoCarouselProps = Omit< + React.HTMLAttributes, + 'title' +> & { + title?: React.ReactNode + items?: { + title?: string + logoSrc?: string + logoSrcDark?: string + }[] +} + +export const LogoCarousel: React.FC = ({ + title, + className, + items = [], + children, + ...props +}) => { + const hydrated = useHydrated() + const ref = useRef(null) + const containerRef = useRef(null) + + if (typeof window !== 'undefined' && hydrated && !containerRef.current) { + containerRef.current = + ref.current?.querySelector('.mdx-grid__content') ?? null + + console.log(containerRef.current, ref.current) + } + + return ( +
+ + + + + {items.map((item) => ( + + + + ))} + +
+ ) +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/index.ts b/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/index.ts new file mode 100644 index 0000000..0c94203 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/LogoCarousel/index.ts @@ -0,0 +1 @@ +export * from './LogoCarousel' 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 f4f6faa..69ffa92 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts @@ -18,6 +18,7 @@ export * from './HeroModel' export * from './HeroTitle' export * from './HeroVideo' export * from './JobsPerDepartment' +export * from './LogoCarousel' export * from './NewsletterSubscription' export * from './PoweredBy' export * from './ProfileCard'