Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
5d6ccfd
Deprecate JSON exports
aaronccasanova Sep 29, 2023
6fd5b63
Deprecate tokens export
aaronccasanova Sep 29, 2023
ae1ebe7
Deprecate token group exports
aaronccasanova Sep 29, 2023
b7b9f7c
Remove unused metaThemeDefault import from toValues transform
aaronccasanova Sep 29, 2023
ebea495
Expose metaThemes from Polaris tokens
aaronccasanova Sep 29, 2023
4666c9e
Deprecate metadata object and type exports
aaronccasanova Sep 29, 2023
d84684d
Deprecate Tokens type export
aaronccasanova Sep 29, 2023
ea108e5
Deprecate createExact, getKeyframeNames, getUnit, isKeyOf, rem, remov…
aaronccasanova Sep 29, 2023
1470aae
Rename src/utilities to src/utils
aaronccasanova Sep 29, 2023
94a13e8
Rename getCustomPropertyNames to getThemeVarNames
aaronccasanova Sep 29, 2023
9cc7286
Updated createVar behavior and improved TypeScript validation
aaronccasanova Sep 29, 2023
ac2bc1f
Merge branch 'next' of https://github.com/Shopify/polaris into polari…
aaronccasanova Oct 2, 2023
659ed2e
Add deprecated token utility docs
sophschneider Oct 2, 2023
9f2b5b9
Merge branch 'polaris-tokens-deprecations' of https://github.com/Shop…
aaronccasanova Oct 2, 2023
c6bb60c
Initial isTokenName type guard
aaronccasanova Oct 2, 2023
241e92f
Update isTokenName type guard
aaronccasanova Oct 2, 2023
43b992b
Updated theme creators to apply token to rem conversions
aaronccasanova Oct 2, 2023
2443fb6
Deprecate legacy types and utils
aaronccasanova Oct 2, 2023
c8707a4
Expose metaThemeDefault and MetaTheme
aaronccasanova Oct 2, 2023
89a9fdd
Upgrade Polaris for VS Code
aaronccasanova Oct 2, 2023
6b13634
Expose the default theme
aaronccasanova Oct 3, 2023
b082933
Expose the BreakpointsAliasDirection type
aaronccasanova Oct 3, 2023
652666e
Initial Polaris upgrade
aaronccasanova Oct 3, 2023
a804719
Initial upgrade polaris.shopify.com
aaronccasanova Oct 3, 2023
01a31e3
Upgrade stylelint-polaris
aaronccasanova Oct 3, 2023
d9d4d45
Fix Polaris tokens tests
aaronccasanova Oct 3, 2023
b81487b
Fix polaris-migrator type-check
aaronccasanova Oct 3, 2023
38fc668
Fix type-check
aaronccasanova Oct 3, 2023
da321ea
Add theme context to PolarisTestProvider
aaronccasanova Oct 3, 2023
2c8667b
Merge branch 'next' of https://github.com/Shopify/polaris into polari…
aaronccasanova Oct 3, 2023
2ef3212
Adjust migration guide for Polaris tokens updates
aaronccasanova Oct 3, 2023
a5aa3e0
Merge branch 'next' of https://github.com/Shopify/polaris into polari…
aaronccasanova Oct 3, 2023
8428622
Add changeset entry
aaronccasanova Oct 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/gentle-suns-relax.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@shopify/polaris-tokens': major
---

