Duffer Derek

Current Path : /var/www/sitesecurity.bitkit.dk/httpdocs/src/components/shared/page-layout/
Upload File :
Current File : /var/www/sitesecurity.bitkit.dk/httpdocs/src/components/shared/page-layout/index.tsx

"use client";
import Image from "next/image";
import React, { useMemo } from "react";
import { useRouter } from "next/navigation";
import "./style.scss";

type PageLayoutProps = {
  title?: string;
  description?: string;
  coordinates?: string;
  icon?: string;
  unitType?: string;
  titleType?: string;
  /** Back navigation target when `icon` is set. Defaults to `/sites`. */
  backHref?: string;
  /** Optional markup between back control and title (e.g. device template icon). */
  headlineIcon?: React.ReactNode;
  /** Actions aligned with the headline row (e.g. kebab menu). */
  trailingActions?: React.ReactNode;
  children: React.ReactNode;
};

type CoordinatesProps = {
  coordinates: string;
};

const PageLayout = (props: PageLayoutProps) => {
  const {
    title,
    description,
    unitType,
    coordinates,
    icon,
    titleType,
    backHref = "/sites",
    headlineIcon,
    trailingActions,
    children,
  } = props;
  const router = useRouter();
  return (
    <div className="head-cover">
      <div className="heading-block-wrapper">
        {icon && (
          <span className="back-btn" onClick={() => router.push(backHref)}>
            <Image src={icon} width={24} height={24} alt="image" />
            Back
          </span>
        )}
        {headlineIcon ? <span className="headline-icon-slot">{headlineIcon}</span> : null}
        <h1>{title}</h1>
        {/* {description && <p className="description">{description}</p>} */}
        <div className="wrapper-list">
        {titleType && <p className="description titleType">{titleType}</p>}
        {unitType && <p className="text-[#666] text-[12px] font-400 leading-none">{unitType}</p>}
        </div>
        
        {coordinates && (
          <p className="text-[#666] text-[12px] font-400 leading-none">
            <Coordinates coordinates={coordinates} />
          </p>
        )}
        {trailingActions ? (
          <div className="heading-block-wrapper__actions">{trailingActions}</div>
        ) : null}
      </div>
      {children}
    </div>
  );
};

const Coordinates: React.FC<CoordinatesProps> = ({ coordinates }) => {
  const [lat, lng] = useMemo(
    () => coordinates.split("Lng").map((part) => part.trim()),
    [coordinates]
  );

  return (
    <span className="flex items-center coordinates">
      <span>{lat}</span>
      <span>Lng {lng}</span>
    </span>
  );
};

export default PageLayout;

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists