@ciridae/ui 0.10.0 → 0.11.2

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 (537) hide show
  1. package/dist/components/blocks/admin-users-table.js +7 -7
  2. package/dist/components/blocks/comment-composer.d.ts +1 -1
  3. package/dist/components/blocks/comment-composer.js +23 -5
  4. package/dist/components/blocks/comment-item.d.ts +1 -1
  5. package/dist/components/blocks/comment-item.js +4 -4
  6. package/dist/components/blocks/comment-thread.d.ts +2 -2
  7. package/dist/components/blocks/comment-thread.js +35 -5
  8. package/dist/components/blocks/copy-field.js +3 -3
  9. package/dist/components/blocks/feedback-center-comments.d.ts +2 -2
  10. package/dist/components/blocks/feedback-center-comments.js +3 -3
  11. package/dist/components/blocks/feedback-center-footer.d.ts +2 -2
  12. package/dist/components/blocks/feedback-center-footer.js +2 -2
  13. package/dist/components/blocks/feedback-center-sheet-parts.d.ts +5 -5
  14. package/dist/components/blocks/feedback-center-sheet-parts.js +7 -7
  15. package/dist/components/blocks/feedback-center-sheet.d.ts +5 -5
  16. package/dist/components/blocks/feedback-center-sheet.js +5 -5
  17. package/dist/components/blocks/feedback-composer-parts.d.ts +1 -1
  18. package/dist/components/blocks/feedback-composer-parts.js +4 -4
  19. package/dist/components/blocks/feedback-composer-types.d.ts +1 -1
  20. package/dist/components/blocks/feedback-composer.d.ts +1 -1
  21. package/dist/components/blocks/feedback-composer.js +8 -8
  22. package/dist/components/blocks/feedback-date-format.d.ts +2 -2
  23. package/dist/components/blocks/feedback-date-format.js +2 -2
  24. package/dist/components/blocks/feedback-detail-sheet.d.ts +1 -1
  25. package/dist/components/blocks/feedback-detail-sheet.js +14 -14
  26. package/dist/components/blocks/feedback-emergency-fields.d.ts +1 -1
  27. package/dist/components/blocks/feedback-emergency-fields.js +7 -7
  28. package/dist/components/blocks/feedback-metrics.d.ts +1 -1
  29. package/dist/components/blocks/feedback-metrics.js +1 -1
  30. package/dist/components/blocks/feedback-sheet.d.ts +1 -1
  31. package/dist/components/blocks/feedback-sheet.js +4 -4
  32. package/dist/components/blocks/feedback-status-badge.d.ts +1 -1
  33. package/dist/components/blocks/feedback-status-badge.js +2 -2
  34. package/dist/components/blocks/feedback-table-row.d.ts +1 -1
  35. package/dist/components/blocks/feedback-table-row.js +8 -8
  36. package/dist/components/blocks/feedback-table-sort.d.ts +2 -2
  37. package/dist/components/blocks/feedback-table.d.ts +2 -2
  38. package/dist/components/blocks/feedback-table.js +5 -5
  39. package/dist/components/blocks/feedback-tracking-types.d.ts +7 -1
  40. package/dist/components/blocks/feedback-triage-timeline.d.ts +11 -0
  41. package/dist/components/blocks/feedback-triage-timeline.js +17 -0
  42. package/dist/components/blocks/feedback-type-badge.d.ts +7 -2
  43. package/dist/components/blocks/feedback-type-badge.js +14 -8
  44. package/dist/components/blocks/feedback-unread-badge.d.ts +6 -0
  45. package/dist/components/blocks/feedback-unread-badge.js +9 -0
  46. package/dist/components/blocks/feedback-user-detail.d.ts +1 -1
  47. package/dist/components/blocks/feedback-user-detail.js +10 -10
  48. package/dist/components/blocks/feedback-user-list.d.ts +1 -1
  49. package/dist/components/blocks/feedback-user-list.js +11 -11
  50. package/dist/components/blocks/generated-connect-link.d.ts +1 -1
  51. package/dist/components/blocks/generated-connect-link.js +3 -3
  52. package/dist/components/blocks/invite-user-sheet.js +5 -5
  53. package/dist/components/blocks/kanban-board-parts.d.ts +2 -2
  54. package/dist/components/blocks/kanban-board-parts.js +3 -3
  55. package/dist/components/blocks/kanban-board-utils.d.ts +1 -1
  56. package/dist/components/blocks/kanban-board.d.ts +1 -1
  57. package/dist/components/blocks/kanban-board.js +2 -2
  58. package/dist/components/blocks/kanban-card.d.ts +1 -1
  59. package/dist/components/blocks/kanban-card.js +1 -1
  60. package/dist/components/blocks/kanban-column.d.ts +1 -1
  61. package/dist/components/blocks/kanban-column.js +3 -3
  62. package/dist/components/blocks/kanban-detail-sheet.d.ts +1 -1
  63. package/dist/components/blocks/kanban-detail-sheet.js +5 -5
  64. package/dist/components/blocks/mcp-access-grouped-tool-picker.d.ts +2 -2
  65. package/dist/components/blocks/mcp-access-grouped-tool-picker.js +4 -4
  66. package/dist/components/blocks/mcp-access-tool-picker-internals.d.ts +1 -1
  67. package/dist/components/blocks/mcp-access-tool-picker-internals.js +1 -1
  68. package/dist/components/blocks/mcp-access-tool-picker.d.ts +4 -4
  69. package/dist/components/blocks/mcp-access-tool-picker.js +3 -3
  70. package/dist/components/blocks/mcp-client-setup.d.ts +2 -2
  71. package/dist/components/blocks/mcp-client-setup.js +4 -4
  72. package/dist/components/blocks/mcp-connect-clients.d.ts +1 -1
  73. package/dist/components/blocks/mcp-plan-choice.d.ts +1 -1
  74. package/dist/components/blocks/mcp-plan-choice.js +1 -1
  75. package/dist/components/blocks/submit-feedback-composer.d.ts +2 -2
  76. package/dist/components/blocks/timestamp-format.d.ts +7 -1
  77. package/dist/components/blocks/timestamp-format.js +9 -1
  78. package/dist/components/blocks/use-feedback-composer-state.d.ts +1 -1
  79. package/dist/components/pages/admin-users-page.d.ts +2 -2
  80. package/dist/components/pages/admin-users-page.js +5 -5
  81. package/dist/components/pages/feedback-stakeholder-page-parts.d.ts +1 -1
  82. package/dist/components/pages/feedback-stakeholder-page-parts.js +4 -4
  83. package/dist/components/pages/feedback-stakeholder-page.d.ts +1 -1
  84. package/dist/components/pages/feedback-stakeholder-page.js +5 -5
  85. package/dist/components/pages/kanban-page.d.ts +1 -1
  86. package/dist/components/pages/kanban-page.js +5 -5
  87. package/dist/components/ui/accordion.js +1 -1
  88. package/dist/components/ui/alert-dialog.d.ts +1 -1
  89. package/dist/components/ui/alert-dialog.js +2 -2
  90. package/dist/components/ui/alert.js +1 -1
  91. package/dist/components/ui/app-shell-page.d.ts +1 -1
  92. package/dist/components/ui/app-shell-page.js +3 -3
  93. package/dist/components/ui/app-shell.d.ts +2 -2
  94. package/dist/components/ui/app-shell.js +3 -3
  95. package/dist/components/ui/avatar.js +1 -1
  96. package/dist/components/ui/badge-variants.d.ts +1 -1
  97. package/dist/components/ui/badge.d.ts +1 -1
  98. package/dist/components/ui/badge.js +2 -2
  99. package/dist/components/ui/breadcrumb.js +1 -1
  100. package/dist/components/ui/button-group.d.ts +2 -2
  101. package/dist/components/ui/button-group.js +3 -3
  102. package/dist/components/ui/button-variants.d.ts +1 -1
  103. package/dist/components/ui/button.d.ts +1 -1
  104. package/dist/components/ui/button.js +3 -3
  105. package/dist/components/ui/calendar.d.ts +1 -1
  106. package/dist/components/ui/calendar.js +3 -3
  107. package/dist/components/ui/card.js +1 -1
  108. package/dist/components/ui/carousel.d.ts +1 -1
  109. package/dist/components/ui/carousel.js +2 -2
  110. package/dist/components/ui/chart-panel.js +1 -1
  111. package/dist/components/ui/chart-tooltip.js +2 -2
  112. package/dist/components/ui/chart.d.ts +2 -2
  113. package/dist/components/ui/chart.js +3 -3
  114. package/dist/components/ui/checkbox.js +1 -1
  115. package/dist/components/ui/ciridae-ui-provider.d.ts +1 -1
  116. package/dist/components/ui/ciridae-ui-provider.js +3 -3
  117. package/dist/components/ui/color-theme-context.d.ts +1 -1
  118. package/dist/components/ui/color-theme.d.ts +2 -2
  119. package/dist/components/ui/color-theme.js +8 -6
  120. package/dist/components/ui/combobox.js +3 -3
  121. package/dist/components/ui/command.d.ts +1 -1
  122. package/dist/components/ui/command.js +2 -2
  123. package/dist/components/ui/context-menu.js +1 -1
  124. package/dist/components/ui/data-table-column-settings.js +5 -5
  125. package/dist/components/ui/data-table-controls.d.ts +1 -1
  126. package/dist/components/ui/data-table-controls.js +3 -3
  127. package/dist/components/ui/data-table-facet-filter.d.ts +22 -6
  128. package/dist/components/ui/data-table-facet-filter.js +38 -26
  129. package/dist/components/ui/data-table-grid.js +3 -3
  130. package/dist/components/ui/data-table-pagination.d.ts +1 -1
  131. package/dist/components/ui/data-table-pagination.js +3 -3
  132. package/dist/components/ui/data-table-search-input.d.ts +14 -0
  133. package/dist/components/ui/data-table-search-input.js +15 -0
  134. package/dist/components/ui/data-table-tanstack.js +6 -6
  135. package/dist/components/ui/data-table.d.ts +4 -4
  136. package/dist/components/ui/data-table.js +5 -5
  137. package/dist/components/ui/dialog.js +2 -2
  138. package/dist/components/ui/drawer.js +1 -1
  139. package/dist/components/ui/dropdown-menu.js +1 -1
  140. package/dist/components/ui/empty.js +1 -1
  141. package/dist/components/ui/expandable-data-table.d.ts +1 -1
  142. package/dist/components/ui/expandable-data-table.js +4 -4
  143. package/dist/components/ui/field.d.ts +1 -1
  144. package/dist/components/ui/field.js +3 -3
  145. package/dist/components/ui/file-upload-field-parts.js +3 -3
  146. package/dist/components/ui/file-upload-field.js +2 -2
  147. package/dist/components/ui/form-sheet.js +2 -2
  148. package/dist/components/ui/form.js +3 -3
  149. package/dist/components/ui/hover-card.js +1 -1
  150. package/dist/components/ui/input-group.d.ts +1 -1
  151. package/dist/components/ui/input-group.js +4 -4
  152. package/dist/components/ui/input-otp.js +1 -1
  153. package/dist/components/ui/input.js +1 -1
  154. package/dist/components/ui/item.d.ts +1 -1
  155. package/dist/components/ui/item.js +9 -5
  156. package/dist/components/ui/kbd.js +1 -1
  157. package/dist/components/ui/label.js +1 -1
  158. package/dist/components/ui/loading-state.d.ts +1 -1
  159. package/dist/components/ui/loading-state.js +4 -4
  160. package/dist/components/ui/menubar.js +1 -1
  161. package/dist/components/ui/metrics-strip.js +1 -1
  162. package/dist/components/ui/native-select.js +1 -1
  163. package/dist/components/ui/navigation-menu.js +2 -2
  164. package/dist/components/ui/page-header.d.ts +1 -1
  165. package/dist/components/ui/page-header.js +2 -2
  166. package/dist/components/ui/pagination.d.ts +1 -1
  167. package/dist/components/ui/pagination.js +2 -2
  168. package/dist/components/ui/popover.js +1 -1
  169. package/dist/components/ui/progress.js +1 -1
  170. package/dist/components/ui/property-list.js +1 -1
  171. package/dist/components/ui/radio-group.js +1 -1
  172. package/dist/components/ui/registry-docs-api.js +1 -1
  173. package/dist/components/ui/registry-docs-code.js +2 -2
  174. package/dist/components/ui/registry-docs-showcase.js +3 -3
  175. package/dist/components/ui/registry-docs.d.ts +4 -4
  176. package/dist/components/ui/registry-docs.js +6 -6
  177. package/dist/components/ui/resizable.js +1 -1
  178. package/dist/components/ui/scroll-area.js +1 -1
  179. package/dist/components/ui/select.js +1 -1
  180. package/dist/components/ui/separator.js +1 -1
  181. package/dist/components/ui/sheet.js +1 -1
  182. package/dist/components/ui/sidebar/group.js +1 -1
  183. package/dist/components/ui/sidebar/layout.d.ts +2 -2
  184. package/dist/components/ui/sidebar/layout.js +5 -5
  185. package/dist/components/ui/sidebar/menu.d.ts +1 -1
  186. package/dist/components/ui/sidebar/menu.js +4 -4
  187. package/dist/components/ui/sidebar/provider.js +4 -4
  188. package/dist/components/ui/sidebar/rail.js +2 -2
  189. package/dist/components/ui/sidebar/trigger.d.ts +1 -1
  190. package/dist/components/ui/sidebar/trigger.js +3 -3
  191. package/dist/components/ui/sidebar-account-menu-theme.js +2 -2
  192. package/dist/components/ui/sidebar-account-menu.d.ts +1 -1
  193. package/dist/components/ui/sidebar-account-menu.js +7 -7
  194. package/dist/components/ui/sidebar.d.ts +7 -7
  195. package/dist/components/ui/sidebar.js +7 -7
  196. package/dist/components/ui/skeleton.js +1 -1
  197. package/dist/components/ui/slider.js +1 -1
  198. package/dist/components/ui/sonner.js +1 -1
  199. package/dist/components/ui/spinner.js +1 -1
  200. package/dist/components/ui/switch.js +1 -1
  201. package/dist/components/ui/table.js +1 -1
  202. package/dist/components/ui/tabs.d.ts +1 -1
  203. package/dist/components/ui/tabs.js +2 -2
  204. package/dist/components/ui/textarea.js +1 -1
  205. package/dist/components/ui/toggle-group.d.ts +1 -1
  206. package/dist/components/ui/toggle-group.js +2 -2
  207. package/dist/components/ui/toggle.d.ts +1 -1
  208. package/dist/components/ui/toggle.js +2 -2
  209. package/dist/components/ui/tooltip.js +1 -1
  210. package/dist/components/ui/use-color-theme.d.ts +1 -1
  211. package/dist/components/ui/use-color-theme.js +1 -1
  212. package/dist/components/ui/workflow-timeline.js +1 -1
  213. package/dist/entries/accordion.d.ts +1 -1
  214. package/dist/entries/accordion.js +1 -1
  215. package/dist/entries/admin-users-page.d.ts +1 -1
  216. package/dist/entries/admin-users-page.js +1 -1
  217. package/dist/entries/admin-users-table.d.ts +1 -1
  218. package/dist/entries/admin-users-table.js +1 -1
  219. package/dist/entries/alert-dialog.d.ts +1 -1
  220. package/dist/entries/alert-dialog.js +1 -1
  221. package/dist/entries/alert.d.ts +1 -1
  222. package/dist/entries/alert.js +1 -1
  223. package/dist/entries/app-shell-page.d.ts +1 -1
  224. package/dist/entries/app-shell-page.js +1 -1
  225. package/dist/entries/app-shell.d.ts +1 -1
  226. package/dist/entries/app-shell.js +1 -1
  227. package/dist/entries/aspect-ratio.d.ts +1 -1
  228. package/dist/entries/aspect-ratio.js +1 -1
  229. package/dist/entries/avatar.d.ts +1 -1
  230. package/dist/entries/avatar.js +1 -1
  231. package/dist/entries/badge-variants.d.ts +1 -1
  232. package/dist/entries/badge-variants.js +1 -1
  233. package/dist/entries/badge.d.ts +1 -1
  234. package/dist/entries/badge.js +1 -1
  235. package/dist/entries/breadcrumb.d.ts +1 -1
  236. package/dist/entries/breadcrumb.js +1 -1
  237. package/dist/entries/button-group-variants.d.ts +1 -1
  238. package/dist/entries/button-group-variants.js +1 -1
  239. package/dist/entries/button-group.d.ts +1 -1
  240. package/dist/entries/button-group.js +1 -1
  241. package/dist/entries/button-variants.d.ts +1 -1
  242. package/dist/entries/button-variants.js +1 -1
  243. package/dist/entries/button.d.ts +1 -1
  244. package/dist/entries/button.js +1 -1
  245. package/dist/entries/calendar.d.ts +1 -1
  246. package/dist/entries/calendar.js +1 -1
  247. package/dist/entries/card.d.ts +1 -1
  248. package/dist/entries/card.js +1 -1
  249. package/dist/entries/carousel.d.ts +1 -1
  250. package/dist/entries/carousel.js +1 -1
  251. package/dist/entries/chart-context.d.ts +1 -1
  252. package/dist/entries/chart-context.js +1 -1
  253. package/dist/entries/chart-panel.d.ts +1 -1
  254. package/dist/entries/chart-panel.js +1 -1
  255. package/dist/entries/chart-tooltip.d.ts +1 -1
  256. package/dist/entries/chart-tooltip.js +1 -1
  257. package/dist/entries/chart.d.ts +1 -1
  258. package/dist/entries/chart.js +1 -1
  259. package/dist/entries/checkbox.d.ts +1 -1
  260. package/dist/entries/checkbox.js +1 -1
  261. package/dist/entries/ciridae-brand-assets.d.ts +1 -1
  262. package/dist/entries/ciridae-brand-assets.js +1 -1
  263. package/dist/entries/ciridae-ui-provider.d.ts +1 -1
  264. package/dist/entries/ciridae-ui-provider.js +1 -1
  265. package/dist/entries/collapsible.d.ts +1 -1
  266. package/dist/entries/collapsible.js +1 -1
  267. package/dist/entries/color-theme-context.d.ts +1 -1
  268. package/dist/entries/color-theme-context.js +1 -1
  269. package/dist/entries/color-theme.d.ts +1 -1
  270. package/dist/entries/color-theme.js +1 -1
  271. package/dist/entries/combobox-anchor.d.ts +1 -1
  272. package/dist/entries/combobox-anchor.js +1 -1
  273. package/dist/entries/combobox.d.ts +1 -1
  274. package/dist/entries/combobox.js +1 -1
  275. package/dist/entries/command.d.ts +1 -1
  276. package/dist/entries/command.js +1 -1
  277. package/dist/entries/comment-composer.d.ts +1 -1
  278. package/dist/entries/comment-composer.js +1 -1
  279. package/dist/entries/comment-item.d.ts +1 -1
  280. package/dist/entries/comment-item.js +1 -1
  281. package/dist/entries/comment-thread.d.ts +1 -1
  282. package/dist/entries/comment-thread.js +1 -1
  283. package/dist/entries/comment-types.d.ts +1 -1
  284. package/dist/entries/comment-types.js +1 -1
  285. package/dist/entries/context-menu.d.ts +1 -1
  286. package/dist/entries/context-menu.js +1 -1
  287. package/dist/entries/copy-field.d.ts +1 -1
  288. package/dist/entries/copy-field.js +1 -1
  289. package/dist/entries/data-table-column-settings.d.ts +1 -1
  290. package/dist/entries/data-table-column-settings.js +1 -1
  291. package/dist/entries/data-table-context.d.ts +1 -1
  292. package/dist/entries/data-table-context.js +1 -1
  293. package/dist/entries/data-table-controls.d.ts +1 -1
  294. package/dist/entries/data-table-controls.js +1 -1
  295. package/dist/entries/data-table-facet-filter.d.ts +1 -1
  296. package/dist/entries/data-table-facet-filter.js +1 -1
  297. package/dist/entries/data-table-grid.d.ts +1 -1
  298. package/dist/entries/data-table-grid.js +1 -1
  299. package/dist/entries/data-table-pagination.d.ts +1 -1
  300. package/dist/entries/data-table-pagination.js +1 -1
  301. package/dist/entries/data-table-search-input.d.ts +1 -0
  302. package/dist/entries/data-table-search-input.js +1 -0
  303. package/dist/entries/data-table-state.d.ts +1 -1
  304. package/dist/entries/data-table-state.js +1 -1
  305. package/dist/entries/data-table-tanstack.d.ts +1 -1
  306. package/dist/entries/data-table-tanstack.js +1 -1
  307. package/dist/entries/data-table.d.ts +1 -1
  308. package/dist/entries/data-table.js +1 -1
  309. package/dist/entries/dialog.d.ts +1 -1
  310. package/dist/entries/dialog.js +1 -1
  311. package/dist/entries/direction-context.d.ts +1 -1
  312. package/dist/entries/direction-context.js +1 -1
  313. package/dist/entries/direction.d.ts +1 -1
  314. package/dist/entries/direction.js +1 -1
  315. package/dist/entries/drawer.d.ts +1 -1
  316. package/dist/entries/drawer.js +1 -1
  317. package/dist/entries/dropdown-menu.d.ts +1 -1
  318. package/dist/entries/dropdown-menu.js +1 -1
  319. package/dist/entries/empty.d.ts +1 -1
  320. package/dist/entries/empty.js +1 -1
  321. package/dist/entries/expandable-data-table.d.ts +1 -1
  322. package/dist/entries/expandable-data-table.js +1 -1
  323. package/dist/entries/feedback-center-comments.d.ts +1 -1
  324. package/dist/entries/feedback-center-comments.js +1 -1
  325. package/dist/entries/feedback-center-footer.d.ts +1 -1
  326. package/dist/entries/feedback-center-footer.js +1 -1
  327. package/dist/entries/feedback-center-sheet-parts.d.ts +1 -1
  328. package/dist/entries/feedback-center-sheet-parts.js +1 -1
  329. package/dist/entries/feedback-center-sheet.d.ts +1 -1
  330. package/dist/entries/feedback-center-sheet.js +1 -1
  331. package/dist/entries/feedback-composer-parts.d.ts +1 -1
  332. package/dist/entries/feedback-composer-parts.js +1 -1
  333. package/dist/entries/feedback-composer-types.d.ts +1 -1
  334. package/dist/entries/feedback-composer-types.js +1 -1
  335. package/dist/entries/feedback-composer.d.ts +1 -1
  336. package/dist/entries/feedback-composer.js +1 -1
  337. package/dist/entries/feedback-date-format.d.ts +1 -1
  338. package/dist/entries/feedback-date-format.js +1 -1
  339. package/dist/entries/feedback-detail-sheet.d.ts +1 -1
  340. package/dist/entries/feedback-detail-sheet.js +1 -1
  341. package/dist/entries/feedback-emergency-fields.d.ts +1 -1
  342. package/dist/entries/feedback-emergency-fields.js +1 -1
  343. package/dist/entries/feedback-metrics.d.ts +1 -1
  344. package/dist/entries/feedback-metrics.js +1 -1
  345. package/dist/entries/feedback-sheet.d.ts +1 -1
  346. package/dist/entries/feedback-sheet.js +1 -1
  347. package/dist/entries/feedback-stakeholder-page-parts.d.ts +1 -1
  348. package/dist/entries/feedback-stakeholder-page-parts.js +1 -1
  349. package/dist/entries/feedback-stakeholder-page.d.ts +1 -1
  350. package/dist/entries/feedback-stakeholder-page.js +1 -1
  351. package/dist/entries/feedback-status-badge.d.ts +1 -1
  352. package/dist/entries/feedback-status-badge.js +1 -1
  353. package/dist/entries/feedback-table-row.d.ts +1 -1
  354. package/dist/entries/feedback-table-row.js +1 -1
  355. package/dist/entries/feedback-table-sort.d.ts +1 -1
  356. package/dist/entries/feedback-table-sort.js +1 -1
  357. package/dist/entries/feedback-table.d.ts +1 -1
  358. package/dist/entries/feedback-table.js +1 -1
  359. package/dist/entries/feedback-tracking-types.d.ts +1 -1
  360. package/dist/entries/feedback-tracking-types.js +1 -1
  361. package/dist/entries/feedback-triage-timeline.d.ts +1 -0
  362. package/dist/entries/feedback-triage-timeline.js +1 -0
  363. package/dist/entries/feedback-type-badge.d.ts +1 -1
  364. package/dist/entries/feedback-type-badge.js +1 -1
  365. package/dist/entries/feedback-unread-badge.d.ts +1 -0
  366. package/dist/entries/feedback-unread-badge.js +1 -0
  367. package/dist/entries/feedback-user-detail.d.ts +1 -1
  368. package/dist/entries/feedback-user-detail.js +1 -1
  369. package/dist/entries/feedback-user-list.d.ts +1 -1
  370. package/dist/entries/feedback-user-list.js +1 -1
  371. package/dist/entries/field.d.ts +1 -1
  372. package/dist/entries/field.js +1 -1
  373. package/dist/entries/file-upload-field-parts.d.ts +1 -1
  374. package/dist/entries/file-upload-field-parts.js +1 -1
  375. package/dist/entries/file-upload-field.d.ts +1 -1
  376. package/dist/entries/file-upload-field.js +1 -1
  377. package/dist/entries/form-context.d.ts +1 -1
  378. package/dist/entries/form-context.js +1 -1
  379. package/dist/entries/form-sheet.d.ts +1 -1
  380. package/dist/entries/form-sheet.js +1 -1
  381. package/dist/entries/form.d.ts +1 -1
  382. package/dist/entries/form.js +1 -1
  383. package/dist/entries/generated-connect-link.d.ts +1 -1
  384. package/dist/entries/generated-connect-link.js +1 -1
  385. package/dist/entries/hover-card.d.ts +1 -1
  386. package/dist/entries/hover-card.js +1 -1
  387. package/dist/entries/input-group.d.ts +1 -1
  388. package/dist/entries/input-group.js +1 -1
  389. package/dist/entries/input-otp.d.ts +1 -1
  390. package/dist/entries/input-otp.js +1 -1
  391. package/dist/entries/input.d.ts +1 -1
  392. package/dist/entries/input.js +1 -1
  393. package/dist/entries/invite-user-sheet.d.ts +1 -1
  394. package/dist/entries/invite-user-sheet.js +1 -1
  395. package/dist/entries/item.d.ts +1 -1
  396. package/dist/entries/item.js +1 -1
  397. package/dist/entries/kanban-board-parts.d.ts +1 -1
  398. package/dist/entries/kanban-board-parts.js +1 -1
  399. package/dist/entries/kanban-board-utils.d.ts +1 -1
  400. package/dist/entries/kanban-board-utils.js +1 -1
  401. package/dist/entries/kanban-board.d.ts +1 -1
  402. package/dist/entries/kanban-board.js +1 -1
  403. package/dist/entries/kanban-card.d.ts +1 -1
  404. package/dist/entries/kanban-card.js +1 -1
  405. package/dist/entries/kanban-column.d.ts +1 -1
  406. package/dist/entries/kanban-column.js +1 -1
  407. package/dist/entries/kanban-detail-sheet.d.ts +1 -1
  408. package/dist/entries/kanban-detail-sheet.js +1 -1
  409. package/dist/entries/kanban-page.d.ts +1 -1
  410. package/dist/entries/kanban-page.js +1 -1
  411. package/dist/entries/kanban-types.d.ts +1 -1
  412. package/dist/entries/kanban-types.js +1 -1
  413. package/dist/entries/kbd.d.ts +1 -1
  414. package/dist/entries/kbd.js +1 -1
  415. package/dist/entries/label.d.ts +1 -1
  416. package/dist/entries/label.js +1 -1
  417. package/dist/entries/loading-state.d.ts +1 -1
  418. package/dist/entries/loading-state.js +1 -1
  419. package/dist/entries/mcp-access-grouped-tool-picker.d.ts +1 -1
  420. package/dist/entries/mcp-access-grouped-tool-picker.js +1 -1
  421. package/dist/entries/mcp-access-tool-picker.d.ts +1 -1
  422. package/dist/entries/mcp-access-tool-picker.js +1 -1
  423. package/dist/entries/mcp-access-types.d.ts +1 -1
  424. package/dist/entries/mcp-access-types.js +1 -1
  425. package/dist/entries/mcp-client-setup.d.ts +1 -1
  426. package/dist/entries/mcp-client-setup.js +1 -1
  427. package/dist/entries/mcp-connect-clients.d.ts +1 -1
  428. package/dist/entries/mcp-connect-clients.js +1 -1
  429. package/dist/entries/mcp-plan-choice.d.ts +1 -1
  430. package/dist/entries/mcp-plan-choice.js +1 -1
  431. package/dist/entries/menubar.d.ts +1 -1
  432. package/dist/entries/menubar.js +1 -1
  433. package/dist/entries/metrics-strip.d.ts +1 -1
  434. package/dist/entries/metrics-strip.js +1 -1
  435. package/dist/entries/native-select.d.ts +1 -1
  436. package/dist/entries/native-select.js +1 -1
  437. package/dist/entries/navigation-menu-variants.d.ts +1 -1
  438. package/dist/entries/navigation-menu-variants.js +1 -1
  439. package/dist/entries/navigation-menu.d.ts +1 -1
  440. package/dist/entries/navigation-menu.js +1 -1
  441. package/dist/entries/page-header.d.ts +1 -1
  442. package/dist/entries/page-header.js +1 -1
  443. package/dist/entries/pagination.d.ts +1 -1
  444. package/dist/entries/pagination.js +1 -1
  445. package/dist/entries/palette.d.ts +2 -2
  446. package/dist/entries/palette.js +2 -2
  447. package/dist/entries/popover.d.ts +1 -1
  448. package/dist/entries/popover.js +1 -1
  449. package/dist/entries/progress.d.ts +1 -1
  450. package/dist/entries/progress.js +1 -1
  451. package/dist/entries/property-list.d.ts +1 -1
  452. package/dist/entries/property-list.js +1 -1
  453. package/dist/entries/radio-group.d.ts +1 -1
  454. package/dist/entries/radio-group.js +1 -1
  455. package/dist/entries/registry-docs-api.d.ts +1 -1
  456. package/dist/entries/registry-docs-api.js +1 -1
  457. package/dist/entries/registry-docs-code.d.ts +1 -1
  458. package/dist/entries/registry-docs-code.js +1 -1
  459. package/dist/entries/registry-docs-showcase.d.ts +1 -1
  460. package/dist/entries/registry-docs-showcase.js +1 -1
  461. package/dist/entries/registry-docs.d.ts +1 -1
  462. package/dist/entries/registry-docs.js +1 -1
  463. package/dist/entries/resizable.d.ts +1 -1
  464. package/dist/entries/resizable.js +1 -1
  465. package/dist/entries/scroll-area.d.ts +1 -1
  466. package/dist/entries/scroll-area.js +1 -1
  467. package/dist/entries/select.d.ts +1 -1
  468. package/dist/entries/select.js +1 -1
  469. package/dist/entries/separator.d.ts +1 -1
  470. package/dist/entries/separator.js +1 -1
  471. package/dist/entries/sheet.d.ts +1 -1
  472. package/dist/entries/sheet.js +1 -1
  473. package/dist/entries/sidebar/context.d.ts +1 -1
  474. package/dist/entries/sidebar/context.js +1 -1
  475. package/dist/entries/sidebar/group.d.ts +1 -1
  476. package/dist/entries/sidebar/group.js +1 -1
  477. package/dist/entries/sidebar/layout.d.ts +1 -1
  478. package/dist/entries/sidebar/layout.js +1 -1
  479. package/dist/entries/sidebar/menu.d.ts +1 -1
  480. package/dist/entries/sidebar/menu.js +1 -1
  481. package/dist/entries/sidebar/provider.d.ts +1 -1
  482. package/dist/entries/sidebar/provider.js +1 -1
  483. package/dist/entries/sidebar/rail.d.ts +1 -1
  484. package/dist/entries/sidebar/rail.js +1 -1
  485. package/dist/entries/sidebar/trigger.d.ts +1 -1
  486. package/dist/entries/sidebar/trigger.js +1 -1
  487. package/dist/entries/sidebar-account-menu-theme.d.ts +1 -1
  488. package/dist/entries/sidebar-account-menu-theme.js +1 -1
  489. package/dist/entries/sidebar-account-menu.d.ts +1 -1
  490. package/dist/entries/sidebar-account-menu.js +1 -1
  491. package/dist/entries/sidebar.d.ts +1 -1
  492. package/dist/entries/sidebar.js +1 -1
  493. package/dist/entries/skeleton.d.ts +1 -1
  494. package/dist/entries/skeleton.js +1 -1
  495. package/dist/entries/slider.d.ts +1 -1
  496. package/dist/entries/slider.js +1 -1
  497. package/dist/entries/sonner.d.ts +1 -1
  498. package/dist/entries/sonner.js +1 -1
  499. package/dist/entries/spinner.d.ts +1 -1
  500. package/dist/entries/spinner.js +1 -1
  501. package/dist/entries/submit-feedback-composer.d.ts +1 -1
  502. package/dist/entries/submit-feedback-composer.js +1 -1
  503. package/dist/entries/switch.d.ts +1 -1
  504. package/dist/entries/switch.js +1 -1
  505. package/dist/entries/table.d.ts +1 -1
  506. package/dist/entries/table.js +1 -1
  507. package/dist/entries/tabs-variants.d.ts +1 -1
  508. package/dist/entries/tabs-variants.js +1 -1
  509. package/dist/entries/tabs.d.ts +1 -1
  510. package/dist/entries/tabs.js +1 -1
  511. package/dist/entries/textarea.d.ts +1 -1
  512. package/dist/entries/textarea.js +1 -1
  513. package/dist/entries/timestamp-format.d.ts +1 -1
  514. package/dist/entries/timestamp-format.js +1 -1
  515. package/dist/entries/toggle-group.d.ts +1 -1
  516. package/dist/entries/toggle-group.js +1 -1
  517. package/dist/entries/toggle-variants.d.ts +1 -1
  518. package/dist/entries/toggle-variants.js +1 -1
  519. package/dist/entries/toggle.d.ts +1 -1
  520. package/dist/entries/toggle.js +1 -1
  521. package/dist/entries/tooltip.d.ts +1 -1
  522. package/dist/entries/tooltip.js +1 -1
  523. package/dist/entries/use-color-theme.d.ts +1 -1
  524. package/dist/entries/use-color-theme.js +1 -1
  525. package/dist/entries/use-feedback-composer-state.d.ts +1 -1
  526. package/dist/entries/use-feedback-composer-state.js +1 -1
  527. package/dist/entries/use-mobile.d.ts +1 -1
  528. package/dist/entries/use-mobile.js +1 -1
  529. package/dist/entries/utils.d.ts +1 -1
  530. package/dist/entries/utils.js +1 -1
  531. package/dist/entries/workflow-timeline.d.ts +1 -1
  532. package/dist/entries/workflow-timeline.js +1 -1
  533. package/dist/hooks/use-mobile.js +4 -2
  534. package/dist/lib/palette-presets.d.ts +1 -1
  535. package/dist/lib/palette.d.ts +1 -1
  536. package/dist/lib/palette.js +2 -2
  537. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { MoreHorizontalIcon, ShieldCheckIcon, UserPlusIcon } from "lucide-react";
