diff --git a/.chromatic-fc/.parcelrc b/.chromatic-fc/.parcelrc index 81677b70840..86e08486da1 100644 --- a/.chromatic-fc/.parcelrc +++ b/.chromatic-fc/.parcelrc @@ -2,10 +2,16 @@ "extends": "@parcel/config-default", "resolvers": ["@parcel/resolver-glob", "parcel-resolver-storybook", "..."], "transformers": { + "packages/@react-spectrum/s2/{src,stories}/*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": ["parcel-transformer-react-docgen-typescript", "..."], + "illustration:*.svg": ["@react-spectrum/parcel-transformer-s2-icon"], + "packages/@react-spectrum/s2/s2wf-icons/**/*.svg": ["@react-spectrum/parcel-transformer-s2-icon"], "packages/*/*/intl/*.json": ["parcel-transformer-intl"], + // Disable PostCSS from running over style macro output + "packages/@react-spectrum/s2/**/*.css": ["@parcel/transformer-css"], "*.{js,mjs,jsm,jsx,es6,cjs,ts,tsx}": [ "@parcel/transformer-js", "@parcel/transformer-react-refresh-wrap" - ] + ], + "packages/@react-spectrum/s2/**/*.svg": ["@parcel/transformer-svg-react"], } } diff --git a/.chromatic-fc/constants.js b/.chromatic-fc/constants.js index 9fb082ad703..fbc438c9e6c 100644 --- a/.chromatic-fc/constants.js +++ b/.chromatic-fc/constants.js @@ -62,6 +62,9 @@ for (let key in themes) { }; } +export let S2ColorThemes = ['light', 'dark']; +export let S2Backgrounds = ['base', 'layer-1', 'layer-2']; + // Based on https://adobe.sharepoint.com/sites/global/SitePages/Languages%20Supported.aspx export let locales = [ {label: 'Auto', value: ''}, diff --git a/.chromatic-fc/custom-addons/chromatic/index.js b/.chromatic-fc/custom-addons/chromatic/index.js index 1e2df395660..fc05b96dd74 100644 --- a/.chromatic-fc/custom-addons/chromatic/index.js +++ b/.chromatic-fc/custom-addons/chromatic/index.js @@ -1,6 +1,7 @@ -import {expressThemes, locales, scales, themes} from '../../constants'; +import {expressThemes, locales, S2ColorThemes, scales, themes} from '../../constants'; import {makeDecorator} from '@storybook/preview-api'; import {Provider, View} from '@adobe/react-spectrum'; +import {Provider as S2Provider} from '@react-spectrum/s2'; import React, {useEffect} from 'react'; import './disableAnimations.css'; @@ -15,8 +16,7 @@ export const withChromaticProvider = makeDecorator({ } else { selectedLocales = options.locales ? locales.map(l => l.value).slice(1) : ['en-US']; } - let colorSchemes = options.express ? [] : (options.colorSchemes || ['light']); - let scalesToRender = options.scales || ['medium']; + let height; let minHeight; if(isNaN(options.height)) { @@ -25,40 +25,70 @@ export const withChromaticProvider = makeDecorator({ height = options.height; } - let expressTheme = colorSchemes.length === 1 ? expressThemes[colorSchemes[0]] : expressThemes.light; - let expressColorScheme = colorSchemes.length === 1 ? colorSchemes[0].replace(/est$/, '') : 'light'; - let expressScale = scalesToRender.length === 1 ? scalesToRender[0] : 'medium'; - let expressLocale = selectedLocales.length === 1 ? selectedLocales[0] : 'en-US'; + if (context.title.includes('S2/')) { + return + } else { + return + } + } +}); + +function RenderS2({getStory, context, options, selectedLocales, height, minHeight}) { + let colorSchemes = options.colorSchemes || S2ColorThemes; - // do not add a top level provider, each provider variant needs to be independent so that we don't have RTL/LTR styles that interfere with each other - return ( - -
- {colorSchemes.map(colorScheme => - scalesToRender.map(scale => - (colorScheme === 'light' ? selectedLocales : ['en-US']).map(locale => - - -

{`${colorScheme}, ${scale}, ${locale}`}

- {getStory(context)} -
-
- ) - ) - )} - {options.express !== false && - + return ( + +
+ {colorSchemes.map(colorScheme => + (colorScheme === 'light' ? selectedLocales : ['en-US']).map(locale => + +
+

{`${colorScheme}, base, ${locale}`}

+ {getStory(context)} +
+
+ ) + )} +
+
+ ) +} + +function RenderV3({getStory, context, options, selectedLocales, height, minHeight}) { + let colorSchemes = options.express ? [] : (options.colorSchemes || ['light']); + let scalesToRender = options.scales || ['medium']; + let expressTheme = colorSchemes.length === 1 ? expressThemes[colorSchemes[0]] : expressThemes.light; + let expressColorScheme = colorSchemes.length === 1 ? colorSchemes[0].replace(/est$/, '') : 'light'; + let expressScale = scalesToRender.length === 1 ? scalesToRender[0] : 'medium'; + let expressLocale = selectedLocales.length === 1 ? selectedLocales[0] : 'en-US'; + + return ( + +
+ {colorSchemes.map(colorScheme => + scalesToRender.map(scale => + (colorScheme === 'light' ? selectedLocales : ['en-US']).map(locale => + -

express, {expressColorScheme}, {expressScale}, {expressLocale}

+

{`${colorScheme}, ${scale}, ${locale}`}

{getStory(context)}
- } -
-
- ) - } -}); + ) + ) + )} + {options.express !== false && + + +

express, {expressColorScheme}, {expressScale}, {expressLocale}

+ {getStory(context)} +
+
+ } +
+
+ ) +} function DisableAnimations({children, disableAnimations}) { useEffect(() => { diff --git a/.chromatic-fc/main.js b/.chromatic-fc/main.js index 3847aa3d70c..2dad2dbbb83 100644 --- a/.chromatic-fc/main.js +++ b/.chromatic-fc/main.js @@ -4,7 +4,10 @@ module.exports = { name: "storybook-react-parcel", options: {}, }, - stories: ['../packages/**/chromatic-fc/**/*.stories.{js,jsx,ts,tsx}'], + stories: [ + '../packages/**/chromatic-fc/**/*.stories.{js,jsx,ts,tsx}', + '../packages/@react-spectrum/s2/stories/*.stories.@(js|jsx|mjs|ts|tsx)' + ], addons: process.env.NODE_ENV === 'production' ? [] : [ '@storybook/addon-actions', '@storybook/addon-a11y' diff --git a/.chromatic-fc/preview-head.html b/.chromatic-fc/preview-head.html index b55ba3dee9b..9019bc78375 100644 --- a/.chromatic-fc/preview-head.html +++ b/.chromatic-fc/preview-head.html @@ -134,6 +134,12 @@ + + + + + + +