///
import { cell, recipe, UI } from "commontools";
// Tests mixed && and || operators: (a && b) || c
// The && should use when, the || should use unless
export default recipe("LogicalMixedAndOr", (_state) => {
const user = cell<{ name: string; age: number }>({ name: "", age: 0 });
const defaultMessage = cell("Guest");
return {
[UI]: (
{/* (condition && value) || fallback pattern */}
{(user.get().name.length > 0 && user.get().name) || defaultMessage.get()}
{/* condition && (value || fallback) pattern */}
{user.get().age > 18 && (user.get().name || "Anonymous Adult")}
{/* Complex: (a && b) || (c && d) */}
{(user.get().name.length > 0 && `Hello ${user.get().name}`) ||
(user.get().age > 0 && `Age: ${user.get().age}`) ||
"Unknown user"}
),
};
});