@proofhound/web-ui 0.1.6

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 (483) hide show
  1. package/LICENSE +190 -0
  2. package/dist/components/annotations/annotation-claim-dialog.d.ts +13 -0
  3. package/dist/components/annotations/annotation-claim-dialog.d.ts.map +1 -0
  4. package/dist/components/annotations/annotation-claim-dialog.js +60 -0
  5. package/dist/components/annotations/annotation-claim-dialog.js.map +1 -0
  6. package/dist/components/charts/source-legend.d.ts +10 -0
  7. package/dist/components/charts/source-legend.d.ts.map +1 -0
  8. package/dist/components/charts/source-legend.js +15 -0
  9. package/dist/components/charts/source-legend.js.map +1 -0
  10. package/dist/components/charts/source-stacked-bar.d.ts +22 -0
  11. package/dist/components/charts/source-stacked-bar.d.ts.map +1 -0
  12. package/dist/components/charts/source-stacked-bar.js +43 -0
  13. package/dist/components/charts/source-stacked-bar.js.map +1 -0
  14. package/dist/components/index.d.ts +15 -0
  15. package/dist/components/index.d.ts.map +1 -0
  16. package/dist/components/index.js +17 -0
  17. package/dist/components/index.js.map +1 -0
  18. package/dist/components/json-object-textarea.d.ts +11 -0
  19. package/dist/components/json-object-textarea.d.ts.map +1 -0
  20. package/dist/components/json-object-textarea.js +82 -0
  21. package/dist/components/json-object-textarea.js.map +1 -0
  22. package/dist/components/model-context-window-input.d.ts +15 -0
  23. package/dist/components/model-context-window-input.d.ts.map +1 -0
  24. package/dist/components/model-context-window-input.js +57 -0
  25. package/dist/components/model-context-window-input.js.map +1 -0
  26. package/dist/components/model-probe-status.d.ts +11 -0
  27. package/dist/components/model-probe-status.d.ts.map +1 -0
  28. package/dist/components/model-probe-status.js +34 -0
  29. package/dist/components/model-probe-status.js.map +1 -0
  30. package/dist/components/prompt-diff/prompt-diff-split-view.d.ts +28 -0
  31. package/dist/components/prompt-diff/prompt-diff-split-view.d.ts.map +1 -0
  32. package/dist/components/prompt-diff/prompt-diff-split-view.js +101 -0
  33. package/dist/components/prompt-diff/prompt-diff-split-view.js.map +1 -0
  34. package/dist/components/prompt-language-select.d.ts +13 -0
  35. package/dist/components/prompt-language-select.d.ts.map +1 -0
  36. package/dist/components/prompt-language-select.js +14 -0
  37. package/dist/components/prompt-language-select.js.map +1 -0
  38. package/dist/components/prompt-version-picker-row.d.ts +27 -0
  39. package/dist/components/prompt-version-picker-row.d.ts.map +1 -0
  40. package/dist/components/prompt-version-picker-row.js +50 -0
  41. package/dist/components/prompt-version-picker-row.js.map +1 -0
  42. package/dist/components/prompt-version-status-badge.d.ts +8 -0
  43. package/dist/components/prompt-version-status-badge.d.ts.map +1 -0
  44. package/dist/components/prompt-version-status-badge.js +31 -0
  45. package/dist/components/prompt-version-status-badge.js.map +1 -0
  46. package/dist/components/quick-fill/quick-fill-picker.d.ts +42 -0
  47. package/dist/components/quick-fill/quick-fill-picker.d.ts.map +1 -0
  48. package/dist/components/quick-fill/quick-fill-picker.js +46 -0
  49. package/dist/components/quick-fill/quick-fill-picker.js.map +1 -0
  50. package/dist/components/time-zone-preference-menu.d.ts +10 -0
  51. package/dist/components/time-zone-preference-menu.d.ts.map +1 -0
  52. package/dist/components/time-zone-preference-menu.js +33 -0
  53. package/dist/components/time-zone-preference-menu.js.map +1 -0
  54. package/dist/contracts/index.d.ts +13 -0
  55. package/dist/contracts/index.d.ts.map +1 -0
  56. package/dist/contracts/index.js +7 -0
  57. package/dist/contracts/index.js.map +1 -0
  58. package/dist/features/index.d.ts +3 -0
  59. package/dist/features/index.d.ts.map +1 -0
  60. package/dist/features/index.js +4 -0
  61. package/dist/features/index.js.map +1 -0
  62. package/dist/features/model-quick-fill/model-preset-draft.d.ts +19 -0
  63. package/dist/features/model-quick-fill/model-preset-draft.d.ts.map +1 -0
  64. package/dist/features/model-quick-fill/model-preset-draft.js +22 -0
  65. package/dist/features/model-quick-fill/model-preset-draft.js.map +1 -0
  66. package/dist/features/model-quick-fill/model-preset-quick-fill.d.ts +7 -0
  67. package/dist/features/model-quick-fill/model-preset-quick-fill.d.ts.map +1 -0
  68. package/dist/features/model-quick-fill/model-preset-quick-fill.js +73 -0
  69. package/dist/features/model-quick-fill/model-preset-quick-fill.js.map +1 -0
  70. package/dist/hooks/annotation.d.ts +253 -0
  71. package/dist/hooks/annotation.d.ts.map +1 -0
  72. package/dist/hooks/annotation.js +79 -0
  73. package/dist/hooks/annotation.js.map +1 -0
  74. package/dist/hooks/canary-release.d.ts +674 -0
  75. package/dist/hooks/canary-release.d.ts.map +1 -0
  76. package/dist/hooks/canary-release.js +142 -0
  77. package/dist/hooks/canary-release.js.map +1 -0
  78. package/dist/hooks/connector.d.ts +585 -0
  79. package/dist/hooks/connector.d.ts.map +1 -0
  80. package/dist/hooks/connector.js +157 -0
  81. package/dist/hooks/connector.js.map +1 -0
  82. package/dist/hooks/dataset.d.ts +138 -0
  83. package/dist/hooks/dataset.d.ts.map +1 -0
  84. package/dist/hooks/dataset.js +84 -0
  85. package/dist/hooks/dataset.js.map +1 -0
  86. package/dist/hooks/experiment.d.ts +376 -0
  87. package/dist/hooks/experiment.d.ts.map +1 -0
  88. package/dist/hooks/experiment.js +58 -0
  89. package/dist/hooks/experiment.js.map +1 -0
  90. package/dist/hooks/index.d.ts +18 -0
  91. package/dist/hooks/index.d.ts.map +1 -0
  92. package/dist/hooks/index.js +18 -0
  93. package/dist/hooks/index.js.map +1 -0
  94. package/dist/hooks/model.d.ts +327 -0
  95. package/dist/hooks/model.d.ts.map +1 -0
  96. package/dist/hooks/model.js +103 -0
  97. package/dist/hooks/model.js.map +1 -0
  98. package/dist/hooks/optimization.d.ts +557 -0
  99. package/dist/hooks/optimization.d.ts.map +1 -0
  100. package/dist/hooks/optimization.js +94 -0
  101. package/dist/hooks/optimization.js.map +1 -0
  102. package/dist/hooks/production-release.d.ts +141 -0
  103. package/dist/hooks/production-release.d.ts.map +1 -0
  104. package/dist/hooks/production-release.js +51 -0
  105. package/dist/hooks/production-release.js.map +1 -0
  106. package/dist/hooks/project-monitoring.d.ts +199 -0
  107. package/dist/hooks/project-monitoring.d.ts.map +1 -0
  108. package/dist/hooks/project-monitoring.js +55 -0
  109. package/dist/hooks/project-monitoring.js.map +1 -0
  110. package/dist/hooks/prompt.d.ts +509 -0
  111. package/dist/hooks/prompt.d.ts.map +1 -0
  112. package/dist/hooks/prompt.js +127 -0
  113. package/dist/hooks/prompt.js.map +1 -0
  114. package/dist/hooks/quick-start.d.ts +219 -0
  115. package/dist/hooks/quick-start.d.ts.map +1 -0
  116. package/dist/hooks/quick-start.js +35 -0
  117. package/dist/hooks/quick-start.js.map +1 -0
  118. package/dist/hooks/release-line.d.ts +819 -0
  119. package/dist/hooks/release-line.d.ts.map +1 -0
  120. package/dist/hooks/release-line.js +52 -0
  121. package/dist/hooks/release-line.js.map +1 -0
  122. package/dist/hooks/run-result.d.ts +118 -0
  123. package/dist/hooks/run-result.d.ts.map +1 -0
  124. package/dist/hooks/run-result.js +56 -0
  125. package/dist/hooks/run-result.js.map +1 -0
  126. package/dist/hooks/token.d.ts +58 -0
  127. package/dist/hooks/token.d.ts.map +1 -0
  128. package/dist/hooks/token.js +39 -0
  129. package/dist/hooks/token.js.map +1 -0
  130. package/dist/hooks/use-auto-refresh.d.ts +30 -0
  131. package/dist/hooks/use-auto-refresh.d.ts.map +1 -0
  132. package/dist/hooks/use-auto-refresh.js +175 -0
  133. package/dist/hooks/use-auto-refresh.js.map +1 -0
  134. package/dist/hooks/use-date-time-formatter.d.ts +11 -0
  135. package/dist/hooks/use-date-time-formatter.d.ts.map +1 -0
  136. package/dist/hooks/use-date-time-formatter.js +24 -0
  137. package/dist/hooks/use-date-time-formatter.js.map +1 -0
  138. package/dist/hooks/use-delayed-loading.d.ts +25 -0
  139. package/dist/hooks/use-delayed-loading.d.ts.map +1 -0
  140. package/dist/hooks/use-delayed-loading.js +95 -0
  141. package/dist/hooks/use-delayed-loading.js.map +1 -0
  142. package/dist/i18n/index.d.ts +5678 -0
  143. package/dist/i18n/index.d.ts.map +1 -0
  144. package/dist/i18n/index.js +5712 -0
  145. package/dist/i18n/index.js.map +1 -0
  146. package/dist/i18n/language.d.ts +17 -0
  147. package/dist/i18n/language.d.ts.map +1 -0
  148. package/dist/i18n/language.js +43 -0
  149. package/dist/i18n/language.js.map +1 -0
  150. package/dist/index.d.ts +2 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +2 -0
  153. package/dist/index.js.map +1 -0
  154. package/dist/lib/api-error.d.ts +2 -0
  155. package/dist/lib/api-error.d.ts.map +1 -0
  156. package/dist/lib/api-error.js +38 -0
  157. package/dist/lib/api-error.js.map +1 -0
  158. package/dist/lib/format.d.ts +30 -0
  159. package/dist/lib/format.d.ts.map +1 -0
  160. package/dist/lib/format.js +157 -0
  161. package/dist/lib/format.js.map +1 -0
  162. package/dist/lib/index.d.ts +8 -0
  163. package/dist/lib/index.d.ts.map +1 -0
  164. package/dist/lib/index.js +8 -0
  165. package/dist/lib/index.js.map +1 -0
  166. package/dist/lib/model-number.d.ts +2 -0
  167. package/dist/lib/model-number.d.ts.map +1 -0
  168. package/dist/lib/model-number.js +18 -0
  169. package/dist/lib/model-number.js.map +1 -0
  170. package/dist/lib/model-provider-type.d.ts +7 -0
  171. package/dist/lib/model-provider-type.d.ts.map +1 -0
  172. package/dist/lib/model-provider-type.js +28 -0
  173. package/dist/lib/model-provider-type.js.map +1 -0
  174. package/dist/lib/project-name.d.ts +7 -0
  175. package/dist/lib/project-name.d.ts.map +1 -0
  176. package/dist/lib/project-name.js +14 -0
  177. package/dist/lib/project-name.js.map +1 -0
  178. package/dist/lib/releases/release-line-model.d.ts +55 -0
  179. package/dist/lib/releases/release-line-model.d.ts.map +1 -0
  180. package/dist/lib/releases/release-line-model.js +476 -0
  181. package/dist/lib/releases/release-line-model.js.map +1 -0
  182. package/dist/lib/time-zone.d.ts +14 -0
  183. package/dist/lib/time-zone.d.ts.map +1 -0
  184. package/dist/lib/time-zone.js +118 -0
  185. package/dist/lib/time-zone.js.map +1 -0
  186. package/dist/lib/uuid.d.ts +2 -0
  187. package/dist/lib/uuid.d.ts.map +1 -0
  188. package/dist/lib/uuid.js +5 -0
  189. package/dist/lib/uuid.js.map +1 -0
  190. package/dist/providers/display-preferences-provider.d.ts +18 -0
  191. package/dist/providers/display-preferences-provider.d.ts.map +1 -0
  192. package/dist/providers/display-preferences-provider.js +46 -0
  193. package/dist/providers/display-preferences-provider.js.map +1 -0
  194. package/dist/providers/index.d.ts +5 -0
  195. package/dist/providers/index.d.ts.map +1 -0
  196. package/dist/providers/index.js +5 -0
  197. package/dist/providers/index.js.map +1 -0
  198. package/dist/providers/project-context-provider.d.ts +8 -0
  199. package/dist/providers/project-context-provider.d.ts.map +1 -0
  200. package/dist/providers/project-context-provider.js +15 -0
  201. package/dist/providers/project-context-provider.js.map +1 -0
  202. package/dist/providers/proofhound-web-provider.d.ts +9 -0
  203. package/dist/providers/proofhound-web-provider.d.ts.map +1 -0
  204. package/dist/providers/proofhound-web-provider.js +44 -0
  205. package/dist/providers/proofhound-web-provider.js.map +1 -0
  206. package/dist/providers/refine-provider.d.ts +5 -0
  207. package/dist/providers/refine-provider.d.ts.map +1 -0
  208. package/dist/providers/refine-provider.js +23 -0
  209. package/dist/providers/refine-provider.js.map +1 -0
  210. package/dist/screens/annotations/annotation-detail-page.d.ts +5 -0
  211. package/dist/screens/annotations/annotation-detail-page.d.ts.map +1 -0
  212. package/dist/screens/annotations/annotation-detail-page.js +379 -0
  213. package/dist/screens/annotations/annotation-detail-page.js.map +1 -0
  214. package/dist/screens/annotations/annotation-new-page.d.ts +4 -0
  215. package/dist/screens/annotations/annotation-new-page.d.ts.map +1 -0
  216. package/dist/screens/annotations/annotation-new-page.js +125 -0
  217. package/dist/screens/annotations/annotation-new-page.js.map +1 -0
  218. package/dist/screens/annotations/annotation-task-model.d.ts +39 -0
  219. package/dist/screens/annotations/annotation-task-model.d.ts.map +1 -0
  220. package/dist/screens/annotations/annotation-task-model.js +88 -0
  221. package/dist/screens/annotations/annotation-task-model.js.map +1 -0
  222. package/dist/screens/annotations/annotation-ui.d.ts +33 -0
  223. package/dist/screens/annotations/annotation-ui.d.ts.map +1 -0
  224. package/dist/screens/annotations/annotation-ui.js +92 -0
  225. package/dist/screens/annotations/annotation-ui.js.map +1 -0
  226. package/dist/screens/annotations/annotations-list-page.d.ts +4 -0
  227. package/dist/screens/annotations/annotations-list-page.d.ts.map +1 -0
  228. package/dist/screens/annotations/annotations-list-page.js +82 -0
  229. package/dist/screens/annotations/annotations-list-page.js.map +1 -0
  230. package/dist/screens/connectors/connector-detail-page.d.ts +5 -0
  231. package/dist/screens/connectors/connector-detail-page.d.ts.map +1 -0
  232. package/dist/screens/connectors/connector-detail-page.js +838 -0
  233. package/dist/screens/connectors/connector-detail-page.js.map +1 -0
  234. package/dist/screens/connectors/connector-form-page.d.ts +8 -0
  235. package/dist/screens/connectors/connector-form-page.d.ts.map +1 -0
  236. package/dist/screens/connectors/connector-form-page.js +328 -0
  237. package/dist/screens/connectors/connector-form-page.js.map +1 -0
  238. package/dist/screens/connectors/connector-peek-dialog.d.ts +8 -0
  239. package/dist/screens/connectors/connector-peek-dialog.d.ts.map +1 -0
  240. package/dist/screens/connectors/connector-peek-dialog.js +24 -0
  241. package/dist/screens/connectors/connector-peek-dialog.js.map +1 -0
  242. package/dist/screens/connectors/connector-types.d.ts +36 -0
  243. package/dist/screens/connectors/connector-types.d.ts.map +1 -0
  244. package/dist/screens/connectors/connector-types.js +48 -0
  245. package/dist/screens/connectors/connector-types.js.map +1 -0
  246. package/dist/screens/connectors/connector-ui.d.ts +14 -0
  247. package/dist/screens/connectors/connector-ui.d.ts.map +1 -0
  248. package/dist/screens/connectors/connector-ui.js +40 -0
  249. package/dist/screens/connectors/connector-ui.js.map +1 -0
  250. package/dist/screens/connectors/connectors-list-page.d.ts +4 -0
  251. package/dist/screens/connectors/connectors-list-page.d.ts.map +1 -0
  252. package/dist/screens/connectors/connectors-list-page.js +220 -0
  253. package/dist/screens/connectors/connectors-list-page.js.map +1 -0
  254. package/dist/screens/dashboard/dashboard-screen.d.ts +5 -0
  255. package/dist/screens/dashboard/dashboard-screen.d.ts.map +1 -0
  256. package/dist/screens/dashboard/dashboard-screen.js +524 -0
  257. package/dist/screens/dashboard/dashboard-screen.js.map +1 -0
  258. package/dist/screens/datasets/dataset-detail-helpers.d.ts +10 -0
  259. package/dist/screens/datasets/dataset-detail-helpers.d.ts.map +1 -0
  260. package/dist/screens/datasets/dataset-detail-helpers.js +84 -0
  261. package/dist/screens/datasets/dataset-detail-helpers.js.map +1 -0
  262. package/dist/screens/datasets/dataset-detail-page.d.ts +6 -0
  263. package/dist/screens/datasets/dataset-detail-page.d.ts.map +1 -0
  264. package/dist/screens/datasets/dataset-detail-page.js +379 -0
  265. package/dist/screens/datasets/dataset-detail-page.js.map +1 -0
  266. package/dist/screens/datasets/dataset-import-runner.d.ts +17 -0
  267. package/dist/screens/datasets/dataset-import-runner.d.ts.map +1 -0
  268. package/dist/screens/datasets/dataset-import-runner.js +33 -0
  269. package/dist/screens/datasets/dataset-import-runner.js.map +1 -0
  270. package/dist/screens/datasets/dataset-mappers.d.ts +5 -0
  271. package/dist/screens/datasets/dataset-mappers.d.ts.map +1 -0
  272. package/dist/screens/datasets/dataset-mappers.js +79 -0
  273. package/dist/screens/datasets/dataset-mappers.js.map +1 -0
  274. package/dist/screens/datasets/dataset-samples-table.d.ts +21 -0
  275. package/dist/screens/datasets/dataset-samples-table.d.ts.map +1 -0
  276. package/dist/screens/datasets/dataset-samples-table.js +59 -0
  277. package/dist/screens/datasets/dataset-samples-table.js.map +1 -0
  278. package/dist/screens/datasets/dataset-transfer-progress.d.ts +30 -0
  279. package/dist/screens/datasets/dataset-transfer-progress.d.ts.map +1 -0
  280. package/dist/screens/datasets/dataset-transfer-progress.js +157 -0
  281. package/dist/screens/datasets/dataset-transfer-progress.js.map +1 -0
  282. package/dist/screens/datasets/dataset-types.d.ts +59 -0
  283. package/dist/screens/datasets/dataset-types.d.ts.map +1 -0
  284. package/dist/screens/datasets/dataset-types.js +15 -0
  285. package/dist/screens/datasets/dataset-types.js.map +1 -0
  286. package/dist/screens/datasets/dataset-ui.d.ts +49 -0
  287. package/dist/screens/datasets/dataset-ui.d.ts.map +1 -0
  288. package/dist/screens/datasets/dataset-ui.js +163 -0
  289. package/dist/screens/datasets/dataset-ui.js.map +1 -0
  290. package/dist/screens/datasets/dataset-upload-page.d.ts +4 -0
  291. package/dist/screens/datasets/dataset-upload-page.d.ts.map +1 -0
  292. package/dist/screens/datasets/dataset-upload-page.js +425 -0
  293. package/dist/screens/datasets/dataset-upload-page.js.map +1 -0
  294. package/dist/screens/datasets/dataset-upload-parser.d.ts +21 -0
  295. package/dist/screens/datasets/dataset-upload-parser.d.ts.map +1 -0
  296. package/dist/screens/datasets/dataset-upload-parser.js +536 -0
  297. package/dist/screens/datasets/dataset-upload-parser.js.map +1 -0
  298. package/dist/screens/datasets/datasets-list-page.d.ts +4 -0
  299. package/dist/screens/datasets/datasets-list-page.d.ts.map +1 -0
  300. package/dist/screens/datasets/datasets-list-page.js +249 -0
  301. package/dist/screens/datasets/datasets-list-page.js.map +1 -0
  302. package/dist/screens/experiments/experiment-detail-page.d.ts +5 -0
  303. package/dist/screens/experiments/experiment-detail-page.d.ts.map +1 -0
  304. package/dist/screens/experiments/experiment-detail-page.js +460 -0
  305. package/dist/screens/experiments/experiment-detail-page.js.map +1 -0
  306. package/dist/screens/experiments/experiment-new-page.d.ts +21 -0
  307. package/dist/screens/experiments/experiment-new-page.d.ts.map +1 -0
  308. package/dist/screens/experiments/experiment-new-page.js +427 -0
  309. package/dist/screens/experiments/experiment-new-page.js.map +1 -0
  310. package/dist/screens/experiments/experiment-option-adapter.d.ts +68 -0
  311. package/dist/screens/experiments/experiment-option-adapter.d.ts.map +1 -0
  312. package/dist/screens/experiments/experiment-option-adapter.js +225 -0
  313. package/dist/screens/experiments/experiment-option-adapter.js.map +1 -0
  314. package/dist/screens/experiments/experiment-progress.d.ts +5 -0
  315. package/dist/screens/experiments/experiment-progress.d.ts.map +1 -0
  316. package/dist/screens/experiments/experiment-progress.js +15 -0
  317. package/dist/screens/experiments/experiment-progress.js.map +1 -0
  318. package/dist/screens/experiments/experiment-repeat-href.d.ts +17 -0
  319. package/dist/screens/experiments/experiment-repeat-href.d.ts.map +1 -0
  320. package/dist/screens/experiments/experiment-repeat-href.js +32 -0
  321. package/dist/screens/experiments/experiment-repeat-href.js.map +1 -0
  322. package/dist/screens/experiments/experiment-theme.d.ts +43 -0
  323. package/dist/screens/experiments/experiment-theme.d.ts.map +1 -0
  324. package/dist/screens/experiments/experiment-theme.js +43 -0
  325. package/dist/screens/experiments/experiment-theme.js.map +1 -0
  326. package/dist/screens/experiments/experiment-ui.d.ts +36 -0
  327. package/dist/screens/experiments/experiment-ui.d.ts.map +1 -0
  328. package/dist/screens/experiments/experiment-ui.js +46 -0
  329. package/dist/screens/experiments/experiment-ui.js.map +1 -0
  330. package/dist/screens/experiments/experiment-view-model.d.ts +118 -0
  331. package/dist/screens/experiments/experiment-view-model.d.ts.map +1 -0
  332. package/dist/screens/experiments/experiment-view-model.js +114 -0
  333. package/dist/screens/experiments/experiment-view-model.js.map +1 -0
  334. package/dist/screens/experiments/experiments-comparison-view.d.ts +10 -0
  335. package/dist/screens/experiments/experiments-comparison-view.d.ts.map +1 -0
  336. package/dist/screens/experiments/experiments-comparison-view.js +215 -0
  337. package/dist/screens/experiments/experiments-comparison-view.js.map +1 -0
  338. package/dist/screens/experiments/experiments-list-page.d.ts +4 -0
  339. package/dist/screens/experiments/experiments-list-page.d.ts.map +1 -0
  340. package/dist/screens/experiments/experiments-list-page.js +364 -0
  341. package/dist/screens/experiments/experiments-list-page.js.map +1 -0
  342. package/dist/screens/experiments/experiments-table.d.ts +18 -0
  343. package/dist/screens/experiments/experiments-table.d.ts.map +1 -0
  344. package/dist/screens/experiments/experiments-table.js +97 -0
  345. package/dist/screens/experiments/experiments-table.js.map +1 -0
  346. package/dist/screens/experiments/run-result-detail-sheet.d.ts +9 -0
  347. package/dist/screens/experiments/run-result-detail-sheet.d.ts.map +1 -0
  348. package/dist/screens/experiments/run-result-detail-sheet.js +89 -0
  349. package/dist/screens/experiments/run-result-detail-sheet.js.map +1 -0
  350. package/dist/screens/experiments/run-result-display.d.ts +28 -0
  351. package/dist/screens/experiments/run-result-display.d.ts.map +1 -0
  352. package/dist/screens/experiments/run-result-display.js +124 -0
  353. package/dist/screens/experiments/run-result-display.js.map +1 -0
  354. package/dist/screens/experiments/run-result-labels.d.ts +16 -0
  355. package/dist/screens/experiments/run-result-labels.d.ts.map +1 -0
  356. package/dist/screens/experiments/run-result-labels.js +52 -0
  357. package/dist/screens/experiments/run-result-labels.js.map +1 -0
  358. package/dist/screens/index.d.ts +29 -0
  359. package/dist/screens/index.d.ts.map +1 -0
  360. package/dist/screens/index.js +43 -0
  361. package/dist/screens/index.js.map +1 -0
  362. package/dist/screens/models/model-form-page.d.ts +9 -0
  363. package/dist/screens/models/model-form-page.d.ts.map +1 -0
  364. package/dist/screens/models/model-form-page.js +876 -0
  365. package/dist/screens/models/model-form-page.js.map +1 -0
  366. package/dist/screens/models/model-view-model.d.ts +66 -0
  367. package/dist/screens/models/model-view-model.d.ts.map +1 -0
  368. package/dist/screens/models/model-view-model.js +36 -0
  369. package/dist/screens/models/model-view-model.js.map +1 -0
  370. package/dist/screens/models/models-list-page.d.ts +4 -0
  371. package/dist/screens/models/models-list-page.d.ts.map +1 -0
  372. package/dist/screens/models/models-list-page.js +352 -0
  373. package/dist/screens/models/models-list-page.js.map +1 -0
  374. package/dist/screens/models/project-model-adapter.d.ts +5 -0
  375. package/dist/screens/models/project-model-adapter.d.ts.map +1 -0
  376. package/dist/screens/models/project-model-adapter.js +63 -0
  377. package/dist/screens/models/project-model-adapter.js.map +1 -0
  378. package/dist/screens/monitoring/big-chart-card.d.ts +36 -0
  379. package/dist/screens/monitoring/big-chart-card.d.ts.map +1 -0
  380. package/dist/screens/monitoring/big-chart-card.js +32 -0
  381. package/dist/screens/monitoring/big-chart-card.js.map +1 -0
  382. package/dist/screens/monitoring/monitoring-filter-strip.d.ts +14 -0
  383. package/dist/screens/monitoring/monitoring-filter-strip.d.ts.map +1 -0
  384. package/dist/screens/monitoring/monitoring-filter-strip.js +36 -0
  385. package/dist/screens/monitoring/monitoring-filter-strip.js.map +1 -0
  386. package/dist/screens/monitoring/project-monitoring-page.d.ts +9 -0
  387. package/dist/screens/monitoring/project-monitoring-page.d.ts.map +1 -0
  388. package/dist/screens/monitoring/project-monitoring-page.js +240 -0
  389. package/dist/screens/monitoring/project-monitoring-page.js.map +1 -0
  390. package/dist/screens/monitoring/ranking-cards.d.ts +23 -0
  391. package/dist/screens/monitoring/ranking-cards.d.ts.map +1 -0
  392. package/dist/screens/monitoring/ranking-cards.js +78 -0
  393. package/dist/screens/monitoring/ranking-cards.js.map +1 -0
  394. package/dist/screens/optimizations/optimization-detail-page.d.ts +5 -0
  395. package/dist/screens/optimizations/optimization-detail-page.d.ts.map +1 -0
  396. package/dist/screens/optimizations/optimization-detail-page.js +934 -0
  397. package/dist/screens/optimizations/optimization-detail-page.js.map +1 -0
  398. package/dist/screens/optimizations/optimization-mappers.d.ts +56 -0
  399. package/dist/screens/optimizations/optimization-mappers.d.ts.map +1 -0
  400. package/dist/screens/optimizations/optimization-mappers.js +142 -0
  401. package/dist/screens/optimizations/optimization-mappers.js.map +1 -0
  402. package/dist/screens/optimizations/optimization-new-page.d.ts +8 -0
  403. package/dist/screens/optimizations/optimization-new-page.d.ts.map +1 -0
  404. package/dist/screens/optimizations/optimization-new-page.js +732 -0
  405. package/dist/screens/optimizations/optimization-new-page.js.map +1 -0
  406. package/dist/screens/optimizations/optimization-theme.d.ts +43 -0
  407. package/dist/screens/optimizations/optimization-theme.d.ts.map +1 -0
  408. package/dist/screens/optimizations/optimization-theme.js +46 -0
  409. package/dist/screens/optimizations/optimization-theme.js.map +1 -0
  410. package/dist/screens/optimizations/optimization-ui.d.ts +60 -0
  411. package/dist/screens/optimizations/optimization-ui.d.ts.map +1 -0
  412. package/dist/screens/optimizations/optimization-ui.js +164 -0
  413. package/dist/screens/optimizations/optimization-ui.js.map +1 -0
  414. package/dist/screens/optimizations/optimizations-list-page.d.ts +4 -0
  415. package/dist/screens/optimizations/optimizations-list-page.d.ts.map +1 -0
  416. package/dist/screens/optimizations/optimizations-list-page.js +358 -0
  417. package/dist/screens/optimizations/optimizations-list-page.js.map +1 -0
  418. package/dist/screens/prompts/prompt-body-editor.d.ts +15 -0
  419. package/dist/screens/prompts/prompt-body-editor.d.ts.map +1 -0
  420. package/dist/screens/prompts/prompt-body-editor.js +165 -0
  421. package/dist/screens/prompts/prompt-body-editor.js.map +1 -0
  422. package/dist/screens/prompts/prompt-dataset-variables.d.ts +4 -0
  423. package/dist/screens/prompts/prompt-dataset-variables.d.ts.map +1 -0
  424. package/dist/screens/prompts/prompt-dataset-variables.js +27 -0
  425. package/dist/screens/prompts/prompt-dataset-variables.js.map +1 -0
  426. package/dist/screens/prompts/prompt-detail-page.d.ts +5 -0
  427. package/dist/screens/prompts/prompt-detail-page.d.ts.map +1 -0
  428. package/dist/screens/prompts/prompt-detail-page.js +1013 -0
  429. package/dist/screens/prompts/prompt-detail-page.js.map +1 -0
  430. package/dist/screens/prompts/prompt-model.d.ts +77 -0
  431. package/dist/screens/prompts/prompt-model.d.ts.map +1 -0
  432. package/dist/screens/prompts/prompt-model.js +152 -0
  433. package/dist/screens/prompts/prompt-model.js.map +1 -0
  434. package/dist/screens/prompts/prompt-preview-parts.d.ts +12 -0
  435. package/dist/screens/prompts/prompt-preview-parts.d.ts.map +1 -0
  436. package/dist/screens/prompts/prompt-preview-parts.js +32 -0
  437. package/dist/screens/prompts/prompt-preview-parts.js.map +1 -0
  438. package/dist/screens/prompts/prompt-preview.d.ts +10 -0
  439. package/dist/screens/prompts/prompt-preview.d.ts.map +1 -0
  440. package/dist/screens/prompts/prompt-preview.js +16 -0
  441. package/dist/screens/prompts/prompt-preview.js.map +1 -0
  442. package/dist/screens/prompts/prompt-ui.d.ts +30 -0
  443. package/dist/screens/prompts/prompt-ui.d.ts.map +1 -0
  444. package/dist/screens/prompts/prompt-ui.js +51 -0
  445. package/dist/screens/prompts/prompt-ui.js.map +1 -0
  446. package/dist/screens/prompts/prompts-list-page.d.ts +5 -0
  447. package/dist/screens/prompts/prompts-list-page.d.ts.map +1 -0
  448. package/dist/screens/prompts/prompts-list-page.js +208 -0
  449. package/dist/screens/prompts/prompts-list-page.js.map +1 -0
  450. package/dist/screens/quick-start/quick-start-screen.d.ts +2 -0
  451. package/dist/screens/quick-start/quick-start-screen.d.ts.map +1 -0
  452. package/dist/screens/quick-start/quick-start-screen.js +486 -0
  453. package/dist/screens/quick-start/quick-start-screen.js.map +1 -0
  454. package/dist/screens/releases/release-line-detail-page.d.ts +5 -0
  455. package/dist/screens/releases/release-line-detail-page.d.ts.map +1 -0
  456. package/dist/screens/releases/release-line-detail-page.js +973 -0
  457. package/dist/screens/releases/release-line-detail-page.js.map +1 -0
  458. package/dist/screens/releases/release-line-ui.d.ts +30 -0
  459. package/dist/screens/releases/release-line-ui.d.ts.map +1 -0
  460. package/dist/screens/releases/release-line-ui.js +197 -0
  461. package/dist/screens/releases/release-line-ui.js.map +1 -0
  462. package/dist/screens/releases/release-new-model.d.ts +5 -0
  463. package/dist/screens/releases/release-new-model.d.ts.map +1 -0
  464. package/dist/screens/releases/release-new-model.js +18 -0
  465. package/dist/screens/releases/release-new-model.js.map +1 -0
  466. package/dist/screens/releases/release-new-page.d.ts +6 -0
  467. package/dist/screens/releases/release-new-page.d.ts.map +1 -0
  468. package/dist/screens/releases/release-new-page.js +816 -0
  469. package/dist/screens/releases/release-new-page.js.map +1 -0
  470. package/dist/screens/releases/release-topology-canvas.d.ts +13 -0
  471. package/dist/screens/releases/release-topology-canvas.d.ts.map +1 -0
  472. package/dist/screens/releases/release-topology-canvas.js +856 -0
  473. package/dist/screens/releases/release-topology-canvas.js.map +1 -0
  474. package/dist/screens/releases/releases-list-page.d.ts +4 -0
  475. package/dist/screens/releases/releases-list-page.d.ts.map +1 -0
  476. package/dist/screens/releases/releases-list-page.js +86 -0
  477. package/dist/screens/releases/releases-list-page.js.map +1 -0
  478. package/dist/screens/settings/settings-page.d.ts +2 -0
  479. package/dist/screens/settings/settings-page.d.ts.map +1 -0
  480. package/dist/screens/settings/settings-page.js +250 -0
  481. package/dist/screens/settings/settings-page.js.map +1 -0
  482. package/dist/styles/globals.css +961 -0
  483. package/package.json +84 -0
