@mastra/playground-ui 65.0.0-alpha.11 → 65.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/{ask-user-card-DnvW7jXS.js → ask-user-card-B9q_GFTt.js} +2 -2
  2. package/dist/{ask-user-card-DnvW7jXS.js.map → ask-user-card-B9q_GFTt.js.map} +1 -1
  3. package/dist/{ask-user-card-DiFQcUzM.cjs → ask-user-card-C-N5rpYG.cjs} +2 -2
  4. package/dist/{ask-user-card-DiFQcUzM.cjs.map → ask-user-card-C-N5rpYG.cjs.map} +1 -1
  5. package/dist/components/Comment.cjs.js +1 -1
  6. package/dist/components/Comment.es.js +1 -1
  7. package/dist/components/DataCodeSection.cjs.js +1 -1
  8. package/dist/components/DataCodeSection.es.js +1 -1
  9. package/dist/components/DataPanel.cjs.js +1 -1
  10. package/dist/components/DataPanel.es.js +1 -1
  11. package/dist/components/DateTimePicker.cjs.js +1 -1
  12. package/dist/components/DateTimePicker.es.js +1 -1
  13. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  14. package/dist/components/DateTimeRangePicker.es.js +1 -1
  15. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  16. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  17. package/dist/components/Field.cjs.js +1 -1
  18. package/dist/components/Field.es.js +1 -1
  19. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  20. package/dist/components/JSONSchemaForm.es.js +1 -1
  21. package/dist/components/ListSearch.cjs.js +1 -1
  22. package/dist/components/ListSearch.es.js +1 -1
  23. package/dist/components/PropertyFilter.cjs.js +1 -1
  24. package/dist/components/PropertyFilter.es.js +1 -1
  25. package/dist/components/SearchInput.cjs.js +1 -1
  26. package/dist/components/SearchInput.es.js +1 -1
  27. package/dist/components/Section.cjs.js +1 -1
  28. package/dist/components/Section.es.js +1 -1
  29. package/dist/components/SideDialog.cjs.js +1 -1
  30. package/dist/components/SideDialog.es.js +1 -1
  31. package/dist/components/ai/activity.cjs.js +1 -1
  32. package/dist/components/ai/activity.es.js +1 -1
  33. package/dist/components/ai/ask-user.cjs.js +1 -1
  34. package/dist/components/ai/ask-user.es.js +1 -1
  35. package/dist/{data-code-section-BjyHoHEB.cjs → data-code-section-BsvdKW08.cjs} +2 -2
  36. package/dist/{data-code-section-BjyHoHEB.cjs.map → data-code-section-BsvdKW08.cjs.map} +1 -1
  37. package/dist/{data-code-section-BWzfg-1n.js → data-code-section-y1BMLr3c.js} +2 -2
  38. package/dist/{data-code-section-BWzfg-1n.js.map → data-code-section-y1BMLr3c.js.map} +1 -1
  39. package/dist/{data-panel-CUqcB4Vn.js → data-panel-DSgidnnv.js} +2 -2
  40. package/dist/{data-panel-CUqcB4Vn.js.map → data-panel-DSgidnnv.js.map} +1 -1
  41. package/dist/{data-panel-CGRPVnEe.cjs → data-panel-xqrai98b.cjs} +2 -2
  42. package/dist/{data-panel-CGRPVnEe.cjs.map → data-panel-xqrai98b.cjs.map} +1 -1
  43. package/dist/{date-time-range-picker-BB6ivHR-.js → date-time-range-picker-BnYWCqei.js} +2 -2
  44. package/dist/{date-time-range-picker-BB6ivHR-.js.map → date-time-range-picker-BnYWCqei.js.map} +1 -1
  45. package/dist/{date-time-range-picker-ExPgeHV_.cjs → date-time-range-picker-_2RJBOUn.cjs} +2 -2
  46. package/dist/{date-time-range-picker-ExPgeHV_.cjs.map → date-time-range-picker-_2RJBOUn.cjs.map} +1 -1
  47. package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -1
  48. package/dist/domains/chat/messages/dataset-save-action.es.js +1 -1
  49. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +23 -3
  50. package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
  51. package/dist/domains/chat/messages/notification-signal-notice.es.js +24 -6
  52. package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
  53. package/dist/domains/chat/messages/signal-data.cjs.js +12 -0
  54. package/dist/domains/chat/messages/signal-data.cjs.js.map +1 -1
  55. package/dist/domains/chat/messages/signal-data.es.js +12 -1
  56. package/dist/domains/chat/messages/signal-data.es.js.map +1 -1
  57. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  58. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  59. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -0
  60. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  61. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -0
  62. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  63. package/dist/domains/chat.cjs.js +1 -0
  64. package/dist/domains/chat.cjs.js.map +1 -1
  65. package/dist/domains/chat.es.js +1 -1
  66. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +1 -1
  67. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +1 -1
  68. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js +1 -1
  69. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js +1 -1
  70. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js +1 -1
  71. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js +1 -1
  72. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +1 -1
  73. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +1 -1
  74. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -2
  75. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +2 -2
  76. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  77. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  78. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  79. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  80. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  81. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  82. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  83. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  84. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  85. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  86. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  87. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  88. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  89. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  90. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  91. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  92. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  93. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  94. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  95. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  96. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  97. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  98. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  99. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  100. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
  101. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  102. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js +1 -1
  103. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js +1 -1
  104. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  105. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  106. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  107. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  108. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
  109. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
  110. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  111. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  112. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -2
  113. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +2 -2
  114. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  115. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
  116. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  117. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  118. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -0
  119. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
  120. package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -0
  121. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
  122. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  123. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  124. package/dist/{field-BCU5ZtWV.cjs → field-CZ5fldpM.cjs} +2 -1
  125. package/dist/{field-BCU5ZtWV.cjs.map → field-CZ5fldpM.cjs.map} +1 -1
  126. package/dist/{field-Dl1zeXTv.js → field-CfA5-ixH.js} +2 -1
  127. package/dist/{field-Dl1zeXTv.js.map → field-CfA5-ixH.js.map} +1 -1
  128. package/dist/layout/tabbed-container.cjs.js +1 -1
  129. package/dist/layout/tabbed-container.es.js +1 -1
  130. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  131. package/dist/lib/form/components/boolean-field.es.js +1 -1
  132. package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
  133. package/dist/lib/form/components/field-wrapper.es.js +1 -1
  134. package/dist/{list-search-ByJdIxIh.js → list-search-8jVOq9LK.js} +2 -2
  135. package/dist/{list-search-ByJdIxIh.js.map → list-search-8jVOq9LK.js.map} +1 -1
  136. package/dist/{list-search-DNJVeHmK.cjs → list-search-C7ckmZHa.cjs} +2 -2
  137. package/dist/{list-search-DNJVeHmK.cjs.map → list-search-C7ckmZHa.cjs.map} +1 -1
  138. package/dist/new/settings.cjs.js +1 -1
  139. package/dist/new/settings.es.js +1 -1
  140. package/dist/{notification-activity-BWXHmlTn.js → notification-activity-BRW1Xlj1.js} +9 -5
  141. package/dist/notification-activity-BRW1Xlj1.js.map +1 -0
  142. package/dist/{notification-activity-BSNuqJDd.cjs → notification-activity-DAZOALWI.cjs} +9 -5
  143. package/dist/notification-activity-DAZOALWI.cjs.map +1 -0
  144. package/dist/{search-input-CMNy0JWd.cjs → search-input-CGNENJDh.cjs} +2 -2
  145. package/dist/{search-input-CMNy0JWd.cjs.map → search-input-CGNENJDh.cjs.map} +1 -1
  146. package/dist/{search-input-C9qFBzn6.js → search-input-cIYk0pl3.js} +2 -2
  147. package/dist/{search-input-C9qFBzn6.js.map → search-input-cIYk0pl3.js.map} +1 -1
  148. package/dist/{section-skBYREaR.cjs → section-BikCyHdf.cjs} +2 -2
  149. package/dist/{section-skBYREaR.cjs.map → section-BikCyHdf.cjs.map} +1 -1
  150. package/dist/{section-eRs4NnCC.js → section-C71zDLKM.js} +2 -2
  151. package/dist/{section-eRs4NnCC.js.map → section-C71zDLKM.js.map} +1 -1
  152. package/dist/{settings-row-Ds-PVocx.cjs → settings-row-C9lT2BJS.cjs} +2 -2
  153. package/dist/{settings-row-Ds-PVocx.cjs.map → settings-row-C9lT2BJS.cjs.map} +1 -1
  154. package/dist/{settings-row-BHtjEfPr.js → settings-row-CRpU1an-.js} +2 -2
  155. package/dist/{settings-row-BHtjEfPr.js.map → settings-row-CRpU1an-.js.map} +1 -1
  156. package/dist/src/domains/chat/messages/notification-signal-notice.d.ts +2 -0
  157. package/dist/src/domains/chat/messages/signal-data.d.ts +9 -0
  158. package/dist/src/ds/components/ai/activity/presets/notification-activity.d.ts +5 -1
  159. package/package.json +6 -6
  160. package/dist/notification-activity-BSNuqJDd.cjs.map +0 -1
  161. package/dist/notification-activity-BWXHmlTn.js.map +0 -1
