import { Dialog as Kobalte } from "@kobalte/core/dialog"
import { type ComponentProps, type JSXElement, type ParentProps, Show, children, splitProps } from "solid-js"
import { useI18n } from "../../context/i18n"
import "./dialog-v2.css"
export interface DialogProps extends ParentProps {
size?: "normal" | "large" | "x-large"
variant?: "default" | "settings"
class?: ComponentProps<"div">["class"]
containerClass?: ComponentProps<"div">["class"]
classList?: ComponentProps<"div">["classList"]
fit?: boolean
}
export interface DialogHeaderProps extends ParentProps {
closeLabel?: string
hideClose?: boolean
}
export interface DialogTitleGroupProps {
title?: JSXElement
description: JSXElement
}
export function DialogFooter(props: ParentProps) {
return
{props.children}
}
export function DialogBody(props: ParentProps & { class?: ComponentProps<"div">["class"] }) {
const [local] = splitProps(props, ["class", "children"])
return (
{local.children}
)
}
export function DialogTitle(props: ParentProps) {
return {props.children}
}
export function DialogTitleGroup(props: DialogTitleGroupProps) {
const title = children(() => props.title)
const description = children(() => props.description)
return (
{(t) => {t()}}
{description()}
)
}
export function DialogHeader(props: DialogHeaderProps) {
const i18n = useI18n()
const [local] = splitProps(props, ["closeLabel", "hideClose", "children"])
const hideClose = () => local.hideClose === true
return (
{local.children}
{!hideClose() && (
)}
)
}
export function Dialog(props: DialogProps) {
const [local] = splitProps(props, ["size", "variant", "class", "containerClass", "classList", "fit", "children"])
return (
{
const target = e.currentTarget as HTMLElement | null
const autofocusEl = target?.querySelector("[autofocus]") as HTMLElement | null
if (autofocusEl) {
e.preventDefault()
autofocusEl.focus({ preventScroll: true })
}
}}
>
{local.children}
)
}
export const DialogV2 = Dialog