diff --git a/.changeset/sixty-steaks-jump.md b/.changeset/sixty-steaks-jump.md new file mode 100644 index 000000000..7748c803e --- /dev/null +++ b/.changeset/sixty-steaks-jump.md @@ -0,0 +1,5 @@ +--- +"@launchpad-ui/components": minor +--- + +Add spans to button children to fix i8n errors diff --git a/packages/components/src/Button.tsx b/packages/components/src/Button.tsx index 481fa6ea9..32cdd5084 100644 --- a/packages/components/src/Button.tsx +++ b/packages/components/src/Button.tsx @@ -4,12 +4,7 @@ import type { ButtonProps as AriaButtonProps, ContextValue } from 'react-aria-co import { cva } from 'class-variance-authority'; import { createContext, useContext } from 'react'; -import { - Button as AriaButton, - composeRenderProps, - Provider, - TextContext, -} from 'react-aria-components'; +import { Button as AriaButton, composeRenderProps } from 'react-aria-components'; import { PerceivableContext } from './Perceivable'; import { ProgressBar } from './ProgressBar'; @@ -67,12 +62,12 @@ const Button = ({ ref, ...props }: ButtonProps) => { )} > {composeRenderProps(props.children, (children, { isPending }) => ( - + <> {isPending && ( )} - {children} - + {children} + ))} ); diff --git a/packages/components/src/DatePicker.tsx b/packages/components/src/DatePicker.tsx index 24209e035..1a1422904 100644 --- a/packages/components/src/DatePicker.tsx +++ b/packages/components/src/DatePicker.tsx @@ -21,6 +21,7 @@ import { PopoverContext, Provider, Text, + TextContext, useSlottedContext, } from 'react-aria-components'; @@ -181,7 +182,11 @@ const DatePickerValue = () => { const { locale } = useLocale(); const date = state?.formatValue(locale, { month: 'short' }); - return {date}; + return ( + + {date} + + ); }; const DateRangePickerValue = () => { @@ -189,14 +194,18 @@ const DateRangePickerValue = () => { const { locale } = useLocale(); const date = state?.formatValue(locale, { month: 'short' }); - return date?.start === date?.end ? ( - {date?.end} - ) : ( - <> - {date?.start} - - {date?.end} - + return ( + + {date?.start === date?.end ? ( + {date?.end} + ) : ( + <> + {date?.start} + + {date?.end} + + )} + ); }; diff --git a/packages/components/src/styles/Button.module.css b/packages/components/src/styles/Button.module.css index 667ab923c..12af27adc 100644 --- a/packages/components/src/styles/Button.module.css +++ b/packages/components/src/styles/Button.module.css @@ -27,6 +27,14 @@ opacity: 0.64; } +.content { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--lp-spacing-200); + min-width: 0; +} + .small { font: var(--lp-text-label-2-semibold); padding: calc(3px + var(--lp-button-padding, 0px)) var(--lp-spacing-300); @@ -142,15 +150,12 @@ .button[data-pending] { cursor: wait; - & [data-icon] { + & [data-icon], + .content { opacity: 50%; } } -.pending { - opacity: 50%; -} - .progress { --fill-color: currentColor; } @@ -164,4 +169,9 @@ & [data-icon]:last-child { fill: var(--lp-color-fill-ui-secondary); } + + & .content { + flex: 1; + gap: var(--lp-spacing-300); + } } diff --git a/packages/components/src/styles/Group.module.css b/packages/components/src/styles/Group.module.css index e2ced6e42..6687b3e73 100644 --- a/packages/components/src/styles/Group.module.css +++ b/packages/components/src/styles/Group.module.css @@ -33,7 +33,7 @@ fill: var(--lp-color-fill-ui-secondary); } - &[data-disabled] > :where([data-icon]) { + &[data-disabled] :where([data-icon]) { opacity: 0.64; } } diff --git a/packages/components/stories/Button.stories.tsx b/packages/components/stories/Button.stories.tsx index 00fbda272..8eef0c1c3 100644 --- a/packages/components/stories/Button.stories.tsx +++ b/packages/components/stories/Button.stories.tsx @@ -7,7 +7,6 @@ import { useEffect, useRef, useState } from 'react'; import { fireEvent, userEvent, within } from 'storybook/test'; import { Button } from '../src/Button'; -import { Text } from '../src/Text'; const meta: Meta = { component: Button, @@ -75,23 +74,22 @@ const play: PlayFunction = async ({ }; export const Default: Story = { - render: (args) => renderStates({ children: Default, ...args }), + render: (args) => renderStates({ children: 'Default', ...args }), play, }; export const Primary: Story = { - render: (args) => renderStates({ children: Primary, variant: 'primary', ...args }), + render: (args) => renderStates({ children: 'Primary', variant: 'primary', ...args }), play, }; export const Minimal: Story = { - render: (args) => renderStates({ children: Minimal, variant: 'minimal', ...args }), + render: (args) => renderStates({ children: 'Minimal', variant: 'minimal', ...args }), play, }; export const Destructive: Story = { - render: (args) => - renderStates({ children: Destructive, variant: 'destructive', ...args }), + render: (args) => renderStates({ children: 'Destructive', variant: 'destructive', ...args }), play, parameters: { a11y: { @@ -108,7 +106,7 @@ export const WithIcon: Story = { args: { children: ( <> - With icon + With icon ), @@ -116,12 +114,12 @@ export const WithIcon: Story = { }; export const Small: Story = { - render: (args) => renderStates({ children: Default, size: 'small', ...args }), + render: (args) => renderStates({ children: 'Default', size: 'small', ...args }), play, }; export const Large: Story = { - render: (args) => renderStates({ children: Default, size: 'large', ...args }), + render: (args) => renderStates({ children: 'Default', size: 'large', ...args }), play, }; @@ -147,7 +145,7 @@ export const Pending: Story = { return