diff --git a/packages/docusaurus-playground/docusaurus.config.js b/packages/docusaurus-playground/docusaurus.config.js index 6b94846..4ae8ea2 100644 --- a/packages/docusaurus-playground/docusaurus.config.js +++ b/packages/docusaurus-playground/docusaurus.config.js @@ -28,7 +28,7 @@ const config = { '@acid-info/logos-docusaurus-preset', /** @type {import('@acid-info/logos-docusaurus-preset').PluginOptions} */ ({ - businessUnit: 'Nimbus', + businessUnit: 'Waku', theme: { name: 'default', options: { @@ -37,6 +37,7 @@ const config = { }, docs: { routeBasePath: '/docs', + breadcrumbs: false, versions: { current: { label: 'current', diff --git a/packages/docusaurus-playground/src/pages/index.mdx b/packages/docusaurus-playground/src/pages/index.mdx index d78fde3..2bb1e00 100644 --- a/packages/docusaurus-playground/src/pages/index.mdx +++ b/packages/docusaurus-playground/src/pages/index.mdx @@ -9,6 +9,7 @@ import { Showcase, HeroModel, HeroInfo, + Box, } from '../components/mdx' @@ -70,39 +71,71 @@ import { ]} /> - + + + - + + + - + + + + + + + + + + + diff --git a/packages/docusaurus-playground/static/showcase/the-graph-mark-white.svg b/packages/docusaurus-playground/static/showcase/the-graph-mark-white.svg new file mode 100644 index 0000000..b742361 --- /dev/null +++ b/packages/docusaurus-playground/static/showcase/the-graph-mark-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/Box/Box.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/Box/Box.scss new file mode 100644 index 0000000..d0888c8 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/Box/Box.scss @@ -0,0 +1,32 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + +.mdx-box { + padding-top: var(--mdx-box-top); + padding-bottom: var(--mdx-box-bottom); + + @include utils.responsive('xs', 'up') { + --mdx-box-top: var(--mdx-box-top-xs); + --mdx-box-bottom: var(--mdx-box-bottom-xs); + } + + @include utils.responsive('sm', 'up') { + --mdx-box-top: var(--mdx-box-top-sm); + --mdx-box-bottom: var(--mdx-box-bottom-sm); + } + + @include utils.responsive('md', 'up') { + --mdx-box-top: var(--mdx-box-top-md); + --mdx-box-bottom: var(--mdx-box-bottom-md); + } + + @include utils.responsive('lg', 'up') { + --mdx-box-top: var(--mdx-box-top-lg); + --mdx-box-bottom: var(--mdx-box-bottom-lg); + } + + @include utils.responsive('xl', 'up') { + --mdx-box-top: var(--mdx-box-top-xl); + --mdx-box-bottom: var(--mdx-box-bottom-xl); + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/Box/Box.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/Box/Box.tsx new file mode 100644 index 0000000..b6162e6 --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/Box/Box.tsx @@ -0,0 +1,68 @@ +import clsx from 'clsx' +import React from 'react' +import { makeStyle } from '../../../lib/makeStyle' +import './Box.scss' + +type BreakpointsStyle = { + xs?: T + sm?: T + md?: T + lg?: T + xl?: T +} + +function vars( + key: string, + _val: BreakpointsStyle | string | number, + defaultValue: string | number, + unit?: string, +) { + const val = + typeof _val === 'string' || typeof _val === 'number' ? { xs: _val } : _val + + const variables: string[][] = [] + + const format = (value: any) => { + return typeof value === 'number' && unit ? `${value}${unit}` : `${value}` + } + + ;['xs', 'sm', 'md', 'lg', 'xl'].forEach((bp, index) => { + const value = val[bp] + if (!value) { + const prev = variables[index - 1]?.[1] + variables.push([`${key}-${bp}`, prev ? prev : format(defaultValue)]) + } else variables.push([`${key}-${bp}`, format(value)]) + }) + + return Object.fromEntries(variables) +} + +export type BoxProps = React.HTMLAttributes & { + top?: BreakpointsStyle | number + bottom?: BreakpointsStyle | number +} + +export const Box: React.FC = ({ + top = 0, + bottom = 0, + className, + style = {}, + children, + ...props +}) => { + return ( +
+ {children} +
+ ) +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/Box/index.ts b/packages/logos-docusaurus-theme/src/client/components/mdx/Box/index.ts new file mode 100644 index 0000000..332601e --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/Box/index.ts @@ -0,0 +1 @@ +export * from './Box' diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.scss index 60b1fe6..2a8dbb3 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.scss @@ -1,8 +1,8 @@ @use '../../../css/utils'; +@use '../../../css/lsd'; .mdx-cta-section { display: grid; - margin-top: 216px; border-top: 1px solid rgb(var(--lsd-border-primary)); } @@ -57,3 +57,36 @@ } } } + +@include utils.responsive('lg', 'down') { + .mdx-cta-section { + display: flex; + flex-direction: column; + align-items: flex-start; + } + + .mdx-cta-section__title { + @include lsd.typography('subtitle1'); + margin-top: 1rem; + } + + .mdx-cta-section__description { + @include lsd.typography('h5'); + margin-top: 1.5rem !important; + } + + .mdx-cta-section__link { + @include lsd.typography('label2'); + margin-top: 2rem; + + button { + padding: 6px 12px; + } + } + + .mdx-cta-section:not(.mdx-cta-section--with-description) { + .mdx-cta-section__title { + @include lsd.typography('h5'); + } + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.tsx index 0917340..95257a7 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.tsx +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/CallToActionSection/CallToActionSection.tsx @@ -28,8 +28,6 @@ export const CallToActionSection: React.FC = ({ return (
= ({ > {title} @@ -48,7 +46,7 @@ export const CallToActionSection: React.FC = ({ {description && ( {description} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.scss index 7605a8e..ba53c85 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.scss @@ -1,3 +1,6 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + .mdx-feature-list { border-top: 1px solid rgb(var(--lsd-surface-secondary)); position: relative; @@ -44,3 +47,48 @@ .mdx-feature-list__feature-description { margin-top: 8.625rem; } + +@include utils.responsive('lg', 'down') { + .mdx-feature-list { + } + + .mdx-feature-list__title { + @include lsd.typography('subtitle1'); + padding: 1rem 0; + } + + .mdx-feature-list__list { + grid-template-columns: 1fr; + } + + .mdx-feature-list__feature { + border: none; + padding: 1.5rem 0; + border-top: 1px solid rgb(var(--lsd-border-primary)); + + .mdx-feature-list__feature-index { + @include lsd.typography('subtitle2'); + width: 1.625rem; + height: 1.625rem; + } + + .mdx-feature-list__feature-title { + @include lsd.typography('h5'); + margin-top: 1rem; + } + + .mdx-feature-list__feature-description { + @include lsd.typography('subtitle1'); + margin-top: 3rem; + } + + .mdx-feature-list__feature-inner { + } + + &:nth-child(odd) { + .mdx-feature-list__feature-inner { + border: none; + } + } + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.tsx index c4784bc..d793808 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.tsx +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/FeatureList/FeatureList.tsx @@ -27,7 +27,7 @@ export const FeatureList: React.FC = ({
{title} @@ -45,14 +45,14 @@ export const FeatureList: React.FC = ({ {feature.title} {feature.description} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/Hero/Hero.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/Hero/Hero.scss index 6527679..c312407 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/Hero/Hero.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/Hero/Hero.scss @@ -1,6 +1,5 @@ .mdx-hero { position: relative; - border-top: 1px solid rgb(var(--lsd-surface-secondary)); } .mdx-hero--large { diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroAction/HeroAction.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroAction/HeroAction.scss index 9c326e6..9faed4e 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroAction/HeroAction.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroAction/HeroAction.scss @@ -1,4 +1,4 @@ -@use '../../../css/lsd'; +@use '../../../css/utils'; .mdx-hero-action { } @@ -8,3 +8,11 @@ padding: 10px 64px; } } + +@include utils.responsive('lg', 'down') { + .mdx-hero-action { + button { + padding: 6px 12px !important; + } + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroActions/HeroActions.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroActions/HeroActions.scss index 23efa06..6769c9e 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroActions/HeroActions.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroActions/HeroActions.scss @@ -1,3 +1,5 @@ +@use '../../../css/utils'; + .mdx-hero-actions { margin-top: 2rem; display: flex; @@ -8,3 +10,20 @@ position: relative; z-index: 98; } + +@include utils.responsive('lg', 'down') { + .mdx-hero-actions { + width: 100%; + margin-top: 1.5rem; + display: flex; + flex-direction: row; + align-items: center; + justify-content: stretch; + + > a, + > a > button { + display: block; + width: 100%; + } + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroDescription/HeroDescription.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroDescription/HeroDescription.scss index a5e6e43..c37e23f 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroDescription/HeroDescription.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroDescription/HeroDescription.scss @@ -1,3 +1,6 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + .mdx-hero-description { z-index: -2; } @@ -7,6 +10,16 @@ } .mdx-hero-description--large { - font-size: 5.0625rem !important; - line-height: 5.5rem !important; + // font-size: 5.0625rem !important; + // line-height: 5.5rem !important; +} + +@include utils.responsive('lg', 'down') { + .mdx-hero-description { + @include lsd.typography('h3'); + } + + .mdx-hero-description--large { + font-size: 1.875rem !important; + } } diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroTitle/HeroTitle.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroTitle/HeroTitle.scss index d38a9df..0e7e830 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/HeroTitle/HeroTitle.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/HeroTitle/HeroTitle.scss @@ -1,3 +1,6 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + .mdx-hero-title { font-weight: 300 !important; z-index: -2; @@ -11,3 +14,13 @@ .mdx-hero-title--uppercase { text-transform: uppercase; } + +@include utils.responsive('lg', 'down') { + .mdx-hero-title { + @include lsd.typography('h3'); + } + + .mdx-hero-title--large { + font-size: 1.875rem !important; + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.scss b/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.scss index 258efe0..681d4de 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.scss +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.scss @@ -1,6 +1,11 @@ +@use '../../../css/utils'; +@use '../../../css/lsd'; + .mdx-showcase { + width: 100%; + overflow: hidden; display: grid; - grid-template-columns: repeat(3, 1fr); + grid-template-columns: repeat(4, 1fr); gap: 1rem; } @@ -24,3 +29,23 @@ margin-top: 24px; padding-top: 16px; } + +@include utils.responsive('lg', 'down') { + .mdx-showcase { + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem 1rem; + } + + .mdx-showcase__item-name { + @include lsd.typography('h6'); + } + + .mdx-showcase__item-description { + margin-top: 1rem; + } + + .mdx-showcase__item-logo { + width: 34px; + height: auto; + } +} diff --git a/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.tsx b/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.tsx index e01708f..00ff5a3 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.tsx +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/Showcase/Showcase.tsx @@ -34,7 +34,7 @@ export const Showcase: React.FC = ({ /> {item.name} 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 44f7474..5cb48d7 100644 --- a/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts +++ b/packages/logos-docusaurus-theme/src/client/components/mdx/index.ts @@ -1,10 +1,11 @@ +export * from './Box' export * from './CallToActionSection' export * from './FeatureList' export * from './Hero' export * from './HeroAction' export * from './HeroActions' export * from './HeroDescription' +export * from './HeroInfo' export * from './HeroModel' export * from './HeroTitle' export * from './Showcase' -export * from './HeroInfo' diff --git a/packages/logos-docusaurus-theme/src/client/lib/makeStyle.ts b/packages/logos-docusaurus-theme/src/client/lib/makeStyle.ts new file mode 100644 index 0000000..2b6d53e --- /dev/null +++ b/packages/logos-docusaurus-theme/src/client/lib/makeStyle.ts @@ -0,0 +1,13 @@ +import React from 'react' + +export const makeStyle = ( + style: React.CSSProperties, + vars: Record = {}, +) => + ({ + ...style, + ...Object.entries(vars).reduce( + (value, [name, val]) => ({ ...value, [`--${name}`]: val }), + {}, + ), + } as React.CSSProperties)