Files
web/packages/design-system/lib/components/OldDSButton/index.tsx
Rasmus Langvad d0546926a9 Merged in fix/3697-prettier-configs (pull request #3396)
fix(SW-3691): Setup one prettier config for whole repo

* Setup prettierrc in root and remove other configs


Approved-by: Joakim Jäderberg
Approved-by: Linus Flood
2026-01-07 12:45:50 +00:00

73 lines
1.6 KiB
TypeScript

"use client"
import { Slot } from "@radix-ui/react-slot"
import { Button as ButtonRAC } from "react-aria-components"
import { buttonVariants } from "./variants"
import type { VariantProps } from "class-variance-authority"
import type { ButtonProps as ReactAriaButtonProps } from "react-aria-components"
export interface ButtonPropsRAC
extends
Omit<ReactAriaButtonProps, "isDisabled" | "onClick">,
VariantProps<typeof buttonVariants> {
asChild?: false | undefined | never
disabled?: ReactAriaButtonProps["isDisabled"]
onClick?: ReactAriaButtonProps["onPress"]
}
export interface ButtonPropsSlot
extends
React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof buttonVariants> {
asChild: true
}
export type ButtonProps = ButtonPropsSlot | ButtonPropsRAC
/**
* @deprecated Use `@scandic-hotels/design-system/Button` instead.
*/
export function OldDSButton(props: ButtonProps) {
const {
className,
clean,
intent,
size,
theme,
fullWidth,
wrapping,
variant,
...restProps
} = props
const classNames = buttonVariants({
className,
clean,
intent,
size,
theme,
fullWidth,
wrapping,
variant,
})
if (restProps.asChild) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { asChild, ...slotProps } = restProps
return <Slot className={classNames} {...slotProps} />
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { asChild, onClick, disabled, ...racProps } = restProps
return (
<ButtonRAC
className={classNames}
isDisabled={disabled}
onPress={onClick}
{...racProps}
/>
)
}