1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-24 00:44:20 +00:00
triennale-appunti-steffo/components/useful.tsx

71 lines
No EOL
1.8 KiB
TypeScript

import { Heading, Box as BlueBox, Chapter as BlueChapter, Definition as BlueDefinition } from "@steffo/bluelib-react"
import { ChapterProps as BlueChapterProps } from "@steffo/bluelib-react/dist/components/chapters/Chapter"
import { BoxProps as BlueBoxProps } from "@steffo/bluelib-react/dist/components/panels/Box"
import { DefinitionProps } from "@steffo/bluelib-react/dist/components/semantics/Definition"
import React, { ReactNode } from "react"
import { Link } from "./link"
export type BoxProps = BlueBoxProps & {
h?: ReactNode,
}
export const Box = ({h, children, ...props}: BoxProps) => {
return (
<BlueBox {...props}>
{h && <Heading level={3}>
{h}
</Heading>}
{children}
</BlueBox>
)
}
export type ChapterProps = BlueChapterProps & {
h?: ReactNode
}
export const Chapter = ({h, children, ...props}: ChapterProps) => {
return (
<BlueChapter {...props}>
{h && <Heading level={2}>
{h}
</Heading>}
{children}
</BlueChapter>
)
}
const idFromString = (t: string): string => {
return t.toLowerCase().replace(/[^a-z0-9]/g, "-")
}
export type DfnProps = DefinitionProps & {
children: string
}
// Definition
export const Dfn = ({children, ...props}: DfnProps) => {
const id: string = "dfn-" + idFromString(children)
return (
<BlueDefinition {...props} id={id}>
{children}
</BlueDefinition>
)
}
export type SbProps = {
children: string
dfn?: string
}
// Sendback
export const Sb = ({children, dfn}: SbProps) => {
const id: string = "dfn-" + idFromString(dfn ?? children)
return (
<Link href={`#${id}`}>
{children}
</Link>
)
}