import "./index.css" import { Title, Meta, Link } from "@solidjs/meta" import { createAsync } from "@solidjs/router" import { Header } from "~/component/header" import { Footer } from "~/component/footer" import { Legal } from "~/component/legal" import { config } from "~/config" import { changelog } from "~/lib/changelog" import type { HighlightGroup } from "~/lib/changelog" import { For, Show, createSignal } from "solid-js" import { useI18n } from "~/context/i18n" import { useLanguage } from "~/context/language" function formatDate(dateString: string, locale: string) { const date = new Date(dateString) return date.toLocaleDateString(locale, { year: "numeric", month: "short", day: "numeric", }) } function ReleaseItem(props: { item: string }) { const parts = () => { const match = props.item.match(/^(.+?)(\s*\(@([\w-]+)\))?$/) if (match) { return { text: match[1], username: match[3], } } return { text: props.item, username: undefined } } return (
  • {parts().text} (@{parts().username})
  • ) } function HighlightSection(props: { group: HighlightGroup }) { return (

    {props.group.source}


    {(item) => (

    {item.title}

    {item.description}

    {item.title}
    )}
    ) } function CollapsibleSection(props: { section: { title: string; items: string[] } }) { const [open, setOpen] = createSignal(false) return (
    ) } function CollapsibleSections(props: { sections: { title: string; items: string[] }[] }) { return (
    {(section) => }
    ) } export default function Changelog() { const i18n = useI18n() const language = useLanguage() const data = createAsync(() => changelog()) const releases = () => data() ?? [] return (
    {i18n.t("changelog.title")}

    {i18n.t("changelog.hero.title")}

    {i18n.t("changelog.hero.subtitle")}

    {i18n.t("changelog.empty")} {i18n.t("changelog.viewJson")}

    {(release) => { return (
    0}>
    {(group) => }
    0 && release.sections.length > 0}> {(section) => (

    {section.title}

      {(item) => }
    )}
    ) }}
    ) }