From 794ebf0c0477734bc3b598f78f694ec1d51805e3 Mon Sep 17 00:00:00 2001 From: Paul Timmermann Date: Fri, 20 Mar 2026 15:54:33 +0000 Subject: [PATCH 1/3] feat(Paper): add borderRadius prop --- packages/base/Paper/src/Paper/Paper.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/base/Paper/src/Paper/Paper.tsx b/packages/base/Paper/src/Paper/Paper.tsx index 35bbbcd322..da2f83e2a4 100644 --- a/packages/base/Paper/src/Paper/Paper.tsx +++ b/packages/base/Paper/src/Paper/Paper.tsx @@ -3,9 +3,13 @@ import React, { forwardRef } from 'react' import type { BaseProps } from '@toptal/picasso-shared' import { twMerge } from '@toptal/picasso-tailwind-merge' +export type PaperBorderRadius = 'none' | 'sm' | 'md' | 'full' + export interface Props extends BaseProps, HTMLAttributes { /** Paper elevation shadow */ elevation?: number + /** Border radius of the Paper surface */ + borderRadius?: PaperBorderRadius children: ReactNode } @@ -38,8 +42,15 @@ const shadowsMapping: Record = { 24: 'shadow-24', } +const borderRadiusMapping: Record = { + none: 'rounded-none', + sm: 'rounded-sm', + md: 'rounded-md', + full: 'rounded-full', +} + export const Paper = forwardRef(function Paper( - { elevation = 1, ...props }, + { elevation = 1, borderRadius, ...props }, ref ) { const { className, style, children, ...rest } = props @@ -51,6 +62,7 @@ export const Paper = forwardRef(function Paper( 'bg-white', shadowsMapping[elevation], 'transition-shadow duration-300 delay-0', + borderRadius !== undefined ? borderRadiusMapping[borderRadius] : undefined, className )} style={style} From a17d0d42fdb55fd2363539413b77b37ca6475e12 Mon Sep 17 00:00:00 2001 From: Paul Timmermann Date: Fri, 20 Mar 2026 15:54:40 +0000 Subject: [PATCH 2/3] test(Paper): add borderRadius prop tests --- packages/base/Paper/src/Paper/test.tsx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/base/Paper/src/Paper/test.tsx b/packages/base/Paper/src/Paper/test.tsx index 42e0d701c5..4531fc784d 100644 --- a/packages/base/Paper/src/Paper/test.tsx +++ b/packages/base/Paper/src/Paper/test.tsx @@ -20,4 +20,26 @@ describe('Paper', () => { expect(container).toMatchSnapshot() }) + + describe('borderRadius', () => { + it.each(['none', 'sm', 'md', 'full'] as const)( + 'applies %s border radius class', + borderRadius => { + const { container } = render( + Content + ) + + expect(container.firstChild).toMatchSnapshot() + } + ) + + it('applies no border radius class when borderRadius is not set', () => { + const { container } = render(Content) + + expect(container.firstChild).not.toHaveClass('rounded-none') + expect(container.firstChild).not.toHaveClass('rounded-sm') + expect(container.firstChild).not.toHaveClass('rounded-md') + expect(container.firstChild).not.toHaveClass('rounded-full') + }) + }) }) From 879f1be656e4e072c6f7b3b20a6dd1d9be4824a3 Mon Sep 17 00:00:00 2001 From: Paul Timmermann Date: Fri, 20 Mar 2026 15:54:44 +0000 Subject: [PATCH 3/3] chore: add changeset for Paper borderRadius prop --- .changeset/paper-border-radius-prop.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/paper-border-radius-prop.md diff --git a/.changeset/paper-border-radius-prop.md b/.changeset/paper-border-radius-prop.md new file mode 100644 index 0000000000..b519ba824a --- /dev/null +++ b/.changeset/paper-border-radius-prop.md @@ -0,0 +1,6 @@ +--- +'@toptal/picasso-paper': minor +'@toptal/picasso': minor +--- + +Add `borderRadius` prop to `Paper` component. Accepts `'none' | 'sm' | 'md' | 'full'` and maps to Picasso's Tailwind border-radius scale. Defaults to no border radius (backward compatible).