Skip to content

Commit

Permalink
Revert "feat(Token): Migrate to CSS modules behind feature flag Pt 2 (#…
Browse files Browse the repository at this point in the history
…5271)"

This reverts commit 05db651.
  • Loading branch information
francinelucca committed Dec 5, 2024
1 parent 3b981d9 commit f1f8177
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 310 deletions.
5 changes: 0 additions & 5 deletions .changeset/slow-spoons-peel.md

This file was deleted.

36 changes: 0 additions & 36 deletions packages/react/src/Token/AvatarToken.module.css

This file was deleted.

46 changes: 9 additions & 37 deletions packages/react/src/Token/AvatarToken.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,51 +6,23 @@ import {defaultTokenSize, tokenSizes} from './TokenBase'
import Token from './Token'
import Avatar from '../Avatar'
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
import {toggleStyledComponent} from '../internal/utils/toggleStyledComponent'
import {useFeatureFlag} from '../FeatureFlags'
import classes from './AvatarToken.module.css'
import {clsx} from 'clsx'

// TODO: update props to only accept 'large' and 'xlarge' on the next breaking change
export interface AvatarTokenProps extends TokenBaseProps {
avatarSrc: string
}

const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_team'
const AvatarContainer = styled.span<{avatarSize: TokenSizeKeys}>`
// 'space.1' is used because to match space from the left of the token to the left of the avatar
// '* 2' is done to account for the top and bottom
--spacing: calc(${get('space.1')} * 2);
const AvatarContainer = toggleStyledComponent(
CSS_MODULES_FEATURE_FLAG,
'span',
styled.span<{avatarSize: TokenSizeKeys}>`
// 'space.1' is used because to match space from the left of the token to the left of the avatar
// '* 2' is done to account for the top and bottom
--spacing: calc(${get('space.1')} * 2);
display: block;
height: ${props => `calc(${tokenSizes[props.avatarSize]} - var(--spacing))`};
width: ${props => `calc(${tokenSizes[props.avatarSize]} - var(--spacing))`};
`,
)

const AvatarToken = forwardRef(({avatarSrc, id, size = defaultTokenSize, className, ...rest}, forwardedRef) => {
const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG)
if (enabled) {
return (
<Token
leadingVisual={() => (
<AvatarContainer avatarSize={size} className={classes.AvatarContainer} data-size={size}>
<Avatar src={avatarSrc} size={parseInt(tokenSizes[size], 10)} className={classes.Avatar} />
</AvatarContainer>
)}
size={size}
id={id?.toString()}
className={clsx(classes.Token, className)}
{...rest}
ref={forwardedRef}
/>
)
}
display: block;
height: ${props => `calc(${tokenSizes[props.avatarSize]} - var(--spacing))`};
width: ${props => `calc(${tokenSizes[props.avatarSize]} - var(--spacing))`};
`