Deprecated a collection of types, utils, and JSON exports
44 changes: 27 additions & 17 deletions polaris-for-vscode/src/server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import {createVar, metadata} from '@shopify/polaris-tokens';
import type {MetadataGroup} from '@shopify/polaris-tokens';
import type {MetaTheme, MetaTokenGroupShape} from '@shopify/polaris-tokens';
import {
createVarName,
metaThemeDefault,
isTokenName,
} from '@shopify/polaris-tokens';
import {
createConnection,
TextDocuments,
Expand All @@ -19,16 +23,16 @@ const excludedTokenGroupNames = [] as const;

type ExcludedTokenGroupName = typeof excludedTokenGroupNames[number];

type TokenGroupName = Exclude<keyof typeof metadata, ExcludedTokenGroupName>;
type TokenGroupName = Exclude<keyof MetaTheme, ExcludedTokenGroupName>;

const tokenGroups = Object.fromEntries(
Object.entries(metadata).filter(
Object.entries(metaThemeDefault).filter(
([tokenGroupName]) =>
!excludedTokenGroupNames.includes(
tokenGroupName as ExcludedTokenGroupName,
),
),
) as unknown as Omit<typeof metadata, ExcludedTokenGroupName>;
) as unknown as Omit<MetaTheme, ExcludedTokenGroupName>;

type TokenGroupCompletionItems = {
[T in TokenGroupName]: CompletionItem[];
Expand All @@ -39,19 +43,25 @@ type TokenGroupCompletionItems = {
*/
const tokenGroupCompletionItems = Object.fromEntries(
Object.entries(tokenGroups).map(
([tokenGroupName, tokenGroup]: [string, MetadataGroup]) => {
([tokenGroupName, tokenGroup]: [string, MetaTokenGroupShape]) => {
const completionItems: CompletionItem[] = Object.entries(tokenGroup).map(
([tokenName, tokenProperties]): CompletionItem => ({
label: createVar(tokenName),
insertText: `${createVar(tokenName)}`,
detail: tokenProperties.value,
documentation: tokenProperties.description,
filterText: createVar(tokenName),
kind:
tokenGroupName === 'color'
? CompletionItemKind.Color
: CompletionItemKind.Variable,
}),
([tokenName, tokenProperties]): CompletionItem => {
if (!isTokenName(tokenName)) {
throw new Error(`Invalid token name: ${tokenName}`);
}

return {
label: createVarName(tokenName),
insertText: `${createVarName(tokenName)}`,
detail: tokenProperties.value,
documentation: tokenProperties.description,
filterText: createVarName(tokenName),
kind:
tokenGroupName === 'color'
? CompletionItemKind.Color
: CompletionItemKind.Variable,
};
},
);

return [tokenGroupName, completionItems];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import type {FileInfo, API, Options} from 'jscodeshift';
import type {Plugin} from 'postcss';
import postcss from 'postcss';
import valueParser from 'postcss-value-parser';
import {createVar} from '@shopify/polaris-tokens';

import type {NamespaceOptions} from '../../utilities/sass';
import {
Expand Down Expand Up @@ -239,5 +238,7 @@ const propertyMaps = {
};

const polarisCustomPropertyRegEx = new RegExp(
Object.keys(tokenColors).map(createVar).join('|'),
Object.keys(tokenColors)
.map((tokenName) => `--p-${tokenName}`)
.join('|'),
);
8 changes: 4 additions & 4 deletions polaris-migrator/src/utilities/sass.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ import type {
Dimension,
} from 'postcss-value-parser';
import valueParser from 'postcss-value-parser';
import {toPx, getCustomPropertyNames, tokens} from '@shopify/polaris-tokens';
import {toPx, getThemeVarNames, themeDefault} from '@shopify/polaris-tokens';

import {POLARIS_MIGRATOR_COMMENT} from './constants';

const defaultNamespace = '';

const polarisCustomPropertyRegEx = new RegExp(
getCustomPropertyNames(tokens).join('|'),
const themeVarNamesRegExp = new RegExp(
getThemeVarNames(themeDefault).join('|'),
);

function getNamespace(options?: NamespaceOptions) {
Expand Down Expand Up @@ -325,7 +325,7 @@ export function isTransformableDuration(
export function isPolarisVar(node: Node): boolean {
return (
isSassFunction('var', node) &&
polarisCustomPropertyRegEx.test(node.nodes?.[0]?.value ?? '')
themeVarNamesRegExp.test(node.nodes?.[0]?.value ?? '')
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import React, {useRef, useState} from 'react';
import {zIndex} from '@shopify/polaris-tokens';

import {classNames} from '../../../../utilities/css';
import type {ActionListItemDescriptor} from '../../../../types';
Expand All @@ -14,6 +13,7 @@ import {InlineStack} from '../../../InlineStack';
import {Box} from '../../../Box';
import {Tooltip} from '../../../Tooltip';
import {useIsomorphicLayoutEffect} from '../../../../utilities/use-isomorphic-layout-effect';
import {useTheme} from '../../../../utilities/use-theme';

export type ItemProps = ActionListItemDescriptor;

Expand Down Expand Up @@ -155,6 +155,7 @@ export function Item({
}

export const TruncateText = ({children}: {children: string}) => {
const theme = useTheme();
const textRef = useRef<HTMLSpanElement>(null);
const [isOverflowing, setIsOverflowing] = useState(false);
useIsomorphicLayoutEffect(() => {
Expand All @@ -174,7 +175,7 @@ export const TruncateText = ({children}: {children: string}) => {

return isOverflowing ? (
<Tooltip
zIndexOverride={Number(zIndex['z-index-11'])}
zIndexOverride={Number(theme.zIndex['z-index-11'])}
preferredPosition="above"
hoverDelay={1000}
content={children}
Expand Down
80 changes: 42 additions & 38 deletions polaris-react/src/components/Frame/Frame.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import React, {PureComponent, createRef} from 'react';
import type {MouseEvent} from 'react';
import {MobileCancelMajor} from '@shopify/polaris-icons';
import {CSSTransition} from 'react-transition-group';
import {motion} from '@shopify/polaris-tokens';

import {useI18n} from '../../utilities/i18n';
import {useMediaQuery} from '../../utilities/media-query';
Expand All @@ -21,6 +20,7 @@ import type {
ToastID,
ToastPropsWithID,
} from '../../utilities/frame';
import {UseTheme} from '../../utilities/use-theme';

import {
ToastManager,
Expand Down Expand Up @@ -136,44 +136,48 @@ class FrameInner extends PureComponent<CombinedProps, State> {
};

const navigationMarkup = navigation ? (
<TrapFocus trapping={mobileNavShowing}>
<CSSTransition
nodeRef={this.navigationNode}
appear={isNavigationCollapsed}
exit={isNavigationCollapsed}
in={showMobileNavigation}
timeout={parseInt(motion['motion-duration-300'], 10)}
classNames={navTransitionClasses}
>
<div
key="NavContent"
{...mobileNavAttributes}
aria-label={i18n.translate('Polaris.Frame.navigationLabel')}
ref={this.navigationNode}
className={navClassName}
onKeyDown={this.handleNavKeydown}
id={APP_FRAME_NAV}
hidden={mobileNavHidden}
>
{navigation}
<button
type="button"
className={styles.NavigationDismiss}
onClick={this.handleNavigationDismiss}
aria-hidden={
mobileNavHidden ||
(!isNavigationCollapsed && !showMobileNavigation)
}
aria-label={i18n.translate(
'Polaris.Frame.Navigation.closeMobileNavigationLabel',
)}
tabIndex={tabIndex}
<UseTheme>
{(theme) => (
<TrapFocus trapping={mobileNavShowing}>
<CSSTransition
nodeRef={this.navigationNode}
appear={isNavigationCollapsed}
exit={isNavigationCollapsed}
in={showMobileNavigation}
timeout={parseInt(theme.motion['motion-duration-300'], 10)}
classNames={navTransitionClasses}
>
<Icon source={MobileCancelMajor} />
</button>
</div>
</CSSTransition>
</TrapFocus>
<div
key="NavContent"
{...mobileNavAttributes}
aria-label={i18n.translate('Polaris.Frame.navigationLabel')}
ref={this.navigationNode}
className={navClassName}
onKeyDown={this.handleNavKeydown}
id={APP_FRAME_NAV}
hidden={mobileNavHidden}
>
{navigation}
<button
type="button"
className={styles.NavigationDismiss}
onClick={this.handleNavigationDismiss}
aria-hidden={
mobileNavHidden ||
(!isNavigationCollapsed && !showMobileNavigation)
}
aria-label={i18n.translate(
'Polaris.Frame.Navigation.closeMobileNavigationLabel',
)}
tabIndex={tabIndex}
>
<Icon source={MobileCancelMajor} />
</button>
</div>
</CSSTransition>
</TrapFocus>
)}
</UseTheme>
) : null;

const loadingMarkup =
Expand Down
9 changes: 6 additions & 3 deletions polaris-react/src/components/IndexTable/IndexTable.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, {useRef, useState, useEffect, useCallback, useMemo} from 'react';
import {SortAscendingMajor, SortDescendingMajor} from '@shopify/polaris-icons';
import {CSSTransition} from 'react-transition-group';
import {tokens, toPx, motion} from '@shopify/polaris-tokens';
import {themeDefault, toPx} from '@shopify/polaris-tokens';

import {debounce} from '../../utilities/debounce';
import {useToggle} from '../../utilities/use-toggle';
Expand Down Expand Up @@ -39,6 +39,7 @@ import type {
Width,
TooltipOverlayProps,
} from '../Tooltip';
import {useTheme} from '../../utilities/use-theme';

import {getTableHeadingsBySelector} from './utilities';
import {ScrollContainer, Cell, Row} from './components';
Expand Down Expand Up @@ -146,6 +147,8 @@ function IndexTableBase({
hasZebraStriping,
...restProps
}: IndexTableBaseProps) {
const theme = useTheme();

const {
loading,
bulkSelectState,
Expand Down Expand Up @@ -546,7 +549,7 @@ function IndexTableBase({
<CSSTransition
in={loading}
classNames={loadingTransitionClassNames}
timeout={parseInt(motion['motion-duration-100'], 10)}
timeout={parseInt(theme.motion['motion-duration-100'], 10)}
nodeRef={loadingElement}
appear
unmountOnExit
Expand Down Expand Up @@ -1135,7 +1138,7 @@ const isBreakpointsXS = () => {
return typeof window === 'undefined'
? false
: window.innerWidth <
parseFloat(toPx(tokens.breakpoints['breakpoints-sm']) ?? '');
parseFloat(toPx(themeDefault.breakpoints['breakpoints-sm']) ?? '');
};

function getHeadingKey(heading: IndexTableHeading): string {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import React, {useContext, useRef, useEffect} from 'react';
import type {SetStateAction, Dispatch} from 'react';
import {Transition, CSSTransition} from 'react-transition-group';
import {motion} from '@shopify/polaris-tokens';

import {classNames, variationName} from '../../../../utilities/css';
import {focusFirstFocusableNode} from '../../../../utilities/focus';
Expand All @@ -11,6 +10,7 @@ import {TrapFocus} from '../../../TrapFocus';
import type {ModalSize} from '../../Modal';
import {Text} from '../../../Text';
import {FrameContext} from '../../../../utilities/frame';
import {useTheme} from '../../../../utilities/use-theme';

import styles from './Dialog.scss';

Expand Down Expand Up @@ -43,6 +43,7 @@ export function Dialog({
hasToasts,
...props
}: DialogProps) {
const theme = useTheme();
const containerNode = useRef<HTMLDivElement>(null);
const frameContext = useContext(FrameContext);
let toastMessages;
Expand Down Expand Up @@ -95,7 +96,7 @@ export function Dialog({
nodeRef={containerNode}
mountOnEnter
unmountOnExit
timeout={parseInt(motion['motion-duration-200'], 10)}
timeout={parseInt(theme.motion['motion-duration-200'], 10)}
onEntered={onEntered}
onExited={onExited}
>
Expand Down
Loading