@qoretechnologies/reqraft 0.10.66-pr.145.gcb1e59d → 0.10.66

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