@qoretechnologies/reqraft 0.10.65 → 0.10.66-pr.137.ga1983bf

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 (873) hide show
  1. package/README.md +53 -1
  2. package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
  3. package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
  4. package/dist/components/Description/AllowedValuesHelp.js +86 -0
  5. package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
  6. package/dist/components/Description/describedControl.d.ts +54 -0
  7. package/dist/components/Description/describedControl.d.ts.map +1 -0
  8. package/dist/components/Description/describedControl.js +81 -0
  9. package/dist/components/Description/describedControl.js.map +1 -0
  10. package/dist/components/Description/index.d.ts.map +1 -1
  11. package/dist/components/Description/index.js +3 -2
  12. package/dist/components/Description/index.js.map +1 -1
  13. package/dist/components/colorValue/colorValue.d.ts +59 -0
  14. package/dist/components/colorValue/colorValue.d.ts.map +1 -0
  15. package/dist/components/colorValue/colorValue.js +245 -0
  16. package/dist/components/colorValue/colorValue.js.map +1 -0
  17. package/dist/components/colorValue/index.d.ts +34 -0
  18. package/dist/components/colorValue/index.d.ts.map +1 -0
  19. package/dist/components/colorValue/index.js +136 -0
  20. package/dist/components/colorValue/index.js.map +1 -0
  21. package/dist/components/colorValue/labels.d.ts +12 -0
  22. package/dist/components/colorValue/labels.d.ts.map +1 -0
  23. package/dist/components/colorValue/labels.js +11 -0
  24. package/dist/components/colorValue/labels.js.map +1 -0
  25. package/dist/components/composer/Composer.d.ts +1 -1
  26. package/dist/components/composer/Composer.d.ts.map +1 -1
  27. package/dist/components/composer/Composer.js +2 -2
  28. package/dist/components/composer/Composer.js.map +1 -1
  29. package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
  30. package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
  31. package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
  32. package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
  33. package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
  34. package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
  35. package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
  36. package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
  37. package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
  38. package/dist/components/dpqlEditor/dpqlHelpers.js +413 -63
  39. package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
  40. package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
  41. package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
  42. package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
  43. package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
  44. package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
  45. package/dist/components/dpqlEditor/dpqlTags.js +44 -17
  46. package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
  47. package/dist/components/dpqlEditor/types.d.ts +94 -8
  48. package/dist/components/dpqlEditor/types.d.ts.map +1 -1
  49. package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
  50. package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
  51. package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
  52. package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
  53. package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
  54. package/dist/components/form/engine/CompactRow.js +322 -124
  55. package/dist/components/form/engine/CompactRow.js.map +1 -1
  56. package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
  57. package/dist/components/form/engine/CompactToolbar.js +29 -3
  58. package/dist/components/form/engine/CompactToolbar.js.map +1 -1
  59. package/dist/components/form/engine/FormEngine.d.ts +66 -11
  60. package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
  61. package/dist/components/form/engine/FormEngine.js +570 -176
  62. package/dist/components/form/engine/FormEngine.js.map +1 -1
  63. package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
  64. package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
  65. package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
  66. package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
  67. package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
  68. package/dist/components/form/engine/OptionFieldMessages.js +25 -3
  69. package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
  70. package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
  71. package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
  72. package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
  73. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
  74. package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
  75. package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
  76. package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
  77. package/dist/components/form/engine/compactRowContext.d.ts +30 -1
  78. package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
  79. package/dist/components/form/engine/compactRowContext.js.map +1 -1
  80. package/dist/components/form/engine/compactRowStyles.d.ts +59 -22
  81. package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
  82. package/dist/components/form/engine/compactRowStyles.js +102 -55
  83. package/dist/components/form/engine/compactRowStyles.js.map +1 -1
  84. package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
  85. package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
  86. package/dist/components/form/engine/compactToolbarColors.js +21 -0
  87. package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
  88. package/dist/components/form/engine/inheritProps.d.ts +29 -0
  89. package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
  90. package/dist/components/form/engine/inheritProps.js +43 -0
  91. package/dist/components/form/engine/inheritProps.js.map +1 -0
  92. package/dist/components/form/engine/operatorSummary.d.ts +26 -0
  93. package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
  94. package/dist/components/form/engine/operatorSummary.js +35 -0
  95. package/dist/components/form/engine/operatorSummary.js.map +1 -0
  96. package/dist/components/form/engine/readFirst.d.ts +24 -8
  97. package/dist/components/form/engine/readFirst.d.ts.map +1 -1
  98. package/dist/components/form/engine/readFirst.js +77 -109
  99. package/dist/components/form/engine/readFirst.js.map +1 -1
  100. package/dist/components/form/engine/readFirstColors.d.ts +30 -0
  101. package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
  102. package/dist/components/form/engine/readFirstColors.js +51 -0
  103. package/dist/components/form/engine/readFirstColors.js.map +1 -0
  104. package/dist/components/form/engine/rowFocus.d.ts +2 -0
  105. package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
  106. package/dist/components/form/engine/rowFocus.js +26 -3
  107. package/dist/components/form/engine/rowFocus.js.map +1 -1
  108. package/dist/components/form/engine/typeChoices.d.ts +1 -1
  109. package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
  110. package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
  111. package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
  112. package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
  113. package/dist/components/form/engine/variants/VariantCards.js +2 -1
  114. package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
  115. package/dist/components/form/engine/variants/VariantFocus.js +1 -1
  116. package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
  117. package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
  118. package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
  119. package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
  120. package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
  121. package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
  122. package/dist/components/form/engine/variants/variantParts.js +25 -17
  123. package/dist/components/form/engine/variants/variantParts.js.map +1 -1
  124. package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
  125. package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
  126. package/dist/components/form/expressions/DpqlRendering.js +7 -6
  127. package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
  128. package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
  129. package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
  130. package/dist/components/form/expressions/ExpressionField.js +536 -114
  131. package/dist/components/form/expressions/ExpressionField.js.map +1 -1
  132. package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
  133. package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
  134. package/dist/components/form/expressions/argumentPresence.js +16 -1
  135. package/dist/components/form/expressions/argumentPresence.js.map +1 -1
  136. package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
  137. package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
  138. package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
  139. package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
  140. package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
  141. package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
  142. package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
  143. package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
  144. package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
  145. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
  146. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
  147. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
  148. package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
  149. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
  150. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
  151. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
  152. package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
  153. package/dist/components/form/expressions/builder/index.d.ts +34 -2
  154. package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
  155. package/dist/components/form/expressions/builder/index.js +170 -80
  156. package/dist/components/form/expressions/builder/index.js.map +1 -1
  157. package/dist/components/form/expressions/builder/item.d.ts +6 -2
  158. package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
  159. package/dist/components/form/expressions/builder/item.js +19 -5
  160. package/dist/components/form/expressions/builder/item.js.map +1 -1
  161. package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
  162. package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
  163. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
  164. package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
  165. package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
  166. package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
  167. package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
  168. package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
  169. package/dist/components/form/expressions/expressionOperands.js +97 -0
  170. package/dist/components/form/expressions/expressionOperands.js.map +1 -0
  171. package/dist/components/form/expressions/fieldPath.d.ts +24 -0
  172. package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
  173. package/dist/components/form/expressions/fieldPath.js +152 -0
  174. package/dist/components/form/expressions/fieldPath.js.map +1 -0
  175. package/dist/components/form/expressions/loneValue.d.ts +17 -0
  176. package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
  177. package/dist/components/form/expressions/loneValue.js +33 -0
  178. package/dist/components/form/expressions/loneValue.js.map +1 -0
  179. package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
  180. package/dist/components/form/expressions/mockExpressions.js +22 -5
  181. package/dist/components/form/expressions/mockExpressions.js.map +1 -1
  182. package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
  183. package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
  184. package/dist/components/form/expressions/renderExpressionToText.js +43 -10
  185. package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
  186. package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
  187. package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
  188. package/dist/components/form/expressions/textOfExpression.js +49 -0
  189. package/dist/components/form/expressions/textOfExpression.js.map +1 -0
  190. package/dist/components/form/expressions/types.d.ts +12 -0
  191. package/dist/components/form/expressions/types.d.ts.map +1 -1
  192. package/dist/components/form/expressions/types.js +6 -1
  193. package/dist/components/form/expressions/types.js.map +1 -1
  194. package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
  195. package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
  196. package/dist/components/form/expressions/useExpressionType.js +181 -0
  197. package/dist/components/form/expressions/useExpressionType.js.map +1 -0
  198. package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
  199. package/dist/components/form/expressions/useRenderExpression.js +13 -9
  200. package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
  201. package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
  202. package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
  203. package/dist/components/form/expressions/wildcardExpressions.js +101 -0
  204. package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
  205. package/dist/components/form/fields/Field.d.ts.map +1 -1
  206. package/dist/components/form/fields/Field.js +43 -20
  207. package/dist/components/form/fields/Field.js.map +1 -1
  208. package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
  209. package/dist/components/form/fields/allowed-values/AllowedValues.js +39 -6
  210. package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
  211. package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
  212. package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
  213. package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
  214. package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
  215. package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
  216. package/dist/components/form/fields/array/ArrayAuto.js +24 -0
  217. package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
  218. package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
  219. package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
  220. package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
  221. package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
  222. package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
  223. package/dist/components/form/fields/auto/AutoFormField.js +119 -62
  224. package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
  225. package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
  226. package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
  227. package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
  228. package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
  229. package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
  230. package/dist/components/form/fields/binary/Binary.js +23 -3
  231. package/dist/components/form/fields/binary/Binary.js.map +1 -1
  232. package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
  233. package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
  234. package/dist/components/form/fields/boolean/Boolean.js +9 -1
  235. package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
  236. package/dist/components/form/fields/color/Color.d.ts +103 -16
  237. package/dist/components/form/fields/color/Color.d.ts.map +1 -1
  238. package/dist/components/form/fields/color/Color.js +616 -16
  239. package/dist/components/form/fields/color/Color.js.map +1 -1
  240. package/dist/components/form/fields/emittedValues.d.ts +34 -3
  241. package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
  242. package/dist/components/form/fields/emittedValues.js +24 -1
  243. package/dist/components/form/fields/emittedValues.js.map +1 -1
  244. package/dist/components/form/fields/file/File.d.ts +1 -1
  245. package/dist/components/form/fields/file/File.d.ts.map +1 -1
  246. package/dist/components/form/fields/file/File.js +4 -2
  247. package/dist/components/form/fields/file/File.js.map +1 -1
  248. package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
  249. package/dist/components/form/fields/long-string/LongString.js +29 -8
  250. package/dist/components/form/fields/long-string/LongString.js.map +1 -1
  251. package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
  252. package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
  253. package/dist/components/form/fields/multi-select/MultiSelectFormField.js +13 -9
  254. package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
  255. package/dist/components/form/fields/number/Number.d.ts +6 -0
  256. package/dist/components/form/fields/number/Number.d.ts.map +1 -1
  257. package/dist/components/form/fields/number/Number.js +41 -6
  258. package/dist/components/form/fields/number/Number.js.map +1 -1
  259. package/dist/components/form/fields/object/Object.d.ts +1 -1
  260. package/dist/components/form/fields/object/Object.d.ts.map +1 -1
  261. package/dist/components/form/fields/object/Object.js +4 -2
  262. package/dist/components/form/fields/object/Object.js.map +1 -1
  263. package/dist/components/form/fields/pendingEdit.d.ts +52 -0
  264. package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
  265. package/dist/components/form/fields/pendingEdit.js +79 -0
  266. package/dist/components/form/fields/pendingEdit.js.map +1 -0
  267. package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
  268. package/dist/components/form/fields/radio-group/RadioGroup.js +4 -3
  269. package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
  270. package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
  271. package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
  272. package/dist/components/form/fields/rich-text/RichText.js +382 -91
  273. package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
  274. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
  275. package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
  276. package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
  277. package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
  278. package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
  279. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
  280. package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
  281. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
  282. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
  283. package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
  284. package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
  285. package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
  286. package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
  287. package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
  288. package/dist/components/form/fields/schema-definition/index.js +8 -4
  289. package/dist/components/form/fields/schema-definition/index.js.map +1 -1
  290. package/dist/components/form/fields/select/Select.d.ts +10 -1
  291. package/dist/components/form/fields/select/Select.d.ts.map +1 -1
  292. package/dist/components/form/fields/select/Select.js +28 -14
  293. package/dist/components/form/fields/select/Select.js.map +1 -1
  294. package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
  295. package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
  296. package/dist/components/form/fields/select/SelectCollection.js +25 -12
  297. package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
  298. package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
  299. package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
  300. package/dist/components/form/fields/select/unavailableRow.js +55 -0
  301. package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
  302. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
  303. package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
  304. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
  305. package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
  306. package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
  307. package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
  308. package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
  309. package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
  310. package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
  311. package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
  312. package/dist/components/form/fields/template/TemplateField.js +678 -107
  313. package/dist/components/form/fields/template/TemplateField.js.map +1 -1
  314. package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
  315. package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
  316. package/dist/components/form/fields/template/TemplatePicker.js +451 -0
  317. package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
  318. package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
  319. package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
  320. package/dist/components/form/fields/template/TemplateText.js +22 -16
  321. package/dist/components/form/fields/template/TemplateText.js.map +1 -1
  322. package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
  323. package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
  324. package/dist/components/form/fields/template/referenceNames.js +69 -0
  325. package/dist/components/form/fields/template/referenceNames.js.map +1 -0
  326. package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
  327. package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
  328. package/dist/components/form/fields/template/writtenAsText.js +204 -0
  329. package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
  330. package/dist/components/form/index.d.ts +12 -0
  331. package/dist/components/form/index.d.ts.map +1 -1
  332. package/dist/components/form/index.js +25 -1
  333. package/dist/components/form/index.js.map +1 -1
  334. package/dist/components/form/typeSentenceForm.d.ts +17 -0
  335. package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
  336. package/dist/components/form/typeSentenceForm.js +54 -0
  337. package/dist/components/form/typeSentenceForm.js.map +1 -0
  338. package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
  339. package/dist/components/imageLightbox/ImageLightbox.js +19 -7
  340. package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
  341. package/dist/components/log/Log.d.ts.map +1 -1
  342. package/dist/components/log/Log.js +20 -8
  343. package/dist/components/log/Log.js.map +1 -1
  344. package/dist/components/menu/Menu.d.ts.map +1 -1
  345. package/dist/components/menu/Menu.js +19 -10
  346. package/dist/components/menu/Menu.js.map +1 -1
  347. package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
  348. package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
  349. package/dist/components/smartEditor/CompletionMenu.js +302 -0
  350. package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
  351. package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
  352. package/dist/components/smartEditor/MarkdownDoc.js +3 -3
  353. package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
  354. package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
  355. package/dist/components/smartEditor/SmartEditor.js +584 -190
  356. package/dist/components/smartEditor/SmartEditor.js.map +1 -1
  357. package/dist/components/smartEditor/completionStyle.d.ts +28 -0
  358. package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
  359. package/dist/components/smartEditor/completionStyle.js +79 -0
  360. package/dist/components/smartEditor/completionStyle.js.map +1 -0
  361. package/dist/components/smartEditor/contextTitle.d.ts +10 -0
  362. package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
  363. package/dist/components/smartEditor/contextTitle.js +21 -0
  364. package/dist/components/smartEditor/contextTitle.js.map +1 -0
  365. package/dist/components/smartEditor/editingAids.d.ts +64 -0
  366. package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
  367. package/dist/components/smartEditor/editingAids.js +213 -0
  368. package/dist/components/smartEditor/editingAids.js.map +1 -0
  369. package/dist/components/smartEditor/index.d.ts +6 -1
  370. package/dist/components/smartEditor/index.d.ts.map +1 -1
  371. package/dist/components/smartEditor/index.js +19 -1
  372. package/dist/components/smartEditor/index.js.map +1 -1
  373. package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
  374. package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
  375. package/dist/components/smartEditor/templateCompletions.js +380 -0
  376. package/dist/components/smartEditor/templateCompletions.js.map +1 -0
  377. package/dist/components/smartEditor/typedReferences.d.ts +34 -0
  378. package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
  379. package/dist/components/smartEditor/typedReferences.js +179 -0
  380. package/dist/components/smartEditor/typedReferences.js.map +1 -0
  381. package/dist/components/smartEditor/types.d.ts +116 -2
  382. package/dist/components/smartEditor/types.d.ts.map +1 -1
  383. package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
  384. package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
  385. package/dist/components/smartEditor/useEditingAids.js +336 -0
  386. package/dist/components/smartEditor/useEditingAids.js.map +1 -0
  387. package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
  388. package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
  389. package/dist/components/smartEditor/useLspAutocomplete.js +562 -151
  390. package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
  391. package/dist/components/smartEditor/useLspHover.d.ts +33 -7
  392. package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
  393. package/dist/components/smartEditor/useLspHover.js +364 -35
  394. package/dist/components/smartEditor/useLspHover.js.map +1 -1
  395. package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
  396. package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
  397. package/dist/components/smartEditor/useLspSession.d.ts +6 -0
  398. package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
  399. package/dist/components/smartEditor/useLspSession.js +7 -6
  400. package/dist/components/smartEditor/useLspSession.js.map +1 -1
  401. package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
  402. package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
  403. package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
  404. package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
  405. package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
  406. package/dist/components/smartEditor/useTabCameIn.js +42 -0
  407. package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
  408. package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
  409. package/dist/components/supportTicket/AttachmentChips.js +15 -5
  410. package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
  411. package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
  412. package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
  413. package/dist/components/supportTicket/ReferencePicker.js +27 -6
  414. package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
  415. package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
  416. package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
  417. package/dist/components/supportTicket/TicketHeader.js +20 -2
  418. package/dist/components/supportTicket/TicketHeader.js.map +1 -1
  419. package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
  420. package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
  421. package/dist/components/ticketReferences/TicketReferences.js +9 -4
  422. package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
  423. package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
  424. package/dist/components/ticketThread/TicketThread.js +38 -13
  425. package/dist/components/ticketThread/TicketThread.js.map +1 -1
  426. package/dist/helpers/allowedValues.d.ts +21 -0
  427. package/dist/helpers/allowedValues.d.ts.map +1 -1
  428. package/dist/helpers/allowedValues.js +40 -1
  429. package/dist/helpers/allowedValues.js.map +1 -1
  430. package/dist/helpers/descriptionTooltip.d.ts +46 -0
  431. package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
  432. package/dist/helpers/descriptionTooltip.js +76 -0
  433. package/dist/helpers/descriptionTooltip.js.map +1 -0
  434. package/dist/helpers/domProps.d.ts +5 -0
  435. package/dist/helpers/domProps.d.ts.map +1 -0
  436. package/dist/helpers/domProps.js +47 -0
  437. package/dist/helpers/domProps.js.map +1 -0
  438. package/dist/helpers/expressions.d.ts +115 -4
  439. package/dist/helpers/expressions.d.ts.map +1 -1
  440. package/dist/helpers/expressions.js +247 -29
  441. package/dist/helpers/expressions.js.map +1 -1
  442. package/dist/helpers/hoveringPointer.d.ts +26 -0
  443. package/dist/helpers/hoveringPointer.d.ts.map +1 -0
  444. package/dist/helpers/hoveringPointer.js +29 -0
  445. package/dist/helpers/hoveringPointer.js.map +1 -0
  446. package/dist/helpers/markdownText.d.ts +14 -0
  447. package/dist/helpers/markdownText.d.ts.map +1 -0
  448. package/dist/helpers/markdownText.js +160 -0
  449. package/dist/helpers/markdownText.js.map +1 -0
  450. package/dist/helpers/noDescription.d.ts +9 -0
  451. package/dist/helpers/noDescription.d.ts.map +1 -0
  452. package/dist/helpers/noDescription.js +13 -0
  453. package/dist/helpers/noDescription.js.map +1 -0
  454. package/dist/helpers/optionUiTypes.d.ts +2 -2
  455. package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
  456. package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
  457. package/dist/helpers/qorusTypeCatalogue.js +505 -0
  458. package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
  459. package/dist/helpers/readableColors.d.ts +36 -0
  460. package/dist/helpers/readableColors.d.ts.map +1 -0
  461. package/dist/helpers/readableColors.js +116 -0
  462. package/dist/helpers/readableColors.js.map +1 -0
  463. package/dist/helpers/recordFieldReference.d.ts +15 -0
  464. package/dist/helpers/recordFieldReference.d.ts.map +1 -0
  465. package/dist/helpers/recordFieldReference.js +89 -0
  466. package/dist/helpers/recordFieldReference.js.map +1 -0
  467. package/dist/helpers/templateCatalogue.d.ts +104 -0
  468. package/dist/helpers/templateCatalogue.d.ts.map +1 -0
  469. package/dist/helpers/templateCatalogue.js +116 -0
  470. package/dist/helpers/templateCatalogue.js.map +1 -0
  471. package/dist/helpers/templateCatalogueContext.d.ts +19 -0
  472. package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
  473. package/dist/helpers/templateCatalogueContext.js +31 -0
  474. package/dist/helpers/templateCatalogueContext.js.map +1 -0
  475. package/dist/helpers/templateItems.d.ts +2 -2
  476. package/dist/helpers/templateItems.d.ts.map +1 -1
  477. package/dist/helpers/templateItems.js +6 -4
  478. package/dist/helpers/templateItems.js.map +1 -1
  479. package/dist/helpers/templateText.d.ts +1 -0
  480. package/dist/helpers/templateText.d.ts.map +1 -1
  481. package/dist/helpers/templateText.js +7 -3
  482. package/dist/helpers/templateText.js.map +1 -1
  483. package/dist/helpers/templateTree.d.ts +248 -0
  484. package/dist/helpers/templateTree.d.ts.map +1 -0
  485. package/dist/helpers/templateTree.js +892 -0
  486. package/dist/helpers/templateTree.js.map +1 -0
  487. package/dist/helpers/templateType.d.ts +28 -0
  488. package/dist/helpers/templateType.d.ts.map +1 -0
  489. package/dist/helpers/templateType.js +30 -0
  490. package/dist/helpers/templateType.js.map +1 -0
  491. package/dist/helpers/templates.d.ts +86 -16
  492. package/dist/helpers/templates.d.ts.map +1 -1
  493. package/dist/helpers/templates.js +305 -45
  494. package/dist/helpers/templates.js.map +1 -1
  495. package/dist/helpers/validations.d.ts +27 -0
  496. package/dist/helpers/validations.d.ts.map +1 -1
  497. package/dist/helpers/validations.js +169 -39
  498. package/dist/helpers/validations.js.map +1 -1
  499. package/dist/helpers/webLink.d.ts +8 -0
  500. package/dist/helpers/webLink.d.ts.map +1 -0
  501. package/dist/helpers/webLink.js +29 -0
  502. package/dist/helpers/webLink.js.map +1 -0
  503. package/dist/hooks/useQorusTypes.d.ts +12 -17
  504. package/dist/hooks/useQorusTypes.d.ts.map +1 -1
  505. package/dist/hooks/useQorusTypes.js +44 -172
  506. package/dist/hooks/useQorusTypes.js.map +1 -1
  507. package/dist/hooks/useReadableIntentShade.d.ts +9 -0
  508. package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
  509. package/dist/hooks/useReadableIntentShade.js +23 -0
  510. package/dist/hooks/useReadableIntentShade.js.map +1 -0
  511. package/dist/hooks/useReadableOpacity.d.ts +6 -0
  512. package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
  513. package/dist/hooks/useReadableOpacity.js +17 -0
  514. package/dist/hooks/useReadableOpacity.js.map +1 -0
  515. package/dist/index.d.ts +8 -0
  516. package/dist/index.d.ts.map +1 -1
  517. package/dist/index.js +24 -1
  518. package/dist/index.js.map +1 -1
  519. package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
  520. package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
  521. package/dist/tracking/ui/ExperimentCard.js +26 -10
  522. package/dist/tracking/ui/ExperimentCard.js.map +1 -1
  523. package/dist/tracking/ui/card.d.ts +2 -2
  524. package/dist/tracking/ui/card.d.ts.map +1 -1
  525. package/dist/tracking/ui/card.js +2 -2
  526. package/dist/tracking/ui/card.js.map +1 -1
  527. package/dist/tracking/ui/readable.d.ts +14 -0
  528. package/dist/tracking/ui/readable.d.ts.map +1 -0
  529. package/dist/tracking/ui/readable.js +60 -0
  530. package/dist/tracking/ui/readable.js.map +1 -0
  531. package/dist/utils/fetch.d.ts +9 -2
  532. package/dist/utils/fetch.d.ts.map +1 -1
  533. package/dist/utils/fetch.js +6 -5
  534. package/dist/utils/fetch.js.map +1 -1
  535. package/dist/utils/lspClient.types.d.ts +2 -0
  536. package/dist/utils/lspClient.types.d.ts.map +1 -1
  537. package/dist/utils/websocket.d.ts +65 -2
  538. package/dist/utils/websocket.d.ts.map +1 -1
  539. package/dist/utils/websocket.js +276 -44
  540. package/dist/utils/websocket.js.map +1 -1
  541. package/package.json +14 -6
  542. package/.claude/CLAUDE.md +0 -317
  543. package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
  544. package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
  545. package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
  546. package/.tasks/FIELD_STACK_REPORT.md +0 -234
  547. package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
  548. package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
  549. package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
  550. package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
  551. package/.tasks/INDEX.md +0 -111
  552. package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
  553. package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
  554. package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
  555. package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
  556. package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
  557. package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
  558. package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
  559. package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
  560. package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
  561. package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
  562. package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
  563. package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
  564. package/CODE_OF_CONDUCT.md +0 -105
  565. package/CONTRIBUTING.MD +0 -78
  566. package/SECURITY.md +0 -3
  567. package/chromatic.config.json +0 -5
  568. package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
  569. package/design/COMPACT_INFO_DISPLAY.md +0 -87
  570. package/design/COMPACT_PARITY.md +0 -85
  571. package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
  572. package/design/FORM_ENGINE_COMPACT.md +0 -300
  573. package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
  574. package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
  575. package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
  576. package/design/IDE_INTEGRATION.md +0 -64
  577. package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
  578. package/design/SELECT_DIALOG_FLOOR.md +0 -86
  579. package/design/SMART_EDITOR_UX.md +0 -438
  580. package/design/TRACKING.md +0 -290
  581. package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
  582. package/src/components/Description/index.tsx +0 -254
  583. package/src/components/Description/markdownRendererContext.tsx +0 -29
  584. package/src/components/FocusedEditing/index.tsx +0 -50
  585. package/src/components/codeSize/index.tsx +0 -79
  586. package/src/components/composer/Composer.stories.tsx +0 -238
  587. package/src/components/composer/Composer.tsx +0 -554
  588. package/src/components/composer/helpers.ts +0 -74
  589. package/src/components/composer/index.ts +0 -2
  590. package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
  591. package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
  592. package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
  593. package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
  594. package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
  595. package/src/components/dpqlEditor/dpqlTags.ts +0 -114
  596. package/src/components/dpqlEditor/index.ts +0 -41
  597. package/src/components/dpqlEditor/types.ts +0 -203
  598. package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
  599. package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
  600. package/src/components/form/engine/CompactRow.tsx +0 -2620
  601. package/src/components/form/engine/CompactToolbar.tsx +0 -330
  602. package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
  603. package/src/components/form/engine/FormEngine.tsx +0 -4569
  604. package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
  605. package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
  606. package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
  607. package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
  608. package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
  609. package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
  610. package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
  611. package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
  612. package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
  613. package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
  614. package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
  615. package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
  616. package/src/components/form/engine/compactRowContext.ts +0 -148
  617. package/src/components/form/engine/compactRowStyles.ts +0 -898
  618. package/src/components/form/engine/compactToolbarContext.ts +0 -69
  619. package/src/components/form/engine/optionActions.ts +0 -128
  620. package/src/components/form/engine/optionsContext.ts +0 -24
  621. package/src/components/form/engine/readFirst.ts +0 -1077
  622. package/src/components/form/engine/rendererTypes.ts +0 -107
  623. package/src/components/form/engine/revealRow.ts +0 -123
  624. package/src/components/form/engine/rowFocus.ts +0 -101
  625. package/src/components/form/engine/rowMenuContext.ts +0 -159
  626. package/src/components/form/engine/rowOpenPicker.ts +0 -27
  627. package/src/components/form/engine/typeChoices.ts +0 -63
  628. package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
  629. package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
  630. package/src/components/form/engine/variants/VariantCards.tsx +0 -212
  631. package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
  632. package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
  633. package/src/components/form/engine/variants/focusDemo.ts +0 -145
  634. package/src/components/form/engine/variants/variantModel.ts +0 -223
  635. package/src/components/form/engine/variants/variantParts.tsx +0 -313
  636. package/src/components/form/expressions/DpqlRendering.tsx +0 -85
  637. package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
  638. package/src/components/form/expressions/ExpressionField.tsx +0 -503
  639. package/src/components/form/expressions/argumentPresence.ts +0 -213
  640. package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
  641. package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
  642. package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
  643. package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
  644. package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
  645. package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
  646. package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
  647. package/src/components/form/expressions/builder/index.tsx +0 -1545
  648. package/src/components/form/expressions/builder/item.tsx +0 -89
  649. package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
  650. package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
  651. package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
  652. package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
  653. package/src/components/form/expressions/mockExpressions.ts +0 -317
  654. package/src/components/form/expressions/renderExpressionToText.ts +0 -137
  655. package/src/components/form/expressions/types.ts +0 -110
  656. package/src/components/form/expressions/useExpressions.ts +0 -101
  657. package/src/components/form/expressions/useRenderExpression.ts +0 -165
  658. package/src/components/form/fields/Field.stories.tsx +0 -143
  659. package/src/components/form/fields/Field.tsx +0 -732
  660. package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
  661. package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
  662. package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
  663. package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
  664. package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
  665. package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
  666. package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
  667. package/src/components/form/fields/binary/Binary.tsx +0 -91
  668. package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
  669. package/src/components/form/fields/boolean/Boolean.tsx +0 -34
  670. package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
  671. package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
  672. package/src/components/form/fields/color/Color.stories.tsx +0 -99
  673. package/src/components/form/fields/color/Color.tsx +0 -46
  674. package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
  675. package/src/components/form/fields/cron/Cron.tsx +0 -80
  676. package/src/components/form/fields/date/Date.stories.tsx +0 -77
  677. package/src/components/form/fields/date/Date.tsx +0 -55
  678. package/src/components/form/fields/emittedValues.ts +0 -70
  679. package/src/components/form/fields/file/File.stories.tsx +0 -161
  680. package/src/components/form/fields/file/File.tsx +0 -227
  681. package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
  682. package/src/components/form/fields/long-string/LongString.tsx +0 -130
  683. package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
  684. package/src/components/form/fields/markdown/Markdown.tsx +0 -81
  685. package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
  686. package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
  687. package/src/components/form/fields/number/Number.stories.tsx +0 -159
  688. package/src/components/form/fields/number/Number.tsx +0 -160
  689. package/src/components/form/fields/object/Object.stories.tsx +0 -398
  690. package/src/components/form/fields/object/Object.tsx +0 -255
  691. package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
  692. package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
  693. package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
  694. package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
  695. package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
  696. package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
  697. package/src/components/form/fields/rich-text/RichText.tsx +0 -537
  698. package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
  699. package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
  700. package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
  701. package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
  702. package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
  703. package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
  704. package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
  705. package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
  706. package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
  707. package/src/components/form/fields/schema-definition/catalog.ts +0 -237
  708. package/src/components/form/fields/schema-definition/helpers.ts +0 -90
  709. package/src/components/form/fields/schema-definition/index.tsx +0 -418
  710. package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
  711. package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
  712. package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
  713. package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
  714. package/src/components/form/fields/schema-definition/types.ts +0 -185
  715. package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
  716. package/src/components/form/fields/select/Select.stories.tsx +0 -872
  717. package/src/components/form/fields/select/Select.tsx +0 -624
  718. package/src/components/form/fields/select/SelectCollection.tsx +0 -594
  719. package/src/components/form/fields/string/String.stories.tsx +0 -86
  720. package/src/components/form/fields/string/String.tsx +0 -43
  721. package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
  722. package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
  723. package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
  724. package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
  725. package/src/components/form/fields/template/TemplateField.tsx +0 -1717
  726. package/src/components/form/fields/template/TemplateText.tsx +0 -115
  727. package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
  728. package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
  729. package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
  730. package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
  731. package/src/components/form/fields/timeout/Timeout.tsx +0 -87
  732. package/src/components/form/fields/url/Url.stories.tsx +0 -94
  733. package/src/components/form/fields/url/Url.tsx +0 -85
  734. package/src/components/form/index.tsx +0 -47
  735. package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
  736. package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
  737. package/src/components/imageLightbox/index.ts +0 -1
  738. package/src/components/log/Log.stories.tsx +0 -333
  739. package/src/components/log/Log.tsx +0 -285
  740. package/src/components/menu/Menu.stories.tsx +0 -155
  741. package/src/components/menu/Menu.tsx +0 -312
  742. package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
  743. package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
  744. package/src/components/qonsoleSmartInput/index.ts +0 -16
  745. package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
  746. package/src/components/qonsoleSmartInput/types.ts +0 -133
  747. package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
  748. package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
  749. package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
  750. package/src/components/searchFilterBar/index.ts +0 -1
  751. package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
  752. package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
  753. package/src/components/smartEditor/SmartEditor.tsx +0 -808
  754. package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
  755. package/src/components/smartEditor/helpers.ts +0 -217
  756. package/src/components/smartEditor/index.ts +0 -35
  757. package/src/components/smartEditor/styling.ts +0 -45
  758. package/src/components/smartEditor/types.ts +0 -211
  759. package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
  760. package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
  761. package/src/components/smartEditor/useLspHover.ts +0 -230
  762. package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
  763. package/src/components/smartEditor/useLspSession.ts +0 -231
  764. package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
  765. package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
  766. package/src/components/supportTicket/AttachmentChips.tsx +0 -147
  767. package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
  768. package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
  769. package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
  770. package/src/components/supportTicket/ReferencePicker.tsx +0 -563
  771. package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
  772. package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
  773. package/src/components/supportTicket/TicketHeader.tsx +0 -247
  774. package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
  775. package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
  776. package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
  777. package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
  778. package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
  779. package/src/components/supportTicket/attachmentAccess.ts +0 -97
  780. package/src/components/supportTicket/fileToAttachment.ts +0 -24
  781. package/src/components/supportTicket/index.ts +0 -10
  782. package/src/components/supportTicket/meta.ts +0 -206
  783. package/src/components/supportTicket/ticketModel.ts +0 -131
  784. package/src/components/supportTicket/useLoadedImages.ts +0 -73
  785. package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
  786. package/src/components/ticketReferences/TicketReferences.tsx +0 -906
  787. package/src/components/ticketReferences/index.ts +0 -2
  788. package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
  789. package/src/components/ticketThread/TicketThread.tsx +0 -719
  790. package/src/components/ticketThread/index.ts +0 -6
  791. package/src/contexts/FetchContext.tsx +0 -25
  792. package/src/contexts/ReqraftContext.tsx +0 -9
  793. package/src/contexts/StorageContext.tsx +0 -33
  794. package/src/global.d.ts +0 -4
  795. package/src/helpers/allowedValues.ts +0 -249
  796. package/src/helpers/choiceChip.ts +0 -227
  797. package/src/helpers/common.ts +0 -326
  798. package/src/helpers/dpqlDetection.ts +0 -209
  799. package/src/helpers/expressions.ts +0 -140
  800. package/src/helpers/optionUiTypes.ts +0 -199
  801. package/src/helpers/options.ts +0 -150
  802. package/src/helpers/providerValue.ts +0 -125
  803. package/src/helpers/scrollbar.ts +0 -32
  804. package/src/helpers/singleLineString.ts +0 -61
  805. package/src/helpers/templateItems.ts +0 -81
  806. package/src/helpers/templateText.ts +0 -350
  807. package/src/helpers/templates.ts +0 -602
  808. package/src/helpers/validations.ts +0 -2085
  809. package/src/hooks/useArgSchema.ts +0 -37
  810. package/src/hooks/useCoarsePointer.ts +0 -30
  811. package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
  812. package/src/hooks/useFetch/useFetch.tsx +0 -154
  813. package/src/hooks/usePhoneViewport.ts +0 -34
  814. package/src/hooks/useQorusTypes.ts +0 -233
  815. package/src/hooks/useReqraftProperty.ts +0 -16
  816. package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
  817. package/src/hooks/useStorage/useStorage.ts +0 -35
  818. package/src/hooks/useTemplates.ts +0 -123
  819. package/src/hooks/useValidation.ts +0 -9
  820. package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
  821. package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
  822. package/src/hooks/useWhyDidYouUpdate.ts +0 -38
  823. package/src/index.tsx +0 -86
  824. package/src/providers/FetchProvider.tsx +0 -40
  825. package/src/providers/ReqraftProvider.tsx +0 -52
  826. package/src/providers/StorageProvider.tsx +0 -131
  827. package/src/stores/currentUser/currentUser.stories.tsx +0 -100
  828. package/src/stores/currentUser/currentUser.tsx +0 -94
  829. package/src/stories/Data/fileFieldArgSchema.json +0 -86
  830. package/src/stories/Tests/utils.ts +0 -320
  831. package/src/stories/storyNetwork.ts +0 -92
  832. package/src/stories/tracking.tsx +0 -206
  833. package/src/tracking/browser/attach.ts +0 -186
  834. package/src/tracking/browser/env.ts +0 -78
  835. package/src/tracking/core/consent.ts +0 -37
  836. package/src/tracking/core/engagement.ts +0 -47
  837. package/src/tracking/core/experiments.ts +0 -258
  838. package/src/tracking/core/hash.ts +0 -26
  839. package/src/tracking/core/ids.ts +0 -25
  840. package/src/tracking/core/observable.ts +0 -23
  841. package/src/tracking/core/queue.ts +0 -131
  842. package/src/tracking/core/sections.ts +0 -166
  843. package/src/tracking/core/storage.ts +0 -69
  844. package/src/tracking/core/tracker.ts +0 -417
  845. package/src/tracking/core/types.ts +0 -162
  846. package/src/tracking/core/utm.ts +0 -23
  847. package/src/tracking/index.ts +0 -72
  848. package/src/tracking/markup.ts +0 -17
  849. package/src/tracking/react/Experiment.tsx +0 -44
  850. package/src/tracking/react/TrackingProvider.tsx +0 -56
  851. package/src/tracking/react/hooks.ts +0 -106
  852. package/src/tracking/react/index.ts +0 -13
  853. package/src/tracking/testing.ts +0 -108
  854. package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
  855. package/src/tracking/ui/ExperimentCard.tsx +0 -667
  856. package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
  857. package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
  858. package/src/tracking/ui/anchor.ts +0 -180
  859. package/src/tracking/ui/card.ts +0 -464
  860. package/src/tracking/ui/client.ts +0 -117
  861. package/src/tracking/ui/index.ts +0 -77
  862. package/src/tracking/ui/types.ts +0 -110
  863. package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
  864. package/src/types/Form.ts +0 -29
  865. package/src/types.ts +0 -14
  866. package/src/utils/datetime.ts +0 -10
  867. package/src/utils/fetch.ts +0 -457
  868. package/src/utils/lspClient.ts +0 -711
  869. package/src/utils/lspClient.types.ts +0 -211
  870. package/src/utils/queryUnlessCancelled.ts +0 -28
  871. package/src/utils/websocket.ts +0 -293
  872. package/vite.config.ts +0 -58
  873. package/vitest.config.ts +0 -69