@@ -3,7 +3,7 @@ import { createContext, useContext, useId, useState } from 'react';
3
3
  import { MessageCircleQuestion, Check } from 'lucide-react';
4
4
  import { B as Badge } from './Badge-CHGARUEW.js';
5
5
  import { B as Button } from './Button-D8a5EWJ5.js';
6
- import { d as FieldItem, e as FieldLabel, f as Fieldset } from './field-Dl1zeXTv.js';
6
+ import { d as FieldItem, e as FieldLabel, f as Fieldset } from './field-CfA5-ixH.js';
7
7
  import './field-control-aria-DB6y41tQ.js';
8
8
  import { T as Txt } from './Txt-BtIGLRk1.js';
9
9
  import { Icon } from './icons/Icon.es.js';
@@ -421,4 +421,4 @@ function AskUser({
421
421
  }
422
422
 
423
423
  export { AskUser as A, AskUserBody as a, AskUserContainer as b, AskUserCustomAnswer as c, AskUserLabel as d, AskUserOptionItem as e, AskUserOptionRow as f, AskUserOptions as g, AskUserOutput as h, AskUserPending as i, AskUserQuestion as j, AskUserRoot as k, AskUserSubmit as l, AskUserTextAnswer as m };
424
- //# sourceMappingURL=ask-user-card-DnvW7jXS.js.map
424
+ //# sourceMappingURL=ask-user-card-B9q_GFTt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user-card-DnvW7jXS.js","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport type { AskUserContainer } from './ask-user-layout';\nimport { AskUserBody, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-user-card-B9q_GFTt.js","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport type { AskUserContainer } from './ask-user-layout';\nimport { AskUserBody, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ const React = require('react');
5
5
  const lucideReact = require('lucide-react');
6
6
  const Badge = require('./Badge-63UxysBA.cjs');
7
7
  const Button = require('./Button-C4I05uT4.cjs');
8
- const field = require('./field-BCU5ZtWV.cjs');
8
+ const field = require('./field-CZ5fldpM.cjs');
9
9
  require('./field-control-aria-WzMGs0A4.cjs');
10
10
  const Txt = require('./Txt-CIS2G5Jx.cjs');
11
11
  const icons_Icon = require('./icons/Icon.cjs.js');
@@ -436,4 +436,4 @@ exports.AskUserQuestion = AskUserQuestion;
436
436
  exports.AskUserRoot = AskUserRoot;
437
437
  exports.AskUserSubmit = AskUserSubmit;
438
438
  exports.AskUserTextAnswer = AskUserTextAnswer;
439
- //# sourceMappingURL=ask-user-card-DiFQcUzM.cjs.map
439
+ //# sourceMappingURL=ask-user-card-C-N5rpYG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user-card-DiFQcUzM.cjs","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport type { AskUserContainer } from './ask-user-layout';\nimport { AskUserBody, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":["createContext","useContext","jsx","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","jsxs","FieldItem","FieldLabel","Button","Check","Badge","Fieldset","RadioGroup","Checkbox","RadioGroupItem","Input","useId","useState","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"ask-user-card-C-N5rpYG.cjs","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport type { AskUserContainer } from './ask-user-layout';\nimport { AskUserBody, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":["createContext","useContext","jsx","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","jsxs","FieldItem","FieldLabel","Button","Check","Badge","Fieldset","RadioGroup","Checkbox","RadioGroupItem","Input","useId","useState","Fragment"],"mappings":"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"}
@@ -11,7 +11,7 @@ const React = require('react');
11
11
  const inputGroup = require('../input-group-DRXUthxe.cjs');
12
12
  const utils_cn = require('../cn-DlOJCxrS.cjs');
13
13
  const Button = require('../Button-C4I05uT4.cjs');
14
- const field = require('../field-BCU5ZtWV.cjs');
14
+ const field = require('../field-CZ5fldpM.cjs');
15
15
  require('../field-control-aria-WzMGs0A4.cjs');
16
16
  const primitives_textareaControl = require('../primitives/textarea-control.cjs.js');
17
17
  const Txt = require('../Txt-CIS2G5Jx.cjs');
@@ -8,7 +8,7 @@ import { forwardRef, useState } from 'react';
8
8
  import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../input-group-BAg6iSIe.js';
9
9
  import { c as cn } from '../cn-CQUhN5Jx.js';
10
10
  import { B as Button } from '../Button-D8a5EWJ5.js';
11
- import { F as Field, c as FieldError } from '../field-Dl1zeXTv.js';
11
+ import { F as Field, c as FieldError } from '../field-CfA5-ixH.js';
12
12
  import '../field-control-aria-DB6y41tQ.js';
13
13
  import { TextareaControl } from '../primitives/textarea-control.es.js';
14
14
  import { T as Txt } from '../Txt-BtIGLRk1.js';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dataCodeSection = require('../data-code-section-BjyHoHEB.cjs');
5
+ const dataCodeSection = require('../data-code-section-BsvdKW08.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { D as DataCodeSection } from '../data-code-section-BWzfg-1n.js';
1
+ export { D as DataCodeSection } from '../data-code-section-y1BMLr3c.js';
2
2
  //# sourceMappingURL=DataCodeSection.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dataPanel = require('../data-panel-CGRPVnEe.cjs');
5
+ const dataPanel = require('../data-panel-xqrai98b.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { D as DataPanel } from '../data-panel-CUqcB4Vn.js';
1
+ export { D as DataPanel } from '../data-panel-DSgidnnv.js';
2
2
  //# sourceMappingURL=DataPanel.es.js.map
@@ -10,7 +10,7 @@ const useDebounce = require('use-debounce');
10
10
  const datePicker = require('../date-picker-CeJkb3uq.cjs');
11
11
  const timePicker = require('../time-picker-BGtAkRRp.cjs');
12
12
  const Button = require('../Button-C4I05uT4.cjs');
13
- const field = require('../field-BCU5ZtWV.cjs');
13
+ const field = require('../field-CZ5fldpM.cjs');
14
14
  require('../field-control-aria-WzMGs0A4.cjs');
15
15
  const input = require('../input-4_GFK4ik.cjs');
16
16
  const popover = require('../popover-AfnrAYck.cjs');
@@ -6,7 +6,7 @@ import { useDebouncedCallback } from 'use-debounce';
6
6
  import { D as DatePicker } from '../date-picker-D2jMzekn.js';
7
7
  import { T as TimePicker } from '../time-picker-D1VsACkg.js';
8
8
  import { B as Button } from '../Button-D8a5EWJ5.js';
9
- import { F as Field, e as FieldLabel, c as FieldError } from '../field-Dl1zeXTv.js';
9
+ import { F as Field, e as FieldLabel, c as FieldError } from '../field-CfA5-ixH.js';
10
10
  import '../field-control-aria-DB6y41tQ.js';
11
11
  import { I as Input } from '../input-_gvb6P8T.js';
12
12
  import { P as Popover, b as PopoverTrigger, a as PopoverContent } from '../popover-BqRniR9J.js';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dateTimeRangePicker = require('../date-time-range-picker-ExPgeHV_.cjs');
5
+ const dateTimeRangePicker = require('../date-time-range-picker-_2RJBOUn.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { D as DateTimeRangePicker } from '../date-time-range-picker-BB6ivHR-.js';
1
+ export { D as DateTimeRangePicker } from '../date-time-range-picker-BnYWCqei.js';
2
2
  //# sourceMappingURL=DateTimeRangePicker.es.js.map
@@ -12,7 +12,7 @@ const envFile = require('../env-file-BU2hStkm.cjs');
12
12
  const Txt = require('../Txt-CIS2G5Jx.cjs');
13
13
  const dataList = require('../data-list-DlXU1PLQ.cjs');
14
14
  const hooks_useCopyToClipboard = require('../hooks/use-copy-to-clipboard.cjs.js');
15
- const field = require('../field-BCU5ZtWV.cjs');
15
+ const field = require('../field-CZ5fldpM.cjs');
16
16
  require('../field-control-aria-WzMGs0A4.cjs');
17
17
  const inputGroup = require('../input-group-DRXUthxe.cjs');
18
18
 
@@ -8,7 +8,7 @@ import { D as DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE } from '../env-file-BITYowC
8
8
  import { T as Txt } from '../Txt-BtIGLRk1.js';
9
9
  import { e as DataList } from '../data-list-DATsbxcn.js';
10
10
  import { useCopyToClipboard } from '../hooks/use-copy-to-clipboard.es.js';
11
- import { F as Field, e as FieldLabel, c as FieldError } from '../field-Dl1zeXTv.js';
11
+ import { F as Field, e as FieldLabel, c as FieldError } from '../field-CfA5-ixH.js';
12
12
  import '../field-control-aria-DB6y41tQ.js';
13
13
  import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../input-group-BAg6iSIe.js';
14
14
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const field = require('../field-BCU5ZtWV.cjs');
5
+ const field = require('../field-CZ5fldpM.cjs');
6
6
  const fieldControlAria = require('../field-control-aria-WzMGs0A4.cjs');
7
7
 
8
8
 
@@ -1,3 +1,3 @@
1
- export { F as Field, a as FieldContent, b as FieldDescription, c as FieldError, d as FieldItem, e as FieldLabel, f as Fieldset, g as FieldsetLegend } from '../field-Dl1zeXTv.js';
1
+ export { F as Field, a as FieldContent, b as FieldDescription, c as FieldError, d as FieldItem, e as FieldLabel, f as Fieldset, g as FieldsetLegend } from '../field-CfA5-ixH.js';
2
2
  export { u as useFieldControlAria } from '../field-control-aria-DB6y41tQ.js';
3
3
  //# sourceMappingURL=Field.es.js.map
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
7
  const utils_cn = require('../cn-DlOJCxrS.cjs');
8
- const field = require('../field-BCU5ZtWV.cjs');
8
+ const field = require('../field-CZ5fldpM.cjs');
9
9
  require('../field-control-aria-WzMGs0A4.cjs');
10
10
  const input = require('../input-4_GFK4ik.cjs');
11
11
  const lucideReact = require('lucide-react');
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { c as cn } from '../cn-CQUhN5Jx.js';
4
- import { F as Field$1, e as FieldLabel } from '../field-Dl1zeXTv.js';
4
+ import { F as Field$1, e as FieldLabel } from '../field-CfA5-ixH.js';
5
5
  import '../field-control-aria-DB6y41tQ.js';
6
6
  import { I as Input } from '../input-_gvb6P8T.js';
7
7
  import { Type, Hash, ToggleLeft, AlignLeft, Braces, List, Trash2Icon, Plus } from 'lucide-react';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const listSearch = require('../list-search-DNJVeHmK.cjs');
5
+ const listSearch = require('../list-search-C7ckmZHa.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { L as ListSearch } from '../list-search-ByJdIxIh.js';
1
+ export { L as ListSearch } from '../list-search-8jVOq9LK.js';
2
2
  //# sourceMappingURL=ListSearch.es.js.map
@@ -8,7 +8,7 @@ const lucideReact = require('lucide-react');
8
8
  const React = require('react');
9
9
  const Button = require('../Button-C4I05uT4.cjs');
10
10
  const combobox = require('../combobox-RlGW9Erz.cjs');
11
- const field = require('../field-BCU5ZtWV.cjs');
11
+ const field = require('../field-CZ5fldpM.cjs');
12
12
  require('../field-control-aria-WzMGs0A4.cjs');
13
13
  const popover = require('../popover-AfnrAYck.cjs');
14
14
  const Txt = require('../Txt-CIS2G5Jx.cjs');
@@ -5,7 +5,7 @@ import { ListFilterPlusIcon, ArrowLeftIcon, FilterIcon, PlusIcon, X, ListFilterP
5
5
  import { useMemo, useState, useRef, useCallback, useEffect, forwardRef } from 'react';
6
6
  import { B as Button } from '../Button-D8a5EWJ5.js';
7
7
  import { C as Combobox } from '../combobox-Cff50hgT.js';
8
- import { F as Field, c as FieldError } from '../field-Dl1zeXTv.js';
8
+ import { F as Field, c as FieldError } from '../field-CfA5-ixH.js';
9
9
  import '../field-control-aria-DB6y41tQ.js';
10
10
  import { P as Popover, b as PopoverTrigger, a as PopoverContent } from '../popover-BqRniR9J.js';
11
11
  import { T as Txt } from '../Txt-BtIGLRk1.js';
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const searchInput = require('../search-input-CMNy0JWd.cjs');
5
+ const searchInput = require('../search-input-CGNENJDh.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { S as SearchInput } from '../search-input-C9qFBzn6.js';
1
+ export { S as SearchInput } from '../search-input-cIYk0pl3.js';
2
2
  //# sourceMappingURL=SearchInput.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const section = require('../section-skBYREaR.cjs');
5
+ const section = require('../section-BikCyHdf.cjs');
6
6
 
7
7
 
8
8