## Summary Fixed multiple TypeScript errors that were preventing the production build from completing on Railway. ## Changes Made ### Nullable Type Fixes - Fixed `searchParams.toString()` calls with optional chaining (`?.`) and fallback values - Fixed `pathname` nullable access in UpdateToastClient - Added fallbacks for undefined values in translation interpolations ### Type Consistency Fixes - Fixed recency parameter handling (string from URL, converted to number internally) - Removed duplicate local interface definitions for Party and User types - Fixed Party type mismatches by using global type definitions ### API Route Error Handling - Fixed error type checking in catch blocks for login/signup routes - Added proper type guards for axios error objects ### Component Props Fixes - Fixed RadixSelect.Trigger by removing invalid placeholder prop - Fixed Toast and Tooltip components by using Omit to exclude conflicting content type - Added missing onAdvancedFilter prop to FilterBar components - Fixed PartyFooter props with required parameters ## Test Plan - [x] Fixed all TypeScript compilation errors locally - [ ] Production build should complete successfully on Railway - [ ] All affected components should function correctly 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Claude <noreply@anthropic.com>
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
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
|