@@ -0,0 +1,57 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import { ClipboardList, Loader2 } from 'lucide-react';
5
+ import { Button, Input, cn } from '@proofhound/ui';
6
+ import { useLookupModelContextWindow } from '../hooks';
7
+ import { useI18n } from '../i18n';
8
+ function findProviderModelInput(form, inputName) {
9
+ const selector = `input[name="${inputName}"]`;
10
+ return (form?.querySelector(selector) ?? document.querySelector(selector))?.value.trim() ?? '';
11
+ }
12
+ export function ModelContextWindowInput({ defaultValue, readOnly = false, name = 'contextWindowTokens', providerModelInputName = 'providerModelId', placeholder = '128000', className, inputClassName, buttonClassName, onValueChange, testId, }) {
13
+ const { t } = useI18n();
14
+ const [value, setValue] = useState(defaultValue ?? '');
15
+ const [lookupStatus, setLookupStatus] = useState('idle');
16
+ const lookupMutation = useLookupModelContextWindow();
17
+ useEffect(() => {
18
+ // eslint-disable-next-line react-hooks/set-state-in-effect -- keep uncontrolled form defaults in sync after async model load
19
+ setValue(defaultValue ?? '');
20
+ }, [defaultValue]);
21
+ const lookupContextWindow = (event) => {
22
+ const providerModelId = findProviderModelInput(event.currentTarget.form, providerModelInputName);
23
+ if (!providerModelId) {
24
+ setLookupStatus('needsModelId');
25
+ return;
26
+ }
27
+ lookupMutation.mutate(providerModelId, {
28
+ onSuccess: (result) => {
29
+ if (!result) {
30
+ setLookupStatus('missing');
31
+ return;
32
+ }
33
+ const nextValue = String(result.contextWindowTokens);
34
+ setValue(nextValue);
35
+ setLookupStatus('applied');
36
+ onValueChange?.(nextValue);
37
+ },
38
+ onError: () => setLookupStatus('failed'),
39
+ });
40
+ };
41
+ const statusMessage = lookupStatus === 'applied'
42
+ ? `${t('models.form.contextDictionaryApplied')}${value} tokens`
43
+ : lookupStatus === 'missing'
44
+ ? t('models.form.contextDictionaryMissing')
45
+ : lookupStatus === 'needsModelId'
46
+ ? t('models.form.contextDictionaryNeedsModelId')
47
+ : lookupStatus === 'failed'
48
+ ? t('models.form.contextDictionaryFailed')
49
+ : null;
50
+ return (_jsxs("div", { className: cn('space-y-1.5', className), children: [_jsxs("div", { className: "flex gap-2", children: [_jsxs("div", { className: "relative min-w-0 flex-1", children: [_jsx(Input, { name: name, value: value, onChange: (event) => {
51
+ const nextValue = event.target.value;
52
+ setValue(nextValue);
53
+ setLookupStatus('idle');
54
+ onValueChange?.(nextValue);
55
+ }, inputMode: "numeric", className: cn('pr-20', readOnly && 'bg-muted/50 text-muted-foreground', inputClassName), placeholder: placeholder, readOnly: readOnly, "data-testid": testId }), _jsx("span", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-[11px] text-muted-foreground", children: "tokens" })] }), _jsxs(Button, { type: "button", variant: "outline", className: cn('shrink-0', buttonClassName), disabled: readOnly || lookupMutation.isPending, onClick: lookupContextWindow, children: [lookupMutation.isPending ? _jsx(Loader2, { className: "size-4 animate-spin" }) : _jsx(ClipboardList, { className: "size-4" }), lookupMutation.isPending ? t('models.form.contextDictionaryPending') : t('models.form.chooseFromDictionary')] })] }), statusMessage && (_jsx("div", { "aria-live": "polite", className: cn('text-[11.5px] leading-relaxed', lookupStatus === 'applied' ? 'text-[var(--status-running-fg)]' : 'text-destructive'), children: statusMessage }))] }));
56
+ }
57
+ //# sourceMappingURL=model-context-window-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-context-window-input.js","sourceRoot":"","sources":["../../src/components/model-context-window-input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type ModelProbeFeedback = {
2
+ status: 'running' | 'success' | 'failed';
3
+ durationMs: number | null;
4
+ errorMessage?: string | null;
5
+ };
6
+ export declare function formatModelProbeDuration(durationMs: number | null): string;
7
+ export declare function ModelProbeStatus({ feedback, className, }: {
8
+ feedback: ModelProbeFeedback | null;
9
+ className?: string;
10
+ }): import("react/jsx-runtime").JSX.Element | null;
11
+ //# sourceMappingURL=model-probe-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-probe-status.d.ts","sourceRoot":"","sources":["../../src/components/model-probe-status.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAM1E;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kDAuCA"}
@@ -0,0 +1,34 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertTriangle, Check, Loader2 } from 'lucide-react';
4
+ import { useI18n } from '../i18n';
5
+ import { cn } from '@proofhound/ui';
6
+ export function formatModelProbeDuration(durationMs) {
7
+ if (durationMs == null)
8
+ return '--';
9
+ const roundedMs = Math.max(0, Math.round(durationMs));
10
+ if (roundedMs < 1000)
11
+ return `${roundedMs} ms`;
12
+ const seconds = roundedMs / 1000;
13
+ return `${seconds < 10 ? seconds.toFixed(1) : seconds.toFixed(0)} s`;
14
+ }
15
+ export function ModelProbeStatus({ feedback, className, }) {
16
+ const { t } = useI18n();
17
+ if (!feedback)
18
+ return null;
19
+ const isRunning = feedback.status === 'running';
20
+ const isSuccess = feedback.status === 'success';
21
+ const Icon = isRunning ? Loader2 : isSuccess ? Check : AlertTriangle;
22
+ const title = isRunning
23
+ ? t('models.probe.running')
24
+ : isSuccess
25
+ ? t('models.probe.successTitle')
26
+ : t('models.probe.failedTitle');
27
+ const detail = isRunning
28
+ ? t('models.probe.runningDetail')
29
+ : isSuccess
30
+ ? `${t('models.probe.successDetail')} · ${formatModelProbeDuration(feedback.durationMs)}`
31
+ : `${feedback.errorMessage?.trim() || t('models.probe.failedDetail')} · ${formatModelProbeDuration(feedback.durationMs)}`;
32
+ return (_jsxs("div", { role: "status", "aria-live": "polite", "data-testid": "model-probe-status", className: cn('flex max-w-full items-start gap-2 rounded-md border px-3 py-2 text-[12.5px] leading-relaxed', isRunning && 'border-[var(--status-pending-bd)] bg-[var(--status-pending-bg)] text-[var(--status-pending-fg)]', isSuccess && 'border-[var(--status-running-bd)] bg-[var(--status-running-bg)] text-[var(--status-running-fg)]', feedback.status === 'failed' && 'border-destructive/40 bg-destructive/10 text-destructive', className), children: [_jsx(Icon, { className: cn('mt-0.5 size-4 shrink-0', isRunning && 'animate-spin') }), _jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "font-medium", children: title }), _jsx("div", { className: "mt-0.5 font-mono text-[11px] opacity-85", children: detail })] })] }));
33
+ }
34
+ //# sourceMappingURL=model-probe-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-probe-status.js","sourceRoot":"","sources":["../../src/components/model-probe-status.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAQpC,MAAM,UAAU,wBAAwB,CAAC,UAAyB;IAChE,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,IAAI,SAAS,GAAG,IAAI;QAAE,OAAO,GAAG,SAAS,KAAK,CAAC;IAC/C,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,GAIV;IACC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;IAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;IAChD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;IACrE,MAAM,KAAK,GAAG,SAAS;QACrB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAC3B,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC;QACjC,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,GAAG,CAAC,CAAC,4BAA4B,CAAC,MAAM,wBAAwB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACzF,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,2BAA2B,CAAC,MAAM,wBAAwB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IAE9H,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,eACH,QAAQ,iBACN,oBAAoB,EAChC,SAAS,EAAE,EAAE,CACX,6FAA6F,EAC7F,SAAS,IAAI,iGAAiG,EAC9G,SAAS,IAAI,iGAAiG,EAC9G,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,0DAA0D,EAC1F,SAAS,CACV,aAED,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,IAAI,cAAc,CAAC,GAAI,EAC9E,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,aAAa,YAAE,KAAK,GAAO,EAC1C,cAAK,SAAS,EAAC,yCAAyC,YAAE,MAAM,GAAO,IACnE,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type RefObject } from 'react';
2
+ export type PromptDiffLineKind = 'same' | 'added' | 'removed' | 'blank';
3
+ export interface PromptDiffRow {
4
+ left: string;
5
+ right: string;
6
+ leftKind: PromptDiffLineKind;
7
+ rightKind: PromptDiffLineKind;
8
+ }
9
+ export declare function buildPromptDiffRows(fromText: string, toText: string): PromptDiffRow[];
10
+ export declare function getDiffLineClasses(kind: PromptDiffLineKind): "bg-[color-mix(in_srgb,var(--status-running-bg)_82%,transparent)] text-[var(--status-running-fg)]" | "bg-destructive/10 text-destructive" | "bg-muted/20 text-muted-foreground" | "text-foreground";
11
+ export interface DiffPromptPaneProps {
12
+ label: string;
13
+ rows: PromptDiffRow[];
14
+ side: 'left' | 'right';
15
+ paneRef: RefObject<HTMLDivElement | null>;
16
+ onScroll: () => void;
17
+ maxHeight?: number;
18
+ }
19
+ export declare function DiffPromptPane({ label, rows, side, paneRef, onScroll, maxHeight }: DiffPromptPaneProps): import("react/jsx-runtime").JSX.Element;
20
+ export interface PromptDiffSplitViewProps {
21
+ fromLabel: string;
22
+ toLabel: string;
23
+ fromText: string;
24
+ toText: string;
25
+ maxHeight?: number;
26
+ }
27
+ export declare function PromptDiffSplitView({ fromLabel, toLabel, fromText, toText, maxHeight, }: PromptDiffSplitViewProps): import("react/jsx-runtime").JSX.Element;
28
+ //# sourceMappingURL=prompt-diff-split-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-diff-split-view.d.ts","sourceRoot":"","sources":["../../../src/components/prompt-diff/prompt-diff-split-view.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CA4DrF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,uMAW1D;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAe,EAAE,EAAE,mBAAmB,2CAqC5G;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,wBAAwB,2CAyC1B"}
@@ -0,0 +1,101 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useMemo, useRef } from 'react';
4
+ import { cn } from '@proofhound/ui';
5
+ export function buildPromptDiffRows(fromText, toText) {
6
+ const leftLines = fromText.split('\n');
7
+ const rightLines = toText.split('\n');
8
+ const lcs = Array.from({ length: leftLines.length + 1 }, () => Array(rightLines.length + 1).fill(0));
9
+ const getScore = (leftIndex, rightIndex) => lcs[leftIndex]?.[rightIndex] ?? 0;
10
+ for (let leftIndex = leftLines.length - 1; leftIndex >= 0; leftIndex -= 1) {
11
+ for (let rightIndex = rightLines.length - 1; rightIndex >= 0; rightIndex -= 1) {
12
+ lcs[leftIndex][rightIndex] =
13
+ leftLines[leftIndex] === rightLines[rightIndex]
14
+ ? getScore(leftIndex + 1, rightIndex + 1) + 1
15
+ : Math.max(getScore(leftIndex + 1, rightIndex), getScore(leftIndex, rightIndex + 1));
16
+ }
17
+ }
18
+ const rows = [];
19
+ let leftIndex = 0;
20
+ let rightIndex = 0;
21
+ while (leftIndex < leftLines.length || rightIndex < rightLines.length) {
22
+ if (leftIndex < leftLines.length &&
23
+ rightIndex < rightLines.length &&
24
+ leftLines[leftIndex] === rightLines[rightIndex]) {
25
+ rows.push({
26
+ left: leftLines[leftIndex] ?? '',
27
+ right: rightLines[rightIndex] ?? '',
28
+ leftKind: 'same',
29
+ rightKind: 'same',
30
+ });
31
+ leftIndex += 1;
32
+ rightIndex += 1;
33
+ }
34
+ else if (rightIndex < rightLines.length &&
35
+ (leftIndex >= leftLines.length ||
36
+ getScore(leftIndex, rightIndex + 1) >= getScore(leftIndex + 1, rightIndex))) {
37
+ rows.push({
38
+ left: '',
39
+ right: rightLines[rightIndex] ?? '',
40
+ leftKind: 'blank',
41
+ rightKind: 'added',
42
+ });
43
+ rightIndex += 1;
44
+ }
45
+ else if (leftIndex < leftLines.length) {
46
+ rows.push({
47
+ left: leftLines[leftIndex] ?? '',
48
+ right: '',
49
+ leftKind: 'removed',
50
+ rightKind: 'blank',
51
+ });
52
+ leftIndex += 1;
53
+ }
54
+ }
55
+ return rows;
56
+ }
57
+ export function getDiffLineClasses(kind) {
58
+ if (kind === 'added') {
59
+ return 'bg-[color-mix(in_srgb,var(--status-running-bg)_82%,transparent)] text-[var(--status-running-fg)]';
60
+ }
61
+ if (kind === 'removed') {
62
+ return 'bg-destructive/10 text-destructive';
63
+ }
64
+ if (kind === 'blank') {
65
+ return 'bg-muted/20 text-muted-foreground';
66
+ }
67
+ return 'text-foreground';
68
+ }
69
+ export function DiffPromptPane({ label, rows, side, paneRef, onScroll, maxHeight = 320 }) {
70
+ return (_jsxs("div", { className: "rounded-md border bg-background", "data-testid": `prompt-diff-pane-${side}`, children: [_jsx("div", { className: "border-b bg-muted/35 px-3 py-2 font-mono text-[11px] text-muted-foreground", children: label }), _jsx("div", { ref: paneRef, onScroll: onScroll, className: "overflow-auto p-2 font-mono text-[11.5px] leading-5", style: { maxHeight: `${maxHeight}px` }, children: rows.map((row, index) => {
71
+ const value = side === 'left' ? row.left : row.right;
72
+ const kind = side === 'left' ? row.leftKind : row.rightKind;
73
+ return (_jsxs("div", { "data-testid": kind === 'added'
74
+ ? 'prompt-diff-added-line'
75
+ : kind === 'removed'
76
+ ? 'prompt-diff-removed-line'
77
+ : undefined, className: cn('grid grid-cols-[36px_minmax(0,1fr)] rounded px-2 py-0.5', getDiffLineClasses(kind)), children: [_jsx("span", { className: "select-none text-right text-[10px] opacity-60", children: index + 1 }), _jsx("span", { className: "whitespace-pre-wrap break-words pl-2", children: value || ' ' })] }, `${side}-${index}-${kind}`));
78
+ }) })] }));
79
+ }
80
+ export function PromptDiffSplitView({ fromLabel, toLabel, fromText, toText, maxHeight, }) {
81
+ const rows = useMemo(() => buildPromptDiffRows(fromText, toText), [fromText, toText]);
82
+ const topPaneRef = useRef(null);
83
+ const bottomPaneRef = useRef(null);
84
+ const syncingScrollRef = useRef(false);
85
+ const syncScroll = useCallback((source) => {
86
+ if (syncingScrollRef.current)
87
+ return;
88
+ const sourcePane = source === 'top' ? topPaneRef.current : bottomPaneRef.current;
89
+ const targetPane = source === 'top' ? bottomPaneRef.current : topPaneRef.current;
90
+ if (!sourcePane || !targetPane)
91
+ return;
92
+ syncingScrollRef.current = true;
93
+ targetPane.scrollTop = sourcePane.scrollTop;
94
+ targetPane.scrollLeft = sourcePane.scrollLeft;
95
+ window.requestAnimationFrame(() => {
96
+ syncingScrollRef.current = false;
97
+ });
98
+ }, []);
99
+ return (_jsxs("div", { className: "grid gap-3", children: [_jsx(DiffPromptPane, { label: fromLabel, rows: rows, side: "left", paneRef: topPaneRef, onScroll: () => syncScroll('top'), maxHeight: maxHeight }), _jsx(DiffPromptPane, { label: toLabel, rows: rows, side: "right", paneRef: bottomPaneRef, onScroll: () => syncScroll('bottom'), maxHeight: maxHeight })] }));
100
+ }
101
+ //# sourceMappingURL=prompt-diff-split-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-diff-split-view.js","sourceRoot":"","sources":["../../../src/components/prompt-diff/prompt-diff-split-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { PromptLanguageDto } from '@proofhound/shared';
2
+ import { type TranslationKey } from '../i18n';
3
+ export type PromptLanguage = PromptLanguageDto;
4
+ export declare function PromptLanguageSelect({ value, onChange, disabled, className, triggerClassName, labelKey, helpKey, }: {
5
+ value: PromptLanguage;
6
+ onChange: (value: PromptLanguage) => void;
7
+ disabled?: boolean;
8
+ className?: string;
9
+ triggerClassName?: string;
10
+ labelKey?: TranslationKey;
11
+ helpKey?: TranslationKey;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=prompt-language-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-language-select.d.ts","sourceRoot":"","sources":["../../src/components/prompt-language-select.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAS5D,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AACvD,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAO/C,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,QAAiC,EACjC,OAA+B,GAChC,EAAE;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,2CAwBA"}
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Languages } from 'lucide-react';
4
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, cn, } from '@proofhound/ui';
5
+ import { useI18n } from '../i18n';
6
+ const PROMPT_LANGUAGE_OPTIONS = [
7
+ { value: 'zh-CN', labelKey: 'promptLanguage.zhCN' },
8
+ { value: 'en-US', labelKey: 'promptLanguage.enUS' },
9
+ ];
10
+ export function PromptLanguageSelect({ value, onChange, disabled = false, className, triggerClassName, labelKey = 'promptLanguage.label', helpKey = 'promptLanguage.help', }) {
11
+ const { t } = useI18n();
12
+ return (_jsxs("div", { className: cn('space-y-1.5', className), children: [_jsxs("div", { className: "flex items-center gap-1.5 text-[12.5px] font-medium", children: [_jsx(Languages, { className: "size-3.5 text-muted-foreground", "aria-hidden": "true" }), _jsx("span", { children: t(labelKey) })] }), _jsxs(Select, { value: value, onValueChange: (next) => onChange(next), disabled: disabled, children: [_jsx(SelectTrigger, { className: cn('h-9 text-[12.5px]', triggerClassName), "aria-label": t(labelKey), children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: PROMPT_LANGUAGE_OPTIONS.map((option) => (_jsx(SelectItem, { value: option.value, children: t(option.labelKey) }, option.value))) })] }), _jsx("div", { className: "text-[11px] leading-relaxed text-muted-foreground", children: t(helpKey) })] }));
13
+ }
14
+ //# sourceMappingURL=prompt-language-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-language-select.js","sourceRoot":"","sources":["../../src/components/prompt-language-select.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,EACX,EAAE,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAuB,MAAM,SAAS,CAAC;AAGvD,MAAM,uBAAuB,GAA+D;IAC1F,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACnD,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE;CACpD,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,gBAAgB,EAChB,QAAQ,GAAG,sBAAsB,EACjC,OAAO,GAAG,qBAAqB,GAShC;IACC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,aAC1C,eAAK,SAAS,EAAC,qDAAqD,aAClE,KAAC,SAAS,IAAC,SAAS,EAAC,gCAAgC,iBAAa,MAAM,GAAG,EAC3E,yBAAO,CAAC,CAAC,QAAQ,CAAC,GAAQ,IACtB,EACN,MAAC,MAAM,IAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAsB,CAAC,EAAE,QAAQ,EAAE,QAAQ,aACjG,KAAC,aAAa,IAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,gBAAc,CAAC,CAAC,QAAQ,CAAC,YAC1F,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,uBAAuB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvC,KAAC,UAAU,IAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,YAC/C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IADJ,MAAM,CAAC,KAAK,CAEhB,CACd,CAAC,GACY,IACT,EACT,cAAK,SAAS,EAAC,mDAAmD,YAAE,CAAC,CAAC,OAAO,CAAC,GAAO,IACjF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { PromptVersionStatusDto } from '@proofhound/shared';
3
+ type PickerVariable = {
4
+ type: string;
5
+ };
6
+ export declare function PromptVariableModalityBadges({ variables, size, className, }: {
7
+ variables: ReadonlyArray<PickerVariable>;
8
+ size?: 'sm' | 'md';
9
+ className?: string;
10
+ }): import("react/jsx-runtime").JSX.Element | null;
11
+ export declare function PromptVersionPickerTag({ children, tone, }: {
12
+ children: ReactNode;
13
+ tone?: 'neutral' | 'info' | 'positive' | 'warning';
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export declare function PromptVersionPickerRow({ version, status, variables, selected, onSelect, badges, createdAt, trailing, className, }: {
16
+ version: ReactNode;
17
+ status?: PromptVersionStatusDto | null;
18
+ variables: ReadonlyArray<PickerVariable>;
19
+ selected: boolean;
20
+ onSelect: () => void;
21
+ badges?: ReactNode;
22
+ createdAt?: ReactNode;
23
+ trailing?: ReactNode;
24
+ className?: string;
25
+ }): import("react/jsx-runtime").JSX.Element;
26
+ export {};
27
+ //# sourceMappingURL=prompt-version-picker-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-version-picker-row.d.ts","sourceRoot":"","sources":["../../src/components/prompt-version-picker-row.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAKjE,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAuBF,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,IAAW,EACX,SAAS,GACV,EAAE;IACD,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kDAyBA;AAED,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,IAAgB,GACjB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACpD,2CAiBA;AAgBD,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,EACR,SAAS,GACV,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CA2BA"}
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ModalityIcon, sortModalityKinds, cn } from '@proofhound/ui';
4
+ import { PromptVersionStatusBadge } from './prompt-version-status-badge';
5
+ import { useI18n } from '../i18n';
6
+ const MODALITY_LABEL_KEYS = {
7
+ text: 'prompts.variableType.text',
8
+ image: 'prompts.variableType.image',
9
+ number: 'prompts.variableType.number',
10
+ };
11
+ function variableTypeToModality(type) {
12
+ if (type === 'image' || type === 'image_url' || type === 'image_base64')
13
+ return 'image';
14
+ if (type === 'number')
15
+ return 'number';
16
+ return 'text';
17
+ }
18
+ function countVariableModalities(variables) {
19
+ const counts = {};
20
+ for (const variable of variables) {
21
+ const kind = variableTypeToModality(variable.type);
22
+ counts[kind] = (counts[kind] ?? 0) + 1;
23
+ }
24
+ return counts;
25
+ }
26
+ export function PromptVariableModalityBadges({ variables, size = 'sm', className, }) {
27
+ const { t } = useI18n();
28
+ const counts = countVariableModalities(variables);
29
+ const kinds = sortModalityKinds(Object.keys(counts).filter((kind) => typeof counts[kind] === 'number' && counts[kind] > 0));
30
+ if (kinds.length === 0)
31
+ return null;
32
+ return (_jsx("span", { className: cn('inline-flex flex-wrap items-center gap-1.5', className), children: kinds.map((kind) => {
33
+ const label = t(MODALITY_LABEL_KEYS[kind]);
34
+ const count = counts[kind] ?? 0;
35
+ return (_jsxs("span", { className: "inline-flex items-center gap-0.5", children: [_jsx("span", { className: "min-w-2.5 text-right font-mono text-[10.5px] font-semibold text-muted-foreground", children: count }), _jsx(ModalityIcon, { kind: kind, size: size, tooltip: label, "aria-label": `${count} ${label}` })] }, kind));
36
+ }) }));
37
+ }
38
+ export function PromptVersionPickerTag({ children, tone = 'neutral', }) {
39
+ return (_jsx("span", { className: cn('inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 font-mono text-[10.5px]', tone === 'info' &&
40
+ 'border-[var(--status-canary-bd)] bg-[var(--status-canary-bg)] text-[var(--status-canary-fg)]', tone === 'positive' &&
41
+ 'border-[var(--status-success-bd)] bg-[var(--status-success-bg)] text-[var(--status-success-fg)]', tone === 'warning' &&
42
+ 'border-[var(--status-pending-bd)] bg-[var(--status-pending-bg)] text-[var(--status-pending-fg)]', tone === 'neutral' && 'border-border bg-muted text-muted-foreground'), children: children }));
43
+ }
44
+ function PickerRadio({ checked }) {
45
+ return (_jsx("span", { "aria-hidden": "true", className: cn('mt-0.5 inline-flex size-4 flex-none items-center justify-center rounded-full border', checked ? 'border-primary bg-primary/10' : 'border-border bg-background'), children: checked ? _jsx("span", { className: "size-2 rounded-full bg-primary" }) : null }));
46
+ }
47
+ export function PromptVersionPickerRow({ version, status, variables, selected, onSelect, badges, createdAt, trailing, className, }) {
48
+ return (_jsxs("button", { type: "button", onClick: onSelect, "aria-pressed": selected, className: cn('flex w-full items-start gap-2.5 border-b px-3 py-2.5 text-left transition-colors last:border-b-0 hover:bg-muted/40', selected && 'bg-primary/5', className), children: [_jsx(PickerRadio, { checked: selected }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [_jsx("span", { className: "font-mono text-[13px] font-semibold", children: version }), badges, status ? _jsx(PromptVersionStatusBadge, { status: status, compact: true }) : null] }), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-1.5", children: [_jsx(PromptVariableModalityBadges, { variables: variables }), createdAt ? _jsx("span", { className: "font-mono text-[10.5px] text-muted-foreground", children: createdAt }) : null, trailing] })] })] }));
49
+ }
50
+ //# sourceMappingURL=prompt-version-picker-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-version-picker-row.js","sourceRoot":"","sources":["../../src/components/prompt-version-picker-row.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PromptVersionStatusDto } from '@proofhound/shared';
2
+ type PromptVersionStatus = PromptVersionStatusDto;
3
+ export declare function PromptVersionStatusBadge({ status, compact, }: {
4
+ status: PromptVersionStatus;
5
+ compact?: boolean;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=prompt-version-status-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-version-status-badge.d.ts","sourceRoot":"","sources":["../../src/components/prompt-version-status-badge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AASjE,KAAK,mBAAmB,GAAG,sBAAsB,CAAC;AAuBlD,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,OAAe,GAChB,EAAE;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,2CA0BA"}
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Lock, Pencil } from 'lucide-react';
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, cn, } from '@proofhound/ui';
5
+ import { useI18n } from '../i18n';
6
+ const STATUS_LABEL_KEYS = {
7
+ editable: 'prompts.status.editable',
8
+ frozen: 'prompts.status.frozen',
9
+ };
10
+ const STATUS_CLASSES = {
11
+ editable: {
12
+ pill: 'border-[var(--prompt-editable-bd)] bg-[var(--prompt-editable-bg)] text-[var(--prompt-editable-fg)]',
13
+ icon: 'text-[var(--prompt-editable-icon)]',
14
+ },
15
+ frozen: {
16
+ pill: 'border-[var(--prompt-frozen-bd)] bg-[var(--prompt-frozen-bg)] text-[var(--prompt-frozen-fg)]',
17
+ icon: 'text-[var(--prompt-frozen-icon)]',
18
+ },
19
+ };
20
+ const STATUS_ICONS = {
21
+ editable: Pencil,
22
+ frozen: Lock,
23
+ };
24
+ export function PromptVersionStatusBadge({ status, compact = false, }) {
25
+ const { t } = useI18n();
26
+ const classes = STATUS_CLASSES[status];
27
+ const Icon = STATUS_ICONS[status];
28
+ const label = t(STATUS_LABEL_KEYS[status]);
29
+ return (_jsx(TooltipProvider, { delayDuration: 180, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: cn('inline-flex items-center justify-center rounded-full border', compact ? 'size-5' : 'size-6', classes.pill), "aria-label": label, role: "img", children: _jsx(Icon, { className: cn(compact ? 'size-3' : 'size-3.5', classes.icon) }) }) }), _jsx(TooltipContent, { children: label })] }) }));
30
+ }
31
+ //# sourceMappingURL=prompt-version-status-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-version-status-badge.js","sourceRoot":"","sources":["../../src/components/prompt-version-status-badge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EACL,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,EACd,EAAE,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAuB,MAAM,SAAS,CAAC;AAGvD,MAAM,iBAAiB,GAAgD;IACrE,QAAQ,EAAE,yBAAyB;IACnC,MAAM,EAAE,uBAAuB;CAChC,CAAC;AAEF,MAAM,cAAc,GAAgE;IAClF,QAAQ,EAAE;QACR,IAAI,EAAE,oGAAoG;QAC1G,IAAI,EAAE,oCAAoC;KAC3C;IACD,MAAM,EAAE;QACN,IAAI,EAAE,8FAA8F;QACpG,IAAI,EAAE,kCAAkC;KACzC;CACF,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,IAAI;CACqC,CAAC;AAEpD,MAAM,UAAU,wBAAwB,CAAC,EACvC,MAAM,EACN,OAAO,GAAG,KAAK,GAIhB;IACC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,KAAC,eAAe,IAAC,aAAa,EAAE,GAAG,YACjC,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,eACE,SAAS,EAAE,EAAE,CACX,6DAA6D,EAC7D,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAC7B,OAAO,CAAC,IAAI,CACb,gBACW,KAAK,EACjB,IAAI,EAAC,KAAK,YAEV,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAI,GACjE,GACQ,EACjB,KAAC,cAAc,cAAE,KAAK,GAAkB,IAChC,GACM,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface QuickFillPickerGroup<TGroup extends string = string> {
3
+ key: TGroup;
4
+ label: string;
5
+ }
6
+ export interface QuickFillPickerOption<TGroup extends string = string> {
7
+ key: string;
8
+ group: TGroup;
9
+ title: string;
10
+ subtitle?: string;
11
+ description?: string;
12
+ badges?: ReactNode[];
13
+ meta?: ReactNode[];
14
+ searchText?: string;
15
+ featured?: boolean;
16
+ }
17
+ export interface QuickFillPickerLabels {
18
+ title: string;
19
+ description?: string;
20
+ searchPlaceholder: string;
21
+ featured: string;
22
+ all: string;
23
+ empty: string;
24
+ apply: string;
25
+ selected: string;
26
+ ariaLabel: string;
27
+ }
28
+ export declare function QuickFillPicker<TGroup extends string>({ groups, options, labels, selectedKey, disabled, collapsible, defaultOpen, collapseOnApply, showHeader, onApply, className, testId, }: {
29
+ groups: ReadonlyArray<QuickFillPickerGroup<TGroup>>;
30
+ options: ReadonlyArray<QuickFillPickerOption<TGroup>>;
31
+ labels: QuickFillPickerLabels;
32
+ selectedKey?: string | null;
33
+ disabled?: boolean;
34
+ collapsible?: boolean;
35
+ defaultOpen?: boolean;
36
+ collapseOnApply?: boolean;
37
+ showHeader?: boolean;
38
+ onApply: (option: QuickFillPickerOption<TGroup>) => void;
39
+ className?: string;
40
+ testId?: string;
41
+ }): import("react/jsx-runtime").JSX.Element;
42
+ //# sourceMappingURL=quick-fill-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-fill-picker.d.ts","sourceRoot":"","sources":["../../../src/components/quick-fill/quick-fill-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAY1D,MAAM,WAAW,oBAAoB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,MAAM,SAAS,MAAM,EAAE,EACrD,MAAM,EACN,OAAO,EACP,MAAM,EACN,WAAW,EACX,QAAQ,EACR,WAAmB,EACnB,WAAkB,EAClB,eAAuB,EACvB,UAAiB,EACjB,OAAO,EACP,SAAS,EACT,MAAM,GACP,EAAE;IACD,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,2CAsLA"}
@@ -0,0 +1,46 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState } from 'react';
4
+ import { Check, ChevronDown, Search, Sparkles } from 'lucide-react';
5
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger, Input, cn, } from '@proofhound/ui';
6
+ const FEATURED_SCOPE = '__featured';
7
+ const ALL_SCOPE = '__all';
8
+ export function QuickFillPicker({ groups, options, labels, selectedKey, disabled, collapsible = false, defaultOpen = true, collapseOnApply = false, showHeader = true, onApply, className, testId, }) {
9
+ const [scope, setScope] = useState(FEATURED_SCOPE);
10
+ const [query, setQuery] = useState('');
11
+ const [open, setOpen] = useState(defaultOpen);
12
+ const hasFeatured = options.some((option) => option.featured);
13
+ const normalizedQuery = query.trim().toLowerCase();
14
+ const selectedOption = selectedKey ? options.find((option) => option.key === selectedKey) : null;
15
+ const scopes = useMemo(() => [
16
+ ...(hasFeatured ? [{ key: FEATURED_SCOPE, label: labels.featured }] : []),
17
+ { key: ALL_SCOPE, label: labels.all },
18
+ ...groups,
19
+ ], [groups, hasFeatured, labels.all, labels.featured]);
20
+ const visibleOptions = options.filter((option) => {
21
+ const scopeMatched = scope === ALL_SCOPE || (scope === FEATURED_SCOPE ? option.featured : option.group === scope);
22
+ if (!scopeMatched)
23
+ return false;
24
+ if (!normalizedQuery)
25
+ return true;
26
+ const haystack = `${option.title} ${option.subtitle ?? ''} ${option.description ?? ''} ${option.searchText ?? ''}`;
27
+ return haystack.toLowerCase().includes(normalizedQuery);
28
+ });
29
+ const applyOption = (option) => {
30
+ onApply(option);
31
+ if (collapsible && collapseOnApply)
32
+ setOpen(false);
33
+ };
34
+ return (_jsx(Collapsible, { open: collapsible ? open : true, onOpenChange: setOpen, asChild: true, children: _jsxs("section", { className: cn('space-y-3 rounded-lg border bg-card p-4', className), "data-testid": testId, children: [showHeader ? (_jsxs("div", { className: "flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "inline-flex size-6 shrink-0 items-center justify-center rounded-full border bg-background text-primary", children: _jsx(Sparkles, { className: "size-3.5" }) }), _jsx("h2", { className: "text-sm font-semibold", children: labels.title }), selectedOption && (_jsxs("span", { className: "min-w-0 truncate rounded border bg-background px-2 py-0.5 text-[11px] text-muted-foreground", children: [labels.selected, " \u00B7 ", selectedOption.title] }))] }), labels.description && (_jsx("div", { className: "mt-1 text-[12px] leading-relaxed text-muted-foreground", children: labels.description }))] }), _jsxs("div", { className: "flex items-center gap-2 lg:justify-end", children: [_jsx(CollapsibleContent, { forceMount: true, className: cn(!open && 'hidden'), children: _jsxs("div", { className: "relative w-full lg:w-[320px]", children: [_jsx(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { value: query, onChange: (event) => setQuery(event.target.value), placeholder: labels.searchPlaceholder, className: "h-9 pl-8 text-sm" })] }) }), collapsible && (_jsx(CollapsibleTrigger, { type: "button", className: "inline-flex size-9 shrink-0 items-center justify-center rounded-md border bg-background text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "aria-label": labels.ariaLabel, children: _jsx(ChevronDown, { className: cn('size-4 transition-transform', open && 'rotate-180') }) }))] })] })) : (_jsx(CollapsibleContent, { forceMount: true, className: cn(!open && 'hidden'), children: _jsxs("div", { className: "relative w-full", children: [_jsx(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { value: query, onChange: (event) => setQuery(event.target.value), placeholder: labels.searchPlaceholder, className: "h-9 pl-8 text-sm" })] }) })), _jsxs(CollapsibleContent, { className: "space-y-3", children: [_jsx("div", { role: "tablist", "aria-label": labels.ariaLabel, className: "flex flex-wrap gap-1.5", children: scopes.map((item) => {
35
+ const active = item.key === scope;
36
+ return (_jsx("button", { type: "button", role: "tab", "aria-selected": active, className: cn('h-7 rounded-md border px-2.5 text-[12px] font-medium transition-colors', active
37
+ ? 'border-primary bg-primary text-primary-foreground'
38
+ : 'bg-background text-muted-foreground hover:text-foreground'), onClick: () => setScope(item.key), children: item.label }, item.key));
39
+ }) }), visibleOptions.length > 0 ? (_jsx("div", { className: "grid gap-2 md:grid-cols-2 xl:grid-cols-3", children: visibleOptions.map((option) => {
40
+ const selected = option.key === selectedKey;
41
+ return (_jsxs("button", { type: "button", className: cn('group flex min-h-[148px] flex-col rounded-lg border bg-background p-3 text-left transition-colors hover:border-primary/50 hover:bg-accent/35 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', selected && 'border-primary bg-accent/45'), disabled: disabled, "aria-pressed": selected, onClick: () => applyOption(option), children: [_jsxs("div", { className: "flex items-start gap-2", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-sm font-semibold", children: option.title }), option.subtitle && (_jsx("div", { className: "mt-0.5 truncate font-mono text-[11px] text-muted-foreground", children: option.subtitle }))] }), _jsxs("span", { className: cn('inline-flex h-6 shrink-0 items-center gap-1 rounded-md border px-2 text-[11px] font-medium', selected
42
+ ? 'border-primary bg-primary text-primary-foreground'
43
+ : 'bg-card text-muted-foreground group-hover:text-foreground'), children: [selected ? _jsx(Check, { className: "size-3" }) : null, selected ? labels.selected : labels.apply] })] }), option.description && (_jsx("div", { className: "mt-2 line-clamp-2 text-[12px] leading-relaxed text-muted-foreground", children: option.description })), option.badges && option.badges.length > 0 && (_jsx("div", { className: "mt-3 flex flex-wrap gap-1", children: option.badges.map((badge, index) => (_jsx("span", { className: "rounded border bg-card px-1.5 py-0.5 text-[10.5px]", children: badge }, index))) })), option.meta && option.meta.length > 0 && (_jsx("div", { className: "mt-auto flex flex-wrap gap-x-3 gap-y-1 pt-3 font-mono text-[10.5px] text-muted-foreground", children: option.meta.map((item, index) => (_jsx("span", { children: item }, index))) }))] }, option.key));
44
+ }) })) : (_jsx("div", { className: "rounded-lg border border-dashed bg-background px-4 py-8 text-center text-sm text-muted-foreground", children: labels.empty }))] })] }) }));
45
+ }
46
+ //# sourceMappingURL=quick-fill-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-fill-picker.js","sourceRoot":"","sources":["../../../src/components/quick-fill/quick-fill-picker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type TimeZonePreference } from '../lib/time-zone';
2
+ interface TimeZonePickerListProps {
3
+ value: TimeZonePreference;
4
+ resolvedTimeZone: string;
5
+ onChange: (value: TimeZonePreference) => void;
6
+ }
7
+ export declare function TimeZonePickerList({ value, resolvedTimeZone, onChange }: TimeZonePickerListProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function TimeZonePreferenceMenu(): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=time-zone-preference-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-zone-preference-menu.d.ts","sourceRoot":"","sources":["../../src/components/time-zone-preference-menu.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,UAAU,uBAAuB;IAC/B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C;AAMD,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CA0EhG;AAED,wBAAgB,sBAAsB,4CAyCrC"}