@qoretechnologies/reqraft 0.10.62 → 0.10.63-pr.142.g0b675cd

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 (736) hide show
  1. package/README.md +21 -1
  2. package/dist/components/Description/describedControl.d.ts +48 -0
  3. package/dist/components/Description/describedControl.d.ts.map +1 -0
  4. package/dist/components/Description/describedControl.js +81 -0
  5. package/dist/components/Description/describedControl.js.map +1 -0
  6. package/dist/components/Description/index.d.ts.map +1 -1
  7. package/dist/components/Description/index.js +3 -2
  8. package/dist/components/Description/index.js.map +1 -1
  9. package/dist/components/colorValue/colorValue.d.ts +59 -0
  10. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  11. package/dist/components/colorValue/colorValue.js +245 -0
  12. package/dist/components/colorValue/colorValue.js.map +1 -0
  13. package/dist/components/colorValue/index.d.ts +34 -0
  14. package/dist/components/colorValue/index.d.ts.map +1 -0
  15. package/dist/components/colorValue/index.js +136 -0
  16. package/dist/components/colorValue/index.js.map +1 -0
  17. package/dist/components/colorValue/labels.d.ts +12 -0
  18. package/dist/components/colorValue/labels.d.ts.map +1 -0
  19. package/dist/components/colorValue/labels.js +11 -0
  20. package/dist/components/colorValue/labels.js.map +1 -0
  21. package/dist/components/composer/Composer.d.ts +1 -1
  22. package/dist/components/composer/Composer.d.ts.map +1 -1
  23. package/dist/components/composer/Composer.js +2 -2
  24. package/dist/components/composer/Composer.js.map +1 -1
  25. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  26. package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
  27. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  28. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +10 -1
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +30 -13
  31. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
  33. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  34. package/dist/components/dpqlEditor/dpqlTags.js +11 -6
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +47 -8
  37. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
  39. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  40. package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
  41. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  42. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  43. package/dist/components/form/engine/CompactRow.js +151 -83
  44. package/dist/components/form/engine/CompactRow.js.map +1 -1
  45. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  46. package/dist/components/form/engine/CompactToolbar.js +29 -3
  47. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  48. package/dist/components/form/engine/FormEngine.d.ts +34 -1
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +487 -87
  51. package/dist/components/form/engine/FormEngine.js.map +1 -1
  52. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  53. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  54. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  55. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  56. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  57. package/dist/components/form/engine/OptionFieldMessages.js +24 -3
  58. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  59. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  60. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  61. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  62. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  63. package/dist/components/form/engine/compactRowContext.d.ts +19 -0
  64. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  65. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  66. package/dist/components/form/engine/compactRowStyles.d.ts +0 -1
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +12 -20
  69. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  70. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  71. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  72. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  73. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  74. package/dist/components/form/engine/readFirst.d.ts +24 -8
  75. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  76. package/dist/components/form/engine/readFirst.js +77 -109
  77. package/dist/components/form/engine/readFirst.js.map +1 -1
  78. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  79. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  80. package/dist/components/form/engine/readFirstColors.js +51 -0
  81. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  82. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  83. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  84. package/dist/components/form/engine/rowFocus.js +26 -3
  85. package/dist/components/form/engine/rowFocus.js.map +1 -1
  86. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  87. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  88. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  89. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  90. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  91. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  92. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  93. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  94. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  95. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  96. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  97. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  98. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  99. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  100. package/dist/components/form/engine/variants/variantParts.js +25 -17
  101. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  102. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  103. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  104. package/dist/components/form/expressions/DpqlRendering.js +3 -3
  105. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  106. package/dist/components/form/expressions/ExpressionField.d.ts +41 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +396 -99
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  111. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  112. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  113. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  115. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  116. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentWrapper.js +4 -2
  118. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  119. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  120. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  121. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  122. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  123. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  125. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  127. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/index.js +121 -77
  129. package/dist/components/form/expressions/builder/index.js.map +1 -1
  130. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  131. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/item.js +19 -5
  133. package/dist/components/form/expressions/builder/item.js.map +1 -1
  134. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  135. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  136. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  137. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  138. package/dist/components/form/expressions/expressionOperands.js +97 -0
  139. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  140. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  141. package/dist/components/form/expressions/mockExpressions.js +22 -5
  142. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  143. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  144. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  145. package/dist/components/form/expressions/renderExpressionToText.js +35 -9
  146. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  147. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  148. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  149. package/dist/components/form/expressions/textOfExpression.js +37 -0
  150. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  151. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  152. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  153. package/dist/components/form/expressions/useExpressionType.js +181 -0
  154. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  155. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  156. package/dist/components/form/expressions/useRenderExpression.js +7 -7
  157. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  158. package/dist/components/form/fields/Field.d.ts.map +1 -1
  159. package/dist/components/form/fields/Field.js +20 -7
  160. package/dist/components/form/fields/Field.js.map +1 -1
  161. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  162. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  163. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  164. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  165. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  166. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  167. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  168. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  169. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  170. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  171. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  172. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  173. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  174. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  175. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  176. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  177. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  178. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  179. package/dist/components/form/fields/binary/Binary.js +23 -3
  180. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  181. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  182. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  183. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  184. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  185. package/dist/components/form/fields/color/Color.d.ts +103 -16
  186. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  187. package/dist/components/form/fields/color/Color.js +611 -16
  188. package/dist/components/form/fields/color/Color.js.map +1 -1
  189. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  190. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  191. package/dist/components/form/fields/emittedValues.js +24 -1
  192. package/dist/components/form/fields/emittedValues.js.map +1 -1
  193. package/dist/components/form/fields/file/File.d.ts +1 -1
  194. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  195. package/dist/components/form/fields/file/File.js +4 -2
  196. package/dist/components/form/fields/file/File.js.map +1 -1
  197. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  198. package/dist/components/form/fields/long-string/LongString.js +17 -3
  199. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  200. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  201. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  202. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  203. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  204. package/dist/components/form/fields/number/Number.d.ts +6 -0
  205. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  206. package/dist/components/form/fields/number/Number.js +41 -6
  207. package/dist/components/form/fields/number/Number.js.map +1 -1
  208. package/dist/components/form/fields/object/Object.d.ts +1 -1
  209. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  210. package/dist/components/form/fields/object/Object.js +4 -2
  211. package/dist/components/form/fields/object/Object.js.map +1 -1
  212. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  213. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  214. package/dist/components/form/fields/pendingEdit.js +79 -0
  215. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  216. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  217. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  218. package/dist/components/form/fields/rich-text/RichText.js +190 -81
  219. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  220. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  221. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  222. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  223. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  224. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  225. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  226. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  227. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  228. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  229. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  230. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  231. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  232. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  233. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  234. package/dist/components/form/fields/schema-definition/index.js +8 -4
  235. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  236. package/dist/components/form/fields/select/Select.d.ts +2 -0
  237. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  238. package/dist/components/form/fields/select/Select.js +19 -10
  239. package/dist/components/form/fields/select/Select.js.map +1 -1
  240. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  241. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  242. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  243. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  244. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  245. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  246. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  247. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +5 -5
  248. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  249. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +11 -4
  250. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  251. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  252. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  253. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  254. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  255. package/dist/components/form/fields/template/TemplateField.d.ts +83 -1
  256. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  257. package/dist/components/form/fields/template/TemplateField.js +535 -85
  258. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  259. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  260. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  261. package/dist/components/form/fields/template/TemplateText.js +8 -4
  262. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  263. package/dist/components/form/fields/template/writtenAsText.d.ts +55 -0
  264. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  265. package/dist/components/form/fields/template/writtenAsText.js +188 -0
  266. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  267. package/dist/components/form/index.d.ts +10 -0
  268. package/dist/components/form/index.d.ts.map +1 -1
  269. package/dist/components/form/index.js +23 -1
  270. package/dist/components/form/index.js.map +1 -1
  271. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  272. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  273. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  274. package/dist/components/log/Log.d.ts.map +1 -1
  275. package/dist/components/log/Log.js +15 -7
  276. package/dist/components/log/Log.js.map +1 -1
  277. package/dist/components/menu/Menu.d.ts.map +1 -1
  278. package/dist/components/menu/Menu.js +19 -10
  279. package/dist/components/menu/Menu.js.map +1 -1
  280. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  281. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  282. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  283. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  284. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  285. package/dist/components/smartEditor/MarkdownDoc.js +1 -1
  286. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  287. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  288. package/dist/components/smartEditor/SmartEditor.js +51 -136
  289. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  290. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  291. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  292. package/dist/components/smartEditor/completionStyle.js +66 -0
  293. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  294. package/dist/components/smartEditor/index.d.ts +5 -1
  295. package/dist/components/smartEditor/index.d.ts.map +1 -1
  296. package/dist/components/smartEditor/index.js +19 -1
  297. package/dist/components/smartEditor/index.js.map +1 -1
  298. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  299. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  300. package/dist/components/smartEditor/templateCompletions.js +94 -0
  301. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  302. package/dist/components/smartEditor/types.d.ts +12 -1
  303. package/dist/components/smartEditor/types.d.ts.map +1 -1
  304. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  305. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  306. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  307. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  308. package/dist/components/smartEditor/useLspHover.d.ts +22 -7
  309. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  310. package/dist/components/smartEditor/useLspHover.js +86 -17
  311. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  312. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  313. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  314. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  315. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  316. package/dist/components/smartEditor/useLspSession.js +7 -6
  317. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  318. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  319. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  320. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  321. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  322. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  323. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  324. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  325. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  326. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  327. package/dist/components/supportTicket/TicketHeader.js +20 -2
  328. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  329. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  330. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  331. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  332. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  333. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  334. package/dist/components/ticketThread/TicketThread.js +36 -11
  335. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  336. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  337. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  338. package/dist/helpers/descriptionTooltip.js +70 -0
  339. package/dist/helpers/descriptionTooltip.js.map +1 -0
  340. package/dist/helpers/domProps.d.ts +5 -0
  341. package/dist/helpers/domProps.d.ts.map +1 -0
  342. package/dist/helpers/domProps.js +47 -0
  343. package/dist/helpers/domProps.js.map +1 -0
  344. package/dist/helpers/expressions.d.ts +107 -2
  345. package/dist/helpers/expressions.d.ts.map +1 -1
  346. package/dist/helpers/expressions.js +223 -8
  347. package/dist/helpers/expressions.js.map +1 -1
  348. package/dist/helpers/hoveringPointer.d.ts +26 -0
  349. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  350. package/dist/helpers/hoveringPointer.js +29 -0
  351. package/dist/helpers/hoveringPointer.js.map +1 -0
  352. package/dist/helpers/markdownText.d.ts +14 -0
  353. package/dist/helpers/markdownText.d.ts.map +1 -0
  354. package/dist/helpers/markdownText.js +160 -0
  355. package/dist/helpers/markdownText.js.map +1 -0
  356. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  357. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  358. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  359. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  360. package/dist/helpers/readableColors.d.ts +36 -0
  361. package/dist/helpers/readableColors.d.ts.map +1 -0
  362. package/dist/helpers/readableColors.js +116 -0
  363. package/dist/helpers/readableColors.js.map +1 -0
  364. package/dist/helpers/templateItems.d.ts +2 -2
  365. package/dist/helpers/templateItems.d.ts.map +1 -1
  366. package/dist/helpers/templateItems.js +6 -4
  367. package/dist/helpers/templateItems.js.map +1 -1
  368. package/dist/helpers/templates.d.ts +26 -1
  369. package/dist/helpers/templates.d.ts.map +1 -1
  370. package/dist/helpers/templates.js +41 -6
  371. package/dist/helpers/templates.js.map +1 -1
  372. package/dist/helpers/validations.d.ts +9 -0
  373. package/dist/helpers/validations.d.ts.map +1 -1
  374. package/dist/helpers/validations.js +139 -33
  375. package/dist/helpers/validations.js.map +1 -1
  376. package/dist/hooks/useQorusTypes.d.ts +7 -15
  377. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  378. package/dist/hooks/useQorusTypes.js +25 -166
  379. package/dist/hooks/useQorusTypes.js.map +1 -1
  380. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  381. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  382. package/dist/hooks/useReadableIntentShade.js +23 -0
  383. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  384. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  385. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  386. package/dist/hooks/useReadableOpacity.js +17 -0
  387. package/dist/hooks/useReadableOpacity.js.map +1 -0
  388. package/dist/index.d.ts +1 -0
  389. package/dist/index.d.ts.map +1 -1
  390. package/dist/index.js +1 -0
  391. package/dist/index.js.map +1 -1
  392. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  393. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  394. package/dist/tracking/ui/ExperimentCard.js +26 -10
  395. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  396. package/dist/tracking/ui/card.d.ts +2 -2
  397. package/dist/tracking/ui/card.d.ts.map +1 -1
  398. package/dist/tracking/ui/card.js +2 -2
  399. package/dist/tracking/ui/card.js.map +1 -1
  400. package/dist/tracking/ui/readable.d.ts +14 -0
  401. package/dist/tracking/ui/readable.d.ts.map +1 -0
  402. package/dist/tracking/ui/readable.js +60 -0
  403. package/dist/tracking/ui/readable.js.map +1 -0
  404. package/package.json +14 -5
  405. package/.claude/CLAUDE.md +0 -317
  406. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  407. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  408. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  409. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  410. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  411. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  412. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  413. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  414. package/.tasks/INDEX.md +0 -111
  415. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  416. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  417. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  418. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  419. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  420. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  421. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  422. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  423. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  424. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  425. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  426. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  427. package/CODE_OF_CONDUCT.md +0 -105
  428. package/CONTRIBUTING.MD +0 -78
  429. package/SECURITY.md +0 -3
  430. package/chromatic.config.json +0 -5
  431. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  432. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  433. package/design/COMPACT_PARITY.md +0 -85
  434. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  435. package/design/FORM_ENGINE_COMPACT.md +0 -300
  436. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  437. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  438. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  439. package/design/IDE_INTEGRATION.md +0 -64
  440. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  441. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  442. package/design/SMART_EDITOR_UX.md +0 -438
  443. package/design/TRACKING.md +0 -290
  444. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  445. package/src/components/Description/index.tsx +0 -254
  446. package/src/components/Description/markdownRendererContext.tsx +0 -29
  447. package/src/components/FocusedEditing/index.tsx +0 -50
  448. package/src/components/codeSize/index.tsx +0 -79
  449. package/src/components/composer/Composer.stories.tsx +0 -238
  450. package/src/components/composer/Composer.tsx +0 -554
  451. package/src/components/composer/helpers.ts +0 -74
  452. package/src/components/composer/index.ts +0 -2
  453. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  454. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  455. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  456. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  457. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  458. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  459. package/src/components/dpqlEditor/index.ts +0 -41
  460. package/src/components/dpqlEditor/types.ts +0 -203
  461. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  462. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  463. package/src/components/form/engine/CompactRow.tsx +0 -2620
  464. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  465. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  466. package/src/components/form/engine/FormEngine.tsx +0 -4569
  467. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  468. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  469. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  470. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  471. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  472. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  473. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  474. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  475. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  476. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  477. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  478. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  479. package/src/components/form/engine/compactRowContext.ts +0 -148
  480. package/src/components/form/engine/compactRowStyles.ts +0 -898
  481. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  482. package/src/components/form/engine/optionActions.ts +0 -128
  483. package/src/components/form/engine/optionsContext.ts +0 -24
  484. package/src/components/form/engine/readFirst.ts +0 -1077
  485. package/src/components/form/engine/rendererTypes.ts +0 -107
  486. package/src/components/form/engine/revealRow.ts +0 -123
  487. package/src/components/form/engine/rowFocus.ts +0 -101
  488. package/src/components/form/engine/rowMenuContext.ts +0 -159
  489. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  490. package/src/components/form/engine/typeChoices.ts +0 -63
  491. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  492. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  493. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  494. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  495. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  496. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  497. package/src/components/form/engine/variants/variantModel.ts +0 -223
  498. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  499. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  500. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  501. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  502. package/src/components/form/expressions/argumentPresence.ts +0 -213
  503. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  504. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  505. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  506. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  507. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  508. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  509. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  510. package/src/components/form/expressions/builder/index.tsx +0 -1545
  511. package/src/components/form/expressions/builder/item.tsx +0 -89
  512. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  513. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  514. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  515. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  516. package/src/components/form/expressions/mockExpressions.ts +0 -317
  517. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  518. package/src/components/form/expressions/types.ts +0 -110
  519. package/src/components/form/expressions/useExpressions.ts +0 -101
  520. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  521. package/src/components/form/fields/Field.stories.tsx +0 -143
  522. package/src/components/form/fields/Field.tsx +0 -732
  523. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  524. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  525. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  526. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  527. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  528. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  529. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  530. package/src/components/form/fields/binary/Binary.tsx +0 -91
  531. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  532. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  533. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  534. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  535. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  536. package/src/components/form/fields/color/Color.tsx +0 -46
  537. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  538. package/src/components/form/fields/cron/Cron.tsx +0 -80
  539. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  540. package/src/components/form/fields/date/Date.tsx +0 -55
  541. package/src/components/form/fields/emittedValues.ts +0 -70
  542. package/src/components/form/fields/file/File.stories.tsx +0 -161
  543. package/src/components/form/fields/file/File.tsx +0 -227
  544. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  545. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  546. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  547. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  548. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  549. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  550. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  551. package/src/components/form/fields/number/Number.tsx +0 -160
  552. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  553. package/src/components/form/fields/object/Object.tsx +0 -255
  554. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  555. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  556. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  557. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  558. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  559. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  560. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  561. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  562. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  563. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  564. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  565. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  566. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  567. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  568. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  569. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  570. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  571. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  572. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  573. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  574. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  575. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  576. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  577. package/src/components/form/fields/schema-definition/types.ts +0 -185
  578. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  579. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  580. package/src/components/form/fields/select/Select.tsx +0 -624
  581. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  582. package/src/components/form/fields/string/String.stories.tsx +0 -86
  583. package/src/components/form/fields/string/String.tsx +0 -43
  584. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  585. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  586. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  587. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  588. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  589. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  590. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  591. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  592. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  593. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  594. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  595. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  596. package/src/components/form/fields/url/Url.tsx +0 -85
  597. package/src/components/form/index.tsx +0 -47
  598. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  599. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  600. package/src/components/imageLightbox/index.ts +0 -1
  601. package/src/components/log/Log.stories.tsx +0 -333
  602. package/src/components/log/Log.tsx +0 -285
  603. package/src/components/menu/Menu.stories.tsx +0 -155
  604. package/src/components/menu/Menu.tsx +0 -312
  605. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  606. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  607. package/src/components/qonsoleSmartInput/index.ts +0 -16
  608. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  609. package/src/components/qonsoleSmartInput/types.ts +0 -133
  610. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  611. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  612. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  613. package/src/components/searchFilterBar/index.ts +0 -1
  614. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  615. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  616. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  617. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  618. package/src/components/smartEditor/helpers.ts +0 -217
  619. package/src/components/smartEditor/index.ts +0 -35
  620. package/src/components/smartEditor/styling.ts +0 -45
  621. package/src/components/smartEditor/types.ts +0 -211
  622. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  623. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  624. package/src/components/smartEditor/useLspHover.ts +0 -230
  625. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  626. package/src/components/smartEditor/useLspSession.ts +0 -231
  627. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  628. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  629. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  630. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  631. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  632. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  633. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  634. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  635. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  636. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  637. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  638. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  639. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  640. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  641. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  642. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  643. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  644. package/src/components/supportTicket/index.ts +0 -10
  645. package/src/components/supportTicket/meta.ts +0 -206
  646. package/src/components/supportTicket/ticketModel.ts +0 -131
  647. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  648. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  649. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  650. package/src/components/ticketReferences/index.ts +0 -2
  651. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  652. package/src/components/ticketThread/TicketThread.tsx +0 -719
  653. package/src/components/ticketThread/index.ts +0 -6
  654. package/src/contexts/FetchContext.tsx +0 -25
  655. package/src/contexts/ReqraftContext.tsx +0 -9
  656. package/src/contexts/StorageContext.tsx +0 -33
  657. package/src/global.d.ts +0 -4
  658. package/src/helpers/allowedValues.ts +0 -249
  659. package/src/helpers/choiceChip.ts +0 -227
  660. package/src/helpers/common.ts +0 -326
  661. package/src/helpers/dpqlDetection.ts +0 -209
  662. package/src/helpers/expressions.ts +0 -140
  663. package/src/helpers/optionUiTypes.ts +0 -199
  664. package/src/helpers/options.ts +0 -150
  665. package/src/helpers/providerValue.ts +0 -125
  666. package/src/helpers/scrollbar.ts +0 -32
  667. package/src/helpers/singleLineString.ts +0 -61
  668. package/src/helpers/templateItems.ts +0 -81
  669. package/src/helpers/templateText.ts +0 -350
  670. package/src/helpers/templates.ts +0 -602
  671. package/src/helpers/validations.ts +0 -2085
  672. package/src/hooks/useArgSchema.ts +0 -37
  673. package/src/hooks/useCoarsePointer.ts +0 -30
  674. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  675. package/src/hooks/useFetch/useFetch.tsx +0 -154
  676. package/src/hooks/usePhoneViewport.ts +0 -34
  677. package/src/hooks/useQorusTypes.ts +0 -233
  678. package/src/hooks/useReqraftProperty.ts +0 -16
  679. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  680. package/src/hooks/useStorage/useStorage.ts +0 -35
  681. package/src/hooks/useTemplates.ts +0 -123
  682. package/src/hooks/useValidation.ts +0 -9
  683. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  684. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  685. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  686. package/src/index.tsx +0 -86
  687. package/src/providers/FetchProvider.tsx +0 -40
  688. package/src/providers/ReqraftProvider.tsx +0 -52
  689. package/src/providers/StorageProvider.tsx +0 -131
  690. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  691. package/src/stores/currentUser/currentUser.tsx +0 -94
  692. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  693. package/src/stories/Tests/utils.ts +0 -320
  694. package/src/stories/storyNetwork.ts +0 -92
  695. package/src/stories/tracking.tsx +0 -206
  696. package/src/tracking/browser/attach.ts +0 -186
  697. package/src/tracking/browser/env.ts +0 -78
  698. package/src/tracking/core/consent.ts +0 -37
  699. package/src/tracking/core/engagement.ts +0 -47
  700. package/src/tracking/core/experiments.ts +0 -258
  701. package/src/tracking/core/hash.ts +0 -26
  702. package/src/tracking/core/ids.ts +0 -25
  703. package/src/tracking/core/observable.ts +0 -23
  704. package/src/tracking/core/queue.ts +0 -131
  705. package/src/tracking/core/sections.ts +0 -166
  706. package/src/tracking/core/storage.ts +0 -69
  707. package/src/tracking/core/tracker.ts +0 -417
  708. package/src/tracking/core/types.ts +0 -162
  709. package/src/tracking/core/utm.ts +0 -23
  710. package/src/tracking/index.ts +0 -72
  711. package/src/tracking/markup.ts +0 -17
  712. package/src/tracking/react/Experiment.tsx +0 -44
  713. package/src/tracking/react/TrackingProvider.tsx +0 -56
  714. package/src/tracking/react/hooks.ts +0 -106
  715. package/src/tracking/react/index.ts +0 -13
  716. package/src/tracking/testing.ts +0 -108
  717. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  718. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  719. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  720. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  721. package/src/tracking/ui/anchor.ts +0 -180
  722. package/src/tracking/ui/card.ts +0 -464
  723. package/src/tracking/ui/client.ts +0 -117
  724. package/src/tracking/ui/index.ts +0 -77
  725. package/src/tracking/ui/types.ts +0 -110
  726. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  727. package/src/types/Form.ts +0 -29
  728. package/src/types.ts +0 -14
  729. package/src/utils/datetime.ts +0 -10
  730. package/src/utils/fetch.ts +0 -457
  731. package/src/utils/lspClient.ts +0 -711
  732. package/src/utils/lspClient.types.ts +0 -211
  733. package/src/utils/queryUnlessCancelled.ts +0 -28
  734. package/src/utils/websocket.ts +0 -293
  735. package/vite.config.ts +0 -58
  736. package/vitest.config.ts +0 -69
