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 ;
},
args: {
- children: Pending,
+ children: 'Pending',
},
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);