@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,558 +0,0 @@
1
- # Form Engine — Compact (read-first) mode
2
-
3
- > **Master plan.** Spans three repos. Lives in the toolkit-react worktree because Phase 1 (the
4
- > bulk of the work) ships here. Phases 2–3 land in `qorus-ide`; Phase 4 is an incremental
5
- > `qorus` server change. Treat this file as the single source of truth and keep it updated as we go.
6
-
7
- ---
8
-
9
- ## 0. Ground rules (agreed with the user)
10
-
11
- 1. **Worktree + branch (done).** All Phase-1 work happens in the dedicated worktree, not the main checkout.
12
- - Worktree: `/Users/nick/Projects/qorus-frontend/toolkit-react--form-engine-compact`
13
- - Branch: `feature/form-engine-compact-read-first`, created off **latest** `origin/develop` (`04ecdcf`).
14
- 2. **No commits, no pushes until the user explicitly says so.** Implement, run tests/stories locally, show diffs — wait for the go-ahead before any `git commit`/`git push`.
15
- 3. **Design-doc driven.** Every decision below is grounded in the existing design docs across the three repos (cited inline). When we change a documented surface we update its doc + `AI-DOCS` in the same change.
16
- 4. **Proper Storybook stories and tests.** New behaviour ships with stories + `play` interaction tests (toolkit-react Storybook test-runner + jest), and the IDE phases extend the existing creator stories. No trivial/self-asserting tests.
17
- 5. **No shortcuts.** Reuse the real engine, contribute reusable UI upstream, no forks/stopgaps left behind. "Correct and proper" over "fast."
18
-
19
- ---
20
-
21
- ## 1. Goal
22
-
23
- The workflow/step interface creator was recently restyled into a **read-first** layout (a "configuration
24
- summary you drill into" rather than a wall of inputs). That look currently lives as a **bespoke,
25
- fields-based** component in the IDE. We want to:
26
-
27
- 1. **Move the read-first presentation into the Reqraft `FormEngine`** as a first-class **`compact`** mode,
28
- so any options form can render this way — not just the workflow/step creator.
29
- 2. **Drive it from the options schema, not the legacy `IField` list**, because options is the standard
30
- form model everywhere else in the app and is server-driven.
31
- 3. **Retire the IDE-local `RestyledFields` detour** once the engine covers it, leaving the IDE with a thin,
32
- interface-specific wrapper (hero copy + chips) and nothing duplicated.
33
-
34
- ---
35
-
36
- ## 2. Background — the two-engine reality (current state)
37
-
38
- There are **not** two form philosophies. There is **one options form engine**, mirrored in two places, plus
39
- **one legacy holdout**.
40
-
41
- ### 2a. The one engine, in two places
42
- - **Reqraft `FormEngine`** — `toolkit-react/src/components/form/engine/FormEngine.tsx`. The upstream,
43
- published engine (`@qoretechnologies/reqraft`; the IDE depends on `^0.8.11`). Driven by
44
- `IQorusFormSchema` (options) from `@qoretechnologies/ts-toolkit`.
45
- - **IDE `<Options>`** — `qorus-ide/src/components/Field/systemOptions.tsx`. An **in-repo twin** with
46
- byte-for-byte the same internals (`fixOptions`, `availableOptions`, `OptionsContext`,
47
- `showInvalidOptionsOnly`, the "More Options" adder, `flattenOptions`). Documented in
48
- `qorus-ide/design/SYSTEM_OPTIONS.md`. The IDE comment at `systemOptions.tsx:490` ("nested FormEngine
49
- emissions") shows the upstream engine is already nested in places.
50
-
51
- Both consume the **same** schema type. `FormEngine` is the strategic home; `<Options>` is the legacy local
52
- fork (convergence of the two is **out of scope** here — see §9).
53
-
54
- ### 2b. The legacy holdout — workflow/step creator
55
- - The workflow/step creator renders via `qorus-ide/src/containers/InterfaceCreator/panel.tsx`, fed by the
56
- **legacy** WebSocket `creator-get-fields` → `IField[]` (array-based, `mandatory`, `items[]`). Type:
57
- `qorus-ide/src/components/FieldWrapper/index.tsx` (`IField`).
58
- - The read-first look is `qorus-ide/src/containers/InterfaceCreator/restyled/RestyledFields.tsx`
59
- (documented in `qorus-ide/design/RESTYLED_CREATOR.md`): it re-implements rows, grouping, completion bar,
60
- and a "Ready/Draft" hero **by hand**, on top of `IField`. It's opt-in via the panel's `restyled` prop
61
- (workflow + step only).
62
-
63
- ### 2c. The modern surfaces already on options
64
- Connection, FSM state/transition actions, pipeline processors, AI collection/endpoint/guardrail, ML model —
65
- all render from the options schema. The IDE already has the options-fetch hook:
66
- `qorus-ide/src/hooks/useInterfaceFields.tsx` calls **`creator-get-fields-as-options`** and returns an
67
- `IOptionsSchema`. The connection view's own fields→options migration is fully designed in
68
- `qorus-ide/design/connection-options-api.md` — this is the **precedent** for what we're doing for
69
- workflow/step.
70
-
71
- ### 2d. What the server already provides
72
- - The server **already** exposes the workflow/step form as an **options schema** via
73
- `creator-get-fields-as-options` (the same action the modern surfaces use). The options descriptor
74
- (`FieldInfo` in `qorus/Classes/QorusMapManager.qc`) **already carries `group`** (and `compact`,
75
- `sort_group`/`sort_key`, `display_name`, `short_desc`, `allowed_values`, `depends_on`, `on_change`, …).
76
- - So: **no IDE-side `IField → options` adapter is needed, and we are not blocked on new server work.**
77
- qorus issue **#259** ("server assigns `group` to every field") is just *populating* `group` values on the
78
- existing schema — incremental, non-blocking (the FE already has a grouping fallback).
79
-
80
- ---
81
-
82
- ## 3. Design principles (doc-grounded)
83
-
84
- | Principle | Source | Consequence for this work |
85
- |---|---|---|
86
- | Reusable UI belongs in the library; contribute upstream, don't wrap/patch locally. | `qorus-ide/design/REQORE_REQRAFT.md` §"When Something is Missing" (lines 5, 114–123) | The read-first presentation is a reusable form concern → it lives in **`FormEngine`** (`compact`), not in a new IDE component. |
87
- | Don't fork `RestyledFields`; extend the descriptor API. Interface-specific copy is injected, the component stays interface-agnostic. | `qorus-ide/design/RESTYLED_CREATOR.md` (lines 39–65) | Interface-specific chrome (hero copy, language/`remote` chips, group labels) stays **IDE-side**, injected into the engine wrapper — not hardcoded in the engine. |
88
- | Options is the standard; Fields is deprecated. The connection view migration is the template. | `qorus-ide/design/connection-options-api.md`; `qorus-ide/design/SYSTEM_OPTIONS.md` | Workflow/step move to `creator-get-fields-as-options`, same path the modern surfaces use. |
89
- | Search before you build; don't fork a shared component to add one prop; every shared visual component gets a story. | `qorus-ide/design/SHARED_COMPONENTS.md` Rules 1, 4, 5 | Extend `FormEngine` in place (it already has a `compact` prop stub); ship stories; reuse Reqore primitives for grouping rather than hand-rolled wrappers. |
90
- | Explain non-obvious features in-app. | `qorus-ide/CLAUDE.md` "Explaining features"; `SHARED_COMPONENTS.md` "Help & hints" | Keep the existing read-first `<Hint>` (or its engine equivalent) so users learn the click-to-edit interaction. |
91
-
92
- ---
93
-
94
- ## 4. Locked decisions (the two questions we researched)
95
-
96
- ### Decision A — Scope split: **engine owns the core, IDE wraps the chrome.**
97
- - **`FormEngine` (generic, reusable):** read-first rows showing each option's formatted value; click-to-edit
98
- expand/collapse reusing the existing field editor; compact density; a completion/validity meter derived
99
- from data the engine **already computes** (`validityData` / `invalidFields`); grouping driven by the
100
- schema's `group` key.
101
- - **IDE wrapper (interface-specific):** the "Ready/Draft" hero **copy**, the language-logo / `remote` value
102
- chips, and group-label overrides — injected exactly like today's `IRestyledDescriptor`. The Ready/Draft
103
- **derivation** is generic and moves into the engine; only the **wording/chips** stay in the IDE.
104
- - Rationale: this is what `REQORE_REQRAFT.md` (upstream-or-nothing) + `RESTYLED_CREATOR.md` (descriptor
105
- injection, don't fork) jointly prescribe.
106
-
107
- ### Decision B — Data path: **use the existing server options path; no adapter.**
108
- - Switch workflow/step off legacy `creator-get-fields` (`IField[]`) onto **`creator-get-fields-as-options`**
109
- (`IOptionsSchema`) via the existing `useInterfaceFields` hook, and render with `FormEngine` in `compact`
110
- mode.
111
- - Rationale: the server already returns an options schema for these types (with `group`); the IDE already
112
- has the consumer + renderer; the modern surfaces already run this path. Building an `IField→options`
113
- converter would be a shortcut that entrenches the deprecated model — explicitly rejected.
114
-
115
- ---
116
-
117
- ## 5. Engine design — the `compact` (read-first) mode in `FormEngine`
118
-
119
- **Naming.** The user framed this as "a `compact` flag that turns the form engine into the new look," and
120
- `FormEngine` already has a `compact?: boolean` prop (`FormEngine.tsx:296`, currently a near-stub that only
121
- hides the collection label and disables filter/sort at lines 1029–1036). We **extend `compact`** to be the
122
- full read-first presentation. *(Open item 9d: confirm we want `compact` to mean read-first, or a separate
123
- `readFirst`/`mode` prop with `compact` as density-only. Default assumption: extend `compact`.)*
124
-
125
- **Where it hooks in.** Today each option is a `ReqoreCollection` item whose `content` is
126
- `<FocusedEditing>…{renderOption(optionName, …)}</FocusedEditing>` (`FormEngine.tsx:1218–1239`), i.e. the
127
- editor is always expanded. In `compact` mode the item `content` becomes **read-first**:
128
-
129
- 1. **Read row (default):** render the option's label + a formatted value summary (mirror
130
- `RestyledFields.formatValue`: `—`/"Not set" when empty, "Yes/No" for bool, joined names for lists,
131
- "Set" for hashes, the language image when the wrapper maps it). Hover reveals an edit affordance; the
132
- existing per-item actions (remove value, revert, remove optional, fullscreen) stay available.
133
- 2. **Edit (on click):** clicking the row reveals `renderOption(...)` — the **real, unchanged editor** with
134
- all existing wiring (templates, expressions, `on_change`, validation, dependents) — plus a "Done"
135
- collapse. Track per-item edit state alongside the existing `focusedEditing` state (`FormEngine.tsx:323`).
136
- 3. **Completion meter:** a thin "N / M set" + % bar derived from `availableOptions` + required completeness,
137
- reusing the engine's existing validity (`IFormValidityData`, surfaced via `onValidityChange`). No new
138
- validation logic.
139
- 4. **Grouping:** group options by their schema `group` key, ordered, with a default label/icon map and
140
- per-group override via the wrapper. **Spike first (Task 1.1):** confirm whether `ReqoreCollection`
141
- supports native grouping; if not, render one Reqore panel/collection per group using Reqore primitives
142
- (per `SHARED_COMPONENTS.md` Rule 6 — no hand-rolled gap `<div>`s). Keep the existing "More Options"
143
- adder and "show invalid only" behaviours working per-group or globally.
144
- 5. **Chrome injection:** add a minimal, typed way for the IDE wrapper to pass interface-specific group
145
- labels (and anything else genuinely needed). Hero copy + value chips are rendered **by the IDE around**
146
- `FormEngine`, not inside it — so they do **not** become engine props beyond what grouping needs.
147
-
148
- **Non-goals for the engine:** the "Ready/Draft" hero strip, language-logo chips, and interface-specific
149
- captions. Those stay in the IDE (Decision A).
150
-
151
- ---
152
-
153
- ## 6. Phase plan
154
-
155
- ### Phase 0 — Prerequisites ✅ DONE
156
- - [x] Worktree + branch off latest `develop`.
157
- - [x] `yarn install` **inside the worktree** (worktrees don't share `node_modules`).
158
- - [x] Baseline verified clean on the untouched branch: **jest 163/163 pass** (~4s); **Storybook boots**
159
- and indexes `Form/Engine/FormEngine`.
160
- - [x] Re-read cited sections of `FormEngine.tsx` / `FormEngine.stories.tsx`.
161
-
162
- **⚠️ Environment gotcha — use Yarn Classic, not the global berry.**
163
- - The repo commits a **Yarn 1.x** lockfile (`# yarn lockfile v1`), no `packageManager` pin. The machine's
164
- global `yarn` is **4.6.0 (berry)**, which on first `yarn install` **silently migrates** the project
165
- (creates `.yarn/` + `.yarnrc.yml`, rewrites `yarn.lock` +18k/−13k). That tracked `yarn.lock` change must
166
- **not** leak into the branch.
167
- - **Always invoke yarn as classic in this worktree:** `npx --yes yarn@1.22.22 <cmd>` (install used
168
- `--frozen-lockfile`, passed, zero lockfile churn). Do **not** run a bare `yarn install` here.
169
- - **Storybook port:** the main checkout (`feature/dpql-editor`) already runs Storybook on **6008**; don't
170
- kill it. The worktree Storybook runs on **6009** (`./node_modules/.bin/storybook dev -p 6009 --no-open`).
171
- Point `test-storybook` at `--url http://localhost:6009` in Phase 1.
172
- - `storybook-static/` is **not** gitignored — if we ever `build-storybook`, delete the output afterward.
173
-
174
- ### Phase 1 — Implement `compact` read-first mode in `FormEngine` (toolkit-react) ✅ DONE
175
- - [x] **1.1 Grouping spike** — `ReqoreCollection` (0.64.3, the installed version) renders native group
176
- headers from item `groups: string[]` (`CollectionGroupHeader`, both `sortByGroupFirst` branches). So
177
- grouping stays **100% in reqraft** — no reqore change. We set `groups: [getOptionGroup(schema)]` per
178
- item; ungrouped required/preselected → "General", else "Optional". (Native item `expandable` was
179
- rejected — it expands into a centered modal, not the inline row we want.)
180
- - [x] **1.2 Read-first item content** — `renderReadFirstContent` swaps each item's `content` between a
181
- clickable value row (`ReqoreButton`, `.options-readfirst-value`) and the real `renderOption` editor +
182
- a "Done" collapse (`.options-readfirst-done`). All field wiring preserved. Inline expand state
183
- (`expandedOptions`), multiple rows open at once. Clickable value control (not item-level `onClick`)
184
- so header action buttons don't conflict.
185
- - [x] **1.3 Completion meter** — `ReqoreProgress` "N / M fields set" from `getReadFirstCompletion`; no new
186
- validation.
187
- - [x] **1.4 Grouping** — by schema `group`, title-cased, via native collection group headers.
188
- - [x] **1.5 Density + a11y** — small/flat/minimal Reqore props; `readOnly` keeps rows viewable (eye icon,
189
- no edit affordance). **a11y completed in v5** (see below): the read-first rows became flat
190
- `styled-components` `<div>`s in the v2 rework and were initially mouse-only; v5 makes them real
191
- controls (`role="button"`, `tabIndex={0}`, Enter/Space, focus ring).
192
- - [x] **1.6 Stories** — `Compact`, `CompactReadOnly`, `CompactEmpty`, `CompactReadFirstEditing` added to
193
- `FormEngine.stories.tsx` (grouped schema with bool/allowed_values/list + a required-empty field).
194
- - [x] **1.7 `play` interaction test** — `CompactReadFirstEditing` asserts: value rows render (Yes/Python/
195
- "Required — not set") with **no editor mounted**; group headers (Info/Scaling); expand → pre-filled
196
- editor; edit → `onChange` with `name.value:'updated-name'`; Done → collapse → new value shown.
197
- Passes in-browser (test-storybook, ~400ms).
198
- - [x] **1.8 Types/docs** — `compact` prop JSDoc on `IFormEngineProps`; new
199
- [`design/FORM_ENGINE_COMPACT.md`](../design/FORM_ENGINE_COMPACT.md); helpers extracted to
200
- `readFirst.ts` with unit tests (`__tests__/readFirst.test.ts`).
201
- - [x] **1.9 Green check** — `yarn precheck` **green** (lint clean, **jest 180/180**, prod typecheck clean).
202
- `test-storybook` on :6009: all 4 compact stories pass.
203
-
204
- **Files:** new `src/components/form/engine/readFirst.ts`, `__tests__/readFirst.test.ts`,
205
- `design/FORM_ENGINE_COMPACT.md`; modified `src/components/form/engine/FormEngine.tsx` (compact-gated only)
206
- and `FormEngine.stories.tsx`. **Not committed** (awaiting user go-ahead).
207
-
208
- **Layout rework (v2) — after visual review vs the IDE.** The first cut reused the classic
209
- `ReqoreCollection` card-per-field layout (`flat:false` + darkened `customTheme`), which looked heavy and
210
- unlike the IDE's restyled rows. Reworked to a **dedicated compact render path** (`renderCompact` /
211
- `renderCompactRow`, early-return before the collection): **flat two-column rows** (label | value | action,
212
- thin dividers) inside collapsible `ReqorePanel` groups with `✓ all set` / `⚠ N to resolve` badges, the
213
- completion meter, invalid message, and the more-options adder. Styling via theme-aware `styled-components`.
214
- Classic path fully reverted/untouched. Re-verified: `precheck` green (jest 180/180), all 4 compact stories
215
- pass in `test-storybook`. Still **engine-only** — the hero strip / chips / toolbar remain the IDE wrapper
216
- (Phase 3).
217
-
218
- **Polish + "Minimal" decision items (v3).** After visual review against the IDE:
219
- - **Completion bar** → replaced `ReqoreProgress` with the IDE's inline `label | track | %` strip
220
- (`StyledCompletion*`).
221
- - **Group display** → engine gained a `groups?: Record<string, IFormEngineGroup>` prop (label/icon/subtitle/
222
- sort), keyed by the raw `group` key. `getOptionGroup` now returns the raw key; new `getOptionGroupLabel`
223
- resolves the display label. Default = title-cased key, no icon, schema order. Research basis: the **server
224
- defines no group display metadata** — only the bare `group` string (`info`/`advanced`/`resources`/
225
- `scaling`/`other`/`files`); `sort_group`/`sort_key` exist but are unused; no per-field icon (only
226
- allowed-values carry `icon_filename`). So each UI owns group display → engine takes it via prop.
227
- - **Toolbar** → search box (filter rows by label) + **Required only** toggle. Filters only affect listed
228
- rows; the meter reflects the full set.
229
- - New story `CompactRequiredOnlyAndSearch` (play test) + `groups` config on the compact stories. Re-verified:
230
- `precheck` green (**jest 182/182**), **29/29** `test-storybook` (incl. the toolbar test).
231
-
232
- **"Full" toolbar (v4) — the IDE "Fields" dropdown.** Consolidated the toolbar into a `ReqoreDropdown`
233
- matching the IDE's Fields menu (edit-mode only): **Required only** toggle, **Select all** (`handleAddAllOptional`),
234
- **Default fields** (`handleResetToDefaultFields` — drop user-added optionals, keep required/preselected/
235
- loaded values, clear the filter; mirrors the IDE's `handleResetToDefault`), and a searchable add-optional
236
- list (the standalone bottom adder was removed). Row search box kept. New play test `CompactFieldsMenu`
237
- (Select-all adds an optional → Default-fields removes it); `CompactRequiredOnlyAndSearch` updated to toggle
238
- via the dropdown. Verified: `precheck` green (**jest 182/182**), **30/30** `test-storybook`.
239
-
240
- **Still deferred to Phase-3 (researched, not built):** allowed-value icons (language logo via
241
- `icon_filename` — needs a filename→URL resolver, so consumer-side). The **hero strip, "Edit code", and the
242
- help Hint stay IDE-only** (the IDE wraps the engine).
243
-
244
- **a11y + UX polish (v5).**
245
- - **Keyboard a11y** — read-first rows are now `role="button"` + `tabIndex={0}` with Enter/Space activation
246
- and a focus ring (they were mouse-only `<div>`s after the v2 rework; corrected the stale plan claim above).
247
- - **`N optional` badge** — the catch-all `optional` group shows `N optional` instead of a misleading
248
- "all set".
249
- - **Search spans hidden fields** — the top search now matches optional fields not yet in the form too; a
250
- match surfaces as a dimmed **"Not in form — add"** row that adds + opens the field when activated.
251
- - **Sticky "Additional options (N)" bar** — once the toolbar scrolls off-screen (tracked via an
252
- `IntersectionObserver` sentinel), a sticky bottom dropdown keeps the add-optional list reachable.
253
- - New stories/tests: `CompactSearchHidden` (search-hidden + keyboard-activate), `CompactScrollable`
254
- (no-play, for the sticky-bar/search screenshots). Verified: `precheck` green (**jest 182/182**), **30/31**
255
- `test-storybook` (the 1 failure is the pre-existing `OnValidityChange` flake; all 8 compact stories pass).
256
- Sticky bar is verified visually (IntersectionObserver/scroll behaviour isn't deterministically unit-testable).
257
-
258
- ### Verification items (two follow-ups raised by the team)
259
-
260
- **(a) "add dpql render to make options support expressions" — a follow-up, NOT a Phase-1/compact task.**
261
- Options can hold *expression* values (`supports_expressions`, `is_expression`, `default_view:'expression'`,
262
- `expressions`, `expressions_url`); they're authored in **DPQL** via the Slate-based **`DpqlEditor`**. The
263
- toolkit form engine **renders no expression editor today** — neither on `develop` nor on
264
- `feature/dpql-editor` (`TemplateField` only does template/direct; `is_expression` is just a flag). The
265
- `DpqlEditor` *component* exists on **`feature/dpql-editor`** (`src/components/dpqlEditor/`) but is **not
266
- wired into the form fields** and not released (local reqraft 0.10.0).
267
- - **Are we waiting on `feature/dpql-editor`?** For the **compact work: NO** — verified the branches are
268
- orthogonal: `feature/dpql-editor` (29 commits ahead of `origin/develop`, same `04ecdcf` base) **does not
269
- touch any form-engine file** (`FormEngine.tsx` / `TemplateField.tsx` / `Field.tsx` / form fields unchanged
270
- there; no `dpql` refs anywhere under `src/components/form`). Only shared file is `.storybook/preview.tsx`
271
- (the theme tweak, copied from that branch) — no functional dependency, no conflict. For the **expression
272
- feature: YES** — it needs `feature/dpql-editor` merged (to get `DpqlEditor` onto develop) **and** new
273
- wiring to render it for expression fields. Compact inherits it for free once wired into
274
- `renderOption`/`TemplateField` (compact reuses both). Today a compact read row shows "Expression" for
275
- `is_expression` values.
276
-
277
- **(b) "verify the new compact works with all the options props (on_change/refetch, …)" — DONE.**
278
- Compact reuses the shared `handleValueChange` (`on_change` → `meta.events`; `has_dependents` → reset
279
- dependents + `onDependableOptionChange`) and `renderOption` (`depends_on` disabling, templates), so it
280
- inherits all of it by construction. Now covered by a play test: **`CompactOnChangeAndDependents`** —
281
- editing a `has_dependents` + `on_change:['refetch']` field in the expanded read-first editor fires the
282
- `refetch` event **and** resets its `depends_on` dependent, exactly as classic. **33/33 `test-storybook`.**
283
-
284
- ### Classic-parity features brought into compact (v6 — decision (b))
285
-
286
- Decision (b): user chose **per-field + global revert** and **show-field-types as a Fields-menu toggle**
287
- (the two classic features compact lacked).
288
- - **Revert (per-field + global)** — a changed row shows a hover **↺** (`.options-readfirst-revert`) that
289
- restores that field to its loaded value (`originalValue`); **Revert all changes** in the Fields menu
290
- (disabled when unchanged) restores the whole form (`handleRevertChangesClick`). Distinct from
291
- **Default fields** (schema defaults + drop added optionals).
292
- - **Show field types** — a Fields-menu toggle (reuses the existing `showFieldTypes` state /
293
- `handleShowFieldTypesClick`); when on, each row is annotated with `<type>` (e.g. `<string>`, `<list>`).
294
- - Test: **`CompactRevertAndShowTypes`** (edit → per-field revert restores; toggle show-types → `<string>`
295
- appears; edit again → Revert-all restores). **34/35 `test-storybook`** (the 1 failure is the pre-existing
296
- `OnValidityChange` flake; all 10 compact stories pass). `precheck` green (jest 182/182).
297
-
298
- ### Coverage parity (a) + house style (c) — DONE (v7)
299
-
300
- - **(c) House style** — refactored all 6 existing compact play tests + the `clickFieldsMenuItem` helper to
301
- foxhoundn's shared `_tests*` helpers (`_testsWaitForText`, `_testsWaitForTextToNotExist`, `_testsClickText`,
302
- `_testsClickButton`, `_testsChangeStringField`, `_testsWaitForInputValue`, `_testsWaitForTextsCount`).
303
- `waitFor`/helpers are the gate; `sleep` only as a settle (the convention).
304
- - **(a) Parity stories** — added compact stories mirroring the classic matrix: **`CompactFieldTypes`**
305
- (string/richtext/number/bool/list/hash/rgbcolor read-display + expand-to-edit), **`CompactRequiredGroups`**
306
- (`required_groups` one-of), **`CompactAnyType`** (`any` type), **`CompactReadonlyDefaultFix`** (schema
307
- `readonly` value≠default → fixed), **`CompactNonExistentFiltered`** (off-schema values dropped),
308
- **`CompactHelpDialog`** (new help affordance — a `?` on rows with a long `desc`, opens `OptionsHelpDialog`),
309
- **`CompactDoesNotCauseInfiniteRerenders`** (render stability). Small feature added: per-row help icon
310
- (`.options-readfirst-help`).
311
- - **17 compact stories**, `precheck` green (**jest 182/182**), **40/41 `test-storybook`** (the 1 failure is
312
- the pre-existing `OnValidityChange` flake).
313
- - **Minor residual gaps (covered at engine level by classic, not separately re-tested in compact):** the
314
- invalid-only filter toggle (`showInvalidOptionsOnly`) and the allowed-values+template warning — both reuse
315
- the same engine state/`renderOption` the classic stories exercise.
316
- - **(d) real-server verification** remains Phase 2/3 (needs the IDE + a live Qorus) — out of scope for this
317
- worktree.
318
-
319
- ### Pre-existing `OnValidityChange` flake — FIXED (v8)
320
-
321
- The long-standing intermittent failure (`OnValidityChange › play-test`, "Unable to fire a 'change' event —
322
- please provide a DOM element") was a foxhoundn test querying `.system-option .reqore-textarea` **unguarded**
323
- before the editor had mounted. Fixed by switching to `_testsChangeStringField` (waits for the element, then
324
- fires) and dropping the fixed `sleep`. **The whole `FormEngine` `test-storybook` suite is now 41/41 green —
325
- no remaining failures.** (This is the one foxhoundn-owned test I touched; it's a flake fix following the
326
- house wait convention, not a behaviour change.)
327
-
328
- **⚠️ Pre-existing unrelated failure:** `FormEngine.stories.tsx › OnValidityChange › play-test` fails in
329
- `test-storybook` — it queries `.system-option .reqore-textarea` with **no `waitFor`** (a mount race).
330
- **Proven pre-existing on bare `develop`** (fails identically with all Phase-1 code reverted; passes on the
331
- older `feature/dpql-editor` checkout). Out of scope for this task; candidate for a separate one-line
332
- `waitFor` fix.
333
-
334
- **Run it:** worktree Storybook is on **http://localhost:6009** →
335
- `/?path=/story/form-engine-formengine--compact` (and `--compact-read-only`, `--compact-empty`).
336
-
337
- ### Phase 2 — Parity spike on the workflow/step creator (qorus-ide)
338
- - [ ] **2.1** Confirm `creator-get-fields-as-options` returns a workflow/step schema that the options
339
- renderer handles end-to-end (mount, edit, submit) — compare field-for-field against today's
340
- `creator-get-fields` (`IField[]`) output.
341
- - [ ] **2.2** Enumerate IField-path machinery that must survive the swap and verify each has an options
342
- equivalent: **class connections / `resetClassConnections`**, the **"Edit code" handoff**, **drafts**,
343
- **`reference` (iface-kind links)**, **`on_change` actions**, `get_message`/`return_message`
344
- (already in `FieldInfo`), required/preselected semantics, removal-with-confirm.
345
- - [ ] **2.3** Confirm whether the IDE consumes the **upstream** `FormEngine` from `reqraft` directly
346
- anywhere today (the `systemOptions.tsx:490` comment hints yes). Decide Phase-3 render path:
347
- upstream `FormEngine` vs. local `<Options>` (see §9a).
348
- - [ ] **2.4** Capture every gap as a small, scoped follow-up (engine prop or schema field) — **not** a
349
- blocker. Update this plan with the gap list before starting Phase 3.
350
-
351
- ### Phase 3 — Swap workflow/step to options + `FormEngine`; retire the detour (qorus-ide)
352
- - [ ] **3.1** Bump `@qoretechnologies/reqraft` in `qorus-ide` to the release containing Phase 1 (see §7).
353
- - [ ] **3.2** Route the workflow/step creator through `useInterfaceFields` + `FormEngine` `compact`, with a
354
- thin IDE wrapper supplying hero copy + chips + group labels (descriptor-style, per `RESTYLED_CREATOR`).
355
- - [ ] **3.3** Verify parity from Phase 2 holds in the real creator (drafts, code editor, class connections,
356
- submit) via the existing full-creator stories (`Step.stories.tsx`, `Workflow.stories.tsx`).
357
- - [ ] **3.4** Delete `RestyledFields`, its descriptors, and the IField read-first scaffolding **only after**
358
- parity is proven. Confirm no other consumer via grep (`SHARED_COMPONENTS.md` Rule 3).
359
- - [ ] **3.5** Update docs + `AI-DOCS`: rewrite `RESTYLED_CREATOR.md` (or fold into `SYSTEM_OPTIONS.md`) to
360
- describe compact mode as a `FormEngine` capability; update the `RestyledFields` entry in
361
- `SHARED_COMPONENTS.md`; refresh affected `AI-DOCS` blocks and run `yarn ai-docs:build`.
362
- - [ ] **3.6** `yarn precheck` + Storybook test-runner green in `qorus-ide`.
363
-
364
- ### Phase 4 — `group` completeness (qorus server, incremental, non-blocking)
365
- - [ ] **4.1** GitHub issue first (per `qorus-ide/CLAUDE.md` server workflow) → branch off latest `develop`
366
- → set `group` on every workflow/step `FieldInfo` so the FE grouping fallback can be removed.
367
- Tracks qorus issue #259. Can land anytime after Phase 3.
368
-
369
- ### Phase 5 — DPQL expression render for options (toolkit-react) — **GATED on `feature/dpql-editor` merge**
370
- > Not part of the compact migration; a separate form-engine capability. **Does not block** Phases 0–3 (the
371
- > compact work is orthogonal to `feature/dpql-editor` — verified: that branch touches no form-engine file).
372
- > The compact layout **inherits this for free** once it lands, because it reuses `renderOption`/`TemplateField`.
373
-
374
- - [ ] **5.0 Prereq** — `feature/dpql-editor` is merged to `develop` (and reqraft re-released) so `DpqlEditor`
375
- (`src/components/dpqlEditor/`) is available. Until then this phase is blocked. *(Branch state at time of
376
- writing: 29 commits ahead of `origin/develop`, local/unpushed, reqraft 0.10.0 local build.)*
377
- - [ ] **5.1** Add an **expression render path** to the field renderer: when a field has
378
- `supports_expressions` (and/or `default_view: 'expression'`), render `<DpqlEditor>` (with a toggle
379
- between literal/template/expression) instead of the plain field. Hook it in at
380
- `TemplateField` / `FormField` (`src/components/form/fields/`) so **both** classic and compact get it —
381
- compact must change **nothing** (it calls the same `renderOption`).
382
- - [ ] **5.2** Wire the schema's expression context through to `DpqlEditor` (`expressions`,
383
- `expressions_url`, `server_expression_handling`, provider/record context); persist the value as the
384
- `IQorusExpression` AST (`{ exp, args, type, is_expression }`) — `FormEngine` already tracks the
385
- `is_expression` flag in `fixOptions`/`handleValueChange`.
386
- - [ ] **5.3** Improve the **compact read row** for expression values: show a short rendering of the
387
- expression (e.g. the DPQL text) instead of the generic "Expression" placeholder
388
- (`formatOptionValue` in `readFirst.ts`).
389
- - [ ] **5.4** Stories + `play` tests: an options schema with a `supports_expressions` field — author an
390
- expression via the DPQL editor, assert the persisted `is_expression` value; one **compact** variant to
391
- prove the read-first row + expand-to-edit works with expressions.
392
- - [ ] **5.5** Docs: extend `design/FORM_ENGINE_COMPACT.md` (and the engine's expression docs) to cover the
393
- expression/DPQL render.
394
-
395
- ---
396
-
397
- ## 7. Cross-repo sequencing & release
398
-
399
- - Phase 1 lands in **`toolkit-react`** (published as `@qoretechnologies/reqraft`). The IDE can't consume it
400
- until it's **released and the version is bumped** in `qorus-ide/package.json` (currently `reqraft ^0.8.11`).
401
- - Therefore Phases 2 (parity spike) can run **in parallel** with Phase 1, but Phase 3 (the swap) is gated on
402
- the reqraft release. Sequence: **1 + 2 in parallel → release/bump → 3 → 4 (anytime)**.
403
- - We do **not** publish; the maintainer handles the reqraft release. We prepare the change and wait.
404
-
405
- ---
406
-
407
- ## 8. Testing & verification strategy
408
-
409
- **toolkit-react (Phase 1)**
410
- - **Stories + `play`** in `FormEngine.stories.tsx` (`@storybook/test`: `expect/within/waitFor/userEvent/fireEvent/fn`), reusing `src/stories/Tests/utils`. Selectors follow the existing `.reqore-collection-item.system-option` convention.
411
- - **jest** (`yarn test`) for any pure helpers (e.g. value-formatting) extracted.
412
- - **`yarn precheck`** (= `lint` + `test` + `build:test:prod`) must pass; **`yarn test-storybook`** against a running Storybook (port 6008). Chromatic visual review is maintainer/CI-run — flag diffs.
413
- - Tests assert **real** behaviour (read-first → click → edit → onChange → collapse); removing the read-first code must break them.
414
-
415
- **qorus-ide (Phases 2–3)**
416
- - Extend the existing creator stories (`Step.stories.tsx`, `Workflow.stories.tsx`) to drive the
417
- options-backed compact creator (read-first rows, edit, submit, drafts, code editor).
418
- - `yarn precheck`; Storybook test-runner; `yarn ai-docs:check` clean after doc regen.
419
-
420
- **qorus server (Phase 4)**
421
- - Extend the relevant `.qtest` (HTTP-driven only — no qorus-core linking), per `qorus-ide/CLAUDE.md`.
422
-
423
- ---
424
-
425
- ## 9. Open questions / risks
426
-
427
- - **9a. `<Options>` vs upstream `FormEngine` convergence.** The IDE renders most options through its local
428
- `systemOptions.tsx` fork, not upstream `FormEngine`. Phase 1 correctly builds `compact` upstream; Phase 3
429
- must decide whether workflow/step render via **upstream `FormEngine`** (preferred — the actual goal) or the
430
- local fork (which would then also need `compact`). Fully converging the two engines is **out of scope** —
431
- track separately. Decided in Task 2.3.
432
- - **9b. Grouping primitive — the one place Phase 1 could exceed reqraft.** `ReqoreCollection` already exposes
433
- item `groups?: string[]` + collection `sortByGroupFirst?: boolean` (confirmed in the installed
434
- `@qoretechnologies/reqore` dist types). Task 1.1 must confirm whether that renders **labeled group
435
- sections/headers** (what read-first needs) or merely sorts grouped items together. Preferred outcome: keep
436
- Phase 1 **100% in reqraft** by reusing those props or composing per-group Reqore panels inside `FormEngine`.
437
- Only if a genuine new capability is required does a change land in the **separate `reqore` repo** (checked
438
- out locally at `/Users/nick/Projects/qorus-frontend/reqore`) — an upstream contribution per
439
- `REQORE_REQRAFT.md`, with its own release. That would be the *only* cross-repo spill in Phase 1.
440
- - **9c. Parity surface.** Class connections, "Edit code" handoff, drafts, `reference` links (Task 2.2) are the
441
- riskiest items — they're workflow/step-specific and not exercised by the modern options surfaces. Treat any
442
- gap as a scoped follow-up, never a silent shortcut.
443
- - **9d. `compact` naming.** Extend `compact` to mean read-first, or split `readFirst`/`mode` from a
444
- density-only `compact`? Default: extend `compact` (matches the user's framing). Confirm before 1.2.
445
- - **9e. `group` coverage.** Until Phase 4, some fields lack `group`; the engine needs the same sensible
446
- fallback `RestyledFields` uses (required/preselected → "General", else "Optional fields").
447
-
448
- ---
449
-
450
- ## 10. Definition of done
451
-
452
- - `FormEngine` `compact` mode renders the read-first look from an options schema, with stories + passing
453
- `play`/jest tests and green `precheck` + Storybook test-runner (toolkit-react).
454
- - Workflow/step creator renders via options + `FormEngine` `compact`, at parity with today (drafts, code
455
- editor, class connections, submit), with a thin IDE wrapper for hero/chips.
456
- - `RestyledFields` and the IField read-first scaffolding are removed; no dead code, no duplicated logic.
457
- - Docs + `AI-DOCS` updated across both FE repos; `ai-docs:check` clean.
458
- - (Incremental) server `group` completeness issue filed/landed.
459
- - Nothing committed or pushed without explicit user approval.
460
-
461
- ---
462
-
463
- ## 11. Key file map (reference)
464
-
465
- **toolkit-react** — `src/components/form/engine/FormEngine.tsx` (engine; `compact` at :296/:316/1029–1036;
466
- item `content` at :1218–1239), `…/FormEngine.stories.tsx`, `src/components/form/fields/template/TemplateField.tsx`,
467
- `src/components/FocusedEditing.tsx`, `src/stories/Tests/utils`, `design/` (new compact doc).
468
-
469
- **qorus-ide** — `src/components/Field/systemOptions.tsx` (`<Options>` twin), `src/hooks/useInterfaceFields.tsx`
470
- + `useInterfaceEditor.tsx`, `src/containers/InterfaceCreator/panel.tsx`, `…/workflowsView.tsx`,
471
- `…/restyled/RestyledFields.tsx` + `descriptors.ts`, `src/components/FieldWrapper/index.tsx` (`IField`,
472
- `IRestyledDescriptor`), `design/{RESTYLED_CREATOR,SYSTEM_OPTIONS,connection-options-api,REQORE_REQRAFT,SHARED_COMPONENTS}.md`.
473
-
474
- **qorus (server)** — `Classes/QorusMapManager.qc` (`FieldInfo`/`MetaFieldInfo`, `group`,
475
- `getUiFields`/`convertDataToUiOptionsFormat`), `Classes/{WorkflowMetadata,StepMetadata}.qc`,
476
- `Classes/QorusCreatorWebSocketHandler.qc` (`creator-get-fields-as-options`), `design/connection-options-api`-equivalent
477
- flow, qorus issue #259.
478
-
479
- ---
480
-
481
- ## Info-display variant evaluation (archived 2026-06-11)
482
-
483
- This is the pre-decision analysis that drove the info-display pick. `stripe-expand`
484
- (variant C below) was chosen; the other three and the temporary `compactInfoDisplay`
485
- prop were deleted. Kept here as the decision record (moved out of
486
- design/COMPACT_INFO_DISPLAY.md, which now documents only the shipped display).
487
-
488
- ## 5. Proposed variants (to build behind `compactInfoDisplay` after sign-off)
489
-
490
- All variants keep: `?` → dialog for Tier 3, tap (not hover) for any popover, and the existing
491
- `Required` tag. They differ in how Tier 1 + Tier 2 render.
492
-
493
- ### A — `subtitle-inline` (product-convention baseline)
494
- - `short_desc` = muted line under the label (the RestyledFields pattern; truncated to 1 line,
495
- tap label area to un-truncate).
496
- - Tier-1 messages = slim `ReqoreMessage` strips **always visible** directly under the row.
497
- - Tier-2 messages/info = collapsed behind a small count badge on the row (`2 ⓘ`, tap-popover).
498
- - Cost: +1 text line per described field, +1 strip per critical message. Most literal, most
499
- vertical growth.
500
-
501
- ### B — `icon-cluster` (minimal rows)
502
- - Rows stay one line. Right-side cluster: ⓘ (tap-popover with short_desc + default note) and an
503
- intent-coloured badge with count for messages (tap-popover with the full strips).
504
- - Cheapest vertically; **known risk:** fails criterion 4 for Tier 1 (badge-only critical info,
505
- flagged by research as easy to miss) unless paired with row tinting — kept as the
506
- control/contrast variant.
507
-
508
- ### C — `stripe-expand` (severity edge + disclosure)
509
- - 2–3 px **intent stripe** on the row's left edge (worst intent wins) — zero vertical cost,
510
- glanceable severity; danger/warning also tint the row background slightly.
511
- - An info affordance expands an in-row details area (`ReqraftCollapsibleContent`) holding
512
- short_desc, messages, default note; **auto-expanded when Tier 1 exists**.
513
- - Middle ground: quiet until something matters, one tap for everything else.
514
-
515
- ### D — `adaptive` (tier-driven hybrid — expected recommendation)
516
- - Tier 1 → always-visible slim strips under the row (as A) **plus** the intent stripe (as C).
517
- - `short_desc` → muted subtitle line, only when present (as A).
518
- - Tier 2 → count badge + tap-popover (as B).
519
- - Narrow viewports: subtitle wraps, strips go full-width, badges grow to 40 px touch targets.
520
- - Combines what each tier actually needs; slightly more rules to implement.
521
-
522
- ## 6. Story / comparison plan
523
-
524
- - Temporary prop `compactInfoDisplay: 'subtitle-inline' | 'icon-cluster' | 'stripe-expand' | 'adaptive'`
525
- on `FormEngine` (default = current behaviour until the pick).
526
- - One story per variant on the **Basic fixture** + story-level additions to stress the tiers: a
527
- field with two messages (warning + info), a long `short_desc`, a markdown `desc`, an unmet
528
- dependency, and a required-group pair.
529
- - Each variant also rendered in a **narrow-viewport story** (mobile is pass/fail, not a follow-up).
530
- - After the pick: losing branches and the prop are deleted (single renderer, like the hash view).
531
-
532
- ## 6b. Variant comparison at a glance
533
-
534
- | | A · Subtitle Inline | B · Icon Cluster | C · Stripe Expand | D · Adaptive |
535
- |---|---|---|---|---|
536
- | **short_desc** | muted subtitle under the label (truncated, tap to expand) | inside the badge tap-popover | inside the expandable panel | subtitle under the label (as A) |
537
- | **Tier 1 (danger/warning, deps)** | strips always visible under the row | behind the intent-coloured count badge (tap) | intent edge-stripe + panel **auto-opens** | strips always visible **+** edge-stripe |
538
- | **Tier 2 (info/success, default notes)** | `ⓘ n` badge → tap-popover | same badge as Tier 1 | inside the panel (after Tier 1) | `ⓘ n` badge → tap-popover |
539
- | **Row height (nothing to say)** | 1 line | 1 line | 1 line | 1 line |
540
- | **Row height (described field)** | 2 lines (subtitle) | 1 line | 1 line (+stripe) | 2 lines |
541
- | **Vertical cost of a warning** | +1 strip | none (hidden) | +panel (auto-open) | +1 strip |
542
- | **Taps to read critical info** | **0** | **1** ⚠ fails criterion 4 | **0** (auto-open) | **0** |
543
- | **Taps to read short_desc** | 0 (truncated) / 1 (full) | 1 | 1 | 0 / 1 |
544
- | **Crowding risk** | highest (every described row grows; strips stack) | lowest | medium (auto-open panels can stack) | medium-high |
545
- | **Mobile (360 px)** | strips go full-width, wrap | cleanest fit | stripes + panels fit | as A + stripes |
546
- | **Story** | `SubtitleInline` (+`MobileSubtitleInline`) | `IconCluster` (+`MobileIconCluster`) | `StripeExpand` (+`MobileStripeExpand`) | `Adaptive` (+`MobileAdaptive`) |
547
-
548
- All variants share: tap (never hover) for popovers, the `?` → markdown dialog for Tier 3, the
549
- `Required` tag, field chrome (icon/image/intent), and the height-stable inline editing (the
550
- editing row pins to the read row's measured height).
551
-
552
- ## 7. Decision checklist for the review
553
-
554
- - [ ] Tier classification agreed (esp.: are info/success messages allowed to hide behind a badge?)
555
- - [ ] Variant picked (or hybrid adjustments)
556
- - [ ] short_desc truncation rule (1 line + tap vs always wrap)
557
- - [ ] Does the picked variant change the **editor card/inline editor** too, or read rows only?
558
- - [ ] Mobile behaviour approved on the narrow-viewport stories