@fivepixels-js/react 0.2.2 → 0.2.4

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 (219) hide show
  1. package/README.md +2 -0
  2. package/dist/components/icons/Icons.d.ts +9 -0
  3. package/dist/components/icons/Icons.d.ts.map +1 -1
  4. package/dist/components/icons/Icons.js +12 -0
  5. package/dist/components/icons/Icons.js.map +1 -1
  6. package/dist/components/overlay/DotWaveOverlay.d.ts.map +1 -1
  7. package/dist/components/overlay/DotWaveOverlay.js +1 -0
  8. package/dist/components/overlay/DotWaveOverlay.js.map +1 -1
  9. package/dist/components/overlay/ReportOverlayLayer.d.ts.map +1 -1
  10. package/dist/components/overlay/ReportOverlayLayer.js +3 -3
  11. package/dist/components/overlay/ReportOverlayLayer.js.map +1 -1
  12. package/dist/components/overlay/TargetHighlights.d.ts +2 -1
  13. package/dist/components/overlay/TargetHighlights.d.ts.map +1 -1
  14. package/dist/components/overlay/TargetHighlights.js +3 -2
  15. package/dist/components/overlay/TargetHighlights.js.map +1 -1
  16. package/dist/components/panel/PanelProjectFooter.d.ts.map +1 -1
  17. package/dist/components/panel/PanelProjectFooter.js +1 -4
  18. package/dist/components/panel/PanelProjectFooter.js.map +1 -1
  19. package/dist/components/panel/PanelSettings.d.ts.map +1 -1
  20. package/dist/components/panel/PanelSettings.js +2 -2
  21. package/dist/components/panel/PanelSettings.js.map +1 -1
  22. package/dist/components/panel/ReportDraftForm.d.ts.map +1 -1
  23. package/dist/components/panel/ReportDraftForm.js +75 -34
  24. package/dist/components/panel/ReportDraftForm.js.map +1 -1
  25. package/dist/components/panel/ReportFeedbackList.d.ts.map +1 -1
  26. package/dist/components/panel/ReportFeedbackList.js +5 -4
  27. package/dist/components/panel/ReportFeedbackList.js.map +1 -1
  28. package/dist/components/panel/ReportImportConfirmDialog.d.ts +3 -2
  29. package/dist/components/panel/ReportImportConfirmDialog.d.ts.map +1 -1
  30. package/dist/components/panel/ReportImportConfirmDialog.js +8 -1
  31. package/dist/components/panel/ReportImportConfirmDialog.js.map +1 -1
  32. package/dist/components/panel/experimental/ReportPageBriefPanel.js +1 -1
  33. package/dist/components/panel/experimental/ReportPageBriefPanel.js.map +1 -1
  34. package/dist/components/panel/feedback/AssigneeThreadEntry.d.ts.map +1 -1
  35. package/dist/components/panel/feedback/AssigneeThreadEntry.js +11 -2
  36. package/dist/components/panel/feedback/AssigneeThreadEntry.js.map +1 -1
  37. package/dist/components/panel/feedback/DraftComposerToolbar.d.ts +25 -0
  38. package/dist/components/panel/feedback/DraftComposerToolbar.d.ts.map +1 -0
  39. package/dist/components/panel/feedback/DraftComposerToolbar.js +63 -0
  40. package/dist/components/panel/feedback/DraftComposerToolbar.js.map +1 -0
  41. package/dist/components/panel/feedback/FeedbackCaseEditor.d.ts +7 -2
  42. package/dist/components/panel/feedback/FeedbackCaseEditor.d.ts.map +1 -1
  43. package/dist/components/panel/feedback/FeedbackCaseEditor.js +28 -9
  44. package/dist/components/panel/feedback/FeedbackCaseEditor.js.map +1 -1
  45. package/dist/components/panel/feedback/FeedbackCaseList.d.ts +4 -2
  46. package/dist/components/panel/feedback/FeedbackCaseList.d.ts.map +1 -1
  47. package/dist/components/panel/feedback/FeedbackCaseList.js +5 -4
  48. package/dist/components/panel/feedback/FeedbackCaseList.js.map +1 -1
  49. package/dist/components/panel/feedback/FeedbackCategorySelector.d.ts.map +1 -1
  50. package/dist/components/panel/feedback/FeedbackCategorySelector.js +10 -7
  51. package/dist/components/panel/feedback/FeedbackCategorySelector.js.map +1 -1
  52. package/dist/components/panel/feedback/FeedbackComposer.d.ts +12 -2
  53. package/dist/components/panel/feedback/FeedbackComposer.d.ts.map +1 -1
  54. package/dist/components/panel/feedback/FeedbackComposer.js +135 -20
  55. package/dist/components/panel/feedback/FeedbackComposer.js.map +1 -1
  56. package/dist/components/panel/feedback/FeedbackDeleteAction.d.ts +16 -0
  57. package/dist/components/panel/feedback/FeedbackDeleteAction.d.ts.map +1 -0
  58. package/dist/components/panel/feedback/FeedbackDeleteAction.js +28 -0
  59. package/dist/components/panel/feedback/FeedbackDeleteAction.js.map +1 -0
  60. package/dist/components/panel/feedback/FeedbackHoverCard.d.ts.map +1 -1
  61. package/dist/components/panel/feedback/FeedbackHoverCard.js +5 -4
  62. package/dist/components/panel/feedback/FeedbackHoverCard.js.map +1 -1
  63. package/dist/components/panel/feedback/FeedbackListItem.d.ts.map +1 -1
  64. package/dist/components/panel/feedback/FeedbackListItem.js +8 -26
  65. package/dist/components/panel/feedback/FeedbackListItem.js.map +1 -1
  66. package/dist/components/panel/feedback/FeedbackThread.d.ts.map +1 -1
  67. package/dist/components/panel/feedback/FeedbackThread.js +29 -10
  68. package/dist/components/panel/feedback/FeedbackThread.js.map +1 -1
  69. package/dist/components/panel/feedback/GitIssuedThreadEntry.js +1 -1
  70. package/dist/components/panel/feedback/GitIssuedThreadEntry.js.map +1 -1
  71. package/dist/components/panel/feedback/MentionComposerInput.d.ts +17 -0
  72. package/dist/components/panel/feedback/MentionComposerInput.d.ts.map +1 -0
  73. package/dist/components/panel/feedback/MentionComposerInput.js +343 -0
  74. package/dist/components/panel/feedback/MentionComposerInput.js.map +1 -0
  75. package/dist/components/panel/feedback/MentionMessage.d.ts +9 -0
  76. package/dist/components/panel/feedback/MentionMessage.d.ts.map +1 -0
  77. package/dist/components/panel/feedback/MentionMessage.js +27 -0
  78. package/dist/components/panel/feedback/MentionMessage.js.map +1 -0
  79. package/dist/components/panel/feedback/PickTargetSnippet.d.ts +3 -2
  80. package/dist/components/panel/feedback/PickTargetSnippet.d.ts.map +1 -1
  81. package/dist/components/panel/feedback/PickTargetSnippet.js +12 -4
  82. package/dist/components/panel/feedback/PickTargetSnippet.js.map +1 -1
  83. package/dist/components/panel/feedback/ThreadAuthorMeta.d.ts.map +1 -1
  84. package/dist/components/panel/feedback/ThreadAuthorMeta.js +4 -1
  85. package/dist/components/panel/feedback/ThreadAuthorMeta.js.map +1 -1
  86. package/dist/components/panel/feedback/ThreadChildReply.d.ts.map +1 -1
  87. package/dist/components/panel/feedback/ThreadChildReply.js +2 -1
  88. package/dist/components/panel/feedback/ThreadChildReply.js.map +1 -1
  89. package/dist/components/panel/feedback/ThreadEntryActions.d.ts +3 -1
  90. package/dist/components/panel/feedback/ThreadEntryActions.d.ts.map +1 -1
  91. package/dist/components/panel/feedback/ThreadEntryActions.js +26 -6
  92. package/dist/components/panel/feedback/ThreadEntryActions.js.map +1 -1
  93. package/dist/components/point/MarkerCaseSidebar.d.ts.map +1 -1
  94. package/dist/components/point/MarkerCaseSidebar.js +9 -3
  95. package/dist/components/point/MarkerCaseSidebar.js.map +1 -1
  96. package/dist/components/point/MarkerFeedbackWindow.d.ts.map +1 -1
  97. package/dist/components/point/MarkerFeedbackWindow.js +14 -6
  98. package/dist/components/point/MarkerFeedbackWindow.js.map +1 -1
  99. package/dist/components/point/ReportDraftMarker.d.ts.map +1 -1
  100. package/dist/components/point/ReportDraftMarker.js +3 -2
  101. package/dist/components/point/ReportDraftMarker.js.map +1 -1
  102. package/dist/components/point/ReportMarkersLayer.d.ts.map +1 -1
  103. package/dist/components/point/ReportMarkersLayer.js +2 -2
  104. package/dist/components/point/ReportMarkersLayer.js.map +1 -1
  105. package/dist/components/report/ReportView.d.ts.map +1 -1
  106. package/dist/components/report/ReportView.js +4 -7
  107. package/dist/components/report/ReportView.js.map +1 -1
  108. package/dist/constants/threadActionStyles.d.ts +16 -0
  109. package/dist/constants/threadActionStyles.d.ts.map +1 -0
  110. package/dist/constants/threadActionStyles.js +52 -0
  111. package/dist/constants/threadActionStyles.js.map +1 -0
  112. package/dist/hooks/report/assembleReportContextValue.d.ts +27 -19
  113. package/dist/hooks/report/assembleReportContextValue.d.ts.map +1 -1
  114. package/dist/hooks/report/assembleReportContextValue.js +8 -2
  115. package/dist/hooks/report/assembleReportContextValue.js.map +1 -1
  116. package/dist/hooks/report/useReplyCaseEdit.d.ts +8 -2
  117. package/dist/hooks/report/useReplyCaseEdit.d.ts.map +1 -1
  118. package/dist/hooks/report/useReplyCaseEdit.js +40 -4
  119. package/dist/hooks/report/useReplyCaseEdit.js.map +1 -1
  120. package/dist/hooks/report/useReportAuthSession.d.ts +1 -1
  121. package/dist/hooks/report/useReportDraftSession.d.ts +4 -2
  122. package/dist/hooks/report/useReportDraftSession.d.ts.map +1 -1
  123. package/dist/hooks/report/useReportDraftSession.js +30 -2
  124. package/dist/hooks/report/useReportDraftSession.js.map +1 -1
  125. package/dist/hooks/report/useReportMarkers.d.ts +2 -3
  126. package/dist/hooks/report/useReportMarkers.d.ts.map +1 -1
  127. package/dist/hooks/report/useReportMarkers.js +11 -9
  128. package/dist/hooks/report/useReportMarkers.js.map +1 -1
  129. package/dist/hooks/report/useReportMutations.d.ts +6 -1
  130. package/dist/hooks/report/useReportMutations.d.ts.map +1 -1
  131. package/dist/hooks/report/useReportMutations.js +43 -2
  132. package/dist/hooks/report/useReportMutations.js.map +1 -1
  133. package/dist/hooks/report/useReportPanelShell.js +8 -8
  134. package/dist/hooks/report/useReportPanelShell.js.map +1 -1
  135. package/dist/hooks/report/useReportReplyReview.d.ts +8 -1
  136. package/dist/hooks/report/useReportReplyReview.d.ts.map +1 -1
  137. package/dist/hooks/report/useReportReplyReview.js +37 -20
  138. package/dist/hooks/report/useReportReplyReview.js.map +1 -1
  139. package/dist/hooks/report/useReportState.d.ts +8 -2
  140. package/dist/hooks/report/useReportState.d.ts.map +1 -1
  141. package/dist/hooks/report/useReportState.js +31 -3
  142. package/dist/hooks/report/useReportState.js.map +1 -1
  143. package/dist/hooks/usePanelFeedbackTransfer.d.ts +4 -4
  144. package/dist/hooks/usePanelFeedbackTransfer.d.ts.map +1 -1
  145. package/dist/hooks/usePanelFeedbackTransfer.js +24 -17
  146. package/dist/hooks/usePanelFeedbackTransfer.js.map +1 -1
  147. package/dist/i18n/en.d.ts.map +1 -1
  148. package/dist/i18n/en.js +46 -9
  149. package/dist/i18n/en.js.map +1 -1
  150. package/dist/i18n/ko.d.ts.map +1 -1
  151. package/dist/i18n/ko.js +53 -16
  152. package/dist/i18n/ko.js.map +1 -1
  153. package/dist/i18n/types.d.ts +35 -3
  154. package/dist/i18n/types.d.ts.map +1 -1
  155. package/dist/providers/ReportProvider.d.ts.map +1 -1
  156. package/dist/providers/ReportProvider.js +1 -0
  157. package/dist/providers/ReportProvider.js.map +1 -1
  158. package/dist/providers/reportContext.d.ts +42 -12
  159. package/dist/providers/reportContext.d.ts.map +1 -1
  160. package/dist/providers/reportContext.js +1 -0
  161. package/dist/providers/reportContext.js.map +1 -1
  162. package/dist/providers/reportContextPartitions.d.ts +1 -1
  163. package/dist/providers/reportContextPartitions.d.ts.map +1 -1
  164. package/dist/providers/reportContextPartitions.js +6 -0
  165. package/dist/providers/reportContextPartitions.js.map +1 -1
  166. package/dist/storage/local/localStorageAdapter.d.ts.map +1 -1
  167. package/dist/storage/local/localStorageAdapter.js +2 -0
  168. package/dist/storage/local/localStorageAdapter.js.map +1 -1
  169. package/dist/styles/reportStylesheet.d.ts +1 -1
  170. package/dist/styles/reportStylesheet.d.ts.map +1 -1
  171. package/dist/styles/reportStylesheet.js +1 -1
  172. package/dist/styles/reportStylesheet.js.map +1 -1
  173. package/dist/types/mention.d.ts +17 -0
  174. package/dist/types/mention.d.ts.map +1 -0
  175. package/dist/types/mention.js +11 -0
  176. package/dist/types/mention.js.map +1 -0
  177. package/dist/types/report.d.ts +6 -0
  178. package/dist/types/report.d.ts.map +1 -1
  179. package/dist/types/report.js.map +1 -1
  180. package/dist/utils/feedback/feedbackDataTransfer.d.ts +9 -2
  181. package/dist/utils/feedback/feedbackDataTransfer.d.ts.map +1 -1
  182. package/dist/utils/feedback/feedbackDataTransfer.js +24 -16
  183. package/dist/utils/feedback/feedbackDataTransfer.js.map +1 -1
  184. package/dist/utils/feedback/feedbackImportMerge.d.ts +26 -0
  185. package/dist/utils/feedback/feedbackImportMerge.d.ts.map +1 -0
  186. package/dist/utils/feedback/feedbackImportMerge.js +97 -0
  187. package/dist/utils/feedback/feedbackImportMerge.js.map +1 -0
  188. package/dist/utils/feedback/feedbackPermissions.d.ts +8 -0
  189. package/dist/utils/feedback/feedbackPermissions.d.ts.map +1 -0
  190. package/dist/utils/feedback/feedbackPermissions.js +30 -0
  191. package/dist/utils/feedback/feedbackPermissions.js.map +1 -0
  192. package/dist/utils/feedback/validateFeedbackImport.d.ts.map +1 -1
  193. package/dist/utils/feedback/validateFeedbackImport.js +3 -1
  194. package/dist/utils/feedback/validateFeedbackImport.js.map +1 -1
  195. package/dist/utils/mention/elementMentions.d.ts +45 -0
  196. package/dist/utils/mention/elementMentions.d.ts.map +1 -0
  197. package/dist/utils/mention/elementMentions.js +286 -0
  198. package/dist/utils/mention/elementMentions.js.map +1 -0
  199. package/dist/utils/mention/mentionComposerDom.d.ts +31 -0
  200. package/dist/utils/mention/mentionComposerDom.d.ts.map +1 -0
  201. package/dist/utils/mention/mentionComposerDom.js +253 -0
  202. package/dist/utils/mention/mentionComposerDom.js.map +1 -0
  203. package/dist/utils/report/buildDraftFromReport.d.ts +5 -0
  204. package/dist/utils/report/buildDraftFromReport.d.ts.map +1 -0
  205. package/dist/utils/report/buildDraftFromReport.js +33 -0
  206. package/dist/utils/report/buildDraftFromReport.js.map +1 -0
  207. package/dist/utils/report/reportCases.d.ts +1 -1
  208. package/dist/utils/report/reportCases.d.ts.map +1 -1
  209. package/dist/utils/report/reportCases.js +6 -2
  210. package/dist/utils/report/reportCases.js.map +1 -1
  211. package/dist/utils/shared/format.d.ts +2 -0
  212. package/dist/utils/shared/format.d.ts.map +1 -1
  213. package/dist/utils/shared/format.js +19 -0
  214. package/dist/utils/shared/format.js.map +1 -1
  215. package/package.json +3 -2
  216. package/dist/components/panel/feedback/ComposerFooterWarning.d.ts +0 -6
  217. package/dist/components/panel/feedback/ComposerFooterWarning.d.ts.map +0 -1
  218. package/dist/components/panel/feedback/ComposerFooterWarning.js +0 -6
  219. package/dist/components/panel/feedback/ComposerFooterWarning.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { FEEDBACK_CATEGORIES } from "../../../constants/feedbackCategory.js";
