"use client"; /** * `decision-approaches` step — Figma “Flow — Right Rail” (node `20523-23509`). * Registry: `CREATE_FLOW_SCREEN_REGISTRY["decision-approaches"]` (`layoutKind: "right-rail"`). * * Layout matches {@link CreateFlowTwoColumnSelectShell}: one column below `lg` (1024px), two columns * at `lg+` with a scrollable rail — same breakpoint and height chain as select steps, distinct content. */ import { useState, useCallback, useMemo } from "react"; import DecisionMakingSidebar from "../../../components/utility/DecisionMakingSidebar"; import CardStack from "../../../components/utility/CardStack"; import type { InfoMessageBoxItem } from "../../../components/utility/InfoMessageBox/InfoMessageBox.types"; import type { CardStackItem } from "../../../components/utility/CardStack/CardStack.types"; import { useMessages } from "../../../contexts/MessagesContext"; import { useCreateFlow } from "../../context/CreateFlowContext"; import { useCreateFlowMdUp } from "../../hooks/useCreateFlowMdUp"; import { CreateFlowTwoColumnSelectShell } from "../../components/CreateFlowTwoColumnSelectShell"; export function RightRailScreen() { const m = useMessages(); const rr = m.create.rightRail; const mdUp = useCreateFlowMdUp(); const { state, updateState, markCreateFlowInteraction } = useCreateFlow(); const [messageBoxCheckedIds, setMessageBoxCheckedIds] = useState( [], ); const [expanded, setExpanded] = useState(false); const selectedIds = state.selectedDecisionApproachIds ?? []; const setSelectedIds = useCallback( (next: string[]) => { updateState({ selectedDecisionApproachIds: next }); }, [updateState], ); const messageBoxItems: InfoMessageBoxItem[] = useMemo( () => rr.messageBox.items.map((item) => ({ id: item.id, label: item.label, })), [rr.messageBox.items], ); const sampleCards: CardStackItem[] = useMemo( () => rr.cards.map((c) => ({ id: c.id, label: c.label, supportText: c.supportText, recommended: c.recommended, })), [rr.cards], ); const sidebarDescription = ( <> {rr.sidebar.descriptionBefore} {rr.sidebar.descriptionAfter} ); const handleMessageBoxCheckboxChange = useCallback( (id: string, checked: boolean) => { markCreateFlowInteraction(); setMessageBoxCheckedIds((prev) => checked ? [...prev, id] : prev.filter((x) => x !== id), ); }, [markCreateFlowInteraction], ); const handleCardSelect = useCallback( (id: string) => { markCreateFlowInteraction(); setSelectedIds( selectedIds.includes(id) ? selectedIds.filter((x) => x !== id) : [...selectedIds, id], ); }, [markCreateFlowInteraction, selectedIds, setSelectedIds], ); const handleToggleExpand = useCallback(() => { markCreateFlowInteraction(); setExpanded((prev) => !prev); }, [markCreateFlowInteraction]); return ( } >
); }