"use client"; /** * Card Grid Field * * COPIED VERBATIM FROM: components/onboarding/steps/card-grid-step.tsx:136-226 * Renders a grid of selectable cards with optional dropdowns */ import { ANIMATION_CLASSES, CONDITIONAL_DROPDOWN, getStaggerStyle, STAGGER_PRESETS, } from "../animations"; import { cx } from "../lib/utils"; import { OnboardingLabel } from "../primitives/onboarding-label"; import { OnboardingRadioCardGroup, OnboardingRadioCardItem, } from "../primitives/onboarding-radio-card"; import { OnboardingSelect, OnboardingSelectContent, OnboardingSelectItem, OnboardingSelectTrigger, OnboardingSelectValue, } from "../primitives/onboarding-select"; import type { CardGridFieldProps } from "../types/fields"; const columnClasses = { 1: "", 2: "md:grid-cols-2", 3: "md:grid-cols-3", 4: "md:grid-cols-4", }; export function CardGridField({ options, selectedId, dropdownValues, onChange, columns = 2, layout = "vertical", ariaLabel, disabled = false, }: CardGridFieldProps) { const handleSelectionChange = (id: string) => { onChange({ selectedId: id, dropdownValues }); }; const handleDropdownChange = (optionId: string, value: string) => { const newValues = { ...dropdownValues, [optionId]: value }; onChange({ selectedId, dropdownValues: newValues }); }; return (
); }