@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,290 +0,0 @@
1
- # Tracking, consent and A/B testing
2
-
3
- First-party analytics, a consent gate and client-side A/B testing for any Qore web app (the
4
- landing site, the Qorus IDE, the admin portal). One module, one server: every product sends to
5
- the same collector and reads the same experiments, and **the server keeps each product's data
6
- separate by `property`**: events, goals, experiments and results never mix between properties.
7
-
8
- The contract (event shapes, the batch envelope, experiment definitions, goals, statistics,
9
- storage, the admin API) is owned by qorus-api:
10
- [`design/analytics-and-experiments-design.md`](https://git.qoretechnologies.com/qorus/qorus-api/-/blob/develop/design/analytics-and-experiments-design.md)
11
- (introduced in [qorus-api MR !34](https://git.qoretechnologies.com/qorus/qorus-api/-/merge_requests/34)).
12
- Change the contract there first, then the code here. Section numbers below (§3, §5 …) refer to it.
13
-
14
- ## 1. What it does
15
-
16
- - **Anonymous, with consent.** Nothing is sent and no id exists until the user allows tracking.
17
- Then a random visitor id (`vid`) lives in `localStorage["<prefix>vid"]`. Declining or
18
- withdrawing deletes it and stops everything.
19
- - **Events** go in batches to the collector: page views, a page summary (time, engaged time,
20
- scroll depth, per-section attention), clicks on tagged elements, a heartbeat, goals, custom
21
- events and experiment exposures.
22
- - **Experiments** are fetched from the experiments endpoint (`?property=<property>` appended)
23
- and every visitor is assigned locally with GrowthBook's hash v2 on the `vid`, the same way on
24
- every visit and every page.
25
- - **Fails open.** No backend, no consent, blocked storage, an error anywhere: the app works as
26
- without the module, every experiment shows its control, and nothing is thrown into the page.
27
-
28
- ## 2. Install and import
29
-
30
- ```bash
31
- yarn add @qoretechnologies/reqraft
32
- ```
33
-
34
- Everything is exported from the package root, and from its own entry, which loads nothing else
35
- from Reqraft (no Reqore, react-query or editors; React is its only dependency). Prefer the entry
36
- in an app that does not already use Reqraft:
37
-
38
- ```ts
39
- import { createBrowserTracker, TrackingProvider, Experiment } from '@qoretechnologies/reqraft/dist/tracking';
40
- // or
41
- import { createBrowserTracker, TrackingProvider, Experiment } from '@qoretechnologies/reqraft';
42
- ```
43
-
44
- The module has three layers, and each only imports the ones above it:
45
-
46
- | Layer | Folder | What |
47
- |---|---|---|
48
- | core | `src/tracking/core/` | plain TypeScript, no DOM: `Tracker`, consent, the batching queue, section and engagement clocks, hashing, assignment, the experiments client |
49
- | browser | `src/tracking/browser/` | the only code that touches `window` / `document`: transport (`sendBeacon` → `fetch` keepalive), storage, listeners, `IntersectionObserver` on sections, delegated clicks |
50
- | react | `src/tracking/react/` | `<TrackingProvider>`, `useTracker`, `useConsent`, `useExperiment`, `<Experiment>` |
51
-
52
- Plus `markup.ts` (`trackClick`, `trackSection`) and `testing.ts` (`createMemoryTracker`). The A/B test UI (the card and the overlay, on Reqore) is a fourth layer, `src/tracking/ui/`, with its own entry (§8); the engine never imports it.
53
-
54
- ## 3. Configure one tracker per app
55
-
56
- Create the tracker once, at module level, and mount the provider at the app shell:
57
-
58
- ```tsx
59
- import { createBrowserTracker, TrackingProvider } from '@qoretechnologies/reqraft/dist/tracking';
60
-
61
- export const tracking = createBrowserTracker({
62
- property: 'ide', // required: which product the data belongs to
63
- endpoint: '/qorus-cloud/collect', // required: the collector (POST)
64
- experimentsEndpoint: '/qorus-cloud/experiments', // required: running experiments (GET)
65
- storagePrefix: 'qa.ide.', // when another product shares the origin
66
- consentVersion: 1,
67
- enabled: import.meta.env.PROD,
68
- debug: false,
69
- });
70
-
71
- const App = () => {
72
- const location = useLocation();
73
- return (
74
- <TrackingProvider tracker={tracking.tracker} attach={tracking.attach} location={location.pathname + location.search}>
75
- <Routes>…</Routes>
76
- </TrackingProvider>
77
- );
78
- };
79
- ```
80
-
81
- Each `location` change is a new page view. Without a provider (or with `tracker={null}`),
82
- everything still renders: consent reads `unknown` and experiments show their control.
83
-
84
- | Option | Default | Meaning |
85
- |---|---|---|
86
- | `property` | required | The product (`landing`, `ide`, `admin`, …). Sent with every batch and with the experiments request; the server keeps each property's data apart. |
87
- | `endpoint` | required | Collector URL. Same origin in the products so far. |
88
- | `experimentsEndpoint` | required | Running-experiments URL; `?property=` is appended. |
89
- | `enabled` | `true` | `false`: nothing is ever sent and every experiment shows its control. Turn it off where a page view is not a visit (a preview iframe, a test build). |
90
- | `consentVersion` | `1` | Bump when the consent text changes materially: stored answers to older versions count as no answer, so the prompt asks again. |
91
- | `storagePrefix` | `qa.` | Prefix of every storage key. **Two products on one origin need different prefixes**, or they share one consent answer, one visitor id and one experiments cache. |
92
- | `previewParam` | `qa_variant` | Query parameter of a shareable preview link. |
93
- | `debug` | `false` | Log every batch (and every swallowed error) to the console. |
94
- | `flushIntervalMs`, `maxQueued`, `heartbeatMs`, `sessionTimeoutMs`, `engagedWindowMs` | 5 s, 20, 15 s, 30 min, 10 s | Batching and timing. |
95
-
96
- `resolveConfig(options)` gives the full config; `DEFAULT_CONFIG` holds the defaults.
97
-
98
- ## 4. Consent
99
-
100
- ```tsx
101
- const { state, grant, deny, available } = useConsent(); // state: 'unknown' | 'granted' | 'denied'
102
- ```
103
-
104
- - Stored in `localStorage["<prefix>consent"]` (`granted` | `denied`) and `<prefix>consent.v`
105
- (the version answered).
106
- - Before `granted`: no id, no request to the collector, controls only, sign-up links
107
- undecorated. The experiments list is still fetched: it is public and carries no visitor data.
108
- - `deny()` (declining or withdrawing) deletes `vid`, `exp`, `sid` and `utm` and drops unsent events.
109
- - The consent prompt is the app's own UI. `openConsentSettings()` / `closeConsentSettings()` /
110
- `useConsentPanelOpen()` let a "Cookie settings" link reopen it.
111
-
112
- ## 5. Experiments
113
-
114
- Wrap what is being tested:
115
-
116
- ```tsx
117
- <Experiment id='signup-cta' trigger='pricing' variants={{ a: <Current />, b: <New /> }} />
118
- ```
119
-
120
- or, for logic rather than markup:
121
-
122
- ```tsx
123
- const { variant, assignment, triggerRef } = useExperiment('signup-cta', { variants: ['a', 'b'] });
124
- ```
125
-
126
- - `a` is the control unless `control="…"` says otherwise; the control must be today's behaviour.
127
- - **The variant is decided once when the component mounts** and kept for the page view: no
128
- flicker. A consent or definition that arrives later applies from the next page view.
129
- - **Exposure** is logged once per page view, only for enrolled visitors, when the trigger is
130
- seen: the definition's `trigger.section`, else the `trigger` prop, else the element you put
131
- `triggerRef` on, else at render.
132
- - Visitors without consent, outside `traffic`, or not targeted see the control and log nothing.
133
- A concluded experiment shows its winner to everybody and logs nothing.
134
- - Order of `tracker.decide()`: a concluded winner, then the in-app switch or a preview link, then
135
- consent, the definition and the assignment. `assignment.reason` says which one decided.
136
- - `<Experiment>` wraps its output in a `display: contents` element (no box, so the layout is
137
- unchanged) with `data-experiment`, `data-variant`, `data-variants` and
138
- `data-experiment-reason`, so an editor overlay can find every test on the page.
139
- - **Preview link:** `?qa_variant=signup-cta:b` (several: `?qa_variant=a-test:b,other:a`) shows a
140
- version for QA, sticks for the browser session, works without consent and is never logged.
141
- `?qa_variant=clear` removes it.
142
- - **In-app switch** (for an editor): `tracker.experiments.setEditorOverride(key, variant | null)`
143
- shows one version in this browser, live and never logged; `tracker.experiments.refresh()`
144
- reloads the definitions and makes mounted experiments decide again.
145
-
146
- Assignment (§5.2): `n = fnv1a32(String(fnv1a32(key + vid))) % 10000 / 10000`; variant *i* owns
147
- `[c_i, c_i + traffic × w_i)` where `c_i` is the sum of the weights before it. Raising `traffic`
148
- never moves an enrolled visitor. Fixed vectors: `__tests__/tracking/hash.test.ts`; if one of them
149
- changes, every visitor's assignment changes.
150
-
151
- The experiment itself (key, variants, weights, traffic, targeting, trigger, metrics) is created
152
- and started through the admin API (§9); until it runs, everybody sees the control.
153
-
154
- ## 6. Events, goals and markup
155
-
156
- ```ts
157
- const tracker = useTracker(); // null outside the provider: always use ?.
158
- tracker?.goal('contact-submitted'); // a conversion the server's goals can match
159
- tracker?.goal('demo-booked', 1); // with a value
160
- tracker?.custom('plan-picked', { plan: 'pro' }); // a named event with props
161
- ```
162
-
163
- Never put free text a user typed, emails or names in props.
164
-
165
- **Sections** (visible time, "seen", exit section) and **clicks** are tagged in markup; one
166
- `IntersectionObserver` and one delegated click listener pick them up:
167
-
168
- ```tsx
169
- <section data-track-section='pricing'>…</section>
170
- <ReqoreButton data-track-click='get-started' data-track-placement='hero'>Get started</ReqoreButton>
171
- // where JSX attributes cannot be written (object-literal props, e.g. panel actions):
172
- <ReqorePanel actions={[{ ...trackClick('contact', 'pricing-panel'), label: 'Talk to us' }]} />
173
- <div {...trackSection('pricing')}>…</div>
174
- ```
175
-
176
- - `data-track-click` is what the click means (`get-started`, `contact`, …);
177
- `data-track-placement` is where (defaults to the enclosing section's id);
178
- `data-track-label` overrides the label (defaults to the element's text).
179
- - "Seen" is at least 50 % of the section, or 50 % of the screen covered by it, for at least one
180
- second in one stretch, with the tab visible. Reports key on section ids: keep them stable.
181
-
182
- **Sign-up attribution** (§5.4): `tracker.decorateSignupUrl(url)` adds
183
- `qa_exp=<experiment>:<variant>,…` and the session's first-touch `utm_*` to a sign-up link (with
184
- consent only, never the `vid`); the server's sign-up flow reads them.
185
-
186
- ## 7. Tests and stories
187
-
188
- `createMemoryTracker(options)` is a tracker with no browser behind it: memory storage, a clock
189
- and timers you drive, and a transport that records every batch.
190
-
191
- ```ts
192
- import { createMemoryTracker } from '@qoretechnologies/reqraft/dist/tracking';
193
-
194
- const m = createMemoryTracker({ consent: 'granted', vid: 'visitor-1', experiments: [definition] });
195
- m.tracker.start();
196
- await m.advance(5000); // runs due timers: the queue flushes
197
- m.sent[0].batch.events; // what reached the collector
198
- m.local.get(m.keys.vid); // storage, under the configured prefix
199
- ```
200
-
201
- Options: `config` (any config field; `property` defaults to `test`), `consent`, `experiments`
202
- (a list, a function read on every load, or `'fail'`), `page` (path, search, device, …), `vid`,
203
- `start` (the clock), `seed` (localStorage before the tracker starts). In a story, pass
204
- `m.tracker` to `<TrackingProvider>` without `attach`; seed the experiments cache
205
- (`KEYS.experimentsCache`) so the first render already has the definitions — see
206
- `src/tracking/ui/ExperimentsOverlay.stories.tsx`.
207
-
208
- Unit tests: `__tests__/tracking/` (hashing vectors, assignment, consent gating, batching,
209
- sections, page views, sign-up links, concluded winners, the in-app switch, product config,
210
- the React bindings, and the layer rules).
211
-
212
- ## 8. The A/B test UI: embed the overlay
213
-
214
- The same A/B test controls every product shows, built on Reqore, in their own entry so the engine
215
- stays light:
216
-
217
- ```ts
218
- import { ExperimentsOverlay, ExperimentCard, useExperimentsAdmin } from '@qoretechnologies/reqraft/dist/tracking/ui';
219
- ```
220
-
221
- | Export | What |
222
- |---|---|
223
- | `<ExperimentsOverlay>` | Finds every `<Experiment>` on the page (its `data-experiment` marker) and draws a dashed outline and an "A/B test · <name>" handle at its corner. Hover, keyboard focus or a click opens the test's card, anchored to the element: it scrolls and resizes with it and flips above or below the handle to stay in view. ✕, Esc and a click outside close it. An ended test shows "Winner live · code clean-up pending" instead. |
224
- | `<ExperimentCard>` | One test: name, status tag, a "?" help and ✕; the verdict; one row per version, best first (conversion on the primary metric, then visitors; re-sorted only when new data arrives), the best one tagged "Leading", or "Winner" for a likely winner or an ended test's winner (a success-coloured glow and wash on its row, stronger for a winner; static, nothing animates), the original tagged "Original". Tags use Reqore's `appearance="soft"` (reqore 0.77.2+); a long title stays on one line with an ellipsis. A row shows visitors, conversion, chance to beat the original and a bar; the shown version has an info-coloured ring and wash (`aria-current`; the row itself takes no intent, so its actions stay neutral); the whole row shows that version (Enter / Space too). Row actions: a neutral, minimal "Show analytics" for that version (`versionDetailsUrl`), minimal Accept, and a bin icon (Remove) at the far end. Footer: the optional "Open in …" link (hidden while the test is not set up; just its icon in a card narrower than 400 px) and Start / Resume (solid), Pause, Stop. Past three and a half rows the list scrolls inside the card. Every action asks first (Reqore's confirm dialog) and notifies what happened. |
225
- | `useExperimentsAdmin(options)` | Optional: the list and the actions from the qorus-api routes. |
226
- | `createExperimentsAdminClient(options)` | The same without React. |
227
- | `placeCard`, `cardReducer`, `versionRows`, `verdictLine`, `versionsMaxHeight`, … | The plain logic behind them, for tests and custom UIs. |
228
-
229
- Both components are driven by props only: the data is the qorus-api editor / admin list (an array of
230
- `{ experiment, results }`: the admin experiment object with `status`, `variants`, `phase`,
231
- `phases`, `history`, `winner`, and the results object with `verdict_text` and the per-metric
232
- numbers), and every action is a callback that may return a promise (the button shows busy until it
233
- settles, and a rejection's message is shown). An action whose callback is not given does not
234
- appear. Neither makes a request of its own.
235
-
236
- ```tsx
237
- import { ExperimentsOverlay, useExperimentsAdmin } from '@qoretechnologies/reqraft/dist/tracking/ui';
238
-
239
- const AbTestsLayer = ({ visible }: { visible: boolean }) => {
240
- const admin = useExperimentsAdmin({
241
- listUrl: '/qorus-cloud/editor/experiments?property=ide', // actions go to …/experiments/<key>/<action>
242
- headers: { Authorization: `Bearer ${editorToken}` }, // or leave it to a proxy
243
- enabled: visible,
244
- });
245
- return (
246
- <ExperimentsOverlay
247
- visible={visible} // the product's "hide editor elements"
248
- tests={admin.tests}
249
- loadError={admin.error}
250
- onAccept={admin.accept}
251
- onRemove={admin.remove}
252
- onStart={admin.start}
253
- onPause={admin.pause}
254
- onStop={admin.stop}
255
- detailsUrl={(key) => `${ADMIN_PORTAL}/analytics?dashboard=tracking&experiment=${key}`}
256
- actorLabels={{ 'ide-editor': 'in the IDE' }}
257
- topInset={() => document.querySelector('header')?.getBoundingClientRect().bottom ?? 0}
258
- />
259
- );
260
- };
261
- ```
262
-
263
- - Mount it inside `<TrackingProvider>`: then clicking a version's row uses the tracker's in-app
264
- switch (`tracker.experiments.setEditorOverride`, this browser only, never logged), and after
265
- an action the page shows what visitors see now (the switch is cleared and the tracker reloads
266
- the definitions). Pass `onShow` / `onSettled` to do something else.
267
- - `versionDetailsUrl={(key, variant) => \`${ADMIN_PORTAL}/analytics?dashboard=tracking&experiment=${key}&variant=${variant}\`}`
268
- adds the per-version "Show analytics" action (the admin portal opens the test with that version
269
- expanded); without it the action is hidden. `detailsUrl` stays for the whole test.
270
- - The "?" opens a dialog explaining the test for a marketer: every button, how visitors are split
271
- and counted, reading the verdict and the chance to beat, the too-early rule (the test's
272
- `min_sample`, 200 visitors per version and 7 days by default), a test that is not set up, and
273
- where the full analytics are (`analyticsLabel`).
274
- - A test that is in the page's code (`<Experiment>`) but not registered in the analytics service
275
- yet shows "Not set up" and asks to have it set up (`notSetUpText` changes the words); when the list
276
- cannot be loaded (`loadError`) it shows "No connection" instead.
277
- - `exclude` (a selector) skips markers inside the product's own UI (e.g. its preview frames);
278
- markers inside the overlay itself are always skipped.
279
- - The same overlay works inside a phone-preview iframe: mount it in the frame's page too. The
280
- switch is shared through `localStorage`, so both follow it.
281
- - `useExperimentsAdmin` reloads the list every minute (`refreshMs`) and after every action; its
282
- errors explain a 401 / 403 as a missing or wrong key. `actionUrl` and `createUrl` change the
283
- routes; `fetch` replaces the transport.
284
- - The card on its own: `<ExperimentCard experimentKey="signup-cta" test={entry} shown="a" codeVariants={['a', 'b']} onShow={…} onAccept={…} … />`.
285
-
286
- Stories: `Tracking/Experiment Card` (draft, running with two and five versions, paused, concluded,
287
- no data yet, not set up, no connection, the confirm step on Remove, the help) and
288
- `Tracking/Experiments Overlay` (anchored, flipped above near the bottom, hidden), each in dark,
289
- light and phone. The visually empty ones (hidden, the phone flip) run as tests without a Qlip
290
- snapshot (`parameters.qlip.skip`).
@@ -1,226 +0,0 @@
1
- # An offered value that cannot be picked
2
-
3
- **As-built.**
4
- `src/components/form/engine/OptionFieldMessages.tsx` —
5
- `getAllowedValueAvailability`, `useAllowedValueAvailability`,
6
- `ALLOWED_VALUE_AVAILABLE`;
7
- `src/helpers/options.ts` — `getRefusalMessage`,
8
- `UNAVAILABLE_VALUE_FALLBACK_REASON`;
9
- `src/components/form/fields/select/SelectCollection.tsx` —
10
- `getSelectItemUnavailability`, `UNAVAILABLE_ITEM_CLASS`,
11
- `getSelectItemTitleActions`;
12
- `src/helpers/validations.ts` — `parseDependency`, `isDependencyFulfilled`.
13
-
14
- ## The rule
15
-
16
- A value that is offered and cannot be picked is **disabled and says why**. It
17
- is never hidden, and it is never silently inert.
18
-
19
- Hiding it is worse than either: a choice that vanishes takes its own
20
- explanation with it, and leaves the reader looking for something they were
21
- told exists.
22
-
23
- The rule already existed one level up, on whole FIELDS — a field whose
24
- `depends_on` is unmet renders locked with the dependency named. A VALUE had no
25
- such grammar: a picker could mark a choice `disabled`, and the result was a row
26
- that ignored clicks and explained nothing.
27
-
28
- ## The two sources, and why they render identically
29
-
30
- Two things can refuse a value:
31
-
32
- - **the predicate** — the value's own `depends_on`, judged against the form it
33
- is standing in. Whatever the form itself can decide.
34
- - **the pre-resolved refusal** — `disabled: true` with `messages`, from whoever
35
- already knows: the server, for a sandbox or permission context, a capability
36
- of the selected kind, or a requirement in a scope `depends_on` deliberately
37
- cannot reach.
38
-
39
- They render identically, because a reader has no way to tell them apart and no
40
- reason to care. The predicate is checked first when both could speak: it names
41
- a field in this very form, so the reader can act on it without leaving the row,
42
- while a served reason is a statement about somewhere else.
43
-
44
- `getAllowedValueAvailability` is the one place that decides, and
45
- `getRefusalMessage` is the one place that decides WHICH of a value's messages
46
- is the reason — `danger`, then `warning`, then the first. Without that, the
47
- picker and the form's own resolver could word the same refusal differently.
48
-
49
- A refusal with no message at all still says something
50
- (`UNAVAILABLE_VALUE_FALLBACK_REASON`, "This value is not available"). Silence
51
- over a value that will not respond is the defect this exists to remove.
52
-
53
- ### Never reqore's `disabled`
54
-
55
- A refused VALUE is never handed to reqore's `disabled`. That applies
56
- `DisabledElement`, which is `pointer-events: none` — and it takes the row's
57
- tooltip and any control in its title bar with it, which are the two places the
58
- reason can be read. What makes a row inert is **having no handler**: reqore
59
- derives `interactive` from the handlers a panel or a button was given, so a row
60
- with none gets no pointer cursor and no hover lift while keeping every pointer
61
- event it had.
62
-
63
- The FIELD's own `disabled` still goes through reqore. A field nobody may edit
64
- has no explanation to protect.
65
-
66
- The dimming lands on the **title**, never on the row: `opacity` creates a
67
- stacking context, so dimming the row would dim the reason inside it.
68
-
69
- ## The `!name` grammar
70
-
71
- `depends_on` on a value is the same grammar, the same parser and the same
72
- evaluator a FIELD's `depends_on` uses, one level down. Top-level entries are an
73
- AND; a nested array is an OR of its own entries. Four entry forms:
74
-
75
- | Entry | Holds when |
76
- | ------------- | ----------------------------------------------- |
77
- | `name` | the sibling has a value |
78
- | `!name` | the sibling has **no** value |
79
- | `name=value` | the sibling holds exactly that value |
80
- | `name!=value` | the sibling is answered, and not with that value |
81
-
82
- `!name` is the form `name!=value` cannot make. "Not X" is a statement about an
83
- answer, so `!=` requires the sibling to be answered; two options that exclude
84
- one another each apply only while the OTHER has not been answered at all.
85
- `!` binds to the whole entry, so `!name` never carries a value, and `!=` is
86
- parsed first — which is what keeps `name!=value` from being read as a leading
87
- `!`.
88
-
89
- An absent sibling satisfies `!name`, exactly as it fails the bare form: neither
90
- has an answer to judge, and a mutual exclusion that locked both halves until
91
- one of them was materialised would offer the author no way in.
92
-
93
- `!name` also gets a sentence of its own when it is named to the reader
94
- (`"Session Cookie Name" must have no value`). Run through the comparison
95
- template it would have read `must not be "undefined"`.
96
-
97
- ## Which paths are converted
98
-
99
- Every single-value picker reqraft draws carries the full shape — **no reqore
100
- `disabled`, no handler, the reason printed in the row and readable on hover,
101
- the name dimmed, a padlock**:
102
-
103
- | Path | Refused by | Notes |
104
- | ----------------------------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------- |
105
- | `SelectFieldCollection` (the dialog picker) | no row handler | reason ABOVE the description, padlock title action, tooltip, and folded into `searchString` so the reason is searchable |
106
- | `SelectFormField` → `reqoreItems` (anchored dropdown) | no row handler | reason leads the description; `effect` dims |
107
- | `SelectFormField` → `asMenu` | no row handler | `readOnly` for the cursor, `effect` dims |
108
- | `SelectFormField` → `creatableItems` (`ReqoreSelect`) | `handleCreatableChange` | reqore owns this list's selection — see below |
109
- | `FieldAllowedValuesCheckGroup` (≤3 values) | no row handler | `labelEffect` + `readOnly`; the reason is the checkbox `description` |
110
- | `FormField`'s own ≤3 checkbox group | no row handler | same |
111
- | `MultiSelectFormField` | `onValueChange` | reqore owns this list's selection — see below |
112
-
113
- On a checkbox the reason is IN the row rather than only on its hover: a
114
- checkbox has no body to bury it in, and a hover is the one affordance a touch
115
- screen and a keyboard never reach. The dimming there is `labelEffect`, not
116
- `effect` — a non-switch `ReqoreCheckbox` destructures `effect` out and never
117
- applies it, so a row that asked for `effect` got the padlock, the cursor and
118
- **no dimming at all**. `labelEffect` reaches the label's `ReqoreTextEffect`,
119
- which is also the right thing to dim, since the `description` beside it carries
120
- the reason.
121
-
122
- ### Where the refusal is not on the row
123
-
124
- `ReqoreSelect` and `ReqoreMultiSelect` own their own selection: their rows take
125
- no per-item handler this code could withhold. Against the reqore we pin
126
- (`^0.74.1`) the only per-row prop that refuses is `disabled`, which is the one
127
- prop the rule forbids — so for those two the row is *marked* (reason,
128
- tooltip, padlock, dimming, `readOnly` cursor) and the refusal lands in the one
129
- handler this code does own:
130
-
131
- - `handleCreatableChange` drops an offered value that is unavailable. A
132
- creatable field can reach the same value by typing its text, which is the
133
- same value by another route and is refused as one. Clearing (`undefined`) is
134
- the author's own act and is never refused.
135
- - `MultiSelectFormField`'s `onValueChange` drops a newly added refused value
136
- and **keeps** any value the selection already held (see "A value that becomes
137
- unavailable", below).
138
-
139
- reqore 0.76.0 makes a `readOnly` dropdown / select item unchoosable by click
140
- and by keyboard. When reqraft's pin moves to it, those rows refuse themselves
141
- and the two handler guards become a second lock on the same door.
142
-
143
- ## What is deliberately NOT converted
144
-
145
- - **The `*` wildcard in `MultiSelectFormField`** still uses reqore's
146
- `disabled` for the other items while `*` is selected. That is a state of the
147
- SELECTION, not a refusal of the value, and it has no reason of its own to
148
- protect.
149
- - **`MultiSelectFormField` does not judge `depends_on` on a value.** It is
150
- handed the raw `allowed_values` rather than the mapped items the single-value
151
- pickers build, so only a server-resolved refusal (`disabled` + `messages`)
152
- reaches it. Closing this means calling `useAllowedValueAvailability` inside
153
- that component; it is a behaviour extension rather than a fix, and it is not
154
- in this change.
155
- - **Keyboard navigation still stops on a refused dropdown row.** reqore 0.74.1
156
- excludes `disabled` rows from a dropdown's arrow-key walk, and it has no
157
- notion of a row that merely carries no handler. So the arrows land on a
158
- refused row and Enter silently does nothing. The row is fully readable there,
159
- which is the point, but the keyboard gives no other signal. reqore 0.76.0
160
- excludes a `readOnly` row from the same walk, so this closes when the pin
161
- moves.
162
- - **The resolver and the hook are not exported.**
163
- `getAllowedValueAvailability`, `useAllowedValueAvailability`,
164
- `UNAVAILABLE_VALUE_FALLBACK_REASON` and `getRefusalMessage` are not in
165
- `src/index.tsx` or `src/components/form/index.tsx`, so a host cannot reach
166
- any of them today. Only `getSelectItemUnavailability` and
167
- `UNAVAILABLE_ITEM_CLASS` are public, through the `SelectCollection` barrel
168
- entry. A host that wants to resolve availability itself needs the exports
169
- added — this is a deliberate hold, not an oversight: the shape of
170
- `IAllowedValueAvailabilityInput` is provisional until ts-toolkit publishes
171
- `depends_on` on `IQorusAllowedValue` and `IReqraftAllowedValue` collapses
172
- into it.
173
-
174
- ## Two behaviour changes worth knowing about
175
-
176
- ### A bare `disabled` item with no message
177
-
178
- `getSelectItemUnavailability` treats ANY `disabled` item as a refusal, and
179
- gives it the fallback reason when it carries no message. A caller who marked an
180
- item `disabled` purely to grey it out now gets a row that is dimmed, padlocked,
181
- carries the words "This value is not available", and — in the collection and
182
- dropdown paths — keeps its pointer events instead of being `pointer-events:
183
- none`. That is the intended treatment: a value that will not respond and says
184
- nothing is exactly the defect this mechanism removes. A caller who wants the
185
- old deadening on an offered value has no way to ask for it.
186
-
187
- ### `metadata` woke a dead branch
188
-
189
- `mapAllowedValue` used to be an eleven-key whitelist, and `metadata` was not
190
- one of the keys. `SelectFormField`'s `hasItemsWithWarning` / `hasWarning`
191
- (`Select.tsx`, ≈L243 and ≈L256) read `item.metadata?.needs_auth` and colour the
192
- control and its item-count badge `warning` — a branch that could never fire for
193
- items built by `mapAllowedValue`. Forwarding `metadata` activated it: a field
194
- offering a connection that needs authentication now shows a warning intent
195
- where it previously showed none. This is the branch doing what it was written
196
- to do, but it is a visible change, and it arrived as a side effect of widening
197
- the whitelist rather than as its own decision.
198
-
199
- ## A value that becomes unavailable while it is selected
200
-
201
- **Deliberately left alone.** An already-selected value that later becomes
202
- unavailable is neither cleared nor flagged as an error: the picker refuses it,
203
- and the form goes on holding it and reporting it valid.
204
-
205
- Clearing it would destroy an answer the author gave, on an edit to a *sibling*
206
- field — which is a far worse failure than holding a value the form can no
207
- longer offer. The author can still see the value, and still change or remove it
208
- themselves; in the multi-select they can still remove its chip. The refusal
209
- only ever prevents a NEW selection, which is why
210
- `MultiSelectFormField.onValueChange` compares against the values it already
211
- holds rather than filtering the refused list wholesale.
212
-
213
- Two consequences to know:
214
-
215
- - Validation does not object. `validateField` has no general notion of an
216
- allowed value being unavailable. The one exception is a `connection`-typed
217
- field, which has always rejected a value whose allowed-value entry carries
218
- `disabled` or `metadata.needs_auth` — and that check reads the SCHEMA's own
219
- `disabled`, so a value refused only by its `depends_on` still validates.
220
- - In the creatable and multi-select pickers the selected chip is built by
221
- spreading the item, so a held value that is now refused shows dimmed and
222
- padlocked. That is the only place the state is visible on the value itself.
223
-
224
- If a held-but-refused value should ever become an error, it belongs in
225
- `validateField` beside the `connection` case, and it needs the resolved
226
- availability — not the schema's `disabled` — to be correct.
@@ -1,49 +0,0 @@
1
- /// <reference types="react" />
2
- import { IReqoreTheme } from '@qoretechnologies/reqore/dist/constants/theme';
3
- /**
4
- * How a form looks. The look only: which fields exist, how they bucket, what a
5
- * click does and what is validated are identical in every appearance.
6
- *
7
- * - `'calm'` (the default) — colour only where something needs a person. The
8
- * status boxes are plain panels on the theme's panel surface with label/value
9
- * rows split by hairlines; labels are grey; a missing required value is an
10
- * amber word instead of a red asterisk and message; counts are quiet numbers;
11
- * a healthy row carries no dot; Yes/No are plain words; nothing is forced
12
- * into uppercase.
13
- * - `'classic'` — the earlier read-first look, for a host that asks for it:
14
- * tinted status boxes, an intent-coloured completion meter, a status dot on
15
- * every row.
16
- */
17
- export type TFormEngineAppearance = 'calm' | 'classic';
18
- /**
19
- * The appearance in force for everything below it: the engine's own rows and
20
- * toolbar, every field editor it mounts, and every nested (`arg_schema`)
21
- * sub-form, which inherits it unless it is given one of its own.
22
- *
23
- * `FormEngine` provides it from its `appearance` prop. A host may also wrap
24
- * its whole tree in it, to set the appearance once for every form — and for
25
- * the field components it renders outside a form.
26
- */
27
- export declare const FormAppearanceContext: import("react").Context<TFormEngineAppearance>;
28
- export declare const FormAppearanceProvider: import("react").Provider<TFormEngineAppearance>;
29
- /** The appearance in force here; `'calm'` when nothing set one. */
30
- export declare const useFormAppearance: () => TFormEngineAppearance;
31
- /** Shorthand for the one question most call sites ask. */
32
- export declare const useIsCalmForm: () => boolean;
33
- /**
34
- * The surface a calm section paints, matching the one Reqore gives a panel:
35
- * `theme.panel.main` when the theme declares one, else the panel shade Reqore
36
- * derives from `main`. Read here rather than through Reqore's own helper so the
37
- * whole peer range keeps working — the helper arrived after the floor.
38
- */
39
- export declare const getCalmPanelSurface: (theme: IReqoreTheme) => string;
40
- /** The neutral 1px edge of a calm section, and of every row inside it. */
41
- export declare const getCalmPanelHairline: (theme: IReqoreTheme) => string;
42
- /**
43
- * What a calm form writes in place of an empty required value. Editable: what
44
- * to do about it. Read-only: only what is the case, because the reader cannot
45
- * add anything.
46
- */
47
- export declare const CALM_REQUIRED_LABEL = "Required \u00B7 add a value";
48
- export declare const CALM_REQUIRED_READ_LABEL = "Required \u00B7 not set";
49
- //# sourceMappingURL=formAppearance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formAppearance.d.ts","sourceRoot":"","sources":["../../../../src/components/form/engine/formAppearance.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAQ7E;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,gDAA8D,CAAC;AAEjG,eAAO,MAAM,sBAAsB,iDAAiC,CAAC;AAErE,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,QAAO,qBACQ,CAAC;AAE9C,0DAA0D;AAC1D,eAAO,MAAM,aAAa,QAAO,OAAyC,CAAC;AAiB3E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,UAAW,YAAY,KAAG,MACmC,CAAC;AAE9F,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,UAAW,YAAY,KAAG,MACqC,CAAC;AAEjG;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,gCAA2B,CAAC;AAC5D,eAAO,MAAM,wBAAwB,4BAAuB,CAAC"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CALM_REQUIRED_READ_LABEL = exports.CALM_REQUIRED_LABEL = exports.getCalmPanelHairline = exports.getCalmPanelSurface = exports.useIsCalmForm = exports.useFormAppearance = exports.FormAppearanceProvider = exports.FormAppearanceContext = void 0;
4
- var colors_1 = require("@qoretechnologies/reqore/dist/helpers/colors");
5
- var react_1 = require("react");
6
- /**
7
- * The appearance in force for everything below it: the engine's own rows and
8
- * toolbar, every field editor it mounts, and every nested (`arg_schema`)
9
- * sub-form, which inherits it unless it is given one of its own.
10
- *
11
- * `FormEngine` provides it from its `appearance` prop. A host may also wrap
12
- * its whole tree in it, to set the appearance once for every form — and for
13
- * the field components it renders outside a form.
14
- */
15
- exports.FormAppearanceContext = (0, react_1.createContext)(undefined);
16
- exports.FormAppearanceProvider = exports.FormAppearanceContext.Provider;
17
- /** The appearance in force here; `'calm'` when nothing set one. */
18
- var useFormAppearance = function () { var _a; return (_a = (0, react_1.useContext)(exports.FormAppearanceContext)) !== null && _a !== void 0 ? _a : 'calm'; };
19
- exports.useFormAppearance = useFormAppearance;
20
- /** Shorthand for the one question most call sites ask. */
21
- var useIsCalmForm = function () { return (0, exports.useFormAppearance)() === 'calm'; };
22
- exports.useIsCalmForm = useIsCalmForm;
23
- /** The theme's own panel surface, when it declares one (Reqore >= 0.78.6). */
24
- var getDeclaredPanelSurface = function (theme) {
25
- var themed = theme;
26
- // Same rule as Reqore's `getThemePanelSurface`: a component whose `main` was
27
- // moved off the original (a custom theme, an intent) keeps deriving its own.
28
- return themed.panel && (!themed.originalMain || themed.main === themed.originalMain) ?
29
- themed.panel
30
- : undefined;
31
- };
32
- /**
33
- * The surface a calm section paints, matching the one Reqore gives a panel:
34
- * `theme.panel.main` when the theme declares one, else the panel shade Reqore
35
- * derives from `main`. Read here rather than through Reqore's own helper so the
36
- * whole peer range keeps working — the helper arrived after the floor.
37
- */
38
- var getCalmPanelSurface = function (theme) { var _a, _b; return (_b = (_a = getDeclaredPanelSurface(theme)) === null || _a === void 0 ? void 0 : _a.main) !== null && _b !== void 0 ? _b : (0, colors_1.changeDarkness)((0, colors_1.getMainBackgroundColor)(theme), 0.03); };
39
- exports.getCalmPanelSurface = getCalmPanelSurface;
40
- /** The neutral 1px edge of a calm section, and of every row inside it. */
41
- var getCalmPanelHairline = function (theme) { var _a, _b; return (_b = (_a = getDeclaredPanelSurface(theme)) === null || _a === void 0 ? void 0 : _a.border) !== null && _b !== void 0 ? _b : (0, colors_1.changeLightness)((0, colors_1.getMainBackgroundColor)(theme), 0.08); };
42
- exports.getCalmPanelHairline = getCalmPanelHairline;
43
- /**
44
- * What a calm form writes in place of an empty required value. Editable: what
45
- * to do about it. Read-only: only what is the case, because the reader cannot
46
- * add anything.
47
- */
48
- exports.CALM_REQUIRED_LABEL = 'Required · add a value';
49
- exports.CALM_REQUIRED_READ_LABEL = 'Required · not set';
50
- //# sourceMappingURL=formAppearance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formAppearance.js","sourceRoot":"","sources":["../../../../src/components/form/engine/formAppearance.ts"],"names":[],"mappings":";;;AACA,uEAIsD;AACtD,+BAAkD;AAkBlD;;;;;;;;GAQG;AACU,QAAA,qBAAqB,GAAG,IAAA,qBAAa,EAAoC,SAAS,CAAC,CAAC;AAEpF,QAAA,sBAAsB,GAAG,6BAAqB,CAAC,QAAQ,CAAC;AAErE,mEAAmE;AAC5D,IAAM,iBAAiB,GAAG,sBAC/B,OAAA,MAAA,IAAA,kBAAU,EAAC,6BAAqB,CAAC,mCAAI,MAAM,CAAA,EAAA,CAAC;AADjC,QAAA,iBAAiB,qBACgB;AAE9C,0DAA0D;AACnD,IAAM,aAAa,GAAG,cAAe,OAAA,IAAA,yBAAiB,GAAE,KAAK,MAAM,EAA9B,CAA8B,CAAC;AAA9D,QAAA,aAAa,iBAAiD;AAE3E,8EAA8E;AAC9E,IAAM,uBAAuB,GAAG,UAC9B,KAAmB;IAEnB,IAAM,MAAM,GAAG,KAGd,CAAC;IACF,6EAA6E;IAC7E,6EAA6E;IAC7E,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK;QACd,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;GAKG;AACI,IAAM,mBAAmB,GAAG,UAAC,KAAmB,gBACrD,OAAA,MAAA,MAAA,uBAAuB,CAAC,KAAK,CAAC,0CAAE,IAAI,mCAAI,IAAA,uBAAc,EAAC,IAAA,+BAAsB,EAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA,EAAA,CAAC;AADjF,QAAA,mBAAmB,uBAC8D;AAE9F,0EAA0E;AACnE,IAAM,oBAAoB,GAAG,UAAC,KAAmB,gBACtD,OAAA,MAAA,MAAA,uBAAuB,CAAC,KAAK,CAAC,0CAAE,MAAM,mCAAI,IAAA,wBAAe,EAAC,IAAA,+BAAsB,EAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA,EAAA,CAAC;AADpF,QAAA,oBAAoB,wBACgE;AAEjG;;;;GAIG;AACU,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,wBAAwB,GAAG,oBAAoB,CAAC"}
@@ -1,21 +0,0 @@
1
- /// <reference types="react" />
2
- /**
3
- * The heading over a small group of choices (the checkboxes a field with three
4
- * or fewer allowed values renders) — the field's own name, or "Select one:"
5
- * when it has none.
6
- *
7
- * One component so both choice editors head their groups the same way, in
8
- * either appearance: an upper-case micro label by default; in the calm look the
9
- * words as written, at the small text size, because nothing in a calm form is
10
- * forced into capitals.
11
- */
12
- export declare const ChoiceGroupHeading: import("react").MemoExoticComponent<({ children }: {
13
- children: React.ReactNode;
14
- }) => import("react/jsx-runtime").JSX.Element>;
15
- /**
16
- * The intent a picked choice in those groups takes. Blue by default; none in
17
- * the calm look, where blue says only "a filter is on" and the checked mark
18
- * already says which choice is picked.
19
- */
20
- export declare const useSelectedChoiceIntent: () => ((selected: boolean) => 'info' | undefined);
21
- //# sourceMappingURL=ChoiceGroupHeading.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChoiceGroupHeading.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/ChoiceGroupHeading.tsx"],"names":[],"mappings":";AAIA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,qDAAuB;IAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;CAAE,6CAYjF,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAIpF,CAAC"}