import React from "react";
import clsx from "clsx";
import { ThemeClassNames } from "@docusaurus/theme-common";
import { useDoc } from "@docusaurus/theme-common/internal";
import Heading from "@theme/Heading";
import MDXContent from "@theme/MDXContent";
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import styles from "./styles.module.css";

/**
 Title can be declared inside md content or declared through
 front matter and added manually. To make both cases consistent,
 the added title is added under the same div.markdown block
 See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120

 We render a "synthetic title" if:
 - user doesn't ask to hide it with front matter
 - the markdown content does not already contain a top-level h1 heading
*/
function useSyntheticTitle() {
  const { metadata, frontMatter, contentTitle } = useDoc();
  const shouldRender =
    !frontMatter.hide_title && typeof contentTitle === "undefined";
  if (!shouldRender) {
    return null;
  }
  return metadata.title;
}
export default function DocItemContent({ children }) {
  const { metadata } = useDoc();

  const topLevel = isTopLevel(metadata?.slug);

  const syntheticTitle = useSyntheticTitle();

  return (
    <div className={clsx(ThemeClassNames.docs.docMarkdown, "markdown")}>
      {syntheticTitle && (
        <header>
          <div>
            <Heading as="h1">{syntheticTitle}</Heading>
          </div>
        </header>
      )}

      <div className={topLevel ? styles.topLevelDoc : ""}>
        <MetaActions style={{ ...(!topLevel && { top: 61, right: 0 }) }}/>
        <MDXContent>{children}</MDXContent>
      </div>
    </div>
  );
}

function isTopLevel(str) {
  return str.split("/").length - 1 < 2;
}

// Sub component
function MetaActions({ style }) {
  const { metadata } = useDoc();

  // Edit this page
  const editUrl = metadata?.editUrl;

  // Submit issue
  const { siteConfig } = useDocusaurusContext();
  const { customFields } = siteConfig;
  const { enableEditUrlLinks, enableIssueLinks, issueBaseUrl } = customFields;

  // Last updated at
  const formattedLastUpdatedAt = new Date(metadata?.lastUpdatedAt).toLocaleDateString('en-US', {
    year: 'numeric',
    month: 'short',
    day: '2-digit'
  });

  return (
    <div
      className={styles.hideOnMobile}
      style={{
        display: "flex",
        flexDirection: "column",
        justifyContent: "flex-end",
        textAlign: "right",
        position: "absolute",
        right: -240,
        height: 58,
        ...style,
      }}>
      {/* Edit URL link */}
      {editUrl && enableEditUrlLinks && (
        <a
          className={styles.link}
          href={editUrl}
          target="_blank"
          rel="noopener noreferrer">
          SUBMIT A PR
        </a>
      )}

      {/* Submit an issue link */}
      {enableIssueLinks && issueBaseUrl && (
        <a
          className={styles.link}
          href={issueBaseUrl}
          target="_blank"
          rel="noopener noreferrer">
          SUBMIT AN ISSUE
        </a>
      )}

      {/* Last updated */}
      <span className={styles.lastEdit}>
        last edit: {formattedLastUpdatedAt}
      </span>
    </div>
  );
}

Synonyms