const AvatarToken = forwardRef(({avatarSrc, id, size = defaultTokenSize, ...rest}, forwardedRef) => {
return (
<Token
leadingVisual={() => (
Expand Down
8 changes: 0 additions & 8 deletions packages/react/src/Token/IssueLabelToken.module.css

This file was deleted.

39 changes: 0 additions & 39 deletions packages/react/src/Token/IssueLabelToken.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ import {parseToHsla, parseToRgba} from 'color2k'
import {useTheme} from '../ThemeProvider'
import TokenTextContainer from './_TokenTextContainer'
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
import classes from './IssueLabelToken.module.css'
import {useFeatureFlag} from '../FeatureFlags'
import {clsx} from 'clsx'

export interface IssueLabelTokenProps extends TokenBaseProps {
/**
Expand All @@ -19,7 +16,6 @@ export interface IssueLabelTokenProps extends TokenBaseProps {
fillColor?: string
}

const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_team'
const tokenBorderWidthPx = 1

const lightModeStyles = {
Expand Down Expand Up @@ -47,8 +43,6 @@ const darkModeStyles = {
}

const IssueLabelToken = forwardRef((props, forwardedRef) => {
const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG)

const {
as,
fillColor = '#999',
Expand All @@ -60,15 +54,13 @@ const IssueLabelToken = forwardRef((props, forwardedRef) => {
hideRemoveButton,
href,
onClick,
className,
...rest
} = props
const interactiveTokenProps = {
as,
href,
onClick,
}

const {resolvedColorScheme} = useTheme()
const hasMultipleActionTargets = isTokenInteractive(props) && Boolean(onRemove) && !hideRemoveButton
const onRemoveClick: MouseEventHandler = e => {
Expand Down Expand Up @@ -141,37 +133,6 @@ const IssueLabelToken = forwardRef((props, forwardedRef) => {
}
}, [fillColor, resolvedColorScheme, hideRemoveButton, onRemove, isSelected, props])

if (enabled) {
return (
<TokenBase
onRemove={onRemove}
id={id?.toString()}
isSelected={isSelected}
className={clsx(classes.IssueLabel, className)}
text={text}
size={size}
style={labelStyles}
data-has-remove-button={!hideRemoveButton && !!onRemove}
{...(!hasMultipleActionTargets ? interactiveTokenProps : {})}
{...rest}
ref={forwardedRef}
>
<TokenTextContainer {...(hasMultipleActionTargets ? interactiveTokenProps : {})}>{text}</TokenTextContainer>
{!hideRemoveButton && onRemove ? (
<RemoveTokenButton
borderOffset={tokenBorderWidthPx}
onClick={onRemoveClick}
size={size}
aria-hidden={hasMultipleActionTargets ? 'true' : 'false'}
isParentInteractive={isTokenInteractive(props)}
data-has-multiple-action-targets={hasMultipleActionTargets}
className={classes.RemoveButton}
/>
) : null}
</TokenBase>
)
}

return (
<TokenBase
onRemove={onRemove}
Expand Down
21 changes: 0 additions & 21 deletions packages/react/src/Token/Token.module.css

This file was deleted.

58 changes: 4 additions & 54 deletions packages/react/src/Token/Token.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
import type {MouseEventHandler} from 'react'
import React, {forwardRef} from 'react'
import Box from '../Box'
import {merge, type BetterSystemStyleObject, type SxProp} from '../sx'
import type {BetterSystemStyleObject, SxProp} from '../sx'
import {merge} from '../sx'
import {defaultSxProp} from '../utils/defaultSxProp'
import type {TokenBaseProps} from './TokenBase'
import TokenBase, {defaultTokenSize, isTokenInteractive} from './TokenBase'
import RemoveTokenButton from './_RemoveTokenButton'
import TokenTextContainer from './_TokenTextContainer'
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
import VisuallyHidden from '../_VisuallyHidden'
import {useFeatureFlag} from '../FeatureFlags'

import classes from './Token.module.css'
import {clsx} from 'clsx'

// Omitting onResize and onResizeCapture because seems like React 18 types includes these menthod in the expansion but React 17 doesn't.
// TODO: This is a temporary solution until we figure out why these methods are causing type errors.
Expand All @@ -23,8 +20,6 @@ export interface TokenProps extends TokenBaseProps, SxProp {
leadingVisual?: React.ElementType
}

const CSS_MODULES_FEATURE_FLAG = 'primer_react_css_modules_team'

const tokenBorderWidthPx = 1

const LeadingVisualContainer: React.FC<React.PropsWithChildren<Pick<TokenBaseProps, 'size'>>> = ({children, size}) => (
Expand All @@ -40,8 +35,6 @@ const LeadingVisualContainer: React.FC<React.PropsWithChildren<Pick<TokenBasePro
)

const Token = forwardRef((props, forwardedRef) => {
const enabled = useFeatureFlag(CSS_MODULES_FEATURE_FLAG)

const {
as,
onRemove,
Expand All @@ -53,8 +46,6 @@ const Token = forwardRef((props, forwardedRef) => {
href,
onClick,
sx: sxProp = defaultSxProp,
className,
style,
...rest
} = props
const hasMultipleActionTargets = isTokenInteractive(props) && Boolean(onRemove) && !hideRemoveButton
Expand All @@ -67,8 +58,7 @@ const Token = forwardRef((props, forwardedRef) => {
href,
onClick,
}

const mergedSx = merge<BetterSystemStyleObject>(
const sx = merge<BetterSystemStyleObject>(
{
backgroundColor: 'neutral.subtle',
borderColor: props.isSelected ? 'fg.default' : 'border.subtle',
Expand All @@ -90,56 +80,16 @@ const Token = forwardRef((props, forwardedRef) => {
sxProp,
)

if (enabled) {
return (
<TokenBase
onRemove={onRemove}
id={id?.toString()}
className={clsx(className, classes.Token)}
text={text}
size={size}
sx={sxProp}
data-is-selected={props.isSelected}
data-is-remove-btn={!(hideRemoveButton || !onRemove)}
{...(!hasMultipleActionTargets ? interactiveTokenProps : {})}
{...rest}
ref={forwardedRef}
style={{borderWidth: `${tokenBorderWidthPx}px`, ...style}}
>
{LeadingVisual ? (
<LeadingVisualContainer size={size}>
<LeadingVisual />
</LeadingVisualContainer>
) : null}
<TokenTextContainer {...(hasMultipleActionTargets ? interactiveTokenProps : {})}>
{text}
{onRemove && <VisuallyHidden> (press backspace or delete to remove)</VisuallyHidden>}
</TokenTextContainer>

{!hideRemoveButton && onRemove ? (
<RemoveTokenButton
borderOffset={tokenBorderWidthPx}
onClick={onRemoveClick}
size={size}
isParentInteractive={isTokenInteractive(props)}
aria-hidden={hasMultipleActionTargets ? 'true' : 'false'}
/>
) : null}
</TokenBase>
)
}

return (
<TokenBase
onRemove={onRemove}
id={id?.toString()}
text={text}
size={size}
sx={mergedSx}
sx={sx}
{...(!hasMultipleActionTargets ? interactiveTokenProps : {})}
{...rest}
ref={forwardedRef}
style={style}
>
{LeadingVisual ? (
<LeadingVisualContainer size={size}>
Expand Down
60 changes: 0 additions & 60 deletions packages/react/src/Token/TokenBase.module.css

This file was deleted.

Loading

0 comments on commit f1f8177

Please sign in to comment.