@@ -1,829 +0,0 @@
1
- import { StoryObj } from '@storybook/react-vite';
2
- import { expect, fn, userEvent, waitFor, within } from 'storybook/test';
3
- import styled from 'styled-components';
4
-
5
- import { thinScrollbar } from '../../helpers/scrollbar';
6
- import { StoryMeta } from '../../types';
7
- import type { IInterfaceReference, TTicketMessageAuthor } from '../supportTicket/meta';
8
- import { ITicketThreadMessage, TicketThread } from './TicketThread';
9
-
10
- /* The drawer body's scroll area — the thin Qorus scrollbar rather than the platform
11
- * default, matching what the app's ThreadScroll should carry. */
12
- const DrawerScroll = styled.div`
13
- flex: 1;
14
- min-height: 0;
15
- overflow-y: auto;
16
- padding: 14px;
17
- ${thinScrollbar}
18
- `;
19
-
20
- /*
21
- * The thread deliberately sits at the BOTTOM of its scroll area, against the composer,
22
- * the way every chat surface behaves. That only reads correctly inside the frame it
23
- * ships in: a fixed-height drawer body with the reply box beneath it. Rendered bare on
24
- * Storybook's full-height canvas the messages look like they fell into a void, with a
25
- * large empty gap above and nothing to sit against.
26
- *
27
- * This decorator supplies that frame — a drawer-height scroll area with the top edge of
28
- * a composer below it — so the bottom-alignment is legible as "a short conversation
29
- * waiting above the reply box" rather than a broken layout. It carries NO text, so the
30
- * `Loading` (asserts empty text) and `Empty` (asserts its own copy) stories are
31
- * unaffected.
32
- */
33
- const DRAWER_HEIGHT = 520;
34
- const inDrawer = (Story: () => JSX.Element) => (
35
- <div
36
- style={{
37
- height: DRAWER_HEIGHT,
38
- display: 'flex',
39
- flexDirection: 'column',
40
- border: '1px solid rgba(255,255,255,0.1)',
41
- borderRadius: 8,
42
- overflow: 'hidden',
43
- }}
44
- >
45
- <DrawerScroll>
46
- <Story />
47
- </DrawerScroll>
48
- {/* the composer's edge — the surface the thread rests against, no text */}
49
- <div
50
- style={{
51
- height: 44,
52
- flex: 'none',
53
- borderTop: '1px solid rgba(255,255,255,0.1)',
54
- background: 'rgba(255,255,255,0.02)',
55
- }}
56
- />
57
- </div>
58
- );
59
-
60
- const NOW = Date.parse('2026-06-30T12:00:00Z');
61
- const ago = (mins: number) => new Date(NOW - mins * 60_000).toISOString();
62
-
63
- /* A stand-in screenshot the mock `fetchAttachmentUrl` serves — an inline SVG data URL,
64
- * so the story needs no network and no fixture file. */
65
- const screenshot = (label: string, hue: number): string =>
66
- `data:image/svg+xml,${encodeURIComponent(
67
- `<svg xmlns='http://www.w3.org/2000/svg' width='320' height='200'>` +
68
- `<rect width='320' height='200' fill='hsl(${hue},38%,16%)'/>` +
69
- `<rect x='16' y='16' width='288' height='30' rx='6' fill='hsl(${hue},45%,30%)'/>` +
70
- `<rect x='16' y='62' width='170' height='12' rx='4' fill='hsl(${hue},30%,46%)'/>` +
71
- `<rect x='16' y='86' width='250' height='12' rx='4' fill='hsl(${hue},24%,38%)'/>` +
72
- `<rect x='16' y='110' width='210' height='12' rx='4' fill='hsl(${hue},24%,38%)'/>` +
73
- `<text x='16' y='180' fill='white' font-family='sans-serif' font-size='13' opacity='0.7'>${label}</text>` +
74
- `</svg>`
75
- )}`;
76
-
77
-
78
- const THREAD: ITicketThreadMessage[] = [
79
- {
80
- message_id: 'm1',
81
- author_type: 'customer',
82
- author_id: 'acme',
83
- body: 'Our nightly **deploy** started failing after the 3.2 upgrade.',
84
- created: ago(180),
85
- attachments: [
86
- {
87
- attachment_id: 'att-1',
88
- filename: 'deploy-trace.log',
89
- content_type: 'text/plain',
90
- size_bytes: 12_800,
91
- },
92
- ],
93
- // no `resolveInterfaceIcon` is passed in these base stories, so this chip
94
- // exercises the built-in default per-kind icon.
95
- referenced_interfaces: [{ interface_kind: 'workflow', interface_name: 'nightly-deploy:1.2' }],
96
- },
97
- {
98
- message_id: 'm2',
99
- author_type: 'staff',
100
- author_id: 'nick',
101
- body: 'Thanks — that trace points at the datasource pool. Can you confirm the pool size?',
102
- created: ago(120),
103
- },
104
- {
105
- message_id: 'm3',
106
- author_type: 'staff',
107
- author_id: 'nick',
108
- body: 'Reproduced locally; the pool default dropped to 1 in 3.2.',
109
- internal: true,
110
- created: ago(90),
111
- },
112
- {
113
- message_id: 'm4',
114
- author_type: 'system',
115
- author_id: 'system',
116
- body: 'Priority raised to **high**.',
117
- created: ago(60),
118
- },
119
- ];
120
-
121
- // A thread whose messages reference interfaces on the customer's instance —
122
- // several at once, including two of the same kind (workflow), plus a job on a
123
- // follow-up message. Referenced interfaces are `{kind, name}` snapshots.
124
- const REFERENCED_THREAD: ITicketThreadMessage[] = [
125
- {
126
- message_id: 'r1',
127
- author_type: 'customer',
128
- author_id: 'acme',
129
- body: 'These two workflows and the notification service all fail together.',
130
- created: ago(45),
131
- referenced_interfaces: [
132
- { interface_kind: 'workflow', interface_name: 'order-processing:1.0', reference_id: 'ref-1' },
133
- { interface_kind: 'workflow', interface_name: 'invoice-sync:2.3', reference_id: 'ref-2' },
134
- { interface_kind: 'service', interface_name: 'notification-svc', reference_id: 'ref-3' },
135
- ],
136
- },
137
- {
138
- message_id: 'r2',
139
- author_type: 'customer',
140
- author_id: 'acme',
141
- body: 'And this job kicks off the follow-up.',
142
- created: ago(20),
143
- referenced_interfaces: [
144
- { interface_kind: 'job', interface_name: 'nightly-cleanup', reference_id: 'ref-4' },
145
- ],
146
- },
147
- ];
148
-
149
- const meta = {
150
- component: TicketThread,
151
- title: 'Components/TicketThread',
152
- decorators: [inDrawer],
153
- args: {
154
- messages: THREAD,
155
- onDownloadAttachment: fn(),
156
- },
157
- } as StoryMeta<typeof TicketThread>;
158
-
159
- export default meta;
160
- type Story = StoryObj<typeof meta>;
161
-
162
- /**
163
- * The customer viewpoint: the customer's own messages sit on the right under
164
- * "You", staff appear under a masked "Qorus Support" label, and internal notes
165
- * are never delivered to this surface (the server filters them). Clicking an
166
- * attachment chip calls `onDownloadAttachment` with its id + filename.
167
- */
168
- export const CustomerView: Story = {
169
- parameters: {
170
- docs: {
171
- description: {
172
- story:
173
- "Renders the thread from the customer's viewpoint: the customer's own messages sit on the right under 'You', staff appear under the masked 'Qorus Support' label, internal notes are filtered out, and clicking an attachment chip calls onDownloadAttachment with its id and filename.",
174
- },
175
- },
176
- },
177
- args: {
178
- viewerRole: 'customer',
179
- // the server never sends internal notes to the customer
180
- messages: THREAD.filter((m) => !m.internal),
181
- },
182
- async play({ canvasElement, args }) {
183
- const canvas = within(canvasElement);
184
-
185
- await expect(canvas.getByText('You')).toBeInTheDocument();
186
- await expect(canvas.getByText('Qorus Support')).toBeInTheDocument();
187
- // internal notes are filtered out for the customer
188
- await expect(canvas.queryByText('Internal note')).not.toBeInTheDocument();
189
-
190
- await userEvent.click(canvas.getAllByText('deploy-trace.log')[0]);
191
- await waitFor(() =>
192
- expect(args.onDownloadAttachment).toHaveBeenCalledWith('att-1', 'deploy-trace.log')
193
- );
194
- },
195
- };
196
-
197
- /**
198
- * Messages can reference interfaces on the customer's instance. Each reference
199
- * renders as a chip under the message — the interface kind as the chip's key and
200
- * the interface name as its label — and several references (including two of the
201
- * same kind) can attach to one message. When the consumer passes
202
- * `onInterfaceClick` (the customer view, which can open the interface on its own
203
- * instance) the chips are clickable; `resolveInterfaceIcon` supplies a per-kind
204
- * icon. The staff view omits `onInterfaceClick`, leaving the chips static.
205
- */
206
- /**
207
- * TICKET-level references (picked when filing) echo as chips on the OPENING message —
208
- * without the echo, readers scanned the thread, saw no chips, and concluded the ticket
209
- * referenced nothing. Deduped: `order-sync:1.2` is both a ticket reference and a
210
- * message-level ref on the opening message, and must render exactly once; the reply's
211
- * own refs are untouched.
212
- */
213
- export const TicketReferencesEchoOnOpeningMessage: Story = {
214
- parameters: {
215
- docs: {
216
- description: {
217
- story:
218
- 'Renders the thread with ticketReferences wired — the ticket-level refs (a qog and a workflow) appear as chips on the opening message only, deduped against that message\'s own refs, while the reply keeps just its own.',
219
- },
220
- },
221
- },
222
- args: {
223
- viewerRole: 'customer',
224
- messages: [
225
- {
226
- message_id: 'e1',
227
- author_type: 'customer',
228
- author_id: 'acme',
229
- body: 'The qog fails right after start; the workflow it feeds never runs.',
230
- created: ago(45),
231
- // overlaps with one ticket-level ref — must not double-render
232
- referenced_interfaces: [
233
- { interface_kind: 'workflow', interface_name: 'order-sync:1.2', reference_id: 'ref-m1' },
234
- ],
235
- },
236
- {
237
- message_id: 'e2',
238
- author_type: 'staff',
239
- author_id: 'support-1',
240
- body: 'Looking into it now.',
241
- created: ago(20),
242
- },
243
- ],
244
- ticketReferences: [
245
- { interface_kind: 'qog', interface_name: 'log-writer', reference_id: 'ref-t1' },
246
- { interface_kind: 'workflow', interface_name: 'order-sync:1.2', reference_id: 'ref-t2' },
247
- ],
248
- },
249
- async play({ canvasElement }) {
250
- const canvas = within(canvasElement);
251
- // the ticket-level qog reference shows in the CONVERSATION now
252
- await expect(await canvas.findByText('log-writer')).toBeInTheDocument();
253
- // the overlapping workflow renders exactly once (ticket ref deduped against message ref)
254
- await expect(canvas.getAllByText('order-sync:1.2')).toHaveLength(1);
255
- // the staff reply carries no chips — the echo is scoped to the opening message
256
- const chips = canvasElement.querySelectorAll('.reqore-tag');
257
- await expect(chips.length).toBe(2);
258
- },
259
- };
260
-
261
- export const WithInterfaceReferences: Story = {
262
- parameters: {
263
- docs: {
264
- description: {
265
- story:
266
- 'Renders a customer thread whose messages carry interface-reference chips — several per message, including two workflows — where clicking a chip calls onInterfaceClick with that interface.',
267
- },
268
- },
269
- },
270
- args: {
271
- viewerRole: 'customer',
272
- messages: REFERENCED_THREAD,
273
- onInterfaceClick: fn(),
274
- resolveInterfaceIcon: (kind) =>
275
- kind === 'workflow' ? 'GitBranchLine' : kind === 'service' ? 'ServerLine' : 'TimerLine',
276
- },
277
- async play({ canvasElement, args }) {
278
- const canvas = within(canvasElement);
279
-
280
- // every reference renders, including two workflows on the same message
281
- await expect(canvas.getByText('order-processing:1.0')).toBeInTheDocument();
282
- await expect(canvas.getByText('invoice-sync:2.3')).toBeInTheDocument();
283
- await expect(canvas.getByText('notification-svc')).toBeInTheDocument();
284
- await expect(canvas.getByText('nightly-cleanup')).toBeInTheDocument();
285
-
286
- // clicking a chip opens that specific interface
287
- await userEvent.click(canvas.getByText('invoice-sync:2.3'));
288
- await waitFor(() =>
289
- expect(args.onInterfaceClick).toHaveBeenCalledWith(
290
- expect.objectContaining({
291
- interface_kind: 'workflow',
292
- interface_name: 'invoice-sync:2.3',
293
- })
294
- )
295
- );
296
- },
297
- };
298
-
299
- /**
300
- * The staff viewpoint: staff messages sit on the right, the customer on the
301
- * left, and staff-only internal notes render amber + bordered under an "Internal
302
- * note" label so they can never be mistaken for a customer-visible reply.
303
- */
304
- export const StaffView: Story = {
305
- parameters: {
306
- docs: {
307
- description: {
308
- story:
309
- "Renders the thread from the staff viewpoint: staff messages sit on the right, the customer on the left, and staff-only internal notes render amber and bordered under an 'Internal note' label.",
310
- },
311
- },
312
- },
313
- args: {
314
- viewerRole: 'staff',
315
- messages: THREAD,
316
- },
317
- async play({ canvasElement }) {
318
- const canvas = within(canvasElement);
319
-
320
- await expect(canvas.getByText('Internal note')).toBeInTheDocument();
321
- await expect(canvas.getByText(/Support · nick/)).toBeInTheDocument();
322
- await expect(canvas.getByText(/Customer · acme/)).toBeInTheDocument();
323
- // the reference chip renders with the built-in default icon (no resolver passed)
324
- await expect(canvas.getByText('nightly-deploy:1.2')).toBeInTheDocument();
325
- },
326
- };
327
-
328
- export const Loading: Story = {
329
- parameters: {
330
- docs: {
331
- description: {
332
- story:
333
- "The FIRST load — loading with nothing to show yet — renders a conversation-shaped skeleton: aria-busy, labelled 'Loading conversation', carrying no message content, rather than a spinner. `messages` is empty deliberately; that is what makes this a first load rather than a refetch (see RefetchKeepsTheConversation).",
334
- },
335
- },
336
- },
337
- args: { loading: true, messages: [] },
338
- async play({ canvasElement }) {
339
- // the loading state is a conversation-shaped skeleton, not a spinner
340
- const skeleton = canvasElement.querySelector('[aria-busy="true"]');
341
- await expect(skeleton).not.toBeNull();
342
- await expect(skeleton).toHaveAttribute('aria-label', 'Loading conversation');
343
- // no real message content renders while loading
344
- await expect(canvasElement.textContent).toBe('');
345
- },
346
- };
347
-
348
- export const RefetchKeepsTheConversation: Story = {
349
- parameters: {
350
- docs: {
351
- description: {
352
- story:
353
- 'Loading with messages already on screen is a REFETCH, not a first load, and must leave the conversation alone. Every send triggers one — and where the thread is live, so does the other party sending — so blanking it here replaces a conversation the reader is in the middle of with pulsing placeholders, at the worst possible moment. The new message simply appears when the refetch resolves.',
354
- },
355
- },
356
- },
357
- args: { loading: true },
358
- async play({ canvasElement }) {
359
- const canvas = within(canvasElement);
360
- // no skeleton: the thread is already showing something worth keeping
361
- await expect(canvasElement.querySelector('[aria-busy="true"]')).toBeNull();
362
- // ...and the existing messages are still on screen. Asserted on message bodies
363
- // rather than author labels, which vary with `viewerRole`; getAllByText because a
364
- // body can legitimately appear in more than one node.
365
- await expect(canvas.getAllByText(/nightly/).length).toBeGreaterThan(0);
366
- await expect(canvas.getAllByText(/datasource pool/).length).toBeGreaterThan(0);
367
- },
368
- };
369
-
370
- export const Empty: Story = {
371
- parameters: {
372
- docs: {
373
- description: {
374
- story:
375
- "Renders the empty state with no messages, showing the 'No messages yet' placeholder instead of a thread.",
376
- },
377
- },
378
- },
379
- args: { messages: [] },
380
- async play({ canvasElement }) {
381
- await expect(within(canvasElement).getByText('No messages yet')).toBeInTheDocument();
382
- },
383
- };
384
-
385
- /* ── comprehensive coverage ──────────────────────────────────────────────────
386
- * The stories above cover the two viewpoints and the happy path. The ones below
387
- * exercise the full render surface a message can carry — every interface-reference
388
- * kind, the markdown a body supports, the spread of attachment types, every system
389
- * event, a grouped burst, and the overflow case — so a change to any of those is
390
- * visible in review instead of only showing up against real data.
391
- * ─────────────────────────────────────────────────────────────────────────── */
392
-
393
- /* Every interface kind the reference vocabulary defines, on one message, so each
394
- * chip's built-in per-kind glyph is on screen at once. Names are illustrative. */
395
- const EVERY_KIND: IInterfaceReference[] = [
396
- { interface_kind: 'workflow', interface_name: 'order-sync:1.2' },
397
- { interface_kind: 'service', interface_name: 'notification-svc' },
398
- { interface_kind: 'job', interface_name: 'nightly-recon' },
399
- { interface_kind: 'fsm', interface_name: 'onboarding-flow' },
400
- { interface_kind: 'qog', interface_name: 'stripe-billing' },
401
- { interface_kind: 'connection', interface_name: 'pgsql-omq' },
402
- { interface_kind: 'mapper', interface_name: 'csv-to-order' },
403
- { interface_kind: 'class', interface_name: 'OrderUtils' },
404
- { interface_kind: 'value-map', interface_name: 'country-codes' },
405
- { interface_kind: 'ai-collection', interface_name: 'kb-support' },
406
- { interface_kind: 'ai-endpoint', interface_name: 'gpt-router' },
407
- { interface_kind: 'ai-guardrail', interface_name: 'pii-filter' },
408
- // an unknown kind falls back to the generic glyph rather than breaking
409
- { interface_kind: 'mystery', interface_name: 'future-thing' },
410
- ];
411
-
412
- /** Every referenceable interface kind as a chip on a single message — one of each,
413
- * plus an unknown kind that must fall back to the generic glyph. */
414
- export const EveryReferenceKind: Story = {
415
- parameters: {
416
- docs: {
417
- description: {
418
- story:
419
- 'Renders a single message carrying a chip for every referenceable interface kind, one of each, plus an unknown kind that falls back to the generic glyph.',
420
- },
421
- },
422
- },
423
- args: {
424
- viewerRole: 'customer',
425
- messages: [
426
- {
427
- message_id: 'refs',
428
- author_type: 'customer',
429
- author_id: 'acme',
430
- body: 'For context, this touches most of our instance:',
431
- created: ago(20),
432
- referenced_interfaces: EVERY_KIND,
433
- },
434
- ],
435
- },
436
- async play({ canvasElement }) {
437
- const canvas = within(canvasElement);
438
- for (const reference of EVERY_KIND) {
439
- await expect(canvas.getByText(reference.interface_name)).toBeInTheDocument();
440
- }
441
- },
442
- };
443
-
444
- /** The markdown a body supports: emphasis, inline code, a fenced block, both list
445
- * kinds, and a link — so a formatting regression shows up here, not in the wild. */
446
- export const RichFormatting: Story = {
447
- parameters: {
448
- docs: {
449
- description: {
450
- story:
451
- 'Renders a message whose markdown body exercises emphasis, inline code, a fenced code block, both list kinds, and a link, so a formatting regression surfaces here.',
452
- },
453
- },
454
- },
455
- args: {
456
- viewerRole: 'customer',
457
- messages: [
458
- {
459
- message_id: 'md',
460
- author_type: 'staff',
461
- author_id: 'nick',
462
- created: ago(5),
463
- body: [
464
- 'Here is what I found — the **datasource pool** collapses to `1` under load.',
465
- '',
466
- 'Steps to reproduce:',
467
- '',
468
- '1. Deploy `order-sync:1.2`',
469
- '2. Drive 40+ concurrent orders',
470
- '3. Watch the pool starve',
471
- '',
472
- 'What to check:',
473
- '',
474
- '- the connection `pgsql-omq`',
475
- '- the `max-pool-size` option',
476
- '',
477
- '```qore',
478
- 'int size = pool.getSize();',
479
- 'if (size < 4) log("pool starved: " + size);',
480
- '```',
481
- '',
482
- 'Full write-up in the [runbook](https://docs.qoretechnologies.com).',
483
- ].join('\n'),
484
- },
485
- ],
486
- },
487
- async play({ canvasElement }) {
488
- const canvas = within(canvasElement);
489
- // the fenced block and a list item both render
490
- await expect(canvas.getByText(/pool starved/)).toBeInTheDocument();
491
- await expect(canvas.getByText(/Drive 40\+ concurrent orders/)).toBeInTheDocument();
492
- // the link is a real anchor
493
- const link = canvas.getByText('runbook').closest('a');
494
- await expect(link).toHaveAttribute('href', 'https://docs.qoretechnologies.com');
495
- },
496
- };
497
-
498
- /** A spread of attachment types and sizes on one message — each chip shows its
499
- * own formatted size and a content-type tooltip. */
500
- export const AttachmentTypes: Story = {
501
- parameters: {
502
- docs: {
503
- description: {
504
- story:
505
- 'Renders one message with a spread of attachment types and sizes, where the image previews inline as a thumbnail while the rest stay download chips showing their formatted sizes.',
506
- },
507
- },
508
- },
509
- args: {
510
- viewerRole: 'customer',
511
- // the image among these previews inline; the rest stay download chips
512
- fetchAttachmentUrl: async () => screenshot('screenshot', 210),
513
- messages: [
514
- {
515
- message_id: 'att',
516
- author_type: 'customer',
517
- author_id: 'acme',
518
- body: 'Attaching everything I gathered:',
519
- created: ago(8),
520
- attachments: [
521
- { attachment_id: 'a1', filename: 'screenshot.png', content_type: 'image/png', size_bytes: 842_000 },
522
- { attachment_id: 'a2', filename: 'deploy-trace.log', content_type: 'text/plain', size_bytes: 12_800 },
523
- { attachment_id: 'a3', filename: 'incident-report.pdf', content_type: 'application/pdf', size_bytes: 3_400_000 },
524
- { attachment_id: 'a4', filename: 'pool-config.yaml', content_type: 'application/x-yaml', size_bytes: 640 },
525
- { attachment_id: 'a5', filename: 'heap-dump.hprof', content_type: 'application/octet-stream', size_bytes: 1_750_000_000 },
526
- ],
527
- },
528
- ],
529
- },
530
- async play({ canvasElement }) {
531
- const canvas = within(canvasElement);
532
- // the image renders as a thumbnail (an <img>, not a filename chip) …
533
- await waitFor(() => {
534
- const img = canvasElement.querySelector('img[alt="screenshot.png"]');
535
- if (!img) {
536
- throw new Error('image thumbnail not rendered yet');
537
- }
538
- });
539
- // … while the non-image files stay chips, each with its per-unit size
540
- await expect(canvas.getByText('deploy-trace.log')).toBeInTheDocument();
541
- await expect(canvas.getByText('640 B')).toBeInTheDocument();
542
- await expect(canvas.getByText('1.6 GB')).toBeInTheDocument();
543
- },
544
- };
545
-
546
- /** The system-message range — created, assigned, priority, status, reopened,
547
- * resolved — each a centred muted line rather than a card. */
548
- export const SystemEvents: Story = {
549
- parameters: {
550
- docs: {
551
- description: {
552
- story:
553
- 'Renders the full range of system messages — opened, assigned, priority, status, reopened, resolved — each as a centred muted line rather than a card.',
554
- },
555
- },
556
- },
557
- args: {
558
- viewerRole: 'customer',
559
- messages: [
560
- { message_id: 's1', author_type: 'system', author_id: 'system', body: 'Ticket opened.', created: ago(300) },
561
- { message_id: 's2', author_type: 'system', author_id: 'system', body: 'Assigned to Qorus Support.', created: ago(280) },
562
- { message_id: 'c1', author_type: 'customer', author_id: 'acme', body: 'Any update on this?', created: ago(200) },
563
- { message_id: 's3', author_type: 'system', author_id: 'system', body: 'Priority raised to **High**.', created: ago(190) },
564
- { message_id: 's4', author_type: 'system', author_id: 'system', body: 'Status changed to **Awaiting your reply**.', created: ago(120) },
565
- { message_id: 's5', author_type: 'system', author_id: 'system', body: 'Ticket reopened.', created: ago(60) },
566
- { message_id: 's6', author_type: 'system', author_id: 'system', body: 'Ticket resolved.', created: ago(5) },
567
- ],
568
- },
569
- async play({ canvasElement }) {
570
- const canvas = within(canvasElement);
571
- await expect(canvas.getByText(/Ticket opened/)).toBeInTheDocument();
572
- await expect(canvas.getByText(/Ticket resolved/)).toBeInTheDocument();
573
- },
574
- };
575
-
576
- /** A burst of consecutive same-author replies collapses under a single timestamp
577
- * (one `ReqoreBubbleGroup`) rather than stamping every card. */
578
- export const GroupedBurst: Story = {
579
- parameters: {
580
- docs: {
581
- description: {
582
- story:
583
- 'Renders a burst of consecutive same-author staff replies collapsed under a single timestamp, rather than stamping every card.',
584
- },
585
- },
586
- },
587
- args: {
588
- viewerRole: 'staff',
589
- messages: [
590
- { message_id: 'g0', author_type: 'customer', author_id: 'acme', body: 'The deploy is still failing.', created: ago(30) },
591
- { message_id: 'g1', author_type: 'staff', author_id: 'nick', body: 'Looking now.', created: ago(9) },
592
- { message_id: 'g2', author_type: 'staff', author_id: 'nick', body: 'Reproduced it locally.', created: ago(8) },
593
- { message_id: 'g3', author_type: 'staff', author_id: 'nick', body: 'The pool default dropped to 1 in 3.2.', created: ago(7) },
594
- { message_id: 'g4', author_type: 'staff', author_id: 'nick', body: 'Fix is going out in 3.2.1 — I will confirm here.', created: ago(6) },
595
- ],
596
- },
597
- };
598
-
599
- /** An internal note sits amber under "Internal note" for staff, next to a normal
600
- * reply — the two must never be confusable. Customer never receives it. */
601
- export const InternalNote: Story = {
602
- parameters: {
603
- docs: {
604
- description: {
605
- story:
606
- "Renders a staff thread where an internal note sits amber under 'Internal note' beside a normal reply, so the two can never be confused.",
607
- },
608
- },
609
- },
610
- args: {
611
- viewerRole: 'staff',
612
- messages: [
613
- { message_id: 'i0', author_type: 'customer', author_id: 'acme', body: 'Is there a workaround while I wait?', created: ago(40) },
614
- {
615
- message_id: 'i1',
616
- author_type: 'staff',
617
- author_id: 'nick',
618
- internal: true,
619
- body: 'Root cause is the 3.2 pool default. Do **not** promise a date yet — patch is unverified.',
620
- created: ago(30),
621
- },
622
- { message_id: 'i2', author_type: 'staff', author_id: 'nick', body: 'You can raise `max-pool-size` to 8 as a temporary workaround.', created: ago(20) },
623
- ],
624
- },
625
- async play({ canvasElement }) {
626
- const canvas = within(canvasElement);
627
- await expect(canvas.getByText('Internal note')).toBeInTheDocument();
628
- },
629
- };
630
-
631
- /** A single message — the footer count reads "1 message", not "1 messages". */
632
- export const SingleMessage: Story = {
633
- parameters: {
634
- docs: {
635
- description: {
636
- story:
637
- "Renders a thread with a single message, so the footer count reads '1 message' rather than '1 messages'.",
638
- },
639
- },
640
- },
641
- args: {
642
- viewerRole: 'customer',
643
- messages: [
644
- { message_id: 'one', author_type: 'customer', author_id: 'acme', body: 'Just opened this — nothing else yet.', created: ago(2) },
645
- ],
646
- },
647
- async play({ canvasElement }) {
648
- await expect(within(canvasElement).getByText('1 message')).toBeInTheDocument();
649
- },
650
- };
651
-
652
- /** A long conversation that overflows the drawer body — confirms it scrolls and
653
- * the latest message sits at the bottom against the composer. */
654
- export const LongThread: Story = {
655
- parameters: {
656
- docs: {
657
- description: {
658
- story:
659
- 'Renders a 16-message conversation that overflows the drawer body, confirming it scrolls and auto-scrolls to the newest message resting at the bottom against the composer.',
660
- },
661
- },
662
- },
663
- args: {
664
- viewerRole: 'customer',
665
- messages: Array.from({ length: 16 }, (_, i) => ({
666
- message_id: `l${i}`,
667
- author_type: (i % 2 === 0 ? 'customer' : 'staff') as TTicketMessageAuthor,
668
- author_id: i % 2 === 0 ? 'acme' : 'nick',
669
- body:
670
- i % 2 === 0
671
- ? `Follow-up ${i / 2 + 1}: still seeing the failure after the last change.`
672
- : 'Thanks — pushing another fix and will report back.',
673
- created: ago((16 - i) * 15),
674
- })),
675
- },
676
- async play({ canvasElement }) {
677
- const canvas = within(canvasElement);
678
- const footer = await canvas.findByText('16 messages');
679
- // The 16-message thread overflows the 520px drawer body — walk up to the scroll area.
680
- let scroller = footer.parentElement;
681
- while (scroller && scroller.scrollHeight <= scroller.clientHeight) {
682
- scroller = scroller.parentElement;
683
- }
684
- if (!scroller) {
685
- throw new Error('no scroll container around the overflowing thread');
686
- }
687
- const scrollArea = scroller;
688
- // On open the thread auto-scrolls to the newest message: the area rests at its END,
689
- // not at the top (scrollTop 0) on the oldest message. Drop the scroll effect in
690
- // TicketThread and scrollTop stays 0 — this assertion then fails.
691
- await waitFor(() => {
692
- expect(scrollArea.scrollTop).toBeGreaterThan(0);
693
- expect(scrollArea.scrollTop + scrollArea.clientHeight).toBeGreaterThanOrEqual(
694
- scrollArea.scrollHeight - 4
695
- );
696
- });
697
- },
698
- };
699
-
700
- /**
701
- * Image attachments preview inline: a screenshot renders as a thumbnail the reader can
702
- * click to enlarge (`fetchAttachmentUrl` supplies the bytes), while a non-image on the
703
- * same message stays a download chip. Without `fetchAttachmentUrl` every attachment —
704
- * images included — falls back to the chip, which is what `CustomerView` shows.
705
- */
706
- export const ImagePreview: Story = {
707
- parameters: {
708
- docs: {
709
- description: {
710
- story:
711
- 'Renders a message whose image attachments preview inline as thumbnails — clicking one opens the enlarge view — while a non-image on the same message stays a download chip.',
712
- },
713
- },
714
- },
715
- args: {
716
- viewerRole: 'customer',
717
- fetchAttachmentUrl: async (id: string) =>
718
- screenshot(id === 'img-1' ? 'before' : 'after', id === 'img-1' ? 265 : 205),
719
- messages: [
720
- {
721
- message_id: 'img',
722
- author_type: 'customer',
723
- author_id: 'acme',
724
- body: 'Here is the canvas before and after the upgrade, plus the server log:',
725
- created: ago(6),
726
- attachments: [
727
- { attachment_id: 'img-1', filename: 'before.png', content_type: 'image/png', size_bytes: 512_000 },
728
- { attachment_id: 'img-2', filename: 'after.png', content_type: 'image/png', size_bytes: 486_000 },
729
- { attachment_id: 'log-1', filename: 'server.log', content_type: 'text/plain', size_bytes: 24_800 },
730
- ],
731
- },
732
- ],
733
- },
734
- async play({ canvasElement }) {
735
- const canvas = within(canvasElement);
736
- // the two images render as thumbnails …
737
- const thumb = await waitFor(() => {
738
- const img = canvasElement.querySelector<HTMLImageElement>('img[alt="before.png"]');
739
- if (!img) {
740
- throw new Error('thumbnail not rendered yet');
741
- }
742
- return img;
743
- });
744
- // … while the non-image stays a download chip
745
- await expect(canvas.getByText('server.log')).toBeInTheDocument();
746
- // clicking a thumbnail opens the enlarge view
747
- await userEvent.click(thumb);
748
- await waitFor(() => expect(document.querySelector('[role="dialog"]')).not.toBeNull());
749
- },
750
- };
751
-
752
- /**
753
- * One message carrying the whole stack at once — a formatted body, image thumbnails,
754
- * file chips, and interface references — so the vertical order and spacing of all four
755
- * blocks together is reviewable in one place, not only in isolation. Body first, then
756
- * the two attachment rows (images, then files), then the reference chips.
757
- */
758
- export const Everything: Story = {
759
- parameters: {
760
- docs: {
761
- description: {
762
- story:
763
- 'Renders one message carrying the whole stack at once — a formatted body, image thumbnails, file chips, and interface references — so the order and spacing of all four blocks is reviewable together.',
764
- },
765
- },
766
- },
767
- args: {
768
- viewerRole: 'customer',
769
- fetchAttachmentUrl: async (id: string) =>
770
- screenshot(id === 'e-img-1' ? 'canvas' : 'console', id === 'e-img-1' ? 265 : 200),
771
- resolveInterfaceIcon: (kind) =>
772
- kind === 'workflow'
773
- ? 'GitBranchLine'
774
- : kind === 'service'
775
- ? 'ServerLine'
776
- : kind === 'job'
777
- ? 'CalendarLine'
778
- : 'Plug2Line',
779
- onInterfaceClick: fn(),
780
- messages: [
781
- {
782
- message_id: 'everything',
783
- author_type: 'customer',
784
- author_id: 'acme',
785
- created: ago(4),
786
- body: [
787
- 'The nightly **deploy** fails at the mapper step. Two screenshots, the trace, the',
788
- 'config, and the interfaces involved:',
789
- '',
790
- '- reproduces every run since `3.2`',
791
- '- only when the pool drops below `4`',
792
- ].join('\n'),
793
- attachments: [
794
- { attachment_id: 'e-img-1', filename: 'canvas-error.png', content_type: 'image/png', size_bytes: 512_000 },
795
- { attachment_id: 'e-img-2', filename: 'console.png', content_type: 'image/png', size_bytes: 388_000 },
796
- { attachment_id: 'e-file-1', filename: 'deploy-trace.log', content_type: 'text/plain', size_bytes: 12_800 },
797
- { attachment_id: 'e-file-2', filename: 'pool-config.yaml', content_type: 'application/x-yaml', size_bytes: 640 },
798
- ],
799
- referenced_interfaces: [
800
- { interface_kind: 'workflow', interface_name: 'order-sync:1.2', reference_id: 'e-ref-1' },
801
- { interface_kind: 'service', interface_name: 'notification-svc', reference_id: 'e-ref-2' },
802
- { interface_kind: 'job', interface_name: 'nightly-recon', reference_id: 'e-ref-3' },
803
- { interface_kind: 'connection', interface_name: 'pgsql-omq', reference_id: 'e-ref-4' },
804
- ],
805
- },
806
- {
807
- message_id: 'everything-reply',
808
- author_type: 'staff',
809
- author_id: 'nick',
810
- created: ago(1),
811
- body: 'Got it — the screenshots confirm the mapper NPE. Looking at the pool default now.',
812
- },
813
- ],
814
- },
815
- async play({ canvasElement }) {
816
- const canvas = within(canvasElement);
817
- // an image thumbnail …
818
- await waitFor(() => {
819
- if (!canvasElement.querySelector('img[alt="canvas-error.png"]')) {
820
- throw new Error('thumbnail not rendered yet');
821
- }
822
- });
823
- // … a file chip …
824
- await expect(canvas.getByText('deploy-trace.log')).toBeInTheDocument();
825
- // … and an interface reference, all on the one message
826
- await expect(canvas.getByText('order-sync:1.2')).toBeInTheDocument();
827
- await expect(canvas.getByText('pgsql-omq')).toBeInTheDocument();
828
- },
829
- };