From 692e65c5d0056402de122a4ab3a297a8a1c84ca6 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Mon, 27 Oct 2025 10:30:00 -0700 Subject: [PATCH 1/5] Adjust heading to fit viewport --- .../s2/style/spectrum-theme.ts | 12 ++- .../dev/s2-docs/pages/s2/SelectBoxGroup.mdx | 3 +- packages/dev/s2-docs/pages/s2/Toast.mdx | 3 +- packages/dev/s2-docs/src/Layout.tsx | 15 ++- packages/dev/s2-docs/src/textWidth.ts | 97 +++++++++++++++++++ 5 files changed, 123 insertions(+), 7 deletions(-) create mode 100644 packages/dev/s2-docs/src/textWidth.ts diff --git a/packages/@react-spectrum/s2/style/spectrum-theme.ts b/packages/@react-spectrum/s2/style/spectrum-theme.ts index c217db1b0cd..b17af0b3fed 100644 --- a/packages/@react-spectrum/s2/style/spectrum-theme.ts +++ b/packages/@react-spectrum/s2/style/spectrum-theme.ts @@ -760,10 +760,14 @@ export const style = createTheme({ code: 'source-code-pro, "Source Code Pro", Monaco, monospace' }, fontSize: new ExpandedProperty(['fontSize', 'lineHeight'], (value) => { - return { - '--fs': `pow(1.125, ${value})`, - fontSize: `round(${fontSizeCalc} / 16 * 1rem, 1px)` - }; + if (typeof value === 'number') { + return { + '--fs': `pow(1.125, ${value})`, + fontSize: `round(${fontSizeCalc} / 16 * 1rem, 1px)` + }; + } + + return {fontSize: value}; }, fontSize), fontWeight: new ExpandedProperty(['fontWeight', 'fontVariationSettings', 'fontSynthesisWeight'], (value) => { return { diff --git a/packages/dev/s2-docs/pages/s2/SelectBoxGroup.mdx b/packages/dev/s2-docs/pages/s2/SelectBoxGroup.mdx index 140e21dba65..49dd45914c4 100644 --- a/packages/dev/s2-docs/pages/s2/SelectBoxGroup.mdx +++ b/packages/dev/s2-docs/pages/s2/SelectBoxGroup.mdx @@ -5,8 +5,9 @@ export default Layout; import docs from 'docs:@react-spectrum/s2'; export const tags = ['box']; +export const version = 'alpha'; -# SelectBoxGroup +# SelectBoxGroup {docs.exports.SelectBoxGroup.description} diff --git a/packages/dev/s2-docs/pages/s2/Toast.mdx b/packages/dev/s2-docs/pages/s2/Toast.mdx index 2ed3f80e3de..c240cbc4750 100644 --- a/packages/dev/s2-docs/pages/s2/Toast.mdx +++ b/packages/dev/s2-docs/pages/s2/Toast.mdx @@ -7,8 +7,9 @@ import {InterfaceType} from '../../src/types'; import {VersionBadge} from '../../src/VersionBadge'; export const tags = ['snackbar', 'notification', 'alert']; +export const version = 'alpha'; -# Toast +# Toast {docs.exports.UNSTABLE_ToastContainer.description} diff --git a/packages/dev/s2-docs/src/Layout.tsx b/packages/dev/s2-docs/src/Layout.tsx index 69491563da7..1ded14699ac 100644 --- a/packages/dev/s2-docs/src/Layout.tsx +++ b/packages/dev/s2-docs/src/Layout.tsx @@ -12,6 +12,7 @@ import {Code} from './Code'; import {CodeBlock} from './CodeBlock'; import {ExampleSwitcher} from './ExampleSwitcher'; import {getLibraryFromPage, getLibraryLabel} from './library'; +import {getTextWidth} from './textWidth'; import {H2, H3, H4} from './Headings'; import Header from './Header'; import {Link} from './Link'; @@ -21,10 +22,21 @@ import {PropTable} from './PropTable'; import {StateTable} from './StateTable'; import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; import {TypeLink} from './types'; +import {VersionBadge} from './VersionBadge'; import {VisualExample} from './VisualExample'; +const h1 = style({ + font: 'heading-3xl', + fontSize: { + // On mobile, adjust heading to fit in the viewport, and clamp between a min and max font size. + default: 'clamp(35px, (100vw - 32px) / var(--width-per-em), 55px)', + lg: 'heading-3xl' + }, + marginY: 0 +}); + const components = { - h1: ({children, ...props}) =>

{children}

, + h1: ({children, ...props}) =>

{children}

, h2: H2, h3: H3, h4: H4, @@ -225,6 +237,7 @@ export function Layout(props: PageProps & {children: ReactElement}) { })}>
+ {currentPage.exports?.version && } {React.cloneElement(children, {components})}