@@ -1,85 +0,0 @@
1
- # Compact mode — options-schema parity matrix
2
-
3
- Answers the call's requirement: *"we have to make sure that we support everything that the
4
- options support"* (Filip, 2026-06-10). Capability list is taken from the authoritative schema
5
- type (`@qoretechnologies/ts-toolkit` `forms.d.ts` — `TQorusFormFieldSchema`) plus engine-level
6
- props; IDE usage was verified by grepping `qorus-ide` (file counts in brackets where relevant).
7
-
8
- Legend: ✅ works + covered · 🟡 works, coverage thin/indirect · 🔴 gap (not supported or untested)
9
-
10
- ## Identity & display
11
-
12
- | Capability | Compact behaviour | Coverage |
13
- |---|---|---|
14
- | `display_name` | row label | ✅ everywhere |
15
- | `short_desc` | hover title + the row's ⓘ info panel (stripe-expand display, **decided 2026-06-11**: losers + `compactInfoDisplay` prop deleted) | ✅ `CompactShowcase`, `CompactFieldTypes` "Descriptions & messages" |
16
- | `desc` (markdown) | `?` → help dialog | ✅ `CompactHelpDialog` |
17
- | `group` + `groups` prop | collapsible group panels + badges | ✅ `Compact`, `CompactBasic` |
18
- | `sort` | ✅ fields sort by `schema.sort` (`availableOptions`) — verified | ✅ `CompactSortOrder` (declared out of order, renders 1-2-3) |
19
- | `icon` / `image` / `badge` / `actions` / `intent` / `tags` (field-level chrome) | ✅ **decided + built** (2026-06-10): rows render `icon`/`image` before the label and `intent` as the edge stripe (card border tints too); `badge` / `actions` / `tags` render on the expanded edit card header — nothing the schema sends is silently dropped | ✅ `CompactFieldTypes` "Field chrome" group (incl. a full-chrome combo) |
20
-
21
- ## Types & values
22
-
23
- | Capability | Compact behaviour | Coverage |
24
- |---|---|---|
25
- | full `TQorusType` union | read-first values per family | ✅ `CompactFieldTypes` catalog |
26
- | colour / file / hash read-first | swatch+hex · filename+size · count + structured tree | ✅ `CompactFieldTypes`, `CompactBasic`, unit tests |
27
- | `arg_schema` (nested form) | card editor + structured preview | ✅ `CompactBasic`, `CompactHashStructuredView` |
28
- | YAML-serialized values | summarised, not raw `%YAML` | ✅ `CompactListYamlField`, unit tests |
29
- | `default_value` (+`_desc`, `_display_name`) | seeded by engine; `default_value_desc` note surfaces in the row's info panel (Tier 2, behind ⓘ) | ✅ `CompactReadonlyDefaultFix`, `CompactShowcase` (toggle journey) |
30
- | `element_type` / typed lists | read-first join | 🟡 display via `CompactFieldTypes`; editing untested |
31
-
32
- ## Validation & requirements
33
-
34
- | Capability | Compact behaviour | Coverage |
35
- |---|---|---|
36
- | `required` | `*`, Required tag, completion meter, Draft/Ready badge | ✅ several stories |
37
- | `required_groups` | members are **linked** (2026-06-10): unmet members show a "One of: <group>" chip — tap-popover lists siblings (click → scroll + flash, works across panels), hover highlights all members; once satisfied, empty siblings show *"Not set — covered by …"* + Ready transition | ✅ `CompactRequiredGroups` (3 members across 2 panels, full journey) |
38
- | invalid values | Required tag + banner + filter-to-invalid | ✅ `CompactBasic` (6 invalid) |
39
- | `messages` (intent) | read rows: Tier-1 (danger/warning) → intent edge-stripe + auto-open info panel; Tier 2 behind the ⓘ toggle; the inline editor suppresses its own message strip (the panel below the editing row is the single renderer) | ✅ `CompactShowcase`, `CompactFieldTypes` "Descriptions & messages" |
40
- | `rules: ['valid_identifier']` [47 IDE files] | ✅ **wired** (2026-06-10): `validations.ts` maps `rules` → the identifier check; `OptionFieldMessages` now spreads the *field* schema (was the whole map — pre-existing bug). Unknown rule strings are deliberately ignored (documented at the mapping site) | 🟡 `CompactValidIdentifierRule` shows the Draft badge + invalid banner (the rule's *rejection* is asserted in the 3 unit tests, not the play) |
41
-
42
- ## Selection & editing
43
-
44
- | Capability | Compact behaviour | Coverage |
45
- |---|---|---|
46
- | `allowed_values` (+`_creatable`) | display label resolution + real dropdown inline | 🟡 `CompactBasic` asserts the resolved display label (incl. broken values); the inline dropdown *interaction* and the `_creatable` add-path are rendered but not driven by a play |
47
- | `element_allowed_values` (+creatable) [8] | multi-select display join + card editor with the real multi-select | ✅ `CompactMultiSelectEditing` (open + selection labels; deep add/remove interaction still light) |
48
- | `multiselect` | — | 🟡 covered via the same story |
49
- | `supports_templates` / `$config:` | raw template shown in read row; toggle inline | ✅ `CompactBasic` (`$local:test`) |
50
- | `supports_custom_values` | passed through to editor | 🟡 indirect |
51
- | `sensitive` [21 IDE files] | read row + hover title mask `••••••` (leak fixed 2026-06-10). Known behaviour: the TemplateField *editor* reveals the value while editing (textarea path — same as the IDE; a `password`-input treatment would be a TemplateField change). Nested sensitive inside the structured hash preview NOT masked (ReqoreDataView has no sensitive concept — upstream candidate) | 🟡 `CompactSensitive` asserts the read-row mask + no page-text leak; the edit-state reveal and the hover-title mask are not asserted (+ unit tests) |
52
- | `is_expression` values | read row shows "Expression" | 🟡 unit test; expression *editing* story still pending (transport live, deferred by Nick) |
53
- | `supports_expressions` / `expressions_url` / `server_expression_handling` / `default_view` | passed to editor | 🔴 untested in compact (needs expression transport — now live per Nick) |
54
- | `op` / operators | ✅ **`operators` prop wired** (2026-06-10 — was a dead internal `useState(undefined)`, unreachable in classic AND compact); operator-bearing fields always card-edit | ✅ `CompactOperators` (selector + WHERE/IS summary) |
55
- | `app` / `action` (custom template menu for `any`) | `getCustomMenuTemplateItems` wired. **Empty-`any` affordance fixed** (2026-06-11, found via `CompactFieldTypesEditingAllRequired`): `allowCustomValues` is hard-false for `any` (the value's TYPE is picked from the template menu first), so an empty `any` card used to render only a bare ⋮ — read as broken. `TemplateField` now renders the menu trigger as a labelled **"Set value"** button whenever the menu is the field's only control (`hasInputAffordance`); valued fields keep the icon-only ⋮. Toolkit is canonical — the IDE inherits this at adoption. | ✅ `CompactFieldTypesEditingAllRequired` (Set value → Set Custom Value → Text → richtext editor mounts), `CompactAnyType` (valued: card opens) |
56
-
57
- ## Behaviour & lifecycle
58
-
59
- | Capability | Compact behaviour | Coverage |
60
- |---|---|---|
61
- | `preselected` / hidden optionals | rows + search-add + Fields menu | ✅ `CompactFieldsMenu`, `CompactSearchHidden` |
62
- | `depends_on` (incl. nested arrays) | unmet deps **lock the row**, and the linkage is **navigable** (2026-06-10): the lock's tap-popover lists each blocker with its state (✓/✗, handles `name=value` and any-of arrays; click → scroll + flash), lock hover highlights the blockers, and **fulfilling a dependency flashes the rows it unlocks** | ✅ `CompactBasic` (full lock → locate → fulfil → unlock-flash journey), `CompactOptionDependsOnOptionOrAnotherOption` (any-of), `CompactOptionDependsOnOptionInRequiredGroup` (dep × group interplay), `CompactOnChangeAndDependents`, `CompactShowcase` |
63
- | `has_dependents` + `on_change: refetch` | dependents reset + refetch event | ✅ `CompactOnChangeAndDependents` |
64
- | `disabled` / `readonly` | `disabled` **locks the row** (2026-06-10 — previously it opened a dead editor); form-level `readOnly` still opens in view mode (Close); readonly default-fix | ✅ `CompactBasic` (locked-row asserts), `CompactReadOnly`, `CompactReadonlyDefaultFix` |
65
- | `focusedEditing` | ✅ compact edit cards now have the fullscreen affordance (2026-06-10): a Fullscreen button opens the same `FocusedEditing` modal as classic, with the field's descriptions | ✅ `CompactFocusedEditing` |
66
- | `get_message` / `return_message` | **out of scope for FormEngine parity.** These keys belong to the IDE's *legacy Field system* (`components/Field/*`, VSCode-era message bus: `postMessage`/`addMessageListener`); the IDE's options form (`systemOptions.tsx` — what FormEngine is the port of) never uses them, and server options schemas don't carry them. They only appear in the schema *type* because it also models legacy field definitions. Porting them = the separate Field-system migration, where the message bus becomes transport-agnostic callbacks (the `optionsLoader` pattern). | n/a |
67
- | `optionsLoader` (async schema) | loading/error lifecycle | ✅ `CompactOptionsLoader(+Error)` |
68
- | narrow containers (mobile / drawers) | stacked rows < 480 px measured form width; inline editing full-width | ✅ `CompactShowcaseMobile` (360 px) |
69
-
70
- ## Remaining gaps (2026-06-10, after the coverage batch)
71
-
72
- Closed in the batch: `rules` wiring (+ the `OptionFieldMessages` field-vs-map spread bug),
73
- `sensitive` story, operators (prop wiring — it was dead engine-wide — + story), `focusedEditing`
74
- on compact cards (feature + story), multi-select editing story, `sort` assert.
75
-
76
- Still open:
77
- 1. **Expression-editing story** — transport is live (localhost:8012); deferred by Nick.
78
- 2. **Nested `sensitive` in the structured hash preview** — `ReqoreDataView` has no sensitive
79
- concept; upstream candidate. Related: the TemplateField editor reveals sensitive values while
80
- editing (IDE-parity behaviour; a password-input treatment would be a TemplateField change).
81
- 3. **Deep multi-select interaction** (add/remove via the dropdown) — the story asserts open +
82
- selection labels only.
83
-
84
- (`get_message`/`return_message` was initially listed here as a gap — that was wrong; see the
85
- behaviour table: it's legacy-Field-system scope, not options-form parity.)
@@ -1,92 +0,0 @@
1
- # Expression Builder — verbatim re-port strategy
2
-
3
- **Status:** locked 2026-06-10. Supersedes the *from-scratch* ExpressionBuilder
4
- in `design/FORM_ENGINE_EXPRESSIONS.md` (Phases 3/3b/3c/3d). The plumbing
5
- (catalogue hook, FormEngine `is_expression`, DPQL bridge, validation
6
- `isFunction` case) from that batch is retained; the visual builder is replaced.
7
-
8
- ## Why we are redoing it
9
-
10
- The first attempt **reimplemented** the visual builder on reqraft's own
11
- primitives. That diverged from the team's stated method (Filip, 2026-06-10
12
- call): *copy the IDE component verbatim — with its dependencies and its tests —
13
- get it looking and passing 1:1, **then** improve.* The from-scratch version
14
- never looked like the IDE and cost days of "why does it look worse" iteration —
15
- exactly the danger Filip named (you can't tell a port bug from a deliberate
16
- change). Nick on the call: the port "wasn't a good job done."
17
-
18
- ## The blocking finding (why it's not a trivial copy)
19
-
20
- A verbatim copy of the IDE's `ExpressionBuilder` (1,857 LOC / 9 files) does NOT
21
- compile against reqraft today, because **reqraft's shared field stack drifted
22
- from the IDE** ("reqraft wasn't kept up"). Specifically:
23
-
24
- - **The recursion lives in `TemplateField`, not ExpressionBuilder.** Operands
25
- render via `<TemplateField component={auto} allowFunctions isFunction={…}>`,
26
- and TemplateField recurses back into ExpressionBuilder. reqraft's
27
- TemplateField has **no `allowFunctions`/`isFunction`** — it uses a different
28
- mechanism (the Phase-1 "Use Expression" menu toggle).
29
- - Missing helpers: `helpers/expressions` (`getArgumentType`,
30
- `argumentMatchesType`), `areQorusTypesCompatible`.
31
- - `validateField` is private (`_validateField`) in reqraft.
32
- - `SelectFormField` hardcodes `flat={false}` + `intent='info'` (the chip
33
- problem) — not externally controllable.
34
- - IDE-only seams that can't come along: `AiAssistanceAction` (AI),
35
- `render-expression` over the Creator WebSocket (Explain), the hints system.
36
-
37
- So the proper port = **re-faithful-ize the field stack first, then copy the
38
- builder.** Decision (user, 2026-06-10): **re-port (option 1)**, not augment.
39
-
40
- ## What is kept from the from-scratch batch
41
-
42
- - `useExpressions.ts` (catalogue hook — close to the IDE's)
43
- - `useRenderExpression.ts` (Explain seam — matches the planned `onExplain`/LSP)
44
- - `types.ts`, FormEngine `is_expression` plumbing, validations `isFunction`
45
- - **`ExpressionField` DPQL text mode** — NET-NEW (the IDE builder is
46
- visual-only; DPQL text editing is the whole point of this branch)
47
-
48
- ## What is replaced
49
-
50
- - `ExpressionBuilder.tsx` (from-scratch) + its stories + the mock-styling work.
51
-
52
- ## Drawbacks (accepted)
53
-
54
- 1. Touches `TemplateField` — load-bearing for the entire form engine + the
55
- just-landed field migration. Highest-risk surface in the library.
56
- 2. Two expression-on-field models collide (IDE `allowFunctions`/`isFunction`
57
- vs the Phase-1 toggle); the IDE model wins.
58
- 3. Never truly verbatim — AI dropped, Explain → `onExplain`/LSP seam.
59
-
60
- *Revised 2026-09-08 — one deliberate departure from the IDE source, in the
61
- rest-argument operand mount.* The IDE derives an empty rest argument's `type`
62
- and `defaultType` from the value (undefined when empty), so an empty `bool`
63
- argument rendered as an untyped `auto` field — a type picker under a label that
64
- already said "true or false" — and an empty `any` argument never qualified for
65
- `TemplateField`'s template-selector default, which reads `type`. reqraft now
66
- falls back to the catalogue's declared `ui_type`, as the first-argument mount
67
- and the allowed-values branch already did. Flagged by Foxhoundn on the #118
68
- qlip review; matches the read-only-types direction in qorus-ide#178. The IDE
69
- inherits it, since it renders reqraft's builder.
70
- 4. Brings the deferred machinery (type-mismatch modals, type-compat) — more
71
- surface to own.
72
- 5. Follow-on: the IDE must then *consume* reqraft's builder or they drift again.
73
-
74
- ## Phases (Filip's method: copy + tests → 1:1 → improve)
75
-
76
- - **A — Field-stack parity.** Port verbatim into reqraft (with their IDE
77
- tests): `helpers/expressions`, `areQorusTypesCompatible`; export
78
- `validateField`; bring `SelectFormField` to forward `flat`/`intent`; bring
79
- `TemplateField` to the IDE's `allowFunctions`/`isFunction` mechanism.
80
- **GATE:** the field-migration stories + jest still pass.
81
- - **B — Verbatim ExpressionBuilder.** Copy the 9 files + the IDE's stories &
82
- tests; fix import paths; seam out AI (off) / render-expression (`onExplain`
83
- prop) / hints (stub). **GATE:** 1:1 vs `:6007`, ported tests pass.
84
- - **C — Re-wrap reqraft features.** Visual = ported builder, Text =
85
- `DpqlEditor`, Explain = seam, inside `ExpressionField`; reconcile FormEngine
86
- `is_expression` to the IDE model. **GATE:** field-holds-expression story.
87
- - **D — Server (out of reqraft).** `render-expression` over LSP/REST; swap
88
- `useRenderExpression`. (Filip/Nick file the server issue.)
89
- - **E — Dedupe (out of scope now).** IDE consumes reqraft's builder.
90
-
91
- Between every phase: open Storybook, **compare to `:6007`**, fix, then proceed.
92
- No commits until the user verifies.
@@ -1,300 +0,0 @@
1
- # FormEngine — compact (read-first) mode
2
-
3
- ## What it is
4
-
5
- `FormEngine` ([`src/components/form/engine/FormEngine.tsx`](../src/components/form/engine/FormEngine.tsx))
6
- renders an options schema (`IQorusFormSchema`) as a form. It has two layouts:
7
-
8
- - **Classic** (default) — every option's editor is expanded at once.
9
- - **Compact (read-first)** — pass `compact` to render each option as a **row showing its current
10
- value**; clicking a row expands the real editor inline, and a **Done** action collapses it again.
11
- The form reads as a "configuration summary you drill into" rather than a wall of inputs.
12
-
13
- Compact mode is purely presentational — editing flows through the **same** machinery as the classic
14
- layout (templates, `on_change`, validation, dependents). Nothing about the schema, value shape, or
15
- `onChange` contract changes.
16
-
17
- ## What `compact` adds
18
-
19
- - **Read-first rows.** Each option shows a formatted summary of its value (`formatOptionValue`):
20
- booleans as Yes/No, `allowed_values` as their display label, lists as joined item names, rich text
21
- flattened to plain text, **colours** as their hex/`rgba()` string (with a swatch preview),
22
- **files** as their filename (with a file icon + muted size), and **hashes** as an "N fields" count.
23
- Empty options show **Not set**, or **Required — not set** (warning intent) when required.
24
- - **Hash "view more" preview.** A hash row keeps its "N fields" summary and renders the hash's
25
- contents beneath it with the **structured tree** (`StructuredDataView` → `ReqoreDataView` — see
26
- the dedicated section below); whether a row gets a preview at all is gated by `getHashEntries`,
27
- which recognises `arg_schema` structured forms, serialized-YAML/free-hash values, and schema-less
28
- hashes whose entries are the server's typed envelopes (`{ type, value }` unwrapped by its strict
29
- shape, so an entry counts as `value1` rather than "2 fields"). The preview is wrapped in a
30
- reusable **`ReqraftCollapsibleContent`**: a short hash shows in full, a tall one is clipped behind
31
- a **gradient "Show more" fade** (a reveal button that surfaces on hover; expanding adds a
32
- "Show less"). Clicking a value chip (or the row itself) opens the full nested editor — the
33
- preview is read-first, with the tree's expand/collapse summaries owning their own clicks.
34
- `ReqraftCollapsibleContent` ([`src/components/collapsible/CollapsibleContent.tsx`](../src/components/collapsible/CollapsibleContent.tsx))
35
- is a standalone, exported, theme-aware toolkit component (extracted from the IDE's chat-bubble
36
- `CollapsibleContent` fade-reveal) so the same affordance can be reused elsewhere; the fade colour
37
- defaults to the Reqore theme surface (overridable via `fadeColor`).
38
- - **Inline editing for scalars, card for complex fields.** Clicking a row mounts the real field
39
- (`renderOption`) — the editor is **not** mounted while collapsed, and multiple rows can be open at
40
- once. *Scalar* fields (string, number, bool, date, colour, selects/allowed-values, …) edit **in
41
- place inside the row**: the editor replaces the value cell, with a per-row **↺** (when changed) and
42
- a **✓** to collapse; Escape or clicking the label also collapses. *Complex* fields — anything in
43
- `COMPACT_COMPLEX_TYPES` (hash, list, file, richtext, any/auto, schema editors, …) plus any field
44
- with `arg_schema` or operators — still open the expanded **edit card** with a Done button, per the
45
- agreed fallback ("big fields still render a form"). Changes flow through the same
46
- `handleValueChange` → debounced `onChange` pipeline in both paths — the engine never persists;
47
- *when* to apply the emitted value (immediate vs batched commit) is the consumer's contract.
48
- - **Completion meter + Incomplete/Ready status.** A single inline bar at the top — Incomplete/Ready status |
49
- `N / M fields set` | track (fills remaining) | `%` — matching the IDE's restyled completion strip.
50
- The badge is the IDE restyled-hero convention (`RestyledFields`): a minimal small `ReqoreTag`,
51
- **Incomplete** (warning) while any field is invalid, required-unset or needs attention, **Ready**
52
- (success) once everything validates — driven by the same validity data as the invalid-fields
53
- banner; hidden in `readOnly`. It signals form *readiness*, not unsaved changes, which is why the
54
- not-ready state is never called "Draft": a form nobody has touched can be Incomplete, and **Draft**
55
- means unsaved changes — the batched mode's per-row chip, and nothing else. Unsaved-change state is
56
- that chip and the per-row **↺** / "Revert all changes". (`VariantCalmTable`'s meter uses the same
57
- two words.) (Product save convention for
58
- context: creator forms auto-save to a *draft* via the IDE's `useInterfaceDraft` — debounced
59
- auto-draft + explicit Submit — so compact inline edits are draft-persisted by the consumer with no
60
- extra engine work.)
61
- - **Toolbar.** A search box (filter rows by label) plus a **Fields** dropdown (`ReqoreDropdown`,
62
- edit-mode only) that consolidates the field-set actions: **Required only** (toggle), **Show field types**
63
- (toggle — annotates each row with its type, e.g. `<string>`), **Select all** (add every optional field),
64
- **Default fields** (drop user-added optionals + clear the filter, keeping required/preselected/loaded
65
- values), **Revert all changes** (undo every edit back to the loaded values), and a searchable
66
- **add-optional** list. Filters only affect which rows are listed — the completion meter still reflects the
67
- full set. ("Edit code" is *not* here — that stays IDE-side.)
68
- - **Revert.** A changed row shows a per-field hover **↺** that restores that field to its loaded value;
69
- **Revert all changes** in the Fields menu restores the whole form. (Distinct from **Default fields**,
70
- which resets to schema defaults + drops added optionals.)
71
- - **Batched commit (`commitMode='batched'`).** The decided save model (Nick, 2026-06-10): edits
72
- stage as a **draft** — each changed row gets an always-visible warning **Draft** chip (the
73
- product's draft convention), and a **Save / Discard bar** docks **bottom-right as a sticky,
74
- floating card** while anything is dirty (`N unsaved changes`) — `position: sticky` (not fixed)
75
- so it stays inside the form's scroll bounds when the engine renders in a drawer/panel. **Save**
76
- fires the new **`onCommit`** callback with the
77
- staged form and is **disabled while any field is invalid**; **Discard** is the existing
78
- revert-all. `onChange` still fires on every staged edit, flagged **`meta.draft`**, so consumers
79
- can live-validate without persisting. Default stays `'immediate'` (today's behaviour — no
80
- consumer breaks). Stories: `CompactBatchedCommit` (full stage → save → discard journey),
81
- `CompactBatchedCommitInvalid` (Save gated on validity).
82
- - **Search spans hidden fields.** The top search matches *all* schema fields, not just the listed ones: a
83
- match that is an optional field not yet in the form is surfaced as a dimmed **"Not in form — add"** row;
84
- activating it adds the field and opens its editor.
85
- - **An unmet `depends_on` withholds the field rather than offering it.** A field whose dependency is
86
- not fulfilled is left out of the not-yet-added list entirely — so it is absent from the addable rows,
87
- the Fields menu, and its **Select all** alike. All three read the one `filteredOptions` list, which is
88
- where the gate lives, so they cannot disagree about what is available. The rule is that
89
- `hasAllDependenciesFullfilled` is the *same* predicate that then refuses to let the field be edited:
90
- offering one it rejects can only end at a row that opens and says it is disabled. (Reported on auth
91
- profiles — an authentication scheme set to Permissive still offered `Cookie Name` and `Redirect URL`,
92
- both `depends_on: ['type=cookie']`, and both dead ends.) Fulfilling the dependency brings the rows
93
- back and flashes them (`dependencyLockedNames`), which is the discoverable path: pick the scheme, and
94
- the fields that scheme has appear. **Only the not-yet-added ones** — a field that already holds a
95
- value stays listed when its dependency later stops holding, rendered `readfirst-row-disabled` with the
96
- reason, so a value still being submitted is visible and removable instead of silently orphaned.
97
- - **A field locked by an unmet `depends_on` does not need attention.** A `required` (or one-of
98
- `required_groups`) field that is listed but locked is not required while it is locked: the status
99
- (`getOptionStatus`) and box (`getOptionBucket`) treat it as optional, so it waits in the Optional box,
100
- locked, with what unlocks it, and is not in "Needs attention", the header's attention count or the
101
- first-attention autofocus target. Its messages say what unlocks it, not "This field is required"
102
- (`getOptionFieldMessages`). The field it depends on carries its own status, and that field is what
103
- the author has to do next. Once the dependency holds and the field is still empty, it needs attention
104
- again. The same rule holds for form validity (`onValidityChange`, the Incomplete/Ready status,
105
- `showInvalidOptionsOnly`): an EMPTY locked field does not apply, so it does not make the form
106
- incomplete — otherwise a check of kind Equals could never be saved because Minimum, required for
107
- Between alone, is empty, and a form whose only gaps are fields nobody can fill in would read
108
- Incomplete with nothing under "Needs attention". A value a locked field still holds is validated
109
- as before. (`getUnresolvedRequiredOptions`, which decides whether a form is needed at all before
110
- any is shown, still reports a locked required option as unresolved, reason `dependency`.) Stories: `CompactLockedRequiredNeedsNoAttention`,
111
- `CompactUnlockedRequiredNeedsAttention`.
112
- - **Sticky-top toolbar.** The completion meter + search + Fields menu are wrapped in a `position: sticky;
113
- top: 0` header (opaque background masks rows scrolling beneath), so filtering and adding optional fields
114
- stay reachable while scrolling a long form. (Replaced an earlier bottom "Additional options" bar that, as
115
- the last child of the scroll content, could never actually pin to the viewport.)
116
- - **Zebra field blocks + spacing (no dividers) + mobile left rail.** Every field block (a row, or
117
- the wrapper carrying a row plus its message strips / hash preview) gets an alternating
118
- theme-derived tint — 3% on desktop, 5% on narrow forms — and blocks separate with an **8px gap**
119
- at all widths; the old hairline dividers were retired (zebra + space carry the separation). Each
120
- field owns a visible territory and strips never float ownerless. Narrow forms additionally indent
121
- content 12px under the label (left rail) and use slightly taller inner padding. Edit cards keep
122
- their own surface.
123
- - **No horizontal overflow.** The row grid's value column is `minmax(0, 1fr)` and the value cell has
124
- `min-width: 0`, so a long unbroken value (e.g. a URL) ellipsis-truncates (full value on hover via `title`)
125
- instead of forcing a horizontal scrollbar.
126
- - **Field info: intent stripe + expandable panel** (the decided "stripe-expand" display,
127
- 2026-06-11 — see `COMPACT_INFO_DISPLAY.md`). Rows carrying critical (Tier 1: danger/warning)
128
- messages get a 3px intent edge-stripe and their info panel **auto-opens** below the row —
129
- short_desc plus all schema/validation/dependency messages as slim `ReqoreMessage` strips.
130
- Fields with only Tier-2 info (info/success messages, `default_value_desc` notes, short_desc)
131
- stay one line: a ⓘ toggle in the fixed info slot opens the panel on demand (the per-row
132
- override sticks either way). While a row is edited inline, the editor's own schema-message
133
- strip is suppressed — the panel below the editing row is the single renderer. Stories:
134
- `CompactShowcase` (+`Mobile`).
135
- - **Accessibility.** Read-first rows are real controls (`role="button"`, `tabIndex={0}`, Enter/Space
136
- activate, visible focus ring), not just click handlers; the Done button and dropdowns are native buttons.
137
- - **The caret follows the row that opens.** An opened row moves the caret into the control it offers —
138
- whatever that control is. `findRowFocusTarget` ([`rowFocus.ts`](../src/components/form/engine/rowFocus.ts))
139
- prefers a text-entry control (`input` / `textarea` / `contenteditable`) and otherwise takes the first
140
- other focusable one (a `<button>` selector, a `[tabindex]` reqore checkbox — a pick-one's choices are
141
- not inputs), ignoring an absorbed sibling's editor and the schema-message strip, which belong to other
142
- fields. The row is revealed first — `scrollIntoView({ block: 'nearest' })` on the ROW, a no-op when it
143
- is already visible — because a caret below the fold changes nothing on screen while the next keystroke
144
- goes somewhere invisible; focus itself then uses `preventScroll` so nothing moves twice. A caller that
145
- wants the row **opened without the caret** uses `expandFirstRequired` rather than
146
- `autoFocusFirstRequired`. The search is re-run by a one-shot `MutationObserver` on the row's value cell,
147
- so an editor that mounts its control several commits later (a host editor resolving a catalogue) still
148
- gets the caret, and it gives up the moment the caret is somewhere outside this row. Stories:
149
- `CompactAutoFocusFirstRequired`, `CompactAutoFocusPickOneFirstQuestion`,
150
- `CompactAutoFocusNonFocusableFirstField`, `CompactAutoFocusLateMountingEditor`.
151
- - **A row the AUTHOR opens into a picker opens the picker with it.** Read-first belongs to the
152
- COLLAPSED row; it must not be the answer twice. A picker's editor is a closed trigger printing the
153
- value the read row had just printed, so the row opened, nothing on screen changed, and changing the
154
- value still cost a second click ("clicking on a closed option like 'Kind' opens the option, but the
155
- same chosen value is displayed"). The row decides — it is the only party that knows both that the
156
- author opened it (rather than the form) and which control it offers (`findRowFocusTarget`, the same
157
- scan that hands over the caret) — and the control obeys, through
158
- **`RowOpenPickerContext`** ([`rowOpenPicker.ts`](../src/components/form/engine/rowOpenPicker.ts)), a
159
- one-shot `true` scoped to the row's own editor. A control declares itself a picker with
160
- **`aria-haspopup`** (`isClosedPickerTrigger` in `rowFocus.ts`), which is the attribute's own meaning
161
- and the existing contract with assistive technology — so a host's editor opts in by being accessible.
162
- A context value rather than a synthetic click on the trigger: reqore's popover binds its click
163
- listener in an effect keyed on the trigger element arriving, so a click dispatched from the row's
164
- effect lands before anything is listening.
165
- Read-first is kept where it still says something, and each of these is a term in the condition:
166
- the collapsed row itself; a row the FORM opened (`initialExpandedOptions` — an address, or
167
- qorus-ide's diagram showing a step — and `autoFocusFirstRequired`, which promises the caret and
168
- only the caret); and the edit CARD a complex field opens, which is a form in its own right whose
169
- first control is one of several. Stories: `CompactRowOpensItsPicker`,
170
- `CompactTextRowOpensItsTextBox`; tests: `__tests__/compactRowClickOpensThePicker.test.tsx`.
171
- - **Grouping.** Rows are grouped by each option's raw `group` key into collapsible `ReqorePanel` sections,
172
- each with a `✓ all set` / `⚠ N to resolve` badge (the catch-all `optional` group shows `N optional`
173
- instead). Display per group (label / icon / subtitle / order) is
174
- supplied by the consumer via the **`groups`** prop (the server sends only the bare group key — see
175
- research below); anything omitted defaults to a title-cased key, no icon, and schema order. Ungrouped
176
- required/preselected fields fall back to `general`, everything else to `optional`
177
- (`getOptionGroup` / `getOptionGroupLabel`).
178
- - **Dedicated layout.** Compact does **not** reuse the classic `ReqoreCollection` card-per-field layout —
179
- it renders its own flat rows (label | value | action, zebra blocks + spacing) so it reads like the
180
- IDE's restyled creator rather than a wall of cards. The classic always-expanded path is untouched.
181
-
182
- Interface-specific chrome (status hero, value chips, "Edit code", the help Hint) is intentionally **not**
183
- in the engine — a consumer wraps `FormEngine` and supplies that around it. The **server does not define
184
- group display metadata** (only the bare `group` string per field; no label/icon/order), so each UI owns
185
- it — hence the engine takes group display via the `groups` prop rather than hardcoding it.
186
-
187
- ## Where the logic lives
188
-
189
- - [`readFirst.ts`](../src/components/form/engine/readFirst.ts) — pure, unit-tested helpers:
190
- `formatOptionValue`, `formatColorValue` / `colorToCss` (colour → hex/`rgba()` + swatch CSS),
191
- `formatFileValue` / `getFileSize` / `formatBytes` (file → filename + size), `getHashEntries`
192
- (hash → labelled sub-field summaries), `getOptionGroup` (raw key), `getOptionGroupLabel` (key →
193
- display label, honouring the `groups` prop), `getReadFirstCompletion`, `isOptionValueEmpty`.
194
- - `FormEngine.tsx` — when `compact`, the component early-returns `renderCompact()` (the completion meter,
195
- invalid-fields message, grouped flat rows via `renderCompactRow`, and the "more options" adder) instead
196
- of the classic `ReqoreCollection`. Flat-row styling lives in module-level `styled-components`
197
- (`StyledCompactWrap`, `StyledGroupBody`, `StyledEditCard`) with theme-derived colours. The classic path
198
- is left exactly as it was.
199
-
200
- ## Usage
201
-
202
- ```tsx
203
- <FormEngine
204
- name="my-form"
205
- compact
206
- options={schema}
207
- value={value}
208
- onChange={handleChange}
209
- // optional: per-group display, keyed by the raw `group` string
210
- groups={{
211
- info: { label: 'Info', icon: 'IdCardLine', subtitle: 'Identity and core settings', sort: 0 },
212
- scaling: { icon: 'BroadcastLine', sort: 1 },
213
- }}
214
- />
215
- ```
216
-
217
- ## Async schema (`optionsLoader`)
218
-
219
- `FormEngine` normally renders a schema you hand it via `options`. `optionsLoader` lets the engine **fetch
220
- the schema itself**, owning the loading / error / refetch lifecycle, while staying **transport-agnostic** —
221
- the consumer supplies an async callback that resolves the schema however it likes (the engine never learns
222
- about any backend). This is what lets a consumer converge an old "fetch-by-URL" form (e.g. the qorus-ide
223
- `<Options url=…>` fork) onto the upstream engine without pushing app-specific fetch code into the library.
224
-
225
- ```tsx
226
- const loadSchema = useCallback(() => fetchSchemaSomehow(url), [url]); // memoise → refetch only on change
227
-
228
- <FormEngine
229
- name="protocol-options"
230
- compact
231
- value={value}
232
- optionsLoader={loadSchema} // no `options` — the engine loads it
233
- onChange={handleChange}
234
- />
235
- ```
236
-
237
- - While loading, the engine shows its skeleton; on rejection it renders the error message; on success it
238
- renders the schema and fires `onOptionsLoaded`.
239
- - The loader re-runs when its **identity changes**, so memoise it (`useCallback`) keyed on its inputs — a
240
- fresh function every render would refetch on every render.
241
- - Works in both compact and classic layouts. (Real consumer: qorus-ide's `useRemoteOptionsLoader` feeding
242
- the Connection creator's protocol-specific options panel.)
243
-
244
- ## Tests
245
-
246
- - **Unit:** [`__tests__/readFirst.test.ts`](../__tests__/readFirst.test.ts) — value formatting (incl.
247
- colour hex/`rgba()`, file filename, hash field-count + `getHashEntries` expansion, `formatBytes`),
248
- grouping, completion.
249
- - **Field-type catalog:** the `CompactFieldTypes` story is a literal catalog of the whole `TQorusType`
250
- union (grouped by family) — every renderable type plus the non-renderable/interface-reference types —
251
- asserting colour/file/hash read-first values and the hash "view more" sub-row reveal. Beyond the
252
- type families it carries one-capability-per-row groups for **field chrome** (icon / image / intent /
253
- badge / actions / tags), **descriptions & messages** (short_desc behind ⓘ, desc → `?` dialog,
254
- Tier-1 messages auto-open, Tier-2 behind ⓘ), and **meta** (sensitive / rules / default-value note);
255
- the combined worst-case stress form is `CompactShowcase` (the flagship "real form" story). Two everything-open variants:
256
- `CompactFieldTypesEditing` (every row activated — all ~70 real editors mounted at once) and
257
- `CompactFieldTypesEditingAllRequired` (same, but every field required and unset — each editor in
258
- its required/invalid state; the canary for editors that misbehave on empty required values).
259
- - **Reusable disclosure:** `ReqraftCollapsibleContent` has its own
260
- [`CollapsibleContent.stories.tsx`](../src/components/collapsible/CollapsibleContent.stories.tsx)
261
- (tall content clips + fades with a hover "Show more"; short content shows whole; custom fade colour).
262
- - **`optionsLoader`:** `CompactOptionsLoader` (async load → read-first rows + `onOptionsLoaded`),
263
- `CompactOptionsLoaderError` (rejection → error message), and `OptionsLoader` (classic-layout parity).
264
- - **Interaction:** the `Compact*` stories in
265
- [`FormEngine.stories.tsx`](../src/components/form/engine/FormEngine.stories.tsx), using the shared
266
- `_tests*` helpers. They mirror the classic story matrix: read-first edit (`CompactReadFirstEditing`), the
267
- Fields menu / search / search-hidden / overflow + sticky-top header, revert + show-types,
268
- on_change/refetch + dependents,
269
- and parity scenarios — field types, `required_groups`, `any` type, readonly-default-fix,
270
- non-existent-filtered, the help dialog, and render stability.
271
- - **Full-schema parity:** `CompactBasic` renders compact mode on the **exact** schema + value behind the
272
- classic `Basic` story (the shared fixture
273
- [`__fixtures__/basicFormOptions.ts`](../src/components/form/engine/__fixtures__/basicFormOptions.ts) —
274
- both stories import it, so they can never drift). Every option/state the classic layout exercises runs
275
- through the compact path: both hash options, file, auto, list, allowed-values (+creatable/broken), date,
276
- rgbcolor, richtext, templates, messages, disabled, readonly, depends_on. Running the full fixture
277
- immediately caught two real bugs: `richtextToString` crashing on scalar-valued richtext options, and
278
- `getHashEntries` mis-counting typed envelopes.
279
- - **Workflow-orders hash view:** `StructuredDataView`
280
- ([`_structuredData/`](../src/components/form/engine/_structuredData/)) is a thin Qorus wrapper
281
- around **`ReqoreDataView`** (upstreamed in reqore ≥0.69 — the toolkit was bumped 0.64 → 0.69.2 for
282
- it), mirroring qorus-ide's wrapper of the same name: it plugs in the Qorus typed-envelope
283
- allow-list, the embedded-YAML/JSON string parser, and the Qorus date parser/formatter
284
- (`structuredData.ts`). Theme-driven (key chips = `info` intent, values intent-tinted by type),
285
- scalars stay on the same row as their key at any depth, objects/lists collapse to
286
- `Object · N fields` / `List · N items`. It is the **only hash preview** in the compact form —
287
- the earlier flat key → value sub-row view was removed after Filip signed off on the structured
288
- look (`getHashEntries` remains as the "is this an expandable hash?" gate and for value
289
- summaries). See the `CompactHashStructuredView` story (which also contrasts an
290
- envelope-encoded hash against a raw order-style payload) plus its own
291
- `Form/Engine/StructuredDataView` story. In the compact form the tree is wired up:
292
- the Fields-menu **"Show field types"** toggle also drives the per-scalar type chips inside it,
293
- clicking a **value chip opens the hash's editor** (parity with the flat sub-rows; section
294
- summaries keep their expand/collapse clicks), and `defaultExpandDepth={2}` keeps deep nests
295
- collapsed so the preview stays short before the fade. Known gap: key chips show raw keys, not
296
- `arg_schema` `display_name`s — suggested upstream as
297
- [reqore#568](https://github.com/qoretechnologies/reqore/issues/568) (`keyLabel` callback).
298
-
299
- Interface-specific chrome the IDE still wraps around the engine (Phase 3): the status hero, value chips
300
- (e.g. the language logo), "Edit code", and the "Editing this form" Hint.