Feat(SW-1275) cancel booking my stay * feat(SW-1276) UI implementation Desktop part 1 for MyStay * feat(SW-1276) UI implementation Desktop part 2 for MyStay * feat(SW-1276) UI implementation Mobile part 1 for MyStay * refactor: move files from MyStay/MyStay to MyStay * feat(SW-1276) Sidepeek implementation * feat(SW-1276): Refactoring * feat(SW-1276) UI implementation Mobile part 2 for MyStay * feat(SW-1276): translations * feat(SW-1276) fixed skeleton * feat(SW-1276): Added missing translations * feat(SW-1276) fixed translations * feat(SW-1275) cancel modal * feat(SW-1275): Mutate cancel booking * feat(SW-1275) added translations * feat(SW-1275) match current cancellationReason * feat(SW-1275) Added modal for manage stay * feat(SW-1275) Added missing icon * feat(SW-1275) New Dont cancel button * feat(SW-1275) Added preperation for Cancellation number * feat(SW-1275): added --modal-box-shadow * feat(SW-1718) Add to calendar * feat(SW-1718) general add to calendar Approved-by: Niclas Edenvin
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import { CloseLargeIcon } from "@/components/Icons"
|
|
import Button from "@/components/TempDesignSystem/Button"
|
|
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
|
|
|
|
import styles from "./modalContent.module.css"
|
|
|
|
import type { ReactNode } from "react"
|
|
|
|
interface ModalContentProps {
|
|
title: string
|
|
content: ReactNode
|
|
primaryAction: {
|
|
label: string
|
|
onClick: () => void
|
|
intent?: "primary" | "secondary" | "text"
|
|
isLoading?: boolean
|
|
}
|
|
secondaryAction: {
|
|
label: string
|
|
onClick: () => void
|
|
intent?: "primary" | "secondary" | "text"
|
|
}
|
|
onClose: () => void
|
|
}
|
|
|
|
export function ModalContent({
|
|
title,
|
|
content,
|
|
primaryAction,
|
|
secondaryAction,
|
|
onClose,
|
|
}: ModalContentProps) {
|
|
return (
|
|
<>
|
|
<header className={styles.header}>
|
|
<Subtitle color="uiTextHighContrast">{title}</Subtitle>
|
|
<button onClick={onClose} type="button" className={styles.close}>
|
|
<CloseLargeIcon color="uiTextMediumContrast" />
|
|
</button>
|
|
</header>
|
|
<div className={styles.content}>{content}</div>
|
|
<footer className={styles.footer}>
|
|
<Button
|
|
theme="base"
|
|
intent={secondaryAction.intent ?? "text"}
|
|
color="burgundy"
|
|
onClick={secondaryAction.onClick}
|
|
>
|
|
{secondaryAction.label}
|
|
</Button>
|
|
<Button
|
|
theme="base"
|
|
intent={primaryAction.intent ?? "secondary"}
|
|
onClick={primaryAction.onClick}
|
|
disabled={primaryAction.isLoading}
|
|
>
|
|
{primaryAction.label}
|
|
</Button>
|
|
</footer>
|
|
</>
|
|
)
|
|
}
|