diff --git a/packages/liphe/components/Explorer/Conditional.module.css b/packages/liphe/components/Explorer/Conditional.module.css new file mode 100644 index 00000000..0be06481 --- /dev/null +++ b/packages/liphe/components/Explorer/Conditional.module.css @@ -0,0 +1,26 @@ +.conditional { + display: inline-block; + border-left: 1px solid #aaa; + border-right: 1px solid #aaa; + border-radius: 10%; + padding: 16px 8px; + vertical-align: top; +} + +.condition { +} + +.consequent, +.alternative { + padding: 10px; + margin: 10px; +} + +.consequent { + display: inline-block; + border: 1px solid #00aa00; +} +.alternative { + display: inline-block; + border: 1px solid #aa0000; +} diff --git a/packages/liphe/components/Explorer/Conditional.tsx b/packages/liphe/components/Explorer/Conditional.tsx new file mode 100644 index 00000000..c6ae2f0e --- /dev/null +++ b/packages/liphe/components/Explorer/Conditional.tsx @@ -0,0 +1,28 @@ +import * as Delisp from "@delisp/core"; +import { Typed } from "@delisp/core"; +import * as React from "react"; +import { ExpressionExplorer } from "./Expression"; +import styles from "./Conditional.module.css"; + +export const ConditionalExplorer: React.FC<{ + conditional: Delisp.SConditional; +}> = ({ conditional }) => { + return ( +
+
+ if +
+
+
+ then + +
+
+ else + + +
+
+
+ ); +}; diff --git a/packages/liphe/components/Explorer/Expression.tsx b/packages/liphe/components/Explorer/Expression.tsx index 56f69894..74cd6d5b 100644 --- a/packages/liphe/components/Explorer/Expression.tsx +++ b/packages/liphe/components/Explorer/Expression.tsx @@ -12,6 +12,7 @@ import { NumberExplorer } from "./Number"; import { RecordExplorer } from "./Record"; import { StringExplorer } from "./String"; import { VariableReferenceExplorer } from "./VariableReference"; +import { ConditionalExplorer } from "./Conditional"; export const ExpressionExplorer: React.FC<{ expression: Delisp.Expression; @@ -47,6 +48,12 @@ export const ExpressionExplorer: React.FC<{ variable={{ ...expression, node: expression.node }} /> ); + case "conditional": + return ( + + ); default: { const normalizer = useTypeNormalizer();