pussy-ts/src/components/index.js
cyb/src/components/index.js
cyb/netlify/prebuild/index.js
pussy-ts/netlify/prebuild/index.js
cybertensor-developer-docs/src/theme/Footer/index.js
cybertensor-developer-docs/src/theme/EditThisPage/index.js
cybertensor-developer-docs/src/theme/DocBreadcrumbs/index.js
cybertensor-developer-docs/src/theme/NavbarItem/index.js
cybertensor-developer-docs/src/theme/Navbar/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/index.js
cybertensor-developer-docs/src/theme/SearchBar/index.js
cybertensor-developer-docs/src/theme/DocSidebar/index.js
cybertensor-developer-docs/src/theme/TOC/index.js
cybertensor-developer-docs/src/theme/DocSidebarItems/index.js
cybertensor-developer-docs/src/theme/MDXComponents/index.js
cyb/src/pages/teleport/hooks/index.js
pussy-ts/src/containers/warp/pool/index.js
pussy-ts/src/containers/energy/tab/index.js
cybertensor-developer-docs/src/theme/Navbar/Search/index.js
pussy-ts/src/components/particle/components/index.js
cyb/src/containers/temple/hooks/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/Category/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/index.js
cyb/src/containers/sigma/components/index.js
cybertensor-developer-docs/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.js
cyb/src/containers/energy/component/index.js
cyb/src/containers/warp/pool/index.js
cybertensor-developer-docs/src/theme/Icon/LightMode/index.js
pussy-ts/src/containers/energy/ui/index.js
cybertensor-developer-docs/src/theme/Navbar/ColorModeToggle/index.js
pussy-ts/src/containers/temple/pages/index.js
cybertensor-developer-docs/src/theme/Footer/Layout/index.js
cybertensor-developer-docs/src/theme/MDXComponents/Ul/index.js
pussy-ts/src/pages/teleport/hooks/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/Html/index.js
cybertensor-developer-docs/src/theme/DocItem/Layout/index.js
cyb/src/components/particle/components/index.js
cybertensor-developer-docs/src/theme/Footer/Links/index.js
pussy-ts/src/containers/energy/component/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Mobile/index.js
pussy-ts/src/containers/sigma/components/index.js
cybertensor-developer-docs/src/theme/DocItem/Footer/index.js
cybertensor-developer-docs/src/theme/DocSidebarItem/Link/index.js
cybertensor-developer-docs/src/theme/Footer/Logo/index.js
cybertensor-developer-docs/src/theme/Icon/DarkMode/index.js
cybertensor-developer-docs/src/theme/MDXComponents/Cards/index.js
pussy-ts/src/containers/nebula/components/index.js
cyb/src/containers/energy/ui/index.js
cybertensor-developer-docs/src/theme/Navbar/Content/index.js
cyb/src/containers/nebula/components/index.js
pussy-ts/src/containers/temple/hooks/index.js
cyb/src/containers/energy/tab/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Desktop/index.js
cyb/src/containers/temple/pages/index.js
cybertensor-developer-docs/src/theme/Navbar/Layout/index.js
cybertensor-developer-docs/src/theme/Navbar/Logo/index.js
cybertensor-developer-docs/src/theme/Icon/ExternalLink/index.js
cybertensor-developer-docs/src/theme/Icon/Arrow/index.js
cybertensor-developer-docs/src/theme/Admonition/Layout/index.js
cybertensor-developer-docs/src/theme/Footer/LinkItem/index.js
cybertensor-developer-docs/src/theme/Footer/Copyright/index.js
cybertensor-developer-docs/src/theme/NavbarItem/DropdownNavbarItem/index.js
cyb/src/pages/teleport/components/Inputs/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/Header/index.js
pussy-ts/src/containers/sigma/components/cardUi/index.js
cybertensor-developer-docs/src/theme/DocBreadcrumbs/Items/Home/index.js
pussy-ts/src/containers/portal/components/avataIpfs/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.js
cyb/src/containers/temple/pages/play/index.js
cyb/src/pages/teleport/mainScreen/components/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.js
cybertensor-developer-docs/src/theme/Footer/Links/MultiColumn/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/Toggle/index.js
pussy-ts/src/pages/teleport/mainScreen/components/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Desktop/CollapseButton/index.js
cybertensor-developer-docs/src/theme/DocSidebar/Desktop/Content/index.js
cybertensor-developer-docs/src/theme/Footer/Links/Simple/index.js
pussy-ts/src/pages/teleport/components/Inputs/index.js
cyb/src/containers/portal/components/avataIpfs/index.js
cyb/src/containers/sigma/components/cardUi/index.js
pussy-ts/src/containers/temple/pages/play/index.js
cybertensor-developer-docs/src/theme/Navbar/MobileSidebar/Layout/index.js
cyb/src/pages/robot/_refactor/account/hooks/index.js
pussy-ts/src/pages/robot/_refactor/account/hooks/index.js

Neighbours