From f73b85062d46545dde344d0985f1da7975a397a4 Mon Sep 17 00:00:00 2001 From: Lukas May Date: Wed, 4 Feb 2026 21:51:40 +0100 Subject: [PATCH] feat(19-03): create OptionGroup and FreeTextInput components - OptionGroup renders radio or checkbox based on multiSelect prop - "Other" field auto-selects when user types into it - FreeTextInput renders Input or Textarea based on multiline prop --- packages/web/src/components/FreeTextInput.tsx | 39 +++++ packages/web/src/components/OptionGroup.tsx | 155 ++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 packages/web/src/components/FreeTextInput.tsx create mode 100644 packages/web/src/components/OptionGroup.tsx diff --git a/packages/web/src/components/FreeTextInput.tsx b/packages/web/src/components/FreeTextInput.tsx new file mode 100644 index 0000000..b62b7d1 --- /dev/null +++ b/packages/web/src/components/FreeTextInput.tsx @@ -0,0 +1,39 @@ +import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; + +interface FreeTextInputProps { + questionId: string; + value: string; + onChange: (value: string) => void; + multiline?: boolean; + placeholder?: string; +} + +export function FreeTextInput({ + questionId, + value, + onChange, + multiline = false, + placeholder, +}: FreeTextInputProps) { + if (multiline) { + return ( +