@qoretechnologies/reqraft 0.10.64 → 0.10.65-pr.137.g62fcecc

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 (774) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/describedControl.d.ts +54 -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 +36 -5
  29. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/dpqlHelpers.js +340 -62
  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 +35 -17
  35. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  36. package/dist/components/dpqlEditor/types.d.ts +54 -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 +207 -97
  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 +58 -10
  49. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  50. package/dist/components/form/engine/FormEngine.js +542 -112
  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 +21 -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 +20 -10
  67. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  68. package/dist/components/form/engine/compactRowStyles.js +36 -30
  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 +64 -3
  107. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  108. package/dist/components/form/expressions/ExpressionField.js +459 -100
  109. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  110. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  111. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  112. package/dist/components/form/expressions/argumentPresence.js +16 -1
  113. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  114. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  115. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  116. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  117. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  118. package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
  119. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  120. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  121. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  122. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  123. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  124. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
  125. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  126. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  127. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  128. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
  129. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  130. package/dist/components/form/expressions/builder/index.d.ts +24 -2
  131. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  132. package/dist/components/form/expressions/builder/index.js +138 -78
  133. package/dist/components/form/expressions/builder/index.js.map +1 -1
  134. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  135. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  136. package/dist/components/form/expressions/builder/item.js +19 -5
  137. package/dist/components/form/expressions/builder/item.js.map +1 -1
  138. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  139. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  140. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  141. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  142. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  143. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  144. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  145. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  146. package/dist/components/form/expressions/expressionOperands.js +97 -0
  147. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  148. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  149. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  150. package/dist/components/form/expressions/fieldPath.js +152 -0
  151. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  152. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  153. package/dist/components/form/expressions/mockExpressions.js +22 -5
  154. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  155. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  156. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  157. package/dist/components/form/expressions/renderExpressionToText.js +40 -9
  158. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  159. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  160. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  161. package/dist/components/form/expressions/textOfExpression.js +49 -0
  162. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  163. package/dist/components/form/expressions/types.d.ts +7 -0
  164. package/dist/components/form/expressions/types.d.ts.map +1 -1
  165. package/dist/components/form/expressions/types.js +6 -1
  166. package/dist/components/form/expressions/types.js.map +1 -1
  167. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  168. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  169. package/dist/components/form/expressions/useExpressionType.js +181 -0
  170. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  171. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  172. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  173. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  174. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  175. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  176. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  177. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  178. package/dist/components/form/fields/Field.d.ts.map +1 -1
  179. package/dist/components/form/fields/Field.js +26 -9
  180. package/dist/components/form/fields/Field.js.map +1 -1
  181. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  182. package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
  183. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  184. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  185. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  186. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  187. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  188. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  189. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  190. package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
  191. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  192. package/dist/components/form/fields/auto/AutoFormField.js +81 -36
  193. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  194. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  195. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  196. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  197. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  198. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  199. package/dist/components/form/fields/binary/Binary.js +23 -3
  200. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  201. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  202. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  203. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  204. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  205. package/dist/components/form/fields/color/Color.d.ts +103 -16
  206. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  207. package/dist/components/form/fields/color/Color.js +616 -16
  208. package/dist/components/form/fields/color/Color.js.map +1 -1
  209. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  210. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  211. package/dist/components/form/fields/emittedValues.js +24 -1
  212. package/dist/components/form/fields/emittedValues.js.map +1 -1
  213. package/dist/components/form/fields/file/File.d.ts +1 -1
  214. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  215. package/dist/components/form/fields/file/File.js +4 -2
  216. package/dist/components/form/fields/file/File.js.map +1 -1
  217. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  218. package/dist/components/form/fields/long-string/LongString.js +17 -3
  219. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  220. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  221. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  222. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
  223. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  224. package/dist/components/form/fields/number/Number.d.ts +6 -0
  225. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  226. package/dist/components/form/fields/number/Number.js +41 -6
  227. package/dist/components/form/fields/number/Number.js.map +1 -1
  228. package/dist/components/form/fields/object/Object.d.ts +1 -1
  229. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  230. package/dist/components/form/fields/object/Object.js +4 -2
  231. package/dist/components/form/fields/object/Object.js.map +1 -1
  232. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  233. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  234. package/dist/components/form/fields/pendingEdit.js +79 -0
  235. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  236. package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
  237. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  238. package/dist/components/form/fields/rich-text/RichText.js +188 -82
  239. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  240. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  241. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  242. package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
  243. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  244. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  245. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  246. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  247. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  248. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  249. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  250. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  251. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  252. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  253. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  254. package/dist/components/form/fields/schema-definition/index.js +8 -4
  255. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  256. package/dist/components/form/fields/select/Select.d.ts +2 -0
  257. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  258. package/dist/components/form/fields/select/Select.js +19 -10
  259. package/dist/components/form/fields/select/Select.js.map +1 -1
  260. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  261. package/dist/components/form/fields/select/SelectCollection.js +8 -2
  262. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  263. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  264. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  265. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  266. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  267. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  268. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  269. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +13 -5
  270. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  271. package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
  272. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  273. package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
  274. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  275. package/dist/components/form/fields/template/TemplateField.d.ts +102 -1
  276. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  277. package/dist/components/form/fields/template/TemplateField.js +572 -85
  278. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  279. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  280. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  281. package/dist/components/form/fields/template/TemplateText.js +9 -11
  282. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  283. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  284. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  285. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  286. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  287. package/dist/components/form/index.d.ts +10 -0
  288. package/dist/components/form/index.d.ts.map +1 -1
  289. package/dist/components/form/index.js +23 -1
  290. package/dist/components/form/index.js.map +1 -1
  291. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  292. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  293. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  294. package/dist/components/log/Log.d.ts.map +1 -1
  295. package/dist/components/log/Log.js +16 -8
  296. package/dist/components/log/Log.js.map +1 -1
  297. package/dist/components/menu/Menu.d.ts.map +1 -1
  298. package/dist/components/menu/Menu.js +19 -10
  299. package/dist/components/menu/Menu.js.map +1 -1
  300. package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
  301. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  302. package/dist/components/smartEditor/CompletionMenu.js +196 -0
  303. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  304. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  305. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  306. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  307. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  308. package/dist/components/smartEditor/SmartEditor.js +164 -180
  309. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  310. package/dist/components/smartEditor/completionStyle.d.ts +27 -0
  311. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  312. package/dist/components/smartEditor/completionStyle.js +68 -0
  313. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  314. package/dist/components/smartEditor/index.d.ts +5 -1
  315. package/dist/components/smartEditor/index.d.ts.map +1 -1
  316. package/dist/components/smartEditor/index.js +19 -1
  317. package/dist/components/smartEditor/index.js.map +1 -1
  318. package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
  319. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  320. package/dist/components/smartEditor/templateCompletions.js +94 -0
  321. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  322. package/dist/components/smartEditor/typedReferences.d.ts +21 -0
  323. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  324. package/dist/components/smartEditor/typedReferences.js +82 -0
  325. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  326. package/dist/components/smartEditor/types.d.ts +33 -1
  327. package/dist/components/smartEditor/types.d.ts.map +1 -1
  328. package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
  329. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  330. package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
  331. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  332. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  333. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  334. package/dist/components/smartEditor/useLspHover.js +279 -35
  335. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  336. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  337. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  338. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  339. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  340. package/dist/components/smartEditor/useLspSession.js +7 -6
  341. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  342. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  343. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  344. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  345. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  346. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  347. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  348. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  349. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  350. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  351. package/dist/components/supportTicket/TicketHeader.js +20 -2
  352. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  353. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  354. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  355. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  356. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  357. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  358. package/dist/components/ticketThread/TicketThread.js +38 -13
  359. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  360. package/dist/helpers/descriptionTooltip.d.ts +43 -0
  361. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  362. package/dist/helpers/descriptionTooltip.js +70 -0
  363. package/dist/helpers/descriptionTooltip.js.map +1 -0
  364. package/dist/helpers/domProps.d.ts +5 -0
  365. package/dist/helpers/domProps.d.ts.map +1 -0
  366. package/dist/helpers/domProps.js +47 -0
  367. package/dist/helpers/domProps.js.map +1 -0
  368. package/dist/helpers/expressions.d.ts +107 -2
  369. package/dist/helpers/expressions.d.ts.map +1 -1
  370. package/dist/helpers/expressions.js +223 -8
  371. package/dist/helpers/expressions.js.map +1 -1
  372. package/dist/helpers/hoveringPointer.d.ts +26 -0
  373. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  374. package/dist/helpers/hoveringPointer.js +29 -0
  375. package/dist/helpers/hoveringPointer.js.map +1 -0
  376. package/dist/helpers/markdownText.d.ts +14 -0
  377. package/dist/helpers/markdownText.d.ts.map +1 -0
  378. package/dist/helpers/markdownText.js +160 -0
  379. package/dist/helpers/markdownText.js.map +1 -0
  380. package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
  381. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  382. package/dist/helpers/qorusTypeCatalogue.js +262 -0
  383. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  384. package/dist/helpers/readableColors.d.ts +36 -0
  385. package/dist/helpers/readableColors.d.ts.map +1 -0
  386. package/dist/helpers/readableColors.js +116 -0
  387. package/dist/helpers/readableColors.js.map +1 -0
  388. package/dist/helpers/recordFieldReference.d.ts +15 -0
  389. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  390. package/dist/helpers/recordFieldReference.js +89 -0
  391. package/dist/helpers/recordFieldReference.js.map +1 -0
  392. package/dist/helpers/templateItems.d.ts +2 -2
  393. package/dist/helpers/templateItems.d.ts.map +1 -1
  394. package/dist/helpers/templateItems.js +6 -4
  395. package/dist/helpers/templateItems.js.map +1 -1
  396. package/dist/helpers/templateText.js +5 -2
  397. package/dist/helpers/templateText.js.map +1 -1
  398. package/dist/helpers/templates.d.ts +41 -14
  399. package/dist/helpers/templates.d.ts.map +1 -1
  400. package/dist/helpers/templates.js +152 -9
  401. package/dist/helpers/templates.js.map +1 -1
  402. package/dist/helpers/validations.d.ts +9 -0
  403. package/dist/helpers/validations.d.ts.map +1 -1
  404. package/dist/helpers/validations.js +139 -33
  405. package/dist/helpers/validations.js.map +1 -1
  406. package/dist/hooks/useQorusTypes.d.ts +7 -15
  407. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  408. package/dist/hooks/useQorusTypes.js +25 -166
  409. package/dist/hooks/useQorusTypes.js.map +1 -1
  410. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  411. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  412. package/dist/hooks/useReadableIntentShade.js +23 -0
  413. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  414. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  415. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  416. package/dist/hooks/useReadableOpacity.js +17 -0
  417. package/dist/hooks/useReadableOpacity.js.map +1 -0
  418. package/dist/index.d.ts +1 -0
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +1 -0
  421. package/dist/index.js.map +1 -1
  422. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  423. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  424. package/dist/tracking/ui/ExperimentCard.js +26 -10
  425. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  426. package/dist/tracking/ui/card.d.ts +2 -2
  427. package/dist/tracking/ui/card.d.ts.map +1 -1
  428. package/dist/tracking/ui/card.js +2 -2
  429. package/dist/tracking/ui/card.js.map +1 -1
  430. package/dist/tracking/ui/readable.d.ts +14 -0
  431. package/dist/tracking/ui/readable.d.ts.map +1 -0
  432. package/dist/tracking/ui/readable.js +60 -0
  433. package/dist/tracking/ui/readable.js.map +1 -0
  434. package/dist/utils/fetch.d.ts +9 -2
  435. package/dist/utils/fetch.d.ts.map +1 -1
  436. package/dist/utils/fetch.js +6 -5
  437. package/dist/utils/fetch.js.map +1 -1
  438. package/dist/utils/websocket.d.ts +65 -2
  439. package/dist/utils/websocket.d.ts.map +1 -1
  440. package/dist/utils/websocket.js +276 -44
  441. package/dist/utils/websocket.js.map +1 -1
  442. package/package.json +14 -5
  443. package/.claude/CLAUDE.md +0 -317
  444. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  445. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  446. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  447. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  448. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  449. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  450. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  451. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  452. package/.tasks/INDEX.md +0 -111
  453. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  454. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  455. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  456. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  457. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  458. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  459. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  460. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  461. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  462. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  463. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  464. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  465. package/CODE_OF_CONDUCT.md +0 -105
  466. package/CONTRIBUTING.MD +0 -78
  467. package/SECURITY.md +0 -3
  468. package/chromatic.config.json +0 -5
  469. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  470. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  471. package/design/COMPACT_PARITY.md +0 -85
  472. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  473. package/design/FORM_ENGINE_COMPACT.md +0 -300
  474. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  475. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  476. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  477. package/design/IDE_INTEGRATION.md +0 -64
  478. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  479. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  480. package/design/SMART_EDITOR_UX.md +0 -438
  481. package/design/TRACKING.md +0 -290
  482. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  483. package/src/components/Description/index.tsx +0 -254
  484. package/src/components/Description/markdownRendererContext.tsx +0 -29
  485. package/src/components/FocusedEditing/index.tsx +0 -50
  486. package/src/components/codeSize/index.tsx +0 -79
  487. package/src/components/composer/Composer.stories.tsx +0 -238
  488. package/src/components/composer/Composer.tsx +0 -554
  489. package/src/components/composer/helpers.ts +0 -74
  490. package/src/components/composer/index.ts +0 -2
  491. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  492. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  493. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  494. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  495. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  496. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  497. package/src/components/dpqlEditor/index.ts +0 -41
  498. package/src/components/dpqlEditor/types.ts +0 -203
  499. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  500. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  501. package/src/components/form/engine/CompactRow.tsx +0 -2620
  502. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  503. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  504. package/src/components/form/engine/FormEngine.tsx +0 -4569
  505. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  506. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  507. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  508. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  509. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  510. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  511. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  512. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  513. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  514. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  515. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  516. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  517. package/src/components/form/engine/compactRowContext.ts +0 -148
  518. package/src/components/form/engine/compactRowStyles.ts +0 -898
  519. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  520. package/src/components/form/engine/optionActions.ts +0 -128
  521. package/src/components/form/engine/optionsContext.ts +0 -24
  522. package/src/components/form/engine/readFirst.ts +0 -1077
  523. package/src/components/form/engine/rendererTypes.ts +0 -107
  524. package/src/components/form/engine/revealRow.ts +0 -123
  525. package/src/components/form/engine/rowFocus.ts +0 -101
  526. package/src/components/form/engine/rowMenuContext.ts +0 -159
  527. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  528. package/src/components/form/engine/typeChoices.ts +0 -63
  529. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  530. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  531. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  532. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  533. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  534. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  535. package/src/components/form/engine/variants/variantModel.ts +0 -223
  536. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  537. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  538. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  539. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  540. package/src/components/form/expressions/argumentPresence.ts +0 -213
  541. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  542. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  543. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  544. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  545. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  546. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  547. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  548. package/src/components/form/expressions/builder/index.tsx +0 -1545
  549. package/src/components/form/expressions/builder/item.tsx +0 -89
  550. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  551. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  552. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  553. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  554. package/src/components/form/expressions/mockExpressions.ts +0 -317
  555. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  556. package/src/components/form/expressions/types.ts +0 -110
  557. package/src/components/form/expressions/useExpressions.ts +0 -101
  558. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  559. package/src/components/form/fields/Field.stories.tsx +0 -143
  560. package/src/components/form/fields/Field.tsx +0 -732
  561. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  562. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  563. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  564. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  565. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  566. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  567. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  568. package/src/components/form/fields/binary/Binary.tsx +0 -91
  569. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  570. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  571. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  572. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  573. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  574. package/src/components/form/fields/color/Color.tsx +0 -46
  575. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  576. package/src/components/form/fields/cron/Cron.tsx +0 -80
  577. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  578. package/src/components/form/fields/date/Date.tsx +0 -55
  579. package/src/components/form/fields/emittedValues.ts +0 -70
  580. package/src/components/form/fields/file/File.stories.tsx +0 -161
  581. package/src/components/form/fields/file/File.tsx +0 -227
  582. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  583. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  584. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  585. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  586. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  587. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  588. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  589. package/src/components/form/fields/number/Number.tsx +0 -160
  590. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  591. package/src/components/form/fields/object/Object.tsx +0 -255
  592. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  593. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  594. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  595. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  596. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  597. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  598. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  599. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  600. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  601. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  602. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  603. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  604. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  605. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  606. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  607. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  608. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  609. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  610. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  611. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  612. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  613. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  614. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  615. package/src/components/form/fields/schema-definition/types.ts +0 -185
  616. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  617. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  618. package/src/components/form/fields/select/Select.tsx +0 -624
  619. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  620. package/src/components/form/fields/string/String.stories.tsx +0 -86
  621. package/src/components/form/fields/string/String.tsx +0 -43
  622. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  623. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  624. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  625. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  626. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  627. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  628. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  629. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  630. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  631. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  632. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  633. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  634. package/src/components/form/fields/url/Url.tsx +0 -85
  635. package/src/components/form/index.tsx +0 -47
  636. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  637. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  638. package/src/components/imageLightbox/index.ts +0 -1
  639. package/src/components/log/Log.stories.tsx +0 -333
  640. package/src/components/log/Log.tsx +0 -285
  641. package/src/components/menu/Menu.stories.tsx +0 -155
  642. package/src/components/menu/Menu.tsx +0 -312
  643. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  644. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  645. package/src/components/qonsoleSmartInput/index.ts +0 -16
  646. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  647. package/src/components/qonsoleSmartInput/types.ts +0 -133
  648. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  649. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  650. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  651. package/src/components/searchFilterBar/index.ts +0 -1
  652. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  653. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  654. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  655. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  656. package/src/components/smartEditor/helpers.ts +0 -217
  657. package/src/components/smartEditor/index.ts +0 -35
  658. package/src/components/smartEditor/styling.ts +0 -45
  659. package/src/components/smartEditor/types.ts +0 -211
  660. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  661. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  662. package/src/components/smartEditor/useLspHover.ts +0 -230
  663. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  664. package/src/components/smartEditor/useLspSession.ts +0 -231
  665. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  666. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  667. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  668. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  669. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  670. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  671. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  672. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  673. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  674. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  675. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  676. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  677. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  678. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  679. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  680. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  681. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  682. package/src/components/supportTicket/index.ts +0 -10
  683. package/src/components/supportTicket/meta.ts +0 -206
  684. package/src/components/supportTicket/ticketModel.ts +0 -131
  685. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  686. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  687. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  688. package/src/components/ticketReferences/index.ts +0 -2
  689. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  690. package/src/components/ticketThread/TicketThread.tsx +0 -719
  691. package/src/components/ticketThread/index.ts +0 -6
  692. package/src/contexts/FetchContext.tsx +0 -25
  693. package/src/contexts/ReqraftContext.tsx +0 -9
  694. package/src/contexts/StorageContext.tsx +0 -33
  695. package/src/global.d.ts +0 -4
  696. package/src/helpers/allowedValues.ts +0 -249
  697. package/src/helpers/choiceChip.ts +0 -227
  698. package/src/helpers/common.ts +0 -326
  699. package/src/helpers/dpqlDetection.ts +0 -209
  700. package/src/helpers/expressions.ts +0 -140
  701. package/src/helpers/optionUiTypes.ts +0 -199
  702. package/src/helpers/options.ts +0 -150
  703. package/src/helpers/providerValue.ts +0 -125
  704. package/src/helpers/scrollbar.ts +0 -32
  705. package/src/helpers/singleLineString.ts +0 -61
  706. package/src/helpers/templateItems.ts +0 -81
  707. package/src/helpers/templateText.ts +0 -350
  708. package/src/helpers/templates.ts +0 -602
  709. package/src/helpers/validations.ts +0 -2085
  710. package/src/hooks/useArgSchema.ts +0 -37
  711. package/src/hooks/useCoarsePointer.ts +0 -30
  712. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  713. package/src/hooks/useFetch/useFetch.tsx +0 -154
  714. package/src/hooks/usePhoneViewport.ts +0 -34
  715. package/src/hooks/useQorusTypes.ts +0 -233
  716. package/src/hooks/useReqraftProperty.ts +0 -16
  717. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  718. package/src/hooks/useStorage/useStorage.ts +0 -35
  719. package/src/hooks/useTemplates.ts +0 -123
  720. package/src/hooks/useValidation.ts +0 -9
  721. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  722. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  723. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  724. package/src/index.tsx +0 -86
  725. package/src/providers/FetchProvider.tsx +0 -40
  726. package/src/providers/ReqraftProvider.tsx +0 -52
  727. package/src/providers/StorageProvider.tsx +0 -131
  728. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  729. package/src/stores/currentUser/currentUser.tsx +0 -94
  730. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  731. package/src/stories/Tests/utils.ts +0 -320
  732. package/src/stories/storyNetwork.ts +0 -92
  733. package/src/stories/tracking.tsx +0 -206
  734. package/src/tracking/browser/attach.ts +0 -186
  735. package/src/tracking/browser/env.ts +0 -78
  736. package/src/tracking/core/consent.ts +0 -37
  737. package/src/tracking/core/engagement.ts +0 -47
  738. package/src/tracking/core/experiments.ts +0 -258
  739. package/src/tracking/core/hash.ts +0 -26
  740. package/src/tracking/core/ids.ts +0 -25
  741. package/src/tracking/core/observable.ts +0 -23
  742. package/src/tracking/core/queue.ts +0 -131
  743. package/src/tracking/core/sections.ts +0 -166
  744. package/src/tracking/core/storage.ts +0 -69
  745. package/src/tracking/core/tracker.ts +0 -417
  746. package/src/tracking/core/types.ts +0 -162
  747. package/src/tracking/core/utm.ts +0 -23
  748. package/src/tracking/index.ts +0 -72
  749. package/src/tracking/markup.ts +0 -17
  750. package/src/tracking/react/Experiment.tsx +0 -44
  751. package/src/tracking/react/TrackingProvider.tsx +0 -56
  752. package/src/tracking/react/hooks.ts +0 -106
  753. package/src/tracking/react/index.ts +0 -13
  754. package/src/tracking/testing.ts +0 -108
  755. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  756. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  757. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  758. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  759. package/src/tracking/ui/anchor.ts +0 -180
  760. package/src/tracking/ui/card.ts +0 -464
  761. package/src/tracking/ui/client.ts +0 -117
  762. package/src/tracking/ui/index.ts +0 -77
  763. package/src/tracking/ui/types.ts +0 -110
  764. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  765. package/src/types/Form.ts +0 -29
  766. package/src/types.ts +0 -14
  767. package/src/utils/datetime.ts +0 -10
  768. package/src/utils/fetch.ts +0 -457
  769. package/src/utils/lspClient.ts +0 -711
  770. package/src/utils/lspClient.types.ts +0 -211
  771. package/src/utils/queryUnlessCancelled.ts +0 -28
  772. package/src/utils/websocket.ts +0 -293
  773. package/vite.config.ts +0 -58
  774. 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
- };