114 | {block.nodes.map((node) => (
115 |
114 | {block.nodes.map((node) => (
115 |
{node.text};
136 | case "formula":
137 | return {node.symbol} ${node.text};
140 | case "helpfeel":
141 | return ? {node.text};
142 | case "quote":
143 | case "strong":
144 | case "decoration":
145 | return (
146 | <>
147 | {node.nodes.map((node) => (
148 | {formula}
177 | : }
178 |
179 | );
180 | };
181 | type IconProps = {
182 | project: string;
183 | node: IconNode | StrongIconNode;
184 | };
185 | const Icon = ({ node: { pathType, path }, project: _project }: IconProps) => {
186 | const [project, title] = pathType === "relative"
187 | ? [
188 | _project,
189 | path,
190 | ]
191 | : path.match(/\/([\w\-]+)\/(.+)$/)?.slice?.(1) ?? [_project, path];
192 |
193 | return (
194 |
311 | {line}
312 |
313 | {node.text};
379 | case "formula":
380 | return
386 | ?{" "}
387 | {node.text}
388 |
389 | );
390 | case "quote":
391 | return (
392 | 393 | {node.nodes.map((node) =>395 | ); 396 | case "strong": 397 | return ( 398 | 399 | {node.nodes.map((node) =>)} 394 |
{formula}
439 | : }
440 |
441 | );
442 | };
443 | type DecorationProps = { node: DecorationNode };
444 | const Decoration = (
445 | { node: { decos, nodes } }: DecorationProps,
446 | ) => (
447 | `deco-${deco}`).join(" ")}>
448 | {nodes.map((node) =>
476 | {node.symbol}{" "}
477 | {node.text}
478 |
479 |
480 |
481 | {buttonLabel}
482 |
483 |
484 | >
485 | );
486 | };
487 | type GoogleMapProps = { node: GoogleMapNode };
488 | const GoogleMap = (
489 | { node: { place, latitude, longitude, zoom } }: GoogleMapProps,
490 | ) => (
491 |
492 |
497 |