diff --git a/.changeset/orange-beds-rhyme.md b/.changeset/orange-beds-rhyme.md new file mode 100644 index 00000000000..0792d828290 --- /dev/null +++ b/.changeset/orange-beds-rhyme.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +TreeView: Increase touch target size for coarse pointers diff --git a/src/TreeView/TreeView.tsx b/src/TreeView/TreeView.tsx index 0659b9412c8..5e714021ea6 100644 --- a/src/TreeView/TreeView.tsx +++ b/src/TreeView/TreeView.tsx @@ -169,12 +169,13 @@ const Item: React.FC = ({ } }} sx={{ + '--toggle-width': '1rem', // 16px position: 'relative', display: 'grid', - gridTemplateColumns: `calc(${level - 1} * 8px) 16px 1fr`, + gridTemplateColumns: `calc(${level - 1} * (var(--toggle-width) / 2)) var(--toggle-width) 1fr`, gridTemplateAreas: `"spacer toggle content"`, width: '100%', - height: 32, + height: '2rem', // 32px fontSize: 1, color: 'fg.default', borderRadius: 2, @@ -182,6 +183,10 @@ const Item: React.FC = ({ '&:hover': { backgroundColor: 'actionListItem.default.hoverBg' }, + '@media (pointer: coarse)': { + '--toggle-width': '1.5rem', // 24px + height: '2.75rem' // 44px + }, // WARNING: styled-components v5.2 introduced a bug that changed // how it expands `&` in CSS selectors. The following selectors // are unnecessarily specific to work around that styled-components bug. diff --git a/src/sx.ts b/src/sx.ts index d62299f6a45..c00a71ed356 100644 --- a/src/sx.ts +++ b/src/sx.ts @@ -11,7 +11,16 @@ export type BetterCssProperties = { : SystemCssProperties[K] } -export type BetterSystemStyleObject = BetterCssProperties | SystemStyleObject +// Support CSS custom properties in the `sx` prop +type CSSCustomProperties = { + [key: `--${string}`]: string | number +} + +type CSSSelectorObject = { + [cssSelector: string]: SystemStyleObject | CSSCustomProperties +} + +export type BetterSystemStyleObject = BetterCssProperties | SystemStyleObject | CSSCustomProperties | CSSSelectorObject export interface SxProp { sx?: BetterSystemStyleObject