Skip to content

Commit aab295f

Browse files
authored
chore: Update tokens to use multi-layer drop shadows (#7965)
* chore: Test S2 multi-layer drop shadows * fix filter order * Update tokens
1 parent 4a56286 commit aab295f

File tree

8 files changed

+36
-27
lines changed

8 files changed

+36
-27
lines changed

packages/@react-spectrum/s2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140
"postpack": "git checkout -- package.json"
141141
},
142142
"devDependencies": {
143-
"@adobe/spectrum-tokens": "^13.10.0",
143+
"@adobe/spectrum-tokens": "^13.15.1",
144144
"@parcel/macros": "^2.16.0",
145145
"@react-aria/test-utils": "^1.0.0-alpha.8",
146146
"@storybook/jest": "^0.2.3",

packages/@react-spectrum/s2/src/ActionBar.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {DOMRef, DOMRefValue, Key} from '@react-types/shared';
1919
import {FocusScope, useKeyboard} from 'react-aria';
2020
// @ts-ignore
2121
import intlMessages from '../intl/*.json';
22-
import {style} from '../style' with {type: 'macro'};
22+
import {lightDark, style} from '../style' with {type: 'macro'};
2323
import {useControlledState} from '@react-stately/utils';
2424
import {useDOMRef} from '@react-spectrum/utils';
2525
import {useEnterAnimation, useExitAnimation, useObjectRef, useResizeObserver} from '@react-aria/utils';
@@ -40,9 +40,8 @@ const actionBarStyles = style({
4040
boxSizing: 'border-box',
4141
outlineStyle: 'solid',
4242
outlineWidth: 1,
43-
outlineOffset: -1,
4443
outlineColor: {
45-
default: 'gray-200',
44+
default: lightDark('transparent-white-25', 'gray-200'),
4645
isEmphasized: 'transparent',
4746
forcedColors: 'ButtonBorder'
4847
},

packages/@react-spectrum/s2/src/Menu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ function SubmenuTrigger(props: SubmenuTriggerProps): JSX.Element {
582582
return (
583583
<AriaSubmenuTrigger {...props}>
584584
{props.children[0]}
585-
<PopoverContext.Provider value={{hideArrow: true, offset: -2, crossOffset: -9, placement: 'end top'}}>
585+
<PopoverContext.Provider value={{hideArrow: true, offset: -2, crossOffset: -8, placement: 'end top'}}>
586586
{props.children[1]}
587587
</PopoverContext.Provider>
588588
</AriaSubmenuTrigger>

packages/@react-spectrum/s2/src/Popover.tsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import {colorScheme, getAllowedOverrides, StyleProps, UnsafeStyles} from './styl
2525
import {ColorSchemeContext} from './Provider';
2626
import {createContext, forwardRef, MutableRefObject, useCallback, useContext} from 'react';
2727
import {DOMRef, DOMRefValue, GlobalDOMAttributes} from '@react-types/shared';
28+
import {lightDark, style} from '../style' with {type: 'macro'};
2829
import {mergeStyles} from '../style/runtime';
29-
import {style} from '../style' with {type: 'macro'};
3030
import {StyleString} from '../style/types' with {type: 'macro'};
3131
import {useDOMRef} from '@react-spectrum/utils';
3232
import {useSpectrumContextProps} from './useSpectrumContextProps';
@@ -64,10 +64,10 @@ let popover = style({
6464
default: 'elevated',
6565
isArrowShown: 'none'
6666
},
67-
borderStyle: 'solid',
68-
borderWidth: 1,
69-
borderColor: {
70-
default: 'gray-200',
67+
outlineStyle: 'solid',
68+
outlineWidth: 1,
69+
outlineColor: {
70+
default: lightDark('transparent-white-25', 'gray-200'),
7171
forcedColors: 'ButtonBorder'
7272
},
7373
width: {
@@ -120,8 +120,7 @@ let popover = style({
120120
isolation: 'isolate',
121121
pointerEvents: {
122122
isExiting: 'none'
123-
},
124-
outlineStyle: 'none'
123+
}
125124
}, getAllowedOverrides());
126125
// TODO: animations and real Popover Arrow
127126

@@ -147,7 +146,7 @@ let arrow = style({
147146
},
148147
strokeWidth: 1,
149148
stroke: {
150-
default: 'gray-200',
149+
default: lightDark('transparent-white-25', 'gray-200'),
151150
forcedColors: 'ButtonBorder'
152151
}
153152
});

packages/@react-spectrum/s2/style/spectrum-theme.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import {ArbitraryProperty, Color, createTheme, ExpandedProperty, MappedProperty, parseArbitraryValue, PercentageProperty, SizingProperty} from './style-macro';
1414
import {ArbitraryValue, CSSProperties, CSSValue, PropertyValueDefinition, PropertyValueMap, Value} from './types';
15-
import {autoStaticColor, ColorRef, colorScale, ColorToken, colorToken, fontSizeToken, generateOverlayColorScale, getToken, rawColorToken, simpleColorScale, weirdColorToken} from './tokens' with {type: 'macro'};
15+
import {autoStaticColor, ColorRef, colorScale, ColorToken, colorToken, fontSizeToken, generateOverlayColorScale, getToken, shadowToken, simpleColorScale, weirdColorToken} from './tokens' with {type: 'macro'};
1616
import type * as CSS from 'csstype';
1717

1818
interface MacroContext {
@@ -834,15 +834,16 @@ export const style = createTheme({
834834

835835
// effects
836836
boxShadow: {
837-
emphasized: `${getToken('drop-shadow-emphasized-default-x')} ${getToken('drop-shadow-emphasized-default-y')} ${getToken('drop-shadow-emphasized-default-blur')} ${rawColorToken('drop-shadow-emphasized-default-color')}`,
838-
elevated: `${getToken('drop-shadow-elevated-x')} ${getToken('drop-shadow-elevated-y')} ${getToken('drop-shadow-elevated-blur')} ${rawColorToken('drop-shadow-elevated-color')}`,
839-
dragged: `${getToken('drop-shadow-dragged-x')} ${getToken('drop-shadow-dragged-y')} ${getToken('drop-shadow-dragged-blur')} ${rawColorToken('drop-shadow-dragged-color')}`,
837+
emphasized: shadowToken('drop-shadow-emphasized').join(', '),
838+
elevated: shadowToken('drop-shadow-elevated').join(', '),
839+
dragged: shadowToken('drop-shadow-dragged').join(', '),
840840
none: 'none'
841841
},
842842
filter: {
843-
emphasized: `drop-shadow(${getToken('drop-shadow-emphasized-default-x')} ${getToken('drop-shadow-emphasized-default-y')} ${getToken('drop-shadow-emphasized-default-blur')} ${rawColorToken('drop-shadow-emphasized-default-color')})`,
844-
elevated: `drop-shadow(${getToken('drop-shadow-elevated-x')} ${getToken('drop-shadow-elevated-y')} ${getToken('drop-shadow-elevated-blur')} ${rawColorToken('drop-shadow-elevated-color')})`,
845-
dragged: `drop-shadow${getToken('drop-shadow-dragged-x')} ${getToken('drop-shadow-dragged-y')} ${getToken('drop-shadow-dragged-blur')} ${rawColorToken('drop-shadow-dragged-color')}`,
843+
// layer order is reversed for filter property. filters are applied in the order they are specified.
844+
emphasized: shadowToken('drop-shadow-emphasized').reverse().map(s => `drop-shadow(${s})`).join(' '),
845+
elevated: shadowToken('drop-shadow-elevated').reverse().map(s => `drop-shadow(${s})`).join(' '),
846+
dragged: shadowToken('drop-shadow-dragged').reverse().map(s => `drop-shadow(${s})`).join(' '),
846847
none: 'none'
847848
},
848849
borderTopStartRadius: new MappedProperty('borderStartStartRadius', radius),

packages/@react-spectrum/s2/style/tokens.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
*/
1212

1313
// package.json in this directory is not the real package.json. Lint rule not smart enough.
14+
import assert from 'assert';
1415
// eslint-disable-next-line rulesdir/imports
1516
import * as tokens from '@adobe/spectrum-tokens/dist/json/variables.json';
1617

@@ -168,3 +169,12 @@ export function fontSizeToken(name: keyof typeof tokens): number {
168169

169170
return index;
170171
}
172+
173+
export function shadowToken(name: 'drop-shadow-emphasized' | 'drop-shadow-elevated' | 'drop-shadow-dragged'): string[] {
174+
let token = tokens[name];
175+
return token.value.map(layer => {
176+
// Spread must also be zero, since filter: drop-shadow() does not support it.
177+
assert.equal(layer.spread, '0px');
178+
return `${layer.x} ${layer.y} ${layer.blur} light-dark(${layer.color.sets.light.value}, ${layer.color.sets.dark.value})`;
179+
});
180+
}

packages/dev/parcel-transformer-s2-icon/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"parcel": "^2.0.0"
77
},
88
"dependencies": {
9-
"@adobe/spectrum-tokens": "^13.10.0",
9+
"@adobe/spectrum-tokens": "^13.15.1",
1010
"@parcel/plugin": "^2.0.0",
1111
"@svgr/core": "^8.1.0",
1212
"@svgr/plugin-jsx": "^8.1.0",

yarn.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ __metadata:
148148
languageName: unknown
149149
linkType: soft
150150

151-
"@adobe/spectrum-tokens@npm:^13.10.0":
152-
version: 13.10.0
153-
resolution: "@adobe/spectrum-tokens@npm:13.10.0"
154-
checksum: 10c0/1bd8007826ef22292ffd0eab96b5a7d90aa1619adccdc141991d08d3b48bc62cdd2eacc57a63bd6c5ab4eb1e52d081f619bac9b8bad2eafe4efad0073c5ef266
151+
"@adobe/spectrum-tokens@npm:^13.15.1":
152+
version: 13.15.1
153+
resolution: "@adobe/spectrum-tokens@npm:13.15.1"
154+
checksum: 10c0/745543f734fc9a4a69f3eb93b05370e6591dd034f0ac79b85b9a9089ae0cbd7a166633bb562f25eab4cc377e6136648de7e052e600ed8a03f6e306c6dc1e19ed
155155
languageName: node
156156
linkType: hard
157157

@@ -7337,7 +7337,7 @@ __metadata:
73377337
version: 0.0.0-use.local
73387338
resolution: "@react-spectrum/parcel-transformer-s2-icon@workspace:packages/dev/parcel-transformer-s2-icon"
73397339
dependencies:
7340-
"@adobe/spectrum-tokens": "npm:^13.10.0"
7340+
"@adobe/spectrum-tokens": "npm:^13.15.1"
73417341
"@parcel/plugin": "npm:^2.0.0"
73427342
"@svgr/core": "npm:^8.1.0"
73437343
"@svgr/plugin-jsx": "npm:^8.1.0"
@@ -7504,7 +7504,7 @@ __metadata:
75047504
version: 0.0.0-use.local
75057505
resolution: "@react-spectrum/s2@workspace:packages/@react-spectrum/s2"
75067506
dependencies:
7507-
"@adobe/spectrum-tokens": "npm:^13.10.0"
7507+
"@adobe/spectrum-tokens": "npm:^13.15.1"
75087508
"@internationalized/date": "npm:^3.9.0"
75097509
"@internationalized/number": "npm:^3.6.5"
75107510
"@parcel/macros": "npm:^2.16.0"

0 commit comments

Comments
 (0)