4
+ import { ChevronDownIcon, SendIcon } from "../../../components/icons/Icons.js";
5
+ import { HoverTooltip } from "../../../components/ui/HoverTooltip.js";
6
+ import { PanelDropdownMenu, PanelDropdownMenuItem } from "../../../components/panel/PanelDropdownMenu.js";
7
+ import { useReportPreferences } from "../../../providers/reportContext.js";
8
+ import { mentionMessageToPlainText } from "../../../utils/mention/elementMentions.js";
9
+ const TOOLBAR_TRIGGER_CLASS = "inline-flex max-w-[140px] items-center gap-[4px] rounded-[8px] py-[2px] px-[4px] text-[12px] font-semibold text-[var(--adaptive-black600)] transition-colors hover:bg-[var(--adaptive-tintOpacity100)] hover:text-[var(--adaptive-black900)]";
10
+ function truncateLabel(text, fallback) {
11
+ const trimmed = text.trim();
12
+ if (!trimmed) {
13
+ return fallback;
14
+ }
15
+ return trimmed.length > 18 ? `${trimmed.slice(0, 18)}…` : trimmed;
16
+ }
17
+ export function DraftComposerToolbar({ cases, activeCaseId, onSelectCase, onAddCase, onRemoveCase, onInsertAtMention, category, onCategoryChange, categoryNeedsAttention = false, onSubmit, isSubmitting = false, submitLabel, submittingLabel, showGitHubIssueOnCreate = false, onGitHubIssueSubmit, isGitHubIssueSubmitting = false, isGitHubIssueConfirming = false, onGitHubIssueConfirmingChange, }) {
18
+ const { messages } = useReportPreferences();
19
+ const [casesOpen, setCasesOpen] = useState(false);
20
+ const [categoryOpen, setCategoryOpen] = useState(false);
21
+ const isActionDisabled = isSubmitting || isGitHubIssueSubmitting;
22
+ const resolvedSubmitLabel = submitLabel ?? messages.composer.draftComplete;
23
+ const resolvedSubmittingLabel = submittingLabel ?? messages.composer.draftCompleting;
24
+ const activeCaseIndex = Math.max(0, cases.findIndex((item) => item.id === activeCaseId));
25
+ const activeCase = cases[activeCaseIndex] ?? cases[0] ?? null;
26
+ const casesLabel = activeCase
27
+ ? truncateLabel(mentionMessageToPlainText(activeCase.text, activeCase.mentions), messages.composer.caseTabLabel(activeCaseIndex + 1))
28
+ : messages.composer.casesDropdownLabel;
29
+ const categoryLabel = category ? messages.composer.categoryOption[category] : messages.composer.categoryLabel;
30
+ const handleGitHubIssueClick = () => {
31
+ if (isActionDisabled || !onGitHubIssueSubmit) {
32
+ return;
33
+ }
34
+ if (!isGitHubIssueConfirming) {
35
+ onGitHubIssueConfirmingChange?.(true);
36
+ return;
37
+ }
38
+ onGitHubIssueConfirmingChange?.(false);
39
+ onGitHubIssueSubmit();
40
+ };
41
+ return (_jsxs("div", { className: "flex shrink-0 items-center gap-[6px] px-[8px] py-[6px]", children: [_jsx(HoverTooltip, { label: messages.composer.addCase, children: _jsx("button", { type: "button", "data-fivepixels-interactive": "", onClick: onAddCase, disabled: isActionDisabled, "aria-label": messages.composer.addCaseTabAriaLabel, className: "inline-flex h-[28px] w-[28px] shrink-0 items-center justify-center rounded-[8px] text-[18px] font-medium leading-none text-[var(--adaptive-black600)] transition-colors hover:bg-[var(--adaptive-tintOpacity100)] hover:text-[var(--adaptive-black900)] disabled:opacity-50", children: "+" }) }), _jsxs("section", { className: "flex flex-col gap-[4px]", children: [_jsxs("section", { className: "flex items-center", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black500)]", children: "case" }), _jsx(PanelDropdownMenu, { open: casesOpen, onClose: () => setCasesOpen(false), align: "left", menuClassName: "min-w-[180px] rounded-[10px]", trigger: _jsxs("button", { type: "button", "data-fivepixels-interactive": "", "aria-expanded": casesOpen, "aria-label": messages.composer.casesDropdownAriaLabel, disabled: isActionDisabled, onClick: () => {
42
+ setCategoryOpen(false);
43
+ setCasesOpen((current) => !current);
44
+ }, className: `${TOOLBAR_TRIGGER_CLASS} disabled:opacity-50`, children: [_jsx("span", { className: "min-w-0 truncate text-[12px]", children: casesLabel }), _jsx(ChevronDownIcon, { className: "h-[12px] w-[12px] shrink-0" })] }), children: cases.map((item, index) => {
45
+ const isActive = item.id === activeCaseId;
46
+ return (_jsxs("div", { className: "flex items-stretch", children: [_jsx(PanelDropdownMenuItem, { active: isActive, onClick: () => {
47
+ onSelectCase(item.id);
48
+ setCasesOpen(false);
49
+ }, children: _jsx("span", { className: "min-w-0 flex-1 truncate", children: truncateLabel(mentionMessageToPlainText(item.text, item.mentions), messages.composer.caseTabLabel(index + 1)) }) }), cases.length > 1 ? (_jsx("button", { type: "button", "data-fivepixels-interactive": "", onClick: () => {
50
+ onRemoveCase(item.id);
51
+ if (cases.length <= 2) {
52
+ setCasesOpen(false);
53
+ }
54
+ }, "aria-label": messages.composer.removeCaseAriaLabel(index + 1), className: "inline-flex w-[28px] shrink-0 items-center justify-center text-[14px] text-[var(--adaptive-black500)] hover:bg-[var(--adaptive-black100)] hover:text-[var(--adaptive-black900)]", children: "\u00D7" })) : null] }, item.id));
55
+ }) })] }), _jsxs("section", { className: "flex items-center", children: [_jsx("p", { className: "text-[12px] text-[var(--adaptive-black500)]", children: "category" }), _jsx(PanelDropdownMenu, { open: categoryOpen, onClose: () => setCategoryOpen(false), align: "left", menuClassName: "min-w-[140px] rounded-[10px]", trigger: _jsxs("button", { type: "button", "data-fivepixels-interactive": "", "aria-expanded": categoryOpen, "aria-label": messages.composer.categoryAriaLabel, "aria-invalid": categoryNeedsAttention || undefined, disabled: isActionDisabled, onClick: () => {
56
+ setCasesOpen(false);
57
+ setCategoryOpen((current) => !current);
58
+ }, className: `${TOOLBAR_TRIGGER_CLASS} disabled:opacity-50 ` + (categoryNeedsAttention ? "fivepixels-validation-attention text-rose-500 hover:text-rose-600" : ""), children: [_jsx("span", { className: "min-w-0 truncate text-[12px]", children: categoryLabel }), _jsx(ChevronDownIcon, { className: "h-[12px] w-[12px] shrink-0" })] }), children: FEEDBACK_CATEGORIES.map((item) => (_jsx(PanelDropdownMenuItem, { active: category === item, onClick: () => {
59
+ onCategoryChange(item);
60
+ setCategoryOpen(false);
61
+ }, children: messages.composer.categoryOption[item] }, item))) })] })] }), _jsx("div", { className: "min-w-[8px] flex-1" }), showGitHubIssueOnCreate && onGitHubIssueSubmit ? (_jsxs("button", { type: "button", "data-fivepixels-interactive": "", disabled: isActionDisabled, onClick: handleGitHubIssueClick, className: "inline-flex h-[28px] items-center justify-center rounded-full border border-[var(--adaptive-border-subtle)] px-[10px] text-[12px] font-semibold text-[var(--adaptive-black500)] disabled:opacity-50", "aria-label": isGitHubIssueConfirming ? messages.feedbackList.gitIssueConfirmAriaLabel : messages.composer.gitIssueSendAriaLabel, title: isGitHubIssueConfirming ? messages.feedbackList.gitIssueConfirmTitle : messages.composer.gitIssueSendTitle, children: ["+ ", isGitHubIssueSubmitting ? messages.composer.gitIssueSendingLabel : isGitHubIssueConfirming ? messages.feedbackList.gitIssueConfirmLabel : messages.composer.gitIssueSendLabel] })) : null, _jsx(HoverTooltip, { label: resolvedSubmitLabel, disabled: isActionDisabled, children: _jsx("button", { type: "button", "data-fivepixels-interactive": "", disabled: isActionDisabled, onClick: onSubmit, className: "inline-flex h-[32px] w-[32px] shrink-0 items-center justify-center rounded-full bg-[var(--adaptive-black900)] text-[var(--adaptive-black50)] disabled:opacity-50", "aria-label": isSubmitting ? resolvedSubmittingLabel : resolvedSubmitLabel, children: _jsx(SendIcon, { className: "h-[14px] w-[14px]" }) }) })] }));
62
+ }
63
+ //# sourceMappingURL=DraftComposerToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraftComposerToolbar.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/DraftComposerToolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAyB,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAuB/E,MAAM,qBAAqB,GACvB,8OAA8O,CAAC;AAEnP,SAAS,aAAa,CAAC,IAAY,EAAE,QAAgB;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EACjC,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,sBAAsB,GAAG,KAAK,EAC9B,QAAQ,EACR,YAAY,GAAG,KAAK,EACpB,WAAW,EACX,eAAe,EACf,uBAAuB,GAAG,KAAK,EAC/B,mBAAmB,EACnB,uBAAuB,GAAG,KAAK,EAC/B,uBAAuB,GAAG,KAAK,EAC/B,6BAA6B,GACL;IACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,YAAY,IAAI,uBAAuB,CAAC;IACjE,MAAM,mBAAmB,GAAG,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC3E,MAAM,uBAAuB,GAAG,eAAe,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;IACrF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC5B,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CACtD,CAAC;IACF,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9D,MAAM,UAAU,GAAG,UAAU;QACzB,CAAC,CAAC,aAAa,CAAC,yBAAyB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QACrI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;IAE9G,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAChC,IAAI,gBAAgB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,OAAO;QACX,CAAC;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC3B,6BAA6B,EAAE,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO;QACX,CAAC;QAED,6BAA6B,EAAE,CAAC,KAAK,CAAC,CAAC;QACvC,mBAAmB,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAC,wDAAwD,aACnE,KAAC,YAAY,IAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,YAC1C,iBACI,IAAI,EAAC,QAAQ,iCACe,EAAE,EAC9B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,gBAAgB,gBACd,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EACjD,SAAS,EAAC,6QAA6Q,kBAGlR,GACE,EAsBf,mBAAS,SAAS,EAAC,yBAAyB,aACxC,mBAAS,SAAS,EAAC,mBAAmB,aAClC,YAAG,SAAS,EAAC,6CAA6C,qBAAS,EAEnE,KAAC,iBAAiB,IACd,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAClC,KAAK,EAAC,MAAM,EACZ,aAAa,EAAC,8BAA8B,EAC5C,OAAO,EACH,kBACI,IAAI,EAAC,QAAQ,iCACe,EAAE,mBACf,SAAS,gBACZ,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EACpD,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE;wCACV,eAAe,CAAC,KAAK,CAAC,CAAC;wCACvB,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oCACxC,CAAC,EACD,SAAS,EAAE,GAAG,qBAAqB,sBAAsB,aAEzD,eAAM,SAAS,EAAC,8BAA8B,YAAE,UAAU,GAAQ,EAClE,KAAC,eAAe,IAAC,SAAS,EAAC,4BAA4B,GAAG,IACrD,YAGZ,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oCACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC;oCAE1C,OAAO,CACH,eAEI,SAAS,EAAC,oBAAoB,aAE9B,KAAC,qBAAqB,IAClB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,GAAG,EAAE;oDACV,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oDACtB,YAAY,CAAC,KAAK,CAAC,CAAC;gDACxB,CAAC,YAED,eAAM,SAAS,EAAC,yBAAyB,YAAE,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAQ,GAC5I,EACvB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChB,iBACI,IAAI,EAAC,QAAQ,iCACe,EAAE,EAC9B,OAAO,EAAE,GAAG,EAAE;oDACV,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oDACtB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wDACpB,YAAY,CAAC,KAAK,CAAC,CAAC;oDACxB,CAAC;gDACL,CAAC,gBACW,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC,CAAC,EAC5D,SAAS,EAAC,iLAAiL,uBAGtL,CACZ,CAAC,CAAC,CAAC,IAAI,KA3BH,IAAI,CAAC,EAAE,CA4BV,CACT,CAAC;gCACN,CAAC,CAAC,GACc,IACd,EAEV,mBAAS,SAAS,EAAC,mBAAmB,aAClC,YAAG,SAAS,EAAC,6CAA6C,yBAAa,EAEvE,KAAC,iBAAiB,IACd,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EACrC,KAAK,EAAC,MAAM,EACZ,aAAa,EAAC,8BAA8B,EAC5C,OAAO,EACH,kBACI,IAAI,EAAC,QAAQ,iCACe,EAAE,mBACf,YAAY,gBACf,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,kBACjC,sBAAsB,IAAI,SAAS,EACjD,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE;wCACV,YAAY,CAAC,KAAK,CAAC,CAAC;wCACpB,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oCAC3C,CAAC,EACD,SAAS,EAAE,GAAG,qBAAqB,uBAAuB,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,EAAE,CAAC,aAEhK,eAAM,SAAS,EAAC,8BAA8B,YAAE,aAAa,GAAQ,EACrE,KAAC,eAAe,IAAC,SAAS,EAAC,4BAA4B,GAAG,IACrD,YAGZ,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC/B,KAAC,qBAAqB,IAElB,MAAM,EAAE,QAAQ,KAAK,IAAI,EACzB,OAAO,EAAE,GAAG,EAAE;wCACV,gBAAgB,CAAC,IAAI,CAAC,CAAC;wCACvB,eAAe,CAAC,KAAK,CAAC,CAAC;oCAC3B,CAAC,YAEA,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAPlC,IAAI,CAQW,CAC3B,CAAC,GACc,IACd,IACJ,EAEV,cAAK,SAAS,EAAC,oBAAoB,GAAG,EAErC,uBAAuB,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAC9C,kBACI,IAAI,EAAC,QAAQ,iCACe,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAC,qMAAqM,gBACnM,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAC9H,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,mBAE9G,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,IAC3K,CACZ,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,YAAY,IACT,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,gBAAgB,YAE1B,iBACI,IAAI,EAAC,QAAQ,iCACe,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAC,kKAAkK,gBAChK,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,mBAAmB,YAExE,KAAC,QAAQ,IAAC,SAAS,EAAC,mBAAmB,GAAG,GACrC,GACE,IACb,CACT,CAAC;AACN,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import type { ReportCase } from "../../../types/report.js";
2
+ import type { ElementMention } from "../../../types/mention.js";
2
3
  type FeedbackCaseEditorProps = {
3
4
  cases: ReportCase[];
4
- onCaseChange: (caseId: string, text: string) => void;
5
+ onCaseChange: (caseId: string, text: string, mentions?: ElementMention[]) => void;
5
6
  onAddCase: () => void;
6
7
  onRemoveCase: (caseId: string) => void;
7
8
  autoFocus?: boolean;
@@ -9,7 +10,11 @@ type FeedbackCaseEditorProps = {
9
10
  needsAttention?: boolean;
10
11
  attentionKey?: number;
11
12
  emptyCaseIds?: string[];
13
+ showTabBar?: boolean;
14
+ activeCaseId?: string | null;
15
+ onActiveCaseIdChange?: (caseId: string) => void;
16
+ enableElementMentions?: boolean;
12
17
  };
13
- export declare function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCase, autoFocus, onSubmitShortcut, needsAttention, attentionKey, emptyCaseIds, }: FeedbackCaseEditorProps): import("react").JSX.Element | null;
18
+ export declare function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCase, autoFocus, onSubmitShortcut, needsAttention, attentionKey, emptyCaseIds, showTabBar, activeCaseId: controlledActiveCaseId, onActiveCaseIdChange, enableElementMentions, }: FeedbackCaseEditorProps): import("react").JSX.Element | null;
14
19
  export {};
