simian 0.1.2

A command-line tool for exploring and implementing Machine Learning algorithms in Rust.
Documentation
import { FC, useEffect } from 'react'
import clsx from 'clsx'
import { Text } from 'slate'

import { ElementProps } from '@/ui/editor/types'

import { Block } from '../../block'

import { useSubTitle } from './context'
import { useTranslations } from '@/i18n/context'

export const SubTitle: FC<ElementProps<'subtitle'>> = ({
  attributes,
  children,
  element,
}) => {
  const t = useTranslations()
  const { emptyPlaceholder, setIsMounted } = useSubTitle()

  useEffect(() => {
    setIsMounted(true)

    return () => {
      setIsMounted(false)
    }
  }, [setIsMounted])

  // Check if the title node is empty
  const isEmpty =
    element.children.length === 1 && (element.children[0] as Text).text === ''

  return (
    <Block
      element={element}
      className={clsx([
        'outline-none text-xl font-bold mb-6 -mt-4',
        'min-h-[1.2em]',
        'text-gray-500 dark:text-gray-400',
        isEmpty ? 'relative' : '',
      ])}
      {...attributes}
    >
      {emptyPlaceholder && isEmpty && (
        <span
          contentEditable={false}
          className="absolute pointer-events-none opacity-70 select-none"
        >
          {emptyPlaceholder(t)}
        </span>
      )}

      {children}
    </Block>
  )
}