3
- import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
4
- import { Badge } from "../ui/badge";
5
- import { Button } from "../ui/button";
6
- import { DataTable, DataTableContent, DataTableEmpty, DataTableSkeleton } from "../ui/data-table";
7
- import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../ui/dropdown-menu";
8
- import { Empty, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from "../ui/empty";
9
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../ui/table";
3
+ import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
4
+ import { Badge } from "../ui/badge.js";
5
+ import { Button } from "../ui/button.js";
6
+ import { DataTable, DataTableContent, DataTableEmpty, DataTableSkeleton } from "../ui/data-table.js";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../ui/dropdown-menu.js";
8
+ import { Empty, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from "../ui/empty.js";
9
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../ui/table.js";
10
10
  function AdminUsersTable({ isLoading = false, users, ...actions }) {
11
11
  if (isLoading) {
12
12
  return _jsx(AdminUsersTableLoading, {});
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { type CommentAuthor } from "./comment-types";
2
+ import { type CommentAuthor } from "./comment-types.js";
3
3
  type CommentComposerProps = {
4
4
  actionsSlot?: React.ReactNode;
5
5
  author?: CommentAuthor;
@@ -1,8 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { getCommentAuthorInitials } from "./comment-types";
4
- import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
5
- import { InputGroupButton, InputGroupTextarea } from "../ui/input-group";
3
+ import { getCommentAuthorInitials } from "./comment-types.js";
4
+ import { cn } from "../../lib/utils.js";
5
+ import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
6
+ import { InputGroupButton, InputGroupTextarea } from "../ui/input-group.js";
6
7
  const COMMENT_TEXTAREA_MAX_HEIGHT = 128;
7
8
  function CommentComposer({ actionsSlot, author, defaultExpanded = false, defaultValue = "", disabled = false, isSubmitting = false, loadingLabel = "Posting...", onSubmit, onValueChange, placeholder = "Write a reply...", submitLabel = "Post", value, }) {
8
9
  const textareaRef = React.useRef(null);
@@ -17,9 +18,17 @@ function CommentComposer({ actionsSlot, author, defaultExpanded = false, default
17
18
  });
18
19
  React.useEffect(() => {
19
20
  resizeCommentTextarea(textareaRef.current);
20
- }, [state.value]);
21
+ // showActions is a dep because each min-height bakes into the inline
22
+ // height this writes; a collapse without a value change must recompute.
23
+ }, [state.showActions, state.value]);
21
24
  const isDisabled = disabled || isSubmitting;
22
- return (_jsx("form", { onSubmit: state.onSubmit, children: _jsxs("div", { className: "grid w-full gap-1.5 rounded-md border border-input bg-background px-2.5 py-2 shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[var(--focus-ring-width)] focus-within:ring-ring/50 dark:bg-input/30", "data-disabled": isDisabled ? "true" : undefined, children: [_jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [_jsx(CommentComposerAvatar, { author: author }), _jsx(InputGroupTextarea, { "aria-label": "Comment", className: "max-h-32 min-h-7 overflow-y-hidden px-0 py-1 text-sm leading-5", disabled: isDisabled, onBlur: state.onBlur, onChange: state.onValueChange, onFocus: state.onFocus, placeholder: placeholder, ref: textareaRef, rows: 1, value: state.value })] }), _jsx(CommentComposerActions, { actionsSlot: actionsSlot, canSubmit: state.canSubmit, isSubmitting: isSubmitting, loadingLabel: loadingLabel, showActions: state.showActions, submitLabel: submitLabel })] }) }));
25
+ return (_jsx("form", { onSubmit: state.onSubmit, children: _jsxs("div", { className: "grid w-full gap-1.5 rounded-md border border-input bg-background px-2.5 py-2 shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[var(--focus-ring-width)] focus-within:ring-ring/50 dark:bg-input/30", "data-disabled": isDisabled ? "true" : undefined, children: [_jsxs("div", { className: "flex min-w-0 items-start gap-2", children: [_jsx(CommentComposerAvatar, { author: author }), _jsx(InputGroupTextarea, { "aria-label": "Comment",
26
+ // An active composer opens a few lines of room; min-height beats
27
+ // the resize logic's inline height, so growth still works. The
28
+ // two min-heights are exclusive because cn resolves no conflicts,
29
+ // and important because the base Textarea's own min-h-16 is
30
+ // emitted after both and would otherwise win in every state.
31
+ className: cn("max-h-32 overflow-y-hidden px-0 py-1 text-sm leading-5", state.showActions ? "min-h-14!" : "min-h-7!"), disabled: isDisabled, onBlur: state.onBlur, onChange: state.onValueChange, onFocus: state.onFocus, onKeyDown: onComposerKeyDown, placeholder: placeholder, ref: textareaRef, rows: 1, value: state.value })] }), _jsx(CommentComposerActions, { actionsSlot: actionsSlot, canSubmit: state.canSubmit, isSubmitting: isSubmitting, loadingLabel: loadingLabel, showActions: state.showActions, submitLabel: submitLabel })] }) }));
23
32
  }
24
33
  function useCommentComposerState({ defaultExpanded, defaultValue, disabled, isSubmitting, onSubmit, onValueChange, value, }) {
25
34
  const [localValue, setLocalValue] = React.useState(defaultValue);
@@ -108,6 +117,15 @@ function CommentComposerAvatar({ author }) {
108
117
  function CommentSubmitButton({ canSubmit, isSubmitting, loadingLabel, submitLabel, }) {
109
118
  return (_jsx(InputGroupButton, { disabled: !canSubmit, loading: isSubmitting, loadingLabel: loadingLabel, size: "sm", type: "submit", children: submitLabel }));
110
119
  }
120
+ /** Cmd/Ctrl+Enter posts; plain Enter keeps writing, as in every comment box. */
121
+ function onComposerKeyDown(event) {
122
+ if (event.key !== "Enter" || !(event.metaKey || event.ctrlKey))
123
+ return;
124
+ if (event.nativeEvent.isComposing)
125
+ return; // mid-IME Enter confirms the composition
126
+ event.preventDefault();
127
+ event.currentTarget.form?.requestSubmit();
128
+ }
111
129
  function resizeCommentTextarea(textarea) {
112
130
  if (!textarea)
113
131
  return;
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import { type CommentItemData } from "./comment-types";
2
+ import { type CommentItemData } from "./comment-types.js";
3
3
  type CommentItemProps = {
4
4
  actionsSlot?: React.ReactNode;
5
5
  comment: CommentItemData;
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../lib/utils";
3
- import { formatTimestamp, formatTimestampFull, getTimestampDateTime } from "./timestamp-format";
4
- import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
5
- import { getCommentAuthorInitials } from "./comment-types";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { formatTimestamp, formatTimestampFull, getTimestampDateTime } from "./timestamp-format.js";
4
+ import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
5
+ import { getCommentAuthorInitials } from "./comment-types.js";
6
6
  function CommentItem({ actionsSlot, comment }) {
7
7
  return (_jsxs("article", { className: "group/comment flex min-w-0 gap-3 rounded-md px-1 py-3", children: [_jsx(CommentAvatar, { comment: comment }), _jsxs("div", { className: "grid min-w-0 flex-1 gap-1.5", children: [_jsx(CommentHeader, { actionsSlot: actionsSlot, comment: comment }), _jsx("p", { className: "text-sm leading-relaxed break-words whitespace-pre-wrap text-foreground", children: comment.body })] })] }));
8
8
  }
@@ -1,5 +1,5 @@
1
- import type * as React from "react";
2
- import type { CommentAuthor, CommentItemData } from "./comment-types";
1
+ import * as React from "react";
2
+ import type { CommentAuthor, CommentItemData } from "./comment-types.js";
3
3
  type CommentThreadProps = {
4
4
  comments: CommentItemData[];
5
5
  composerAuthor?: CommentAuthor;
@@ -1,11 +1,41 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
2
3
  import { MessageSquareTextIcon } from "lucide-react";
3
- import { CommentComposer } from "./comment-composer";
4
- import { CommentItem } from "./comment-item";
5
- import { Skeleton } from "../ui/skeleton";
4
+ import { CommentComposer } from "./comment-composer.js";
5
+ import { CommentItem } from "./comment-item.js";
6
+ import { Skeleton } from "../ui/skeleton.js";
6
7
  function CommentThread({ comments, composerAuthor, composerPlaceholder, composerSubmitLabel, emptyDescription = "Start the conversation with a short update or question.", emptyTitle = "No comments yet", isLoading = false, isSubmitting = false, onSubmit, readOnly = false, renderCommentActions, showHeader = true, title = "Comments", }) {
7
- const showComposer = !readOnly && Boolean(onSubmit);
8
- return (_jsxs("section", { className: "grid w-full gap-(--panel-gap)", "aria-label": title, children: [showHeader ? _jsx(CommentThreadHeader, { count: comments.length, title: title }) : null, _jsx(CommentThreadBody, { comments: comments, emptyDescription: emptyDescription, emptyTitle: emptyTitle, isLoading: isLoading, renderCommentActions: renderCommentActions }), showComposer && onSubmit ? (_jsx(CommentComposer, { author: composerAuthor, isSubmitting: isSubmitting, onSubmit: onSubmit, placeholder: composerPlaceholder, submitLabel: composerSubmitLabel })) : null] }));
8
+ const { armReveal, endRef } = useRevealThreadEnd(comments.length);
9
+ const submitAndReveal = !readOnly && onSubmit
10
+ ? async (body) => {
11
+ await onSubmit(body);
12
+ armReveal();
13
+ }
14
+ : undefined;
15
+ return (_jsxs("section", { className: "relative grid w-full gap-(--panel-gap)", "aria-label": title, children: [showHeader ? _jsx(CommentThreadHeader, { count: comments.length, title: title }) : null, _jsx(CommentThreadBody, { comments: comments, emptyDescription: emptyDescription, emptyTitle: emptyTitle, isLoading: isLoading, renderCommentActions: renderCommentActions }), submitAndReveal ? (_jsx(CommentComposer, { author: composerAuthor, isSubmitting: isSubmitting, onSubmit: submitAndReveal, placeholder: composerPlaceholder, submitLabel: composerSubmitLabel })) : null, _jsx("div", { "aria-hidden": true, className: "absolute bottom-0", ref: endRef })] }));
16
+ }
17
+ /**
18
+ * After a send, the thread follows its own tail: scroll once when the submit
19
+ * resolves, and again when the posted comment actually lands in `comments` —
20
+ * the app may only append it after a refetch.
21
+ */
22
+ function useRevealThreadEnd(commentCount) {
23
+ const endRef = React.useRef(null);
24
+ // A deadline, not a flag: the follow-up scroll only chases the send it
25
+ // belongs to, so a comment arriving minutes later cannot yank a reader
26
+ // who has scrolled away.
27
+ const armedUntil = React.useRef(0);
28
+ React.useEffect(() => {
29
+ if (armedUntil.current === 0 || Date.now() > armedUntil.current)
30
+ return;
31
+ armedUntil.current = 0;
32
+ endRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
33
+ }, [commentCount]);
34
+ const armReveal = React.useCallback(() => {
35
+ armedUntil.current = Date.now() + 5000;
36
+ endRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
37
+ }, []);
38
+ return { armReveal, endRef };
9
39
  }
10
40
  function CommentThreadHeader({ count, title }) {
11
41
  return (_jsxs("header", { className: "flex items-center justify-between gap-3", children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: title }), _jsx("span", { className: "font-mono text-xs text-muted-foreground tabular-nums", children: count })] }));
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CheckIcon, CopyIcon } from "lucide-react";
3
3
  import { useEffect, useId, useState } from "react";
4
4
  import { toast } from "sonner";
5
- import { Button } from "../ui/button";
6
- import { Input } from "../ui/input";
7
- import { Label } from "../ui/label";
5
+ import { Button } from "../ui/button.js";
6
+ import { Input } from "../ui/input.js";
7
+ import { Label } from "../ui/label.js";
8
8
  /** PostHog's own no-capture vocabulary — a fixed class name, not app config. */
9
9
  const POSTHOG_NO_CAPTURE_CLASS_NAME = "ph-no-capture";
10
10
  const COPIED_RESET_DELAY = 2000;
@@ -1,5 +1,5 @@
1
- import type { CommentItemData } from "./comment-types";
2
- import type { UserFeedbackItem } from "./feedback-tracking-types";
1
+ import type { CommentItemData } from "./comment-types.js";
2
+ import type { UserFeedbackItem } from "./feedback-tracking-types.js";
3
3
  type FeedbackCommentSubmitHandler = (feedback: UserFeedbackItem, body: string) => void | Promise<void>;
4
4
  type FeedbackCenterCommentThreadProps = {
5
5
  comments: CommentItemData[];
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AlertCircleIcon } from "lucide-react";
3
- import { CommentThread } from "./comment-thread";
4
- import { Alert, AlertDescription, AlertTitle } from "../ui/alert";
5
- import { Button } from "../ui/button";
3
+ import { CommentThread } from "./comment-thread.js";
4
+ import { Alert, AlertDescription, AlertTitle } from "../ui/alert.js";
5
+ import { Button } from "../ui/button.js";
6
6
  function FeedbackCenterCommentThread({ comments, error, feedback, isCommentSubmitting, isCommentsLoading, onRetry, onSubmitComment, }) {
7
7
  // A retry in flight shows the thread's loading state, not the stale error.
8
8
  if (error && !isCommentsLoading) {
@@ -1,5 +1,5 @@
1
- import type { FeedbackCenterTab } from "./feedback-center-sheet-parts";
2
- import type { FeedbackUrgency } from "./feedback-composer-types";
1
+ import type { FeedbackCenterTab } from "./feedback-center-sheet-parts.js";
2
+ import type { FeedbackUrgency } from "./feedback-composer-types.js";
3
3
  type FeedbackCenterFooterProps = {
4
4
  activeTab: FeedbackCenterTab;
5
5
  formId: string;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AlertTriangleIcon, SendIcon } from "lucide-react";
3
- import { Button } from "../ui/button";
4
- import { SheetFooter } from "../ui/sheet";
3
+ import { Button } from "../ui/button.js";
4
+ import { SheetFooter } from "../ui/sheet.js";
5
5
  function FeedbackCenterFooter({ activeTab, formId, isSubmitted, isSubmitting, onCancel, urgency, }) {
6
6
  if (activeTab !== "submit" || isSubmitted)
7
7
  return null;
@@ -1,9 +1,9 @@
1
1
  import type * as React from "react";
2
- import type { CommentItemData } from "./comment-types";
3
- import { type FeedbackCommentSubmitHandler } from "./feedback-center-comments";
4
- import { type FeedbackComposerProps } from "./feedback-composer";
5
- import type { FeedbackUrgency } from "./feedback-composer-types";
6
- import type { UserFeedbackItem } from "./feedback-tracking-types";
2
+ import type { CommentItemData } from "./comment-types.js";
3
+ import { type FeedbackCommentSubmitHandler } from "./feedback-center-comments.js";
4
+ import { type FeedbackComposerProps } from "./feedback-composer.js";
5
+ import type { FeedbackUrgency } from "./feedback-composer-types.js";
6
+ import type { UserFeedbackItem } from "./feedback-tracking-types.js";
7
7
  type FeedbackCenterTab = "mine" | "submit";
8
8
  type FeedbackCenterView = "detail" | "list";
9
9
  type FeedbackCenterComposerProps = Omit<FeedbackComposerProps, "actions" | "formId" | "onCancel" | "onDirtyChange" | "onSubmittedChange" | "onUrgencyChange">;
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { FeedbackCenterCommentThread, } from "./feedback-center-comments";
3
- import { FeedbackComposer } from "./feedback-composer";
4
- import { FeedbackUserDetail } from "./feedback-user-detail";
5
- import { FeedbackUserList } from "./feedback-user-list";
6
- import { Badge } from "../ui/badge";
7
- import { SheetDescription, SheetHeader, SheetTitle } from "../ui/sheet";
8
- import { TabsContent, TabsList, TabsTrigger } from "../ui/tabs";
2
+ import { FeedbackCenterCommentThread, } from "./feedback-center-comments.js";
3
+ import { FeedbackComposer } from "./feedback-composer.js";
4
+ import { FeedbackUserDetail } from "./feedback-user-detail.js";
5
+ import { FeedbackUserList } from "./feedback-user-list.js";
6
+ import { Badge } from "../ui/badge.js";
7
+ import { SheetDescription, SheetHeader, SheetTitle } from "../ui/sheet.js";
8
+ import { TabsContent, TabsList, TabsTrigger } from "../ui/tabs.js";
9
9
  function FeedbackCenterSheetHeader({ unreadReplyCount }) {
10
10
  return (_jsxs(SheetHeader, { className: "gap-3", children: [_jsxs("div", { className: "grid gap-1.5 pr-12", children: [_jsx(SheetTitle, { children: "Feedback" }), _jsx(SheetDescription, { children: "Send feedback and track your submissions in one place." })] }), _jsx(FeedbackCenterTabsList, { unreadReplyCount: unreadReplyCount })] }));
11
11
  }
@@ -1,9 +1,9 @@
1
1
  import * as React from "react";
2
- import type { CommentItemData } from "./comment-types";
3
- import type { FeedbackCommentSubmitHandler } from "./feedback-center-comments";
4
- import { type FeedbackCenterTab } from "./feedback-center-sheet-parts";
5
- import type { FeedbackComposerProps } from "./feedback-composer";
6
- import type { UserFeedbackItem } from "./feedback-tracking-types";
2
+ import type { CommentItemData } from "./comment-types.js";
3
+ import type { FeedbackCommentSubmitHandler } from "./feedback-center-comments.js";
4
+ import { type FeedbackCenterTab } from "./feedback-center-sheet-parts.js";
5
+ import type { FeedbackComposerProps } from "./feedback-composer.js";
6
+ import type { UserFeedbackItem } from "./feedback-tracking-types.js";
7
7
  type FeedbackCenterSheetProps = Omit<FeedbackComposerProps, "actions" | "formId" | "onCancel" | "onDirtyChange" | "onSubmittedChange" | "onUrgencyChange"> & {
8
8
  commentsByFeedbackId?: Record<string, CommentItemData[]>;
9
9
  commentsError?: Error | null;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { FeedbackCenterFooter } from "./feedback-center-footer";
4
- import { FeedbackCenterSheetHeader, FeedbackCenterTabs, } from "./feedback-center-sheet-parts";
5
- import { FormSheet, useFormSheetActions } from "../ui/form-sheet";
6
- import { SheetBody, SheetContent } from "../ui/sheet";
7
- import { Tabs } from "../ui/tabs";
3
+ import { FeedbackCenterFooter } from "./feedback-center-footer.js";
4
+ import { FeedbackCenterSheetHeader, FeedbackCenterTabs, } from "./feedback-center-sheet-parts.js";
5
+ import { FormSheet, useFormSheetActions } from "../ui/form-sheet.js";
6
+ import { SheetBody, SheetContent } from "../ui/sheet.js";
7
+ import { Tabs } from "../ui/tabs.js";
8
8
  function FeedbackCenterSheet(props) {
9
9
  const state = useFeedbackCenterSheetState(props);
10
10
  return (_jsx(FormSheet, { closeDisabled: props.isSubmitting ?? false, isDirty: state.isDirty, onOpenChange: props.onOpenChange, open: props.open, children: _jsx(FeedbackCenterSheetContent, { props: props, state: state }) }));
@@ -1,4 +1,4 @@
1
- import type { FeedbackType, FeedbackUrgency } from "./feedback-composer-types";
1
+ import type { FeedbackType, FeedbackUrgency } from "./feedback-composer-types.js";
2
2
  declare function FeedbackTypeField({ disabled, onTypeChange, type, }: {
3
3
  disabled: boolean;
4
4
  onTypeChange: (type: FeedbackType) => void;
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { BugIcon, CheckCircle2Icon, LightbulbIcon, MessageSquareTextIcon, SendIcon, } from "lucide-react";
3
- import { Alert, AlertDescription, AlertTitle } from "../ui/alert";
4
- import { Button } from "../ui/button";
5
- import { FieldContent, FieldSet, FieldTitle } from "../ui/field";
6
- import { ToggleGroup, ToggleGroupItem } from "../ui/toggle-group";
3
+ import { Alert, AlertDescription, AlertTitle } from "../ui/alert.js";
4
+ import { Button } from "../ui/button.js";
5
+ import { FieldContent, FieldSet, FieldTitle } from "../ui/field.js";
6
+ import { ToggleGroup, ToggleGroupItem } from "../ui/toggle-group.js";
7
7
  const feedbackTypeOptions = [
8
8
  {
9
9
  icon: BugIcon,
@@ -1,4 +1,4 @@
1
- import type { FeedbackAffectedScope, FeedbackUrgency } from "./feedback-tracking-types";
1
+ import type { FeedbackAffectedScope, FeedbackUrgency } from "./feedback-tracking-types.js";
2
2
  type FeedbackType = "bug" | "feature" | "general";
3
3
  type FeedbackSubmitValues = {
4
4
  affectedScope: FeedbackAffectedScope;
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { FeedbackSubmitValues, FeedbackType, FeedbackUrgency } from "./feedback-composer-types";
2
+ import type { FeedbackSubmitValues, FeedbackType, FeedbackUrgency } from "./feedback-composer-types.js";
3
3
  type FeedbackComposerProps = {
4
4
  acceptedFileTypes?: string;
5
5
  actions?: "inline" | "external";
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { FeedbackComposerActions, FeedbackSubmittedState, FeedbackTypeField, } from "./feedback-composer-parts";
4
- import { FeedbackEmergencyFields } from "./feedback-emergency-fields";
5
- import { submitFeedbackComposer } from "./submit-feedback-composer";
6
- import { useFeedbackComposerState } from "./use-feedback-composer-state";
7
- import { FileUploadField } from "../ui/file-upload-field";
8
- import { Field, FieldContent, FieldError, FieldGroup, FieldLabel } from "../ui/field";
9
- import { Input } from "../ui/input";
10
- import { Textarea } from "../ui/textarea";
3
+ import { FeedbackComposerActions, FeedbackSubmittedState, FeedbackTypeField, } from "./feedback-composer-parts.js";
4
+ import { FeedbackEmergencyFields } from "./feedback-emergency-fields.js";
5
+ import { submitFeedbackComposer } from "./submit-feedback-composer.js";
6
+ import { useFeedbackComposerState } from "./use-feedback-composer-state.js";
7
+ import { FileUploadField } from "../ui/file-upload-field.js";
8
+ import { Field, FieldContent, FieldError, FieldGroup, FieldLabel } from "../ui/field.js";
9
+ import { Input } from "../ui/input.js";
10
+ import { Textarea } from "../ui/textarea.js";
11
11
  function FeedbackComposer(props) {
12
12
  // Without its controls, emergency could never be confirmed — a hidden
13
13
  // emergency default would soft-lock submit — so it needs urgencyEnabled.
@@ -1,5 +1,5 @@
1
- import { type TimestampFormatOptions } from "./timestamp-format";
1
+ import { toUtcTimestamp, type TimestampFormatOptions } from "./timestamp-format.js";
2
2
  declare function formatFeedbackTimestamp(value: string | undefined, options?: TimestampFormatOptions): string;
3
3
  declare function formatFeedbackTimestampFull(value: string | undefined, options?: TimestampFormatOptions): string;
4
4
  declare function getFeedbackTimestampDateTime(value: string | undefined): string | undefined;
5
- export { formatFeedbackTimestamp, formatFeedbackTimestampFull, getFeedbackTimestampDateTime };
5
+ export { formatFeedbackTimestamp, formatFeedbackTimestampFull, getFeedbackTimestampDateTime, toUtcTimestamp, };
@@ -1,4 +1,4 @@
1
- import { formatTimestamp, formatTimestampFull, getTimestampDateTime, } from "./timestamp-format";
1
+ import { formatTimestamp, formatTimestampFull, getTimestampDateTime, toUtcTimestamp, } from "./timestamp-format.js";
2
2
  function formatFeedbackTimestamp(value, options = {}) {
3
3
  return formatTimestamp(value, options);
4
4
  }
@@ -8,4 +8,4 @@ function formatFeedbackTimestampFull(value, options = {}) {
8
8
  function getFeedbackTimestampDateTime(value) {
9
9
  return getTimestampDateTime(value);
10
10
  }
11
- export { formatFeedbackTimestamp, formatFeedbackTimestampFull, getFeedbackTimestampDateTime };
11
+ export { formatFeedbackTimestamp, formatFeedbackTimestampFull, getFeedbackTimestampDateTime, toUtcTimestamp, };
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { type FeedbackStatus, type StakeholderFeedbackItem } from "./feedback-tracking-types";
2
+ import { type FeedbackStatus, type StakeholderFeedbackItem } from "./feedback-tracking-types.js";
3
3
  type FeedbackDetailSheetProps = {
4
4
  /** Rendered after the submission — the slot for a comment thread. */
5
5
  conversation?: React.ReactNode;
@@ -1,17 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { PaperclipIcon } from "lucide-react";
4
- import { formatFeedbackTimestampFull, getFeedbackTimestampDateTime } from "./feedback-date-format";
5
- import { FeedbackStatusBadge } from "./feedback-status-badge";
6
- import { FeedbackTypeBadge } from "./feedback-type-badge";
7
- import { feedbackStatusLabels, feedbackStatusValues, getFeedbackInitials, } from "./feedback-tracking-types";
8
- import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
9
- import { Button } from "../ui/button";
10
- import { Card } from "../ui/card";
11
- import { Item, ItemActions, ItemContent, ItemDescription, ItemGroup, ItemGroupItem, ItemMedia, ItemTitle, } from "../ui/item";
12
- import { NativeSelect, NativeSelectOption } from "../ui/native-select";
13
- import { PropertyList, PropertyListItem, PropertyListLabel, PropertyListValue, } from "../ui/property-list";
14
- import { Sheet, SheetBody, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "../ui/sheet";
4
+ import { formatFeedbackTimestampFull, getFeedbackTimestampDateTime } from "./feedback-date-format.js";
5
+ import { FeedbackStatusBadge } from "./feedback-status-badge.js";
6
+ import { FeedbackTypeBadge } from "./feedback-type-badge.js";
7
+ import { feedbackStatusLabels, feedbackStatusValues, getFeedbackInitials, } from "./feedback-tracking-types.js";
8
+ import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
9
+ import { Button } from "../ui/button.js";
10
+ import { Card } from "../ui/card.js";
11
+ import { Item, ItemActions, ItemContent, ItemDescription, ItemGroup, ItemGroupItem, ItemMedia, ItemTitle, } from "../ui/item.js";
12
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select.js";
13
+ import { PropertyList, PropertyListItem, PropertyListLabel, PropertyListValue, } from "../ui/property-list.js";
14
+ import { Sheet, SheetBody, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "../ui/sheet.js";
15
15
  function FeedbackDetailSheet({ conversation, feedback, onOpenChange, onStatusChange, open, pendingStatus, }) {
16
16
  return (_jsx(Sheet, { onOpenChange: onOpenChange, open: open, children: _jsxs(SheetContent, { size: "md", children: [_jsxs(SheetHeader, { children: [_jsx(SheetTitle, { children: feedback?.subject ?? "Feedback" }), _jsx(SheetDescription, { children: onStatusChange
17
17
  ? "Review the submission and set where it stands."
@@ -27,11 +27,11 @@ function FeedbackDetailContent({ feedback, onStatusChange, pendingStatus, }) {
27
27
  */
28
28
  function FeedbackDetailStatusSection({ onStatusChange, pendingStatus, status, }) {
29
29
  const selectId = React.useId();
30
- return (_jsxs("div", { className: "grid gap-2", children: [_jsx("label", { className: "text-meta text-muted-foreground", htmlFor: selectId, children: "Status" }), _jsx(NativeSelect, { disabled: pendingStatus !== undefined, id: selectId, onChange: (event) => {
31
- const next = feedbackStatusValues.find((value) => value === event.target.value);
30
+ return (_jsxs("div", { className: "grid gap-2", children: [_jsx("label", { className: "text-meta text-muted-foreground", htmlFor: selectId, children: "Status" }), _jsxs(Select, { disabled: pendingStatus !== undefined, onValueChange: (value) => {
31
+ const next = feedbackStatusValues.find((candidate) => candidate === value);
32
32
  if (next && next !== status)
33
33
  onStatusChange(next);
34
- }, value: pendingStatus ?? status, children: feedbackStatusValues.map((value) => (_jsx(NativeSelectOption, { value: value, children: feedbackStatusLabels[value] }, value))) })] }));
34
+ }, value: pendingStatus ?? status, children: [_jsx(SelectTrigger, { className: "w-full", id: selectId, children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: feedbackStatusValues.map((value) => (_jsx(SelectItem, { value: value, children: feedbackStatusLabels[value] }, value))) })] })] }));
35
35
  }
36
36
  function FeedbackDetailSummary({ feedback }) {
37
37
  const submitter = feedback.submittedBy;
@@ -1,4 +1,4 @@
1
- import type { FeedbackAffectedScope } from "./feedback-composer-types";
1
+ import type { FeedbackAffectedScope } from "./feedback-composer-types.js";
2
2
  type FeedbackEmergencyFieldsProps = {
3
3
  affectedScope: FeedbackAffectedScope;
4
4
  affectedScopeId: string;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AlertTriangleIcon } from "lucide-react";
3
- import { Alert, AlertDescription, AlertTitle } from "../ui/alert";
4
- import { Button } from "../ui/button";
5
- import { Checkbox } from "../ui/checkbox";
6
- import { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from "../ui/field";
7
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select";
3
+ import { Alert, AlertDescription, AlertTitle } from "../ui/alert.js";
4
+ import { Button } from "../ui/button.js";
5
+ import { Checkbox } from "../ui/checkbox.js";
6
+ import { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from "../ui/field.js";
7
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select.js";
8
8
  function FeedbackEmergencyFields({ affectedScope, affectedScopeId, confirmed, confirmationDescriptionId, confirmationErrorId, confirmationId, confirmationInvalid, disabled, onAffectedScopeChange, onConfirmedChange, onEmergencyChange, isEmergency, }) {
9
9
  if (!isEmergency)
10
10
  return _jsx(FeedbackEmergencyEntry, { disabled: disabled, onEmergencyChange: onEmergencyChange });
@@ -14,7 +14,7 @@ function FeedbackEmergencyEntry({ disabled, onEmergencyChange, }) {
14
14
  return (_jsxs("div", { className: "border-t pt-(--panel-gap)", children: [_jsxs(Button, { className: "w-full justify-start text-destructive hover:text-destructive", disabled: disabled, onClick: () => onEmergencyChange(true), type: "button", variant: "outline", children: [_jsx(AlertTriangleIcon, {}), "Report an emergency"] }), _jsx("p", { className: "mt-2 text-xs text-muted-foreground", children: "Use this when service or time-sensitive work is blocked and the team needs to respond now." })] }));
15
15
  }
16
16
  function FeedbackEmergencyNotice() {
17
- return (_jsxs(Alert, { variant: "destructive", children: [_jsx(AlertTriangleIcon, {}), _jsx(AlertTitle, { children: "Emergency feedback" }), _jsx(AlertDescription, { children: "This follows the same support workflow, with an urgent priority and an immediate notification to the configured response team." })] }));
17
+ return (_jsxs(Alert, { variant: "destructive", children: [_jsx(AlertTriangleIcon, {}), _jsx(AlertTitle, { children: "Emergency feedback" }), _jsx(AlertDescription, { children: "This follows the same support workflow, marked as urgent so the team knows it needs an immediate response." })] }));
18
18
  }
19
19
  function FeedbackAffectedScopeField({ affectedScope, affectedScopeId, disabled, onAffectedScopeChange, }) {
20
20
  return (_jsxs(Field, { children: [_jsx(FieldContent, { children: _jsx(FieldLabel, { htmlFor: affectedScopeId, required: true, children: "Who is affected?" }) }), _jsxs(Select, { disabled: disabled, onValueChange: (value) => {
@@ -24,7 +24,7 @@ function FeedbackAffectedScopeField({ affectedScope, affectedScopeId, disabled,
24
24
  }
25
25
  function FeedbackEmergencyConfirmation({ confirmed, descriptionId, disabled, errorId, fieldId, invalid, onConfirmedChange, }) {
26
26
  const describedBy = invalid ? `${descriptionId} ${errorId}` : descriptionId;
27
- return (_jsxs(Field, { "data-invalid": invalid, orientation: "horizontal", children: [_jsx(Checkbox, { "aria-describedby": describedBy, "aria-invalid": invalid, "aria-required": "true", checked: confirmed, disabled: disabled, id: fieldId, onCheckedChange: (checked) => onConfirmedChange(checked === true) }), _jsxs("div", { className: "grid gap-1", children: [_jsx(FieldLabel, { htmlFor: fieldId, required: true, children: "This needs an immediate response" }), _jsx(FieldDescription, { id: descriptionId, children: "I understand this will notify the configured emergency response team." }), invalid ? (_jsx(FieldError, { id: errorId, children: "Confirm that this needs an immediate response before sending." })) : null] })] }));
27
+ return (_jsxs(Field, { "data-invalid": invalid, orientation: "horizontal", children: [_jsx(Checkbox, { "aria-describedby": describedBy, "aria-invalid": invalid, "aria-required": "true", checked: confirmed, disabled: disabled, id: fieldId, onCheckedChange: (checked) => onConfirmedChange(checked === true) }), _jsxs("div", { className: "grid gap-1", children: [_jsx(FieldLabel, { htmlFor: fieldId, required: true, children: "This needs an immediate response" }), _jsx(FieldDescription, { id: descriptionId, children: "I understand this marks the feedback as an emergency requiring an immediate response." }), invalid ? (_jsx(FieldError, { id: errorId, children: "Confirm that this needs an immediate response before sending." })) : null] })] }));
28
28
  }
29
29
  function isAffectedScope(value) {
30
30
  return ["everyone", "just_me", "my_team", "unknown"].includes(value);
@@ -1,4 +1,4 @@
1
- import type { FeedbackMetrics } from "./feedback-tracking-types";
1
+ import type { FeedbackMetrics } from "./feedback-tracking-types.js";
2
2
  type FeedbackMetricsProps = {
3
3
  metrics: FeedbackMetrics;
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { MetricsStrip, MetricsStripDetail, MetricsStripItem, MetricsStripLabel, MetricsStripValue, } from "../ui/metrics-strip";
2
+ import { MetricsStrip, MetricsStripDetail, MetricsStripItem, MetricsStripLabel, MetricsStripValue, } from "../ui/metrics-strip.js";
3
3
  function FeedbackMetricsStrip({ metrics }) {
4
4
  return (_jsxs(MetricsStrip, { className: "md:grid-cols-3 xl:grid-cols-5", children: [_jsx(FeedbackMetricItem, { detail: "Visible tickets", label: "Total", tone: "neutral", value: metrics.total }), _jsx(FeedbackMetricItem, { detail: "Awaiting triage", label: "Received", tone: "warning", value: metrics.received }), _jsx(FeedbackMetricItem, { detail: "Active work", label: "In progress", tone: "info", value: metrics.inProgress }), _jsx(FeedbackMetricItem, { detail: "Needs a decision", label: "Discussion required", tone: "warning", value: metrics.discussionRequired }), _jsx(FeedbackMetricItem, { detail: "Finished", label: "Completed", tone: "success", value: metrics.completed })] }));
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { type FeedbackComposerProps } from "./feedback-composer";
2
+ import { type FeedbackComposerProps } from "./feedback-composer.js";
3
3
  type FeedbackSheetProps = Omit<FeedbackComposerProps, "actions" | "formId" | "onCancel" | "onDirtyChange" | "onSubmittedChange" | "onUrgencyChange"> & {
4
4
  onOpenChange: (open: boolean) => void;
5
5
  open: boolean;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { AlertTriangleIcon, SendIcon } from "lucide-react";
4
- import { FeedbackComposer } from "./feedback-composer";
5
- import { Button } from "../ui/button";
6
- import { FormSheet, useFormSheetActions } from "../ui/form-sheet";
7
- import { SheetBody, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "../ui/sheet";
4
+ import { FeedbackComposer } from "./feedback-composer.js";
5
+ import { Button } from "../ui/button.js";
6
+ import { FormSheet, useFormSheetActions } from "../ui/form-sheet.js";
7
+ import { SheetBody, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "../ui/sheet.js";
8
8
  function FeedbackSheet({ onOpenChange, open, ...composerProps }) {
9
9
  const [isDirty, setIsDirty] = React.useState(false);
10
10
  React.useEffect(() => {
@@ -1,4 +1,4 @@
1
- import { type FeedbackStatus } from "./feedback-tracking-types";
1
+ import { type FeedbackStatus } from "./feedback-tracking-types.js";
2
2
  type FeedbackStatusBadgeProps = {
3
3
  status: FeedbackStatus;
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Badge } from "../ui/badge";
3
- import { feedbackStatusLabels } from "./feedback-tracking-types";
2
+ import { Badge } from "../ui/badge.js";
3
+ import { feedbackStatusLabels } from "./feedback-tracking-types.js";
4
4
  function FeedbackStatusBadge({ status }) {
5
5
  return _jsx(Badge, { variant: feedbackStatusVariants[status], children: feedbackStatusLabels[status] });
6
6
  }
@@ -1,4 +1,4 @@
1
- import { type StakeholderFeedbackItem } from "./feedback-tracking-types";
1
+ import { type StakeholderFeedbackItem } from "./feedback-tracking-types.js";
2
2
  declare function FeedbackTableRow({ item, onSelectFeedback, }: {
3
3
  item: StakeholderFeedbackItem;
4
4
  onSelectFeedback?: (item: StakeholderFeedbackItem) => void;
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AlertTriangleIcon, MessageCircleMoreIcon } from "lucide-react";
3
- import { formatFeedbackTimestamp, getFeedbackTimestampDateTime } from "./feedback-date-format";
4
- import { FeedbackStatusBadge } from "./feedback-status-badge";
5
- import { FeedbackTypeBadge } from "./feedback-type-badge";
6
- import { getFeedbackInitials } from "./feedback-tracking-types";
7
- import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar";
8
- import { Badge } from "../ui/badge";
9
- import { Button } from "../ui/button";
10
- import { TableCell, TableRow } from "../ui/table";
3
+ import { formatFeedbackTimestamp, getFeedbackTimestampDateTime } from "./feedback-date-format.js";
4
+ import { FeedbackStatusBadge } from "./feedback-status-badge.js";
5
+ import { FeedbackTypeBadge } from "./feedback-type-badge.js";
6
+ import { getFeedbackInitials } from "./feedback-tracking-types.js";
7
+ import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
8
+ import { Badge } from "../ui/badge.js";
9
+ import { Button } from "../ui/button.js";
10
+ import { TableCell, TableRow } from "../ui/table.js";
11
11
  function FeedbackTableRow({ item, onSelectFeedback, }) {
12
12
  return (_jsxs(TableRow, { className: onSelectFeedback ? "cursor-pointer focus-within:bg-muted/60" : undefined, onClick: () => onSelectFeedback?.(item), children: [_jsx(TableCell, { className: "max-w-[22rem]", children: onSelectFeedback ? (_jsx(Button, { "aria-label": `Open feedback: ${item.subject}`, className: "h-auto w-full justify-start p-0 text-left whitespace-normal hover:bg-transparent", onClick: (event) => {
13
13
  event.stopPropagation();
@@ -1,5 +1,5 @@
1
- import type { SortDirection } from "../ui/data-table";
2
- import type { StakeholderFeedbackItem } from "./feedback-tracking-types";
1
+ import type { SortDirection } from "../ui/data-table.js";
2
+ import type { StakeholderFeedbackItem } from "./feedback-tracking-types.js";
3
3
  type FeedbackTableSortKey = "status" | "submittedAt" | "submittedBy" | "type" | "updatedAt";
4
4
  type FeedbackTableSort = {
5
5
  direction: SortDirection;
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
- import type { StakeholderFeedbackItem } from "./feedback-tracking-types";
3
- import { type FeedbackTableSort, type FeedbackTableSortKey } from "./feedback-table-sort";
2
+ import type { StakeholderFeedbackItem } from "./feedback-tracking-types.js";
3
+ import { type FeedbackTableSort, type FeedbackTableSortKey } from "./feedback-table-sort.js";
4
4
  type FeedbackTableProps = {
5
5
  defaultSort?: FeedbackTableSort;
6
6
  emptyAction?: React.ReactNode;