15
20
  //# sourceMappingURL=FeedbackCaseEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackCaseEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,KAAK,uBAAuB,GAAG;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAmFF,wBAAgB,kBAAkB,CAAC,EAC/B,KAAK,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,SAAiB,EACjB,gBAAgB,EAChB,cAAsB,EACtB,YAAgB,EAChB,YAAiB,GACpB,EAAE,uBAAuB,sCAgHzB"}
1
+ {"version":3,"file":"FeedbackCaseEditor.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseEditor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,KAAK,uBAAuB,GAAG;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAClF,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AA2FF,wBAAgB,kBAAkB,CAAC,EAC/B,KAAK,EACL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,SAAiB,EACjB,gBAAgB,EAChB,cAAsB,EACtB,YAAgB,EAChB,YAAiB,EACjB,UAAiB,EACjB,YAAY,EAAE,sBAAsB,EACpC,oBAAoB,EACpB,qBAA6B,GAChC,EAAE,uBAAuB,sCAsJzB"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
3
3
  import { useReportPreferences } from "../../../providers/reportContext.js";
4
4
  import { FeedbackCaseTabBar } from "./FeedbackCaseTabBar.js";
5
+ import { MentionComposerInput } from "./MentionComposerInput.js";
5
6
  const CASE_INPUT_MIN_HEIGHT = 56;
6
7
  const CASE_INPUT_CLASS = "min-h-[56px] w-full flex-1 resize-none overflow-hidden px-[12px] py-[6px] text-[16px] leading-[1.5] text-[var(--adaptive-text-primary)] outline-none placeholder:text-[var(--adaptive-text-muted)] focus:border-[var(--adaptive-blue500)]";
7
8
  function syncCaseTextareaHeight(textarea) {
@@ -46,11 +47,29 @@ function resolveActiveCaseId(cases, activeCaseId) {
46
47
  }
47
48
  return cases[cases.length - 1]?.id ?? cases[0].id;
48
49
  }
49
- export function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCase, autoFocus = false, onSubmitShortcut, needsAttention = false, attentionKey = 0, emptyCaseIds = [], }) {
50
+ function focusCaseInput(caseId) {
51
+ const root = document.getElementById(`fivepixels-case-input-${caseId}`) ??
52
+ document.querySelector(`[data-fivepixels-case-input="${CSS.escape(caseId)}"]`);
53
+ const editable = root?.querySelector("[contenteditable='true']");
54
+ (editable ?? (root instanceof HTMLElement ? root : null))?.focus();
55
+ }
56
+ export function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCase, autoFocus = false, onSubmitShortcut, needsAttention = false, attentionKey = 0, emptyCaseIds = [], showTabBar = true, activeCaseId: controlledActiveCaseId, onActiveCaseIdChange, enableElementMentions = false, }) {
50
57
  const { messages } = useReportPreferences();
51
58
  const previousCaseCountRef = useRef(cases.length);
52
59
  const containerRef = useRef(null);
53
- const [activeCaseId, setActiveCaseId] = useState(() => cases[0]?.id ?? null);
60
+ const [uncontrolledActiveCaseId, setUncontrolledActiveCaseId] = useState(() => cases[0]?.id ?? null);
61
+ const isActiveCaseControlled = controlledActiveCaseId !== undefined;
62
+ const activeCaseId = isActiveCaseControlled ? controlledActiveCaseId : uncontrolledActiveCaseId;
63
+ const setActiveCaseId = useCallback((caseId) => {
64
+ if (!caseId) {
65
+ return;
66
+ }
67
+ if (isActiveCaseControlled) {
68
+ onActiveCaseIdChange?.(caseId);
69
+ return;
70
+ }
71
+ setUncontrolledActiveCaseId(caseId);
72
+ }, [isActiveCaseControlled, onActiveCaseIdChange]);
54
73
  const resolvedActiveCaseId = resolveActiveCaseId(cases, activeCaseId);
55
74
  const activeCase = cases.find((item) => item.id === resolvedActiveCaseId) ?? null;
56
75
  const activeCaseIndex = activeCase ? cases.findIndex((item) => item.id === activeCase.id) : -1;
@@ -58,10 +77,10 @@ export function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCas
58
77
  const getCaseInputPlaceholder = useCallback((index) => messages.composer.caseInputPlaceholder(index), [messages.composer]);
59
78
  useEffect(() => {
60
79
  const nextActiveCaseId = resolveActiveCaseId(cases, activeCaseId);
61
- if (nextActiveCaseId !== activeCaseId) {
80
+ if (nextActiveCaseId && nextActiveCaseId !== activeCaseId) {
62
81
  setActiveCaseId(nextActiveCaseId);
63
82
  }
64
- }, [activeCaseId, cases]);
83
+ }, [activeCaseId, cases, setActiveCaseId]);
65
84
  useEffect(() => {
66
85
  if (cases.length <= previousCaseCountRef.current) {
67
86
  previousCaseCountRef.current = cases.length;
@@ -71,11 +90,11 @@ export function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCas
71
90
  if (lastCase) {
72
91
  setActiveCaseId(lastCase.id);
73
92
  window.requestAnimationFrame(() => {
74
- document.getElementById(`fivepixels-case-input-${lastCase.id}`)?.focus();
93
+ focusCaseInput(lastCase.id);
75
94
  });
76
95
  }
77
96
  previousCaseCountRef.current = cases.length;
78
- }, [cases]);
97
+ }, [cases, setActiveCaseId]);
79
98
  useEffect(() => {
80
99
  if (!needsAttention || attentionKey <= 0 || emptyCaseIds.length === 0) {
81
100
  return;
@@ -89,9 +108,9 @@ export function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCas
89
108
  }
90
109
  containerRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
91
110
  window.requestAnimationFrame(() => {
92
- document.getElementById(`fivepixels-case-input-${targetCaseId}`)?.focus();
111
+ focusCaseInput(targetCaseId);
93
112
  });
94
- }, [needsAttention, attentionKey, emptyCaseIds, resolvedActiveCaseId]);
113
+ }, [needsAttention, attentionKey, emptyCaseIds, resolvedActiveCaseId, setActiveCaseId]);
95
114
  const handleRemoveCase = (caseId) => {
96
115
  const removeIndex = cases.findIndex((item) => item.id === caseId);
97
116
  if (removeIndex < 0) {
@@ -106,6 +125,6 @@ export function FeedbackCaseEditor({ cases, onCaseChange, onAddCase, onRemoveCas
106
125
  if (!activeCase || activeCaseIndex < 0) {
107
126
  return null;
108
127
  }
109
- return (_jsxs("div", { ref: containerRef, className: "flex h-full min-h-0 flex-1 flex-col", children: [_jsx(FeedbackCaseTabBar, { variant: "editor", cases: cases, activeCaseId: resolvedActiveCaseId, onSelectCase: setActiveCaseId, onAddCase: onAddCase, onRemoveCase: handleRemoveCase, invalidCaseIds: needsAttention ? emptyCaseIds : [] }), _jsx("div", { role: "tabpanel", id: `fivepixels-case-panel-${activeCase.id}`, "aria-labelledby": `fivepixels-case-tab-${activeCase.id}`, className: "flex min-h-0 flex-1 flex-col overflow-y-auto px-[4px] py-[4px]", children: _jsx(CaseTextarea, { id: `fivepixels-case-input-${activeCase.id}`, autoFocus: autoFocus && activeCaseIndex === 0, value: activeCase.text, placeholder: getCaseInputPlaceholder(activeCaseIndex + 1), onChange: (text) => onCaseChange(activeCase.id, text), onSubmitShortcut: onSubmitShortcut, needsAttention: activeCaseNeedsAttention }) })] }));
128
+ return (_jsxs("div", { ref: containerRef, className: "flex h-full min-h-0 flex-1 flex-col", children: [showTabBar ? (_jsx(FeedbackCaseTabBar, { variant: "editor", cases: cases, activeCaseId: resolvedActiveCaseId, onSelectCase: setActiveCaseId, onAddCase: onAddCase, onRemoveCase: handleRemoveCase, invalidCaseIds: needsAttention ? emptyCaseIds : [] })) : null, _jsx("div", { role: "tabpanel", id: `fivepixels-case-panel-${activeCase.id}`, "aria-labelledby": `fivepixels-case-tab-${activeCase.id}`, className: "flex min-h-0 flex-1 flex-col overflow-y-auto px-[4px] py-[4px]", children: enableElementMentions ? (_jsx("div", { id: `fivepixels-case-input-${activeCase.id}`, "data-fivepixels-case-input": activeCase.id, className: activeCaseNeedsAttention ? "fivepixels-validation-attention rounded-[8px] bg-rose-500/10" : undefined, children: _jsx(MentionComposerInput, { value: activeCase.text, mentions: activeCase.mentions ?? [], onChange: ({ message, mentions }) => onCaseChange(activeCase.id, message, mentions), placeholder: getCaseInputPlaceholder(activeCaseIndex + 1), autoFocus: autoFocus && activeCaseIndex === 0, onSubmitShortcut: onSubmitShortcut }) })) : (_jsx(CaseTextarea, { id: `fivepixels-case-input-${activeCase.id}`, autoFocus: autoFocus && activeCaseIndex === 0, value: activeCase.text, placeholder: getCaseInputPlaceholder(activeCaseIndex + 1), onChange: (text) => onCaseChange(activeCase.id, text), onSubmitShortcut: onSubmitShortcut, needsAttention: activeCaseNeedsAttention })) })] }));
110
129
  }
111
130
  //# sourceMappingURL=FeedbackCaseEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackCaseEditor.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FeedbackCaseEditor.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseEditor.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ReportCase, ReportFeedback } from "../../../types/report.js";
2
+ import type { ElementMention } from "../../../types/mention.js";
2
3
  type FeedbackCaseListProps = {
3
4
  report: Pick<ReportFeedback, "id" | "cases" | "replies" | "author_name">;
4
5
  cases: ReportCase[];
@@ -12,10 +13,11 @@ type FeedbackCaseListProps = {
12
13
  onBeginEdit?: () => void;
13
14
  onCancelEdit?: () => void;
14
15
  onSaveEdit?: () => void;
15
- onCaseChange?: (caseId: string, text: string) => void;
16
+ onCaseChange?: (caseId: string, text: string, mentions?: ElementMention[]) => void;
16
17
  onAddCase?: () => void;
17
18
  onRemoveCase?: (caseId: string) => void;
19
+ enableElementMentions?: boolean;
18
20
  };
19
- export declare function FeedbackCaseList({ report, cases, isEditing, canEdit, isSaving, errorMessage, focusedCaseId, onSelectCase, onAllTabActiveChange, onBeginEdit, onCancelEdit, onSaveEdit, onCaseChange, onAddCase, onRemoveCase, }: FeedbackCaseListProps): import("react").JSX.Element;
21
+ export declare function FeedbackCaseList({ report, cases, isEditing, canEdit, isSaving, errorMessage, focusedCaseId, onSelectCase, onAllTabActiveChange, onBeginEdit, onCancelEdit, onSaveEdit, onCaseChange, onAddCase, onRemoveCase, enableElementMentions, }: FeedbackCaseListProps): import("react").JSX.Element;
20
22
  export {};
21
23
  //# sourceMappingURL=FeedbackCaseList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackCaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMpE,KAAK,qBAAqB,GAAG;IACzB,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC;IACzE,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAyDF,wBAAgB,gBAAgB,CAAC,EAC7B,MAAM,EACN,KAAK,EACL,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,YAAiB,EACjB,aAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,GACf,EAAE,qBAAqB,+BAoHvB"}
1
+ {"version":3,"file":"FeedbackCaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOzD,KAAK,qBAAqB,GAAG;IACzB,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC;IACzE,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACnF,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAyDF,wBAAgB,gBAAgB,CAAC,EAC7B,MAAM,EACN,KAAK,EACL,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,YAAiB,EACjB,aAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,qBAA6B,GAChC,EAAE,qBAAqB,+BAqHvB"}
@@ -2,6 +2,7 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from "react";
3
3
  import { useReportPreferences } from "../../../providers/reportContext.js";
4
4
  import { getCaseHandlerName } from "../../../utils/report/reportCases.js";
5
+ import { mentionMessageToPlainText } from "../../../utils/mention/elementMentions.js";
5
6
  import { FeedbackCaseEditor } from "./FeedbackCaseEditor.js";
6
7
  import { CASE_SELECTOR_ALL_TAB, CaseResolvedBadge, FeedbackCaseTabBar } from "./FeedbackCaseTabBar.js";
7
8
  function resolveFocusedCaseId(cases, focusedCaseId) {
@@ -15,10 +16,10 @@ function AllCasesList({ report, cases, onSelectCase }) {
15
16
  return (_jsx("ul", { className: "flex flex-col gap-[6px] px-[8px] py-[4px]", children: cases.map((item, index) => {
16
17
  const isOpen = item.status === "open";
17
18
  const handlerName = getCaseHandlerName(report, item.id);
18
- return (_jsx("li", { children: _jsxs("button", { type: "button", "data-fivepixels-interactive": "", onClick: () => onSelectCase(item.id), className: "flex w-full items-start gap-[6px] rounded-[8px] px-[4px] py-[6px] text-left hover:bg-[var(--adaptive-surface-muted)]/60", children: [_jsxs("span", { className: "w-[20px] shrink-0 tabular-nums text-[12px] text-[var(--adaptive-black500)]", children: [index + 1, "."] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("span", { className: `text-[14px] leading-[1.5] text-[var(--adaptive-text-primary)] ${item.status === "resolved" ? "text-[var(--adaptive-black600)] line-through" : ""}`, children: item.text }), isOpen ? (_jsxs("p", { className: "mt-[2px] text-[11px] text-[var(--adaptive-black500)]", children: [messages.cases.assignee, ": ", handlerName ?? messages.cases.unassigned] })) : null] }), _jsx(CaseResolvedBadge, { resolved: item.status === "resolved", resolvedLabel: messages.cases.resolved, openLabel: messages.cases.open })] }) }, item.id));
19
+ return (_jsx("li", { children: _jsxs("button", { type: "button", "data-fivepixels-interactive": "", onClick: () => onSelectCase(item.id), className: "flex w-full items-start gap-[6px] rounded-[8px] px-[4px] py-[6px] text-left hover:bg-[var(--adaptive-surface-muted)]/60", children: [_jsxs("span", { className: "w-[20px] shrink-0 tabular-nums text-[12px] text-[var(--adaptive-black500)]", children: [index + 1, "."] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("span", { className: `text-[14px] leading-[1.5] text-[var(--adaptive-text-primary)] ${item.status === "resolved" ? "text-[var(--adaptive-black600)] line-through" : ""}`, children: mentionMessageToPlainText(item.text, item.mentions) }), isOpen ? (_jsxs("p", { className: "mt-[2px] text-[11px] text-[var(--adaptive-black500)]", children: [messages.cases.assignee, ": ", handlerName ?? messages.cases.unassigned] })) : null] }), _jsx(CaseResolvedBadge, { resolved: item.status === "resolved", resolvedLabel: messages.cases.resolved, openLabel: messages.cases.open })] }) }, item.id));
19
20
  }) }));
20
21
  }
21
- export function FeedbackCaseList({ report, cases, isEditing = false, canEdit = false, isSaving = false, errorMessage = "", focusedCaseId = null, onSelectCase, onAllTabActiveChange, onBeginEdit, onCancelEdit, onSaveEdit, onCaseChange, onAddCase, onRemoveCase, }) {
22
+ export function FeedbackCaseList({ report, cases, isEditing = false, canEdit = false, isSaving = false, errorMessage = "", focusedCaseId = null, onSelectCase, onAllTabActiveChange, onBeginEdit, onCancelEdit, onSaveEdit, onCaseChange, onAddCase, onRemoveCase, enableElementMentions = false, }) {
22
23
  const { messages } = useReportPreferences();
23
24
  const resolvedFocusedCaseId = resolveFocusedCaseId(cases, focusedCaseId);
24
25
  const [selectorTab, setSelectorTab] = useState(() => resolvedFocusedCaseId ?? CASE_SELECTOR_ALL_TAB);
@@ -41,8 +42,8 @@ export function FeedbackCaseList({ report, cases, isEditing = false, canEdit = f
41
42
  onSelectCase?.(caseId);
42
43
  };
43
44
  if (isEditing && onCaseChange && onAddCase && onRemoveCase) {
44
- return (_jsxs("div", { className: "flex flex-col gap-[8px]", children: [errorMessage ? (_jsx("p", { role: "alert", className: "rounded-[8px] border border-rose-200 bg-rose-50 px-[8px] py-[4px] text-[12px] leading-[1.4] text-rose-700", children: errorMessage })) : null, _jsx(FeedbackCaseEditor, { cases: cases, onCaseChange: onCaseChange, onAddCase: onAddCase, onRemoveCase: onRemoveCase, onSubmitShortcut: onSaveEdit }), _jsxs("div", { className: "flex justify-end gap-[6px] px-[8px] pb-[4px]", children: [_jsx("button", { type: "button", "data-fivepixels-interactive": "", disabled: isSaving, onClick: onCancelEdit, className: "rounded-full border border-[var(--adaptive-border-subtle)] px-[10px] py-[4px] text-[12px] font-semibold text-[var(--adaptive-text-primary)] disabled:opacity-50", children: messages.common.cancel }), _jsx("button", { type: "button", "data-fivepixels-interactive": "", disabled: isSaving, onClick: onSaveEdit, className: "rounded-full bg-[var(--adaptive-blue500)] px-[10px] py-[4px] text-[12px] font-semibold text-white disabled:opacity-50", children: isSaving ? messages.cases.saving : messages.cases.save })] })] }));
45
+ return (_jsxs("div", { className: "flex flex-col gap-[8px]", children: [errorMessage ? (_jsx("p", { role: "alert", className: "rounded-[8px] border border-rose-200 bg-rose-50 px-[8px] py-[4px] text-[12px] leading-[1.4] text-rose-700", children: errorMessage })) : null, _jsx(FeedbackCaseEditor, { cases: cases, onCaseChange: onCaseChange, onAddCase: onAddCase, onRemoveCase: onRemoveCase, onSubmitShortcut: onSaveEdit, enableElementMentions: enableElementMentions }), _jsxs("div", { className: "flex justify-end gap-[6px] px-[8px] pb-[4px]", children: [_jsx("button", { type: "button", "data-fivepixels-interactive": "", disabled: isSaving, onClick: onCancelEdit, className: "rounded-full border border-[var(--adaptive-border-subtle)] px-[10px] py-[4px] text-[12px] font-semibold text-[var(--adaptive-text-primary)] disabled:opacity-50", children: messages.common.cancel }), _jsx("button", { type: "button", "data-fivepixels-interactive": "", disabled: isSaving, onClick: onSaveEdit, className: "rounded-full bg-[var(--adaptive-blue500)] px-[10px] py-[4px] text-[12px] font-semibold text-white disabled:opacity-50", children: isSaving ? messages.cases.saving : messages.cases.save })] })] }));
45
46
  }
46
- return (_jsxs("div", { className: "flex flex-col gap-[8px]", children: [_jsx(FeedbackCaseTabBar, { variant: "selector", cases: cases, activeTab: selectorTab, onSelectAll: handleSelectAll, onSelectCase: handleSelectCase, showResolvedStatus: true, idPrefix: "fivepixels-thread-case", trailing: canEdit && onBeginEdit ? (_jsx("button", { type: "button", "data-fivepixels-interactive": "", onClick: onBeginEdit, className: "rounded-full border border-[var(--adaptive-border-subtle)] px-[8px] py-[4px] text-[11px] font-semibold whitespace-nowrap text-[var(--adaptive-blue500)] hover:bg-[var(--adaptive-blue100)]", children: messages.cases.edit })) : null }), isAllTabActive ? (_jsx(AllCasesList, { report: report, cases: cases, onSelectCase: handleSelectCase })) : focusedCase ? (_jsxs("div", { className: "flex flex-col gap-[4px] px-[16px]", children: [_jsx("p", { className: `text-[16px] font-semibold leading-[1.5] text-[var(--adaptive-text-primary)] ${focusedCase.status === "resolved" ? "text-[var(--adaptive-black600)] line-through" : ""}`, children: focusedCase.text }), focusedCase.status === "open" ? (_jsxs("p", { className: "text-[14px] text-[var(--adaptive-black500)]", children: [messages.cases.assignee, ": ", getCaseHandlerName(report, focusedCase.id) ?? messages.cases.unassigned] })) : null] })) : null] }));
47
+ return (_jsxs("div", { className: "flex flex-col gap-[8px]", children: [_jsx(FeedbackCaseTabBar, { variant: "selector", cases: cases, activeTab: selectorTab, onSelectAll: handleSelectAll, onSelectCase: handleSelectCase, showResolvedStatus: true, idPrefix: "fivepixels-thread-case", trailing: canEdit && onBeginEdit ? (_jsx("button", { type: "button", "data-fivepixels-interactive": "", onClick: onBeginEdit, className: "rounded-full border border-[var(--adaptive-border-subtle)] px-[8px] py-[4px] text-[11px] font-semibold whitespace-nowrap text-[var(--adaptive-blue500)] hover:bg-[var(--adaptive-blue100)]", children: messages.cases.edit })) : null }), isAllTabActive ? (_jsx(AllCasesList, { report: report, cases: cases, onSelectCase: handleSelectCase })) : focusedCase ? (_jsxs("div", { className: "flex flex-col gap-[4px] px-[16px]", children: [_jsx("p", { className: `text-[16px] font-semibold leading-[1.5] text-[var(--adaptive-text-primary)] ${focusedCase.status === "resolved" ? "text-[var(--adaptive-black600)] line-through" : ""}`, children: mentionMessageToPlainText(focusedCase.text, focusedCase.mentions) }), focusedCase.status === "open" ? (_jsxs("p", { className: "text-[14px] text-[var(--adaptive-black500)]", children: [messages.cases.assignee, ": ", getCaseHandlerName(report, focusedCase.id) ?? messages.cases.unassigned] })) : null] })) : null] }));
47
48
  }
48
49
  //# sourceMappingURL=FeedbackCaseList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackCaseList.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FeedbackCaseList.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCaseList.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackCategorySelector.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCategorySelector.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,KAAK,6BAA6B,GAAG;IACjC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAsB,EAAE,YAAgB,EAAE,EAAE,6BAA6B,+BAkD9I"}
1
+ {"version":3,"file":"FeedbackCategorySelector.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCategorySelector.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,KAAK,6BAA6B,GAAG;IACjC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAsB,EAAE,YAAgB,EAAE,EAAE,6BAA6B,+BAyD9I"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useRef } from "react";
3
+ import { HoverTooltip } from "../../../components/ui/HoverTooltip.js";
3
4
  import { FEEDBACK_CATEGORIES } from "../../../constants/feedbackCategory.js";
4
5
  export function FeedbackCategorySelector({ value, onChange, messages, needsAttention = false, attentionKey = 0 }) {
5
6
  const containerRef = useRef(null);
@@ -11,15 +12,17 @@ export function FeedbackCategorySelector({ value, onChange, messages, needsAtten
11
12
  containerRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
12
13
  firstButtonRef.current?.focus();
13
14
  }, [needsAttention, attentionKey]);
14
- return (_jsx("div", { ref: containerRef, className: "flex flex-wrap items-center gap-[4px] border-t border-[var(--adaptive-tintOpacity100)] p-[4px] transition-[box-shadow,background-color] duration-200 " +
15
+ return (_jsx("div", { ref: containerRef, className:
16
+ // "flex flex-wrap items-center gap-[4px] border-t border-[var(--adaptive-tintOpacity100)] p-[4px] transition-[box-shadow,background-color] duration-200 " +
17
+ "flex flex-wrap items-center gap-[4px] p-[4px] transition-[box-shadow,background-color] duration-200 " +
15
18
  (needsAttention ? "fivepixels-validation-attention rounded-b-[12px] bg-rose-500/10" : ""), role: "group", "aria-label": messages.composer.categoryAriaLabel, "aria-invalid": needsAttention || undefined, children: FEEDBACK_CATEGORIES.map((category, index) => {
16
19
  const selected = value === category;
17
- return (_jsx("button", { ref: index === 0 ? firstButtonRef : undefined, type: "button", "data-fivepixels-interactive": "", "aria-pressed": selected, onClick: () => onChange(category), className: "rounded-[8px] border px-[12px] py-[4px] text-[12px] font-semibold " +
18
- (selected
19
- ? "border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-surface-inverse)] text-[var(--adaptive-text-inverse)]"
20
- : needsAttention
21
- ? "border-rose-400 text-[var(--adaptive-text-primary)]"
22
- : "border-[var(--adaptive-border-subtle)] text-[var(--adaptive-text-muted)]"), children: messages.composer.categoryOption[category] }, category));
20
+ return (_jsx(HoverTooltip, { label: messages.composer.categoryTooltip[category], multiline: true, children: _jsx("button", { ref: index === 0 ? firstButtonRef : undefined, type: "button", "data-fivepixels-interactive": "", "aria-pressed": selected, "aria-label": `${messages.composer.categoryOption[category]}. ${messages.composer.categoryTooltip[category]}`, onClick: () => onChange(category), className: "rounded-[8px] border px-[12px] py-[4px] text-[12px] font-semibold " +
21
+ (selected
22
+ ? "border-[var(--adaptive-border-subtle)] bg-[var(--adaptive-surface-inverse)] text-[var(--adaptive-text-inverse)]"
23
+ : needsAttention
24
+ ? "border-rose-400 text-[var(--adaptive-text-primary)]"
25
+ : "border-[var(--adaptive-border-subtle)] text-[var(--adaptive-text-muted)]"), children: messages.composer.categoryOption[category] }) }, category));
23
26
  }) }));
24
27
  }
25
28
  //# sourceMappingURL=FeedbackCategorySelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackCategorySelector.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCategorySelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAyB,MAAM,iCAAiC,CAAC;AAW7F,MAAM,UAAU,wBAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,KAAK,EAAE,YAAY,GAAG,CAAC,EAAiC;IAC3I,MAAM,YAAY,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,cAAc,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO;QACX,CAAC;QAED,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/E,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IAEnC,OAAO,CACH,cACI,GAAG,EAAE,YAAY,EACjB,SAAS,EACL,uJAAuJ;YACvJ,CAAC,cAAc,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,EAAE,CAAC,EAE7F,IAAI,EAAC,OAAO,gBACA,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,kBACjC,cAAc,IAAI,SAAS,YAExC,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,CAAC;YAEpC,OAAO,CACH,iBAEI,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC7C,IAAI,EAAC,QAAQ,iCACe,EAAE,kBAChB,QAAQ,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,SAAS,EACL,oEAAoE;oBACpE,CAAC,QAAQ;wBACL,CAAC,CAAC,iHAAiH;wBACnH,CAAC,CAAC,cAAc;4BACd,CAAC,CAAC,qDAAqD;4BACvD,CAAC,CAAC,0EAA0E,CAAC,YAGtF,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAftC,QAAQ,CAgBR,CACZ,CAAC;QACN,CAAC,CAAC,GACA,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"FeedbackCategorySelector.js","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackCategorySelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAyB,MAAM,iCAAiC,CAAC;AAW7F,MAAM,UAAU,wBAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,KAAK,EAAE,YAAY,GAAG,CAAC,EAAiC;IAC3I,MAAM,YAAY,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,cAAc,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO;QACX,CAAC;QAED,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/E,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IAEnC,OAAO,CACH,cACI,GAAG,EAAE,YAAY,EACjB,SAAS;QACL,4JAA4J;QAC5J,sGAAsG;YACtG,CAAC,cAAc,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,EAAE,CAAC,EAE7F,IAAI,EAAC,OAAO,gBACA,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,kBACjC,cAAc,IAAI,SAAS,YAExC,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,CAAC;YAEpC,OAAO,CACH,KAAC,YAAY,IAET,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAClD,SAAS,kBAET,iBACI,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC7C,IAAI,EAAC,QAAQ,iCACe,EAAE,kBAChB,QAAQ,gBACV,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,EAC3G,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACjC,SAAS,EACL,oEAAoE;wBACpE,CAAC,QAAQ;4BACL,CAAC,CAAC,iHAAiH;4BACnH,CAAC,CAAC,cAAc;gCACd,CAAC,CAAC,qDAAqD;gCACvD,CAAC,CAAC,0EAA0E,CAAC,YAGtF,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,GACtC,IArBJ,QAAQ,CAsBF,CAClB,CAAC;QACN,CAAC,CAAC,GACA,CACT,CAAC;AACN,CAAC"}
@@ -1,11 +1,16 @@
1
1
  import type { ReportField, ReportFieldValues, ReportCase } from "../../../types/report.js";
2
2
  import type { ReportAuthor } from "../../../types/report.js";
3
3
  import type { FeedbackCategory } from "../../../constants/feedbackCategory.js";
4
+ import type { ElementMention } from "../../../types/mention.js";
5
+ export type ComposerMode = "deny" | "recheck" | "checkout" | "question";
4
6
  type FeedbackComposerProps = {
5
7
  message?: string;
6
8
  onMessageChange?: (value: string) => void;
9
+ mentions?: ElementMention[];
10
+ onMentionsChange?: (mentions: ElementMention[]) => void;
11
+ enableElementMentions?: boolean;
7
12
  cases?: ReportCase[];
8
- onCaseChange?: (caseId: string, text: string) => void;
13
+ onCaseChange?: (caseId: string, text: string, mentions?: ElementMention[]) => void;
9
14
  onAddCase?: () => void;
10
15
  onRemoveCase?: (caseId: string) => void;
11
16
  authorName: string;
@@ -30,6 +35,8 @@ type FeedbackComposerProps = {
30
35
  askQuestionChecked?: boolean;
31
36
  onAskQuestionChange?: (checked: boolean) => void;
32
37
  askQuestionForced?: boolean;
38
+ composerMode?: ComposerMode | null;
39
+ onCancelComposerMode?: () => void;
33
40
  hideAuthorSelector?: boolean;
34
41
  lockedAuthorName?: string;
35
42
  onFooterWarningChange?: (message: string | null) => void;
@@ -37,7 +44,10 @@ type FeedbackComposerProps = {
37
44
  hideActions?: boolean;
38
45
  hidePrimarySubmitAction?: boolean;
39
46
  categoryPrompt?: string;
47
+ showCaseTabBar?: boolean;
48
+ activeCaseId?: string | null;
49
+ onActiveCaseIdChange?: (caseId: string) => void;
40
50
  };
41
- export declare function FeedbackComposer({ message, onMessageChange, cases, onCaseChange, onAddCase, onRemoveCase, authorName, onAuthorNameChange, authors, fields: _fields, fieldValues: _fieldValues, onFieldChange: _onFieldChange, category, onCategoryChange, showCategory, showTags: _showTags, onSubmit, isSubmitting, showGitHubIssueOnCreate, onGitHubIssueSubmit, isGitHubIssueSubmitting, placeholder, autoFocus, errorMessage, showAskQuestionToggle, askQuestionChecked, onAskQuestionChange, askQuestionForced, hideAuthorSelector, lockedAuthorName, onFooterWarningChange, hideEditor, hideActions, hidePrimarySubmitAction, categoryPrompt, }: FeedbackComposerProps): import("react").JSX.Element;
51
+ export declare function FeedbackComposer({ message, onMessageChange, mentions, onMentionsChange, enableElementMentions, cases, onCaseChange, onAddCase, onRemoveCase, authorName, onAuthorNameChange, authors, fields: _fields, fieldValues: _fieldValues, onFieldChange: _onFieldChange, category, onCategoryChange, showCategory, showTags: _showTags, onSubmit, isSubmitting, showGitHubIssueOnCreate, onGitHubIssueSubmit, isGitHubIssueSubmitting, placeholder, autoFocus, errorMessage, showAskQuestionToggle, askQuestionChecked, onAskQuestionChange, askQuestionForced, composerMode, onCancelComposerMode, hideAuthorSelector, lockedAuthorName, onFooterWarningChange, hideEditor, hideActions, hidePrimarySubmitAction, categoryPrompt, showCaseTabBar, activeCaseId, onActiveCaseIdChange, }: FeedbackComposerProps): import("react").JSX.Element;
42
52
  export {};
43
53
  //# sourceMappingURL=FeedbackComposer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackComposer.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackComposer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FeedbackComposer.d.ts","sourceRoot":"","sources":["../../../../src/components/panel/feedback/FeedbackComposer.tsx"],"names":[],"mappings":"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"}