{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "questionnaire",
  "title": "Questionnaire",
  "files": [
    {
      "path": "components/ui/questionnaire.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Questionnaire as QuestionnairePrimitive } from \"@shadcn/react/questionnaire\"\nimport { cn } from \"cn\"\n\nimport { buttonVariants, type Button } from \"@/components/ui/button\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Questionnaire({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Root>) {\n  return (\n    <QuestionnairePrimitive.Root\n      data-slot=\"questionnaire\"\n      className={cn(\"flex w-full min-w-0 flex-col gap-6\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireProgress({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Progress>) {\n  return (\n    <QuestionnairePrimitive.Progress\n      data-slot=\"questionnaire-progress\"\n      className={cn(\n        \"min-h-[1lh] w-fit min-w-[14ch] text-xs font-medium text-muted-foreground tabular-nums\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Item>) {\n  return (\n    <QuestionnairePrimitive.Item\n      data-slot=\"questionnaire-item\"\n      className={cn(\n        \"flex min-w-0 flex-col gap-5 border-0 p-0 outline-none\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Title>) {\n  return (\n    <QuestionnairePrimitive.Title\n      data-slot=\"questionnaire-title\"\n      className={cn(\n        \"text-base font-semibold text-pretty [&:not(:has(~[data-slot=questionnaire-description]))]:mb-5\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Description>) {\n  return (\n    <QuestionnairePrimitive.Description\n      data-slot=\"questionnaire-description\"\n      className={cn(\"text-sm text-pretty text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireChoices({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Choices>) {\n  return (\n    <QuestionnairePrimitive.Choices\n      data-slot=\"questionnaire-choices\"\n      className={cn(\n        \"group/questionnaire-choices grid min-w-0 gap-3\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireChoice({\n  children,\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Choice>) {\n  return (\n    <QuestionnairePrimitive.Choice\n      data-slot=\"questionnaire-choice\"\n      className={cn(\n        \"group/questionnaire-choice relative flex min-h-11 cursor-pointer items-start gap-3 rounded-2xl border border-input px-4 py-3 text-start text-sm transition-colors outline-none select-none hover:bg-input/40 has-[>input:focus-visible]:border-ring has-[>input:focus-visible]:ring-3 has-[>input:focus-visible]:ring-ring/50 data-invalid:border-destructive data-checked:border-primary/40 data-checked:bg-primary/10\",\n        \"data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <QuestionnairePrimitive.ChoiceInput\n        data-slot=\"questionnaire-choice-input\"\n        className=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0\"\n      />\n      <span\n        aria-hidden=\"true\"\n        data-slot=\"questionnaire-choice-indicator\"\n        className=\"pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[5px] border border-transparent bg-input/90 group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:group-data-checked/questionnaire-choice:bg-primary\"\n      >\n        <span\n          data-slot=\"questionnaire-choice-indicator-dot\"\n          className=\"hidden size-2 rounded-full bg-primary-foreground group-data-[type=checkbox]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block dark:size-2.5\"\n        />\n        <CheckIcon data-slot=\"questionnaire-choice-indicator-check\" className=\"hidden size-3.5 group-data-[type=radio]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block\" />\n      </span>\n      <QuestionnairePrimitive.ChoiceLabel\n        data-slot=\"questionnaire-choice-label\"\n        className=\"flex min-w-0 flex-1 flex-col gap-1 leading-snug\"\n      >\n        {children}\n      </QuestionnairePrimitive.ChoiceLabel>\n      <QuestionnairePrimitive.ChoiceShortcut\n        data-slot=\"questionnaire-choice-shortcut\"\n        className=\"pointer-events-none ms-auto hidden size-5 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-full border border-primary/10 bg-background/80 font-mono text-[0.625rem] leading-none font-medium text-muted-foreground group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[shortcut]/questionnaire-choice:inline-flex\"\n      />\n    </QuestionnairePrimitive.Choice>\n  )\n}\n\nfunction QuestionnaireChoiceDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"questionnaire-choice-description\"\n      className={cn(\"text-muted-foreground\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Input>) {\n  return (\n    <div\n      data-slot=\"questionnaire-input-wrapper\"\n      className=\"group/questionnaire-input relative w-full min-w-0\"\n    >\n      <QuestionnairePrimitive.Input\n        data-slot=\"questionnaire-input\"\n        className={cn(\n          \"h-8 min-h-11 w-full min-w-0 rounded-2xl border border-transparent bg-input/50 px-2.5 py-1 text-base transition-[color,box-shadow,background-color] duration-200 outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 sm:min-h-0 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n          \"selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction QuestionnaireError({\n  className,\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Error>) {\n  return (\n    <QuestionnairePrimitive.Error\n      data-slot=\"questionnaire-error\"\n      className={cn(\"mt-2 text-sm text-destructive\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnaireActions({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"questionnaire-actions\"\n      className={cn(\n        \"grid min-h-11 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2 sm:min-h-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction QuestionnairePrevious({\n  children,\n  className,\n  size = \"default\",\n  variant = \"outline\",\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Previous> &\n  Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n  return (\n    <QuestionnairePrimitive.Previous\n      data-slot=\"questionnaire-previous\"\n      data-size={size}\n      data-variant={variant}\n      className={cn(\n        buttonVariants({ size, variant }),\n        \"col-start-1 row-start-1 min-h-11 justify-self-start sm:min-h-0\",\n        className\n      )}\n      {...props}\n    >\n      {children ?? \"Previous\"}\n    </QuestionnairePrimitive.Previous>\n  )\n}\n\nfunction QuestionnaireSkip({\n  children,\n  className,\n  size = \"default\",\n  variant = \"outline\",\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Skip> &\n  Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n  return (\n    <QuestionnairePrimitive.Skip\n      data-slot=\"questionnaire-skip\"\n      data-size={size}\n      data-variant={variant}\n      className={cn(\n        buttonVariants({ size, variant }),\n        \"col-start-2 row-start-1 min-h-11 justify-self-end sm:min-h-0\",\n        className\n      )}\n      {...props}\n    >\n      {children ?? \"Skip\"}\n    </QuestionnairePrimitive.Skip>\n  )\n}\n\nfunction QuestionnaireNext({\n  children,\n  className,\n  size = \"default\",\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Next> &\n  Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n  return (\n    <QuestionnairePrimitive.Next\n      data-slot=\"questionnaire-next\"\n      data-size={size}\n      data-variant={variant}\n      className={cn(\n        buttonVariants({ size, variant }),\n        \"col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0\",\n        className\n      )}\n      {...props}\n    >\n      {children ?? \"Next\"}\n    </QuestionnairePrimitive.Next>\n  )\n}\n\nfunction QuestionnaireSubmit({\n  children,\n  className,\n  size = \"default\",\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof QuestionnairePrimitive.Submit> &\n  Pick<React.ComponentProps<typeof Button>, \"size\" | \"variant\">) {\n  return (\n    <QuestionnairePrimitive.Submit\n      data-slot=\"questionnaire-submit\"\n      data-size={size}\n      data-variant={variant}\n      className={cn(\n        buttonVariants({ size, variant }),\n        \"col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0\",\n        className\n      )}\n      {...props}\n    >\n      {children ?? \"Submit\"}\n    </QuestionnairePrimitive.Submit>\n  )\n}\n\nexport {\n  Questionnaire,\n  QuestionnaireActions,\n  QuestionnaireChoice,\n  QuestionnaireChoiceDescription,\n  QuestionnaireChoices,\n  QuestionnaireDescription,\n  QuestionnaireError,\n  QuestionnaireInput,\n  QuestionnaireItem,\n  QuestionnaireNext,\n  QuestionnairePrevious,\n  QuestionnaireProgress,\n  QuestionnaireSkip,\n  QuestionnaireSubmit,\n  QuestionnaireTitle,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}