import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { Typography } from "@scandic-hotels/design-system/Typography"

import { serverClient } from "@/lib/trpc/server"

import ButtonLink from "@/components/ButtonLink"
import SectionContainer from "@/components/Section/Container"
import SectionHeader from "@/components/Section/Header"
import SectionLink from "@/components/Section/Link"
import { getIntl } from "@/i18n"

import ClientPreviousStays from "./Client"

import styles from "./previous.module.css"

import type { AccountPageComponentProps } from "@/types/components/myPages/myPage/accountPage"

export default async function PreviousStays({
  title,
  link,
}: AccountPageComponentProps) {
  const intl = await getIntl()
  const caller = await serverClient()
  const initialPreviousStays = await caller.user.stays.previous({
    limit: 6,
  })

  if (!initialPreviousStays?.data.length) {
    return null
  }

  return (
    <SectionContainer>
      <div className={styles.header}>
        <SectionHeader title={title} link={link} />
        <div className={styles.claim}>
          <Typography variant="Body/Supporting text (caption)/smRegular">
            <p>
              {intl.formatMessage({
                defaultMessage: "Missing a previous stay?",
              })}
            </p>
          </Typography>
          <ButtonLink
            href="https://www.scandichotels.com/forms/missing-points"
            variant="Text"
            target="_blank"
            size="Small"
            typography="Body/Supporting text (caption)/smBold"
          >
            {intl.formatMessage({ defaultMessage: "Claim points" })}
            <MaterialIcon icon="open_in_new" size={20} color="CurrentColor" />
          </ButtonLink>
        </div>
      </div>
      <ClientPreviousStays initialPreviousStays={initialPreviousStays} />
      <SectionLink link={link} variant="mobile" />
    </SectionContainer>
  )
}
