hensei-web/components/common/Toast/index.tsx
Justin Edmund d880643fca Fix TypeScript errors for production build
- Fixed nullable searchParams with optional chaining and fallbacks
- Fixed recency type handling (string from URL, number internally)
- Removed duplicate Party/User interface definitions, use global types
- Fixed error handling in API routes with proper type checking
- Fixed props access in UI components (placeholder, content types)
- Added missing required props to components
- Fixed type mismatches with next-intl rich text interpolation
2025-09-04 00:12:10 -07:00

52 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { PropsWithChildren } from 'react'
import classNames from 'classnames'
import * as ToastPrimitive from '@radix-ui/react-toast'
import styles from './index.module.scss'
interface Props extends Omit<ToastPrimitive.ToastProps, 'content'> {
altText: string
className?: string
title?: string
content: React.ReactNode
onCloseClick: () => void
}
const Toast = ({
altText,
children,
title,
content,
...props
}: PropsWithChildren<Props>) => {
const { onCloseClick, ...toastProps } = props
const classes = classNames(props.className, {
[styles.toast]: true,
})
return (
<ToastPrimitive.Root {...toastProps} className={classes}>
{title && (
<div className={styles.header}>
<ToastPrimitive.Title asChild>
<h3>{title}</h3>
</ToastPrimitive.Title>
<ToastPrimitive.Close aria-label="Close" onClick={onCloseClick}>
<span aria-hidden>×</span>
</ToastPrimitive.Close>
</div>
)}
<ToastPrimitive.Description asChild>
<p>{content}</p>
</ToastPrimitive.Description>
{children && (
<ToastPrimitive.Action asChild altText={altText}>
{children}
</ToastPrimitive.Action>
)}
</ToastPrimitive.Root>
)
}
export default Toast