fix: improve useMediaQuery examples
Signed-off-by: Antony Bouyon <antony.bouyon@believe.com>
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
'use client';
|
||||
import { useMediaQuery } from '@backstage/ui/src/hooks/useMediaQuery';
|
||||
import './example.css';
|
||||
|
||||
export function UseMediaQueryThemeExample() {
|
||||
const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
||||
|
||||
return (
|
||||
<div>
|
||||
{isDarkMode ? 'User prefers Dark mode' : 'User prefers Light mode'}
|
||||
</div>
|
||||
<p>{isDarkMode ? 'User prefers Dark mode' : 'User prefers Light mode'}</p>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -17,11 +16,11 @@ export function UseMediaQueryResponsiveExample() {
|
||||
const isDesktop = useMediaQuery('(min-width: 1025px)');
|
||||
|
||||
return (
|
||||
<div>
|
||||
<p>
|
||||
{isMobile && '<MobileLayout />'}
|
||||
{isTablet && '<TabletLayout />'}
|
||||
{isDesktop && '<DesktopLayout />'}
|
||||
</div>
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -31,12 +30,14 @@ export function UseMediaQueryPreferencesExample() {
|
||||
);
|
||||
|
||||
return (
|
||||
<div className={prefersReducedMotion ? 'no-animations' : ''}>Content</div>
|
||||
<p className={prefersReducedMotion ? 'no-animations' : 'animated-border'}>
|
||||
Content
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
export function UseMediaQueryOrientationExample() {
|
||||
const isPortrait = useMediaQuery('(orientation: portrait)');
|
||||
|
||||
return <div>{isPortrait ? 'Portrait mode' : 'Landscape mode'}</div>;
|
||||
return <p>{isPortrait ? 'Portrait mode' : 'Landscape mode'}</p>;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
@keyframes borderSlide {
|
||||
0%,
|
||||
100% {
|
||||
transform: translateX(-90%);
|
||||
}
|
||||
50% {
|
||||
transform: translateX(190%);
|
||||
}
|
||||
}
|
||||
|
||||
.animated-border {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.animated-border::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 50%;
|
||||
height: 2px;
|
||||
background-color: currentColor;
|
||||
animation: borderSlide 5s ease-in-out infinite;
|
||||
}
|
||||
@@ -4,9 +4,12 @@ function MyComponent() {
|
||||
const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
||||
|
||||
return (
|
||||
<div>
|
||||
{isDarkMode ? 'Dark mode enabled' : 'Light mode enabled'}
|
||||
</div>
|
||||
<p>
|
||||
{isDarkMode
|
||||
? 'User prefers Dark mode'
|
||||
: 'User prefers Light mode'
|
||||
}
|
||||
</p>
|
||||
);
|
||||
}`;
|
||||
|
||||
@@ -18,11 +21,11 @@ function ResponsiveLayout() {
|
||||
const isDesktop = useMediaQuery('(min-width: 1025px)');
|
||||
|
||||
return (
|
||||
<div>
|
||||
<p>
|
||||
{isMobile && <MobileLayout />}
|
||||
{isTablet && <TabletLayout />}
|
||||
{isDesktop && <DesktopLayout />}
|
||||
</div>
|
||||
</p>
|
||||
);
|
||||
}`;
|
||||
|
||||
@@ -32,11 +35,9 @@ function AccessibleComponent() {
|
||||
const prefersReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)');
|
||||
|
||||
return (
|
||||
<div
|
||||
className={prefersReducedMotion ? 'no-animations' : ''}
|
||||
>
|
||||
<p className={prefersReducedMotion ? 'no-animations' : 'animated-border'}>
|
||||
Content
|
||||
</div>
|
||||
</p>
|
||||
);
|
||||
}`;
|
||||
|
||||
@@ -46,8 +47,8 @@ function OrientationAware() {
|
||||
const isPortrait = useMediaQuery('(orientation: portrait)');
|
||||
|
||||
return (
|
||||
<div>
|
||||
<p>
|
||||
{isPortrait ? 'Portrait mode' : 'Landscape mode'}
|
||||
</div>
|
||||
</p>
|
||||
);
|
||||
}`;
|
||||
|
||||
@@ -33,6 +33,7 @@ The `useStyles` hook is the core styling utility that processes component defini
|
||||
<CodeBlock code={useStylesUsageSnippet} />
|
||||
|
||||
## Parameters
|
||||
|
||||
<PropsTable data={useStylesPropsDefs} isHook />
|
||||
|
||||
## Return Value
|
||||
@@ -47,7 +48,10 @@ A component definition describes how a component should be styled:
|
||||
|
||||
<CodeBlock code={useStylesDefsSnippet} />
|
||||
|
||||
<Banner variant="info" text="The data-attributes definition should be kebab-case instead of camelCase." />
|
||||
<Banner
|
||||
variant="info"
|
||||
text="The data-attributes definition should be kebab-case instead of camelCase."
|
||||
/>
|
||||
|
||||
### Data Attributes
|
||||
|
||||
@@ -55,5 +59,4 @@ Data attributes enable state-based styling through CSS selectors. The hook autom
|
||||
|
||||
<CodeBlock code={useStylesAttributesSnippet} />
|
||||
|
||||
|
||||
<ChangelogComponent component="use-styles" />
|
||||
|
||||
Reference in New Issue
Block a user