alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
117 lines (115 loc) • 3.2 kB
JavaScript
import "../../chunks/chunk-U5RRZUYZ.js";
// src/ui/util/CreateTypo.tsx
import {
forwardRef
} from "react";
import { forwardRefWithAs } from "./PropsWithAs.js";
import { jsx } from "react/jsx-runtime";
function createTypo(styles, overrides = {}) {
function Typo({
children,
align
}) {
return /* @__PURE__ */ jsx("div", { style: { textAlign: align }, className: styles.root(), children });
}
function H1Component(props, ref) {
const { as: Type = overrides.h1 ?? "h1", flat, light, ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
ref,
...rest,
className: styles.h1.mergeProps(rest)({ flat, light })
}
);
}
function H2Component(props, ref) {
const { as: Type = overrides.h2 ?? "h2", flat, light, ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
ref,
...rest,
className: styles.h2.mergeProps(rest)({ flat, light })
}
);
}
function H3Component(props, ref) {
const { as: Type = overrides.h3 ?? "h3", flat, light, ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
ref,
...rest,
className: styles.h3.mergeProps(rest)({ flat, light })
}
);
}
function H4Component(props, ref) {
const { as: Type = overrides.h4 ?? "h4", flat, light, ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
ref,
...rest,
className: styles.h4.mergeProps(rest)({ flat, light })
}
);
}
function H5Component(props, ref) {
const { as: Type = overrides.h5 ?? "h5", flat, light, ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
ref,
...rest,
className: styles.h5.mergeProps(rest)({ flat, light })
}
);
}
function PComponent(props, ref) {
const { as: Type = overrides.p ?? "p", flat, light, ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
ref,
...rest,
className: styles.p.mergeProps(rest)({ flat, light })
}
);
}
const LinkComponent = forwardRef(function LinkComponent2(props, ref) {
const Tag = overrides.a ?? "a";
return /* @__PURE__ */ jsx(Tag, { ...props, ref, className: styles.link.mergeProps(props)() });
});
function MonospaceComponent(props, ref) {
const { as: Type = "span", ...rest } = props;
return /* @__PURE__ */ jsx(
Type,
{
...props,
ref,
className: styles.monospace.mergeProps(props)()
}
);
}
function SmallComponent(props, ref) {
const { as: Type = overrides.small ?? "small", ...rest } = props;
return /* @__PURE__ */ jsx(Type, { ...props, className: styles.small.mergeProps(props)(), ref });
}
return Object.assign(Typo, {
H1: forwardRefWithAs(H1Component),
H2: forwardRefWithAs(H2Component),
H3: forwardRefWithAs(H3Component),
H4: forwardRefWithAs(H4Component),
H5: forwardRefWithAs(H5Component),
P: forwardRefWithAs(PComponent),
Link: LinkComponent,
link: styles.link,
Monospace: forwardRefWithAs(MonospaceComponent),
Small: forwardRefWithAs(SmallComponent)
});
}
export {
createTypo
};