{"version":3,"file":"QuestionCard.mjs","names":["React","UdpCard","UdpText","UdpIcon","getFieldTypeIcon","QuestionViz","MUTED","bodyStyle","height","padding","display","flexDirection","gap","minHeight","headerStyle","alignItems","flexShrink","iconBoxStyle","width","borderRadius","justifyContent","background","color","titleWrapStyle","minWidth","flex","titleClampStyle","WebkitLineClamp","WebkitBoxOrient","overflow","respStyle","whiteSpace","vizAreaStyle","cardHostStyle","active","scrollMarginTop","outline","outlineOffset","transition","QuestionCard","t0","$","_c","domId","question","insight","fieldTypeName","answered","skipped","total","t1","toLocaleString","summary","label","questionText","name","t2","t3","fieldTypeId","t4","t5","t6","t7","Symbol","for","t8","t9","t10","t11","t12","t13","t14","t15"],"sources":["../../../../src/udp/pages/UdpQuestionFormOverviewPage/QuestionCard.jsx"],"sourcesContent":["import React from 'react';\nimport { UdpCard, UdpText, UdpIcon } from '../../../UI/fluent-web-components';\nimport { getFieldTypeIcon } from './questionInsights';\nimport { QuestionViz } from './QuestionViz';\n\n// One question's breakdown as a card in the Questions-tab grid. Every card is\n// the same size (the grid fixes the cell height; the card fills it): a compact\n// header (type icon + clamped label + type + response summary) over a viz area\n// that flexes to fill the rest, so the visualizations all line up across cards.\n// `domId` lets the rail scroll to it; `active` gives it a brand ring.\n\nconst MUTED = 'var(--colorNeutralForeground3)';\nconst bodyStyle = {\n  height: '100%',\n  padding: 14,\n  display: 'flex',\n  flexDirection: 'column',\n  gap: 10,\n  minHeight: 0,\n};\nconst headerStyle = { display: 'flex', alignItems: 'flex-start', gap: 10, flexShrink: 0 };\nconst iconBoxStyle = {\n  flexShrink: 0,\n  width: 28,\n  height: 28,\n  borderRadius: 6,\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  background: 'var(--colorNeutralBackground3)',\n  color: 'var(--colorNeutralForeground2)',\n};\nconst titleWrapStyle = { minWidth: 0, flex: 1 };\n// Clamp to two lines so the header (and therefore every card) stays a uniform\n// height regardless of question-text length.\nconst titleClampStyle = {\n  display: '-webkit-box',\n  WebkitLineClamp: 2,\n  WebkitBoxOrient: 'vertical',\n  overflow: 'hidden',\n};\nconst respStyle = { color: MUTED, whiteSpace: 'nowrap', flexShrink: 0 };\nconst vizAreaStyle = { flex: 1, minHeight: 0 };\n\nconst cardHostStyle = (active) => ({\n  scrollMarginTop: 80,\n  borderRadius: 'var(--borderRadiusMedium)',\n  outline: active ? '2px solid var(--colorBrandStroke1)' : '2px solid transparent',\n  outlineOffset: -1,\n  transition: 'outline-color 0.2s ease',\n});\n\nexport const QuestionCard = ({ domId, question, insight, fieldTypeName, active }) => {\n  const answered = insight?.answered ?? 0;\n  const skipped = insight?.skipped ?? 0;\n  const total = answered + skipped;\n  const summary =\n    total === 0\n      ? 'No responses'\n      : skipped > 0\n        ? `${answered.toLocaleString()} of ${total.toLocaleString()}`\n        : `${answered.toLocaleString()} answered`;\n  const label = question?.questionText || question?.name || 'Untitled';\n\n  return (\n    <UdpCard\n      id={domId}\n      variant='outlined'\n      bodyPadding={false}\n      height='100%'\n      style={cardHostStyle(active)}\n    >\n      <div style={bodyStyle}>\n        <div style={headerStyle}>\n          <div style={iconBoxStyle}>\n            <UdpIcon name={getFieldTypeIcon(question?.fieldTypeId)} size='sm' />\n          </div>\n          <div style={titleWrapStyle}>\n            <UdpText variant='subtitle2' weight='semibold' block style={titleClampStyle} title={label}>\n              {label}\n            </UdpText>\n            <UdpText variant='caption1' block style={{ color: MUTED }}>\n              {fieldTypeName ?? 'Question'}\n            </UdpText>\n          </div>\n          <UdpText variant='caption1' style={respStyle}>\n            {summary}\n          </UdpText>\n        </div>\n        <div style={vizAreaStyle}>\n          <QuestionViz insight={insight} answered={answered} />\n        </div>\n      </div>\n    </UdpCard>\n  );\n};\n"],"mappings":"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"}