diff --git a/.changeset/quick-rockets-sit.md b/.changeset/quick-rockets-sit.md new file mode 100644 index 000000000..7e4d5fa5e --- /dev/null +++ b/.changeset/quick-rockets-sit.md @@ -0,0 +1,11 @@ +--- +'@launchpad-ui/split-button': patch +'@launchpad-ui/inline-edit': patch +'@launchpad-ui/snackbar': patch +'@launchpad-ui/button': patch +'@launchpad-ui/alert': patch +'@launchpad-ui/form': patch +'@launchpad-ui/core': patch +--- + +[Button, SplitButton] Convert to css modules diff --git a/packages/alert/src/styles/Alert.module.css b/packages/alert/src/styles/Alert.module.css index 4a493ca30..4cc835d87 100644 --- a/packages/alert/src/styles/Alert.module.css +++ b/packages/alert/src/styles/Alert.module.css @@ -41,7 +41,7 @@ line-height: 1.25; } -.Alert :global(.ButtonGroup) { +.Alert :global([class*='_ButtonGroup_']) { margin-top: 1.2rem; } @@ -197,7 +197,7 @@ margin-left: auto; } -.Alert-content :global(a:not(.Button)) { +.Alert-content :global(a:not([class*='_Button_'])) { color: var(--lp-color-text-interactive-base); &:hover { diff --git a/packages/button/__tests__/ButtonGroup.spec.tsx b/packages/button/__tests__/ButtonGroup.spec.tsx index 40f8b3bd0..b8067a8c8 100644 --- a/packages/button/__tests__/ButtonGroup.spec.tsx +++ b/packages/button/__tests__/ButtonGroup.spec.tsx @@ -23,7 +23,7 @@ describe('ButtonGroup', () => { ); // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access - expect(container.querySelector('.ButtonGroup--compact')).not.toBeNull(); + expect(container.querySelector('[class*="_ButtonGroup--compact_"]')).not.toBeNull(); expect(screen.getByRole('button', { name: 'One' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Two' })).toBeInTheDocument(); }); @@ -36,7 +36,7 @@ describe('ButtonGroup', () => { ); // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access - expect(container.querySelector('.ButtonGroup--large')).not.toBeNull(); + expect(container.querySelector('[class*="_ButtonGroup--large_"]')).not.toBeNull(); expect(screen.getByRole('button', { name: 'One' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Two' })).toBeInTheDocument(); }); diff --git a/packages/button/src/Button.tsx b/packages/button/src/Button.tsx index f28c2f590..add7998eb 100644 --- a/packages/button/src/Button.tsx +++ b/packages/button/src/Button.tsx @@ -12,7 +12,7 @@ import { Slot } from '@radix-ui/react-slot'; import { cx } from 'classix'; import { isValidElement, cloneElement, forwardRef, memo } from 'react'; -import './styles/Button.css'; +import styles from './styles/Button.module.css'; type ButtonProps = ButtonHTMLAttributes & { isLoading?: boolean; @@ -59,11 +59,10 @@ const ButtonComponent = forwardRef((props, ref) const Component: ElementType = asChild ? Slot : 'button'; const classes = cx( - 'Button', - `Button--${kind}`, - disabled && 'Button--disabled', - size && `Button--${size}`, - fit && 'Button--fit', + styles.Button, + styles[`Button--${kind}`], + size && styles[`Button--${size}`], + fit && styles['Button--fit'], className ); @@ -83,7 +82,7 @@ const ButtonComponent = forwardRef((props, ref) key: 'icon', size: getIconSize(), 'aria-hidden': true, - className: cx(icon.props.className, 'Button-icon'), + className: cx(icon.props.className, styles['Button-icon']), }); const getFinalChildren = (c: ReactNode) => [ diff --git a/packages/button/src/ButtonGroup.tsx b/packages/button/src/ButtonGroup.tsx index 61e6acc84..242eeafd0 100644 --- a/packages/button/src/ButtonGroup.tsx +++ b/packages/button/src/ButtonGroup.tsx @@ -2,7 +2,7 @@ import type { ComponentProps } from 'react'; import { cx } from 'classix'; -import './styles/ButtonGroup.css'; +import styles from './styles/Button.module.css'; type ButtonGroupProps = ComponentProps<'div'> & { spacing?: 'compact' | 'normal' | 'large'; @@ -16,7 +16,7 @@ const ButtonGroup = ({ 'data-test-id': testId = 'button-group', ...rest }: ButtonGroupProps) => { - const classes = cx('ButtonGroup', `ButtonGroup--${spacing}`, className); + const classes = cx(styles.ButtonGroup, styles[`ButtonGroup--${spacing}`], className); return (
diff --git a/packages/button/src/IconButton.tsx b/packages/button/src/IconButton.tsx index 8a87b7582..c91bd413a 100644 --- a/packages/button/src/IconButton.tsx +++ b/packages/button/src/IconButton.tsx @@ -11,7 +11,7 @@ import { Slot } from '@radix-ui/react-slot'; import { cx } from 'classix'; import { isValidElement, cloneElement, forwardRef, memo } from 'react'; -import './styles/Button.css'; +import styles from './styles/Button.module.css'; type IconButtonProps = ButtonHTMLAttributes & { kind?: 'default' | 'primary' | 'destructive' | 'minimal' | 'close'; @@ -41,12 +41,11 @@ const IconButtonComponent = forwardRef((prop const Component: ElementType = asChild ? Slot : 'button'; const classes = cx( - 'IconButton', - 'Button', - 'Button--icon', - `Button--${kind}`, - disabled && 'Button--disabled', - size && `Button--${size}`, + styles.IconButton, + styles.Button, + styles['Button--icon'], + styles[`Button--${kind}`], + size && styles[`Button--${size}`], className ); diff --git a/packages/button/src/UploadButton.tsx b/packages/button/src/UploadButton.tsx index b485bd05e..2a61587d3 100644 --- a/packages/button/src/UploadButton.tsx +++ b/packages/button/src/UploadButton.tsx @@ -1,7 +1,6 @@ import type { ButtonProps } from './Button'; import type { ChangeEventHandler, KeyboardEvent } from 'react'; -import { cx } from 'classix'; import { useRef } from 'react'; import { Button } from './Button'; @@ -25,7 +24,6 @@ const UploadButton = ({ ...rest }: UploadButtonProps) => { const inputRef = useRef(null); - const classes = cx('UploadButton', className); const handleClick = () => { inputRef.current?.click(); @@ -61,10 +59,9 @@ const UploadButton = ({ }; return ( - + -